From 21a174cda26e487699b23a560d638aec9a4af0f9 Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Wed, 5 Feb 2025 18:51:55 +0800 Subject: [PATCH 1/3] pre-commit: PR125828 --- 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 c5409e09ef4..5a256528666 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/125828 export COMPTIME_MODE=0 # Please rebase manually From 85fd9714eda3367965c811481be9f179ed3ac025 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:08:38 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/abcRec3.ll | 72 +-- bench/abc/optimized/bmcFx.ll | 132 +++-- bench/abc/optimized/wlcAbc.ll | 112 ++--- bench/abc/optimized/wlnWlc.ll | 156 +++--- bench/arrow/optimized/UriParse.ll | 16 +- bench/boost/optimized/args_cmd.ll | 34 +- bench/bullet3/optimized/btSoftBodyHelpers.ll | 140 +++--- bench/cmake/optimized/cmHexFileConverter.ll | 313 ++++++------ bench/cvc5/optimized/bags_utils.ll | 73 ++- .../optimized/introspection_sharpen.ll | 473 +++++++++--------- bench/eastl/optimized/EAMemory.ll | 217 ++++---- bench/graphviz/optimized/excontext.ll | 274 +++++----- bench/graphviz/optimized/partition.ll | 199 ++++---- bench/hermes/optimized/hbc-attribute.ll | 170 +++---- bench/icu/optimized/msgfmt.ll | 4 +- bench/icu/optimized/ubidi_props.ll | 46 +- bench/libevent/optimized/http.ll | 36 +- bench/linux/optimized/indirect.ll | 306 ++++++----- bench/llvm/optimized/SemaConcept.ll | 239 +++++---- bench/llvm/optimized/SemaTemplate.ll | 373 +++++++------- bench/node/optimized/libnode.Protocol.ll | 133 +++-- bench/opencv/optimized/convexhull.ll | 410 ++++++++------- bench/opencv/optimized/qrcode_encoder.ll | 147 +++--- bench/openjdk/optimized/mlib_c_ImageCopy.ll | 193 ++++--- bench/openjdk/optimized/sharedRuntimeTrig.ll | 184 ++++--- bench/openssl/optimized/libssl-lib-s3_enc.ll | 317 ++++++------ bench/openusd/optimized/openexr-c.ll | 152 +++--- bench/protobuf/optimized/padding_optimizer.ll | 339 ++++++------- bench/qemu/optimized/block_qed-table.ll | 63 ++- bench/qemu/optimized/hw_riscv_numa.ll | 24 +- bench/qemu/optimized/qemu-io-cmds.ll | 45 +- bench/qemu/optimized/sdhci-cmd.ll | 11 +- bench/quantlib/optimized/date.ll | 200 ++++---- bench/raylib/optimized/rcore.ll | 393 ++++++++------- bench/raylib/optimized/rtext.ll | 428 ++++++++-------- .../optimized/RecastMeshDetail.ll | 326 ++++++------ bench/ruby/optimized/transcode.ll | 450 +++++++++-------- bench/sqlite/optimized/sqlite3.ll | 136 +++-- bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll | 43 +- bench/wireshark/optimized/packet-ieee80211.ll | 24 +- bench/wireshark/optimized/packet-sctp.ll | 130 +++-- bench/wireshark/optimized/packet-ssh.ll | 123 +++-- bench/wireshark/optimized/packet-tls-utils.ll | 136 +++-- bench/wolfssl/optimized/chacha.ll | 80 ++- 44 files changed, 3836 insertions(+), 4036 deletions(-) diff --git a/bench/abc/optimized/abcRec3.ll b/bench/abc/optimized/abcRec3.ll index 178fa224991..64be210bfce 100644 --- a/bench/abc/optimized/abcRec3.ll +++ b/bench/abc/optimized/abcRec3.ll @@ -2711,13 +2711,13 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 %5 = load ptr, ptr %4, align 8, !tbaa !78 %6 = icmp eq ptr %5, null - br i1 %6, label %54, label %7 + br i1 %6, label %56, label %7 7: ; preds = %1 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 %9 = load i32, ptr %8, align 8, !tbaa !111 %.not = icmp eq i32 %9, 0 - br i1 %.not, label %10, label %54 + br i1 %.not, label %10, label %56 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -2744,16 +2744,14 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ %.val32 = load ptr, ptr %20, align 8, !tbaa !42 %21 = getelementptr i8, ptr %17, i64 8 %.val34 = load ptr, ptr %21, align 8, !tbaa !48 - %22 = add nsw i32 %.val30, -1 + %22 = zext nneg i32 %.val30 to i64 + %.pre43 = load i32, ptr %.val32, align 4, !tbaa !43 %23 = add nsw i32 %.val30, -2 - %umin = tail call i32 @llvm.umin.i32(i32 %22, i32 %23) - %24 = add nuw nsw i32 %umin, 1 - %wide.trip.count = zext nneg i32 %24 to i64 - %.pre44 = load i32, ptr %.val32, align 4, !tbaa !43 + %24 = zext i32 %23 to i64 br label %25 25: ; preds = %.lr.ph, %25 - %26 = phi i32 [ %.pre44, %.lr.ph ], [ %28, %25 ] + %26 = phi i32 [ %.pre43, %.lr.ph ], [ %28, %25 ] %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %25 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %27 = getelementptr inbounds nuw i32, ptr %.val32, i64 %indvars.iv.next @@ -2771,49 +2769,51 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ %38 = load i32, ptr %37, align 4, !tbaa !43 %39 = add nsw i32 %36, %38 store i32 %39, ptr %37, align 4, !tbaa !43 - %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond, label %.critedge.preheader.preheader, label %25, !llvm.loop !112 + %40 = icmp samesign uge i64 %indvars.iv.next, %22 + %41 = icmp eq i64 %indvars.iv, %24 + %or.cond = select i1 %40, i1 true, i1 %41 + br i1 %or.cond, label %.critedge.preheader.preheader, label %25, !llvm.loop !112 .critedge.preheader.preheader: ; preds = %25, %15 br label %.critedge.preheader .critedge.preheader: ; preds = %.critedge.preheader.preheader, %.critedge %indvars.iv40 = phi i64 [ %indvars.iv.next41, %.critedge ], [ 0, %.critedge.preheader.preheader ] - %40 = getelementptr inbounds nuw [17 x i32], ptr %2, i64 0, i64 %indvars.iv40 - %41 = load i32, ptr %40, align 4, !tbaa !43 - %.not29 = icmp eq i32 %41, 0 - br i1 %.not29, label %.critedge, label %42 - -42: ; preds = %.critedge.preheader - %43 = getelementptr inbounds nuw [17 x i32], ptr %3, i64 0, i64 %indvars.iv40 - %44 = load i32, ptr %43, align 4, !tbaa !43 - %45 = sitofp i32 %44 to double - %46 = sitofp i32 %41 to double - %47 = fdiv double %45, %46 - %48 = trunc nuw nsw i64 %indvars.iv40 to i32 - %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %48, i32 noundef %41, i32 noundef %44, double noundef %47) + %42 = getelementptr inbounds nuw [17 x i32], ptr %2, i64 0, i64 %indvars.iv40 + %43 = load i32, ptr %42, align 4, !tbaa !43 + %.not29 = icmp eq i32 %43, 0 + br i1 %.not29, label %.critedge, label %44 + +44: ; preds = %.critedge.preheader + %45 = getelementptr inbounds nuw [17 x i32], ptr %3, i64 0, i64 %indvars.iv40 + %46 = load i32, ptr %45, align 4, !tbaa !43 + %47 = sitofp i32 %46 to double + %48 = sitofp i32 %43 to double + %49 = fdiv double %47, %48 + %50 = trunc nuw nsw i64 %indvars.iv40 to i32 + %51 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %50, i32 noundef %43, i32 noundef %46, double noundef %49) br label %.critedge -.critedge: ; preds = %.critedge.preheader, %42 +.critedge: ; preds = %.critedge.preheader, %44 %indvars.iv.next41 = add nuw nsw i64 %indvars.iv40, 1 - %exitcond43.not = icmp eq i64 %indvars.iv.next41, 17 - br i1 %exitcond43.not, label %50, label %.critedge.preheader, !llvm.loop !113 + %exitcond.not = icmp eq i64 %indvars.iv.next41, 17 + br i1 %exitcond.not, label %52, label %.critedge.preheader, !llvm.loop !113 -50: ; preds = %.critedge - %51 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %52 = load ptr, ptr %51, align 8, !tbaa !48 - %.not.i = icmp eq ptr %52, null - br i1 %.not.i, label %Vec_StrFree.exit, label %53 +52: ; preds = %.critedge + %53 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %54 = load ptr, ptr %53, align 8, !tbaa !48 + %.not.i = icmp eq ptr %54, null + br i1 %.not.i, label %Vec_StrFree.exit, label %55 -53: ; preds = %50 - tail call void @free(ptr noundef nonnull %52) #26 +55: ; preds = %52 + tail call void @free(ptr noundef nonnull %54) #26 br label %Vec_StrFree.exit -Vec_StrFree.exit: ; preds = %50, %53 +Vec_StrFree.exit: ; preds = %52, %55 tail call void @free(ptr noundef nonnull %17) #26 - br label %54 + br label %56 -54: ; preds = %7, %1, %Vec_StrFree.exit +56: ; preds = %7, %1, %Vec_StrFree.exit call void @llvm.lifetime.end.p0(i64 68, ptr nonnull %3) #26 call void @llvm.lifetime.end.p0(i64 68, ptr nonnull %2) #26 ret void diff --git a/bench/abc/optimized/bmcFx.ll b/bench/abc/optimized/bmcFx.ll index abec619b893..5060f509fd8 100644 --- a/bench/abc/optimized/bmcFx.ll +++ b/bench/abc/optimized/bmcFx.ll @@ -1008,93 +1008,92 @@ Vec_IntPush.exit.i: ; preds = %Vec_IntPush.exit.si br i1 %or.cond41.i, label %._crit_edge45.i, label %.lr.ph44.preheader.i .lr.ph44.preheader.i: ; preds = %._crit_edge.i - %217 = add nsw i32 %.val37.i, -1 - %218 = add i32 %2, -1 - %umin.i = tail call i32 @llvm.umin.i32(i32 %217, i32 %218) - %219 = add nuw nsw i32 %umin.i, 1 - %wide.trip.count.i = zext nneg i32 %219 to i64 - %220 = load ptr, ptr %16, align 8, !tbaa !32 + %217 = zext i32 %2 to i64 + %218 = zext nneg i32 %.val37.i to i64 + %219 = load ptr, ptr %16, align 8, !tbaa !32 br label %.lr.ph44.i -.lr.ph44.i: ; preds = %229, %.lr.ph44.preheader.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph44.preheader.i ], [ %indvars.iv.next.i, %229 ] - %221 = getelementptr inbounds nuw i32, ptr %214, i64 %indvars.iv.i - %222 = load i32, ptr %221, align 4, !tbaa !11 - %223 = sext i32 %222 to i64 - %224 = getelementptr inbounds %struct.Tab_Obj_t_, ptr %220, i64 %223, i32 2 - %225 = load i64, ptr %224, align 4 - %226 = trunc i64 %225 to i32 - %227 = and i32 %226, 131071 - %228 = icmp eq i32 %227, 1 - br i1 %228, label %._crit_edge45.i, label %229 - -229: ; preds = %.lr.ph44.i - %230 = lshr i32 %226, 17 - %231 = lshr i64 %225, 32 - %232 = trunc nuw i64 %231 to i32 - %233 = and i32 %232, 32767 - %234 = lshr i64 %225, 47 - %235 = trunc nuw nsw i64 %234 to i32 - %236 = and i32 %235, 32767 - %237 = lshr i64 %225, 62 - %238 = getelementptr inbounds nuw [5 x ptr], ptr @__const.Tab_TabFindBest.pNames, i64 0, i64 %237 - %239 = load ptr, ptr %238, align 8, !tbaa !40 - %240 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef %230, i32 noundef %233, i32 noundef %236, ptr noundef %239, i32 noundef %227) - %241 = load i64, ptr %224, align 4 - %242 = lshr i64 %241, 62 - %243 = trunc nuw nsw i64 %242 to i32 - %244 = trunc i64 %241 to i32 - %245 = lshr i32 %244, 17 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %243, i32 noundef %245) - %246 = load i64, ptr %224, align 4 - %247 = lshr i64 %246, 32 - %248 = trunc nuw i64 %247 to i32 - %249 = and i32 %248, 32767 - %250 = lshr i64 %246, 47 - %251 = trunc nuw nsw i64 %250 to i32 - %252 = and i32 %251, 32767 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %249, i32 noundef %252) +.lr.ph44.i: ; preds = %228, %.lr.ph44.preheader.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph44.preheader.i ], [ %indvars.iv.next.i, %228 ] + %220 = getelementptr inbounds nuw i32, ptr %214, i64 %indvars.iv.i + %221 = load i32, ptr %220, align 4, !tbaa !11 + %222 = sext i32 %221 to i64 + %223 = getelementptr inbounds %struct.Tab_Obj_t_, ptr %219, i64 %222, i32 2 + %224 = load i64, ptr %223, align 4 + %225 = trunc i64 %224 to i32 + %226 = and i32 %225, 131071 + %227 = icmp eq i32 %226, 1 + br i1 %227, label %._crit_edge45.i, label %228 + +228: ; preds = %.lr.ph44.i + %229 = lshr i32 %225, 17 + %230 = lshr i64 %224, 32 + %231 = trunc nuw i64 %230 to i32 + %232 = and i32 %231, 32767 + %233 = lshr i64 %224, 47 + %234 = trunc nuw nsw i64 %233 to i32 + %235 = and i32 %234, 32767 + %236 = lshr i64 %224, 62 + %237 = getelementptr inbounds nuw [5 x ptr], ptr @__const.Tab_TabFindBest.pNames, i64 0, i64 %236 + %238 = load ptr, ptr %237, align 8, !tbaa !40 + %239 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef %229, i32 noundef %232, i32 noundef %235, ptr noundef %238, i32 noundef %226) + %240 = load i64, ptr %223, align 4 + %241 = lshr i64 %240, 62 + %242 = trunc nuw nsw i64 %241 to i32 + %243 = trunc i64 %240 to i32 + %244 = lshr i32 %243, 17 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %242, i32 noundef %244) + %245 = load i64, ptr %223, align 4 + %246 = lshr i64 %245, 32 + %247 = trunc nuw i64 %246 to i32 + %248 = and i32 %247, 32767 + %249 = lshr i64 %245, 47 + %250 = trunc nuw nsw i64 %249 to i32 + %251 = and i32 %250, 32767 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %248, i32 noundef %251) %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.i, label %._crit_edge45.i, label %.lr.ph44.i, !llvm.loop !41 + %252 = icmp samesign uge i64 %indvars.iv.next.i, %218 + %253 = icmp eq i64 %indvars.iv.next.i, %217 + %or.cond.i = or i1 %252, %253 + br i1 %or.cond.i, label %._crit_edge45.i, label %.lr.ph44.i, !llvm.loop !41 -._crit_edge45.i: ; preds = %229, %.lr.ph44.i, %._crit_edge.i +._crit_edge45.i: ; preds = %228, %.lr.ph44.i, %._crit_edge.i %.not.i39.i = icmp eq ptr %.val38.i, null - br i1 %.not.i39.i, label %Vec_IntFree.exit.i, label %253 + br i1 %.not.i39.i, label %Vec_IntFree.exit.i, label %254 -253: ; preds = %._crit_edge45.i +254: ; preds = %._crit_edge45.i tail call void @free(ptr noundef nonnull %.val38.i) #18 br label %Vec_IntFree.exit.i -Vec_IntFree.exit.i: ; preds = %253, %._crit_edge45.i +Vec_IntFree.exit.i: ; preds = %254, %._crit_edge45.i tail call void @free(ptr noundef nonnull %172) #18 %.not.i = icmp eq ptr %214, null - br i1 %.not.i, label %Tab_TabFindBest.exit, label %254 + br i1 %.not.i, label %Tab_TabFindBest.exit, label %255 -254: ; preds = %Vec_IntFree.exit.i +255: ; preds = %Vec_IntFree.exit.i tail call void @free(ptr noundef nonnull %214) #18 br label %Tab_TabFindBest.exit -Tab_TabFindBest.exit: ; preds = %Vec_IntFree.exit.i, %254 - %255 = load ptr, ptr %12, align 8, !tbaa !19 - %.not.i73 = icmp eq ptr %255, null - br i1 %.not.i73, label %Vec_StrFree.exit, label %256 +Tab_TabFindBest.exit: ; preds = %Vec_IntFree.exit.i, %255 + %256 = load ptr, ptr %12, align 8, !tbaa !19 + %.not.i73 = icmp eq ptr %256, null + br i1 %.not.i73, label %Vec_StrFree.exit, label %257 -256: ; preds = %Tab_TabFindBest.exit - tail call void @free(ptr noundef nonnull %255) #18 +257: ; preds = %Tab_TabFindBest.exit + tail call void @free(ptr noundef nonnull %256) #18 br label %Vec_StrFree.exit -Vec_StrFree.exit: ; preds = %Tab_TabFindBest.exit, %256 +Vec_StrFree.exit: ; preds = %Tab_TabFindBest.exit, %257 tail call void @free(ptr noundef nonnull %6) #18 - %257 = load ptr, ptr %16, align 8, !tbaa !32 - %.not.i74 = icmp eq ptr %257, null - br i1 %.not.i74, label %Tab_TabFree.exit, label %258 + %258 = load ptr, ptr %16, align 8, !tbaa !32 + %.not.i74 = icmp eq ptr %258, null + br i1 %.not.i74, label %Tab_TabFree.exit, label %259 -258: ; preds = %Vec_StrFree.exit - tail call void @free(ptr noundef nonnull %257) #18 +259: ; preds = %Vec_StrFree.exit + tail call void @free(ptr noundef nonnull %258) #18 br label %Tab_TabFree.exit -Tab_TabFree.exit: ; preds = %Vec_StrFree.exit, %258 +Tab_TabFree.exit: ; preds = %Vec_StrFree.exit, %259 tail call void @free(ptr noundef nonnull %14) #18 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #18 ret ptr %168 @@ -3035,9 +3034,6 @@ declare i32 @llvm.smax.i32(i32, i32) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #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 speculatable willreturn memory(none) declare i32 @llvm.scmp.i32.i32(i32, i32) #15 diff --git a/bench/abc/optimized/wlcAbc.ll b/bench/abc/optimized/wlcAbc.ll index 403bf693850..76687380eda 100644 --- a/bench/abc/optimized/wlcAbc.ll +++ b/bench/abc/optimized/wlcAbc.ll @@ -59,14 +59,12 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %.val67 = load i32, ptr %17, align 8, !tbaa !21 %18 = getelementptr i8, ptr %16, i64 12 %.val68 = load i32, ptr %18, align 4, !tbaa !23 - %19 = sub i32 %.val67, %.val68 + %19 = sub nsw i32 %.val67, %.val68 %20 = tail call i32 @llvm.abs.i32(i32 %19, i1 true) %. = tail call i32 @llvm.smin.i32(i32 %.val67, i32 %.val68) %21 = ptrtoint ptr %16 to i64 %22 = zext nneg i32 %.05680 to i64 - %smax = tail call i32 @llvm.abs.i32(i32 %19, i1 false) - %23 = add nuw i32 %smax, 1 - %wide.trip.count = zext i32 %23 to i64 + %23 = zext nneg i32 %20 to i64 br label %24 24: ; preds = %12, %33 @@ -96,8 +94,8 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %41 = add i32 %., %40 %42 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.2, ptr noundef %39, i32 noundef %41, i32 noundef %34) #11 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %43, label %24, !llvm.loop !26 + %.not77.not = icmp samesign ult i64 %indvars.iv, %23 + br i1 %.not77.not, label %24, label %43, !llvm.loop !26 43: ; preds = %33 %44 = add nuw nsw i32 %20, 1 @@ -113,10 +111,10 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { br i1 %50, label %12, label %.critedge.preheader, !llvm.loop !28 51: ; preds = %.lr.ph85, %.critedge - %indvars.iv92 = phi i64 [ 0, %.lr.ph85 ], [ %indvars.iv.next93, %.critedge ] + %indvars.iv90 = phi i64 [ 0, %.lr.ph85 ], [ %indvars.iv.next91, %.critedge ] %.val74 = load ptr, ptr %10, align 8, !tbaa !10 %.val75 = load ptr, ptr %11, align 8, !tbaa !11 - %52 = getelementptr inbounds nuw i32, ptr %.val74, i64 %indvars.iv92 + %52 = getelementptr inbounds nuw i32, ptr %.val74, i64 %indvars.iv90 %53 = load i32, ptr %52, align 4, !tbaa !20 %54 = sext i32 %53 to i64 %55 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val75, i64 %54 @@ -127,7 +125,7 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %.64 = tail call i32 @llvm.smin.i32(i32 %.val69, i32 %.val70) %58 = ptrtoint ptr %55 to i64 %59 = sub i32 %.val70, %.val69 - %smax90 = tail call i32 @llvm.abs.i32(i32 %59, i1 false) + %smax = tail call i32 @llvm.abs.i32(i32 %59, i1 false) br label %60 60: ; preds = %51, %60 @@ -141,14 +139,14 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %66 = tail call ptr @Wlc_ObjName(ptr noundef nonnull %0, i32 noundef %65) #11 %67 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.3, ptr noundef %66, i32 noundef %61) #11 %68 = add nuw i32 %.15582, 1 - %exitcond91.not = icmp eq i32 %.15582, %smax90 - br i1 %exitcond91.not, label %.critedge, label %60, !llvm.loop !29 + %exitcond.not = icmp eq i32 %.15582, %smax + br i1 %exitcond.not, label %.critedge, label %60, !llvm.loop !29 .critedge: ; preds = %60 - %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 + %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1 %.val73 = load i32, ptr %8, align 4, !tbaa !3 %69 = sext i32 %.val73 to i64 - %70 = icmp slt i64 %indvars.iv.next93, %69 + %70 = icmp slt i64 %indvars.iv.next91, %69 br i1 %70, label %51, label %.critedge2, !llvm.loop !30 .critedge2: ; preds = %.critedge, %.critedge.preheader @@ -187,12 +185,12 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( br label %9 9: ; preds = %.lr.ph, %47 - %.val66 = phi i32 [ %.val51, %.lr.ph ], [ %.val, %47 ] - %indvars.iv62 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next63, %47 ] + %.val63 = phi i32 [ %.val51, %.lr.ph ], [ %.val, %47 ] + %indvars.iv59 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next60, %47 ] %.053 = phi i32 [ 0, %.lr.ph ], [ %.1, %47 ] %.val42 = load ptr, ptr %6, align 8, !tbaa !10 %.val43 = load ptr, ptr %7, align 8, !tbaa !11 - %10 = getelementptr inbounds nuw i32, ptr %.val42, i64 %indvars.iv62 + %10 = getelementptr inbounds nuw i32, ptr %.val42, i64 %indvars.iv59 %11 = load i32, ptr %10, align 4, !tbaa !20 %12 = sext i32 %11 to i64 %13 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val43, i64 %12 @@ -206,14 +204,12 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( %.val44 = load i32, ptr %17, align 8, !tbaa !21 %18 = getelementptr i8, ptr %13, i64 12 %.val45 = load i32, ptr %18, align 4, !tbaa !23 - %19 = sub i32 %.val44, %.val45 + %19 = sub nsw i32 %.val44, %.val45 %20 = tail call i32 @llvm.abs.i32(i32 %19, i1 true) %21 = add nuw nsw i32 %20, 1 %.val40 = load ptr, ptr %8, align 8, !tbaa !10 %22 = zext nneg i32 %.053 to i64 - %smax = tail call i32 @llvm.abs.i32(i32 %19, i1 false) - %23 = add nuw i32 %smax, 1 - %wide.trip.count = zext i32 %23 to i64 + %23 = zext nneg i32 %20 to i64 %invariant.gep = getelementptr inbounds nuw i32, ptr %.val40, i64 %22 br label %24 @@ -226,8 +222,8 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( 26: ; preds = %24 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %27, label %24, !llvm.loop !31 + %.not47.not = icmp samesign ult i64 %indvars.iv, %23 + br i1 %.not47.not, label %24, label %27, !llvm.loop !31 27: ; preds = %24, %26 %.034.lcssa.in = phi i64 [ %indvars.iv, %24 ], [ %indvars.iv.next, %26 ] @@ -262,8 +258,8 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( 44: ; preds = %36, %41 %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 - %exitcond61.not = icmp eq i64 %indvars.iv.next56, %wide.trip.count - br i1 %exitcond61.not, label %45, label %36, !llvm.loop !32 + %.not48.not = icmp samesign ult i64 %indvars.iv55, %23 + br i1 %.not48.not, label %36, label %45, !llvm.loop !32 45: ; preds = %44 %putchar = tail call i32 @putchar(i32 10) @@ -272,11 +268,11 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( br label %47 47: ; preds = %9, %45, %29 - %.val = phi i32 [ %.val66, %9 ], [ %.val66, %29 ], [ %.val.pre, %45 ] + %.val = phi i32 [ %.val63, %9 ], [ %.val63, %29 ], [ %.val.pre, %45 ] %.1 = phi i32 [ %.053, %9 ], [ %30, %29 ], [ %46, %45 ] - %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 + %indvars.iv.next60 = add nuw nsw i64 %indvars.iv59, 1 %48 = sext i32 %.val to i64 - %49 = icmp slt i64 %indvars.iv.next63, %48 + %49 = icmp slt i64 %indvars.iv.next60, %48 br i1 %49, label %9, label %.critedge, !llvm.loop !33 .critedge: ; preds = %47, %3 @@ -332,33 +328,33 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br i1 %.not97, label %.lr.ph125.split.us, label %.lr.ph125.split .lr.ph125.split.us: ; preds = %.lr.ph125, %35 - %.val.us158 = phi i32 [ %.val.us, %35 ], [ %.val123, %.lr.ph125 ] - %indvars.iv148 = phi i64 [ %indvars.iv.next149, %35 ], [ 0, %.lr.ph125 ] + %.val.us155 = phi i32 [ %.val.us, %35 ], [ %.val123, %.lr.ph125 ] + %indvars.iv145 = phi i64 [ %indvars.iv.next146, %35 ], [ 0, %.lr.ph125 ] %.val102.us = load ptr, ptr %24, align 8, !tbaa !10 - %27 = getelementptr inbounds nuw i32, ptr %.val102.us, i64 %indvars.iv148 + %27 = getelementptr inbounds nuw i32, ptr %.val102.us, i64 %indvars.iv145 %28 = load i32, ptr %27, align 4, !tbaa !20 %29 = icmp eq i32 %28, 0 br i1 %29, label %35, label %30 30: ; preds = %.lr.ph125.split.us %31 = call ptr @Abc_NtkCreateObj(ptr noundef %7, i32 noundef 2) #11 - %32 = trunc nuw nsw i64 %indvars.iv148 to i32 + %32 = trunc nuw nsw i64 %indvars.iv145 to i32 %33 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %4, ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %32) #11 %34 = call ptr @Abc_ObjAssignName(ptr noundef %31, ptr noundef nonnull %4, ptr noundef null) #11 %.val.us.pre = load i32, ptr %22, align 4, !tbaa !3 br label %35 35: ; preds = %30, %.lr.ph125.split.us - %.val.us = phi i32 [ %.val.us.pre, %30 ], [ %.val.us158, %.lr.ph125.split.us ] - %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 + %.val.us = phi i32 [ %.val.us.pre, %30 ], [ %.val.us155, %.lr.ph125.split.us ] + %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 %36 = sext i32 %.val.us to i64 - %37 = icmp slt i64 %indvars.iv.next149, %36 + %37 = icmp slt i64 %indvars.iv.next146, %36 br i1 %37, label %.lr.ph125.split.us, label %.critedge, !llvm.loop !49 .lr.ph125.split: ; preds = %.lr.ph125, %52 - %indvars.iv144 = phi i64 [ %indvars.iv.next145, %52 ], [ 0, %.lr.ph125 ] + %indvars.iv141 = phi i64 [ %indvars.iv.next142, %52 ], [ 0, %.lr.ph125 ] %.val102 = load ptr, ptr %24, align 8, !tbaa !10 - %38 = getelementptr inbounds nuw i32, ptr %.val102, i64 %indvars.iv144 + %38 = getelementptr inbounds nuw i32, ptr %.val102, i64 %indvars.iv141 %39 = load i32, ptr %38, align 4, !tbaa !20 %40 = icmp eq i32 %39, 0 br i1 %40, label %52, label %41 @@ -367,17 +363,17 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % %42 = call ptr @Abc_NtkCreateObj(ptr noundef %7, i32 noundef 2) #11 %.val110 = load i32, ptr %25, align 4, !tbaa !50 %43 = sext i32 %.val110 to i64 - %44 = icmp slt i64 %indvars.iv144, %43 + %44 = icmp slt i64 %indvars.iv141, %43 br i1 %44, label %45, label %48 45: ; preds = %41 %.val111 = load ptr, ptr %26, align 8, !tbaa !52 - %46 = getelementptr inbounds nuw ptr, ptr %.val111, i64 %indvars.iv144 + %46 = getelementptr inbounds nuw ptr, ptr %.val111, i64 %indvars.iv141 %47 = load ptr, ptr %46, align 8, !tbaa !53 br label %.sink.split 48: ; preds = %41 - %49 = trunc nuw nsw i64 %indvars.iv144 to i32 + %49 = trunc nuw nsw i64 %indvars.iv141 to i32 %50 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %4, ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %49) #11 br label %.sink.split @@ -387,10 +383,10 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br label %52 52: ; preds = %.sink.split, %.lr.ph125.split - %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 1 + %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1 %.val = load i32, ptr %22, align 4, !tbaa !3 %53 = sext i32 %.val to i64 - %54 = icmp slt i64 %indvars.iv.next145, %53 + %54 = icmp slt i64 %indvars.iv.next142, %53 br i1 %54, label %.lr.ph125.split, label %.critedge, !llvm.loop !49 .critedge: ; preds = %52, %35, %17 @@ -407,12 +403,12 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br label %124 58: ; preds = %.lr.ph, %99 - %.val99156 = phi i32 [ %.val99120, %.lr.ph ], [ %.val99, %99 ] - %indvars.iv140 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next141, %99 ] + %.val99153 = phi i32 [ %.val99120, %.lr.ph ], [ %.val99, %99 ] + %indvars.iv137 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next138, %99 ] %.085121 = phi i32 [ 0, %.lr.ph ], [ %.186, %99 ] %.val103 = load ptr, ptr %14, align 8, !tbaa !10 %.val104 = load ptr, ptr %15, align 8, !tbaa !11 - %59 = getelementptr inbounds nuw i32, ptr %.val103, i64 %indvars.iv140 + %59 = getelementptr inbounds nuw i32, ptr %.val103, i64 %indvars.iv137 %60 = load i32, ptr %59, align 4, !tbaa !20 %61 = sext i32 %60 to i64 %62 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val104, i64 %61 @@ -426,14 +422,12 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % %.val105 = load i32, ptr %66, align 8, !tbaa !21 %67 = getelementptr i8, ptr %62, i64 12 %.val106 = load i32, ptr %67, align 4, !tbaa !23 - %68 = sub i32 %.val105, %.val106 + %68 = sub nsw i32 %.val105, %.val106 %69 = call i32 @llvm.abs.i32(i32 %68, i1 true) %70 = add nuw nsw i32 %69, 1 %.val101 = load ptr, ptr %16, align 8, !tbaa !10 %71 = zext nneg i32 %.085121 to i64 - %smax = call i32 @llvm.abs.i32(i32 %68, i1 false) - %72 = add nuw i32 %smax, 1 - %wide.trip.count = zext i32 %72 to i64 + %72 = zext nneg i32 %69 to i64 %invariant.gep = getelementptr inbounds nuw i32, ptr %.val101, i64 %71 br label %73 @@ -446,8 +440,8 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % 75: ; preds = %73 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %76, label %73, !llvm.loop !55 + %.not116.not = icmp samesign ult i64 %indvars.iv, %72 + br i1 %.not116.not, label %73, label %76, !llvm.loop !55 76: ; preds = %73, %75 %.087.lcssa.in = phi i64 [ %indvars.iv, %73 ], [ %indvars.iv.next, %75 ] @@ -487,8 +481,8 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % 96: ; preds = %81, %86 %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 - %exitcond139.not = icmp eq i64 %indvars.iv.next134, %wide.trip.count - br i1 %exitcond139.not, label %97, label %81, !llvm.loop !56 + %.not117.not = icmp samesign ult i64 %indvars.iv133, %72 + br i1 %.not117.not, label %81, label %97, !llvm.loop !56 97: ; preds = %96 %98 = add nuw nsw i32 %70, %.085121 @@ -496,11 +490,11 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br label %99 99: ; preds = %58, %97, %79 - %.val99 = phi i32 [ %.val99156, %58 ], [ %.val99156, %79 ], [ %.val99.pre, %97 ] + %.val99 = phi i32 [ %.val99153, %58 ], [ %.val99153, %79 ], [ %.val99.pre, %97 ] %.186 = phi i32 [ %.085121, %58 ], [ %80, %79 ], [ %98, %97 ] - %indvars.iv.next141 = add nuw nsw i64 %indvars.iv140, 1 + %indvars.iv.next138 = add nuw nsw i64 %indvars.iv137, 1 %100 = sext i32 %.val99 to i64 - %101 = icmp slt i64 %indvars.iv.next141, %100 + %101 = icmp slt i64 %indvars.iv.next138, %100 br i1 %101, label %58, label %.critedge2, !llvm.loop !57 .critedge2: ; preds = %99, %8, %.critedge @@ -513,19 +507,19 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br i1 %105, label %.lr.ph130, label %.critedge4 .lr.ph130: ; preds = %.critedge2, %.lr.ph130 - %indvars.iv152 = phi i64 [ %indvars.iv.next153, %.lr.ph130 ], [ 0, %.critedge2 ] + %indvars.iv149 = phi i64 [ %indvars.iv.next150, %.lr.ph130 ], [ 0, %.critedge2 ] %.val113129 = phi ptr [ %.val113, %.lr.ph130 ], [ %.val113126, %.critedge2 ] %106 = getelementptr i8, ptr %.val113129, i64 8 %.val114.val = load ptr, ptr %106, align 8, !tbaa !52 - %107 = getelementptr inbounds nuw ptr, ptr %.val114.val, i64 %indvars.iv152 + %107 = getelementptr inbounds nuw ptr, ptr %.val114.val, i64 %indvars.iv149 %108 = load ptr, ptr %107, align 8, !tbaa !53 call void @Abc_ObjAddFanin(ptr noundef %102, ptr noundef %108) #11 - %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1 + %indvars.iv.next150 = add nuw nsw i64 %indvars.iv149, 1 %.val113 = load ptr, ptr %103, align 8, !tbaa !54 %109 = getelementptr i8, ptr %.val113, i64 4 %.val113.val = load i32, ptr %109, align 4, !tbaa !50 %110 = sext i32 %.val113.val to i64 - %111 = icmp slt i64 %indvars.iv.next153, %110 + %111 = icmp slt i64 %indvars.iv.next150, %110 br i1 %111, label %.lr.ph130, label %.critedge4, !llvm.loop !58 .critedge4: ; preds = %.lr.ph130, %.critedge2 diff --git a/bench/abc/optimized/wlnWlc.ll b/bench/abc/optimized/wlnWlc.ll index 44f75dea424..ea4bb651ed2 100644 --- a/bench/abc/optimized/wlnWlc.ll +++ b/bench/abc/optimized/wlnWlc.ll @@ -358,13 +358,13 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. br label %252 129: ; preds = %.lr.ph393, %.critedge - %.val263470 = phi i32 [ %.val263390, %.lr.ph393 ], [ %.val263, %.critedge ] - %130 = phi ptr [ %17, %.lr.ph393 ], [ %.pre.i468, %.critedge ] - %indvars.iv441 = phi i64 [ 0, %.lr.ph393 ], [ %indvars.iv.next442, %.critedge ] + %.val263468 = phi i32 [ %.val263390, %.lr.ph393 ], [ %.val263, %.critedge ] + %130 = phi ptr [ %17, %.lr.ph393 ], [ %.pre.i466, %.critedge ] + %indvars.iv439 = phi i64 [ 0, %.lr.ph393 ], [ %indvars.iv.next440, %.critedge ] %.0220391 = phi i32 [ 0, %.lr.ph393 ], [ %.1221, %.critedge ] %.val265 = load ptr, ptr %89, align 8, !tbaa !29 %.val266 = load ptr, ptr %90, align 8, !tbaa !21 - %131 = getelementptr inbounds nuw i32, ptr %.val265, i64 %indvars.iv441 + %131 = getelementptr inbounds nuw i32, ptr %.val265, i64 %indvars.iv439 %132 = load i32, ptr %131, align 4, !tbaa !3 %133 = sext i32 %132 to i64 %134 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val266, i64 %133 @@ -378,13 +378,11 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. %.val269 = load i32, ptr %138, align 8, !tbaa !38 %139 = getelementptr i8, ptr %134, i64 12 %.val270 = load i32, ptr %139, align 4, !tbaa !40 - %140 = sub i32 %.val269, %.val270 + %140 = sub nsw i32 %.val269, %.val270 %141 = call i32 @llvm.abs.i32(i32 %140, i1 true) %142 = load ptr, ptr %91, align 8, !tbaa !42 %143 = sext i32 %.0220391 to i64 - %smax = call i32 @llvm.abs.i32(i32 %140, i1 false) - %144 = add nuw i32 %smax, 1 - %wide.trip.count = zext i32 %144 to i64 + %144 = zext nneg i32 %141 to i64 %invariant.gep = getelementptr i8, ptr %142, i64 %143 br label %145 @@ -397,15 +395,15 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. 148: ; preds = %145 %indvars.iv.next423 = add nuw nsw i64 %indvars.iv422, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next423, %wide.trip.count - br i1 %exitcond.not, label %149, label %145, !llvm.loop !43 + %.not361.not = icmp samesign ult i64 %indvars.iv422, %144 + br i1 %.not361.not, label %145, label %149, !llvm.loop !43 149: ; preds = %145, %148 %.0219.lcssa.in = phi i64 [ %indvars.iv422, %145 ], [ %indvars.iv.next423, %148 ] %.0219.lcssa = trunc i64 %.0219.lcssa.in to i32 %150 = add nuw nsw i32 %141, 1 %.val250 = load i32, ptr %7, align 4, !tbaa !27 - %151 = trunc nuw nsw i64 %indvars.iv441 to i32 + %151 = trunc nuw nsw i64 %indvars.iv439 to i32 %152 = sub nsw i32 %151, %.val250 %153 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %152, i32 noundef %150) %.val273 = load i32, ptr %138, align 8, !tbaa !38 @@ -415,28 +413,28 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. %156 = add nuw nsw i32 %155, 1 %157 = icmp eq i32 %156, %.0219.lcssa %158 = load ptr, ptr %91, align 8, !tbaa !42 - %invariant.gep497 = getelementptr i8, ptr %158, i64 %143 + %invariant.gep495 = getelementptr i8, ptr %158, i64 %143 br i1 %157, label %.preheader367, label %.preheader368 .preheader368: ; preds = %149 - %wide.trip.count429 = zext nneg i32 %156 to i64 + %wide.trip.count = zext nneg i32 %156 to i64 br label %175 .preheader367: ; preds = %149 - %wide.trip.count435 = and i64 %.0219.lcssa.in, 4294967295 + %wide.trip.count433 = and i64 %.0219.lcssa.in, 4294967295 br label %159 159: ; preds = %.preheader367, %159 - %indvars.iv431 = phi i64 [ 0, %.preheader367 ], [ %indvars.iv.next432, %159 ] + %indvars.iv429 = phi i64 [ 0, %.preheader367 ], [ %indvars.iv.next430, %159 ] %.0217386 = phi i32 [ 0, %.preheader367 ], [ %163, %159 ] - %gep498 = getelementptr i8, ptr %invariant.gep497, i64 %indvars.iv431 - %160 = load i8, ptr %gep498, align 1, !tbaa !7 + %gep496 = getelementptr i8, ptr %invariant.gep495, i64 %indvars.iv429 + %160 = load i8, ptr %gep496, align 1, !tbaa !7 %161 = icmp eq i8 %160, 48 %162 = zext i1 %161 to i32 %163 = add nuw nsw i32 %.0217386, %162 - %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1 - %exitcond436.not = icmp eq i64 %indvars.iv.next432, %wide.trip.count435 - br i1 %exitcond436.not, label %164, label %159, !llvm.loop !44 + %indvars.iv.next430 = add nuw nsw i64 %indvars.iv429, 1 + %exitcond434.not = icmp eq i64 %indvars.iv.next430, %wide.trip.count433 + br i1 %exitcond434.not, label %164, label %159, !llvm.loop !44 164: ; preds = %159 %165 = icmp eq i32 %163, %.0219.lcssa @@ -447,33 +445,33 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. br label %.loopexit .preheader: ; preds = %164, %.preheader - %indvars.iv437 = phi i64 [ %indvars.iv.next438, %.preheader ], [ 0, %164 ] + %indvars.iv435 = phi i64 [ %indvars.iv.next436, %.preheader ], [ 0, %164 ] %167 = load ptr, ptr %91, align 8, !tbaa !42 - %168 = getelementptr i8, ptr %167, i64 %indvars.iv437 + %168 = getelementptr i8, ptr %167, i64 %indvars.iv435 %169 = getelementptr i8, ptr %168, i64 %143 %170 = load i8, ptr %169, align 1, !tbaa !7 %171 = sext i8 %170 to i32 %putchar235 = call i32 @putchar(i32 %171) - %indvars.iv.next438 = add nuw nsw i64 %indvars.iv437, 1 + %indvars.iv.next436 = add nuw nsw i64 %indvars.iv435, 1 %.val279 = load i32, ptr %138, align 8, !tbaa !38 %.val280 = load i32, ptr %139, align 4, !tbaa !40 %172 = sub nsw i32 %.val279, %.val280 %173 = call i32 @llvm.abs.i32(i32 %172, i1 true) %174 = zext nneg i32 %173 to i64 - %.not364.not = icmp samesign ult i64 %indvars.iv437, %174 + %.not364.not = icmp samesign ult i64 %indvars.iv435, %174 br i1 %.not364.not, label %.preheader, label %.loopexit, !llvm.loop !45 175: ; preds = %.preheader368, %175 %indvars.iv425 = phi i64 [ 0, %.preheader368 ], [ %indvars.iv.next426, %175 ] %.0384 = phi i32 [ 0, %.preheader368 ], [ %179, %175 ] - %gep496 = getelementptr i8, ptr %invariant.gep497, i64 %indvars.iv425 - %176 = load i8, ptr %gep496, align 1, !tbaa !7 + %gep494 = getelementptr i8, ptr %invariant.gep495, i64 %indvars.iv425 + %176 = load i8, ptr %gep494, align 1, !tbaa !7 %177 = icmp eq i8 %176, 120 %178 = zext i1 %177 to i32 %179 = add nuw nsw i32 %.0384, %178 %indvars.iv.next426 = add nuw nsw i64 %indvars.iv425, 1 - %exitcond430.not = icmp eq i64 %indvars.iv.next426, %wide.trip.count429 - br i1 %exitcond430.not, label %180, label %175, !llvm.loop !46 + %exitcond.not = icmp eq i64 %indvars.iv.next426, %wide.trip.count + br i1 %exitcond.not, label %180, label %175, !llvm.loop !46 180: ; preds = %175 %putchar = call i32 @putchar(i32 120) @@ -525,8 +523,8 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. %209 = and i64 %.0219.lcssa.in, 4294967295 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %202, i64 %209, i1 false), !tbaa !7 %210 = add i64 %.0219.lcssa.in, %207 - %sext484 = shl i64 %210, 32 - %211 = ashr exact i64 %sext484, 32 + %sext482 = shl i64 %210, 32 + %211 = ashr exact i64 %sext482, 32 %212 = getelementptr inbounds i8, ptr %205, i64 %211 store i8 0, ptr %212, align 1, !tbaa !7 %213 = load ptr, ptr %29, align 8, !tbaa !10 @@ -580,18 +578,18 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. br label %Vec_IntPush.exit.sink.split Vec_IntPush.exit.sink.split: ; preds = %234, %236, %226, %228 - %.sink500 = phi ptr [ %227, %226 ], [ %229, %228 ], [ %235, %234 ], [ %237, %236 ] + %.sink498 = phi ptr [ %227, %226 ], [ %229, %228 ], [ %235, %234 ], [ %237, %236 ] %.sink = phi i32 [ 16, %226 ], [ 16, %228 ], [ %231, %234 ], [ %231, %236 ] - store ptr %.sink500, ptr %18, align 8, !tbaa !29 + store ptr %.sink498, ptr %18, align 8, !tbaa !29 store i32 %.sink, ptr %10, align 8, !tbaa !28 br label %Vec_IntPush.exit Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.sink.split, %215 - %.pre.i469 = phi ptr [ %130, %215 ], [ %.sink500, %Vec_IntPush.exit.sink.split ] + %.pre.i467 = phi ptr [ %130, %215 ], [ %.sink498, %Vec_IntPush.exit.sink.split ] %238 = add nsw i32 %.val241, 1 store i32 %238, ptr %12, align 4, !tbaa !27 %239 = sext i32 %.val241 to i64 - %240 = getelementptr inbounds i32, ptr %.pre.i469, i64 %239 + %240 = getelementptr inbounds i32, ptr %.pre.i467, i64 %239 store i32 %195, ptr %240, align 4, !tbaa !3 %.val293 = load i32, ptr %138, align 8, !tbaa !38 %.val294 = load i32, ptr %139, align 4, !tbaa !40 @@ -603,12 +601,12 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %.critedge .critedge: ; preds = %129, %Vec_IntPush.exit - %.val263 = phi i32 [ %.val263470, %129 ], [ %.val263.pre, %Vec_IntPush.exit ] - %.pre.i468 = phi ptr [ %130, %129 ], [ %.pre.i469, %Vec_IntPush.exit ] + %.val263 = phi i32 [ %.val263468, %129 ], [ %.val263.pre, %Vec_IntPush.exit ] + %.pre.i466 = phi ptr [ %130, %129 ], [ %.pre.i467, %Vec_IntPush.exit ] %.1221 = phi i32 [ %.0220391, %129 ], [ %244, %Vec_IntPush.exit ] - %indvars.iv.next442 = add nuw nsw i64 %indvars.iv441, 1 + %indvars.iv.next440 = add nuw nsw i64 %indvars.iv439, 1 %245 = sext i32 %.val263 to i64 - %246 = icmp slt i64 %indvars.iv.next442, %245 + %246 = icmp slt i64 %indvars.iv.next440, %245 br i1 %246, label %129, label %.critedge2.preheader, !llvm.loop !47 .critedge4.preheader: ; preds = %.critedge2, %.critedge.preheader, %.critedge2.preheader @@ -624,11 +622,11 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %291 252: ; preds = %.lr.ph396, %.critedge2 - %.val264475 = phi i32 [ %.val263, %.lr.ph396 ], [ %.val264, %.critedge2 ] - %.val268 = phi ptr [ %.val268.pre, %.lr.ph396 ], [ %.val268473, %.critedge2 ] - %indvars.iv445 = phi i64 [ 0, %.lr.ph396 ], [ %indvars.iv.next446, %.critedge2 ] + %.val264473 = phi i32 [ %.val263, %.lr.ph396 ], [ %.val264, %.critedge2 ] + %.val268 = phi ptr [ %.val268.pre, %.lr.ph396 ], [ %.val268471, %.critedge2 ] + %indvars.iv443 = phi i64 [ 0, %.lr.ph396 ], [ %indvars.iv.next444, %.critedge2 ] %.val267 = load ptr, ptr %125, align 8, !tbaa !29 - %253 = getelementptr inbounds nuw i32, ptr %.val267, i64 %indvars.iv445 + %253 = getelementptr inbounds nuw i32, ptr %.val267, i64 %indvars.iv443 %254 = load i32, ptr %253, align 4, !tbaa !3 %255 = sext i32 %254 to i64 %256 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val268, i64 %255 @@ -672,11 +670,11 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %.critedge2 .critedge2: ; preds = %252, %260 - %.val264 = phi i32 [ %.val264475, %252 ], [ %.val264.pre, %260 ] - %.val268473 = phi ptr [ %.val268, %252 ], [ %.val239, %260 ] - %indvars.iv.next446 = add nuw nsw i64 %indvars.iv445, 1 + %.val264 = phi i32 [ %.val264473, %252 ], [ %.val264.pre, %260 ] + %.val268471 = phi ptr [ %.val268, %252 ], [ %.val239, %260 ] + %indvars.iv.next444 = add nuw nsw i64 %indvars.iv443, 1 %284 = sext i32 %.val264 to i64 - %285 = icmp slt i64 %indvars.iv.next446, %284 + %285 = icmp slt i64 %indvars.iv.next444, %284 br i1 %285, label %252, label %.critedge4.preheader, !llvm.loop !48 .critedge6.preheader: ; preds = %.critedge4, %.critedge4.preheader @@ -692,10 +690,10 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %.critedge6 291: ; preds = %.lr.ph404, %.critedge4 - %.val297477 = phi i32 [ %.val297402, %.lr.ph404 ], [ %.val297, %.critedge4 ] - %indvars.iv453 = phi i64 [ 1, %.lr.ph404 ], [ %indvars.iv.next454, %.critedge4 ] + %.val297475 = phi i32 [ %.val297402, %.lr.ph404 ], [ %.val297, %.critedge4 ] + %indvars.iv451 = phi i64 [ 1, %.lr.ph404 ], [ %indvars.iv.next452, %.critedge4 ] %.val253 = load ptr, ptr %248, align 8, !tbaa !21 - %292 = getelementptr inbounds nuw %struct.Wlc_Obj_t_, ptr %.val253, i64 %indvars.iv453 + %292 = getelementptr inbounds nuw %struct.Wlc_Obj_t_, ptr %.val253, i64 %indvars.iv451 %.val298 = load i16, ptr %292, align 8 %293 = and i16 %.val298, 61 %narrow.i.not = icmp eq i16 %293, 1 @@ -729,7 +727,7 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %312 312: ; preds = %.lr.ph400, %Vec_IntPush.exit323 - %indvars.iv449 = phi i64 [ 0, %.lr.ph400 ], [ %indvars.iv.next450, %Vec_IntPush.exit323 ] + %indvars.iv447 = phi i64 [ 0, %.lr.ph400 ], [ %indvars.iv.next448, %Vec_IntPush.exit323 ] %.val299399 = phi i32 [ %.val299397, %.lr.ph400 ], [ %.val299, %Vec_IntPush.exit323 ] %313 = icmp ugt i32 %.val299399, 2 br i1 %313, label %Wlc_ObjHasArray.exit.thread.i.i, label %314 @@ -748,7 +746,7 @@ Wlc_ObjHasArray.exit.thread.i.i: ; preds = %314, %314, %312 Wlc_ObjFaninId.exit: ; preds = %314, %Wlc_ObjHasArray.exit.thread.i.i %318 = phi ptr [ %317, %Wlc_ObjHasArray.exit.thread.i.i ], [ %311, %314 ] - %319 = getelementptr inbounds nuw i32, ptr %318, i64 %indvars.iv449 + %319 = getelementptr inbounds nuw i32, ptr %318, i64 %indvars.iv447 %320 = load i32, ptr %319, align 4, !tbaa !3 %.val300 = load ptr, ptr %249, align 8, !tbaa !29 %321 = sext i32 %320 to i64 @@ -816,10 +814,10 @@ Vec_IntPush.exit323: ; preds = %.Vec_IntGrow.exit10 %350 = sext i32 %348 to i64 %351 = getelementptr inbounds i32, ptr %347, i64 %350 store i32 %323, ptr %351, align 4, !tbaa !3 - %indvars.iv.next450 = add nuw nsw i64 %indvars.iv449, 1 + %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1 %.val299 = load i32, ptr %309, align 4, !tbaa !49 %352 = sext i32 %.val299 to i64 - %353 = icmp slt i64 %indvars.iv.next450, %352 + %353 = icmp slt i64 %indvars.iv.next448, %352 br i1 %353, label %312, label %.critedge8, !llvm.loop !50 .critedge8: ; preds = %Vec_IntPush.exit323, %297 @@ -1369,16 +1367,16 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge8 %614 = getelementptr inbounds i32, ptr %.val259, i64 %613 store i32 %612, ptr %614, align 4, !tbaa !3 %.val262 = load ptr, ptr %249, align 8, !tbaa !29 - %615 = getelementptr inbounds nuw i32, ptr %.val262, i64 %indvars.iv453 + %615 = getelementptr inbounds nuw i32, ptr %.val262, i64 %indvars.iv451 store i32 %308, ptr %615, align 4, !tbaa !3 %.val297.pre = load i32, ptr %20, align 8, !tbaa !31 br label %.critedge4 .critedge4: ; preds = %291, %294, %604 - %.val297 = phi i32 [ %.val297477, %291 ], [ %.val297477, %294 ], [ %.val297.pre, %604 ] - %indvars.iv.next454 = add nuw nsw i64 %indvars.iv453, 1 + %.val297 = phi i32 [ %.val297475, %291 ], [ %.val297475, %294 ], [ %.val297.pre, %604 ] + %indvars.iv.next452 = add nuw nsw i64 %indvars.iv451, 1 %616 = sext i32 %.val297 to i64 - %617 = icmp slt i64 %indvars.iv.next454, %616 + %617 = icmp slt i64 %indvars.iv.next452, %616 br i1 %617, label %291, label %.critedge6.preheader, !llvm.loop !63 .critedge10.preheader: ; preds = %.critedge6, %.critedge6.preheader @@ -1394,10 +1392,10 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge8 br label %645 .critedge6: ; preds = %.lr.ph407, %.critedge6 - %indvars.iv457 = phi i64 [ 0, %.lr.ph407 ], [ %indvars.iv.next458, %.critedge6 ] + %indvars.iv455 = phi i64 [ 0, %.lr.ph407 ], [ %indvars.iv.next456, %.critedge6 ] %.val307 = load ptr, ptr %288, align 8, !tbaa !29 %.val308 = load ptr, ptr %289, align 8, !tbaa !21 - %623 = getelementptr inbounds nuw i32, ptr %.val307, i64 %indvars.iv457 + %623 = getelementptr inbounds nuw i32, ptr %.val307, i64 %indvars.iv455 %624 = load i32, ptr %623, align 4, !tbaa !3 %625 = sext i32 %624 to i64 %626 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val308, i64 %625 @@ -1421,24 +1419,24 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge8 %641 = getelementptr inbounds i8, ptr %.val301, i64 %640 %642 = load i32, ptr %641, align 4, !tbaa !3 call void @Wln_ObjAddFanin(ptr noundef %24, i32 noundef %635, i32 noundef %642) #15 - %indvars.iv.next458 = add nuw nsw i64 %indvars.iv457, 1 + %indvars.iv.next456 = add nuw nsw i64 %indvars.iv455, 1 %.val303 = load i32, ptr %286, align 4, !tbaa !27 %643 = sext i32 %.val303 to i64 - %644 = icmp slt i64 %indvars.iv.next458, %643 + %644 = icmp slt i64 %indvars.iv.next456, %643 br i1 %644, label %.critedge6, label %.critedge10.preheader, !llvm.loop !64 645: ; preds = %.lr.ph411, %.critedge10 - %.val248481 = phi i32 [ %.val248409, %.lr.ph411 ], [ %.val248, %.critedge10 ] - %indvars.iv462 = phi i64 [ 0, %.lr.ph411 ], [ %indvars.iv.next463, %.critedge10 ] + %.val248479 = phi i32 [ %.val248409, %.lr.ph411 ], [ %.val248, %.critedge10 ] + %indvars.iv460 = phi i64 [ 0, %.lr.ph411 ], [ %indvars.iv.next461, %.critedge10 ] %.val309 = load ptr, ptr %619, align 8, !tbaa !29 %.val310 = load ptr, ptr %620, align 8, !tbaa !21 - %646 = getelementptr inbounds nuw i32, ptr %.val309, i64 %indvars.iv462 + %646 = getelementptr inbounds nuw i32, ptr %.val309, i64 %indvars.iv460 %647 = load i32, ptr %646, align 4, !tbaa !3 %648 = sext i32 %647 to i64 %649 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val310, i64 %648 %.val304 = load i32, ptr %286, align 4, !tbaa !27 %650 = sext i32 %.val304 to i64 - %651 = icmp slt i64 %indvars.iv462, %650 + %651 = icmp slt i64 %indvars.iv460, %650 br i1 %651, label %.critedge10, label %652 652: ; preds = %645 @@ -1520,11 +1518,11 @@ Vec_IntPush.exit349.sink.split: ; preds = %682 %688 = shl nuw nsw i32 %684, 1 %689 = zext nneg i32 %688 to i64 %690 = shl nuw nsw i64 %689, 2 - %.sink503 = select i1 %687, i64 64, i64 %690 - %.sink501 = select i1 %687, i32 16, i32 %688 - %691 = call ptr @realloc(ptr noundef nonnull %683, i64 noundef %.sink503) #17 + %.sink501 = select i1 %687, i64 64, i64 %690 + %.sink499 = select i1 %687, i32 16, i32 %688 + %691 = call ptr @realloc(ptr noundef nonnull %683, i64 noundef %.sink501) #17 store ptr %691, ptr %6, align 8, !tbaa !29 - store i32 %.sink501, ptr %3, align 8, !tbaa !28 + store i32 %.sink499, ptr %3, align 8, !tbaa !28 br label %Vec_IntPush.exit349 Vec_IntPush.exit349: ; preds = %Vec_IntPush.exit349.sink.split, %682 @@ -1536,12 +1534,12 @@ Vec_IntPush.exit349: ; preds = %Vec_IntPush.exit349 %696 = getelementptr inbounds i32, ptr %692, i64 %695 store i32 0, ptr %696, align 4, !tbaa !3 %697 = add nuw nsw i32 %.4226408, 1 - %exitcond461.not = icmp eq i32 %697, 6 - br i1 %exitcond461.not, label %698, label %682, !llvm.loop !65 + %exitcond459.not = icmp eq i32 %697, 6 + br i1 %exitcond459.not, label %698, label %682, !llvm.loop !65 698: ; preds = %Vec_IntPush.exit349 %.val305 = load i32, ptr %286, align 4, !tbaa !27 - %699 = trunc nuw nsw i64 %indvars.iv462 to i32 + %699 = trunc nuw nsw i64 %indvars.iv460 to i32 %700 = sub nsw i32 %699, %.val305 %.val251 = load ptr, ptr %18, align 8, !tbaa !29 %701 = sext i32 %700 to i64 @@ -1557,11 +1555,11 @@ Vec_IntPush.exit356.sink.split: ; preds = %698 %708 = shl nuw nsw i32 %704, 1 %709 = zext nneg i32 %708 to i64 %710 = shl nuw nsw i64 %709, 2 - %.sink506 = select i1 %707, i64 64, i64 %710 - %.sink504 = select i1 %707, i32 16, i32 %708 - %711 = call ptr @realloc(ptr noundef nonnull %692, i64 noundef %.sink506) #17 + %.sink504 = select i1 %707, i64 64, i64 %710 + %.sink502 = select i1 %707, i32 16, i32 %708 + %711 = call ptr @realloc(ptr noundef nonnull %692, i64 noundef %.sink504) #17 store ptr %711, ptr %6, align 8, !tbaa !29 - store i32 %.sink504, ptr %3, align 8, !tbaa !28 + store i32 %.sink502, ptr %3, align 8, !tbaa !28 br label %Vec_IntPush.exit356 Vec_IntPush.exit356: ; preds = %Vec_IntPush.exit356.sink.split, %698 @@ -1583,10 +1581,10 @@ Vec_IntPush.exit356: ; preds = %Vec_IntPush.exit356 br label %.critedge10 .critedge10: ; preds = %645, %Vec_IntPush.exit356 - %.val248 = phi i32 [ %.val248481, %645 ], [ %.val248.pre, %Vec_IntPush.exit356 ] - %indvars.iv.next463 = add nuw nsw i64 %indvars.iv462, 1 + %.val248 = phi i32 [ %.val248479, %645 ], [ %.val248.pre, %Vec_IntPush.exit356 ] + %indvars.iv.next461 = add nuw nsw i64 %indvars.iv460, 1 %722 = sext i32 %.val248 to i64 - %723 = icmp slt i64 %indvars.iv.next463, %722 + %723 = icmp slt i64 %indvars.iv.next461, %722 br i1 %723, label %645, label %.critedge12, !llvm.loop !66 .critedge12: ; preds = %.critedge10, %.critedge10.preheader diff --git a/bench/arrow/optimized/UriParse.ll b/bench/arrow/optimized/UriParse.ll index 25a8496fcfd..4081b08175e 100644 --- a/bench/arrow/optimized/UriParse.ll +++ b/bench/arrow/optimized/UriParse.ll @@ -5311,8 +5311,6 @@ if.end17: ; preds = %if.end12 br i1 %cmp.not16.i, label %if.end.preheader.i, label %uriParseIpFutLoopA.exit if.end.preheader.i: ; preds = %if.end17 - %afterLast20.i = ptrtoint ptr %afterLast to i64 - %scevgep.i = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %afterLast20.i %.pre.i = load i8, ptr %add.ptr21, align 1 br label %if.end.i46 @@ -5402,8 +5400,8 @@ if.end.i46: ; preds = %if.end.i46.backedge sw.bb.i47: ; preds = %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46 %add.ptr.i48 = getelementptr inbounds nuw i8, ptr %first.tr17.i, i64 1 - %exitcond.not.i49 = icmp eq ptr %first.tr17.i, %scevgep.i - br i1 %exitcond.not.i49, label %if.end26, label %if.end.i.i + %cmp.not.i.i = icmp ult ptr %add.ptr.i48, %afterLast + br i1 %cmp.not.i.i, label %if.end.i.i, label %if.end26 if.end.i.i: ; preds = %sw.bb.i47 %8 = load i8, ptr %add.ptr.i48, align 1 @@ -5513,11 +5511,11 @@ if.end26: ; preds = %if.end.i.i, %sw.bb. sw.default: ; preds = %if.end3 %12 = load ptr, ptr %state, align 8 - %call.i50 = tail call i32 @uriFreeUriMembersMmA(ptr noundef %12, ptr noundef %memory) - %errorPos1.i51 = getelementptr inbounds nuw i8, ptr %state, i64 16 - store ptr %add.ptr, ptr %errorPos1.i51, align 8 - %errorCode.i52 = getelementptr inbounds nuw i8, ptr %state, i64 8 - store i32 1, ptr %errorCode.i52, align 8 + %call.i49 = tail call i32 @uriFreeUriMembersMmA(ptr noundef %12, ptr noundef %memory) + %errorPos1.i50 = getelementptr inbounds nuw i8, ptr %state, i64 16 + store ptr %add.ptr, ptr %errorPos1.i50, align 8 + %errorCode.i51 = getelementptr inbounds nuw i8, ptr %state, i64 8 + store i32 1, ptr %errorCode.i51, align 8 br label %return return: ; preds = %uriParseIpFutLoopA.exit, %sw.default, %if.end26, %if.then16, %if.then11, %if.then2, %if.then diff --git a/bench/boost/optimized/args_cmd.ll b/bench/boost/optimized/args_cmd.ll index 4f38e375d2d..cd6d1e05c7e 100644 --- a/bench/boost/optimized/args_cmd.ll +++ b/bench/boost/optimized/args_cmd.ll @@ -147861,31 +147861,29 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIN9__gnu_cxx17__norm br i1 %.not2835.i.i.i, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i, label %.lr.ph.preheader.i.i.i .lr.ph.preheader.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIN9__gnu_cxx17__normal_iteratorIPKcS4_EEvEERS4_T_SC_.exit, %.critedge15.i.i.i - %indvars.iv.in = phi i64 [ %indvars.iv, %.critedge15.i.i.i ], [ %29, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIN9__gnu_cxx17__normal_iteratorIPKcS4_EEvEERS4_T_SC_.exit ] %.sroa.018.036.i.i.i = phi ptr [ %37, %.critedge15.i.i.i ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIN9__gnu_cxx17__normal_iteratorIPKcS4_EEvEERS4_T_SC_.exit ] - %indvars.iv = add i64 %indvars.iv.in, -1 - %.not = icmp eq i64 %indvars.iv, 0 - %31 = select i1 %.not, i64 1, i64 2 br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %35, %.lr.ph.preheader.i.i.i - %.01230.i.i.i.idx = phi i64 [ %.01230.i.i.i.add, %35 ], [ 0, %.lr.ph.preheader.i.i.i ] - %.sroa.0.029.i.i.i = phi ptr [ %36, %35 ], [ %.sroa.018.036.i.i.i, %.lr.ph.preheader.i.i.i ] +.lr.ph.i.i.i: ; preds = %34, %.lr.ph.preheader.i.i.i + %.01230.i.i.i.idx = phi i64 [ %.01230.i.i.i.add, %34 ], [ 0, %.lr.ph.preheader.i.i.i ] + %.sroa.0.029.i.i.i = phi ptr [ %35, %34 ], [ %.sroa.018.036.i.i.i, %.lr.ph.preheader.i.i.i ] %.01230.i.i.i.ptr.ptr = getelementptr inbounds nuw i8, ptr @.str.780, i64 %.01230.i.i.i.idx - %32 = load i8, ptr %.sroa.0.029.i.i.i, align 1, !tbaa !24 - %33 = load i8, ptr %.01230.i.i.i.ptr.ptr, align 1, !tbaa !24 - %34 = icmp eq i8 %32, %33 - br i1 %34, label %35, label %.critedge.i.i.i + %31 = load i8, ptr %.sroa.0.029.i.i.i, align 1, !tbaa !24 + %32 = load i8, ptr %.01230.i.i.i.ptr.ptr, align 1, !tbaa !24 + %33 = icmp eq i8 %31, %32 + br i1 %33, label %34, label %.critedge.i.i.i -35: ; preds = %.lr.ph.i.i.i - %36 = getelementptr inbounds nuw i8, ptr %.sroa.0.029.i.i.i, i64 1 +34: ; preds = %.lr.ph.i.i.i + %35 = getelementptr inbounds nuw i8, ptr %.sroa.0.029.i.i.i, i64 1 %.01230.i.i.i.add = add nuw nsw i64 %.01230.i.i.i.idx, 1 - %exitcond = icmp eq i64 %.01230.i.i.i.add, %31 - br i1 %exitcond, label %.critedge.i.i.i, label %.lr.ph.i.i.i, !llvm.loop !2555 + %36 = icmp eq ptr %35, %30 + %.not.i.i.i = icmp eq i64 %.01230.i.i.i.add, 2 + %or.cond.i.i.i = select i1 %36, i1 true, i1 %.not.i.i.i + br i1 %or.cond.i.i.i, label %.critedge.i.i.i, label %.lr.ph.i.i.i, !llvm.loop !2555 -.critedge.i.i.i: ; preds = %35, %.lr.ph.i.i.i - %.sroa.0.0.lcssa.ph.i.i.i = phi ptr [ %.sroa.0.029.i.i.i, %.lr.ph.i.i.i ], [ %36, %35 ] - %.012.lcssa.ph.i.i.i.idx = phi i64 [ %.01230.i.i.i.idx, %.lr.ph.i.i.i ], [ %31, %35 ] +.critedge.i.i.i: ; preds = %34, %.lr.ph.i.i.i + %.sroa.0.0.lcssa.ph.i.i.i = phi ptr [ %.sroa.0.029.i.i.i, %.lr.ph.i.i.i ], [ %35, %34 ] + %.012.lcssa.ph.i.i.i.idx = phi i64 [ %.01230.i.i.i.idx, %.lr.ph.i.i.i ], [ %.01230.i.i.i.add, %34 ] %.not13.i.i.i = icmp eq i64 %.012.lcssa.ph.i.i.i.idx, 2 br i1 %.not13.i.i.i, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i, label %.critedge15.i.i.i diff --git a/bench/bullet3/optimized/btSoftBodyHelpers.ll b/bench/bullet3/optimized/btSoftBodyHelpers.ll index ac7a1ec193a..0dfe39ffb11 100644 --- a/bench/bullet3/optimized/btSoftBodyHelpers.ll +++ b/bench/bullet3/optimized/btSoftBodyHelpers.ll @@ -5280,12 +5280,8 @@ for.body11.preheader: ; preds = %if.then.i.i.i60 store ptr %call.i.i.i.i83, ptr %m_data.i.i36, align 8 store i32 %maxidx.0.lcssa, ptr %m_capacity.i.i38, align 8 store i32 %maxidx.0.lcssa, ptr %m_size.i.i37, align 4 - %mul8 = mul i32 %maxidx.0.lcssa, 3 - %smax151 = tail call i32 @llvm.smax.i32(i32 %mul8, i32 3) - %2 = add nsw i32 %smax151, -1 - %3 = udiv i32 %2, 3 - %4 = add nuw nsw i32 %3, 1 - %wide.trip.count152 = zext nneg i32 %4 to i64 + %mul8 = mul nsw i32 %maxidx.0.lcssa, 3 + %2 = zext nneg i32 %mul8 to i64 br label %for.body11 for.body11: ; preds = %for.body11.preheader, %for.body11 @@ -5294,21 +5290,21 @@ for.body11: ; preds = %for.body11.preheade %arrayidx14 = getelementptr inbounds nuw float, ptr %vertices, i64 %indvars.iv144 %arrayidx16 = getelementptr inbounds nuw i8, ptr %arrayidx14, i64 4 %arrayidx19 = getelementptr inbounds nuw i8, ptr %arrayidx14, i64 8 - %5 = load float, ptr %arrayidx14, align 4 - %6 = load float, ptr %arrayidx16, align 4 - %7 = load float, ptr %arrayidx19, align 4 + %3 = load float, ptr %arrayidx14, align 4 + %4 = load float, ptr %arrayidx16, align 4 + %5 = load float, ptr %arrayidx19, align 4 %arrayidx.i = getelementptr inbounds nuw %class.btVector3, ptr %call.i.i.i.i83, i64 %indvars.iv146 - store float %5, ptr %arrayidx.i, align 4 + store float %3, ptr %arrayidx.i, align 4 %ref.tmp12.sroa.2.0.arrayidx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 4 - store float %6, ptr %ref.tmp12.sroa.2.0.arrayidx.i.sroa_idx, align 4 + store float %4, ptr %ref.tmp12.sroa.2.0.arrayidx.i.sroa_idx, align 4 %ref.tmp12.sroa.3.0.arrayidx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 - store float %7, ptr %ref.tmp12.sroa.3.0.arrayidx.i.sroa_idx, align 4 + store float %5, ptr %ref.tmp12.sroa.3.0.arrayidx.i.sroa_idx, align 4 %ref.tmp12.sroa.4.0.arrayidx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 12 store float 0.000000e+00, ptr %ref.tmp12.sroa.4.0.arrayidx.i.sroa_idx, align 4 %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 3 - %exitcond153.not = icmp eq i64 %indvars.iv.next147, %wide.trip.count152 - br i1 %exitcond153.not, label %for.end26, label %for.body11, !llvm.loop !45 + %cmp10 = icmp samesign ult i64 %indvars.iv.next145, %2 + br i1 %cmp10, label %for.body11, label %for.end26, !llvm.loop !45 lpad3.loopexit: ; preds = %if.then %lpad.loopexit = landingpad { ptr, i32 } @@ -5330,8 +5326,8 @@ for.end26: ; preds = %for.body11 to label %invoke.cont27 unwind label %lpad3.loopexit.split-lp.loopexit.split-lp invoke.cont27: ; preds = %for.end26 - %8 = load i32, ptr %m_size.i.i37, align 4 - invoke void @_ZN10btSoftBodyC1EP19btSoftBodyWorldInfoiPK9btVector3PKf(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, ptr noundef nonnull %worldInfo, i32 noundef %8, ptr noundef nonnull %call.i.i.i.i83, ptr noundef null) + %6 = load i32, ptr %m_size.i.i37, align 4 + invoke void @_ZN10btSoftBodyC1EP19btSoftBodyWorldInfoiPK9btVector3PKf(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, ptr noundef nonnull %worldInfo, i32 noundef %6, ptr noundef nonnull %call.i.i.i.i83, ptr noundef null) to label %for.cond36.preheader unwind label %lpad29 for.cond36.preheader: ; preds = %invoke.cont27 @@ -5344,76 +5340,76 @@ for.body38.lr.ph: ; preds = %for.cond36.preheade br label %for.body38 for.body38: ; preds = %for.body38.lr.ph, %for.inc88 - %.pre = phi ptr [ %.pre.pre, %for.body38.lr.ph ], [ %.pre161, %for.inc88 ] - %indvars.iv158 = phi i64 [ 0, %for.body38.lr.ph ], [ %indvars.iv.next159, %for.inc88 ] - %arrayidx40 = getelementptr inbounds nuw i32, ptr %triangles, i64 %indvars.iv158 - %9 = load i32, ptr %arrayidx40, align 4 - store i32 %9, ptr %idx, align 4 + %.pre = phi ptr [ %.pre.pre, %for.body38.lr.ph ], [ %.pre158, %for.inc88 ] + %indvars.iv155 = phi i64 [ 0, %for.body38.lr.ph ], [ %indvars.iv.next156, %for.inc88 ] + %arrayidx40 = getelementptr inbounds nuw i32, ptr %triangles, i64 %indvars.iv155 + %7 = load i32, ptr %arrayidx40, align 4 + store i32 %7, ptr %idx, align 4 %arrayidx43 = getelementptr inbounds nuw i8, ptr %arrayidx40, i64 4 - %10 = load i32, ptr %arrayidx43, align 4 - store i32 %10, ptr %arrayinit.element, align 4 + %8 = load i32, ptr %arrayidx43, align 4 + store i32 %8, ptr %arrayinit.element, align 4 %arrayidx47 = getelementptr inbounds nuw i8, ptr %arrayidx40, i64 8 - %11 = load i32, ptr %arrayidx47, align 4 - store i32 %11, ptr %arrayinit.element44, align 4 + %9 = load i32, ptr %arrayidx47, align 4 + store i32 %9, ptr %arrayinit.element44, align 4 br label %for.body51 for.body51: ; preds = %for.body38, %for.inc81 - %.pre162 = phi ptr [ %.pre, %for.body38 ], [ %.pre161, %for.inc81 ] - %12 = phi ptr [ %.pre, %for.body38 ], [ %20, %for.inc81 ] - %indvars.iv154 = phi i64 [ 0, %for.body38 ], [ %indvars.iv.next155, %for.inc81 ] - %j48.0139 = phi i64 [ 2, %for.body38 ], [ %indvars.iv154, %for.inc81 ] - %arrayidx53 = getelementptr inbounds nuw [3 x i32], ptr %idx, i64 0, i64 %indvars.iv154 - %13 = load i32, ptr %arrayidx53, align 4 - %mul54 = mul nsw i32 %13, %maxidx.0.lcssa + %.pre159 = phi ptr [ %.pre, %for.body38 ], [ %.pre158, %for.inc81 ] + %10 = phi ptr [ %.pre, %for.body38 ], [ %18, %for.inc81 ] + %indvars.iv151 = phi i64 [ 0, %for.body38 ], [ %indvars.iv.next152, %for.inc81 ] + %j48.0139 = phi i64 [ 2, %for.body38 ], [ %indvars.iv151, %for.inc81 ] + %arrayidx53 = getelementptr inbounds nuw [3 x i32], ptr %idx, i64 0, i64 %indvars.iv151 + %11 = load i32, ptr %arrayidx53, align 4 + %mul54 = mul nsw i32 %11, %maxidx.0.lcssa %idxprom55 = and i64 %j48.0139, 4294967295 %arrayidx56 = getelementptr inbounds nuw [3 x i32], ptr %idx, i64 0, i64 %idxprom55 - %14 = load i32, ptr %arrayidx56, align 4 - %add57 = add nsw i32 %mul54, %14 + %12 = load i32, ptr %arrayidx56, align 4 + %add57 = add nsw i32 %mul54, %12 %idxprom.i89 = sext i32 %add57 to i64 - %arrayidx.i90 = getelementptr inbounds i8, ptr %12, i64 %idxprom.i89 - %15 = load i8, ptr %arrayidx.i90, align 1 - %tobool = trunc i8 %15 to i1 + %arrayidx.i90 = getelementptr inbounds i8, ptr %10, i64 %idxprom.i89 + %13 = load i8, ptr %arrayidx.i90, align 1 + %tobool = trunc i8 %13 to i1 br i1 %tobool, label %for.inc81, label %if.then if.then: ; preds = %for.body51 store i8 1, ptr %arrayidx.i90, align 1 - %mul70 = mul nsw i32 %14, %maxidx.0.lcssa - %add73 = add nsw i32 %mul70, %13 - %16 = load ptr, ptr %m_data.i.i, align 8 + %mul70 = mul nsw i32 %12, %maxidx.0.lcssa + %add73 = add nsw i32 %mul70, %11 + %14 = load ptr, ptr %m_data.i.i, align 8 %idxprom.i95 = sext i32 %add73 to i64 - %arrayidx.i96 = getelementptr inbounds i8, ptr %16, i64 %idxprom.i95 + %arrayidx.i96 = getelementptr inbounds i8, ptr %14, i64 %idxprom.i95 store i8 1, ptr %arrayidx.i96, align 1 - invoke void @_ZN10btSoftBody10appendLinkEiiPNS_8MaterialEb(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %14, i32 noundef %13, ptr noundef null, i1 noundef zeroext false) + invoke void @_ZN10btSoftBody10appendLinkEiiPNS_8MaterialEb(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %12, i32 noundef %11, ptr noundef null, i1 noundef zeroext false) to label %for.inc81 unwind label %lpad3.loopexit lpad29: ; preds = %invoke.cont27 - %17 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %call.i85) to label %ehcleanup unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %lpad29 - %18 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } catch ptr null - %19 = extractvalue { ptr, i32 } %18, 0 - tail call void @__clang_call_terminate(ptr %19) #24 + %17 = extractvalue { ptr, i32 } %16, 0 + tail call void @__clang_call_terminate(ptr %17) #24 unreachable for.inc81: ; preds = %for.body51, %if.then - %.pre161 = phi ptr [ %.pre162, %for.body51 ], [ %16, %if.then ] - %20 = phi ptr [ %12, %for.body51 ], [ %16, %if.then ] - %indvars.iv.next155 = add nuw nsw i64 %indvars.iv154, 1 - %exitcond157.not = icmp eq i64 %indvars.iv.next155, 3 - br i1 %exitcond157.not, label %for.end83, label %for.body51, !llvm.loop !46 + %.pre158 = phi ptr [ %.pre159, %for.body51 ], [ %14, %if.then ] + %18 = phi ptr [ %10, %for.body51 ], [ %14, %if.then ] + %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 1 + %exitcond154.not = icmp eq i64 %indvars.iv.next152, 3 + br i1 %exitcond154.not, label %for.end83, label %for.body51, !llvm.loop !46 for.end83: ; preds = %for.inc81 - invoke void @_ZN10btSoftBody10appendFaceEiiiPNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %9, i32 noundef %10, i32 noundef %11, ptr noundef null) + invoke void @_ZN10btSoftBody10appendFaceEiiiPNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %7, i32 noundef %8, i32 noundef %9, ptr noundef null) to label %for.inc88 unwind label %lpad3.loopexit.split-lp.loopexit for.inc88: ; preds = %for.end83 - %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 3 - %21 = trunc nuw i64 %indvars.iv.next159 to i32 - %cmp37 = icmp sgt i32 %mul, %21 + %indvars.iv.next156 = add nuw nsw i64 %indvars.iv155, 3 + %19 = trunc nuw i64 %indvars.iv.next156 to i32 + %cmp37 = icmp sgt i32 %mul, %19 br i1 %cmp37, label %for.body38, label %for.end90, !llvm.loop !47 for.end90: ; preds = %for.inc88, %for.cond36.preheader @@ -5424,52 +5420,52 @@ if.then92: ; preds = %for.end90 to label %if.end94 unwind label %lpad3.loopexit.split-lp.loopexit.split-lp if.end94: ; preds = %if.then92, %for.end90 - %22 = load ptr, ptr %m_data.i.i36, align 8 - %tobool.not.i.i.i98 = icmp eq ptr %22, null + %20 = load ptr, ptr %m_data.i.i36, align 8 + %tobool.not.i.i.i98 = icmp eq ptr %20, null br i1 %tobool.not.i.i.i98, label %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit, label %if.then.i.i.i99 if.then.i.i.i99: ; preds = %if.end94 - %23 = load i8, ptr %m_ownsMemory.i.i35, align 8 - %tobool2.i.i.i101 = trunc i8 %23 to i1 + %21 = load i8, ptr %m_ownsMemory.i.i35, align 8 + %tobool2.i.i.i101 = trunc i8 %21 to i1 br i1 %tobool2.i.i.i101, label %if.then3.i.i.i103, label %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit if.then3.i.i.i103: ; preds = %if.then.i.i.i99 - invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %22) + invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %20) to label %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit unwind label %terminate.lpad.i104 terminate.lpad.i104: ; preds = %if.then3.i.i.i103 - %24 = landingpad { ptr, i32 } + %22 = landingpad { ptr, i32 } catch ptr null - %25 = extractvalue { ptr, i32 } %24, 0 - tail call void @__clang_call_terminate(ptr %25) #24 + %23 = extractvalue { ptr, i32 } %22, 0 + tail call void @__clang_call_terminate(ptr %23) #24 unreachable _ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit: ; preds = %if.end94, %if.then.i.i.i99, %if.then3.i.i.i103 - %26 = load ptr, ptr %m_data.i.i, align 8 - %tobool.not.i.i.i106 = icmp eq ptr %26, null + %24 = load ptr, ptr %m_data.i.i, align 8 + %tobool.not.i.i.i106 = icmp eq ptr %24, null br i1 %tobool.not.i.i.i106, label %_ZN20btAlignedObjectArrayIbED2Ev.exit, label %if.then.i.i.i107 if.then.i.i.i107: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit - %27 = load i8, ptr %m_ownsMemory.i.i, align 8 - %tobool2.i.i.i109 = trunc i8 %27 to i1 + %25 = load i8, ptr %m_ownsMemory.i.i, align 8 + %tobool2.i.i.i109 = trunc i8 %25 to i1 br i1 %tobool2.i.i.i109, label %if.then3.i.i.i113, label %_ZN20btAlignedObjectArrayIbED2Ev.exit if.then3.i.i.i113: ; preds = %if.then.i.i.i107 - invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %26) + invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %24) to label %_ZN20btAlignedObjectArrayIbED2Ev.exit unwind label %terminate.lpad.i114 terminate.lpad.i114: ; preds = %if.then3.i.i.i113 - %28 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %29 = extractvalue { ptr, i32 } %28, 0 - tail call void @__clang_call_terminate(ptr %29) #24 + %27 = extractvalue { ptr, i32 } %26, 0 + tail call void @__clang_call_terminate(ptr %27) #24 unreachable _ZN20btAlignedObjectArrayIbED2Ev.exit: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit, %if.then.i.i.i107, %if.then3.i.i.i113 ret ptr %call.i85 ehcleanup: ; preds = %lpad3.loopexit, %lpad3.loopexit.split-lp.loopexit.split-lp, %lpad3.loopexit.split-lp.loopexit, %lpad29 - %.pn = phi { ptr, i32 } [ %17, %lpad29 ], [ %lpad.loopexit, %lpad3.loopexit ], [ %lpad.loopexit130, %lpad3.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp131, %lpad3.loopexit.split-lp.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %15, %lpad29 ], [ %lpad.loopexit, %lpad3.loopexit ], [ %lpad.loopexit130, %lpad3.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp131, %lpad3.loopexit.split-lp.loopexit.split-lp ] call void @_ZN20btAlignedObjectArrayI9btVector3ED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %vtx) #23 call void @_ZN20btAlignedObjectArrayIbED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %chks) #23 resume { ptr, i32 } %.pn diff --git a/bench/cmake/optimized/cmHexFileConverter.ll b/bench/cmake/optimized/cmHexFileConverter.ll index 25d9928e46a..2085806f786 100644 --- a/bench/cmake/optimized/cmHexFileConverter.ll +++ b/bench/cmake/optimized/cmHexFileConverter.ll @@ -140,7 +140,7 @@ define dso_local noundef zeroext i1 @_ZN18cmHexFileConverter10TryConvertERKNSt7_ %9 = alloca [1024 x i8], align 16 %10 = tail call noundef i32 @_ZN18cmHexFileConverter17DetermineFileTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0) %11 = icmp eq i32 %10, 0 - br i1 %11, label %115, label %12 + br i1 %11, label %117, label %12 12: ; preds = %2 %13 = tail call noundef ptr @_ZN5cmsys11SystemTools5FopenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str) @@ -158,11 +158,11 @@ define dso_local noundef zeroext i1 @_ZN18cmHexFileConverter10TryConvertERKNSt7_ br label %20 20: ; preds = %18, %17 - br i1 %16, label %21, label %115 + br i1 %16, label %21, label %117 21: ; preds = %20 %22 = tail call i32 @fclose(ptr noundef nonnull %14) - br label %115 + br label %117 23: ; preds = %12 call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %9) #9 @@ -175,18 +175,18 @@ define dso_local noundef zeroext i1 @_ZN18cmHexFileConverter10TryConvertERKNSt7_ %30 = getelementptr inbounds nuw i8, ptr %6, i64 1 %switch = icmp eq i32 %10, 2 %31 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) - %.not.us62 = icmp eq ptr %31, null - br i1 %switch, label %.split.us, label %.split.us55 + %.not.us61 = icmp eq ptr %31, null + br i1 %switch, label %.split.us, label %.split.us54 .split.us: ; preds = %23 - br i1 %.not.us62, label %.split54.us, label %.lr.ph + br i1 %.not.us61, label %.split53.us, label %.lr.ph -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75: ; preds = %50, %50, %50, %50, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74: ; preds = %50, %50, %50, %50, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us %32 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) %.not.us = icmp eq ptr %32, null - br i1 %.not.us, label %.split54.us, label %.lr.ph, !llvm.loop !9 + br i1 %.not.us, label %.split53.us, label %.lr.ph, !llvm.loop !9 -.lr.ph: ; preds = %.split.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 +.lr.ph: ; preds = %.split.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 %33 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %9) #10 %34 = trunc i64 %33 to i32 %35 = add i64 %33, 4294967295 @@ -225,16 +225,16 @@ _ZL11ChompStrlenPKc.exit.i.us: ; preds = %46, %41 %or.cond21.i.us = and i1 %or.cond.i.us, %.not.i.us %49 = load i8, ptr %9, align 16 %.not20.i.us = icmp eq i8 %49, 83 - %or.cond47.us = select i1 %or.cond21.i.us, i1 %.not20.i.us, i1 false - br i1 %or.cond47.us, label %50, label %.split54.us + %or.cond46.us = select i1 %or.cond21.i.us, i1 %.not20.i.us, i1 false + br i1 %or.cond46.us, label %50, label %.split53.us 50: ; preds = %_ZL11ChompStrlenPKc.exit.i.us %51 = load i8, ptr %28, align 1, !tbaa !4 - switch i8 %51, label %.split54.us [ - i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 - i8 55, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 - i8 56, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 - i8 57, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 + switch i8 %51, label %.split53.us [ + i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 + i8 55, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 + i8 56, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 + i8 57, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 i8 49, label %54 i8 50, label %53 i8 51, label %52 @@ -257,180 +257,185 @@ _ZL11ChompStrlenPKc.exit.i.us: ; preds = %46, %41 .lr.ph.i.i.us: ; preds = %54 %57 = zext nneg i32 %.0.i.us to i64 - %58 = xor i32 %.0.i.us, -1 - %59 = add nsw i32 %55, %58 - %60 = lshr i32 %59, 1 - %61 = add nuw i32 %60, 1 - %wide.trip.count.i.i.us = zext i32 %61 to i64 - br label %62 - -62: ; preds = %68, %.lr.ph.i.i.us - %indvars.iv30.i.i.us = phi i64 [ 0, %.lr.ph.i.i.us ], [ %indvars.iv.next31.i.i.us, %68 ] - %indvars.iv.i.i.us = phi i64 [ %57, %.lr.ph.i.i.us ], [ %indvars.iv.next.i.i.us, %68 ] - %63 = getelementptr inbounds nuw i8, ptr %9, i64 %indvars.iv.i.i.us - %64 = load i8, ptr %63, align 2, !tbaa !4 - store i8 %64, ptr %6, align 1, !tbaa !4 - %65 = getelementptr inbounds nuw i8, ptr %63, i64 1 - %66 = load i8, ptr %65, align 1, !tbaa !4 - store i8 %66, ptr %30, align 1, !tbaa !4 + %58 = zext nneg i32 %55 to i64 + br label %59 + +59: ; preds = %65, %.lr.ph.i.i.us + %indvars.iv30.i.i.us = phi i64 [ 0, %.lr.ph.i.i.us ], [ %indvars.iv.next31.i.i.us, %65 ] + %indvars.iv.i.i.us = phi i64 [ %57, %.lr.ph.i.i.us ], [ %indvars.iv.next.i.i.us, %65 ] + %60 = getelementptr inbounds nuw i8, ptr %9, i64 %indvars.iv.i.i.us + %61 = load i8, ptr %60, align 2, !tbaa !4 + store i8 %61, ptr %6, align 1, !tbaa !4 + %62 = getelementptr inbounds nuw i8, ptr %60, i64 1 + %63 = load i8, ptr %62, align 1, !tbaa !4 + store i8 %63, ptr %30, align 1, !tbaa !4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #9 store i32 0, ptr %8, align 4, !tbaa !10 - %67 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.2, ptr noundef nonnull %8) #9 - %.not.i.i.us = icmp eq i32 %67, 1 - br i1 %.not.i.i.us, label %68, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78 + %64 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.2, ptr noundef nonnull %8) #9 + %.not.i.i.us = icmp eq i32 %64, 1 + br i1 %.not.i.i.us, label %65, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77 -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78: ; preds = %62 +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77: ; preds = %59 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6) #9 - br label %.split54.us + br label %.split53.us -68: ; preds = %62 - %69 = load i32, ptr %8, align 4, !tbaa !10 - %70 = trunc i32 %69 to i8 - %71 = getelementptr inbounds nuw [256 x i8], ptr %7, i64 0, i64 %indvars.iv30.i.i.us - store i8 %70, ptr %71, align 1, !tbaa !4 +65: ; preds = %59 + %66 = load i32, ptr %8, align 4, !tbaa !10 + %67 = trunc i32 %66 to i8 + %68 = getelementptr inbounds nuw [256 x i8], ptr %7, i64 0, i64 %indvars.iv30.i.i.us + store i8 %67, ptr %68, align 1, !tbaa !4 %indvars.iv.next31.i.i.us = add nuw nsw i64 %indvars.iv30.i.i.us, 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9 %indvars.iv.next.i.i.us = add nuw nsw i64 %indvars.iv.i.i.us, 2 - %exitcond.not.i.i.us = icmp eq i64 %indvars.iv.next31.i.i.us, %wide.trip.count.i.i.us - br i1 %exitcond.not.i.i.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us, label %62, !llvm.loop !12 + %69 = icmp samesign ult i64 %indvars.iv.next.i.i.us, %58 + br i1 %69, label %59, label %._crit_edge.loopexit.i.i.us, !llvm.loop !12 -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us: ; preds = %68, %54 - %.016.lcssa.i.i.us = phi i64 [ 0, %54 ], [ %wide.trip.count.i.i.us, %68 ] - %72 = call i64 @fwrite(ptr noundef nonnull %7, i64 noundef 1, i64 noundef %.016.lcssa.i.i.us, ptr noundef nonnull %14) - %73 = icmp eq i64 %72, %.016.lcssa.i.i.us +._crit_edge.loopexit.i.i.us: ; preds = %65 + %70 = and i64 %indvars.iv.next31.i.i.us, 4294967295 + br label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us + +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us: ; preds = %54, %._crit_edge.loopexit.i.i.us + %.016.lcssa.i.i.us = phi i64 [ 0, %54 ], [ %70, %._crit_edge.loopexit.i.i.us ] + %71 = call i64 @fwrite(ptr noundef nonnull %7, i64 noundef 1, i64 noundef %.016.lcssa.i.i.us, ptr noundef nonnull %14) + %72 = icmp eq i64 %71, %.016.lcssa.i.i.us call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6) #9 - br i1 %73, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75, label %.split54.us, !llvm.loop !9 - -.split.us55: ; preds = %23 - br i1 %.not.us62, label %.split54.us, label %.lr.ph65 - -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83: ; preds = %94, %94, %94, %94, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58 - %74 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) - %.not.us57 = icmp eq ptr %74, null - br i1 %.not.us57, label %.split54.us, label %.lr.ph65, !llvm.loop !9 - -.lr.ph65: ; preds = %.split.us55, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 - %75 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %9) #10 - %76 = trunc i64 %75 to i32 - %77 = add i64 %75, 4294967295 - %78 = and i64 %77, 4294967295 - %79 = getelementptr inbounds nuw i8, ptr %9, i64 %78 - %80 = load i8, ptr %79, align 1, !tbaa !4 - switch i8 %80, label %83 [ - i8 10, label %81 - i8 13, label %81 + br i1 %72, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74, label %.split53.us, !llvm.loop !9 + +.split.us54: ; preds = %23 + br i1 %.not.us61, label %.split53.us, label %.lr.ph64 + +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82: ; preds = %93, %93, %93, %93, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 + %73 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) + %.not.us56 = icmp eq ptr %73, null + br i1 %.not.us56, label %.split53.us, label %.lr.ph64, !llvm.loop !9 + +.lr.ph64: ; preds = %.split.us54, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 + %74 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %9) #10 + %75 = trunc i64 %74 to i32 + %76 = add i64 %74, 4294967295 + %77 = and i64 %76, 4294967295 + %78 = getelementptr inbounds nuw i8, ptr %9, i64 %77 + %79 = load i8, ptr %78, align 1, !tbaa !4 + switch i8 %79, label %82 [ + i8 10, label %80 + i8 13, label %80 ] -81: ; preds = %.lr.ph65, %.lr.ph65 - %82 = add i32 %76, -1 - br label %83 - -83: ; preds = %81, %.lr.ph65 - %.0.i.i27.us = phi i32 [ %82, %81 ], [ %76, %.lr.ph65 ] - %84 = add i32 %.0.i.i27.us, -1 - %85 = zext i32 %84 to i64 - %86 = getelementptr inbounds nuw i8, ptr %9, i64 %85 - %87 = load i8, ptr %86, align 1, !tbaa !4 - switch i8 %87, label %_ZL11ChompStrlenPKc.exit.i28.us [ - i8 10, label %88 - i8 13, label %88 +80: ; preds = %.lr.ph64, %.lr.ph64 + %81 = add i32 %75, -1 + br label %82 + +82: ; preds = %80, %.lr.ph64 + %.0.i.i27.us = phi i32 [ %81, %80 ], [ %75, %.lr.ph64 ] + %83 = add i32 %.0.i.i27.us, -1 + %84 = zext i32 %83 to i64 + %85 = getelementptr inbounds nuw i8, ptr %9, i64 %84 + %86 = load i8, ptr %85, align 1, !tbaa !4 + switch i8 %86, label %_ZL11ChompStrlenPKc.exit.i28.us [ + i8 10, label %87 + i8 13, label %87 ] -88: ; preds = %83, %83 +87: ; preds = %82, %82 br label %_ZL11ChompStrlenPKc.exit.i28.us -_ZL11ChompStrlenPKc.exit.i28.us: ; preds = %88, %83 - %.1.i.i29.us = phi i32 [ %84, %88 ], [ %.0.i.i27.us, %83 ] - %89 = add i32 %.1.i.i29.us, -11 - %or.cond.i30.us = icmp ult i32 %89, 513 - %90 = and i32 %.1.i.i29.us, 1 - %91 = icmp ne i32 %90, 0 - %or.cond21.i31.not52.us = and i1 %or.cond.i30.us, %91 - %92 = load i8, ptr %9, align 16 - %.not.i32.us = icmp eq i8 %92, 58 - %or.cond48.us = select i1 %or.cond21.i31.not52.us, i1 %.not.i32.us, i1 false - %93 = load i8, ptr %24, align 1 - %.not19.i.us = icmp eq i8 %93, 48 - %or.cond50.us = select i1 %or.cond48.us, i1 %.not19.i.us, i1 false - br i1 %or.cond50.us, label %94, label %.split54.us - -94: ; preds = %_ZL11ChompStrlenPKc.exit.i28.us - %95 = load i8, ptr %25, align 8, !tbaa !4 - switch i8 %95, label %.split54.us [ - i8 48, label %96 - i8 49, label %96 - i8 50, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 - i8 51, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 - i8 52, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 - i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 +_ZL11ChompStrlenPKc.exit.i28.us: ; preds = %87, %82 + %.1.i.i29.us = phi i32 [ %83, %87 ], [ %.0.i.i27.us, %82 ] + %88 = add i32 %.1.i.i29.us, -11 + %or.cond.i30.us = icmp ult i32 %88, 513 + %89 = and i32 %.1.i.i29.us, 1 + %90 = icmp ne i32 %89, 0 + %or.cond21.i31.not51.us = and i1 %or.cond.i30.us, %90 + %91 = load i8, ptr %9, align 16 + %.not.i32.us = icmp eq i8 %91, 58 + %or.cond47.us = select i1 %or.cond21.i31.not51.us, i1 %.not.i32.us, i1 false + %92 = load i8, ptr %24, align 1 + %.not19.i.us = icmp eq i8 %92, 48 + %or.cond49.us = select i1 %or.cond47.us, i1 %.not19.i.us, i1 false + br i1 %or.cond49.us, label %93, label %.split53.us + +93: ; preds = %_ZL11ChompStrlenPKc.exit.i28.us + %94 = load i8, ptr %25, align 8, !tbaa !4 + switch i8 %94, label %.split53.us [ + i8 48, label %95 + i8 49, label %95 + i8 50, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 + i8 51, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 + i8 52, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 + i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 ] -96: ; preds = %94, %94 +95: ; preds = %93, %93 call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %3) #9 store i8 0, ptr %26, align 1, !tbaa !4 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %4) #9 - %97 = add nsw i32 %.1.i.i29.us, -12 - %98 = icmp ult i32 %97, -10 - br i1 %98, label %.lr.ph.i.i38.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58 - -.lr.ph.i.i38.us: ; preds = %96 - %99 = lshr i32 %97, 1 - %100 = add nuw nsw i32 %99, 1 - %wide.trip.count.i.i39.us = zext nneg i32 %100 to i64 - br label %101 - -101: ; preds = %107, %.lr.ph.i.i38.us - %indvars.iv30.i.i40.us = phi i64 [ 0, %.lr.ph.i.i38.us ], [ %indvars.iv.next31.i.i44.us, %107 ] - %indvars.iv.i.i41.us = phi i64 [ 9, %.lr.ph.i.i38.us ], [ %indvars.iv.next.i.i45.us, %107 ] - %102 = getelementptr inbounds nuw i8, ptr %9, i64 %indvars.iv.i.i41.us - %103 = load i8, ptr %102, align 1, !tbaa !4 - store i8 %103, ptr %3, align 1, !tbaa !4 - %104 = getelementptr inbounds nuw i8, ptr %102, i64 1 - %105 = load i8, ptr %104, align 1, !tbaa !4 - store i8 %105, ptr %27, align 1, !tbaa !4 + %96 = add nsw i32 %.1.i.i29.us, -12 + %97 = icmp ult i32 %96, -10 + br i1 %97, label %.lr.ph.i.i38.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 + +.lr.ph.i.i38.us: ; preds = %95 + %98 = zext nneg i32 %.1.i.i29.us to i64 + %99 = add nsw i64 %98, -12 + %100 = lshr i64 %99, 1 + %101 = add nuw nsw i64 %100, 1 + br label %102 + +102: ; preds = %108, %.lr.ph.i.i38.us + %indvars.iv30.i.i39.us = phi i64 [ 0, %.lr.ph.i.i38.us ], [ %indvars.iv.next31.i.i43.us, %108 ] + %indvars.iv.i.i40.us = phi i64 [ 9, %.lr.ph.i.i38.us ], [ %indvars.iv.next.i.i44.us, %108 ] + %103 = getelementptr inbounds nuw i8, ptr %9, i64 %indvars.iv.i.i40.us + %104 = load i8, ptr %103, align 1, !tbaa !4 + store i8 %104, ptr %3, align 1, !tbaa !4 + %105 = getelementptr inbounds nuw i8, ptr %103, i64 1 + %106 = load i8, ptr %105, align 1, !tbaa !4 + store i8 %106, ptr %27, align 1, !tbaa !4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #9 store i32 0, ptr %5, align 4, !tbaa !10 - %106 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull @.str.2, ptr noundef nonnull %5) #9 - %.not.i.i42.us = icmp eq i32 %106, 1 - br i1 %.not.i.i42.us, label %107, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86 + %107 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull @.str.2, ptr noundef nonnull %5) #9 + %.not.i.i41.us = icmp eq i32 %107, 1 + br i1 %.not.i.i41.us, label %108, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85 -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86: ; preds = %101 +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85: ; preds = %102 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) #9 - br label %.split54.us - -107: ; preds = %101 - %108 = load i32, ptr %5, align 4, !tbaa !10 - %109 = trunc i32 %108 to i8 - %110 = getelementptr inbounds nuw [256 x i8], ptr %4, i64 0, i64 %indvars.iv30.i.i40.us - store i8 %109, ptr %110, align 1, !tbaa !4 - %indvars.iv.next31.i.i44.us = add nuw nsw i64 %indvars.iv30.i.i40.us, 1 + br label %.split53.us + +108: ; preds = %102 + %109 = load i32, ptr %5, align 4, !tbaa !10 + %110 = trunc i32 %109 to i8 + %111 = getelementptr inbounds nuw [256 x i8], ptr %4, i64 0, i64 %indvars.iv30.i.i39.us + store i8 %110, ptr %111, align 1, !tbaa !4 + %indvars.iv.next31.i.i43.us = add nuw nsw i64 %indvars.iv30.i.i39.us, 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 - %indvars.iv.next.i.i45.us = add nuw nsw i64 %indvars.iv.i.i41.us, 2 - %exitcond.not.i.i46.us = icmp eq i64 %indvars.iv.next31.i.i44.us, %wide.trip.count.i.i39.us - br i1 %exitcond.not.i.i46.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58, label %101, !llvm.loop !12 - -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58: ; preds = %107, %96 - %.016.lcssa.i.i35.us = phi i64 [ 0, %96 ], [ %wide.trip.count.i.i39.us, %107 ] - %111 = call i64 @fwrite(ptr noundef nonnull %4, i64 noundef 1, i64 noundef %.016.lcssa.i.i35.us, ptr noundef nonnull %14) - %112 = icmp eq i64 %111, %.016.lcssa.i.i35.us + %indvars.iv.next.i.i44.us = add nuw nsw i64 %indvars.iv.i.i40.us, 2 + %exitcond.not.i.us = icmp eq i64 %indvars.iv30.i.i39.us, %100 + br i1 %exitcond.not.i.us, label %._crit_edge.loopexit.i.i45.us, label %102, !llvm.loop !12 + +._crit_edge.loopexit.i.i45.us: ; preds = %108 + %112 = and i64 %101, 4294967295 + br label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 + +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57: ; preds = %95, %._crit_edge.loopexit.i.i45.us + %.016.lcssa.i.i35.us = phi i64 [ 0, %95 ], [ %112, %._crit_edge.loopexit.i.i45.us ] + %113 = call i64 @fwrite(ptr noundef nonnull %4, i64 noundef 1, i64 noundef %.016.lcssa.i.i35.us, ptr noundef nonnull %14) + %114 = icmp eq i64 %113, %.016.lcssa.i.i35.us call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) #9 - br i1 %112, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83, label %.split54.us, !llvm.loop !9 + br i1 %114, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82, label %.split53.us, !llvm.loop !9 -.split54.us: ; preds = %94, %_ZL11ChompStrlenPKc.exit.i28.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58, %50, %_ZL11ChompStrlenPKc.exit.i.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78, %.split.us55, %.split.us - %.us-phi = phi i1 [ false, %.split.us ], [ false, %.split.us55 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86 ], [ false, %50 ], [ false, %_ZL11ChompStrlenPKc.exit.i.us ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 ], [ false, %94 ], [ false, %_ZL11ChompStrlenPKc.exit.i28.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58 ] - %113 = call i32 @fclose(ptr noundef nonnull %13) - %114 = call i32 @fclose(ptr noundef nonnull %14) +.split53.us: ; preds = %93, %_ZL11ChompStrlenPKc.exit.i28.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57, %50, %_ZL11ChompStrlenPKc.exit.i.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77, %.split.us54, %.split.us + %.us-phi = phi i1 [ false, %.split.us ], [ false, %.split.us54 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85 ], [ false, %50 ], [ false, %_ZL11ChompStrlenPKc.exit.i.us ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 ], [ false, %93 ], [ false, %_ZL11ChompStrlenPKc.exit.i28.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 ] + %115 = call i32 @fclose(ptr noundef nonnull %13) + %116 = call i32 @fclose(ptr noundef nonnull %14) call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) #9 - br label %115 + br label %117 -115: ; preds = %.split54.us, %21, %20, %2 - %.020 = phi i1 [ false, %2 ], [ %.us-phi, %.split54.us ], [ false, %21 ], [ false, %20 ] +117: ; preds = %.split53.us, %21, %20, %2 + %.020 = phi i1 [ false, %2 ], [ %.us-phi, %.split53.us ], [ false, %21 ], [ false, %20 ] ret i1 %.020 } diff --git a/bench/cvc5/optimized/bags_utils.ll b/bench/cvc5/optimized/bags_utils.ll index 9d96e3a63e4..3ffbc9f2618 100644 --- a/bench/cvc5/optimized/bags_utils.ll +++ b/bench/cvc5/optimized/bags_utils.ll @@ -16608,47 +16608,44 @@ for.body.preheader: ; preds = %if.end.i.i.i.i.i.i. %__first.addr.0.i.i.i.i.i30.ph = phi ptr [ %add.ptr.i.i.i25, %if.end.i.i.i.i.i.i.i29 ], [ %incdec.ptr.i.i.i.i.i27, %call5.i.i.i.i2.i.i.noexc35 ] %_M_finish.i.i7.i3166 = getelementptr inbounds nuw i8, ptr %indices2, i64 8 store ptr %__first.addr.0.i.i.i.i.i30.ph, ptr %_M_finish.i.i7.i3166, align 8 - %umax = call i64 @llvm.umax.i64(i64 %div10, i64 2) - %11 = add nsw i64 %umax, -1 - %12 = lshr i64 %11, 1 br label %for.body for.body: ; preds = %for.body.preheader, %for.body %index.058 = phi i64 [ %inc, %for.body ], [ 0, %for.body.preheader ] %i.057 = phi i64 [ %add16, %for.body ], [ 0, %for.body.preheader ] - %13 = load ptr, ptr %call4, align 8 - %add.ptr.i = getelementptr inbounds i32, ptr %13, i64 %i.057 - %14 = load i32, ptr %add.ptr.i, align 4 + %11 = load ptr, ptr %call4, align 8 + %add.ptr.i = getelementptr inbounds i32, ptr %11, i64 %i.057 + %12 = load i32, ptr %add.ptr.i, align 4 %add.ptr.i38 = getelementptr inbounds nuw i32, ptr %call5.i.i.i.i2.i.i19, i64 %index.058 - store i32 %14, ptr %add.ptr.i38, align 4 + store i32 %12, ptr %add.ptr.i38, align 4 %add = or disjoint i64 %i.057, 1 - %add.ptr.i39 = getelementptr inbounds i32, ptr %13, i64 %add - %15 = load i32, ptr %add.ptr.i39, align 4 + %add.ptr.i39 = getelementptr inbounds i32, ptr %11, i64 %add + %13 = load i32, ptr %add.ptr.i39, align 4 %add.ptr.i40 = getelementptr inbounds nuw i32, ptr %call5.i.i.i.i2.i.i36, i64 %index.058 - store i32 %15, ptr %add.ptr.i40, align 4 + store i32 %13, ptr %add.ptr.i40, align 4 %add16 = add nuw i64 %i.057, 2 %inc = add nuw nsw i64 %index.058, 1 - %exitcond.not = icmp eq i64 %index.058, %12 - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !344 + %cmp = icmp ult i64 %add16, %div10 + br i1 %cmp, label %for.body, label %for.end, !llvm.loop !344 lpad: ; preds = %_ZNSt16allocator_traitsISaIjEE8allocateERS0_m.exit.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i, %entry - %16 = landingpad { ptr, i32 } + %14 = landingpad { ptr, i32 } cleanup call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #20 br label %eh.resume lpad2: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %17 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup br label %ehcleanup19 lpad7: ; preds = %if.then.i.i.i.i.i, %if.then.i.i17 - %18 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup br label %ehcleanup19 lpad10: ; preds = %if.then.i.i.i.i.i23 - %19 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -16657,68 +16654,68 @@ for.end: ; preds = %for.body, %invoke.c to label %invoke.cont18 unwind label %lpad17 invoke.cont18: ; preds = %for.end - %20 = load ptr, ptr %indices2, align 8 - %tobool.not.i.i.i = icmp eq ptr %20, null + %18 = load ptr, ptr %indices2, align 8 + %tobool.not.i.i.i = icmp eq ptr %18, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont18 - call void @_ZdlPv(ptr noundef nonnull %20) #23 + call void @_ZdlPv(ptr noundef nonnull %18) #23 br label %_ZNSt6vectorIjSaIjEED2Ev.exit _ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %invoke.cont18, %if.then.i.i.i - %21 = load ptr, ptr %indices1, align 8 - %tobool.not.i.i.i42 = icmp eq ptr %21, null + %19 = load ptr, ptr %indices1, align 8 + %tobool.not.i.i.i42 = icmp eq ptr %19, null br i1 %tobool.not.i.i.i42, label %_ZNSt6vectorIjSaIjEED2Ev.exit44, label %if.then.i.i.i43 if.then.i.i.i43: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %21) #23 + call void @_ZdlPv(ptr noundef nonnull %19) #23 br label %_ZNSt6vectorIjSaIjEED2Ev.exit44 _ZNSt6vectorIjSaIjEED2Ev.exit44: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %if.then.i.i.i43 - %22 = load ptr, ptr %op, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %22, null + %20 = load ptr, ptr %op, align 8 + %tobool.not.i.i.i.i = icmp eq ptr %20, null br i1 %tobool.not.i.i.i.i, label %_ZN4cvc58internal9ProjectOpD2Ev.exit, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit44 - call void @_ZdlPv(ptr noundef nonnull %22) #23 + call void @_ZdlPv(ptr noundef nonnull %20) #23 br label %_ZN4cvc58internal9ProjectOpD2Ev.exit _ZN4cvc58internal9ProjectOpD2Ev.exit: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit44, %if.then.i.i.i.i ret void lpad17: ; preds = %for.end - %23 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } cleanup - %24 = load ptr, ptr %indices2, align 8 - %tobool.not.i.i.i45 = icmp eq ptr %24, null + %22 = load ptr, ptr %indices2, align 8 + %tobool.not.i.i.i45 = icmp eq ptr %22, null br i1 %tobool.not.i.i.i45, label %ehcleanup, label %if.then.i.i.i46 if.then.i.i.i46: ; preds = %lpad17 - call void @_ZdlPv(ptr noundef nonnull %24) #23 + call void @_ZdlPv(ptr noundef nonnull %22) #23 br label %ehcleanup ehcleanup: ; preds = %if.then.i.i.i46, %lpad17, %lpad10 - %.pn = phi { ptr, i32 } [ %19, %lpad10 ], [ %23, %lpad17 ], [ %23, %if.then.i.i.i46 ] - %25 = load ptr, ptr %indices1, align 8 - %tobool.not.i.i.i48 = icmp eq ptr %25, null + %.pn = phi { ptr, i32 } [ %17, %lpad10 ], [ %21, %lpad17 ], [ %21, %if.then.i.i.i46 ] + %23 = load ptr, ptr %indices1, align 8 + %tobool.not.i.i.i48 = icmp eq ptr %23, null br i1 %tobool.not.i.i.i48, label %ehcleanup19, label %if.then.i.i.i49 if.then.i.i.i49: ; preds = %ehcleanup - call void @_ZdlPv(ptr noundef nonnull %25) #23 + call void @_ZdlPv(ptr noundef nonnull %23) #23 br label %ehcleanup19 ehcleanup19: ; preds = %if.then.i.i.i49, %ehcleanup, %lpad7, %lpad2 - %.pn.pn = phi { ptr, i32 } [ %18, %lpad7 ], [ %17, %lpad2 ], [ %.pn, %ehcleanup ], [ %.pn, %if.then.i.i.i49 ] - %26 = load ptr, ptr %op, align 8 - %tobool.not.i.i.i.i51 = icmp eq ptr %26, null + %.pn.pn = phi { ptr, i32 } [ %16, %lpad7 ], [ %15, %lpad2 ], [ %.pn, %ehcleanup ], [ %.pn, %if.then.i.i.i49 ] + %24 = load ptr, ptr %op, align 8 + %tobool.not.i.i.i.i51 = icmp eq ptr %24, null br i1 %tobool.not.i.i.i.i51, label %eh.resume, label %if.then.i.i.i.i52 if.then.i.i.i.i52: ; preds = %ehcleanup19 - call void @_ZdlPv(ptr noundef nonnull %26) #23 + call void @_ZdlPv(ptr noundef nonnull %24) #23 br label %eh.resume eh.resume: ; preds = %if.then.i.i.i.i52, %ehcleanup19, %lpad - %.pn.pn.pn = phi { ptr, i32 } [ %16, %lpad ], [ %.pn.pn, %ehcleanup19 ], [ %.pn.pn, %if.then.i.i.i.i52 ] + %.pn.pn.pn = phi { ptr, i32 } [ %14, %lpad ], [ %.pn.pn, %ehcleanup19 ], [ %.pn.pn, %if.then.i.i.i.i52 ] resume { ptr, i32 } %.pn.pn.pn } diff --git a/bench/darktable/optimized/introspection_sharpen.ll b/bench/darktable/optimized/introspection_sharpen.ll index 7b6375cf06a..1302ad73c67 100644 --- a/bench/darktable/optimized/introspection_sharpen.ll +++ b/bench/darktable/optimized/introspection_sharpen.ll @@ -155,7 +155,7 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %11 = load i32, ptr %10, align 4, !tbaa !44 %12 = tail call i32 @dt_iop_have_required_input_format(i32 noundef 4, ptr noundef %0, i32 noundef %11, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #20 %.not = icmp eq i32 %12, 0 - br i1 %.not, label %211, label %13 + br i1 %.not, label %210, label %13 13: ; preds = %6 %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -173,29 +173,29 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %25 = fptosi float %24 to i32 %26 = icmp eq i32 %25, 0 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %5, i64 8 - %.pre297 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 - br i1 %26, label %._crit_edge296, label %27 + %.pre295 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 + br i1 %26, label %._crit_edge294, label %27 27: ; preds = %13 %28 = shl nsw i32 %25, 1 - %.not212 = icmp sgt i32 %.pre297, %28 - br i1 %.not212, label %29, label %._crit_edge296 + %.not212 = icmp sgt i32 %.pre295, %28 + br i1 %.not212, label %29, label %._crit_edge294 29: ; preds = %27 %30 = getelementptr inbounds nuw i8, ptr %5, i64 12 %31 = load i32, ptr %30, align 4, !tbaa !46 %.not213 = icmp sgt i32 %31, %28 - br i1 %.not213, label %38, label %._crit_edge296 + br i1 %.not213, label %38, label %._crit_edge294 -._crit_edge296: ; preds = %13, %29, %27 - %32 = sext i32 %.pre297 to i64 +._crit_edge294: ; preds = %13, %29, %27 + %32 = sext i32 %.pre295 to i64 %33 = getelementptr inbounds nuw i8, ptr %5, i64 12 %34 = load i32, ptr %33, align 4, !tbaa !46 %35 = sext i32 %34 to i64 %36 = shl nsw i64 %32, 2 %37 = mul i64 %36, %35 tail call void @dt_iop_image_copy(ptr noundef %3, ptr noundef %2, i64 noundef %37) #20 - br label %211 + br label %210 38: ; preds = %29 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #20 @@ -206,7 +206,7 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr 40: ; preds = %38 call void @dt_iop_copy_image_roi(ptr noundef %3, ptr noundef %2, i64 noundef 4, ptr noundef nonnull %4, ptr noundef nonnull %5) #20 - br label %210 + br label %209 41: ; preds = %38 %42 = ashr i32 %25, 1 @@ -279,7 +279,7 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr call void @llvm.assume(i1 true) [ "align"(ptr null, i64 64) ] call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.7) #20 call void @dt_iop_copy_image_roi(ptr noundef %3, ptr noundef %2, i64 noundef 4, ptr noundef nonnull %4, ptr noundef nonnull %5) #20 - br label %210 + br label %209 .loopexit225: ; preds = %.lr.ph32.i, %56 %75 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 @@ -298,285 +298,282 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %83 = icmp sgt i32 %25, 0 %84 = getelementptr inbounds nuw i8, ptr %15, i64 8 %85 = getelementptr inbounds nuw i8, ptr %15, i64 4 - %umax = call i64 @llvm.umax.i64(i64 %81, i64 4) - %86 = add i64 %umax, -1 - %87 = lshr i64 %86, 2 - %88 = shl nsw i64 %76, 2 - %89 = and i64 %88, -16 - %scevgep270 = getelementptr i8, ptr %80, i64 %89 - %90 = or disjoint i64 %81, 1 - %umax271 = call i64 @llvm.umax.i64(i64 %90, i64 %76) - %91 = shl i64 %umax271, 2 - %92 = sub i64 %91, %89 - %93 = or disjoint i32 %28, 1 - %94 = sext i32 %25 to i64 + %86 = shl nsw i64 %76, 2 + %87 = and i64 %86, -16 + %scevgep269 = getelementptr i8, ptr %80, i64 %87 + %88 = or disjoint i64 %81, 1 + %umax = call i64 @llvm.umax.i64(i64 %88, i64 %76) + %89 = shl i64 %umax, 2 + %90 = sub i64 %89, %87 + %91 = or disjoint i32 %28, 1 + %92 = sext i32 %25 to i64 %wide.trip.count = zext nneg i32 %25 to i64 - %95 = shl i32 %25, 1 - br label %97 + %93 = shl i32 %25, 1 + br label %95 ._crit_edge263: ; preds = %.loopexit, %.loopexit225 call void @free(ptr noundef %55) #20 - %96 = load ptr, ptr %7, align 8, !tbaa !48 - call void @free(ptr noundef %96) #20 - br label %210 - -97: ; preds = %.lr.ph262, %.loopexit - %98 = phi i32 [ %77, %.lr.ph262 ], [ %207, %.loopexit ] - %indvars.iv293 = phi i64 [ 0, %.lr.ph262 ], [ %indvars.iv.next294, %.loopexit ] - %99 = icmp sge i64 %indvars.iv293, %94 - %100 = sub nsw i32 %98, %25 - %101 = sext i32 %100 to i64 - %.not216 = icmp slt i64 %indvars.iv293, %101 - %or.cond = select i1 %99, i1 %.not216, i1 false - br i1 %or.cond, label %107, label %102 - -102: ; preds = %97 - %103 = shl nuw nsw i64 %indvars.iv293, 2 - %104 = mul i64 %103, %76 - %105 = getelementptr inbounds nuw float, ptr %2, i64 %104 - %106 = getelementptr inbounds nuw float, ptr %3, i64 %104 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %106, ptr align 4 %105, i64 %79, i1 false) + %94 = load ptr, ptr %7, align 8, !tbaa !48 + call void @free(ptr noundef %94) #20 + br label %209 + +95: ; preds = %.lr.ph262, %.loopexit + %96 = phi i32 [ %77, %.lr.ph262 ], [ %206, %.loopexit ] + %indvars.iv291 = phi i64 [ 0, %.lr.ph262 ], [ %indvars.iv.next292, %.loopexit ] + %97 = icmp sge i64 %indvars.iv291, %92 + %98 = sub nsw i32 %96, %25 + %99 = sext i32 %98 to i64 + %.not216 = icmp slt i64 %indvars.iv291, %99 + %or.cond = select i1 %97, i1 %.not216, i1 false + br i1 %or.cond, label %105, label %100 + +100: ; preds = %95 + %101 = shl nuw nsw i64 %indvars.iv291, 2 + %102 = mul i64 %101, %76 + %103 = getelementptr inbounds nuw float, ptr %2, i64 %102 + %104 = getelementptr inbounds nuw float, ptr %3, i64 %102 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 4 %103, i64 %79, i1 false) %.pre = load i32, ptr %30, align 4, !tbaa !46 br label %.loopexit -107: ; preds = %97 - %indvars295 = trunc i64 %indvars.iv293 to i32 +105: ; preds = %95 + %indvars293 = trunc i64 %indvars.iv291 to i32 call void @llvm.assume(i1 true) [ "align"(ptr %80, i64 64) ] - %108 = sub nsw i64 %indvars.iv293, %94 - %109 = add nsw i64 %indvars.iv293, %94 - %110 = add nsw i32 %indvars295, %25 + %106 = sub nsw i64 %indvars.iv291, %92 + %107 = add nsw i64 %indvars.iv291, %92 + %108 = add nsw i32 %indvars293, %25 br i1 %.not264, label %.preheader224, label %.lr.ph234 -.lr.ph234: ; preds = %107 - %111 = trunc nsw i64 %108 to i32 - %.not221229 = icmp ult i32 %110, %111 - br label %113 +.lr.ph234: ; preds = %105 + %109 = trunc nsw i64 %106 to i32 + %.not221229 = icmp ult i32 %108, %109 + br label %111 -.preheader224: ; preds = %._crit_edge, %107 +.preheader224: ; preds = %._crit_edge, %105 br i1 %.not265, label %._crit_edge241, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %.preheader224 - %112 = trunc nsw i64 %108 to i32 - %.not219235 = icmp ult i32 %110, %112 + %110 = trunc nsw i64 %106 to i32 + %.not219235 = icmp ult i32 %108, %110 br i1 %.not219235, label %.preheader.us.preheader, label %.preheader .preheader.us.preheader: ; preds = %.preheader.lr.ph - call void @llvm.memset.p0.i64(ptr align 16 %scevgep270, i8 0, i64 %92, i1 false), !tbaa !47 + call void @llvm.memset.p0.i64(ptr align 16 %scevgep269, i8 0, i64 %90, i1 false), !tbaa !47 br label %._crit_edge241 -113: ; preds = %.lr.ph234, %._crit_edge +111: ; preds = %.lr.ph234, %._crit_edge %indvar = phi i64 [ 0, %.lr.ph234 ], [ %indvar.next, %._crit_edge ] - %.0191232 = phi i64 [ 0, %.lr.ph234 ], [ %115, %._crit_edge ] - %114 = shl i64 %indvar, 4 - %scevgep = getelementptr i8, ptr %80, i64 %114 + %.0191232 = phi i64 [ 0, %.lr.ph234 ], [ %113, %._crit_edge ] + %112 = shl i64 %indvar, 4 + %scevgep = getelementptr i8, ptr %80, i64 %112 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #20 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %9, i8 0, i64 16, i1 false) br i1 %.not221229, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %121, %113 +._crit_edge: ; preds = %120, %111 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %scevgep, ptr noundef nonnull align 16 dereferenceable(16) %9, i64 16, i1 false), !tbaa !47 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #20 - %115 = add nuw i64 %.0191232, 4 + %113 = add nuw i64 %.0191232, 4 + %114 = icmp ult i64 %113, %81 %indvar.next = add nuw nsw i64 %indvar, 1 - %exitcond269.not = icmp eq i64 %indvar, %87 - br i1 %exitcond269.not, label %.preheader224, label %113 - -.lr.ph: ; preds = %113, %121 - %.0192230 = phi i64 [ %122, %121 ], [ %108, %113 ] - %116 = sub i64 %.0192230, %108 - %117 = getelementptr inbounds nuw float, ptr %55, i64 %116 - %118 = load float, ptr %117, align 4, !tbaa !47 - %119 = mul i64 %.0192230, %76 - %120 = add i64 %119, %.0191232 - br label %123 - -121: ; preds = %123 - %122 = add i64 %.0192230, 1 - %.not221 = icmp ugt i64 %122, %109 + br i1 %114, label %111, label %.preheader224 + +.lr.ph: ; preds = %111, %120 + %.0192230 = phi i64 [ %121, %120 ], [ %106, %111 ] + %115 = sub i64 %.0192230, %106 + %116 = getelementptr inbounds nuw float, ptr %55, i64 %115 + %117 = load float, ptr %116, align 4, !tbaa !47 + %118 = mul i64 %.0192230, %76 + %119 = add i64 %118, %.0191232 + br label %122 + +120: ; preds = %122 + %121 = add i64 %.0192230, 1 + %.not221 = icmp ugt i64 %121, %107 br i1 %.not221, label %._crit_edge, label %.lr.ph -123: ; preds = %.lr.ph, %123 - %.0193228 = phi i64 [ 0, %.lr.ph ], [ %131, %123 ] - %124 = add i64 %120, %.0193228 - %.idx222 = shl i64 %124, 4 - %125 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx222 - %126 = load float, ptr %125, align 4, !tbaa !47 - %127 = fmul reassoc nsz arcp contract afn float %126, %118 - %128 = getelementptr inbounds nuw [4 x float], ptr %9, i64 0, i64 %.0193228 - %129 = load float, ptr %128, align 4, !tbaa !47 - %130 = fadd reassoc nsz arcp contract afn float %129, %127 - store float %130, ptr %128, align 4, !tbaa !47 - %131 = add nuw nsw i64 %.0193228, 1 - %exitcond.not = icmp eq i64 %131, 4 - br i1 %exitcond.not, label %121, label %123 +122: ; preds = %.lr.ph, %122 + %.0193228 = phi i64 [ 0, %.lr.ph ], [ %130, %122 ] + %123 = add i64 %119, %.0193228 + %.idx222 = shl i64 %123, 4 + %124 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx222 + %125 = load float, ptr %124, align 4, !tbaa !47 + %126 = fmul reassoc nsz arcp contract afn float %125, %117 + %127 = getelementptr inbounds nuw [4 x float], ptr %9, i64 0, i64 %.0193228 + %128 = load float, ptr %127, align 4, !tbaa !47 + %129 = fadd reassoc nsz arcp contract afn float %128, %126 + store float %129, ptr %127, align 4, !tbaa !47 + %130 = add nuw nsw i64 %.0193228, 1 + %exitcond.not = icmp eq i64 %130, 4 + br i1 %exitcond.not, label %120, label %122 .preheader: ; preds = %.preheader.lr.ph, %._crit_edge239 - %.0198240 = phi i64 [ %136, %._crit_edge239 ], [ %81, %.preheader.lr.ph ] - br label %138 + %.0198240 = phi i64 [ %135, %._crit_edge239 ], [ %81, %.preheader.lr.ph ] + br label %137 ._crit_edge241: ; preds = %._crit_edge239, %.preheader.us.preheader, %.preheader224 - %132 = mul i64 %82, %indvars.iv293 - %133 = getelementptr inbounds nuw float, ptr %3, i64 %132 + %131 = mul i64 %82, %indvars.iv291 + %132 = getelementptr inbounds nuw float, ptr %3, i64 %131 br i1 %83, label %.lr.ph244, label %._crit_edge245 .lr.ph244: ; preds = %._crit_edge241 - %134 = mul nsw i64 %indvars.iv293, %76 - br label %156 - -._crit_edge239: ; preds = %138 - %135 = getelementptr inbounds nuw float, ptr %80, i64 %.0198240 - store float %147, ptr %135, align 4, !tbaa !47 - %136 = add nuw i64 %.0198240, 1 - %137 = icmp ult i64 %136, %76 - br i1 %137, label %.preheader, label %._crit_edge241 - -138: ; preds = %.preheader, %138 - %.0200237 = phi float [ 0.000000e+00, %.preheader ], [ %147, %138 ] - %.0201236 = phi i64 [ %108, %.preheader ], [ %148, %138 ] - %139 = sub i64 %.0201236, %108 - %140 = getelementptr inbounds nuw float, ptr %55, i64 %139 - %141 = load float, ptr %140, align 4, !tbaa !47 - %142 = mul i64 %.0201236, %76 - %143 = add i64 %142, %.0198240 - %.idx220 = shl i64 %143, 4 - %144 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx220 - %145 = load float, ptr %144, align 4, !tbaa !47 - %146 = fmul reassoc nsz arcp contract afn float %145, %141 - %147 = fadd reassoc nsz arcp contract afn float %146, %.0200237 - %148 = add i64 %.0201236, 1 - %.not219 = icmp ugt i64 %148, %109 - br i1 %.not219, label %._crit_edge239, label %138 - -._crit_edge245: ; preds = %156, %._crit_edge241 - %149 = load float, ptr %84, align 4, !tbaa !50 - %150 = load float, ptr %85, align 4, !tbaa !51 - %151 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 - %152 = sub nsw i32 %151, %25 - %153 = icmp sgt i32 %152, %25 - br i1 %153, label %.lr.ph255, label %.preheader223 + %133 = mul nsw i64 %indvars.iv291, %76 + br label %155 + +._crit_edge239: ; preds = %137 + %134 = getelementptr inbounds nuw float, ptr %80, i64 %.0198240 + store float %146, ptr %134, align 4, !tbaa !47 + %135 = add nuw i64 %.0198240, 1 + %136 = icmp ult i64 %135, %76 + br i1 %136, label %.preheader, label %._crit_edge241 + +137: ; preds = %.preheader, %137 + %.0200237 = phi float [ 0.000000e+00, %.preheader ], [ %146, %137 ] + %.0201236 = phi i64 [ %106, %.preheader ], [ %147, %137 ] + %138 = sub i64 %.0201236, %106 + %139 = getelementptr inbounds nuw float, ptr %55, i64 %138 + %140 = load float, ptr %139, align 4, !tbaa !47 + %141 = mul i64 %.0201236, %76 + %142 = add i64 %141, %.0198240 + %.idx220 = shl i64 %142, 4 + %143 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx220 + %144 = load float, ptr %143, align 4, !tbaa !47 + %145 = fmul reassoc nsz arcp contract afn float %144, %140 + %146 = fadd reassoc nsz arcp contract afn float %145, %.0200237 + %147 = add i64 %.0201236, 1 + %.not219 = icmp ugt i64 %147, %107 + br i1 %.not219, label %._crit_edge239, label %137 + +._crit_edge245: ; preds = %155, %._crit_edge241 + %148 = load float, ptr %84, align 4, !tbaa !50 + %149 = load float, ptr %85, align 4, !tbaa !51 + %150 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 + %151 = sub nsw i32 %150, %25 + %152 = icmp sgt i32 %151, %25 + br i1 %152, label %.lr.ph255, label %.preheader223 .lr.ph255: ; preds = %._crit_edge245 - %154 = mul nsw i64 %indvars.iv293, %76 - %155 = sub i32 %151, %95 - br label %163 - -156: ; preds = %.lr.ph244, %156 - %indvars.iv = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next, %156 ] - %.idx298 = shl nsw i64 %indvars.iv, 4 - %157 = getelementptr inbounds nuw i8, ptr %133, i64 %.idx298 - %158 = add nsw i64 %134, %indvars.iv - %.idx218 = shl i64 %158, 4 - %159 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx218 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %157, ptr noundef nonnull readonly align 4 dereferenceable(16) %159, i64 16, i1 false), !tbaa !47, !alias.scope !52 + %153 = mul nsw i64 %indvars.iv291, %76 + %154 = sub i32 %150, %93 + br label %162 + +155: ; preds = %.lr.ph244, %155 + %indvars.iv = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next, %155 ] + %.idx296 = shl nsw i64 %indvars.iv, 4 + %156 = getelementptr inbounds nuw i8, ptr %132, i64 %.idx296 + %157 = add nsw i64 %133, %indvars.iv + %.idx218 = shl i64 %157, 4 + %158 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx218 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %156, ptr noundef nonnull readonly align 4 dereferenceable(16) %158, i64 16, i1 false), !tbaa !47, !alias.scope !52 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond277.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond277.not, label %._crit_edge245, label %156 + %exitcond275.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond275.not, label %._crit_edge245, label %155 -.preheader223: ; preds = %186, %._crit_edge245 +.preheader223: ; preds = %185, %._crit_edge245 br i1 %83, label %.lr.ph259, label %.loopexit .lr.ph259: ; preds = %.preheader223 - %160 = mul nsw i64 %indvars.iv293, %76 - %161 = sext i32 %152 to i64 - %162 = sext i32 %151 to i64 - br label %202 - -163: ; preds = %.lr.ph255, %186 - %indvars.iv286 = phi i64 [ %94, %.lr.ph255 ], [ %indvars.iv.next287, %186 ] - %indvars.iv283 = phi i32 [ %93, %.lr.ph255 ], [ %indvars.iv.next284, %186 ] - %indvars.iv278 = phi i32 [ 0, %.lr.ph255 ], [ %indvars.iv.next279, %186 ] - %164 = sub nsw i64 %indvars.iv286, %94 - %165 = add nsw i64 %indvars.iv286, %94 - %.not217246 = icmp sgt i64 %164, %165 + %159 = mul nsw i64 %indvars.iv291, %76 + %160 = sext i32 %151 to i64 + %161 = sext i32 %150 to i64 + br label %201 + +162: ; preds = %.lr.ph255, %185 + %indvars.iv284 = phi i64 [ %92, %.lr.ph255 ], [ %indvars.iv.next285, %185 ] + %indvars.iv281 = phi i32 [ %91, %.lr.ph255 ], [ %indvars.iv.next282, %185 ] + %indvars.iv276 = phi i32 [ 0, %.lr.ph255 ], [ %indvars.iv.next277, %185 ] + %163 = sub nsw i64 %indvars.iv284, %92 + %164 = add nsw i64 %indvars.iv284, %92 + %.not217246 = icmp sgt i64 %163, %164 br i1 %.not217246, label %._crit_edge251, label %.lr.ph250.preheader -.lr.ph250.preheader: ; preds = %163 - %166 = sext i32 %indvars.iv278 to i64 +.lr.ph250.preheader: ; preds = %162 + %165 = sext i32 %indvars.iv276 to i64 br label %.lr.ph250 -._crit_edge251: ; preds = %.lr.ph250, %163 - %.0195.lcssa = phi float [ 0.000000e+00, %163 ], [ %180, %.lr.ph250 ] - %167 = add nsw i64 %154, %indvars.iv286 - %168 = shl i64 %167, 2 - %169 = getelementptr inbounds nuw float, ptr %2, i64 %168 - %170 = load float, ptr %169, align 4, !tbaa !47 - %171 = fsub reassoc nsz arcp contract afn float %170, %.0195.lcssa - %172 = call reassoc nsz arcp contract afn float @llvm.fabs.f32(float %171) - %173 = fcmp reassoc nsz arcp contract afn ogt float %172, %149 - br i1 %173, label %181, label %186 +._crit_edge251: ; preds = %.lr.ph250, %162 + %.0195.lcssa = phi float [ 0.000000e+00, %162 ], [ %179, %.lr.ph250 ] + %166 = add nsw i64 %153, %indvars.iv284 + %167 = shl i64 %166, 2 + %168 = getelementptr inbounds nuw float, ptr %2, i64 %167 + %169 = load float, ptr %168, align 4, !tbaa !47 + %170 = fsub reassoc nsz arcp contract afn float %169, %.0195.lcssa + %171 = call reassoc nsz arcp contract afn float @llvm.fabs.f32(float %170) + %172 = fcmp reassoc nsz arcp contract afn ogt float %171, %148 + br i1 %172, label %180, label %185 .lr.ph250: ; preds = %.lr.ph250.preheader, %.lr.ph250 - %indvars.iv280 = phi i64 [ %166, %.lr.ph250.preheader ], [ %indvars.iv.next281, %.lr.ph250 ] - %.0195247 = phi float [ 0.000000e+00, %.lr.ph250.preheader ], [ %180, %.lr.ph250 ] - %174 = sub nsw i64 %indvars.iv280, %164 - %175 = getelementptr inbounds float, ptr %55, i64 %174 - %176 = load float, ptr %175, align 4, !tbaa !47 - %177 = getelementptr inbounds float, ptr %80, i64 %indvars.iv280 - %178 = load float, ptr %177, align 4, !tbaa !47 - %179 = fmul reassoc nsz arcp contract afn float %178, %176 - %180 = fadd reassoc nsz arcp contract afn float %179, %.0195247 - %indvars.iv.next281 = add nsw i64 %indvars.iv280, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next281 to i32 - %exitcond285.not = icmp eq i32 %indvars.iv283, %lftr.wideiv - br i1 %exitcond285.not, label %._crit_edge251, label %.lr.ph250 - -181: ; preds = %._crit_edge251 - %182 = fsub reassoc nsz arcp contract afn float %172, %149 - %183 = fcmp reassoc nsz arcp contract afn ogt float %182, 0.000000e+00 - %184 = select reassoc nsz arcp contract afn i1 %183, float %182, float 0.000000e+00 - %185 = call reassoc nsz arcp contract afn float @llvm.copysign.f32(float %184, float %171) - br label %186 - -186: ; preds = %._crit_edge251, %181 - %187 = phi reassoc nsz arcp contract afn float [ %185, %181 ], [ 0.000000e+00, %._crit_edge251 ] - %188 = fmul reassoc nsz arcp contract afn float %187, %150 - %189 = fadd reassoc nsz arcp contract afn float %188, %170 - %190 = shl nsw i64 %indvars.iv286, 2 - %191 = getelementptr inbounds float, ptr %133, i64 %190 - store float %189, ptr %191, align 4, !tbaa !47 - %192 = or disjoint i64 %168, 1 - %193 = getelementptr inbounds nuw float, ptr %2, i64 %192 - %194 = load float, ptr %193, align 4, !tbaa !47 - %195 = or disjoint i64 %190, 1 - %196 = getelementptr inbounds float, ptr %133, i64 %195 - store float %194, ptr %196, align 4, !tbaa !47 - %197 = or disjoint i64 %168, 2 - %198 = getelementptr inbounds nuw float, ptr %2, i64 %197 - %199 = load float, ptr %198, align 4, !tbaa !47 - %200 = or disjoint i64 %190, 2 - %201 = getelementptr inbounds float, ptr %133, i64 %200 - store float %199, ptr %201, align 4, !tbaa !47 - %indvars.iv.next287 = add nsw i64 %indvars.iv286, 1 - %indvars.iv.next279 = add i32 %indvars.iv278, 1 - %indvars.iv.next284 = add i32 %indvars.iv283, 1 - %exitcond289.not = icmp eq i32 %indvars.iv.next279, %155 - br i1 %exitcond289.not, label %.preheader223, label %163 - -202: ; preds = %.lr.ph259, %202 - %indvars.iv290 = phi i64 [ %161, %.lr.ph259 ], [ %indvars.iv.next291, %202 ] - %.idx299 = shl nsw i64 %indvars.iv290, 4 - %203 = getelementptr inbounds i8, ptr %133, i64 %.idx299 - %204 = add nsw i64 %160, %indvars.iv290 - %.idx = shl i64 %204, 4 - %205 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %203, ptr noundef nonnull readonly align 4 dereferenceable(16) %205, i64 16, i1 false), !tbaa !47, !alias.scope !56 - %indvars.iv.next291 = add nsw i64 %indvars.iv290, 1 - %206 = icmp slt i64 %indvars.iv.next291, %162 - br i1 %206, label %202, label %.loopexit - -.loopexit: ; preds = %202, %.preheader223, %102 - %207 = phi i32 [ %98, %.preheader223 ], [ %.pre, %102 ], [ %98, %202 ] - %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1 - %208 = sext i32 %207 to i64 - %209 = icmp slt i64 %indvars.iv.next294, %208 - br i1 %209, label %97, label %._crit_edge263 - -210: ; preds = %74, %._crit_edge263, %40 + %indvars.iv278 = phi i64 [ %165, %.lr.ph250.preheader ], [ %indvars.iv.next279, %.lr.ph250 ] + %.0195247 = phi float [ 0.000000e+00, %.lr.ph250.preheader ], [ %179, %.lr.ph250 ] + %173 = sub nsw i64 %indvars.iv278, %163 + %174 = getelementptr inbounds float, ptr %55, i64 %173 + %175 = load float, ptr %174, align 4, !tbaa !47 + %176 = getelementptr inbounds float, ptr %80, i64 %indvars.iv278 + %177 = load float, ptr %176, align 4, !tbaa !47 + %178 = fmul reassoc nsz arcp contract afn float %177, %175 + %179 = fadd reassoc nsz arcp contract afn float %178, %.0195247 + %indvars.iv.next279 = add nsw i64 %indvars.iv278, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next279 to i32 + %exitcond283.not = icmp eq i32 %indvars.iv281, %lftr.wideiv + br i1 %exitcond283.not, label %._crit_edge251, label %.lr.ph250 + +180: ; preds = %._crit_edge251 + %181 = fsub reassoc nsz arcp contract afn float %171, %148 + %182 = fcmp reassoc nsz arcp contract afn ogt float %181, 0.000000e+00 + %183 = select reassoc nsz arcp contract afn i1 %182, float %181, float 0.000000e+00 + %184 = call reassoc nsz arcp contract afn float @llvm.copysign.f32(float %183, float %170) + br label %185 + +185: ; preds = %._crit_edge251, %180 + %186 = phi reassoc nsz arcp contract afn float [ %184, %180 ], [ 0.000000e+00, %._crit_edge251 ] + %187 = fmul reassoc nsz arcp contract afn float %186, %149 + %188 = fadd reassoc nsz arcp contract afn float %187, %169 + %189 = shl nsw i64 %indvars.iv284, 2 + %190 = getelementptr inbounds float, ptr %132, i64 %189 + store float %188, ptr %190, align 4, !tbaa !47 + %191 = or disjoint i64 %167, 1 + %192 = getelementptr inbounds nuw float, ptr %2, i64 %191 + %193 = load float, ptr %192, align 4, !tbaa !47 + %194 = or disjoint i64 %189, 1 + %195 = getelementptr inbounds float, ptr %132, i64 %194 + store float %193, ptr %195, align 4, !tbaa !47 + %196 = or disjoint i64 %167, 2 + %197 = getelementptr inbounds nuw float, ptr %2, i64 %196 + %198 = load float, ptr %197, align 4, !tbaa !47 + %199 = or disjoint i64 %189, 2 + %200 = getelementptr inbounds float, ptr %132, i64 %199 + store float %198, ptr %200, align 4, !tbaa !47 + %indvars.iv.next285 = add nsw i64 %indvars.iv284, 1 + %indvars.iv.next277 = add i32 %indvars.iv276, 1 + %indvars.iv.next282 = add i32 %indvars.iv281, 1 + %exitcond287.not = icmp eq i32 %indvars.iv.next277, %154 + br i1 %exitcond287.not, label %.preheader223, label %162 + +201: ; preds = %.lr.ph259, %201 + %indvars.iv288 = phi i64 [ %160, %.lr.ph259 ], [ %indvars.iv.next289, %201 ] + %.idx297 = shl nsw i64 %indvars.iv288, 4 + %202 = getelementptr inbounds i8, ptr %132, i64 %.idx297 + %203 = add nsw i64 %159, %indvars.iv288 + %.idx = shl i64 %203, 4 + %204 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %202, ptr noundef nonnull readonly align 4 dereferenceable(16) %204, i64 16, i1 false), !tbaa !47, !alias.scope !56 + %indvars.iv.next289 = add nsw i64 %indvars.iv288, 1 + %205 = icmp slt i64 %indvars.iv.next289, %161 + br i1 %205, label %201, label %.loopexit + +.loopexit: ; preds = %201, %.preheader223, %100 + %206 = phi i32 [ %96, %.preheader223 ], [ %.pre, %100 ], [ %96, %201 ] + %indvars.iv.next292 = add nuw nsw i64 %indvars.iv291, 1 + %207 = sext i32 %206 to i64 + %208 = icmp slt i64 %indvars.iv.next292, %207 + br i1 %208, label %95, label %._crit_edge263 + +209: ; preds = %74, %._crit_edge263, %40 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #20 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #20 - br label %211 + br label %210 -211: ; preds = %._crit_edge296, %210, %6 +210: ; preds = %._crit_edge294, %209, %6 ret void } diff --git a/bench/eastl/optimized/EAMemory.ll b/bench/eastl/optimized/EAMemory.ll index e2742d7f8bd..df13a2ff35b 100644 --- a/bench/eastl/optimized/EAMemory.ll +++ b/bench/eastl/optimized/EAMemory.ll @@ -968,32 +968,32 @@ while.cond18.preheader.i: ; preds = %sw.default for.cond21.preheader.lr.ph.i: ; preds = %while.cond18.preheader.i %cmp2227.not.i = icmp ne i64 %sourceByteCount, 0 tail call void @llvm.assume(i1 %cmp2227.not.i) - %29 = add i64 %sourceByteCount, -1 - br label %for.cond21.preheader.us.i - -for.cond21.preheader.us.i: ; preds = %for.cond21.while.cond18.loopexit_crit_edge.us.i, %for.cond21.preheader.lr.ph.i - %d.sroa.0.335.us.i = phi ptr [ %incdec.ptr28.us.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %pDestination, %for.cond21.preheader.lr.ph.i ] - %destByteCount.addr.334.us.i = phi i64 [ %32, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %destByteCount, %for.cond21.preheader.lr.ph.i ] - %30 = add i64 %destByteCount.addr.334.us.i, -1 - %umin.i = tail call i64 @llvm.umin.i64(i64 %30, i64 %29) br label %for.body26.us.i -for.body26.us.i: ; preds = %for.body26.us.i, %for.cond21.preheader.us.i - %i20.031.us.i = phi i64 [ 0, %for.cond21.preheader.us.i ], [ %inc.us.i, %for.body26.us.i ] - %s.sroa.0.230.us.i = phi ptr [ %pSource, %for.cond21.preheader.us.i ], [ %incdec.ptr27.us.i, %for.body26.us.i ] - %d.sroa.0.429.us.i = phi ptr [ %d.sroa.0.335.us.i, %for.cond21.preheader.us.i ], [ %incdec.ptr28.us.i, %for.body26.us.i ] +for.body26.us.i: ; preds = %for.body26.us.i.backedge, %for.cond21.preheader.lr.ph.i + %i20.031.us.i = phi i64 [ 0, %for.cond21.preheader.lr.ph.i ], [ %i20.031.us.i.be, %for.body26.us.i.backedge ] + %s.sroa.0.230.us.i = phi ptr [ %pSource, %for.cond21.preheader.lr.ph.i ], [ %s.sroa.0.230.us.i.be, %for.body26.us.i.backedge ] + %d.sroa.0.429.us.i = phi ptr [ %pDestination, %for.cond21.preheader.lr.ph.i ], [ %incdec.ptr28.us.i, %for.body26.us.i.backedge ] + %destByteCount.addr.428.us.i = phi i64 [ %destByteCount, %for.cond21.preheader.lr.ph.i ], [ %dec29.us.i, %for.body26.us.i.backedge ] %incdec.ptr27.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.230.us.i, i64 1 - %31 = load i8, ptr %s.sroa.0.230.us.i, align 1 + %29 = load i8, ptr %s.sroa.0.230.us.i, align 1 %incdec.ptr28.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.429.us.i, i64 1 - store i8 %31, ptr %d.sroa.0.429.us.i, align 1 + store i8 %29, ptr %d.sroa.0.429.us.i, align 1 + %dec29.us.i = add i64 %destByteCount.addr.428.us.i, -1 %inc.us.i = add nuw i64 %i20.031.us.i, 1 - %exitcond.not.i = icmp eq i64 %i20.031.us.i, %umin.i - br i1 %exitcond.not.i, label %for.cond21.while.cond18.loopexit_crit_edge.us.i, label %for.body26.us.i, !llvm.loop !15 + %cmp22.us.i = icmp ult i64 %inc.us.i, %sourceByteCount + %tobool24.us.i = icmp ne i64 %dec29.us.i, 0 + %30 = select i1 %cmp22.us.i, i1 %tobool24.us.i, i1 false + br i1 %30, label %for.body26.us.i.backedge, label %for.cond21.while.cond18.loopexit_crit_edge.us.i + +for.body26.us.i.backedge: ; preds = %for.body26.us.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i + %i20.031.us.i.be = phi i64 [ %inc.us.i, %for.body26.us.i ], [ 0, %for.cond21.while.cond18.loopexit_crit_edge.us.i ] + %s.sroa.0.230.us.i.be = phi ptr [ %incdec.ptr27.us.i, %for.body26.us.i ], [ %pSource, %for.cond21.while.cond18.loopexit_crit_edge.us.i ] + br label %for.body26.us.i, !llvm.loop !15 for.cond21.while.cond18.loopexit_crit_edge.us.i: ; preds = %for.body26.us.i - %32 = sub i64 %30, %umin.i - %tobool.not.us.i = icmp eq i64 %32, 0 - br i1 %tobool.not.us.i, label %sw.epilog, label %for.cond21.preheader.us.i, !llvm.loop !16 + %tobool.not.us.i = icmp eq i64 %dec29.us.i, 0 + br i1 %tobool.not.us.i, label %sw.epilog, label %for.body26.us.i.backedge while.cond.preheader.i: ; preds = %sw.default %cmp643.i = icmp ugt i64 %destByteCount, 3 @@ -1010,18 +1010,18 @@ for.body.us.i: ; preds = %for.body.us.i, %for %d.sroa.0.138.us.i = phi ptr [ %pDestination, %for.cond.preheader.lr.ph.i ], [ %incdec.ptr9.us.i, %for.body.us.i ] %destByteCount.addr.137.us.i = phi i64 [ %destByteCount, %for.cond.preheader.lr.ph.i ], [ %sub.us.i, %for.body.us.i ] %incdec.ptr.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.039.us.i, i64 4 - %33 = load i32, ptr %s.sroa.0.039.us.i, align 4 + %31 = load i32, ptr %s.sroa.0.039.us.i, align 4 %incdec.ptr9.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.138.us.i, i64 4 - store i32 %33, ptr %d.sroa.0.138.us.i, align 4 + store i32 %31, ptr %d.sroa.0.138.us.i, align 4 %add.us.i = add i64 %i.140.us.i, 4 %sub.us.i = add i64 %destByteCount.addr.137.us.i, -4 %cmp7.us.i = icmp ult i64 %add.us.i, %sourceByteCount %cmp8.us.i = icmp ugt i64 %sub.us.i, 3 - %34 = select i1 %cmp7.us.i, i1 %cmp8.us.i, i1 false - %brmerge = select i1 %34, i1 true, i1 %cmp8.us.i - %add.us.i.mux = select i1 %34, i64 %add.us.i, i64 0 - %incdec.ptr.us.i.mux = select i1 %34, ptr %incdec.ptr.us.i, ptr %pSource - br i1 %brmerge, label %for.body.us.i, label %while.end.i29, !llvm.loop !17 + %32 = select i1 %cmp7.us.i, i1 %cmp8.us.i, i1 false + %brmerge = select i1 %32, i1 true, i1 %cmp8.us.i + %add.us.i.mux = select i1 %32, i64 %add.us.i, i64 0 + %incdec.ptr.us.i.mux = select i1 %32, ptr %incdec.ptr.us.i, ptr %pSource + br i1 %brmerge, label %for.body.us.i, label %while.end.i29, !llvm.loop !16 while.end.i29: ; preds = %for.body.us.i, %while.cond.preheader.i %destByteCount.addr.0.lcssa.i = phi i64 [ %destByteCount, %while.cond.preheader.i ], [ %sub.us.i, %for.body.us.i ] @@ -1041,12 +1041,12 @@ while.body14.i: ; preds = %while.body14.i, %wh %d.sroa.0.254.i = phi ptr [ %incdec.ptr16.i, %while.body14.i ], [ %d.sroa.0.0.lcssa.i, %while.body14.preheader.i ] %destByteCount.addr.253.i = phi i64 [ %dec.i31, %while.body14.i ], [ %destByteCount.addr.0.lcssa.i, %while.body14.preheader.i ] %incdec.ptr15.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.155.i, i64 1 - %35 = load i8, ptr %s.sroa.0.155.i, align 1 + %33 = load i8, ptr %s.sroa.0.155.i, align 1 %incdec.ptr16.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.254.i, i64 1 - store i8 %35, ptr %d.sroa.0.254.i, align 1 + store i8 %33, ptr %d.sroa.0.254.i, align 1 %dec.i31 = add nsw i64 %destByteCount.addr.253.i, -1 %cmp13.not.i = icmp eq i64 %dec.i31, 0 - br i1 %cmp13.not.i, label %sw.epilog, label %while.body14.i, !llvm.loop !18 + br i1 %cmp13.not.i, label %sw.epilog, label %while.body14.i, !llvm.loop !17 sw.bb7: ; preds = %entry %v4.0.in.i = getelementptr inbounds nuw i8, ptr %pSource, i64 12 @@ -1056,17 +1056,17 @@ sw.bb7: ; preds = %entry %v2.0.in.i = getelementptr inbounds nuw i8, ptr %pSource, i64 4 %v2.0.i = load i32, ptr %v2.0.in.i, align 1 %v1.0.i = load i32, ptr %pSource, align 1 - %36 = ptrtoint ptr %pDestination to i64 - %and67.i = and i64 %36, 15 + %34 = ptrtoint ptr %pDestination to i64 + %and67.i = and i64 %34, 15 %cmp68.not.i = icmp eq i64 %and67.i, 0 br i1 %cmp68.not.i, label %if.end98.i, label %while.cond.preheader.i32 while.cond.preheader.i32: ; preds = %sw.bb7 - %and7091.i = and i64 %36, 3 + %and7091.i = and i64 %34, 3 %cmp7192.i = icmp ne i64 %and7091.i, 0 %cmp7293.i = icmp ne i64 %destByteCount, 0 - %37 = and i1 %cmp7192.i, %cmp7293.i - br i1 %37, label %while.body.i40, label %while.end.i33 + %35 = and i1 %cmp7192.i, %cmp7293.i + br i1 %35, label %while.body.i40, label %while.end.i33 while.body.i40: ; preds = %while.cond.preheader.i32, %while.body.i40 %byteCount.addr.199.i = phi i64 [ %dec.i41, %while.body.i40 ], [ %destByteCount, %while.cond.preheader.i32 ] @@ -1083,12 +1083,12 @@ while.body.i40: ; preds = %while.cond.preheade %add77.i = tail call i32 @llvm.fshl.i32(i32 %v3.296.i, i32 %v2.295.i, i32 24) %add80.i = tail call i32 @llvm.fshl.i32(i32 %v4.297.i, i32 %v3.296.i, i32 24) %add83.i = tail call i32 @llvm.fshl.i32(i32 %v1.294.i, i32 %v4.297.i, i32 24) - %38 = ptrtoint ptr %incdec.ptr.i42 to i64 - %and70.i = and i64 %38, 3 + %36 = ptrtoint ptr %incdec.ptr.i42 to i64 + %and70.i = and i64 %36, 3 %cmp71.i = icmp ne i64 %and70.i, 0 %cmp72.i = icmp ne i64 %dec.i41, 0 - %39 = select i1 %cmp71.i, i1 %cmp72.i, i1 false - br i1 %39, label %while.body.i40, label %while.end.i33, !llvm.loop !19 + %37 = select i1 %cmp71.i, i1 %cmp72.i, i1 false + br i1 %37, label %while.body.i40, label %while.end.i33, !llvm.loop !18 while.end.i33: ; preds = %while.body.i40, %while.cond.preheader.i32 %v1.2.lcssa.i = phi i32 [ %v1.0.i, %while.cond.preheader.i32 ], [ %add74.i, %while.body.i40 ] @@ -1097,14 +1097,14 @@ while.end.i33: ; preds = %while.body.i40, %wh %v4.2.lcssa.i = phi i32 [ %v4.0.i, %while.cond.preheader.i32 ], [ %add83.i, %while.body.i40 ] %pDestination.1.lcssa.i34 = phi ptr [ %pDestination, %while.cond.preheader.i32 ], [ %incdec.ptr.i42, %while.body.i40 ] %byteCount.addr.1.lcssa.i35 = phi i64 [ %destByteCount, %while.cond.preheader.i32 ], [ %dec.i41, %while.body.i40 ] - %.lcssa.i36 = phi i64 [ %36, %while.cond.preheader.i32 ], [ %38, %while.body.i40 ] + %.lcssa.i36 = phi i64 [ %34, %while.cond.preheader.i32 ], [ %36, %while.body.i40 ] %cmp84.i = icmp ugt i64 %byteCount.addr.1.lcssa.i35, 255 br i1 %cmp84.i, label %if.then85.i, label %if.end98.i if.then85.i: ; preds = %while.end.i33 %and86.i = lshr i64 %.lcssa.i36, 2 - %40 = and i64 %and86.i, 3 - switch i64 %40, label %default.unreachable [ + %38 = and i64 %and86.i, 3 + switch i64 %38, label %default.unreachable [ i64 3, label %sw.bb.i i64 2, label %sw.bb88.i i64 1, label %sw.bb92.i @@ -1170,7 +1170,7 @@ while.body101.i: ; preds = %while.body101.i, %w %sub105.i = add i64 %byteCount.addr.2108.i, -16 %add.ptr106.i = getelementptr inbounds nuw i8, ptr %pDestination.2107.i, i64 16 %cmp100.i = icmp ugt i64 %sub105.i, 15 - br i1 %cmp100.i, label %while.body101.i, label %while.end107.i, !llvm.loop !20 + br i1 %cmp100.i, label %while.body101.i, label %while.end107.i, !llvm.loop !19 while.end107.i: ; preds = %while.body101.i, %if.end98.i %v4.1140.i = phi i32 [ %v4.1.i, %if.end98.i ], [ %v4.1139.i, %while.body101.i ] @@ -1206,7 +1206,7 @@ while.body112.i: ; preds = %while.cond110.prehe %add.ptr113.i = getelementptr inbounds nuw i8, ptr %pDestination.3115.i, i64 4 %sub114.i = add nsw i64 %byteCount.addr.3116.i, -4 %cmp111.i = icmp ugt i64 %sub114.i, 3 - br i1 %cmp111.i, label %while.body112.i, label %for.cond.preheader.i, !llvm.loop !21 + br i1 %cmp111.i, label %while.body112.i, label %for.cond.preheader.i, !llvm.loop !20 for.body.i: ; preds = %for.body.i.preheader, %for.body.i %i.0124.i = phi i32 [ %inc.i, %for.body.i ], [ 0, %for.body.i.preheader ] @@ -1221,8 +1221,8 @@ for.body.i: ; preds = %for.body.i.preheade %inc.i = add nuw nsw i32 %i.0124.i, 1 %cmp116.i = icmp samesign ult i32 %i.0124.i, 3 %cmp118.i = icmp ne i64 %dec123.i, 0 - %41 = select i1 %cmp116.i, i1 %cmp118.i, i1 false - br i1 %41, label %for.body.i, label %sw.epilog, !llvm.loop !22 + %39 = select i1 %cmp116.i, i1 %cmp118.i, i1 false + br i1 %39, label %for.body.i, label %sw.epilog, !llvm.loop !21 sw.epilog: ; preds = %for.body.i, %while.body46.i, %while.body53.i, %while.body46.i.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i, %while.body14.i, %for.cond.preheader.i, %while.end107.i, %while.end.i29, %while.cond18.preheader.i, %if.end43.i, %while.cond51.preheader.i, %if.end43.i.i, %sw.bb ret void @@ -1244,7 +1244,7 @@ while.body: ; preds = %while.cond.preheade %incdec.ptr = getelementptr inbounds nuw i8, ptr %p.sroa.0.022, i64 2 store i16 %c, ptr %p.sroa.0.022, align 2 %cmp1 = icmp ult ptr %incdec.ptr, %add.ptr - br i1 %cmp1, label %while.body, label %if.end14, !llvm.loop !23 + br i1 %cmp1, label %while.body, label %if.end14, !llvm.loop !22 if.else: ; preds = %entry %0 = ptrtoint ptr %pDest to i64 @@ -1273,7 +1273,7 @@ while.body8: ; preds = %while.body8.prehead %incdec.ptr9 = getelementptr inbounds nuw i8, ptr %p.sroa.0.219, i64 4 store i32 %or, ptr %p.sroa.0.219, align 4 %tobool7.not = icmp eq i64 %dec6, 0 - br i1 %tobool7.not, label %while.end10, label %while.body8, !llvm.loop !24 + br i1 %tobool7.not, label %while.end10, label %while.body8, !llvm.loop !23 while.end10: ; preds = %while.body8 %cmp11 = icmp ult ptr %incdec.ptr9, %add.ptr @@ -1303,7 +1303,7 @@ while.body: ; preds = %while.cond.preheade %incdec.ptr = getelementptr inbounds nuw i8, ptr %pDest32.024, i64 4 store i32 %c, ptr %pDest32.024, align 4 %cmp1 = icmp ult ptr %incdec.ptr, %add.ptr - br i1 %cmp1, label %while.body, label %if.end15, !llvm.loop !25 + br i1 %cmp1, label %while.body, label %if.end15, !llvm.loop !24 if.else: ; preds = %entry %0 = ptrtoint ptr %pDest to i64 @@ -1332,7 +1332,7 @@ while.body7: ; preds = %while.body7.prehead store i64 %or, ptr %pDest64.022, align 8 %dec9 = add nsw i64 %count.addr.121, -1 %tobool6.not = icmp eq i64 %dec9, 0 - br i1 %tobool6.not, label %while.end10, label %while.body7, !llvm.loop !26 + br i1 %tobool6.not, label %while.end10, label %while.body7, !llvm.loop !25 while.end10: ; preds = %while.body7 %cmp11 = icmp ult ptr %incdec.ptr8, %add.ptr @@ -1358,7 +1358,7 @@ while.body: ; preds = %entry, %while.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %cur.05, i64 8 store i64 %c, ptr %cur.05, align 8 %cmp = icmp ult ptr %incdec.ptr, %add.ptr - br i1 %cmp, label %while.body, label %while.end, !llvm.loop !27 + br i1 %cmp, label %while.body, label %while.end, !llvm.loop !26 while.end: ; preds = %while.body, %entry ret ptr %pDest @@ -1382,33 +1382,32 @@ while.cond18.preheader: ; preds = %entry for.cond22.preheader.lr.ph: ; preds = %while.cond18.preheader %cmp2328.not = icmp ne i64 %sourceBytes, 0 tail call void @llvm.assume(i1 %cmp2328.not) - %5 = add i64 %sourceBytes, -1 - br label %for.cond22.preheader.us - -for.cond22.preheader.us: ; preds = %for.cond22.preheader.lr.ph, %for.cond22.while.cond18.loopexit_crit_edge.us - %count.addr.336.us = phi i64 [ %dec31.us, %for.cond22.while.cond18.loopexit_crit_edge.us ], [ %count, %for.cond22.preheader.lr.ph ] - %pDestination8.335.us = phi ptr [ %incdec.ptr29.us, %for.cond22.while.cond18.loopexit_crit_edge.us ], [ %pDestination, %for.cond22.preheader.lr.ph ] - %6 = add i64 %count.addr.336.us, -1 - %umin = tail call i64 @llvm.umin.i64(i64 %6, i64 %5) br label %for.body27.us -for.body27.us: ; preds = %for.cond22.preheader.us, %for.body27.us - %i21.032.us = phi i64 [ 0, %for.cond22.preheader.us ], [ %inc.us, %for.body27.us ] - %pSource8Temp.231.us = phi ptr [ %pSource, %for.cond22.preheader.us ], [ %incdec.ptr28.us, %for.body27.us ] - %count.addr.430.us = phi i64 [ %count.addr.336.us, %for.cond22.preheader.us ], [ %dec31.us, %for.body27.us ] - %pDestination8.429.us = phi ptr [ %pDestination8.335.us, %for.cond22.preheader.us ], [ %incdec.ptr29.us, %for.body27.us ] +for.body27.us: ; preds = %for.body27.us.backedge, %for.cond22.preheader.lr.ph + %i21.032.us = phi i64 [ 0, %for.cond22.preheader.lr.ph ], [ %i21.032.us.be, %for.body27.us.backedge ] + %pSource8Temp.231.us = phi ptr [ %pSource, %for.cond22.preheader.lr.ph ], [ %pSource8Temp.231.us.be, %for.body27.us.backedge ] + %count.addr.430.us = phi i64 [ %count, %for.cond22.preheader.lr.ph ], [ %dec31.us, %for.body27.us.backedge ] + %pDestination8.429.us = phi ptr [ %pDestination, %for.cond22.preheader.lr.ph ], [ %incdec.ptr29.us, %for.body27.us.backedge ] %incdec.ptr28.us = getelementptr inbounds nuw i8, ptr %pSource8Temp.231.us, i64 1 - %7 = load i8, ptr %pSource8Temp.231.us, align 1 + %5 = load i8, ptr %pSource8Temp.231.us, align 1 %incdec.ptr29.us = getelementptr inbounds nuw i8, ptr %pDestination8.429.us, i64 1 - store i8 %7, ptr %pDestination8.429.us, align 1 + store i8 %5, ptr %pDestination8.429.us, align 1 %inc.us = add nuw i64 %i21.032.us, 1 %dec31.us = add i64 %count.addr.430.us, -1 - %exitcond.not = icmp eq i64 %i21.032.us, %umin - br i1 %exitcond.not, label %for.cond22.while.cond18.loopexit_crit_edge.us, label %for.body27.us, !llvm.loop !28 + %cmp23.us = icmp ult i64 %inc.us, %sourceBytes + %cmp25.us = icmp ne i64 %dec31.us, 0 + %6 = select i1 %cmp23.us, i1 %cmp25.us, i1 false + br i1 %6, label %for.body27.us.backedge, label %for.cond22.while.cond18.loopexit_crit_edge.us + +for.body27.us.backedge: ; preds = %for.body27.us, %for.cond22.while.cond18.loopexit_crit_edge.us + %i21.032.us.be = phi i64 [ %inc.us, %for.body27.us ], [ 0, %for.cond22.while.cond18.loopexit_crit_edge.us ] + %pSource8Temp.231.us.be = phi ptr [ %incdec.ptr28.us, %for.body27.us ], [ %pSource, %for.cond22.while.cond18.loopexit_crit_edge.us ] + br label %for.body27.us, !llvm.loop !27 for.cond22.while.cond18.loopexit_crit_edge.us: ; preds = %for.body27.us %cmp19.not.us = icmp eq i64 %dec31.us, 0 - br i1 %cmp19.not.us, label %if.end34, label %for.cond22.preheader.us, !llvm.loop !29 + br i1 %cmp19.not.us, label %if.end34, label %for.body27.us.backedge while.cond.preheader: ; preds = %entry %cmp644 = icmp ugt i64 %count, 3 @@ -1424,19 +1423,19 @@ for.body.us: ; preds = %for.body.us, %for.c %pSource8Temp.040.us = phi ptr [ %pSource, %for.cond.preheader.lr.ph ], [ %add.ptr9.us.mux, %for.body.us ] %count.addr.139.us = phi i64 [ %count, %for.cond.preheader.lr.ph ], [ %sub.us, %for.body.us ] %pDestination8.138.us = phi ptr [ %pDestination, %for.cond.preheader.lr.ph ], [ %add.ptr.us, %for.body.us ] - %8 = load i32, ptr %pSource8Temp.040.us, align 4 - store i32 %8, ptr %pDestination8.138.us, align 4 + %7 = load i32, ptr %pSource8Temp.040.us, align 4 + store i32 %7, ptr %pDestination8.138.us, align 4 %add.ptr.us = getelementptr inbounds nuw i8, ptr %pDestination8.138.us, i64 4 %add.ptr9.us = getelementptr inbounds nuw i8, ptr %pSource8Temp.040.us, i64 4 %add.us = add i64 %i.141.us, 4 %sub.us = add i64 %count.addr.139.us, -4 %cmp7.us = icmp ult i64 %add.us, %sourceBytes %cmp8.us = icmp ugt i64 %sub.us, 3 - %9 = select i1 %cmp7.us, i1 %cmp8.us, i1 false - %brmerge = select i1 %9, i1 true, i1 %cmp8.us - %add.us.mux = select i1 %9, i64 %add.us, i64 0 - %add.ptr9.us.mux = select i1 %9, ptr %add.ptr9.us, ptr %pSource - br i1 %brmerge, label %for.body.us, label %while.end, !llvm.loop !30 + %8 = select i1 %cmp7.us, i1 %cmp8.us, i1 false + %brmerge = select i1 %8, i1 true, i1 %cmp8.us + %add.us.mux = select i1 %8, i64 %add.us, i64 0 + %add.ptr9.us.mux = select i1 %8, ptr %add.ptr9.us, ptr %pSource + br i1 %brmerge, label %for.body.us, label %while.end, !llvm.loop !28 while.end: ; preds = %for.body.us, %while.cond.preheader %pDestination8.0.lcssa = phi ptr [ %pDestination, %while.cond.preheader ], [ %add.ptr.us, %for.body.us ] @@ -1457,11 +1456,11 @@ while.body15: ; preds = %while.body15.prehea %pDestination8.254 = phi ptr [ %incdec.ptr16, %while.body15 ], [ %pDestination8.0.lcssa, %while.body15.preheader ] %dec = add i64 %count.addr.255, -1 %incdec.ptr = getelementptr inbounds nuw i8, ptr %pSource8Temp.156, i64 1 - %10 = load i8, ptr %pSource8Temp.156, align 1 + %9 = load i8, ptr %pSource8Temp.156, align 1 %incdec.ptr16 = getelementptr inbounds nuw i8, ptr %pDestination8.254, i64 1 - store i8 %10, ptr %pDestination8.254, align 1 + store i8 %9, ptr %pDestination8.254, align 1 %cmp14.not = icmp eq i64 %dec, 0 - br i1 %cmp14.not, label %if.end34, label %while.body15, !llvm.loop !31 + br i1 %cmp14.not, label %if.end34, label %while.body15, !llvm.loop !29 if.end34: ; preds = %for.cond22.while.cond18.loopexit_crit_edge.us, %while.body15, %while.cond18.preheader, %while.end ret ptr %pDestination @@ -1484,7 +1483,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %p8.06, i64 1 %dec = add i64 %byteCount.addr.05, -1 %cmp.not = icmp eq i64 %dec, 0 - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !32 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !30 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %p8.06, %for.body ] @@ -1518,7 +1517,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %p8.09, i64 1 %xor = xor i64 %i.08, 1 %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !33 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !31 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %p8.09, %for.body ] @@ -1552,7 +1551,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %p8.09, i64 1 %add = add nuw nsw i64 %i.010, 1 %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !34 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !32 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %p8.09, %for.body ] @@ -1586,7 +1585,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %p8.09, i64 1 %add = add nuw nsw i64 %i.010, 1 %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !35 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !33 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %p8.09, %for.body ] @@ -1610,7 +1609,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %p8.06, i64 1 %dec = add i64 %nCharCount.addr.05, -1 %cmp.not = icmp eq i64 %dec, 0 - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !36 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !34 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %p8.06, %for.body ] @@ -1634,7 +1633,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %pString.addr.05, i64 2 %dec = add i64 %nCharCount.addr.06, -1 %cmp.not = icmp eq i64 %dec, 0 - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !37 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !35 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %pString.addr.05, %for.body ] @@ -1658,7 +1657,7 @@ for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %pString.addr.05, i64 4 %dec = add i64 %nCharCount.addr.06, -1 %cmp.not = icmp eq i64 %dec, 0 - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !38 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !36 return: ; preds = %for.body, %for.inc, %entry %retval.0 = phi ptr [ null, %entry ], [ null, %for.inc ], [ %pString.addr.05, %for.body ] @@ -1690,7 +1689,7 @@ for.inc: ; preds = %for.body %incdec.ptr6 = getelementptr inbounds nuw i8, ptr %p2.010, i64 1 %dec = add i64 %nCharCount.addr.08, -1 %cmp.not = icmp eq i64 %dec, 0 - br i1 %cmp.not, label %return, label %for.body, !llvm.loop !39 + br i1 %cmp.not, label %return, label %for.body, !llvm.loop !37 return: ; preds = %for.inc, %entry, %if.then %retval.0 = phi i32 [ %cond, %if.then ], [ 0, %entry ], [ 0, %for.inc ] @@ -1731,7 +1730,7 @@ for.body.us: ; preds = %for.body.lr.ph, %fo for.inc.us: ; preds = %for.body.us %incdec.ptr.us = getelementptr inbounds nuw i8, ptr %pCurrent8.018.us, i64 1 %cmp4.not.us = icmp ugt ptr %incdec.ptr.us, %add.ptr1 - br i1 %cmp4.not.us, label %return, label %for.body.us, !llvm.loop !40 + br i1 %cmp4.not.us, label %return, label %for.body.us, !llvm.loop !38 for.body: ; preds = %for.body.lr.ph, %for.inc %pCurrent8.018 = phi ptr [ %incdec.ptr, %for.inc ], [ %pMemory, %for.body.lr.ph ] @@ -1753,12 +1752,12 @@ for.body.i: ; preds = %for.body, %for.inc. for.inc.i: ; preds = %for.body.i %dec.i = add i64 %nCharCount.addr.08.i, -1 %cmp.not.i = icmp eq i64 %dec.i, 0 - br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !39 + br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !37 for.inc: ; preds = %for.body.i, %for.body %incdec.ptr = getelementptr inbounds nuw i8, ptr %pCurrent8.018, i64 1 %cmp4.not = icmp ugt ptr %incdec.ptr, %add.ptr1 - br i1 %cmp4.not, label %return, label %for.body, !llvm.loop !40 + br i1 %cmp4.not, label %return, label %for.body, !llvm.loop !38 return: ; preds = %for.inc, %for.inc.i, %for.inc.us, %for.body.us, %for.cond.preheader, %entry, %if.then %retval.0 = phi ptr [ %pMemory, %if.then ], [ null, %entry ], [ null, %for.cond.preheader ], [ null, %for.inc.us ], [ %pCurrent8.018.us, %for.body.us ], [ %pCurrent8.018, %for.inc.i ], [ null, %for.inc ] @@ -1893,27 +1892,28 @@ while.cond18.preheader.i: ; preds = %entry for.cond21.preheader.us.i: ; preds = %while.cond18.preheader.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i %d.sroa.0.335.us.i = phi ptr [ %incdec.ptr28.us.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %pDestination, %while.cond18.preheader.i ] - %destByteCount.addr.334.us.i = phi i64 [ %4, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %byteCount, %while.cond18.preheader.i ] + %destByteCount.addr.334.us.i = phi i64 [ %dec29.us.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %byteCount, %while.cond18.preheader.i ] %2 = add i64 %destByteCount.addr.334.us.i, -1 - %umin.i = tail call i64 @llvm.umin.i64(i64 %2, i64 7) + %umin = tail call i64 @llvm.umin.i64(i64 %2, i64 7) br label %for.body26.us.i for.body26.us.i: ; preds = %for.body26.us.i, %for.cond21.preheader.us.i %i20.031.us.i = phi i64 [ 0, %for.cond21.preheader.us.i ], [ %inc.us.i, %for.body26.us.i ] %s.sroa.0.230.us.i = phi ptr [ %c.addr, %for.cond21.preheader.us.i ], [ %incdec.ptr27.us.i, %for.body26.us.i ] %d.sroa.0.429.us.i = phi ptr [ %d.sroa.0.335.us.i, %for.cond21.preheader.us.i ], [ %incdec.ptr28.us.i, %for.body26.us.i ] + %destByteCount.addr.428.us.i = phi i64 [ %destByteCount.addr.334.us.i, %for.cond21.preheader.us.i ], [ %dec29.us.i, %for.body26.us.i ] %incdec.ptr27.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.230.us.i, i64 1 %3 = load i8, ptr %s.sroa.0.230.us.i, align 1 %incdec.ptr28.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.429.us.i, i64 1 store i8 %3, ptr %d.sroa.0.429.us.i, align 1 + %dec29.us.i = add i64 %destByteCount.addr.428.us.i, -1 %inc.us.i = add nuw nsw i64 %i20.031.us.i, 1 - %exitcond.not.i = icmp eq i64 %i20.031.us.i, %umin.i - br i1 %exitcond.not.i, label %for.cond21.while.cond18.loopexit_crit_edge.us.i, label %for.body26.us.i, !llvm.loop !15 + %exitcond.not = icmp eq i64 %i20.031.us.i, %umin + br i1 %exitcond.not, label %for.cond21.while.cond18.loopexit_crit_edge.us.i, label %for.body26.us.i, !llvm.loop !39 for.cond21.while.cond18.loopexit_crit_edge.us.i: ; preds = %for.body26.us.i - %4 = sub i64 %2, %umin.i - %tobool.not.us.i = icmp eq i64 %4, 0 - br i1 %tobool.not.us.i, label %_ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit, label %for.cond21.preheader.us.i, !llvm.loop !16 + %tobool.not.us.i = icmp eq i64 %dec29.us.i, 0 + br i1 %tobool.not.us.i, label %_ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit, label %for.cond21.preheader.us.i, !llvm.loop !15 while.cond.preheader.i: ; preds = %entry %cmp643.i = icmp ugt i64 %byteCount, 3 @@ -1927,9 +1927,9 @@ for.body.us.i: ; preds = %for.body.us.i, %whi %destByteCount.addr.137.us.i = phi i64 [ %byteCount, %while.cond.preheader.i ], [ %sub.us.i, %for.body.us.i ] %cmp7.us.i.not = xor i1 %cmp7.us.i, true %incdec.ptr.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.039.us.i, i64 4 - %5 = load i32, ptr %s.sroa.0.039.us.i, align 4 + %4 = load i32, ptr %s.sroa.0.039.us.i, align 4 %incdec.ptr9.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.138.us.i, i64 4 - store i32 %5, ptr %d.sroa.0.138.us.i, align 4 + store i32 %4, ptr %d.sroa.0.138.us.i, align 4 %sub.us.i = add i64 %destByteCount.addr.137.us.i, -4 %cmp8.us.i = icmp ult i64 %sub.us.i, 4 %.not = select i1 %cmp7.us.i.not, i1 true, i1 %cmp8.us.i @@ -1938,7 +1938,7 @@ for.body.us.i: ; preds = %for.body.us.i, %whi %brmerge = select i1 %.not.not, i1 true, i1 %cmp8.us.i.not %.mux = select i1 %.not.not, i64 8, i64 4 %incdec.ptr.us.i.mux = select i1 %.not.not, ptr %incdec.ptr.us.i, ptr %c.addr - br i1 %brmerge, label %for.body.us.i, label %while.end.i, !llvm.loop !17 + br i1 %brmerge, label %for.body.us.i, label %while.end.i, !llvm.loop !16 while.end.i: ; preds = %for.body.us.i, %while.cond.preheader.i %destByteCount.addr.0.lcssa.i = phi i64 [ %byteCount, %while.cond.preheader.i ], [ %sub.us.i, %for.body.us.i ] @@ -1958,12 +1958,12 @@ while.body14.i: ; preds = %while.body14.i, %wh %d.sroa.0.254.i = phi ptr [ %incdec.ptr16.i, %while.body14.i ], [ %d.sroa.0.0.lcssa.i, %while.body14.preheader.i ] %destByteCount.addr.253.i = phi i64 [ %dec.i, %while.body14.i ], [ %destByteCount.addr.0.lcssa.i, %while.body14.preheader.i ] %incdec.ptr15.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.155.i, i64 1 - %6 = load i8, ptr %s.sroa.0.155.i, align 1 + %5 = load i8, ptr %s.sroa.0.155.i, align 1 %incdec.ptr16.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.254.i, i64 1 - store i8 %6, ptr %d.sroa.0.254.i, align 1 + store i8 %5, ptr %d.sroa.0.254.i, align 1 %dec.i = add nsw i64 %destByteCount.addr.253.i, -1 %cmp13.not.i = icmp eq i64 %dec.i, 0 - br i1 %cmp13.not.i, label %_ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit, label %while.body14.i, !llvm.loop !18 + br i1 %cmp13.not.i, label %_ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit, label %while.body14.i, !llvm.loop !17 _ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit: ; preds = %for.cond21.while.cond18.loopexit_crit_edge.us.i, %while.body14.i, %while.cond18.preheader.i, %while.end.i ret void @@ -1995,7 +1995,7 @@ for.body: ; preds = %entry, %for.body %incdec.ptr4 = getelementptr inbounds nuw i8, ptr %p2.010, i64 1 %dec = add i64 %byteCount.addr.08, -1 %cmp.not = icmp eq i64 %dec, 0 - br i1 %cmp.not, label %for.end.loopexit, label %for.body, !llvm.loop !41 + br i1 %cmp.not, label %for.end.loopexit, label %for.body, !llvm.loop !40 for.end.loopexit: ; preds = %for.body %2 = icmp eq i8 %or6, 0 @@ -2029,7 +2029,7 @@ while.body: ; preds = %entry, %while.body %sub3 = sub nsw i32 %conv, %conv2 %add = add nsw i32 %sub3, %and %tobool.not = icmp eq i64 %dec, 0 - br i1 %tobool.not, label %while.end, label %while.body, !llvm.loop !42 + br i1 %tobool.not, label %while.end, label %while.body, !llvm.loop !41 while.end: ; preds = %while.body, %entry %result.0.lcssa = phi i32 [ 0, %entry ], [ %add, %while.body ] @@ -2052,7 +2052,7 @@ while.body: ; preds = %entry, %while.body %conv = zext i8 %0 to i32 %or = or i32 %mask.04, %conv %tobool.not = icmp eq i64 %dec, 0 - br i1 %tobool.not, label %while.end.loopexit, label %while.body, !llvm.loop !43 + br i1 %tobool.not, label %while.end.loopexit, label %while.body, !llvm.loop !42 while.end.loopexit: ; preds = %while.body %1 = icmp eq i32 %or, 0 @@ -2069,15 +2069,15 @@ declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immar ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.fshl.i32(i32, i32, i32) #7 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #7 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.bswap.i32(i32) #7 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umin.i64(i64, i64) #7 + attributes #0 = { mustprogress nofree norecurse nosync nounwind memory(write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -2133,4 +2133,3 @@ attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessib !40 = distinct !{!40, !6} !41 = distinct !{!41, !6} !42 = distinct !{!42, !6} -!43 = distinct !{!43, !6} diff --git a/bench/graphviz/optimized/excontext.ll b/bench/graphviz/optimized/excontext.ll index 3a701a96108..6e3d131ee3c 100644 --- a/bench/graphviz/optimized/excontext.ll +++ b/bench/graphviz/optimized/excontext.ll @@ -10,46 +10,39 @@ define noundef ptr @excontext(ptr noundef %0, ptr noundef %1, i32 noundef %2) lo %4 = ptrtoint ptr %0 to i64 %5 = getelementptr inbounds nuw i8, ptr %0, i64 848 %6 = load ptr, ptr %5, align 8 - %7 = ptrtoint ptr %6 to i64 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 336 - %9 = icmp ugt ptr %6, %8 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 336 + %8 = icmp ugt ptr %6, %7 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 868 %.pre = load i32, ptr %.phi.trans.insert, align 4 - %10 = icmp eq i32 %.pre, 0 - br i1 %9, label %15, label %11 + %9 = icmp eq i32 %.pre, 0 + br i1 %8, label %14, label %10 -11: ; preds = %3 - br i1 %10, label %.loopexit, label %.thread +10: ; preds = %3 + br i1 %9, label %.loopexit, label %.thread -.thread: ; preds = %11 - %12 = sext i32 %2 to i64 - %13 = getelementptr inbounds i8, ptr %1, i64 %12 - %14 = getelementptr inbounds i8, ptr %13, i64 -5 +.thread: ; preds = %10 + %11 = sext i32 %2 to i64 + %12 = getelementptr inbounds i8, ptr %1, i64 %11 + %13 = getelementptr inbounds i8, ptr %12, i64 -5 br label %.preheader69 -15: ; preds = %3 - %16 = sext i32 %2 to i64 - %17 = getelementptr inbounds i8, ptr %1, i64 %16 - %18 = getelementptr inbounds i8, ptr %17, i64 -5 - br i1 %10, label %.preheader, label %.preheader69 +14: ; preds = %3 + %15 = sext i32 %2 to i64 + %16 = getelementptr inbounds i8, ptr %1, i64 %15 + %17 = getelementptr inbounds i8, ptr %16, i64 -5 + br i1 %9, label %.preheader, label %.preheader69 -.preheader69: ; preds = %.thread, %15 - %19 = phi ptr [ %14, %.thread ], [ %18, %15 ] - %20 = getelementptr inbounds nuw i8, ptr %0, i64 868 +.preheader69: ; preds = %.thread, %14 + %18 = phi ptr [ %13, %.thread ], [ %17, %14 ] + %19 = getelementptr inbounds nuw i8, ptr %0, i64 868 %.070 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %21 = icmp ult ptr %.070, %5 - br i1 %21, label %.lr.ph.preheader, label %.critedge - -.lr.ph.preheader: ; preds = %.preheader69 - %22 = add i64 %4, 848 - %23 = sub i64 %22, %7 - %scevgep = getelementptr i8, ptr %6, i64 %23 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %gv_isspace.exit - %.071 = phi ptr [ %.0, %gv_isspace.exit ], [ %.070, %.lr.ph.preheader ] - %24 = load i8, ptr %.071, align 1 - switch i8 %24, label %.critedge [ + %20 = icmp ult ptr %.070, %5 + br i1 %20, label %.lr.ph, label %.critedge + +.lr.ph: ; preds = %.preheader69, %gv_isspace.exit + %.071 = phi ptr [ %.0, %gv_isspace.exit ], [ %.070, %.preheader69 ] + %21 = load i8, ptr %.071, align 1 + switch i8 %21, label %.critedge [ i8 9, label %gv_isspace.exit i8 10, label %gv_isspace.exit i8 11, label %gv_isspace.exit @@ -60,140 +53,133 @@ define noundef ptr @excontext(ptr noundef %0, ptr noundef %1, i32 noundef %2) lo gv_isspace.exit: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph %.0 = getelementptr inbounds nuw i8, ptr %.071, i64 1 - %exitcond.not = icmp eq ptr %.0, %scevgep - br i1 %exitcond.not, label %.critedge, label %.lr.ph + %22 = icmp ult ptr %.0, %5 + br i1 %22, label %.lr.ph, label %.critedge .critedge: ; preds = %gv_isspace.exit, %.lr.ph, %.preheader69 - %.0.lcssa = phi ptr [ %.070, %.preheader69 ], [ %.071, %.lr.ph ], [ %scevgep, %gv_isspace.exit ] - %25 = ptrtoint ptr %.0.lcssa to i64 - %26 = ptrtoint ptr %.070 to i64 - %27 = ptrtoint ptr %19 to i64 - %28 = ptrtoint ptr %1 to i64 - %.neg60 = sub i64 %28, %27 + %.0.lcssa = phi ptr [ %.070, %.preheader69 ], [ %.071, %.lr.ph ], [ %.0, %gv_isspace.exit ] + %23 = ptrtoint ptr %.0.lcssa to i64 + %24 = ptrtoint ptr %.070 to i64 + %25 = ptrtoint ptr %18 to i64 + %26 = ptrtoint ptr %1 to i64 + %.neg60 = sub i64 %26, %25 %.neg = add i64 %.neg60, 512 - %29 = add i64 %.neg, %26 - %30 = sub i64 %29, %25 - %31 = trunc i64 %30 to i32 - %32 = icmp sgt i32 %31, 0 - %33 = and i64 %30, 2147483647 - %34 = ptrtoint ptr %5 to i64 - %35 = sub i64 %34, %25 - %36 = icmp sgt i64 %33, %35 - %37 = getelementptr inbounds nuw i8, ptr %.0.lcssa, i64 %33 - %spec.select = select i1 %36, ptr %5, ptr %37 - %.1 = select i1 %32, ptr %spec.select, ptr %.0.lcssa - %38 = icmp ult ptr %.1, %5 - br i1 %38, label %.lr.ph76.preheader, label %thread-pre-split.thread107 - -.lr.ph76.preheader: ; preds = %.critedge - %.191 = ptrtoint ptr %.1 to i64 - %39 = add i64 %4, 848 - %40 = sub i64 %39, %.191 - %scevgep92 = getelementptr i8, ptr %.1, i64 %40 - br label %.lr.ph76 - -.lr.ph76: ; preds = %.lr.ph76.preheader, %.lr.ph76 - %.275 = phi ptr [ %41, %.lr.ph76 ], [ %.1, %.lr.ph76.preheader ] - %.25374 = phi ptr [ %43, %.lr.ph76 ], [ %1, %.lr.ph76.preheader ] - %41 = getelementptr inbounds nuw i8, ptr %.275, i64 1 - %42 = load i8, ptr %.275, align 1 - %43 = getelementptr inbounds nuw i8, ptr %.25374, i64 1 - store i8 %42, ptr %.25374, align 1 - %exitcond93.not = icmp eq ptr %41, %scevgep92 - br i1 %exitcond93.not, label %thread-pre-split, label %.lr.ph76 + %27 = add i64 %.neg, %24 + %28 = sub i64 %27, %23 + %29 = trunc i64 %28 to i32 + %30 = icmp sgt i32 %29, 0 + %31 = and i64 %28, 2147483647 + %32 = ptrtoint ptr %5 to i64 + %33 = sub i64 %32, %23 + %34 = icmp sgt i64 %31, %33 + %35 = getelementptr inbounds nuw i8, ptr %.0.lcssa, i64 %31 + %spec.select = select i1 %34, ptr %5, ptr %35 + %.1 = select i1 %30, ptr %spec.select, ptr %.0.lcssa + %36 = icmp ult ptr %.1, %5 + br i1 %36, label %.lr.ph76, label %thread-pre-split.thread102 + +.lr.ph76: ; preds = %.critedge, %.lr.ph76 + %.275 = phi ptr [ %37, %.lr.ph76 ], [ %.1, %.critedge ] + %.25374 = phi ptr [ %39, %.lr.ph76 ], [ %1, %.critedge ] + %37 = getelementptr inbounds nuw i8, ptr %.275, i64 1 + %38 = load i8, ptr %.275, align 1 + %39 = getelementptr inbounds nuw i8, ptr %.25374, i64 1 + store i8 %38, ptr %.25374, align 1 + %40 = icmp ult ptr %37, %5 + br i1 %40, label %.lr.ph76, label %thread-pre-split thread-pre-split: ; preds = %.lr.ph76 - %.pr.pre = load i32, ptr %20, align 4 - %44 = icmp eq i32 %.pr.pre, 0 - br i1 %44, label %.preheader, label %thread-pre-split.thread107 - -.preheader: ; preds = %15, %thread-pre-split - %.152106 = phi ptr [ %43, %thread-pre-split ], [ %1, %15 ] - %45 = phi ptr [ %19, %thread-pre-split ], [ %18, %15 ] - %46 = load ptr, ptr %5, align 8 - %47 = ptrtoint ptr %46 to i64 - %48 = icmp ult ptr %8, %46 - br i1 %48, label %.lr.ph79.preheader, label %.critedge2 + %.pr.pre = load i32, ptr %19, align 4 + %41 = icmp eq i32 %.pr.pre, 0 + br i1 %41, label %.preheader, label %thread-pre-split.thread102 + +.preheader: ; preds = %14, %thread-pre-split + %.152101 = phi ptr [ %39, %thread-pre-split ], [ %1, %14 ] + %42 = phi ptr [ %18, %thread-pre-split ], [ %17, %14 ] + %43 = load ptr, ptr %5, align 8 + %44 = ptrtoint ptr %43 to i64 + %45 = icmp ult ptr %7, %43 + br i1 %45, label %.lr.ph79.preheader, label %.critedge2 .lr.ph79.preheader: ; preds = %.preheader - %49 = sub i64 %47, %4 - %scevgep94 = getelementptr i8, ptr %0, i64 %49 + %46 = sub i64 %44, %4 + %scevgep = getelementptr i8, ptr %0, i64 %46 br label %.lr.ph79 -thread-pre-split.thread107: ; preds = %.critedge, %thread-pre-split - %.152110 = phi ptr [ %43, %thread-pre-split ], [ %1, %.critedge ] - store i32 0, ptr %20, align 4 - %.pre100 = load ptr, ptr %5, align 8 - %.pre101 = ptrtoint ptr %.pre100 to i64 +thread-pre-split.thread102: ; preds = %.critedge, %thread-pre-split + %.152105 = phi ptr [ %39, %thread-pre-split ], [ %1, %.critedge ] + store i32 0, ptr %19, align 4 + %.pre95 = load ptr, ptr %5, align 8 + %.pre96 = ptrtoint ptr %.pre95 to i64 br label %.critedge2 -.lr.ph79: ; preds = %.lr.ph79.preheader, %51 - %.478 = phi ptr [ %52, %51 ], [ %8, %.lr.ph79.preheader ] - %50 = load i8, ptr %.478, align 1 - switch i8 %50, label %.critedge2 [ - i8 9, label %51 - i8 10, label %51 - i8 11, label %51 - i8 12, label %51 - i8 13, label %51 - i8 32, label %51 +.lr.ph79: ; preds = %.lr.ph79.preheader, %48 + %.478 = phi ptr [ %49, %48 ], [ %7, %.lr.ph79.preheader ] + %47 = load i8, ptr %.478, align 1 + switch i8 %47, label %.critedge2 [ + i8 9, label %48 + i8 10, label %48 + i8 11, label %48 + i8 12, label %48 + i8 13, label %48 + i8 32, label %48 ] -51: ; preds = %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79 - %52 = getelementptr inbounds nuw i8, ptr %.478, i64 1 - %exitcond95.not = icmp eq ptr %52, %46 - br i1 %exitcond95.not, label %.critedge2, label %.lr.ph79 - -.critedge2: ; preds = %51, %.lr.ph79, %.preheader, %thread-pre-split.thread107 - %.152105 = phi ptr [ %.152106, %.preheader ], [ %.152110, %thread-pre-split.thread107 ], [ %.152106, %.lr.ph79 ], [ %.152106, %51 ] - %53 = phi ptr [ %45, %.preheader ], [ %19, %thread-pre-split.thread107 ], [ %45, %.lr.ph79 ], [ %45, %51 ] - %.pre-phi = phi i64 [ %47, %.preheader ], [ %.pre101, %thread-pre-split.thread107 ], [ %47, %.lr.ph79 ], [ %47, %51 ] - %54 = phi ptr [ %46, %.preheader ], [ %.pre100, %thread-pre-split.thread107 ], [ %46, %.lr.ph79 ], [ %46, %51 ] - %.3 = phi ptr [ %8, %.preheader ], [ %8, %thread-pre-split.thread107 ], [ %scevgep94, %51 ], [ %.478, %.lr.ph79 ] - %55 = ptrtoint ptr %.3 to i64 - %56 = sub i64 %.pre-phi, %55 - %57 = ptrtoint ptr %53 to i64 - %58 = ptrtoint ptr %.152105 to i64 - %.neg62 = sub i64 %58, %57 - %59 = add i64 %56, %.neg62 - %60 = trunc i64 %59 to i32 - %61 = icmp sgt i32 %60, 0 - %62 = and i64 %59, 2147483647 - %.5.idx = select i1 %61, i64 %62, i64 0 +48: ; preds = %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79 + %49 = getelementptr inbounds nuw i8, ptr %.478, i64 1 + %exitcond.not = icmp eq ptr %49, %43 + br i1 %exitcond.not, label %.critedge2, label %.lr.ph79 + +.critedge2: ; preds = %48, %.lr.ph79, %.preheader, %thread-pre-split.thread102 + %.152100 = phi ptr [ %.152101, %.preheader ], [ %.152105, %thread-pre-split.thread102 ], [ %.152101, %.lr.ph79 ], [ %.152101, %48 ] + %50 = phi ptr [ %42, %.preheader ], [ %18, %thread-pre-split.thread102 ], [ %42, %.lr.ph79 ], [ %42, %48 ] + %.pre-phi = phi i64 [ %44, %.preheader ], [ %.pre96, %thread-pre-split.thread102 ], [ %44, %.lr.ph79 ], [ %44, %48 ] + %51 = phi ptr [ %43, %.preheader ], [ %.pre95, %thread-pre-split.thread102 ], [ %43, %.lr.ph79 ], [ %43, %48 ] + %.3 = phi ptr [ %7, %.preheader ], [ %7, %thread-pre-split.thread102 ], [ %scevgep, %48 ], [ %.478, %.lr.ph79 ] + %52 = ptrtoint ptr %.3 to i64 + %53 = sub i64 %.pre-phi, %52 + %54 = ptrtoint ptr %50 to i64 + %55 = ptrtoint ptr %.152100 to i64 + %.neg62 = sub i64 %55, %54 + %56 = add i64 %53, %.neg62 + %57 = trunc i64 %56 to i32 + %58 = icmp sgt i32 %57, 0 + %59 = and i64 %56, 2147483647 + %.5.idx = select i1 %58, i64 %59, i64 0 %.5 = getelementptr inbounds nuw i8, ptr %.3, i64 %.5.idx - %63 = icmp ult ptr %.5, %54 - br i1 %63, label %.lr.ph85, label %._crit_edge + %60 = icmp ult ptr %.5, %51 + br i1 %60, label %.lr.ph85, label %._crit_edge .lr.ph85: ; preds = %.critedge2, %.lr.ph85 - %.684 = phi ptr [ %64, %.lr.ph85 ], [ %.5, %.critedge2 ] - %.35483 = phi ptr [ %66, %.lr.ph85 ], [ %.152105, %.critedge2 ] - %64 = getelementptr inbounds nuw i8, ptr %.684, i64 1 - %65 = load i8, ptr %.684, align 1 - %66 = getelementptr inbounds nuw i8, ptr %.35483, i64 1 - store i8 %65, ptr %.35483, align 1 - %67 = load ptr, ptr %5, align 8 - %68 = icmp ult ptr %64, %67 - br i1 %68, label %.lr.ph85, label %._crit_edge + %.684 = phi ptr [ %61, %.lr.ph85 ], [ %.5, %.critedge2 ] + %.35483 = phi ptr [ %63, %.lr.ph85 ], [ %.152100, %.critedge2 ] + %61 = getelementptr inbounds nuw i8, ptr %.684, i64 1 + %62 = load i8, ptr %.684, align 1 + %63 = getelementptr inbounds nuw i8, ptr %.35483, i64 1 + store i8 %62, ptr %.35483, align 1 + %64 = load ptr, ptr %5, align 8 + %65 = icmp ult ptr %61, %64 + br i1 %65, label %.lr.ph85, label %._crit_edge ._crit_edge: ; preds = %.lr.ph85, %.critedge2 - %.354.lcssa = phi ptr [ %.152105, %.critedge2 ], [ %66, %.lr.ph85 ] - store ptr %8, ptr %5, align 8 + %.354.lcssa = phi ptr [ %.152100, %.critedge2 ], [ %63, %.lr.ph85 ] + store ptr %7, ptr %5, align 8 store i8 60, ptr %.354.lcssa, align 1 - br label %69 + br label %66 -69: ; preds = %._crit_edge, %69 - %.788.idx = phi i64 [ 0, %._crit_edge ], [ %.788.add, %69 ] - %.45587 = phi ptr [ %.354.lcssa, %._crit_edge ], [ %70, %69 ] +66: ; preds = %._crit_edge, %66 + %.788.idx = phi i64 [ 0, %._crit_edge ], [ %.788.add, %66 ] + %.45587 = phi ptr [ %.354.lcssa, %._crit_edge ], [ %67, %66 ] %.788.add = add nuw nsw i64 %.788.idx, 1 %.ptr = getelementptr inbounds nuw i8, ptr @.str, i64 %.788.add - %70 = getelementptr inbounds nuw i8, ptr %.45587, i64 1 - %71 = load i8, ptr %.ptr, align 1 - store i8 %71, ptr %70, align 1 - %exitcond97 = icmp eq i64 %.788.add, 4 - br i1 %exitcond97, label %.loopexit, label %69 - -.loopexit: ; preds = %69, %11 - %.051 = phi ptr [ %1, %11 ], [ %70, %69 ] + %67 = getelementptr inbounds nuw i8, ptr %.45587, i64 1 + %68 = load i8, ptr %.ptr, align 1 + store i8 %68, ptr %67, align 1 + %exitcond92 = icmp eq i64 %.788.add, 4 + br i1 %exitcond92, label %.loopexit, label %66 + +.loopexit: ; preds = %66, %10 + %.051 = phi ptr [ %1, %10 ], [ %67, %66 ] store i8 0, ptr %.051, align 1 ret ptr %.051 } diff --git a/bench/graphviz/optimized/partition.ll b/bench/graphviz/optimized/partition.ll index 54be1b2040c..55a1169a475 100644 --- a/bench/graphviz/optimized/partition.ll +++ b/bench/graphviz/optimized/partition.ll @@ -349,8 +349,8 @@ define internal fastcc void @genSegments(ptr noundef readonly captures(none) %0, %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 24 %.sroa.8.0.copyload = load double, ptr %.sroa.8.0..sroa_idx, align 8 store double %.sroa.0.0.copyload, ptr %6, align 16 - %.sroa.5.0..sroa_idx31 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store double %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx31, align 8 + %.sroa.5.0..sroa_idx30 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store double %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx30, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 32 store double %.sroa.6.0.copyload, ptr %7, align 16 %.sroa.8.16..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 40 @@ -428,8 +428,8 @@ convert.exit: ; preds = %.preheader.i, %5 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull readonly align 16 dereferenceable(16) %38, i64 16, i1 false) %indvars.iv.next43.i = add nuw nsw i64 %indvars.iv42.i, 1 %indvars.iv.next.i12 = add nuw nsw i64 %indvars.iv.i11, 1 - %exitcond.not.i13 = icmp eq i64 %indvars.iv.next.i12, 4 - br i1 %exitcond.not.i13, label %store.exit.preheader, label %21 + %exitcond.not = icmp eq i64 %indvars.iv.next.i12, 4 + br i1 %exitcond.not, label %store.exit.preheader, label %21 store.exit.preheader: ; preds = %31 %39 = icmp sgt i32 %1, 0 @@ -439,116 +439,110 @@ store.exit.preheader: ; preds = %31 %wide.trip.count = zext nneg i32 %1 to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %store.exit29 - %indvars.iv42 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next43, %store.exit29 ] - %indvars.iv = phi i64 [ 5, %.lr.ph.preheader ], [ %indvars.iv.next, %store.exit29 ] - %indvars44 = trunc i64 %indvars.iv to i32 +.lr.ph: ; preds = %.lr.ph.preheader, %store.exit28 + %indvars.iv42 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next43, %store.exit28 ] + %indvars.iv = phi i64 [ 5, %.lr.ph.preheader ], [ %indvars.iv.next, %store.exit28 ] %40 = getelementptr inbounds nuw %struct.cell, ptr %0, i64 %indvars.iv42, i32 5 - %.sroa.033.0.copyload = load double, ptr %40, align 1 - %.sroa.535.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 8 - %.sroa.535.0.copyload = load double, ptr %.sroa.535.0..sroa_idx, align 1 - %.sroa.638.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 16 - %.sroa.638.0.copyload = load double, ptr %.sroa.638.0..sroa_idx, align 1 - %.sroa.839.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 24 - %.sroa.839.0.copyload = load double, ptr %.sroa.839.0..sroa_idx, align 1 - store double %.sroa.033.0.copyload, ptr %6, align 16 - store double %.sroa.535.0.copyload, ptr %.sroa.5.0..sroa_idx31, align 8 - store double %.sroa.638.0.copyload, ptr %7, align 16 - store double %.sroa.839.0.copyload, ptr %.sroa.8.16..sroa_idx, align 8 - store double %.sroa.033.0.copyload, ptr %8, align 16 - store double %.sroa.839.0.copyload, ptr %9, align 8 - store double %.sroa.638.0.copyload, ptr %10, align 16 - store double %.sroa.535.0.copyload, ptr %11, align 8 - br i1 %.not22.i, label %convert.exit23, label %.preheader.i19 - -.preheader.i19: ; preds = %.lr.ph, %.preheader.i19 - %indvars.iv.i20 = phi i64 [ %indvars.iv.next.i21, %.preheader.i19 ], [ 0, %.lr.ph ] - %41 = getelementptr inbounds nuw %struct.pointf_s, ptr %6, i64 %indvars.iv.i20 + %.sroa.032.0.copyload = load double, ptr %40, align 1 + %.sroa.534.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 8 + %.sroa.534.0.copyload = load double, ptr %.sroa.534.0..sroa_idx, align 1 + %.sroa.637.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 16 + %.sroa.637.0.copyload = load double, ptr %.sroa.637.0..sroa_idx, align 1 + %.sroa.838.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 24 + %.sroa.838.0.copyload = load double, ptr %.sroa.838.0..sroa_idx, align 1 + store double %.sroa.032.0.copyload, ptr %6, align 16 + store double %.sroa.534.0.copyload, ptr %.sroa.5.0..sroa_idx30, align 8 + store double %.sroa.637.0.copyload, ptr %7, align 16 + store double %.sroa.838.0.copyload, ptr %.sroa.8.16..sroa_idx, align 8 + store double %.sroa.032.0.copyload, ptr %8, align 16 + store double %.sroa.838.0.copyload, ptr %9, align 8 + store double %.sroa.637.0.copyload, ptr %10, align 16 + store double %.sroa.534.0.copyload, ptr %11, align 8 + br i1 %.not22.i, label %convert.exit22, label %.preheader.i18 + +.preheader.i18: ; preds = %.lr.ph, %.preheader.i18 + %indvars.iv.i19 = phi i64 [ %indvars.iv.next.i20, %.preheader.i18 ], [ 0, %.lr.ph ] + %41 = getelementptr inbounds nuw %struct.pointf_s, ptr %6, i64 %indvars.iv.i19 %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 %43 = load double, ptr %42, align 8 %44 = load double, ptr %41, align 16 store double %44, ptr %42, align 8 %45 = fneg double %43 store double %45, ptr %41, align 16 - %indvars.iv.next.i21 = add nuw nsw i64 %indvars.iv.i20, 1 - %exitcond.not.i22 = icmp eq i64 %indvars.iv.next.i21, 4 - br i1 %exitcond.not.i22, label %convert.exit23, label %.preheader.i19 - -convert.exit23: ; preds = %.preheader.i19, %.lr.ph - %46 = add nuw i32 %indvars44, 3 - %47 = trunc i64 %indvars.iv to i32 - %48 = add i32 %47, 3 - %sext.i = sext i32 %48 to i64 - %smax.i = tail call i32 @llvm.smax.i32(i32 %indvars44, i32 %46) - %reass.sub = sub nsw i32 %smax.i, %indvars44 - %49 = add i32 %reass.sub, 1 - %wide.trip.count.i = zext i32 %49 to i64 - %50 = getelementptr inbounds %struct.segment_t, ptr %3, i64 %sext.i + %indvars.iv.next.i20 = add nuw nsw i64 %indvars.iv.i19, 1 + %exitcond.not.i21 = icmp eq i64 %indvars.iv.next.i20, 4 + br i1 %exitcond.not.i21, label %convert.exit22, label %.preheader.i18 + +convert.exit22: ; preds = %.preheader.i18, %.lr.ph + %46 = add nuw nsw i64 %indvars.iv, 3 + %47 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %46 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 44 + %49 = getelementptr inbounds nuw i8, ptr %47, i64 48 + %50 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv %51 = getelementptr inbounds nuw i8, ptr %50, i64 44 %52 = getelementptr inbounds nuw i8, ptr %50, i64 48 - %53 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv - %54 = getelementptr inbounds nuw i8, ptr %53, i64 44 - %55 = getelementptr inbounds nuw i8, ptr %53, i64 48 + %53 = trunc nuw nsw i64 %indvars.iv to i32 + %54 = trunc i64 %indvars.iv to i32 + %55 = add i32 %54, 2 %56 = trunc i64 %indvars.iv to i32 - %57 = add i32 %56, 2 - %58 = trunc i64 %indvars.iv to i32 - %59 = add i32 %58, 1 - br label %60 - -60: ; preds = %73, %convert.exit23 - %indvars.iv42.i24 = phi i64 [ %indvars.iv, %convert.exit23 ], [ %indvars.iv.next43.i26, %73 ] - %indvars.iv.i25 = phi i64 [ 0, %convert.exit23 ], [ %indvars.iv.next.i27, %73 ] - %61 = icmp eq i64 %indvars.iv42.i24, %indvars.iv - br i1 %61, label %62, label %63 - -62: ; preds = %60 - store i32 %59, ptr %54, align 4 - store i32 %48, ptr %55, align 8 - br label %73 - -63: ; preds = %60 - %64 = icmp eq i64 %indvars.iv42.i24, %sext.i - br i1 %64, label %65, label %66 - -65: ; preds = %63 - store i32 %indvars44, ptr %51, align 4 - store i32 %57, ptr %52, align 8 - br label %73 - -66: ; preds = %63 - %67 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv42.i24 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 44 - %69 = trunc i64 %indvars.iv42.i24 to i32 - %70 = add i32 %69, 1 - store i32 %70, ptr %68, align 4 - %71 = getelementptr inbounds nuw i8, ptr %67, i64 48 - %72 = add i32 %69, -1 - store i32 %72, ptr %71, align 8 - br label %73 - -73: ; preds = %66, %65, %62 - %74 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv42.i24 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 32 - store i8 0, ptr %75, align 8 - %76 = getelementptr inbounds nuw i8, ptr %74, i64 48 - %77 = load i32, ptr %76, align 8 - %78 = sext i32 %77 to i64 - %79 = getelementptr inbounds %struct.segment_t, ptr %3, i64 %78, i32 1 - %80 = getelementptr inbounds nuw %struct.pointf_s, ptr %6, i64 %indvars.iv.i25 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull readonly align 16 dereferenceable(16) %80, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull readonly align 16 dereferenceable(16) %80, i64 16, i1 false) - %indvars.iv.next43.i26 = add nuw nsw i64 %indvars.iv42.i24, 1 - %indvars.iv.next.i27 = add nuw nsw i64 %indvars.iv.i25, 1 - %exitcond.not.i28 = icmp eq i64 %indvars.iv.next.i27, %wide.trip.count.i - br i1 %exitcond.not.i28, label %store.exit29, label %60 - -store.exit29: ; preds = %73 + %57 = add i32 %56, 1 + %58 = trunc nuw i64 %46 to i32 + br label %59 + +59: ; preds = %72, %convert.exit22 + %indvars.iv42.i23 = phi i64 [ %indvars.iv, %convert.exit22 ], [ %indvars.iv.next43.i25, %72 ] + %indvars.iv.i24 = phi i64 [ 0, %convert.exit22 ], [ %indvars.iv.next.i26, %72 ] + %60 = icmp eq i64 %indvars.iv42.i23, %indvars.iv + br i1 %60, label %61, label %62 + +61: ; preds = %59 + store i32 %57, ptr %51, align 4 + store i32 %58, ptr %52, align 8 + br label %72 + +62: ; preds = %59 + %63 = icmp eq i64 %indvars.iv42.i23, %46 + br i1 %63, label %64, label %65 + +64: ; preds = %62 + store i32 %53, ptr %48, align 4 + store i32 %55, ptr %49, align 8 + br label %72 + +65: ; preds = %62 + %66 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv42.i23 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 44 + %68 = trunc i64 %indvars.iv42.i23 to i32 + %69 = add i32 %68, 1 + store i32 %69, ptr %67, align 4 + %70 = getelementptr inbounds nuw i8, ptr %66, i64 48 + %71 = add i32 %68, -1 + store i32 %71, ptr %70, align 8 + br label %72 + +72: ; preds = %65, %64, %61 + %73 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv42.i23 + %74 = getelementptr inbounds nuw i8, ptr %73, i64 32 + store i8 0, ptr %74, align 8 + %75 = getelementptr inbounds nuw i8, ptr %73, i64 48 + %76 = load i32, ptr %75, align 8 + %77 = sext i32 %76 to i64 + %78 = getelementptr inbounds %struct.segment_t, ptr %3, i64 %77, i32 1 + %79 = getelementptr inbounds nuw %struct.pointf_s, ptr %6, i64 %indvars.iv.i24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull readonly align 16 dereferenceable(16) %79, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull readonly align 16 dereferenceable(16) %79, i64 16, i1 false) + %indvars.iv.next43.i25 = add nuw nsw i64 %indvars.iv42.i23, 1 + %indvars.iv.next.i26 = add nuw nsw i64 %indvars.iv.i24, 1 + %exitcond41.not = icmp eq i64 %indvars.iv.next.i26, 4 + br i1 %exitcond41.not, label %store.exit28, label %59 + +store.exit28: ; preds = %72 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 4 %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next43, %wide.trip.count - br i1 %exitcond.not, label %store.exit._crit_edge, label %.lr.ph + %exitcond47.not = icmp eq i64 %indvars.iv.next43, %wide.trip.count + br i1 %exitcond47.not, label %store.exit._crit_edge, label %.lr.ph -store.exit._crit_edge: ; preds = %store.exit29, %store.exit.preheader +store.exit._crit_edge: ; preds = %store.exit28, %store.exit.preheader ret void } @@ -1720,9 +1714,6 @@ declare noalias noundef ptr @realloc(ptr allocptr noundef captures(none), i64 no ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #16 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #16 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #17 diff --git a/bench/hermes/optimized/hbc-attribute.ll b/bench/hermes/optimized/hbc-attribute.ll index 6b723e1ffd7..01ca77c735c 100644 --- a/bench/hermes/optimized/hbc-attribute.ll +++ b/bench/hermes/optimized/hbc-attribute.ll @@ -4515,9 +4515,6 @@ for.body.lr.ph: ; preds = %while.body %keyTag.sroa.3.0.extract.trunc = trunc nuw i64 %keyTag.sroa.3.0.extract.shift to i32 %conv3.i = and i32 %keyTag.sroa.3.0.extract.trunc, 255 %2 = call i32 @llvm.fshl.i32(i32 %conv3.i, i32 %conv3.i, i32 28) - %3 = add i32 %count.addr.093, -1 - %4 = add nsw i32 %keyTag.sroa.0.0.extract.trunc, -1 - %umin = call i32 @llvm.umin.i32(i32 %3, i32 %4) br label %for.body for.body: ; preds = %for.body.lr.ph, %_ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit @@ -4526,11 +4523,11 @@ for.body: ; preds = %for.body.lr.ph, %_Z %keyInd.187 = phi i32 [ %add, %for.body.lr.ph ], [ %keyInd.2, %_ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit ] %idx.ext.i = zext i32 %keyInd.187 to i64 %add.ptr.i = getelementptr inbounds nuw i8, ptr %array.coerce0, i64 %idx.ext.i - %5 = load i64, ptr %bundleStart_, align 8 - %idx.neg.i = sub i64 0, %5 + %3 = load i64, ptr %bundleStart_, align 8 + %idx.neg.i = sub i64 0, %3 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i - %6 = ptrtoint ptr %add.ptr2.i to i64 - %conv.i = trunc i64 %6 to i32 + %4 = ptrtoint ptr %add.ptr2.i to i64 + %conv.i = trunc i64 %4 to i32 switch i32 %2, label %_ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit [ i32 6, label %sw.bb.i i32 5, label %sw.bb7.i @@ -4554,37 +4551,37 @@ sw.bb.i: ; preds = %for.body if.end3.i71: ; preds = %sw.bb.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i64) %call.i.i.i.i72 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i64) - %7 = load ptr, ptr %ConstFoundBucket.i.i.i.i64, align 8 + %5 = load ptr, ptr %ConstFoundBucket.i.i.i.i64, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i64) br i1 %call.i.i.i.i72, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77, label %if.end.i.i.i73 if.end.i.i.i73: ; preds = %if.end3.i71 - %call.i2.i.i.i74 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef %7) + %call.i2.i.i.i74 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i74, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, i64 16, i1 false) - %8 = load i32, ptr %second.i.i68, align 8 + %6 = load i32, ptr %second.i.i68, align 8 %second3.i.i.i.i.i75 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i74, i64 16 - store i32 %8, ptr %second3.i.i.i.i.i75, align 8 + store i32 %6, ptr %second3.i.i.i.i.i75, align 8 %second.i6.i.i.i.i76 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i74, i64 24 store i32 0, ptr %second.i6.i.i.i.i76, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77: ; preds = %if.end.i.i.i73, %if.end3.i71 - %retval.0.i.i.i78 = phi ptr [ %call.i2.i.i.i74, %if.end.i.i.i73 ], [ %7, %if.end3.i71 ] + %retval.0.i.i.i78 = phi ptr [ %call.i2.i.i.i74, %if.end.i.i.i73 ], [ %5, %if.end3.i71 ] %second.i7.i79 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i78, i64 24 store i32 1, ptr %second.i7.i79, align 4 + %7 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %7) #22 + %8 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr nonnull @.str.28, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %8, ptr nonnull @.str.43, i64 29) #22 %9 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %9) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %9, ptr nonnull @.str.29, i64 8) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %9, i32 noundef %conv.i) #22 %10 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %10, ptr nonnull @.str.28, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %10, ptr nonnull @.str.43, i64 29) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %10, ptr nonnull @.str.30, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %10, i32 noundef 1) #22 %11 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %11, ptr nonnull @.str.29, i64 8) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %11, i32 noundef %conv.i) #22 - %12 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %12, ptr nonnull @.str.30, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %12, i32 noundef 1) #22 - %13 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %13) #22 + call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %11) #22 br label %_ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit81 _ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit81: ; preds = %sw.bb.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77 @@ -4608,37 +4605,37 @@ sw.bb7.i: ; preds = %for.body if.end3.i53: ; preds = %sw.bb7.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i46) %call.i.i.i.i54 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i46) - %14 = load ptr, ptr %ConstFoundBucket.i.i.i.i46, align 8 + %12 = load ptr, ptr %ConstFoundBucket.i.i.i.i46, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i46) br i1 %call.i.i.i.i54, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59, label %if.end.i.i.i55 if.end.i.i.i55: ; preds = %if.end3.i53 - %call.i2.i.i.i56 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef %14) + %call.i2.i.i.i56 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i56, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, i64 16, i1 false) - %15 = load i32, ptr %second.i.i50, align 8 + %13 = load i32, ptr %second.i.i50, align 8 %second3.i.i.i.i.i57 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i56, i64 16 - store i32 %15, ptr %second3.i.i.i.i.i57, align 8 + store i32 %13, ptr %second3.i.i.i.i.i57, align 8 %second.i6.i.i.i.i58 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i56, i64 24 store i32 0, ptr %second.i6.i.i.i.i58, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59: ; preds = %if.end.i.i.i55, %if.end3.i53 - %retval.0.i.i.i60 = phi ptr [ %call.i2.i.i.i56, %if.end.i.i.i55 ], [ %14, %if.end3.i53 ] + %retval.0.i.i.i60 = phi ptr [ %call.i2.i.i.i56, %if.end.i.i.i55 ], [ %12, %if.end3.i53 ] %second.i7.i61 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i60, i64 24 store i32 2, ptr %second.i7.i61, align 4 + %14 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %14) #22 + %15 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %15, ptr nonnull @.str.28, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %15, ptr nonnull @.str.44, i64 30) #22 %16 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %16) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %16, ptr nonnull @.str.29, i64 8) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %16, i32 noundef %conv.i) #22 %17 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %17, ptr nonnull @.str.28, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %17, ptr nonnull @.str.44, i64 30) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %17, ptr nonnull @.str.30, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %17, i32 noundef 2) #22 %18 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %18, ptr nonnull @.str.29, i64 8) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %18, i32 noundef %conv.i) #22 - %19 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %19, ptr nonnull @.str.30, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %19, i32 noundef 2) #22 - %20 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %20) #22 + call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %18) #22 br label %_ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit63 _ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit63: ; preds = %sw.bb7.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59 @@ -4662,37 +4659,37 @@ sw.bb15.i: ; preds = %for.body if.end3.i35: ; preds = %sw.bb15.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i28) %call.i.i.i.i36 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i28) - %21 = load ptr, ptr %ConstFoundBucket.i.i.i.i28, align 8 + %19 = load ptr, ptr %ConstFoundBucket.i.i.i.i28, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i28) br i1 %call.i.i.i.i36, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41, label %if.end.i.i.i37 if.end.i.i.i37: ; preds = %if.end3.i35 - %call.i2.i.i.i38 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef %21) + %call.i2.i.i.i38 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef %19) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i38, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, i64 16, i1 false) - %22 = load i32, ptr %second.i.i32, align 8 + %20 = load i32, ptr %second.i.i32, align 8 %second3.i.i.i.i.i39 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i38, i64 16 - store i32 %22, ptr %second3.i.i.i.i.i39, align 8 + store i32 %20, ptr %second3.i.i.i.i.i39, align 8 %second.i6.i.i.i.i40 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i38, i64 24 store i32 0, ptr %second.i6.i.i.i.i40, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41: ; preds = %if.end.i.i.i37, %if.end3.i35 - %retval.0.i.i.i42 = phi ptr [ %call.i2.i.i.i38, %if.end.i.i.i37 ], [ %21, %if.end3.i35 ] + %retval.0.i.i.i42 = phi ptr [ %call.i2.i.i.i38, %if.end.i.i.i37 ], [ %19, %if.end3.i35 ] %second.i7.i43 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i42, i64 24 store i32 4, ptr %second.i7.i43, align 4 + %21 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %21) #22 + %22 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %22, ptr nonnull @.str.28, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %22, ptr nonnull @.str.45, i64 29) #22 %23 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %23) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %23, ptr nonnull @.str.29, i64 8) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %23, i32 noundef %conv.i) #22 %24 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %24, ptr nonnull @.str.28, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %24, ptr nonnull @.str.45, i64 29) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %24, ptr nonnull @.str.30, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %24, i32 noundef 4) #22 %25 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %25, ptr nonnull @.str.29, i64 8) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %25, i32 noundef %conv.i) #22 - %26 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %26, ptr nonnull @.str.30, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %26, i32 noundef 4) #22 - %27 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %27) #22 + call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %25) #22 br label %_ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit45 _ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit45: ; preds = %sw.bb15.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41 @@ -4713,37 +4710,37 @@ _ZN4llvh9StringRefC2EPKc.exit58.i: ; preds = %for.body if.end3.i17: ; preds = %_ZN4llvh9StringRefC2EPKc.exit58.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i10) %call.i.i.i.i18 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i10) - %28 = load ptr, ptr %ConstFoundBucket.i.i.i.i10, align 8 + %26 = load ptr, ptr %ConstFoundBucket.i.i.i.i10, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i10) br i1 %call.i.i.i.i18, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23, label %if.end.i.i.i19 if.end.i.i.i19: ; preds = %if.end3.i17 - %call.i2.i.i.i20 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef %28) + %call.i2.i.i.i20 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef %26) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i20, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, i64 16, i1 false) - %29 = load i32, ptr %second.i.i14, align 8 + %27 = load i32, ptr %second.i.i14, align 8 %second3.i.i.i.i.i21 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i20, i64 16 - store i32 %29, ptr %second3.i.i.i.i.i21, align 8 + store i32 %27, ptr %second3.i.i.i.i.i21, align 8 %second.i6.i.i.i.i22 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i20, i64 24 store i32 0, ptr %second.i6.i.i.i.i22, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23: ; preds = %if.end.i.i.i19, %if.end3.i17 - %retval.0.i.i.i24 = phi ptr [ %call.i2.i.i.i20, %if.end.i.i.i19 ], [ %28, %if.end3.i17 ] + %retval.0.i.i.i24 = phi ptr [ %call.i2.i.i.i20, %if.end.i.i.i19 ], [ %26, %if.end3.i17 ] %second.i7.i25 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i24, i64 24 store i32 8, ptr %second.i7.i25, align 4 + %28 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %28) #22 + %29 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %29, ptr nonnull @.str.28, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %29, ptr nonnull @.str.46, i64 25) #22 %30 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %30) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %30, ptr nonnull @.str.29, i64 8) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %30, i32 noundef %conv.i) #22 %31 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %31, ptr nonnull @.str.28, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %31, ptr nonnull @.str.46, i64 25) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %31, ptr nonnull @.str.30, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %31, i32 noundef 8) #22 %32 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %32, ptr nonnull @.str.29, i64 8) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %32, i32 noundef %conv.i) #22 - %33 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %33, ptr nonnull @.str.30, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %33, i32 noundef 8) #22 - %34 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %34) #22 + call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %32) #22 br label %_ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit27 _ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit27: ; preds = %_ZN4llvh9StringRefC2EPKc.exit58.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23 @@ -4763,37 +4760,37 @@ _ZN4llvh9StringRefC2EPKc.exit68.i: ; preds = %for.body if.end3.i: ; preds = %_ZN4llvh9StringRefC2EPKc.exit68.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i) %call.i.i.i.i = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i) - %35 = load ptr, ptr %ConstFoundBucket.i.i.i.i, align 8 + %33 = load ptr, ptr %ConstFoundBucket.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i) br i1 %call.i.i.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i, label %if.end.i.i.i if.end.i.i.i: ; preds = %if.end3.i - %call.i2.i.i.i = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef %35) + %call.i2.i.i.i = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef %33) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, i64 16, i1 false) - %36 = load i32, ptr %second.i.i, align 8 + %34 = load i32, ptr %second.i.i, align 8 %second3.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i, i64 16 - store i32 %36, ptr %second3.i.i.i.i.i, align 8 + store i32 %34, ptr %second3.i.i.i.i.i, align 8 %second.i6.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i, i64 24 store i32 0, ptr %second.i6.i.i.i.i, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i: ; preds = %if.end.i.i.i, %if.end3.i - %retval.0.i.i.i = phi ptr [ %call.i2.i.i.i, %if.end.i.i.i ], [ %35, %if.end3.i ] + %retval.0.i.i.i = phi ptr [ %call.i2.i.i.i, %if.end.i.i.i ], [ %33, %if.end3.i ] %second.i7.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 24 store i32 4, ptr %second.i7.i, align 4 + %35 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %35) #22 + %36 = load ptr, ptr %emitter_.i, align 8 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %36, ptr nonnull @.str.28, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %36, ptr nonnull @.str.47, i64 22) #22 %37 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter8openDictEv(ptr noundef nonnull align 8 dereferenceable(72) %37) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %37, ptr nonnull @.str.29, i64 8) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %37, i32 noundef %conv.i) #22 %38 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %38, ptr nonnull @.str.28, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %38, ptr nonnull @.str.47, i64 22) #22 + call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %38, ptr nonnull @.str.30, i64 4) #22 + call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %38, i32 noundef 4) #22 %39 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %39, ptr nonnull @.str.29, i64 8) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %39, i32 noundef %conv.i) #22 - %40 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter7emitKeyEN4llvh9StringRefE(ptr noundef nonnull align 8 dereferenceable(72) %40, ptr nonnull @.str.30, i64 4) #22 - call void @_ZN6hermes11JSONEmitter9emitValueEj(ptr noundef nonnull align 8 dereferenceable(72) %40, i32 noundef 4) #22 - %41 = load ptr, ptr %emitter_.i, align 8 - call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %41) #22 + call void @_ZN6hermes11JSONEmitter9closeDictEv(ptr noundef nonnull align 8 dereferenceable(72) %39) #22 br label %_ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit _ZN12_GLOBAL__N_112UsageCounter12appendRecordEN4llvh9StringRefEjj.exit: ; preds = %_ZN4llvh9StringRefC2EPKc.exit68.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i @@ -4809,8 +4806,10 @@ _ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit: ; preds = % %keyInd.2 = phi i32 [ %keyInd.187, %for.body ], [ %add27.i, %sw.epilog.sink.split.i ] %dec = add nsw i32 %count.addr.188, -1 %inc = add nuw nsw i32 %i.089, 1 - %exitcond.not = icmp eq i32 %i.089, %umin - br i1 %exitcond.not, label %while.cond.loopexit, label %for.body, !llvm.loop !37 + %cmp8 = icmp slt i32 %inc, %keyTag.sroa.0.0.extract.trunc + %tobool = icmp ne i32 %dec, 0 + %40 = select i1 %cmp8, i1 %tobool, i1 false + br i1 %40, label %for.body, label %while.cond.loopexit, !llvm.loop !37 while.end: ; preds = %while.cond.loopexit, %entry ret void @@ -5014,9 +5013,6 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #21 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #21 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #18 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #18 diff --git a/bench/icu/optimized/msgfmt.ll b/bench/icu/optimized/msgfmt.ll index a2427f1c956..fdea5e075c3 100644 --- a/bench/icu/optimized/msgfmt.ll +++ b/bench/icu/optimized/msgfmt.ll @@ -1530,8 +1530,8 @@ if.end38: ; preds = %for.body for.inc: ; preds = %if.end38 %inc = add nuw nsw i32 %idx.023, 1 - %exitcond.not = icmp eq i32 %inc, %call22 - br i1 %exitcond.not, label %return, label %for.body, !llvm.loop !7 + %cmp28 = icmp slt i32 %inc, %call22 + br i1 %cmp28, label %for.body, label %return, !llvm.loop !7 return: ; preds = %for.body, %if.end38, %for.inc, %if.end27, %if.end9, %if.end20, %if.end3, %lor.lhs.false, %if.end, %entry %retval.0 = phi i1 [ true, %entry ], [ false, %if.end ], [ false, %lor.lhs.false ], [ false, %if.end3 ], [ %not.cmp14.not.not, %if.end9 ], [ false, %if.end20 ], [ true, %if.end27 ], [ false, %for.body ], [ false, %if.end38 ], [ true, %for.inc ] diff --git a/bench/icu/optimized/ubidi_props.ll b/bench/icu/optimized/ubidi_props.ll index e4cfbe42d1e..8504dbf2ca3 100644 --- a/bench/icu/optimized/ubidi_props.ll +++ b/bench/icu/optimized/ubidi_props.ll @@ -48,45 +48,37 @@ for.cond4: ; preds = %for.cond4.preheader %limit.0 = phi i32 [ 68900, %if.end18 ], [ 2252, %for.cond4.preheader ] %jgArray.0 = phi ptr [ @_ZL20ubidi_props_jgArray2, %if.end18 ], [ @_ZL19ubidi_props_jgArray, %for.cond4.preheader ] %cmp517 = icmp samesign ult i32 %start.0, %limit.0 - br i1 %cmp517, label %while.body.preheader, label %if.end18 - -while.body.preheader: ; preds = %for.cond4 - %scevgep = getelementptr i8, ptr %jgArray.0, i64 3 - %4 = add nsw i32 %limit.0, -4 - %5 = sub nsw i32 %4, %start.0 - %6 = zext i32 %5 to i64 - %scevgep22 = getelementptr i8, ptr %scevgep, i64 %6 - br label %while.body - -while.body: ; preds = %while.body.preheader, %if.end11 - %prev.020 = phi i8 [ %prev.1, %if.end11 ], [ 0, %while.body.preheader ] - %jgArray.119 = phi ptr [ %incdec.ptr, %if.end11 ], [ %jgArray.0, %while.body.preheader ] - %start.118 = phi i32 [ %inc12, %if.end11 ], [ %start.0, %while.body.preheader ] + br i1 %cmp517, label %while.body, label %if.end18 + +while.body: ; preds = %for.cond4, %if.end11 + %prev.020 = phi i8 [ %prev.1, %if.end11 ], [ 0, %for.cond4 ] + %jgArray.119 = phi ptr [ %incdec.ptr, %if.end11 ], [ %jgArray.0, %for.cond4 ] + %start.118 = phi i32 [ %inc12, %if.end11 ], [ %start.0, %for.cond4 ] %incdec.ptr = getelementptr inbounds nuw i8, ptr %jgArray.119, i64 1 - %7 = load i8, ptr %jgArray.119, align 1 - %cmp7.not = icmp eq i8 %7, %prev.020 + %4 = load i8, ptr %jgArray.119, align 1 + %cmp7.not = icmp eq i8 %4, %prev.020 br i1 %cmp7.not, label %if.end11, label %if.then8 if.then8: ; preds = %while.body - %8 = load ptr, ptr %add9, align 8 - %9 = load ptr, ptr %sa, align 8 - tail call void %8(ptr noundef %9, i32 noundef %start.118) + %5 = load ptr, ptr %add9, align 8 + %6 = load ptr, ptr %sa, align 8 + tail call void %5(ptr noundef %6, i32 noundef %start.118) br label %if.end11 if.end11: ; preds = %if.then8, %while.body - %prev.1 = phi i8 [ %7, %if.then8 ], [ %prev.020, %while.body ] + %prev.1 = phi i8 [ %4, %if.then8 ], [ %prev.020, %while.body ] %inc12 = add nuw nsw i32 %start.118, 1 - %exitcond23.not = icmp eq ptr %jgArray.119, %scevgep22 - br i1 %exitcond23.not, label %while.end, label %while.body, !llvm.loop !6 + %cmp5 = icmp samesign ult i32 %inc12, %limit.0 + br i1 %cmp5, label %while.body, label %while.end, !llvm.loop !6 while.end: ; preds = %if.end11 - %10 = icmp eq i8 %prev.1, 0 - br i1 %10, label %if.end18, label %if.then15 + %7 = icmp eq i8 %prev.1, 0 + br i1 %7, label %if.end18, label %if.then15 if.then15: ; preds = %while.end - %11 = load ptr, ptr %add9, align 8 - %12 = load ptr, ptr %sa, align 8 - tail call void %11(ptr noundef %12, i32 noundef %limit.0) + %8 = load ptr, ptr %add9, align 8 + %9 = load ptr, ptr %sa, align 8 + tail call void %8(ptr noundef %9, i32 noundef %limit.0) br label %if.end18 if.end18: ; preds = %for.cond4, %if.then15, %while.end diff --git a/bench/libevent/optimized/http.ll b/bench/libevent/optimized/http.ll index ab78346ff11..50205ada4e4 100644 --- a/bench/libevent/optimized/http.ll +++ b/bench/libevent/optimized/http.ll @@ -9314,8 +9314,6 @@ return: ; preds = %land.lhs.true10.i, ; Function Attrs: nounwind uwtable define internal fastcc range(i32 0, 3) i32 @bracket_addr_ok(ptr noundef nonnull %s, ptr noundef nonnull %eos) unnamed_addr #0 { entry: - %eos43 = ptrtoint ptr %eos to i64 - %s42 = ptrtoint ptr %s to i64 %buf = alloca [64 x i8], align 16 %in6 = alloca %struct.in6_addr, align 4 %add.ptr = getelementptr inbounds nuw i8, ptr %s, i64 3 @@ -9348,14 +9346,10 @@ if.then11: ; preds = %if.end while.cond.preheader: ; preds = %if.then11 %cmp1531 = icmp ult ptr %add.ptr12, %add.ptr4 - br i1 %cmp1531, label %land.rhs.preheader, label %while.endthread-pre-split + br i1 %cmp1531, label %land.rhs, label %while.endthread-pre-split -land.rhs.preheader: ; preds = %while.cond.preheader - %scevgep = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %eos43 - br label %land.rhs - -land.rhs: ; preds = %land.rhs.preheader, %if.then22 - %s.addr.032 = phi ptr [ %incdec.ptr23, %if.then22 ], [ %add.ptr12, %land.rhs.preheader ] +land.rhs: ; preds = %while.cond.preheader, %if.then22 + %s.addr.032 = phi ptr [ %incdec.ptr23, %if.then22 ], [ %add.ptr12, %while.cond.preheader ] %4 = load i8, ptr %s.addr.032, align 1 %cmp18.not = icmp eq i8 %4, 46 br i1 %cmp18.not, label %while.cond31.preheader, label %while.body @@ -9367,11 +9361,11 @@ while.body: ; preds = %land.rhs if.then22: ; preds = %while.body %incdec.ptr23 = getelementptr inbounds nuw i8, ptr %s.addr.032, i64 1 - %exitcond.not = icmp eq ptr %incdec.ptr23, %scevgep - br i1 %exitcond.not, label %while.endthread-pre-split, label %land.rhs, !llvm.loop !43 + %cmp15 = icmp ult ptr %incdec.ptr23, %add.ptr4 + br i1 %cmp15, label %land.rhs, label %while.endthread-pre-split, !llvm.loop !43 while.endthread-pre-split: ; preds = %if.then22, %while.cond.preheader - %s.addr.0.lcssa = phi ptr [ %add.ptr12, %while.cond.preheader ], [ %scevgep, %if.then22 ] + %s.addr.0.lcssa = phi ptr [ %add.ptr12, %while.cond.preheader ], [ %incdec.ptr23, %if.then22 ] %.pr = load i8, ptr %s.addr.0.lcssa, align 1 %5 = icmp eq i8 %.pr, 46 br i1 %5, label %while.cond31.preheader, label %return @@ -9380,14 +9374,10 @@ while.cond31.preheader: ; preds = %land.rhs, %while.en %s.addr.030 = phi ptr [ %s.addr.0.lcssa, %while.endthread-pre-split ], [ %s.addr.032, %land.rhs ] %s.addr.133 = getelementptr inbounds nuw i8, ptr %s.addr.030, i64 1 %cmp3234 = icmp ult ptr %s.addr.133, %add.ptr4 - br i1 %cmp3234, label %while.body34.preheader, label %return + br i1 %cmp3234, label %while.body34, label %return -while.body34.preheader: ; preds = %while.cond31.preheader - %scevgep45 = getelementptr i8, ptr inttoptr (i64 -1 to ptr), i64 %eos43 - br label %while.body34 - -while.body34: ; preds = %while.body34.preheader, %if.then46 - %s.addr.135 = phi ptr [ %s.addr.1, %if.then46 ], [ %s.addr.133, %while.body34.preheader ] +while.body34: ; preds = %while.cond31.preheader, %if.then46 + %s.addr.135 = phi ptr [ %s.addr.1, %if.then46 ], [ %s.addr.133, %while.cond31.preheader ] %6 = load i8, ptr %s.addr.135, align 1 %idxprom = zext i8 %6 to i64 %arrayidx35 = getelementptr inbounds nuw [256 x i8], ptr @uri_chars, i64 0, i64 %idxprom @@ -9407,11 +9397,13 @@ lor.lhs.false38: ; preds = %while.body34 if.then46: ; preds = %lor.lhs.false38, %while.body34 %s.addr.1 = getelementptr inbounds nuw i8, ptr %s.addr.135, i64 1 - %exitcond46.not = icmp eq ptr %s.addr.1, %scevgep45 - br i1 %exitcond46.not, label %return, label %while.body34, !llvm.loop !44 + %cmp32 = icmp ult ptr %s.addr.1, %add.ptr4 + br i1 %cmp32, label %while.body34, label %return, !llvm.loop !44 if.else51: ; preds = %if.end - %sub.ptr.sub = sub i64 %eos43, %s42 + %sub.ptr.lhs.cast = ptrtoint ptr %eos to i64 + %sub.ptr.rhs.cast = ptrtoint ptr %s to i64 + %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp52 = icmp sgt i64 %sub.ptr.sub, 65 br i1 %cmp52, label %return, label %if.end55 diff --git a/bench/linux/optimized/indirect.ll b/bench/linux/optimized/indirect.ll index 12ce1a7a284..0d915f14bff 100644 --- a/bench/linux/optimized/indirect.ll +++ b/bench/linux/optimized/indirect.ll @@ -59,32 +59,32 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %8 = alloca i32, align 4 %9 = alloca [4 x i32], align 16 %10 = alloca [4 x %struct.Indirect], align 16 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #12 + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %7, i8 0, i64 56, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #12 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #11 store i32 -5, ptr %8, align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #12 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #12 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #11 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %10, i8 0, i64 96, i1 false), !annotation !6 %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 %12 = load i32, ptr %11, align 8 %13 = getelementptr inbounds nuw i8, ptr %2, i64 12 %14 = load i32, ptr %13, align 4 - callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_enter, i64 8), i32 2) #12 + callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_enter, i64 8), i32 2) #11 to label %35 [label %15], !srcloc !7 15: ; preds = %4 - %16 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #12, !srcloc !8 + %16 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #11, !srcloc !8 %17 = zext i32 %16 to i64 - %18 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %17) #12, !srcloc !9 + %18 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %17) #11, !srcloc !9 %19 = icmp ult i8 %18, 2 tail call void @llvm.assume(i1 %19) %20 = icmp eq i8 %18, 0 br i1 %20, label %35, label %21 21: ; preds = %15 - tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #12, !srcloc !10 - tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !11 + tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #11, !srcloc !10 + tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !11 %22 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_enter, i64 72), align 8 %23 = icmp eq ptr %22, null br i1 %23, label %28, label %24 @@ -92,12 +92,12 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no 24: ; preds = %21 %25 = getelementptr inbounds nuw i8, ptr %22, i64 8 %26 = load ptr, ptr %25, align 8 - %27 = tail call i32 @__SCT__tp_func_ext4_ind_map_blocks_enter(ptr noundef %26, ptr noundef %1, i32 noundef %12, i32 noundef %14, i32 noundef %3) #12 + %27 = tail call i32 @__SCT__tp_func_ext4_ind_map_blocks_enter(ptr noundef %26, ptr noundef %1, i32 noundef %12, i32 noundef %14, i32 noundef %3) #11 br label %28 28: ; preds = %24, %21 - tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !12 - %29 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #12, !srcloc !13 + tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !12 + %29 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #11, !srcloc !13 %30 = icmp ult i8 %29, 2 tail call void @llvm.assume(i1 %30) %31 = icmp eq i8 %29, 0 @@ -105,7 +105,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no 32: ; preds = %28 %33 = tail call i64 @llvm.read_register.i64(metadata !0) - %34 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %33) #12, !srcloc !15 + %34 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %33) #11, !srcloc !15 tail call void @llvm.write_register.i64(metadata !0, i64 %34) br label %35 @@ -117,9 +117,9 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %39, label %42, label %40, !prof !14 40: ; preds = %35 - %41 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 546, ptr noundef nonnull @.str.2) #13 - tail call void asm sideeffect "2048: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2048b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2048) #12, !srcloc !16 - tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 546, i32 0, i64 12) #12, !srcloc !17 + %41 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 546, ptr noundef nonnull @.str.2) #12 + tail call void asm sideeffect "2048: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2048b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2048) #11, !srcloc !16 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 546, i32 0, i64 12) #11, !srcloc !17 unreachable 42: ; preds = %35 @@ -130,9 +130,9 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %46, label %47, label %49, !prof !18 47: ; preds = %42 - %48 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 547, ptr noundef nonnull @.str.3) #13 - tail call void asm sideeffect "2049: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2049b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2049) #12, !srcloc !19 - tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 547, i32 0, i64 12) #12, !srcloc !20 + %48 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 547, ptr noundef nonnull @.str.3) #12 + tail call void asm sideeffect "2049: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2049b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2049) #11, !srcloc !19 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 547, i32 0, i64 12) #11, !srcloc !20 unreachable 49: ; preds = %42 @@ -215,7 +215,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %99 = add nsw i64 %98, %96 %100 = getelementptr inbounds nuw i8, ptr %1, i64 64 %101 = load i64, ptr %100, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %52, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %99, i64 noundef %101) #12 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %52, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %99, i64 noundef %101) #11 br label %.loopexit 102: ; preds = %67, %72, %77, %87 @@ -325,7 +325,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %178, label %180, label %179 179: ; preds = %169 - call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_map_blocks, i32 noundef 604, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.4) #12 + call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_map_blocks, i32 noundef 604, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.4) #11 store i32 -117, ptr %8, align 4 br label %.loopexit @@ -413,7 +413,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br label %229 227: ; preds = %223 - %228 = call i64 @ext4_inode_to_goal_block(ptr noundef %1) #12 + %228 = call i64 @ext4_inode_to_goal_block(ptr noundef %1) #11 br label %229 229: ; preds = %227, %224, %221 @@ -431,7 +431,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %240 = add i32 %239, -1 %241 = load i32, ptr %13, align 4 %242 = icmp sgt i32 %240, 0 - br i1 %242, label %254, label %243 + br i1 %242, label %251, label %243 243: ; preds = %229 %244 = icmp ult i32 %241, 2 @@ -443,45 +443,43 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %248 = load ptr, ptr %107, align 8 %249 = zext i32 %241 to i64 %250 = zext i32 %106 to i64 - %251 = add nsw i64 %250, -1 - %252 = add nsw i64 %249, -2 - %umin = call i64 @llvm.umin.i64(i64 %251, i64 %252) - %253 = add nuw nsw i64 %umin, 2 - br label %257 - -254: ; preds = %229 - %255 = sub i32 %.ph32, %104 - %256 = call i32 @llvm.umin.i32(i32 %255, i32 %241) - br label %267 - -257: ; preds = %262, %247 - %258 = phi i64 [ %263, %262 ], [ 1, %247 ] - %259 = getelementptr i32, ptr %248, i64 %258 - %260 = load i32, ptr %259, align 4 - %261 = icmp eq i32 %260, 0 - br i1 %261, label %262, label %264 + br label %254 -262: ; preds = %257 - %263 = add nuw nsw i64 %258, 1 - %exitcond = icmp eq i64 %263, %253 - br i1 %exitcond, label %264, label %257, !llvm.loop !25 +251: ; preds = %229 + %252 = sub i32 %.ph32, %104 + %253 = call i32 @llvm.umin.i32(i32 %252, i32 %241) + br label %267 -264: ; preds = %262, %257 - %265 = phi i64 [ %258, %257 ], [ %253, %262 ] +254: ; preds = %259, %247 + %255 = phi i64 [ %260, %259 ], [ 1, %247 ] + %256 = getelementptr i32, ptr %248, i64 %255 + %257 = load i32, ptr %256, align 4 + %258 = icmp eq i32 %257, 0 + br i1 %258, label %259, label %264 + +259: ; preds = %254 + %260 = add nuw nsw i64 %255, 1 + %261 = icmp samesign uge i64 %260, %249 + %262 = icmp samesign uge i64 %255, %250 + %263 = or i1 %262, %261 + br i1 %263, label %264, label %254, !llvm.loop !25 + +264: ; preds = %259, %254 + %265 = phi i64 [ %255, %254 ], [ %260, %259 ] %266 = trunc i64 %265 to i32 br label %267 -267: ; preds = %264, %254, %243 - %268 = phi i32 [ %256, %254 ], [ 1, %243 ], [ %266, %264 ] +267: ; preds = %264, %251, %243 + %268 = phi i32 [ %253, %251 ], [ 1, %243 ], [ %266, %264 ] %269 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i32 %268, ptr %269, align 8 %270 = ptrtoint ptr %10 to i64 %271 = sub i64 %236, %270 %272 = sdiv exact i64 %271, 6 %273 = getelementptr i8, ptr %9, i64 %272 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #12 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 32, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11 store i32 0, ptr %6, align 4, !annotation !6 %274 = icmp slt i32 %240, 0 br i1 %274, label %.thread34, label %275 @@ -499,7 +497,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %282, label %283, label %285 283: ; preds = %279 - %284 = call i64 @ext4_mb_new_blocks(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %6) #12 + %284 = call i64 @ext4_mb_new_blocks(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %6) #11 store i64 %284, ptr %278, align 8 br label %296 @@ -508,7 +506,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %287 = load i64, ptr %232, align 8 %288 = load i32, ptr %276, align 8 %289 = and i32 %288, 1024 - %290 = call i64 @ext4_new_meta_blocks(ptr noundef %0, ptr noundef %286, i64 noundef %287, i32 noundef %289, ptr noundef null, ptr noundef nonnull %6) #12 + %290 = call i64 @ext4_new_meta_blocks(ptr noundef %0, ptr noundef %286, i64 noundef %287, i32 noundef %289, ptr noundef null, ptr noundef nonnull %6) #11 %291 = sext i32 %281 to i64 %292 = getelementptr [4 x i64], ptr %5, i64 0, i64 %291 store i64 %290, ptr %292, align 8 @@ -560,7 +558,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %327 = load i32, ptr %326, align 8 %328 = and i32 %327, -32905 %329 = or disjoint i32 %328, 32776 - %330 = call ptr @bdev_getblk(ptr noundef %318, i64 noundef %316, i32 noundef %321, i32 noundef %329) #12 + %330 = call ptr @bdev_getblk(ptr noundef %318, i64 noundef %316, i32 noundef %321, i32 noundef %329) #11 %331 = getelementptr inbounds nuw i8, ptr %306, i64 16 store ptr %330, ptr %331, align 8 %332 = icmp eq ptr %330, null @@ -571,28 +569,28 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br label %.loopexit41 334: ; preds = %309 - %335 = call i32 @__SCT__might_resched() #12 - %336 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btsq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %330, i64 2, ptr nonnull elementtype(i64) %330) #12, !srcloc !26 + %335 = call i32 @__SCT__might_resched() #11 + %336 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btsq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %330, i64 2, ptr nonnull elementtype(i64) %330) #11, !srcloc !26 %337 = icmp ult i8 %336, 2 call void @llvm.assume(i1 %337) %338 = icmp eq i8 %336, 0 br i1 %338, label %340, label %339 339: ; preds = %334 - call void @__lock_buffer(ptr noundef nonnull %330) #12 + call void @__lock_buffer(ptr noundef nonnull %330) #11 br label %340 340: ; preds = %339, %334 %341 = load ptr, ptr %7, align 8 %342 = getelementptr inbounds nuw i8, ptr %341, i64 40 %343 = load ptr, ptr %342, align 8 - %344 = call i32 @__ext4_journal_get_create_access(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 365, ptr noundef %0, ptr noundef %343, ptr noundef nonnull %330, i32 noundef 1) #12 + %344 = call i32 @__ext4_journal_get_create_access(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 365, ptr noundef %0, ptr noundef %343, ptr noundef nonnull %330, i32 noundef 1) #11 store i32 %344, ptr %6, align 4 %345 = icmp eq i32 %344, 0 br i1 %345, label %347, label %346 346: ; preds = %340 - call void @unlock_buffer(ptr noundef nonnull %330) #12 + call void @unlock_buffer(ptr noundef nonnull %330) #11 br label %.loopexit41 347: ; preds = %340 @@ -631,13 +629,13 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %370, label %371, label %372 371: ; preds = %.loopexit40 - call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) %330, i32 1, ptr nonnull elementtype(i8) %330) #12, !srcloc !28 + call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; orb ${1:b},$0", "=*m,iq,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i8) %330, i32 1, ptr nonnull elementtype(i8) %330) #11, !srcloc !28 br label %372 372: ; preds = %371, %.loopexit40 - call void @unlock_buffer(ptr noundef nonnull %330) #12 + call void @unlock_buffer(ptr noundef nonnull %330) #11 %373 = load ptr, ptr %7, align 8 - %374 = call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 385, ptr noundef %0, ptr noundef %373, ptr noundef nonnull %330) #12 + %374 = call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 385, ptr noundef %0, ptr noundef %373, ptr noundef nonnull %330) #11 store i32 %374, ptr %6, align 4 %375 = icmp eq i32 %374, 0 br i1 %375, label %376, label %.loopexit41 @@ -660,7 +658,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %386 = load i64, ptr %385, align 8 %387 = load i32, ptr %269, align 8 %388 = zext i32 %387 to i64 - call void @ext4_free_blocks(ptr noundef %0, ptr noundef %383, ptr noundef null, i64 noundef %386, i64 noundef %388, i32 noundef 0) #12 + call void @ext4_free_blocks(ptr noundef %0, ptr noundef %383, ptr noundef null, i64 noundef %386, i64 noundef %388, i32 noundef 0) #11 %389 = add i32 %239, -2 br label %390 @@ -685,20 +683,20 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %404 = load i64, ptr %403, align 8 %405 = icmp eq ptr %402, null %406 = select i1 %405, i32 0, i32 2 - call void @ext4_free_blocks(ptr noundef %0, ptr noundef %397, ptr noundef %402, i64 noundef %404, i64 noundef 1, i32 noundef %406) #12 + call void @ext4_free_blocks(ptr noundef %0, ptr noundef %397, ptr noundef %402, i64 noundef %404, i64 noundef 1, i32 noundef %406) #11 %407 = add nsw i64 %396, -1 %.not = icmp eq i64 %396, 0 br i1 %.not, label %.loopexit38, label %395, !llvm.loop !30 .thread34: ; preds = %376, %267 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #11 br label %410 .loopexit38: ; preds = %395, %390 %408 = load i32, ptr %6, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #11 store i32 %408, ptr %8, align 4 %409 = icmp eq i32 %408, 0 br i1 %409, label %410, label %.thread35 @@ -719,7 +717,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %191, label %.loopexit36, label %418 418: ; preds = %413 - call void @ext4_da_update_reserve_space(ptr noundef %1, i32 noundef %417, i32 noundef 1) #12 + call void @ext4_da_update_reserve_space(ptr noundef %1, i32 noundef %417, i32 noundef 1) #11 br label %.loopexit36 .loopexit36: ; preds = %122, %117, %418, %413 @@ -763,7 +761,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %440, label %442, label %441 441: ; preds = %.preheader - call void @__brelse(ptr noundef nonnull %439) #12 + call void @__brelse(ptr noundef nonnull %439) #11 br label %442 442: ; preds = %441, %.preheader @@ -773,21 +771,21 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no .loopexit: ; preds = %442, %95, %.thread35, %179 %445 = load i32, ptr %8, align 4 - callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_exit, i64 8), i32 2) #12 + callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_exit, i64 8), i32 2) #11 to label %466 [label %446], !srcloc !7 446: ; preds = %.loopexit - %447 = call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #12, !srcloc !32 + %447 = call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 12)) #11, !srcloc !32 %448 = zext i32 %447 to i64 - %449 = call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %448) #12, !srcloc !9 + %449 = call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %448) #11, !srcloc !9 %450 = icmp ult i8 %449, 2 call void @llvm.assume(i1 %450) %451 = icmp eq i8 %449, 0 br i1 %451, label %466, label %452 452: ; preds = %446 - call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #12, !srcloc !10 - call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !33 + call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #11, !srcloc !10 + call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !33 %453 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_exit, i64 72), align 8 %454 = icmp eq ptr %453, null br i1 %454, label %459, label %455 @@ -795,12 +793,12 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no 455: ; preds = %452 %456 = getelementptr inbounds nuw i8, ptr %453, i64 8 %457 = load ptr, ptr %456, align 8 - %458 = call i32 @__SCT__tp_func_ext4_ind_map_blocks_exit(ptr noundef %457, ptr noundef %1, i32 noundef %3, ptr noundef %2, i32 noundef %445) #12 + %458 = call i32 @__SCT__tp_func_ext4_ind_map_blocks_exit(ptr noundef %457, ptr noundef %1, i32 noundef %3, ptr noundef %2, i32 noundef %445) #11 br label %459 459: ; preds = %455, %452 - call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #12, !srcloc !34 - %460 = call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #12, !srcloc !13 + call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !34 + %460 = call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds nuw (i8, ptr @pcpu_hot, i64 8)) #11, !srcloc !13 %461 = icmp ult i8 %460, 2 call void @llvm.assume(i1 %461) %462 = icmp eq i8 %460, 0 @@ -808,15 +806,15 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no 463: ; preds = %459 %464 = call i64 @llvm.read_register.i64(metadata !0) - %465 = call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %464) #12, !srcloc !35 + %465 = call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %464) #11, !srcloc !35 call void @llvm.write_register.i64(metadata !0, i64 %465) br label %466 466: ; preds = %463, %459, %446, %.loopexit - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #12 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #12 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #12 - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #12 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #11 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #11 + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #11 ret i32 %445 } @@ -902,23 +900,23 @@ define internal fastcc noundef ptr @ext4_get_branch(ptr noundef %0, i32 noundef %58 = load i32, ptr %57, align 8 %59 = and i32 %58, -32905 %60 = or disjoint i32 %59, 32776 - %61 = tail call ptr @bdev_getblk(ptr noundef %50, i64 noundef %29, i32 noundef %52, i32 noundef %60) #12 + %61 = tail call ptr @bdev_getblk(ptr noundef %50, i64 noundef %29, i32 noundef %52, i32 noundef %60) #11 %62 = icmp eq ptr %61, null br i1 %62, label %.loopexit3, label %63, !prof !18 63: ; preds = %49 - %64 = tail call i32 @bh_uptodate_or_lock(ptr noundef nonnull %61) #12 + %64 = tail call i32 @bh_uptodate_or_lock(ptr noundef nonnull %61) #11 %65 = icmp eq i32 %64, 0 br i1 %65, label %66, label %83 66: ; preds = %63 - %67 = tail call i32 @ext4_read_bh(ptr noundef nonnull %61, i32 noundef 0, ptr noundef null) #12 + %67 = tail call i32 @ext4_read_bh(ptr noundef nonnull %61, i32 noundef 0, ptr noundef null) #11 %68 = icmp slt i32 %67, 0 br i1 %68, label %69, label %71 69: ; preds = %66 %70 = getelementptr inbounds nuw i8, ptr %61, i64 96 - tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0", "=*m,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) %70, ptr nonnull elementtype(i32) %70) #12, !srcloc !36 + tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0", "=*m,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) %70, ptr nonnull elementtype(i32) %70) #11, !srcloc !36 br label %.loopexit3 71: ; preds = %66 @@ -929,13 +927,13 @@ define internal fastcc noundef ptr @ext4_get_branch(ptr noundef %0, i32 noundef %76 = load i64, ptr %75, align 8 %77 = lshr i64 %76, 2 %78 = trunc i64 %77 to i32 - %79 = tail call i32 @ext4_check_blockref(ptr noundef nonnull @__func__.ext4_get_branch, i32 noundef 178, ptr noundef %0, ptr noundef %73, i32 noundef %78) #12 + %79 = tail call i32 @ext4_check_blockref(ptr noundef nonnull @__func__.ext4_get_branch, i32 noundef 178, ptr noundef %0, ptr noundef %73, i32 noundef %78) #11 %80 = icmp eq i32 %79, 0 br i1 %80, label %83, label %81 81: ; preds = %71 %82 = getelementptr inbounds nuw i8, ptr %61, i64 96 - tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0", "=*m,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) %82, ptr nonnull elementtype(i32) %82) #12, !srcloc !36 + tail call void asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0", "=*m,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) %82, ptr nonnull elementtype(i32) %82) #11, !srcloc !36 br label %.loopexit3 83: ; preds = %71, %63 @@ -982,7 +980,7 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado %9 = load ptr, ptr %1, align 8 %10 = getelementptr inbounds nuw i8, ptr %9, i64 40 %11 = load ptr, ptr %10, align 8 - %12 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 441, ptr noundef %0, ptr noundef %11, ptr noundef nonnull %6, i32 noundef 1) #12 + %12 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 441, ptr noundef %0, ptr noundef %11, ptr noundef nonnull %6, i32 noundef 1) #11 %13 = icmp eq i32 %12, 0 br i1 %13, label %14, label %40 @@ -1020,12 +1018,12 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado br i1 %32, label %37, label %34 34: ; preds = %.loopexit5 - %35 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 472, ptr noundef %0, ptr noundef %33, ptr noundef nonnull %31) #12 + %35 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 472, ptr noundef %0, ptr noundef %33, ptr noundef nonnull %31) #11 %36 = icmp eq i32 %35, 0 br i1 %36, label %58, label %40 37: ; preds = %.loopexit5 - %38 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %33, ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 479) #12 + %38 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %33, ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 479) #11 %39 = icmp eq i32 %38, 0 br i1 %39, label %58, label %40, !prof !14 @@ -1040,7 +1038,7 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado %45 = sext i32 %43 to i64 %46 = getelementptr %struct.Indirect, ptr %2, i64 %45, i32 2 %47 = load ptr, ptr %46, align 8 - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %44, ptr noundef %47, i64 noundef 0, i64 noundef 1, i32 noundef 2) #12 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %44, ptr noundef %47, i64 noundef 0, i64 noundef 1, i32 noundef 2) #11 %48 = add i32 %43, 1 %49 = icmp sgt i32 %48, %3 br i1 %49, label %.loopexit, label %.preheader, !llvm.loop !39 @@ -1054,7 +1052,7 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado %55 = getelementptr inbounds nuw i8, ptr %1, i64 8 %56 = load i32, ptr %55, align 8 %57 = zext i32 %56 to i64 - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %50, ptr noundef null, i64 noundef %54, i64 noundef %57, i32 noundef 0) #12 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %50, ptr noundef null, i64 noundef %54, i64 noundef %57, i32 noundef 0) #11 br label %58 58: ; preds = %.loopexit, %37, %34 @@ -1131,11 +1129,11 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u %8 = load ptr, ptr %7, align 8 %9 = getelementptr inbounds nuw i8, ptr %8, i64 24 %10 = load i64, ptr %9, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #12 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #12 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %4, i8 0, i64 96, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #12 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11 store i32 0, ptr %5, align 4 %11 = getelementptr inbounds nuw i8, ptr %1, i64 80 %12 = load i64, ptr %11, align 8 @@ -1229,7 +1227,7 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u %72 = add nsw i64 %71, %69 %73 = getelementptr inbounds nuw i8, ptr %1, i64 64 %74 = load i64, ptr %73, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %8, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %72, i64 noundef %74) #12 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %8, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %72, i64 noundef %74) #11 br label %190 .thread: ; preds = %60, %50, %45, %40, %2 @@ -1237,7 +1235,7 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u %76 = phi i1 [ false, %2 ], [ false, %60 ], [ false, %50 ], [ false, %45 ], [ true, %40 ] %77 = phi i32 [ 0, %2 ], [ 4, %60 ], [ 3, %50 ], [ 2, %45 ], [ 1, %40 ] %78 = xor i32 %20, -1 - tail call void @ext4_es_remove_extent(ptr noundef %1, i32 noundef %20, i32 noundef %78) #12 + tail call void @ext4_es_remove_extent(ptr noundef %1, i32 noundef %20, i32 noundef %78) #11 %79 = load i64, ptr %11, align 8 %80 = getelementptr i8, ptr %1, i64 -48 store i64 %79, ptr %80, align 8 @@ -1370,7 +1368,7 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u br i1 %166, label %168, label %167 167: ; preds = %152 - call void @__brelse(ptr noundef nonnull %165) #12 + call void @__brelse(ptr noundef nonnull %165) #11 br label %168 168: ; preds = %167, %152 @@ -1430,9 +1428,9 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u br label %190 190: ; preds = %68, %188, %184, %.thread27, %.thread - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12 - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #12 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #11 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #11 ret void } @@ -1442,7 +1440,7 @@ declare dso_local void @ext4_es_remove_extent(ptr noundef, i32 noundef, i32 noun ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define internal fastcc ptr @ext4_find_shared(ptr noundef %0, i32 noundef range(i32 0, 5) %1, ptr noundef readonly captures(none) %2, ptr noundef %3, ptr noundef writeonly captures(none) initializes((0, 4)) %4) unnamed_addr #0 align 16 { %6 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11 store i32 0, ptr %4, align 4 %7 = getelementptr i8, ptr %2, i64 -4 %8 = icmp samesign ugt i32 %1, 1 @@ -1543,7 +1541,7 @@ define internal fastcc ptr @ext4_find_shared(ptr noundef %0, i32 noundef range(i br i1 %61, label %63, label %62 62: ; preds = %.preheader - tail call void @__brelse(ptr noundef nonnull %60) #12 + tail call void @__brelse(ptr noundef nonnull %60) #11 br label %63 63: ; preds = %62, %.preheader @@ -1553,7 +1551,7 @@ define internal fastcc ptr @ext4_find_shared(ptr noundef %0, i32 noundef range(i .loopexit: ; preds = %63, %55, %27 %66 = phi ptr [ %23, %27 ], [ %23, %55 ], [ %64, %63 ] - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 ret ptr %66 } @@ -1610,17 +1608,17 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %40, label %53, label %41 41: ; preds = %36 - %42 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %39, i32 noundef 1) #12 + %42 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %39, i32 noundef 1) #11 %43 = icmp eq i32 %42, 0 br i1 %43, label %44, label %45 44: ; preds = %41 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1030, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.9, i64 noundef %39, i32 noundef %22) #12 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1030, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.9, i64 noundef %39, i32 noundef %22) #11 br label %.critedge10 45: ; preds = %41 %46 = load ptr, ptr %25, align 8 - %47 = tail call ptr @ext4_sb_bread(ptr noundef %46, i64 noundef %39, i32 noundef 0) #12 + %47 = tail call ptr @ext4_sb_bread(ptr noundef %46, i64 noundef %39, i32 noundef 0) #11 %48 = icmp ugt ptr %47, inttoptr (i64 -4096 to ptr) br i1 %48, label %49, label %56 @@ -1628,7 +1626,7 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, %50 = ptrtoint ptr %47 to i64 %51 = trunc i64 %50 to i32 %52 = sub i32 0, %51 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1043, i64 noundef %39, i32 noundef %52, ptr noundef nonnull @.str.10) #12 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1043, i64 noundef %39, i32 noundef %52, ptr noundef nonnull @.str.10) #11 br label %53 53: ; preds = %87, %83, %82, %49, %36 @@ -1645,7 +1643,7 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %60, label %62, label %61 61: ; preds = %56 - tail call void @__brelse(ptr noundef nonnull %47) #12 + tail call void @__brelse(ptr noundef nonnull %47) #11 br label %62 62: ; preds = %61, %56 @@ -1680,18 +1678,18 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %81, label %.critedge10, label %82 82: ; preds = %.critedge - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %39, i64 noundef 1, i32 noundef 3) #12 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %39, i64 noundef 1, i32 noundef 3) #11 br i1 %35, label %53, label %83 83: ; preds = %82 %84 = load ptr, ptr %25, align 8 - %85 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1102, ptr noundef %0, ptr noundef %84, ptr noundef nonnull %2, i32 noundef 1) #12 + %85 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1102, ptr noundef %0, ptr noundef %84, ptr noundef nonnull %2, i32 noundef 1) #11 %86 = icmp eq i32 %85, 0 br i1 %86, label %87, label %53 87: ; preds = %83 store i32 0, ptr %37, align 4 - %88 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1108, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #12 + %88 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1108, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #11 br label %53 89: ; preds = %21 @@ -1701,7 +1699,7 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, 91: ; preds = %89 %92 = getelementptr inbounds nuw i8, ptr %1, i64 40 %93 = load ptr, ptr %92, align 8 - %94 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 938, ptr noundef %0, ptr noundef %93, ptr noundef nonnull %2, i32 noundef 1) #12 + %94 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 938, ptr noundef %0, ptr noundef %93, ptr noundef nonnull %2, i32 noundef 1) #11 %95 = icmp eq i32 %94, 0 br i1 %95, label %96, label %.critedge10 @@ -1783,13 +1781,13 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %146, label %149, label %147 147: ; preds = %143, %135 - %148 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 985, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #12 + %148 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 985, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #11 br label %.critedge10 149: ; preds = %143 %150 = getelementptr inbounds nuw i8, ptr %2, i64 24 %151 = load i64, ptr %150, align 8 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 990, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.7, i64 noundef %151) #12 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 990, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.7, i64 noundef %151) #11 br label %.critedge10 .critedge10: ; preds = %67, %63, %.critedge, %70, %53, %149, %147, %.thread.i, %91, %44, %24, %16, %13, %8 @@ -1809,15 +1807,15 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef %13 = load ptr, ptr %12, align 8 %14 = getelementptr inbounds nuw i8, ptr %13, i64 24 %15 = load i64, ptr %14, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #12 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #12 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #12 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #11 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #11 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %7, i8 0, i64 96, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #12 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #11 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %8, i8 0, i64 96, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #12 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11 store i32 0, ptr %9, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #12 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #11 store i32 0, ptr %10, align 4 %16 = getelementptr inbounds nuw i8, ptr %13, i64 872 %17 = load ptr, ptr %16, align 8 @@ -1909,7 +1907,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef %73 = add nsw i64 %72, %70 %74 = getelementptr inbounds nuw i8, ptr %1, i64 64 %75 = load i64, ptr %74, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %13, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %73, i64 noundef %75) #12 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %13, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %73, i64 noundef %75) #11 %.pre = load ptr, ptr %12, align 8 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 24 %.pre103 = load i64, ptr %.phi.trans.insert, align 8 @@ -1996,7 +1994,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef %114 = add nsw i64 %113, %111 %115 = getelementptr inbounds nuw i8, ptr %1, i64 64 %116 = load i64, ptr %115, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %79, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %114, i64 noundef %116) #12 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %79, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %114, i64 noundef %116) #11 br label %117 117: ; preds = %110, %102, %92, %87 @@ -2008,8 +2006,8 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br i1 %80, label %120, label %.thread122, !prof !18 120: ; preds = %.thread121, %117 - tail call void asm sideeffect "2053: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2053b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2053) #12, !srcloc !48 - tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 1259, i32 0, i64 12) #12, !srcloc !49 + tail call void asm sideeffect "2053: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2053b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2053) #11, !srcloc !48 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 1259, i32 0, i64 12) #11, !srcloc !49 unreachable .thread122: ; preds = %.thread121 @@ -2423,7 +2421,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br i1 %396, label %398, label %397 397: ; preds = %.preheader66 - call void @__brelse(ptr noundef nonnull %395) #12 + call void @__brelse(ptr noundef nonnull %395) #11 br label %398 398: ; preds = %397, %.preheader66 @@ -2439,7 +2437,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br i1 %404, label %406, label %405 405: ; preds = %.preheader64 - call void @__brelse(ptr noundef nonnull %403) #12 + call void @__brelse(ptr noundef nonnull %403) #11 br label %406 406: ; preds = %405, %.preheader64 @@ -2512,12 +2510,12 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br label %.loopexit70 .thread: ; preds = %406, %139, %.thread122, %.loopexit, %149, %148, %4 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #12 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12 - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #12 - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #12 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #11 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #11 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #11 ret i32 0 } @@ -2606,7 +2604,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun br i1 %16, label %17, label %22 17: ; preds = %12 - %18 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #12 + %18 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #11 %19 = and i32 %18, 1 %20 = icmp eq i32 %19, 0 %21 = select i1 %20, i32 4, i32 6 @@ -2615,12 +2613,12 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun 22: ; preds = %17, %12, %7, %7 %23 = phi i32 [ 7, %7 ], [ 7, %7 ], [ 7, %12 ], [ %21, %17 ] %24 = trunc i64 %4 to i32 - %25 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %3, i32 noundef %24) #12 + %25 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %3, i32 noundef %24) #11 %26 = icmp eq i32 %25, 0 br i1 %26, label %27, label %28 27: ; preds = %22 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 883, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.8, i64 noundef %3, i64 noundef %4) #12 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 883, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.8, i64 noundef %3, i64 noundef %4) #11 br label %66 28: ; preds = %22 @@ -2635,7 +2633,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun br i1 %36, label %50, label %37 37: ; preds = %28 - %38 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #12 + %38 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #11 %39 = and i32 %38, 1 %40 = icmp eq i32 %39, 0 br i1 %40, label %50, label %41 @@ -2672,12 +2670,12 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun br label %63 63: ; preds = %56, %54 - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %3, i64 noundef %4, i32 noundef %23) #12 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %3, i64 noundef %4, i32 noundef %23) #11 br label %66 64: ; preds = %50 %65 = load ptr, ptr %29, align 8 - tail call void @__ext4_std_error(ptr noundef %65, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 898, i32 noundef %52) #12 + tail call void @__ext4_std_error(ptr noundef %65, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 898, i32 noundef %52) #11 br label %66 66: ; preds = %64, %63, %27 @@ -2730,7 +2728,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr %38 = tail call i32 @llvm.umin.i32(i32 %37, i32 64) %39 = add nuw nsw i32 %38, %31 %40 = add nuw nsw i32 %39, %28 - %41 = tail call i32 @__ext4_journal_ensure_credits(ptr noundef %0, i32 noundef 12, i32 noundef %40, i32 noundef %3) #12 + %41 = tail call i32 @__ext4_journal_ensure_credits(ptr noundef %0, i32 noundef 12, i32 noundef %40, i32 noundef %3) #11 %42 = icmp slt i32 %41, 1 br i1 %42, label %.thread10, label %43 @@ -2739,12 +2737,12 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr br i1 %44, label %48, label %45 45: ; preds = %43 - %46 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 703, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #12 + %46 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 703, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #11 %47 = icmp eq i32 %46, 0 br i1 %47, label %48, label %60, !prof !14 48: ; preds = %45, %43 - %49 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 707) #12 + %49 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 707) #11 %50 = icmp eq i32 %49, 0 br i1 %50, label %51, label %60, !prof !14 @@ -2758,14 +2756,14 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr br i1 %57, label %58, label %.thread, !prof !18 58: ; preds = %51 - tail call void asm sideeffect "2052: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2052b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2052) #12, !srcloc !55 - tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 716, i32 0, i64 12) #12, !srcloc !56 + tail call void asm sideeffect "2052: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2052b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2052) #11, !srcloc !55 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 716, i32 0, i64 12) #11, !srcloc !56 unreachable .thread: ; preds = %51 - tail call void @ext4_discard_preallocations(ptr noundef %1) #12 + tail call void @ext4_discard_preallocations(ptr noundef %1) #11 %59 = getelementptr i8, ptr %1, i64 -40 - tail call void @up_write(ptr noundef %59) #12 + tail call void @up_write(ptr noundef %59) #11 br label %63 60: ; preds = %48, %45 @@ -2817,7 +2815,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr %98 = select i1 %97, i32 12, i32 24 %99 = add nuw nsw i32 %95, %98 %100 = add nuw nsw i32 %99, %86 - %101 = tail call i32 @jbd2__journal_restart(ptr noundef %0, i32 noundef %100, i32 noundef %3, i32 noundef 3136) #12 + %101 = tail call i32 @jbd2__journal_restart(ptr noundef %0, i32 noundef %100, i32 noundef %3, i32 noundef 3136) #11 br label %102 102: ; preds = %85, %88 @@ -2827,7 +2825,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr 105: ; preds = %102 %106 = getelementptr i8, ptr %1, i64 -40 - tail call void @down_write(ptr noundef %106) #12 + tail call void @down_write(ptr noundef %106) #11 br label %107 107: ; preds = %105, %102 @@ -2839,7 +2837,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr 110: ; preds = %109 %111 = load ptr, ptr %7, align 8 - %112 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_ind_truncate_ensure_credits, i32 noundef 749, ptr noundef %0, ptr noundef %111, ptr noundef nonnull %2, i32 noundef 1) #12 + %112 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_ind_truncate_ensure_credits, i32 noundef 749, ptr noundef %0, ptr noundef %111, ptr noundef nonnull %2, i32 noundef 1) #11 %113 = icmp eq i32 %112, 0 br i1 %113, label %114, label %.thread10, !prof !14 @@ -2887,9 +2885,6 @@ declare i32 @llvm.umax.i32(i32, i32) #10 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #10 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #11 - attributes #0 = { fn_ret_thunk_extern nounwind null_pointer_is_valid "min-legal-vector-width"="0" "no-jump-tables"="true" "no-trapping-math"="true" "patchable-function-entry"="0" "patchable-function-prefix"="16" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } @@ -2901,9 +2896,8 @@ attributes #7 = { mustprogress nocallback nofree nosync nounwind willreturn memo attributes #8 = { nocallback nounwind } attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #10 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { nounwind } -attributes #13 = { cold nounwind } +attributes #11 = { nounwind } +attributes #12 = { cold nounwind } !llvm.named.register.rsp = !{!0} !llvm.module.flags = !{!1, !2, !3, !4, !5} diff --git a/bench/llvm/optimized/SemaConcept.ll b/bench/llvm/optimized/SemaConcept.ll index 2f437e30981..654348fac69 100644 --- a/bench/llvm/optimized/SemaConcept.ll +++ b/bench/llvm/optimized/SemaConcept.ll @@ -9182,14 +9182,14 @@ define dso_local noundef zeroext i1 @_ZN5clang4Sema22IsAtLeastAsConstrainedEPNS_ 23: ; preds = %7 %24 = zext i1 %22 to i8 store i8 %24, ptr %6, align 1, !tbaa !748 - br label %192 + br label %188 25: ; preds = %7 br i1 %22, label %26, label %27 26: ; preds = %25 store i8 1, ptr %6, align 1, !tbaa !748 - br label %192 + br label %188 27: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #25 @@ -9274,7 +9274,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPN5clang9NamedDeclES5_EbNS_12DenseMa %85 = getelementptr inbounds nuw i8, ptr %.sroa.0.1.i, i64 16 %86 = load i8, ptr %85, align 8, !tbaa !1075, !range !699, !noundef !700 store i8 %86, ptr %6, align 1, !tbaa !748 - br label %191 + br label %187 87: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPN5clang9NamedDeclES5_EbNS_12DenseMapInfoIS6_vEENS_6detail12DenseMapPairIS6_bEEEES6_bS8_SB_E4findERKS6_.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) @@ -9361,197 +9361,189 @@ _ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38: %131 = getelementptr inbounds nuw i8, ptr %15, i64 8 %132 = getelementptr inbounds nuw i8, ptr %15, i64 32 %133 = getelementptr inbounds nuw i8, ptr %15, i64 24 - br i1 %124, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us.preheader, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split + br i1 %124, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split -_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us.preheader: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38 - %134 = add i64 %21, -1 - %135 = add i64 %3, -1 - %umin67 = call i64 @llvm.umin.i64(i64 %134, i64 %135) - br label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us - -_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us.preheader, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us - %.02260.us = phi i64 [ %143, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us.preheader ] +_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us + %.02260.us = phi i64 [ %141, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38 ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15) #25 store ptr %0, ptr %15, align 8, !tbaa !775 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %131, i8 0, i64 20, i1 false) store i32 %130, ptr %132, align 8, !tbaa !1077 - %136 = getelementptr inbounds nuw ptr, ptr %2, i64 %.02260.us - %137 = load ptr, ptr %136, align 8, !tbaa !773 - %138 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %137) - %139 = and i64 %138, -2 - %140 = inttoptr i64 %139 to ptr - store ptr %140, ptr %136, align 8, !tbaa !773 + %134 = getelementptr inbounds nuw ptr, ptr %2, i64 %.02260.us + %135 = load ptr, ptr %134, align 8, !tbaa !773 + %136 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %135) + %137 = and i64 %136, -2 + %138 = inttoptr i64 %137 to ptr + store ptr %138, ptr %134, align 8, !tbaa !773 %.val30.us = load ptr, ptr %131, align 8, !tbaa !1082 %.val31.us = load i32, ptr %133, align 8, !tbaa !1083 - %141 = zext i32 %.val31.us to i64 - %142 = shl nuw nsw i64 %141, 4 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val30.us, i64 noundef %142, i64 noundef 8) #25 + %139 = zext i32 %.val31.us to i64 + %140 = shl nuw nsw i64 %139, 4 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val30.us, i64 noundef %140, i64 noundef 8) #25 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #25 - %143 = add i64 %.02260.us, 1 - %exitcond68 = icmp eq i64 %.02260.us, %umin67 - br i1 %exitcond68, label %.critedge, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, !llvm.loop !1084 + %141 = add i64 %.02260.us, 1 + %.not27.us = icmp eq i64 %141, %3 + %.not28.us = icmp eq i64 %141, %21 + %or.cond.us = or i1 %.not27.us, %.not28.us + br i1 %or.cond.us, label %.critedge, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, !llvm.loop !1084 _ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38 - %144 = icmp ugt i32 %105, %123 - br i1 %144, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us.preheader, label %.critedge + %142 = icmp ugt i32 %105, %123 + br i1 %142, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, label %.critedge -_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us.preheader: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split - %145 = add i64 %21, -1 - %146 = add i64 %3, -1 - %umin = call i64 @llvm.umin.i64(i64 %145, i64 %146) - br label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us - -_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us.preheader, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us - %.02260.us61 = phi i64 [ %154, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us.preheader ] +_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us + %.02260.us61 = phi i64 [ %150, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #25 store ptr %0, ptr %16, align 8, !tbaa !775 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %126, i8 0, i64 20, i1 false) store i32 %125, ptr %127, align 8, !tbaa !1077 - %147 = getelementptr inbounds nuw ptr, ptr %128, i64 %.02260.us61 - %148 = load ptr, ptr %147, align 8, !tbaa !773 - %149 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %148) - %150 = and i64 %149, -2 - %151 = inttoptr i64 %150 to ptr - store ptr %151, ptr %147, align 8, !tbaa !773 + %143 = getelementptr inbounds nuw ptr, ptr %128, i64 %.02260.us61 + %144 = load ptr, ptr %143, align 8, !tbaa !773 + %145 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %144) + %146 = and i64 %145, -2 + %147 = inttoptr i64 %146 to ptr + store ptr %147, ptr %143, align 8, !tbaa !773 %.val32.us = load ptr, ptr %126, align 8, !tbaa !1082 %.val33.us = load i32, ptr %129, align 8, !tbaa !1083 - %152 = zext i32 %.val33.us to i64 - %153 = shl nuw nsw i64 %152, 4 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val32.us, i64 noundef %153, i64 noundef 8) #25 + %148 = zext i32 %.val33.us to i64 + %149 = shl nuw nsw i64 %148, 4 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val32.us, i64 noundef %149, i64 noundef 8) #25 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #25 - %154 = add i64 %.02260.us61, 1 - %exitcond = icmp eq i64 %.02260.us61, %umin - br i1 %exitcond, label %.critedge, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, !llvm.loop !1084 + %150 = add i64 %.02260.us61, 1 + %.not27.us62 = icmp eq i64 %150, %3 + %.not28.us63 = icmp eq i64 %150, %21 + %or.cond.us64 = or i1 %.not27.us62, %.not28.us63 + br i1 %or.cond.us64, label %.critedge, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, !llvm.loop !1084 .critedge: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #25 store ptr %0, ptr %17, align 8, !tbaa !1085 - %155 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %1, ptr %2, i64 %3) - %.not.i = icmp eq ptr %155, null - br i1 %.not.i, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", label %156 + %151 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %1, ptr %2, i64 %3) + %.not.i = icmp eq ptr %151, null + br i1 %.not.i, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", label %152 "_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread": ; preds = %.critedge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #25 - br label %191 + br label %187 -156: ; preds = %.critedge +152: ; preds = %.critedge call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) #25 - call void @_ZN5clang7makeDNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %155) - %157 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %4, ptr %128, i64 %21) - %.not17.i = icmp eq ptr %157, null - br i1 %.not17.i, label %175, label %158 + call void @_ZN5clang7makeDNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %151) + %153 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %4, ptr %128, i64 %21) + %.not17.i = icmp eq ptr %153, null + br i1 %.not17.i, label %171, label %154 -158: ; preds = %156 +154: ; preds = %152 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %9) #25 - call void @_ZN5clang7makeCNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %157) - %159 = call fastcc noundef zeroext i1 @"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRKNS4_11SmallVectorINSC_INS4_12PointerUnionIJPNS_16AtomicConstraintEPNS_22FoldExpandedConstraintEEEELj2EEELj4EEESM_RKT_"(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(144) %9, ptr noundef nonnull readonly align 8 dereferenceable(8) %17) - %160 = zext i1 %159 to i8 - store i8 %160, ptr %6, align 1, !tbaa !748 - %161 = load ptr, ptr %9, align 8, !tbaa !30 - %162 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %163 = load i32, ptr %162, align 8, !tbaa !28 - %.not4.i.i.i = icmp eq i32 %163, 0 + call void @_ZN5clang7makeCNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %153) + %155 = call fastcc noundef zeroext i1 @"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRKNS4_11SmallVectorINSC_INS4_12PointerUnionIJPNS_16AtomicConstraintEPNS_22FoldExpandedConstraintEEEELj2EEELj4EEESM_RKT_"(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(144) %9, ptr noundef nonnull readonly align 8 dereferenceable(8) %17) + %156 = zext i1 %155 to i8 + store i8 %156, ptr %6, align 1, !tbaa !748 + %157 = load ptr, ptr %9, align 8, !tbaa !30 + %158 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %159 = load i32, ptr %158, align 8, !tbaa !28 + %.not4.i.i.i = icmp eq i32 %159, 0 br i1 %.not4.i.i.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i, label %.lr.ph.i.preheader.i.i -.lr.ph.i.preheader.i.i: ; preds = %158 - %164 = zext i32 %163 to i64 - %165 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %161, i64 %164 +.lr.ph.i.preheader.i.i: ; preds = %154 + %160 = zext i32 %159 to i64 + %161 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %157, i64 %160 br label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i, %.lr.ph.i.preheader.i.i - %.05.i.i.i = phi ptr [ %166, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i ], [ %165, %.lr.ph.i.preheader.i.i ] - %166 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -32 - %167 = load ptr, ptr %166, align 8, !tbaa !30 - %168 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -16 - %169 = icmp eq ptr %167, %168 - br i1 %169, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i, label %170 - -170: ; preds = %.lr.ph.i.i.i - call void @free(ptr noundef %167) #25 + %.05.i.i.i = phi ptr [ %162, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i ], [ %161, %.lr.ph.i.preheader.i.i ] + %162 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -32 + %163 = load ptr, ptr %162, align 8, !tbaa !30 + %164 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -16 + %165 = icmp eq ptr %163, %164 + br i1 %165, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i, label %166 + +166: ; preds = %.lr.ph.i.i.i + call void @free(ptr noundef %163) #25 br label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i -_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i: ; preds = %170, %.lr.ph.i.i.i - %.not.i.i.i = icmp eq ptr %161, %166 +_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i: ; preds = %166, %.lr.ph.i.i.i + %.not.i.i.i = icmp eq ptr %157, %162 br i1 %.not.i.i.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i, label %.lr.ph.i.i.i, !llvm.loop !1061 _ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i %.pre.i.i = load ptr, ptr %9, align 8, !tbaa !30 br label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i -_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i, %158 - %171 = phi ptr [ %.pre.i.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i ], [ %161, %158 ] - %172 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %173 = icmp eq ptr %171, %172 - br i1 %173, label %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, label %174 +_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i, %154 + %167 = phi ptr [ %.pre.i.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i ], [ %157, %154 ] + %168 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %169 = icmp eq ptr %167, %168 + br i1 %169, label %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, label %170 -174: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i - call void @free(ptr noundef %171) #25 +170: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i + call void @free(ptr noundef %167) #25 br label %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i -_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i: ; preds = %174, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i +_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i: ; preds = %170, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #25 - br label %175 + br label %171 -175: ; preds = %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, %156 - %176 = load ptr, ptr %8, align 8, !tbaa !30 - %177 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %178 = load i32, ptr %177, align 8, !tbaa !28 - %.not4.i.i18.i = icmp eq i32 %178, 0 +171: ; preds = %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, %152 + %172 = load ptr, ptr %8, align 8, !tbaa !30 + %173 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %174 = load i32, ptr %173, align 8, !tbaa !28 + %.not4.i.i18.i = icmp eq i32 %174, 0 br i1 %.not4.i.i18.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i, label %.lr.ph.i.preheader.i19.i -.lr.ph.i.preheader.i19.i: ; preds = %175 - %179 = zext i32 %178 to i64 - %180 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %176, i64 %179 +.lr.ph.i.preheader.i19.i: ; preds = %171 + %175 = zext i32 %174 to i64 + %176 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %172, i64 %175 br label %.lr.ph.i.i20.i .lr.ph.i.i20.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i, %.lr.ph.i.preheader.i19.i - %.05.i.i21.i = phi ptr [ %181, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i ], [ %180, %.lr.ph.i.preheader.i19.i ] - %181 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -32 - %182 = load ptr, ptr %181, align 8, !tbaa !30 - %183 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -16 - %184 = icmp eq ptr %182, %183 - br i1 %184, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i, label %185 - -185: ; preds = %.lr.ph.i.i20.i - call void @free(ptr noundef %182) #25 + %.05.i.i21.i = phi ptr [ %177, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i ], [ %176, %.lr.ph.i.preheader.i19.i ] + %177 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -32 + %178 = load ptr, ptr %177, align 8, !tbaa !30 + %179 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -16 + %180 = icmp eq ptr %178, %179 + br i1 %180, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i, label %181 + +181: ; preds = %.lr.ph.i.i20.i + call void @free(ptr noundef %178) #25 br label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i -_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i: ; preds = %185, %.lr.ph.i.i20.i - %.not.i.i23.i = icmp eq ptr %176, %181 +_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i: ; preds = %181, %.lr.ph.i.i20.i + %.not.i.i23.i = icmp eq ptr %172, %177 br i1 %.not.i.i23.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i, label %.lr.ph.i.i20.i, !llvm.loop !1061 _ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i %.pre.i25.i = load ptr, ptr %8, align 8, !tbaa !30 br label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i -_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i, %175 - %186 = phi ptr [ %.pre.i25.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i ], [ %176, %175 ] - %187 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %188 = icmp eq ptr %186, %187 - br i1 %188, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", label %189 +_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i, %171 + %182 = phi ptr [ %.pre.i25.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i ], [ %172, %171 ] + %183 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %184 = icmp eq ptr %182, %183 + br i1 %184, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", label %185 -189: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i - call void @free(ptr noundef %186) #25 +185: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i + call void @free(ptr noundef %182) #25 br label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" -"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit": ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i, %189 +"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit": ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i, %185 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #25 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #25 - br i1 %.not17.i, label %191, label %190 + br i1 %.not17.i, label %187, label %186 -190: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" +186: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #25 call void @_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPN5clang9NamedDeclES5_EbNS_12DenseMapInfoIS6_vEENS_6detail12DenseMapPairIS6_bEEEES6_bS8_SB_E11try_emplaceIJRbEEES2_INS_16DenseMapIteratorIS6_bS8_SB_Lb0EEEbERKS6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.1255") align 8 %18, ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 1 dereferenceable(1) %6) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #25 - br label %191 + br label %187 -191: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", %190, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", %84 - %.1 = phi i1 [ false, %84 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" ], [ false, %190 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread" ] +187: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", %186, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", %84 + %.1 = phi i1 [ false, %84 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" ], [ false, %186 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread" ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #25 - br label %192 + br label %188 -192: ; preds = %191, %26, %23 - %.0 = phi i1 [ false, %23 ], [ false, %26 ], [ %.1, %191 ] +188: ; preds = %187, %26, %23 + %.0 = phi i1 [ false, %23 ], [ false, %26 ], [ %.1, %187 ] ret i1 %.0 } @@ -84201,9 +84193,6 @@ declare i32 @llvm.umax.i32(i32, i32) #22 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #23 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #22 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #22 diff --git a/bench/llvm/optimized/SemaTemplate.ll b/bench/llvm/optimized/SemaTemplate.ll index 6f87da52c41..7d084cb7f77 100644 --- a/bench/llvm/optimized/SemaTemplate.ll +++ b/bench/llvm/optimized/SemaTemplate.ll @@ -78308,7 +78308,7 @@ define dso_local void @_ZN5clang4Sema31getTemplateArgumentBindingsTextB5cxx11EPK store ptr %7, ptr %18, align 8, !tbaa !1959 call void @_ZN4llvm11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef null, i64 noundef 0, i32 noundef 0) #30 %.not = icmp eq ptr %2, null - br i1 %.not, label %35, label %19 + br i1 %.not, label %34, label %19 19: ; preds = %5 %20 = getelementptr inbounds nuw i8, ptr %2, i64 20 @@ -78317,7 +78317,7 @@ define dso_local void @_ZN5clang4Sema31getTemplateArgumentBindingsTextB5cxx11EPK %23 = icmp eq i32 %22, 0 %24 = icmp eq i32 %4, 0 %or.cond = or i1 %24, %23 - br i1 %or.cond, label %35, label %.preheader + br i1 %or.cond, label %34, label %.preheader .preheader: ; preds = %19 %25 = getelementptr inbounds nuw i8, ptr %8, i64 24 @@ -78327,258 +78327,257 @@ define dso_local void @_ZN5clang4Sema31getTemplateArgumentBindingsTextB5cxx11EPK %29 = getelementptr inbounds nuw i8, ptr %1, i64 240 %30 = getelementptr inbounds nuw i8, ptr %9, i64 8 %31 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %32 = add i32 %4, -1 - %33 = add nsw i32 %22, -1 - %umin = call i32 @llvm.umin.i32(i32 %32, i32 %33) - %34 = add nuw nsw i32 %umin, 1 - %wide.trip.count = zext nneg i32 %34 to i64 - br label %38 + %32 = zext i32 %4 to i64 + %33 = zext nneg i32 %22 to i64 + br label %37 -35: ; preds = %19, %5 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %36, ptr %0, align 8, !tbaa !890 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %37, align 8, !tbaa !861 - store i8 0, ptr %36, align 8, !tbaa !794 - br label %142 +34: ; preds = %19, %5 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %35, ptr %0, align 8, !tbaa !890 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %36, align 8, !tbaa !861 + store i8 0, ptr %35, align 8, !tbaa !794 + br label %141 -38: ; preds = %.preheader, %_ZN4llvm11raw_ostreamlsEPKc.exit37 +37: ; preds = %.preheader, %_ZN4llvm11raw_ostreamlsEPKc.exit37 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %_ZN4llvm11raw_ostreamlsEPKc.exit37 ] - %39 = icmp eq i64 %indvars.iv, 0 - %40 = load ptr, ptr %25, align 8, !tbaa !2180 - %41 = load ptr, ptr %26, align 8, !tbaa !2181 + %38 = icmp eq i64 %indvars.iv, 0 + %39 = load ptr, ptr %25, align 8, !tbaa !2180 + %40 = load ptr, ptr %26, align 8, !tbaa !2181 + %41 = ptrtoint ptr %39 to i64 %42 = ptrtoint ptr %40 to i64 - %43 = ptrtoint ptr %41 to i64 - %44 = sub i64 %42, %43 - br i1 %39, label %.split, label %.split21 + %43 = sub i64 %41, %42 + br i1 %38, label %.split, label %.split21 -.split: ; preds = %38 - %45 = icmp ult i64 %44, 6 - br i1 %45, label %46, label %48 +.split: ; preds = %37 + %44 = icmp ult i64 %43, 6 + br i1 %44, label %45, label %47 -46: ; preds = %.split - %47 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.5, i64 noundef 6) #30 +45: ; preds = %.split + %46 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.5, i64 noundef 6) #30 br label %_ZN4llvm11raw_ostreamlsEPKc.exit -48: ; preds = %.split - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %41, ptr noundef nonnull align 1 dereferenceable(6) @.str.5, i64 6, i1 false) - %49 = load ptr, ptr %26, align 8, !tbaa !2181 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 6 - store ptr %50, ptr %26, align 8, !tbaa !2181 +47: ; preds = %.split + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %40, ptr noundef nonnull align 1 dereferenceable(6) @.str.5, i64 6, i1 false) + %48 = load ptr, ptr %26, align 8, !tbaa !2181 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 6 + store ptr %49, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsEPKc.exit -.split21: ; preds = %38 - %51 = icmp ult i64 %44, 2 - br i1 %51, label %52, label %54 +.split21: ; preds = %37 + %50 = icmp ult i64 %43, 2 + br i1 %50, label %51, label %53 -52: ; preds = %.split21 - %53 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.6, i64 noundef 2) #30 +51: ; preds = %.split21 + %52 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.6, i64 noundef 2) #30 br label %_ZN4llvm11raw_ostreamlsEPKc.exit31 -54: ; preds = %.split21 - store i16 8236, ptr %41, align 1 - %55 = load ptr, ptr %26, align 8, !tbaa !2181 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 2 - store ptr %56, ptr %26, align 8, !tbaa !2181 +53: ; preds = %.split21 + store i16 8236, ptr %40, align 1 + %54 = load ptr, ptr %26, align 8, !tbaa !2181 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 2 + store ptr %55, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsEPKc.exit31 -_ZN4llvm11raw_ostreamlsEPKc.exit31: ; preds = %52, %54 - %57 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv +_ZN4llvm11raw_ostreamlsEPKc.exit31: ; preds = %51, %53 + %56 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv br label %_ZN4llvm11raw_ostreamlsEPKc.exit -_ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %48, %46, %_ZN4llvm11raw_ostreamlsEPKc.exit31 - %phi.call.in = phi ptr [ %57, %_ZN4llvm11raw_ostreamlsEPKc.exit31 ], [ %27, %46 ], [ %27, %48 ] +_ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %47, %45, %_ZN4llvm11raw_ostreamlsEPKc.exit31 + %phi.call.in = phi ptr [ %56, %_ZN4llvm11raw_ostreamlsEPKc.exit31 ], [ %27, %45 ], [ %27, %47 ] %phi.call = load ptr, ptr %phi.call.in, align 8, !tbaa !849 - %58 = getelementptr inbounds nuw i8, ptr %phi.call, i64 40 - %59 = load i64, ptr %58, align 8, !tbaa !848 - %60 = and i64 %59, 7 - %61 = icmp ne i64 %60, 0 - %62 = and i64 %59, -8 - %.not2744 = icmp eq i64 %62, 0 - %.not27 = or i1 %61, %.not2744 - br i1 %.not27, label %82, label %63 - -63: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit - %64 = inttoptr i64 %62 to ptr - %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 - %66 = load ptr, ptr %65, align 8, !tbaa !910 - %67 = getelementptr inbounds nuw i8, ptr %66, i64 16 - %68 = load i64, ptr %66, align 8, !tbaa !913 - %69 = and i64 %68, 4294967295 - %70 = load ptr, ptr %25, align 8, !tbaa !2180 - %71 = load ptr, ptr %26, align 8, !tbaa !2181 + %57 = getelementptr inbounds nuw i8, ptr %phi.call, i64 40 + %58 = load i64, ptr %57, align 8, !tbaa !848 + %59 = and i64 %58, 7 + %60 = icmp ne i64 %59, 0 + %61 = and i64 %58, -8 + %.not2744 = icmp eq i64 %61, 0 + %.not27 = or i1 %60, %.not2744 + br i1 %.not27, label %81, label %62 + +62: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit + %63 = inttoptr i64 %61 to ptr + %64 = getelementptr inbounds nuw i8, ptr %63, i64 16 + %65 = load ptr, ptr %64, align 8, !tbaa !910 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 16 + %67 = load i64, ptr %65, align 8, !tbaa !913 + %68 = and i64 %67, 4294967295 + %69 = load ptr, ptr %25, align 8, !tbaa !2180 + %70 = load ptr, ptr %26, align 8, !tbaa !2181 + %71 = ptrtoint ptr %69 to i64 %72 = ptrtoint ptr %70 to i64 - %73 = ptrtoint ptr %71 to i64 - %74 = sub i64 %72, %73 - %75 = icmp ugt i64 %69, %74 - br i1 %75, label %76, label %78 + %73 = sub i64 %71, %72 + %74 = icmp ugt i64 %68, %73 + br i1 %74, label %75, label %77 -76: ; preds = %63 - %77 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull %67, i64 noundef %69) #30 +75: ; preds = %62 + %76 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull %66, i64 noundef %68) #30 br label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit -78: ; preds = %63 - %.not.i = icmp eq i64 %69, 0 - br i1 %.not.i, label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit, label %79 +77: ; preds = %62 + %.not.i = icmp eq i64 %68, 0 + br i1 %.not.i, label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit, label %78 -79: ; preds = %78 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %71, ptr nonnull align 1 %67, i64 %69, i1 false) - %80 = load ptr, ptr %26, align 8, !tbaa !2181 - %81 = getelementptr inbounds nuw i8, ptr %80, i64 %69 - store ptr %81, ptr %26, align 8, !tbaa !2181 +78: ; preds = %77 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr nonnull align 1 %66, i64 %68, i1 false) + %79 = load ptr, ptr %26, align 8, !tbaa !2181 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 %68 + store ptr %80, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit -82: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit - %83 = load ptr, ptr %26, align 8, !tbaa !2181 - %84 = load ptr, ptr %25, align 8, !tbaa !2180 - %.not.i33 = icmp ult ptr %83, %84 - br i1 %.not.i33, label %87, label %85 +81: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit + %82 = load ptr, ptr %26, align 8, !tbaa !2181 + %83 = load ptr, ptr %25, align 8, !tbaa !2180 + %.not.i33 = icmp ult ptr %82, %83 + br i1 %.not.i33, label %86, label %84 -85: ; preds = %82 - %86 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 36) #30 +84: ; preds = %81 + %85 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 36) #30 br label %_ZN4llvm11raw_ostreamlsEc.exit -87: ; preds = %82 - %88 = getelementptr inbounds nuw i8, ptr %83, i64 1 - store ptr %88, ptr %26, align 8, !tbaa !2181 - store i8 36, ptr %83, align 1, !tbaa !794 +86: ; preds = %81 + %87 = getelementptr inbounds nuw i8, ptr %82, i64 1 + store ptr %87, ptr %26, align 8, !tbaa !2181 + store i8 36, ptr %82, align 1, !tbaa !794 br label %_ZN4llvm11raw_ostreamlsEc.exit -_ZN4llvm11raw_ostreamlsEc.exit: ; preds = %85, %87 - %.0.i34 = phi ptr [ %86, %85 ], [ %8, %87 ] - %89 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsEm(ptr noundef nonnull align 8 dereferenceable(48) %.0.i34, i64 noundef %indvars.iv) #30 +_ZN4llvm11raw_ostreamlsEc.exit: ; preds = %84, %86 + %.0.i34 = phi ptr [ %85, %84 ], [ %8, %86 ] + %88 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsEm(ptr noundef nonnull align 8 dereferenceable(48) %.0.i34, i64 noundef %indvars.iv) #30 br label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit -_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit: ; preds = %79, %78, %76, %_ZN4llvm11raw_ostreamlsEc.exit - %90 = load ptr, ptr %25, align 8, !tbaa !2180 - %91 = load ptr, ptr %26, align 8, !tbaa !2181 +_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit: ; preds = %78, %77, %75, %_ZN4llvm11raw_ostreamlsEc.exit + %89 = load ptr, ptr %25, align 8, !tbaa !2180 + %90 = load ptr, ptr %26, align 8, !tbaa !2181 + %91 = ptrtoint ptr %89 to i64 %92 = ptrtoint ptr %90 to i64 - %93 = ptrtoint ptr %91 to i64 - %94 = sub i64 %92, %93 - %95 = icmp ult i64 %94, 3 - br i1 %95, label %96, label %98 + %93 = sub i64 %91, %92 + %94 = icmp ult i64 %93, 3 + br i1 %94, label %95, label %97 -96: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit - %97 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.7, i64 noundef 3) #30 +95: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit + %96 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.7, i64 noundef 3) #30 br label %_ZN4llvm11raw_ostreamlsEPKc.exit37 -98: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %91, ptr noundef nonnull align 1 dereferenceable(3) @.str.7, i64 3, i1 false) - %99 = load ptr, ptr %26, align 8, !tbaa !2181 - %100 = getelementptr inbounds nuw i8, ptr %99, i64 3 - store ptr %100, ptr %26, align 8, !tbaa !2181 +97: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %90, ptr noundef nonnull align 1 dereferenceable(3) @.str.7, i64 3, i1 false) + %98 = load ptr, ptr %26, align 8, !tbaa !2181 + %99 = getelementptr inbounds nuw i8, ptr %98, i64 3 + store ptr %99, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsEPKc.exit37 -_ZN4llvm11raw_ostreamlsEPKc.exit37: ; preds = %96, %98 - %101 = getelementptr inbounds nuw %"class.clang::TemplateArgument", ptr %3, i64 %indvars.iv +_ZN4llvm11raw_ostreamlsEPKc.exit37: ; preds = %95, %97 + %100 = getelementptr inbounds nuw %"class.clang::TemplateArgument", ptr %3, i64 %indvars.iv call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #30 - %102 = load ptr, ptr %28, align 8, !tbaa !817 - %103 = load ptr, ptr %29, align 8, !tbaa !1581 - %104 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %102, ptr noundef nonnull align 8 dereferenceable(3288) %103) #30 - %105 = extractvalue { i64, ptr } %104, 0 - store i64 %105, ptr %9, align 8 - %106 = extractvalue { i64, ptr } %104, 1 - store ptr %106, ptr %30, align 8 + %101 = load ptr, ptr %28, align 8, !tbaa !817 + %102 = load ptr, ptr %29, align 8, !tbaa !1581 + %103 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %101, ptr noundef nonnull align 8 dereferenceable(3288) %102) #30 + %104 = extractvalue { i64, ptr } %103, 0 + store i64 %104, ptr %9, align 8 + %105 = extractvalue { i64, ptr } %103, 1 + store ptr %105, ptr %30, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #30 - %107 = load ptr, ptr %28, align 8, !tbaa !817 - %108 = load ptr, ptr %29, align 8, !tbaa !1581 - %109 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %107, ptr noundef nonnull align 8 dereferenceable(3288) %108) #30 - %110 = extractvalue { i64, ptr } %109, 0 - store i64 %110, ptr %10, align 8 - %111 = extractvalue { i64, ptr } %109, 1 - store ptr %111, ptr %31, align 8 - %112 = trunc nuw nsw i64 %indvars.iv to i32 - %113 = call noundef zeroext i1 @_ZN5clang21TemplateParameterList28shouldIncludeTypeForArgumentERKNS_14PrintingPolicyEPKS0_j(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %2, i32 noundef %112) #30 - call void @_ZNK5clang16TemplateArgument5printERKNS_14PrintingPolicyERN4llvm11raw_ostreamEb(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %8, i1 noundef zeroext %113) #30 + %106 = load ptr, ptr %28, align 8, !tbaa !817 + %107 = load ptr, ptr %29, align 8, !tbaa !1581 + %108 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %106, ptr noundef nonnull align 8 dereferenceable(3288) %107) #30 + %109 = extractvalue { i64, ptr } %108, 0 + store i64 %109, ptr %10, align 8 + %110 = extractvalue { i64, ptr } %108, 1 + store ptr %110, ptr %31, align 8 + %111 = trunc nuw nsw i64 %indvars.iv to i32 + %112 = call noundef zeroext i1 @_ZN5clang21TemplateParameterList28shouldIncludeTypeForArgumentERKNS_14PrintingPolicyEPKS0_j(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %2, i32 noundef %111) #30 + call void @_ZNK5clang16TemplateArgument5printERKNS_14PrintingPolicyERN4llvm11raw_ostreamEb(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %8, i1 noundef zeroext %112) #30 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #30 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #30 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %114, label %38, !llvm.loop !2182 - -114: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit37 - %115 = load ptr, ptr %26, align 8, !tbaa !2181 - %116 = load ptr, ptr %25, align 8, !tbaa !2180 - %.not.i38 = icmp ult ptr %115, %116 - br i1 %.not.i38, label %119, label %117 - -117: ; preds = %114 - %118 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 93) #30 + %.not25 = icmp ne i64 %indvars.iv.next, %33 + %.not26 = icmp samesign ult i64 %indvars.iv.next, %32 + %or.cond28 = and i1 %.not25, %.not26 + br i1 %or.cond28, label %37, label %113, !llvm.loop !2182 + +113: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit37 + %114 = load ptr, ptr %26, align 8, !tbaa !2181 + %115 = load ptr, ptr %25, align 8, !tbaa !2180 + %.not.i38 = icmp ult ptr %114, %115 + br i1 %.not.i38, label %118, label %116 + +116: ; preds = %113 + %117 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 93) #30 br label %_ZN4llvm11raw_ostreamlsEc.exit40 -119: ; preds = %114 - %120 = getelementptr inbounds nuw i8, ptr %115, i64 1 - store ptr %120, ptr %26, align 8, !tbaa !2181 - store i8 93, ptr %115, align 1, !tbaa !794 +118: ; preds = %113 + %119 = getelementptr inbounds nuw i8, ptr %114, i64 1 + store ptr %119, ptr %26, align 8, !tbaa !2181 + store i8 93, ptr %114, align 1, !tbaa !794 br label %_ZN4llvm11raw_ostreamlsEc.exit40 -_ZN4llvm11raw_ostreamlsEc.exit40: ; preds = %117, %119 - %121 = load ptr, ptr %18, align 8, !tbaa !1961 - %122 = load ptr, ptr %121, align 8, !tbaa !1758 - %123 = getelementptr inbounds nuw i8, ptr %121, i64 8 - %124 = load i64, ptr %123, align 8, !tbaa !1760 - %125 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %125, ptr %0, align 8, !tbaa !890 - %126 = icmp eq ptr %122, null - %127 = icmp ne i64 %124, 0 - %or.cond.i.i.i = and i1 %126, %127 - br i1 %or.cond.i.i.i, label %128, label %129 - -128: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 +_ZN4llvm11raw_ostreamlsEc.exit40: ; preds = %116, %118 + %120 = load ptr, ptr %18, align 8, !tbaa !1961 + %121 = load ptr, ptr %120, align 8, !tbaa !1758 + %122 = getelementptr inbounds nuw i8, ptr %120, i64 8 + %123 = load i64, ptr %122, align 8, !tbaa !1760 + %124 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %124, ptr %0, align 8, !tbaa !890 + %125 = icmp eq ptr %121, null + %126 = icmp ne i64 %123, 0 + %or.cond.i.i.i = and i1 %125, %126 + br i1 %or.cond.i.i.i, label %127, label %128 + +127: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 call void @_ZSt19__throw_logic_errorPKc(ptr noundef nonnull @.str.14) #34 unreachable -129: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 +128: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #30 - store i64 %124, ptr %6, align 8, !tbaa !820 - %130 = icmp ugt i64 %124, 15 - br i1 %130, label %131, label %._crit_edge.i.i.i.i - -131: ; preds = %129 - %132 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 0) #30 - store ptr %132, ptr %0, align 8, !tbaa !862 - %133 = load i64, ptr %6, align 8, !tbaa !820 - store i64 %133, ptr %125, align 8, !tbaa !794 + store i64 %123, ptr %6, align 8, !tbaa !820 + %129 = icmp ugt i64 %123, 15 + br i1 %129, label %130, label %._crit_edge.i.i.i.i + +130: ; preds = %128 + %131 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 0) #30 + store ptr %131, ptr %0, align 8, !tbaa !862 + %132 = load i64, ptr %6, align 8, !tbaa !820 + store i64 %132, ptr %124, align 8, !tbaa !794 br label %._crit_edge.i.i.i.i -._crit_edge.i.i.i.i: ; preds = %131, %129 - %134 = phi ptr [ %132, %131 ], [ %125, %129 ] - switch i64 %124, label %137 [ - i64 1, label %135 +._crit_edge.i.i.i.i: ; preds = %130, %128 + %133 = phi ptr [ %131, %130 ], [ %124, %128 ] + switch i64 %123, label %136 [ + i64 1, label %134 i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit ] -135: ; preds = %._crit_edge.i.i.i.i - %136 = load i8, ptr %122, align 1, !tbaa !794 - store i8 %136, ptr %134, align 1, !tbaa !794 +134: ; preds = %._crit_edge.i.i.i.i + %135 = load i8, ptr %121, align 1, !tbaa !794 + store i8 %135, ptr %133, align 1, !tbaa !794 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit -137: ; preds = %._crit_edge.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %134, ptr align 1 %122, i64 %124, i1 false) +136: ; preds = %._crit_edge.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %133, ptr align 1 %121, i64 %123, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit: ; preds = %._crit_edge.i.i.i.i, %135, %137 - %138 = load i64, ptr %6, align 8, !tbaa !820 - %139 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %138, ptr %139, align 8, !tbaa !861 - %140 = load ptr, ptr %0, align 8, !tbaa !862 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 %138 - store i8 0, ptr %141, align 1, !tbaa !794 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit: ; preds = %._crit_edge.i.i.i.i, %134, %136 + %137 = load i64, ptr %6, align 8, !tbaa !820 + %138 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %137, ptr %138, align 8, !tbaa !861 + %139 = load ptr, ptr %0, align 8, !tbaa !862 + %140 = getelementptr inbounds nuw i8, ptr %139, i64 %137 + store i8 0, ptr %140, align 1, !tbaa !794 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #30 - br label %142 + br label %141 -142: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit, %35 +141: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit, %34 call void @_ZN4llvm11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #30 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #30 - %143 = load ptr, ptr %7, align 8, !tbaa !1758 - %144 = icmp eq ptr %143, %11 - br i1 %144, label %_ZN4llvm11SmallVectorIcLj128EED2Ev.exit, label %145 + %142 = load ptr, ptr %7, align 8, !tbaa !1758 + %143 = icmp eq ptr %142, %11 + br i1 %143, label %_ZN4llvm11SmallVectorIcLj128EED2Ev.exit, label %144 -145: ; preds = %142 - call void @free(ptr noundef %143) #30 +144: ; preds = %141 + call void @free(ptr noundef %142) #30 br label %_ZN4llvm11SmallVectorIcLj128EED2Ev.exit -_ZN4llvm11SmallVectorIcLj128EED2Ev.exit: ; preds = %142, %145 +_ZN4llvm11SmallVectorIcLj128EED2Ev.exit: ; preds = %141, %144 call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %7) #30 ret void } diff --git a/bench/node/optimized/libnode.Protocol.ll b/bench/node/optimized/libnode.Protocol.ll index 3eca643dbef..aac0f288ca4 100644 --- a/bench/node/optimized/libnode.Protocol.ll +++ b/bench/node/optimized/libnode.Protocol.ll @@ -19437,25 +19437,20 @@ while.cond.outer: ; preds = %while.cond.outer.pr %ii.2.ph = phi i64 [ %inc, %if.end77 ], [ %ii.0190, %while.cond.outer.preheader ] %codepoint.1.ph = phi i32 [ %or, %if.end77 ], [ %and54, %while.cond.outer.preheader ] %num_bytes_left.1.ph = phi i32 [ %dec, %if.end77 ], [ %num_bytes_left.0, %while.cond.outer.preheader ] - %37 = trunc i64 %ii.2.ph to i32 - %38 = add i32 %num_bytes_left.1.ph, %37 - %smin = tail call i32 @llvm.smin.i32(i32 %num_bytes_left.1.ph, i32 0) - %39 = sub i32 %38, %smin br label %while.cond while.cond: ; preds = %while.cond.outer, %while.body %ii.2 = phi i64 [ %inc, %while.body ], [ %ii.2.ph, %while.cond.outer ] %num_bytes_left.1 = phi i32 [ %dec, %while.body ], [ %num_bytes_left.1.ph, %while.cond.outer ] - %lftr.wideiv = trunc i64 %ii.2 to i32 - %exitcond.not = icmp eq i32 %39, %lftr.wideiv - br i1 %exitcond.not, label %while.end, label %while.body + %cmp71 = icmp sgt i32 %num_bytes_left.1, 0 + br i1 %cmp71, label %while.body, label %while.end while.body: ; preds = %while.cond %inc = add i64 %ii.2, 1 %arrayidx.i133 = getelementptr inbounds i8, ptr %chars.coerce0, i64 %inc - %40 = load i8, ptr %arrayidx.i133, align 1 + %37 = load i8, ptr %arrayidx.i133, align 1 %dec = add nsw i32 %num_bytes_left.1, -1 - %conv73 = zext i8 %40 to i32 + %conv73 = zext i8 %37 to i32 %and74 = and i32 %conv73, 192 %cmp75.not = icmp eq i32 %and74, 128 br i1 %cmp75.not, label %if.end77, label %while.cond, !llvm.loop !370 @@ -19467,8 +19462,8 @@ if.end77: ; preds = %while.body br label %while.cond.outer, !llvm.loop !370 while.end: ; preds = %while.cond - %41 = add i32 %codepoint.1.ph, -1114112 - %or.cond1 = icmp ult i32 %41, -1113985 + %38 = add i32 %codepoint.1.ph, -1114112 + %or.cond1 = icmp ult i32 %38, -1113985 br i1 %or.cond1, label %for.inc, label %if.end85 if.end85: ; preds = %while.end @@ -19478,48 +19473,48 @@ if.end85: ; preds = %while.end if.then87: ; preds = %if.end85 %this.val41 = load ptr, ptr %out_, align 8 %_M_finish.i.i134 = getelementptr inbounds nuw i8, ptr %this.val41, i64 8 - %42 = load ptr, ptr %_M_finish.i.i134, align 8 - %43 = load ptr, ptr %this.val41, align 8 - %sub.ptr.lhs.cast.i.i.i137 = ptrtoint ptr %42 to i64 - %sub.ptr.rhs.cast.i.i.i138 = ptrtoint ptr %43 to i64 + %39 = load ptr, ptr %_M_finish.i.i134, align 8 + %40 = load ptr, ptr %this.val41, align 8 + %sub.ptr.lhs.cast.i.i.i137 = ptrtoint ptr %39 to i64 + %sub.ptr.rhs.cast.i.i.i138 = ptrtoint ptr %40 to i64 %sub.ptr.sub.i.i.i139 = sub i64 %sub.ptr.lhs.cast.i.i.i137, %sub.ptr.rhs.cast.i.i.i138 - %add.ptr.i.i.i140 = getelementptr inbounds i8, ptr %43, i64 %sub.ptr.sub.i.i.i139 + %add.ptr.i.i.i140 = getelementptr inbounds i8, ptr %40, i64 %sub.ptr.sub.i.i.i139 tail call void @_ZNSt6vectorIhSaIhEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPhS1_EET_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %this.val41, ptr %add.ptr.i.i.i140, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) %conv88 = trunc nuw i32 %codepoint.1.ph to i16 - %44 = load ptr, ptr %out_, align 8 - tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv88, ptr noundef %44) + %41 = load ptr, ptr %out_, align 8 + tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv88, ptr noundef %41) br label %for.inc if.end90: ; preds = %if.end85 %sub = add nuw nsw i32 %codepoint.1.ph, 67043328 %this.val42 = load ptr, ptr %out_, align 8 %_M_finish.i.i141 = getelementptr inbounds nuw i8, ptr %this.val42, i64 8 - %45 = load ptr, ptr %_M_finish.i.i141, align 8 - %46 = load ptr, ptr %this.val42, align 8 - %sub.ptr.lhs.cast.i.i.i144 = ptrtoint ptr %45 to i64 - %sub.ptr.rhs.cast.i.i.i145 = ptrtoint ptr %46 to i64 + %42 = load ptr, ptr %_M_finish.i.i141, align 8 + %43 = load ptr, ptr %this.val42, align 8 + %sub.ptr.lhs.cast.i.i.i144 = ptrtoint ptr %42 to i64 + %sub.ptr.rhs.cast.i.i.i145 = ptrtoint ptr %43 to i64 %sub.ptr.sub.i.i.i146 = sub i64 %sub.ptr.lhs.cast.i.i.i144, %sub.ptr.rhs.cast.i.i.i145 - %add.ptr.i.i.i147 = getelementptr inbounds i8, ptr %46, i64 %sub.ptr.sub.i.i.i146 + %add.ptr.i.i.i147 = getelementptr inbounds i8, ptr %43, i64 %sub.ptr.sub.i.i.i146 tail call void @_ZNSt6vectorIhSaIhEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPhS1_EET_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %this.val42, ptr %add.ptr.i.i.i147, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) %shr = lshr i32 %sub, 10 - %47 = trunc i32 %shr to i16 - %conv92 = add nsw i16 %47, -10240 - %48 = load ptr, ptr %out_, align 8 - tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv92, ptr noundef %48) + %44 = trunc i32 %shr to i16 + %conv92 = add nsw i16 %44, -10240 + %45 = load ptr, ptr %out_, align 8 + tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv92, ptr noundef %45) %this.val43 = load ptr, ptr %out_, align 8 %_M_finish.i.i148 = getelementptr inbounds nuw i8, ptr %this.val43, i64 8 - %49 = load ptr, ptr %_M_finish.i.i148, align 8 - %50 = load ptr, ptr %this.val43, align 8 - %sub.ptr.lhs.cast.i.i.i151 = ptrtoint ptr %49 to i64 - %sub.ptr.rhs.cast.i.i.i152 = ptrtoint ptr %50 to i64 + %46 = load ptr, ptr %_M_finish.i.i148, align 8 + %47 = load ptr, ptr %this.val43, align 8 + %sub.ptr.lhs.cast.i.i.i151 = ptrtoint ptr %46 to i64 + %sub.ptr.rhs.cast.i.i.i152 = ptrtoint ptr %47 to i64 %sub.ptr.sub.i.i.i153 = sub i64 %sub.ptr.lhs.cast.i.i.i151, %sub.ptr.rhs.cast.i.i.i152 - %add.ptr.i.i.i154 = getelementptr inbounds i8, ptr %50, i64 %sub.ptr.sub.i.i.i153 + %add.ptr.i.i.i154 = getelementptr inbounds i8, ptr %47, i64 %sub.ptr.sub.i.i.i153 tail call void @_ZNSt6vectorIhSaIhEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPhS1_EET_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %this.val43, ptr %add.ptr.i.i.i154, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) - %51 = trunc i32 %codepoint.1.ph to i16 - %52 = and i16 %51, 1023 - %conv96 = or disjoint i16 %52, -9216 - %53 = load ptr, ptr %out_, align 8 - tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv96, ptr noundef %53) + %48 = trunc i32 %codepoint.1.ph to i16 + %49 = and i16 %48, 1023 + %conv96 = or disjoint i16 %49, -9216 + %50 = load ptr, ptr %out_, align 8 + tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv96, ptr noundef %50) br label %for.inc for.inc: ; preds = %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i120, %if.then.i.i.i97, %if.then6, %if.then13, %if.then21, %if.then29, %if.then39, %if.end90, %if.then25, %if.then17, %if.then9, %while.end, %if.end65, %if.else55, %if.then87 @@ -19531,23 +19526,23 @@ for.inc: ; preds = %_ZNSt6vectorIhSaIhE for.end: ; preds = %for.inc, %_ZN4node9inspector8protocol4json12_GLOBAL__N_111JSONEncoderISt6vectorIhSaIhEEE4EmitEc.exit %this.val46 = load ptr, ptr %out_, align 8 %_M_finish.i.i.i155 = getelementptr inbounds nuw i8, ptr %this.val46, i64 8 - %54 = load ptr, ptr %_M_finish.i.i.i155, align 8 + %51 = load ptr, ptr %_M_finish.i.i.i155, align 8 %_M_end_of_storage.i.i.i156 = getelementptr inbounds nuw i8, ptr %this.val46, i64 16 - %55 = load ptr, ptr %_M_end_of_storage.i.i.i156, align 8 - %cmp.not.i.i.i157 = icmp eq ptr %54, %55 + %52 = load ptr, ptr %_M_end_of_storage.i.i.i156, align 8 + %cmp.not.i.i.i157 = icmp eq ptr %51, %52 br i1 %cmp.not.i.i.i157, label %if.else.i.i.i160, label %if.then.i.i.i158 if.then.i.i.i158: ; preds = %for.end - store i8 34, ptr %54, align 1 - %56 = load ptr, ptr %_M_finish.i.i.i155, align 8 - %incdec.ptr.i.i.i159 = getelementptr inbounds nuw i8, ptr %56, i64 1 + store i8 34, ptr %51, align 1 + %53 = load ptr, ptr %_M_finish.i.i.i155, align 8 + %incdec.ptr.i.i.i159 = getelementptr inbounds nuw i8, ptr %53, i64 1 store ptr %incdec.ptr.i.i.i159, ptr %_M_finish.i.i.i155, align 8 br label %return if.else.i.i.i160: ; preds = %for.end - %57 = load ptr, ptr %this.val46, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i.i161 = ptrtoint ptr %54 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i.i162 = ptrtoint ptr %57 to i64 + %54 = load ptr, ptr %this.val46, align 8 + %sub.ptr.lhs.cast.i.i.i.i.i.i161 = ptrtoint ptr %51 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i162 = ptrtoint ptr %54 to i64 %sub.ptr.sub.i.i.i.i.i.i163 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i161, %sub.ptr.rhs.cast.i.i.i.i.i.i162 %cmp.i.i.i.i.i164 = icmp eq i64 %sub.ptr.sub.i.i.i.i.i.i163, 9223372036854775807 br i1 %cmp.i.i.i.i.i164, label %if.then.i.i.i.i.i184, label %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit.i.i.i.i165 @@ -19560,8 +19555,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit.i.i.i.i165: ; preds = %if.else.i.i %.sroa.speculated.i.i.i.i.i166 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i.i.i.i.i163, i64 1) %add.i.i.i.i.i167 = add i64 %.sroa.speculated.i.i.i.i.i166, %sub.ptr.sub.i.i.i.i.i.i163 %cmp7.i.i.i.i.i168 = icmp ult i64 %add.i.i.i.i.i167, %sub.ptr.sub.i.i.i.i.i.i163 - %58 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i.i167, i64 9223372036854775807) - %cond.i.i.i.i.i169 = select i1 %cmp7.i.i.i.i.i168, i64 9223372036854775807, i64 %58 + %55 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i.i167, i64 9223372036854775807) + %cond.i.i.i.i.i169 = select i1 %cmp7.i.i.i.i.i168, i64 9223372036854775807, i64 %55 %cmp.not.i.i.i.i.i170 = icmp eq i64 %cond.i.i.i.i.i169, 0 br i1 %cmp.not.i.i.i.i.i170, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173, label %cond.true.i.i.i.i.i171 @@ -19577,16 +19572,16 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173: ; preds = %cond.true br i1 %cmp.i.i.i.i.i.i.i176, label %if.then.i.i.i.i.i.i.i183, label %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 if.then.i.i.i.i.i.i.i183: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %cond.i10.i.i.i.i174, ptr align 1 %57, i64 %sub.ptr.sub.i.i.i.i.i.i163, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %cond.i10.i.i.i.i174, ptr align 1 %54, i64 %sub.ptr.sub.i.i.i.i.i.i163, i1 false) br label %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 _ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177: ; preds = %if.then.i.i.i.i.i.i.i183, %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173 %incdec.ptr.i.i.i.i178 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.i175, i64 1 - %tobool.not.i.i.i.i.i179 = icmp eq ptr %57, null + %tobool.not.i.i.i.i.i179 = icmp eq ptr %54, null br i1 %tobool.not.i.i.i.i.i179, label %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i181, label %if.then.i18.i.i.i.i180 if.then.i18.i.i.i.i180: ; preds = %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 - tail call void @_ZdlPv(ptr noundef nonnull %57) #28 + tail call void @_ZdlPv(ptr noundef nonnull %54) #28 br label %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i181 _ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i181: ; preds = %if.then.i18.i.i.i.i180, %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 @@ -22449,25 +22444,20 @@ while.cond.outer: ; preds = %while.cond.outer.pr %ii.2.ph = phi i64 [ %inc, %if.end77 ], [ %ii.0154, %while.cond.outer.preheader ] %codepoint.1.ph = phi i32 [ %or, %if.end77 ], [ %and54, %while.cond.outer.preheader ] %num_bytes_left.1.ph = phi i32 [ %dec, %if.end77 ], [ %num_bytes_left.0, %while.cond.outer.preheader ] - %15 = trunc i64 %ii.2.ph to i32 - %16 = add i32 %num_bytes_left.1.ph, %15 - %smin = tail call i32 @llvm.smin.i32(i32 %num_bytes_left.1.ph, i32 0) - %17 = sub i32 %16, %smin br label %while.cond while.cond: ; preds = %while.cond.outer, %while.body %ii.2 = phi i64 [ %inc, %while.body ], [ %ii.2.ph, %while.cond.outer ] %num_bytes_left.1 = phi i32 [ %dec, %while.body ], [ %num_bytes_left.1.ph, %while.cond.outer ] - %lftr.wideiv = trunc i64 %ii.2 to i32 - %exitcond.not = icmp eq i32 %17, %lftr.wideiv - br i1 %exitcond.not, label %while.end, label %while.body + %cmp71 = icmp sgt i32 %num_bytes_left.1, 0 + br i1 %cmp71, label %while.body, label %while.end while.body: ; preds = %while.cond %inc = add i64 %ii.2, 1 %arrayidx.i90 = getelementptr inbounds i8, ptr %chars.coerce0, i64 %inc - %18 = load i8, ptr %arrayidx.i90, align 1 + %15 = load i8, ptr %arrayidx.i90, align 1 %dec = add nsw i32 %num_bytes_left.1, -1 - %conv73 = zext i8 %18 to i32 + %conv73 = zext i8 %15 to i32 %and74 = and i32 %conv73, 192 %cmp75.not = icmp eq i32 %and74, 128 br i1 %cmp75.not, label %if.end77, label %while.cond, !llvm.loop !403 @@ -22479,8 +22469,8 @@ if.end77: ; preds = %while.body br label %while.cond.outer, !llvm.loop !403 while.end: ; preds = %while.cond - %19 = add i32 %codepoint.1.ph, -1114112 - %or.cond1 = icmp ult i32 %19, -1113985 + %16 = add i32 %codepoint.1.ph, -1114112 + %or.cond1 = icmp ult i32 %16, -1113985 br i1 %or.cond1, label %for.inc, label %if.end85 if.end85: ; preds = %while.end @@ -22493,7 +22483,7 @@ if.then87: ; preds = %if.end85 %call.i.i94 = tail call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val41) #27 %call7.i.i95 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_(ptr noundef nonnull align 8 dereferenceable(32) %this.val41, ptr %call.i91, ptr %call.i91, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) #27 %call9.i.i96 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val41) #27 - %20 = load ptr, ptr %out_, align 8 + %17 = load ptr, ptr %out_, align 8 br label %for.body.i98 for.body.i98: ; preds = %for.body.i98, %if.then87 @@ -22505,7 +22495,7 @@ for.body.i98: ; preds = %for.body.i98, %if.t %cond.i104 = select i1 %cmp1.i103, i32 48, i32 87 %add.i105 = add nuw nsw i32 %cond.i104, %and.i102 %conv2.i106 = trunc nuw nsw i32 %add.i105 to i8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 noundef signext %conv2.i106) #27 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %17, i8 noundef signext %conv2.i106) #27 %dec.i107 = add nsw i32 %ii.04.i99, -1 %cmp.not.i108 = icmp eq i32 %ii.04.i99, 0 br i1 %cmp.not.i108, label %for.inc, label %for.body.i98, !llvm.loop !402 @@ -22519,7 +22509,7 @@ if.end90: ; preds = %if.end85 %call9.i.i115 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val42) #27 %shr = lshr i32 %sub, 10 %conv92 = add nuw nsw i32 %shr, 55296 - %21 = load ptr, ptr %out_, align 8 + %18 = load ptr, ptr %out_, align 8 %conv.i116 = and i32 %conv92, 65535 br label %for.body.i117 @@ -22532,7 +22522,7 @@ for.body.i117: ; preds = %for.body.i117, %if. %cond.i123 = select i1 %cmp1.i122, i32 48, i32 87 %add.i124 = add nuw nsw i32 %cond.i123, %and.i121 %conv2.i125 = trunc nuw nsw i32 %add.i124 to i8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 noundef signext %conv2.i125) #27 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 noundef signext %conv2.i125) #27 %dec.i126 = add nsw i32 %ii.04.i118, -1 %cmp.not.i127 = icmp eq i32 %ii.04.i118, 0 br i1 %cmp.not.i127, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvtPT_.exit128, label %for.body.i117, !llvm.loop !402 @@ -22543,9 +22533,9 @@ _ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexINSt7__cxx1112basic_strin %call.i.i132 = tail call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val43) #27 %call7.i.i133 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_(ptr noundef nonnull align 8 dereferenceable(32) %this.val43, ptr %call.i129, ptr %call.i129, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) #27 %call9.i.i134 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val43) #27 - %22 = and i32 %codepoint.1.ph, 1023 - %conv96 = or disjoint i32 %22, 56320 - %23 = load ptr, ptr %out_, align 8 + %19 = and i32 %codepoint.1.ph, 1023 + %conv96 = or disjoint i32 %19, 56320 + %20 = load ptr, ptr %out_, align 8 br label %for.body.i136 for.body.i136: ; preds = %for.body.i136, %_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvtPT_.exit128 @@ -22557,7 +22547,7 @@ for.body.i136: ; preds = %for.body.i136, %_ZN %cond.i142 = select i1 %cmp1.i141, i32 48, i32 87 %add.i143 = add nuw nsw i32 %cond.i142, %and.i140 %conv2.i144 = trunc nuw nsw i32 %add.i143 to i8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %23, i8 noundef signext %conv2.i144) #27 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 noundef signext %conv2.i144) #27 %dec.i145 = add nsw i32 %ii.04.i137, -1 %cmp.not.i146 = icmp eq i32 %ii.04.i137, 0 br i1 %cmp.not.i146, label %for.inc, label %for.body.i136, !llvm.loop !402 @@ -26588,9 +26578,6 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #25 ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #26 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #23 - attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/opencv/optimized/convexhull.ll b/bench/opencv/optimized/convexhull.ll index ac1fd85c02d..b01ed3e9b24 100644 --- a/bench/opencv/optimized/convexhull.ll +++ b/bench/opencv/optimized/convexhull.ll @@ -125,7 +125,7 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad 37: ; preds = %35, %33 %.pn = phi { ptr, i32 } [ %36, %35 ], [ %34, %33 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #12 - br label %185 + br label %181 38: ; preds = %23 %39 = landingpad { ptr, i32 } @@ -141,12 +141,12 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad 42: ; preds = %40, %38 %.pn40 = phi { ptr, i32 } [ %41, %40 ], [ %39, %38 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12 - br label %184 + br label %180 43: ; preds = %.noexc59, %.noexc58, %.noexc, %27, %45 %44 = landingpad { ptr, i32 } cleanup - br label %184 + br label %180 45: ; preds = %26 invoke void @_ZN2cv3MatC1Eiii(ptr noundef nonnull align 8 dereferenceable(96) %8, i32 noundef 500, i32 noundef 500, i32 noundef 16) @@ -154,7 +154,7 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad 46: ; preds = %45 %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2cv6theRNGEv() - to label %.preheader80 unwind label %144 + to label %.preheader80 unwind label %139 .preheader80: ; preds = %46 %48 = getelementptr inbounds nuw i8, ptr %8, i64 12 @@ -188,156 +188,148 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad %74 = mul nuw i64 %73, 4164903690 %75 = lshr i64 %72, 32 %76 = add nuw i64 %74, %75 - %.fr85 = freeze i64 %76 - store i64 %.fr85, ptr %47, align 8 - %77 = trunc i64 %.fr85 to i32 + store i64 %76, ptr %47, align 8 + %77 = trunc i64 %76 to i32 + %78 = urem i32 %77, 100 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, i8 0, i64 24, i1 false) - %78 = trunc nuw i64 %75 to i32 - %79 = add i32 %78, 1 - %80 = urem i32 %77, 100 - %.neg = sub i32 %80, %77 - %81 = add i32 %.neg, %79 - %82 = trunc i64 %72 to i32 - %.neg86 = mul i32 %82, -130063606 - %83 = add i32 %.neg86, %81 - br label %84 - -84: ; preds = %71, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit - %.03681 = phi i32 [ 0, %71 ], [ %143, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit ] - %85 = load i32, ptr %48, align 4 - %86 = sdiv i32 %85, 4 - %87 = mul nsw i32 %85, 3 - %88 = sdiv i32 %87, 4 - %89 = icmp eq i32 %86, %88 - br i1 %89, label %_ZN2cv3RNG7uniformEii.exit, label %90 - -90: ; preds = %84 - %91 = load i64, ptr %47, align 8 - %92 = and i64 %91, 4294967295 - %93 = mul nuw i64 %92, 4164903690 - %94 = lshr i64 %91, 32 - %95 = add nuw i64 %93, %94 - store i64 %95, ptr %47, align 8 - %96 = trunc i64 %95 to i32 - %97 = sub nsw i32 %88, %86 - %98 = urem i32 %96, %97 - %99 = add i32 %98, %86 + br label %79 + +79: ; preds = %71, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit + %.03681 = phi i32 [ 0, %71 ], [ %138, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit ] + %80 = load i32, ptr %48, align 4 + %81 = sdiv i32 %80, 4 + %82 = mul nsw i32 %80, 3 + %83 = sdiv i32 %82, 4 + %84 = icmp eq i32 %81, %83 + br i1 %84, label %_ZN2cv3RNG7uniformEii.exit, label %85 + +85: ; preds = %79 + %86 = load i64, ptr %47, align 8 + %87 = and i64 %86, 4294967295 + %88 = mul nuw i64 %87, 4164903690 + %89 = lshr i64 %86, 32 + %90 = add nuw i64 %88, %89 + store i64 %90, ptr %47, align 8 + %91 = trunc i64 %90 to i32 + %92 = sub nsw i32 %83, %81 + %93 = urem i32 %91, %92 + %94 = add i32 %93, %81 br label %_ZN2cv3RNG7uniformEii.exit -_ZN2cv3RNG7uniformEii.exit: ; preds = %84, %90 - %100 = phi i32 [ %99, %90 ], [ %86, %84 ] - %101 = load i32, ptr %49, align 8 - %102 = sdiv i32 %101, 4 - %103 = mul nsw i32 %101, 3 - %104 = sdiv i32 %103, 4 - %105 = icmp eq i32 %102, %104 - br i1 %105, label %_ZN2cv3RNG7uniformEii.exit61, label %106 - -106: ; preds = %_ZN2cv3RNG7uniformEii.exit - %107 = load i64, ptr %47, align 8 - %108 = and i64 %107, 4294967295 - %109 = mul nuw i64 %108, 4164903690 - %110 = lshr i64 %107, 32 - %111 = add nuw i64 %109, %110 - store i64 %111, ptr %47, align 8 - %112 = trunc i64 %111 to i32 - %113 = sub nsw i32 %104, %102 - %114 = urem i32 %112, %113 - %115 = add i32 %114, %102 +_ZN2cv3RNG7uniformEii.exit: ; preds = %79, %85 + %95 = phi i32 [ %94, %85 ], [ %81, %79 ] + %96 = load i32, ptr %49, align 8 + %97 = sdiv i32 %96, 4 + %98 = mul nsw i32 %96, 3 + %99 = sdiv i32 %98, 4 + %100 = icmp eq i32 %97, %99 + br i1 %100, label %_ZN2cv3RNG7uniformEii.exit61, label %101 + +101: ; preds = %_ZN2cv3RNG7uniformEii.exit + %102 = load i64, ptr %47, align 8 + %103 = and i64 %102, 4294967295 + %104 = mul nuw i64 %103, 4164903690 + %105 = lshr i64 %102, 32 + %106 = add nuw i64 %104, %105 + store i64 %106, ptr %47, align 8 + %107 = trunc i64 %106 to i32 + %108 = sub nsw i32 %99, %97 + %109 = urem i32 %107, %108 + %110 = add i32 %109, %97 br label %_ZN2cv3RNG7uniformEii.exit61 -_ZN2cv3RNG7uniformEii.exit61: ; preds = %_ZN2cv3RNG7uniformEii.exit, %106 - %116 = phi i32 [ %115, %106 ], [ %102, %_ZN2cv3RNG7uniformEii.exit ] - %117 = load ptr, ptr %50, align 8 - %118 = load ptr, ptr %51, align 8 - %.not.i = icmp eq ptr %117, %118 - br i1 %.not.i, label %122, label %119 +_ZN2cv3RNG7uniformEii.exit61: ; preds = %_ZN2cv3RNG7uniformEii.exit, %101 + %111 = phi i32 [ %110, %101 ], [ %97, %_ZN2cv3RNG7uniformEii.exit ] + %112 = load ptr, ptr %50, align 8 + %113 = load ptr, ptr %51, align 8 + %.not.i = icmp eq ptr %112, %113 + br i1 %.not.i, label %117, label %114 -119: ; preds = %_ZN2cv3RNG7uniformEii.exit61 - %.sroa.4.0.insert.ext = zext i32 %116 to i64 +114: ; preds = %_ZN2cv3RNG7uniformEii.exit61 + %.sroa.4.0.insert.ext = zext i32 %111 to i64 %.sroa.4.0.insert.shift = shl nuw i64 %.sroa.4.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %100 to i64 + %.sroa.0.0.insert.ext = zext i32 %95 to i64 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.4.0.insert.shift, %.sroa.0.0.insert.ext - store i64 %.sroa.0.0.insert.insert, ptr %117, align 4 - %120 = load ptr, ptr %50, align 8 - %121 = getelementptr inbounds nuw i8, ptr %120, i64 8 - store ptr %121, ptr %50, align 8 + store i64 %.sroa.0.0.insert.insert, ptr %112, align 4 + %115 = load ptr, ptr %50, align 8 + %116 = getelementptr inbounds nuw i8, ptr %115, i64 8 + store ptr %116, ptr %50, align 8 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit -122: ; preds = %_ZN2cv3RNG7uniformEii.exit61 - %123 = load ptr, ptr %9, align 8 - %124 = ptrtoint ptr %117 to i64 - %125 = ptrtoint ptr %123 to i64 - %126 = sub i64 %124, %125 - %127 = icmp eq i64 %126, 9223372036854775800 - br i1 %127, label %128, label %_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i +117: ; preds = %_ZN2cv3RNG7uniformEii.exit61 + %118 = load ptr, ptr %9, align 8 + %119 = ptrtoint ptr %112 to i64 + %120 = ptrtoint ptr %118 to i64 + %121 = sub i64 %119, %120 + %122 = icmp eq i64 %121, 9223372036854775800 + br i1 %122, label %123, label %_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i -128: ; preds = %122 +123: ; preds = %117 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.5) #13 to label %.noexc62 unwind label %.loopexit.split-lp -.noexc62: ; preds = %128 +.noexc62: ; preds = %123 unreachable -_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %122 - %129 = ashr exact i64 %126, 3 - %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %129, i64 1) - %130 = add nsw i64 %.sroa.speculated.i.i.i, %129 - %131 = icmp ult i64 %130, %129 - %132 = call i64 @llvm.umin.i64(i64 %130, i64 1152921504606846975) - %133 = select i1 %131, i64 1152921504606846975, i64 %132 - %.not.i.i.i = icmp ne i64 %133, 0 +_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %117 + %124 = ashr exact i64 %121, 3 + %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %124, i64 1) + %125 = add nsw i64 %.sroa.speculated.i.i.i, %124 + %126 = icmp ult i64 %125, %124 + %127 = call i64 @llvm.umin.i64(i64 %125, i64 1152921504606846975) + %128 = select i1 %126, i64 1152921504606846975, i64 %127 + %.not.i.i.i = icmp ne i64 %128, 0 call void @llvm.assume(i1 %.not.i.i.i) - %134 = shl nuw nsw i64 %133, 3 - %135 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %134) #14 + %129 = shl nuw nsw i64 %128, 3 + %130 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %129) #14 to label %.noexc63 unwind label %.loopexit .noexc63: ; preds = %_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %136 = getelementptr inbounds i8, ptr %135, i64 %126 - %.sroa.4.0.insert.ext76 = zext i32 %116 to i64 + %131 = getelementptr inbounds i8, ptr %130, i64 %121 + %.sroa.4.0.insert.ext76 = zext i32 %111 to i64 %.sroa.4.0.insert.shift77 = shl nuw i64 %.sroa.4.0.insert.ext76, 32 - %.sroa.0.0.insert.ext72 = zext i32 %100 to i64 + %.sroa.0.0.insert.ext72 = zext i32 %95 to i64 %.sroa.0.0.insert.insert74 = or disjoint i64 %.sroa.4.0.insert.shift77, %.sroa.0.0.insert.ext72 - store i64 %.sroa.0.0.insert.insert74, ptr %136, align 4 - %.not10.i.i.i.i.i.i = icmp eq ptr %123, %117 + store i64 %.sroa.0.0.insert.insert74, ptr %131, align 4 + %.not10.i.i.i.i.i.i = icmp eq ptr %118, %112 br i1 %.not10.i.i.i.i.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i, label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %.noexc63, %.lr.ph.i.i.i.i.i.i - %.012.i.i.i.i.i.i = phi ptr [ %139, %.lr.ph.i.i.i.i.i.i ], [ %135, %.noexc63 ] - %.0911.i.i.i.i.i.i = phi ptr [ %138, %.lr.ph.i.i.i.i.i.i ], [ %123, %.noexc63 ] + %.012.i.i.i.i.i.i = phi ptr [ %134, %.lr.ph.i.i.i.i.i.i ], [ %130, %.noexc63 ] + %.0911.i.i.i.i.i.i = phi ptr [ %133, %.lr.ph.i.i.i.i.i.i ], [ %118, %.noexc63 ] call void @llvm.experimental.noalias.scope.decl(metadata !5) call void @llvm.experimental.noalias.scope.decl(metadata !8) - %137 = load i64, ptr %.0911.i.i.i.i.i.i, align 4, !alias.scope !8, !noalias !5 - store i64 %137, ptr %.012.i.i.i.i.i.i, align 4, !alias.scope !5, !noalias !8 - %138 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i.i.i, i64 8 - %139 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 8 - %.not.i.i.i.i.i.i = icmp eq ptr %138, %117 + %132 = load i64, ptr %.0911.i.i.i.i.i.i, align 4, !alias.scope !8, !noalias !5 + store i64 %132, ptr %.012.i.i.i.i.i.i, align 4, !alias.scope !5, !noalias !8 + %133 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i.i.i, i64 8 + %134 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 8 + %.not.i.i.i.i.i.i = icmp eq ptr %133, %112 br i1 %.not.i.i.i.i.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !10 _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %.noexc63 - %.0.lcssa.i.i.i.i.i.i = phi ptr [ %135, %.noexc63 ], [ %139, %.lr.ph.i.i.i.i.i.i ] - %140 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.i, i64 8 - %.not.i23.i.i = icmp eq ptr %123, null - br i1 %.not.i23.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %141 + %.0.lcssa.i.i.i.i.i.i = phi ptr [ %130, %.noexc63 ], [ %134, %.lr.ph.i.i.i.i.i.i ] + %135 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.i, i64 8 + %.not.i23.i.i = icmp eq ptr %118, null + br i1 %.not.i23.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %136 -141: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i - call void @_ZdlPv(ptr noundef nonnull %123) #15 +136: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i + call void @_ZdlPv(ptr noundef nonnull %118) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %141, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i - store ptr %135, ptr %9, align 8 - store ptr %140, ptr %50, align 8 - %142 = getelementptr inbounds nuw %"class.cv::Point_", ptr %135, i64 %133 - store ptr %142, ptr %51, align 8 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %136, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i + store ptr %130, ptr %9, align 8 + store ptr %135, ptr %50, align 8 + %137 = getelementptr inbounds nuw %"class.cv::Point_", ptr %130, i64 %128 + store ptr %137, ptr %51, align 8 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %119 - %143 = add nuw i32 %.03681, 1 - %exitcond.not = icmp eq i32 %143, %83 - br i1 %exitcond.not, label %146, label %84, !llvm.loop !12 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %114 + %138 = add nuw i32 %.03681, 1 + %.not.not = icmp samesign ult i32 %.03681, %78 + br i1 %.not.not, label %79, label %141, !llvm.loop !12 -144: ; preds = %46 - %145 = landingpad { ptr, i32 } +139: ; preds = %46 + %140 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70 @@ -346,12 +338,12 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect cleanup br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 -.loopexit.split-lp: ; preds = %128 +.loopexit.split-lp: ; preds = %123 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 -146: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit +141: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false) store i32 0, ptr %52, align 8 store i32 0, ptr %53, align 4 @@ -361,52 +353,52 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect store i32 -2113732596, ptr %12, align 8 store ptr %10, ptr %55, align 8 invoke void @_ZN2cv10convexHullERKNS_11_InputArrayERKNS_12_OutputArrayEbb(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %12, i1 noundef zeroext true, i1 noundef zeroext true) - to label %147 unwind label %154 + to label %142 unwind label %150 -147: ; preds = %146 +142: ; preds = %141 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 32, i1 false) - %148 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSERKNS_7Scalar_IdEE(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(32) %13) - to label %.preheader.preheader unwind label %152 + %143 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSERKNS_7Scalar_IdEE(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(32) %13) + to label %.preheader.preheader unwind label %148 -.preheader.preheader: ; preds = %147 - %wide.trip.count = zext i32 %83 to i64 +.preheader.preheader: ; preds = %142 + %144 = zext nneg i32 %78 to i64 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %151 - %indvars.iv = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next, %151 ] +.preheader: ; preds = %.preheader.preheader, %147 + %indvars.iv = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next, %147 ] store i64 0, ptr %58, align 8 store i32 50397184, ptr %14, align 8 store ptr %8, ptr %57, align 8 - %149 = load ptr, ptr %9, align 8 - %150 = getelementptr inbounds nuw %"class.cv::Point_", ptr %149, i64 %indvars.iv - %.sroa.0.0.copyload = load i64, ptr %150, align 4 + %145 = load ptr, ptr %9, align 8 + %146 = getelementptr inbounds nuw %"class.cv::Point_", ptr %145, i64 %indvars.iv + %.sroa.0.0.copyload = load i64, ptr %146, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, i8 0, i64 16, i1 false) store double 2.550000e+02, ptr %59, align 8 store double 0.000000e+00, ptr %60, align 8 invoke void @_ZN2cv6circleERKNS_17_InputOutputArrayENS_6Point_IiEEiRKNS_7Scalar_IdEEiii(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 %.sroa.0.0.copyload, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) %15, i32 noundef -1, i32 noundef 16, i32 noundef 0) - to label %151 unwind label %156 + to label %147 unwind label %152 -151: ; preds = %.preheader +147: ; preds = %.preheader %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond84.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond84.not, label %158, label %.preheader, !llvm.loop !13 + %.not44.not = icmp samesign ult i64 %indvars.iv, %144 + br i1 %.not44.not, label %.preheader, label %154, !llvm.loop !13 -152: ; preds = %161, %147 - %153 = landingpad { ptr, i32 } +148: ; preds = %157, %142 + %149 = landingpad { ptr, i32 } cleanup - br label %178 + br label %174 -154: ; preds = %146 - %155 = landingpad { ptr, i32 } +150: ; preds = %141 + %151 = landingpad { ptr, i32 } cleanup - br label %178 + br label %174 -156: ; preds = %.preheader - %157 = landingpad { ptr, i32 } +152: ; preds = %.preheader + %153 = landingpad { ptr, i32 } cleanup - br label %178 + br label %174 -158: ; preds = %151 +154: ; preds = %147 store i64 0, ptr %62, align 8 store i32 50397184, ptr %16, align 8 store ptr %8, ptr %61, align 8 @@ -418,114 +410,114 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect store double 2.550000e+02, ptr %66, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %67, i8 0, i64 16, i1 false) invoke void @_ZN2cv9polylinesERKNS_17_InputOutputArrayERKNS_11_InputArrayEbRKNS_7Scalar_IdEEiii(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %17, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(32) %18, i32 noundef 1, i32 noundef 16, i32 noundef 0) - to label %159 unwind label %171 + to label %155 unwind label %167 -159: ; preds = %158 +155: ; preds = %154 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %20) - to label %160 unwind label %173 + to label %156 unwind label %169 -160: ; preds = %159 +156: ; preds = %155 store i32 0, ptr %68, align 8 store i32 0, ptr %69, align 4 store i32 16842752, ptr %21, align 8 store ptr %8, ptr %70, align 8 invoke void @_ZN2cv6imshowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayE(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(24) %21) - to label %161 unwind label %175 + to label %157 unwind label %171 -161: ; preds = %160 +157: ; preds = %156 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12 - %162 = invoke noundef i32 @_ZN2cv7waitKeyEi(i32 noundef 0) - to label %163 unwind label %152 - -163: ; preds = %161 - %sext.mask = and i32 %162, 255 - %164 = icmp eq i32 %sext.mask, 27 - %165 = and i32 %162, 223 - %166 = icmp eq i32 %165, 81 - %or.cond5 = or i1 %164, %166 - %167 = load ptr, ptr %10, align 8 - %.not.i.i.i64 = icmp eq ptr %167, null - br i1 %.not.i.i.i64, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, label %168 - -168: ; preds = %163 - call void @_ZdlPv(ptr noundef nonnull %167) #15 + %158 = invoke noundef i32 @_ZN2cv7waitKeyEi(i32 noundef 0) + to label %159 unwind label %148 + +159: ; preds = %157 + %sext.mask = and i32 %158, 255 + %160 = icmp eq i32 %sext.mask, 27 + %161 = and i32 %158, 223 + %162 = icmp eq i32 %161, 81 + %or.cond5 = or i1 %160, %162 + %163 = load ptr, ptr %10, align 8 + %.not.i.i.i64 = icmp eq ptr %163, null + br i1 %.not.i.i.i64, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, label %164 + +164: ; preds = %159 + call void @_ZdlPv(ptr noundef nonnull %163) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit: ; preds = %163, %168 - %169 = load ptr, ptr %9, align 8 - %.not.i.i.i65 = icmp eq ptr %169, null - br i1 %.not.i.i.i65, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66, label %170 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit: ; preds = %159, %164 + %165 = load ptr, ptr %9, align 8 + %.not.i.i.i65 = icmp eq ptr %165, null + br i1 %.not.i.i.i65, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66, label %166 -170: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %169) #15 +166: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit + call void @_ZdlPv(ptr noundef nonnull %165) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66 -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, %170 - br i1 %or.cond5, label %183, label %71 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, %166 + br i1 %or.cond5, label %179, label %71 -171: ; preds = %158 - %172 = landingpad { ptr, i32 } +167: ; preds = %154 + %168 = landingpad { ptr, i32 } cleanup - br label %178 + br label %174 -173: ; preds = %159 - %174 = landingpad { ptr, i32 } +169: ; preds = %155 + %170 = landingpad { ptr, i32 } cleanup - br label %177 + br label %173 -175: ; preds = %160 - %176 = landingpad { ptr, i32 } +171: ; preds = %156 + %172 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12 - br label %177 + br label %173 -177: ; preds = %175, %173 - %.pn47.pn = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ] +173: ; preds = %171, %169 + %.pn47.pn = phi { ptr, i32 } [ %172, %171 ], [ %170, %169 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12 - br label %178 + br label %174 -178: ; preds = %171, %154, %177, %156, %152 - %.pn50 = phi { ptr, i32 } [ %157, %156 ], [ %153, %152 ], [ %.pn47.pn, %177 ], [ %155, %154 ], [ %172, %171 ] - %179 = load ptr, ptr %10, align 8 - %.not.i.i.i67 = icmp eq ptr %179, null - br i1 %.not.i.i.i67, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, label %180 +174: ; preds = %167, %150, %173, %152, %148 + %.pn50 = phi { ptr, i32 } [ %153, %152 ], [ %149, %148 ], [ %.pn47.pn, %173 ], [ %151, %150 ], [ %168, %167 ] + %175 = load ptr, ptr %10, align 8 + %.not.i.i.i67 = icmp eq ptr %175, null + br i1 %.not.i.i.i67, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, label %176 -180: ; preds = %178 - call void @_ZdlPv(ptr noundef nonnull %179) #15 +176: ; preds = %174 + call void @_ZdlPv(ptr noundef nonnull %175) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68: ; preds = %.loopexit, %.loopexit.split-lp, %180, %178 - %.pn52 = phi { ptr, i32 } [ %.pn50, %178 ], [ %.pn50, %180 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %181 = load ptr, ptr %9, align 8 - %.not.i.i.i69 = icmp eq ptr %181, null - br i1 %.not.i.i.i69, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, label %182 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68: ; preds = %.loopexit, %.loopexit.split-lp, %176, %174 + %.pn52 = phi { ptr, i32 } [ %.pn50, %174 ], [ %.pn50, %176 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %177 = load ptr, ptr %9, align 8 + %.not.i.i.i69 = icmp eq ptr %177, null + br i1 %.not.i.i.i69, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, label %178 -182: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 - call void @_ZdlPv(ptr noundef nonnull %181) #15 +178: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 + call void @_ZdlPv(ptr noundef nonnull %177) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70 -183: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66 +179: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #12 br label %_ZL4helpPPc.exit -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70: ; preds = %182, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, %144 - %.pn52.pn = phi { ptr, i32 } [ %145, %144 ], [ %.pn52, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 ], [ %.pn52, %182 ] +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70: ; preds = %178, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, %139 + %.pn52.pn = phi { ptr, i32 } [ %140, %139 ], [ %.pn52, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 ], [ %.pn52, %178 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #12 - br label %184 + br label %180 -_ZL4helpPPc.exit: ; preds = %.noexc59, %183 +_ZL4helpPPc.exit: ; preds = %.noexc59, %179 call void @_ZN2cv17CommandLineParserD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #12 ret i32 0 -184: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, %43, %42 +180: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, %43, %42 %.pn55 = phi { ptr, i32 } [ %44, %43 ], [ %.pn52.pn, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70 ], [ %.pn40, %42 ] call void @_ZN2cv17CommandLineParserD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #12 - br label %185 + br label %181 -185: ; preds = %184, %37 - %.pn55.pn = phi { ptr, i32 } [ %.pn55, %184 ], [ %.pn, %37 ] +181: ; preds = %180, %37 + %.pn55.pn = phi { ptr, i32 } [ %.pn55, %180 ], [ %.pn, %37 ] resume { ptr, i32 } %.pn55.pn } diff --git a/bench/opencv/optimized/qrcode_encoder.ll b/bench/opencv/optimized/qrcode_encoder.ll index 95f111d7cb4..2131b25cdc4 100644 --- a/bench/opencv/optimized/qrcode_encoder.ll +++ b/bench/opencv/optimized/qrcode_encoder.ll @@ -1925,130 +1925,127 @@ _ZNSt6vectorIhSaIhEEC2ERKS1_.exit: ; preds = %3, %17 .lr.ph21.split.us.preheader: ; preds = %_ZNSt6vectorIhSaIhEEC2ERKS1_.exit %22 = and i64 %.fr, 2147483647 - %23 = add i64 %4, 1 - %24 = add i64 %.fr, %5 - %25 = sub i64 %23, %24 - %wide.trip.count28 = and i64 %25, 4294967295 + %23 = zext nneg i32 %20 to i64 %wide.trip.count = and i64 %.fr, 2147483647 - %26 = getelementptr i8, ptr %10, i64 %22 + %24 = getelementptr i8, ptr %10, i64 %22 br label %.lr.ph21.split.us .lr.ph21.split.us: ; preds = %.lr.ph21.split.us.preheader, %..loopexit_crit_edge.us %indvars.iv25 = phi i64 [ 0, %.lr.ph21.split.us.preheader ], [ %indvars.iv.next26, %..loopexit_crit_edge.us ] - %27 = xor i64 %indvars.iv25, -1 - %28 = add i64 %6, %27 - %sext = shl i64 %28, 32 - %29 = ashr exact i64 %sext, 32 - %30 = getelementptr inbounds i8, ptr %19, i64 %29 - %31 = load i8, ptr %30, align 1 - %.not28.us = icmp eq i8 %31, 0 + %25 = xor i64 %indvars.iv25, -1 + %26 = add i64 %6, %25 + %sext = shl i64 %26, 32 + %27 = ashr exact i64 %sext, 32 + %28 = getelementptr inbounds i8, ptr %19, i64 %27 + %29 = load i8, ptr %28, align 1 + %.not28.us = icmp eq i8 %29, 0 br i1 %.not28.us, label %..loopexit_crit_edge.us, label %.preheader.us -32: ; preds = %.preheader.us, %50 - %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %50 ] - %33 = xor i64 %indvars.iv, -1 - %34 = getelementptr i8, ptr %26, i64 %33 - %35 = load i8, ptr %34, align 1 - %.not29.us = icmp eq i8 %35, 0 - br i1 %.not29.us, label %50, label %_ZN2cvL5gfMulEhh.exit.us +30: ; preds = %.preheader.us, %48 + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %48 ] + %31 = xor i64 %indvars.iv, -1 + %32 = getelementptr i8, ptr %24, i64 %31 + %33 = load i8, ptr %32, align 1 + %.not29.us = icmp eq i8 %33, 0 + br i1 %.not29.us, label %48, label %_ZN2cvL5gfMulEhh.exit.us -_ZN2cvL5gfMulEhh.exit.us: ; preds = %32 - %36 = zext i8 %35 to i64 - %37 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %36 - %38 = load i8, ptr %37, align 1 +_ZN2cvL5gfMulEhh.exit.us: ; preds = %30 + %34 = zext i8 %33 to i64 + %35 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %34 + %36 = load i8, ptr %35, align 1 + %37 = zext i8 %36 to i16 + %38 = load i8, ptr %50, align 1 %39 = zext i8 %38 to i16 - %40 = load i8, ptr %52, align 1 - %41 = zext i8 %40 to i16 - %.lhs.trunc.i.us = add nuw nsw i16 %41, %39 - %42 = urem i16 %.lhs.trunc.i.us, 255 - %43 = zext nneg i16 %42 to i64 - %44 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_expE, i64 0, i64 %43 - %45 = load i8, ptr %44, align 1 - %46 = sub nsw i64 %29, %indvars.iv - %47 = getelementptr inbounds i8, ptr %19, i64 %46 - %48 = load i8, ptr %47, align 1 - %49 = xor i8 %48, %45 - store i8 %49, ptr %47, align 1 - br label %50 + %.lhs.trunc.i.us = add nuw nsw i16 %39, %37 + %40 = urem i16 %.lhs.trunc.i.us, 255 + %41 = zext nneg i16 %40 to i64 + %42 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_expE, i64 0, i64 %41 + %43 = load i8, ptr %42, align 1 + %44 = sub nsw i64 %27, %indvars.iv + %45 = getelementptr inbounds i8, ptr %19, i64 %44 + %46 = load i8, ptr %45, align 1 + %47 = xor i8 %46, %43 + store i8 %47, ptr %45, align 1 + br label %48 -50: ; preds = %_ZN2cvL5gfMulEhh.exit.us, %32 +48: ; preds = %_ZN2cvL5gfMulEhh.exit.us, %30 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %32, !llvm.loop !12 + br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %30, !llvm.loop !12 -..loopexit_crit_edge.us: ; preds = %50, %.lr.ph21.split.us +..loopexit_crit_edge.us: ; preds = %48, %.lr.ph21.split.us %indvars.iv.next26 = add nuw nsw i64 %indvars.iv25, 1 - %exitcond29.not = icmp eq i64 %indvars.iv.next26, %wide.trip.count28 - br i1 %exitcond29.not, label %._crit_edge, label %.lr.ph21.split.us, !llvm.loop !13 + %.not.us.not = icmp samesign ult i64 %indvars.iv25, %23 + br i1 %.not.us.not, label %.lr.ph21.split.us, label %._crit_edge, !llvm.loop !13 .preheader.us: ; preds = %.lr.ph21.split.us - %51 = zext i8 %31 to i64 - %52 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %51 - br label %32 + %49 = zext i8 %29 to i64 + %50 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %49 + br label %30 ._crit_edge: ; preds = %..loopexit_crit_edge.us, %_ZNSt6vectorIhSaIhEEC2ERKS1_.exit - %53 = sext i32 %1 to i64 - %54 = icmp slt i32 %1, 0 - br i1 %54, label %55, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i + %51 = sext i32 %1 to i64 + %52 = icmp slt i32 %1, 0 + br i1 %52, label %53, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i -55: ; preds = %._crit_edge +53: ; preds = %._crit_edge invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.28) #27 to label %.noexc.i unwind label %.body -.noexc.i: ; preds = %55 +.noexc.i: ; preds = %53 unreachable _ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %._crit_edge %.not.i.i.i = icmp eq i32 %1, 0 - br i1 %.not.i.i.i, label %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit, label %56 + br i1 %.not.i.i.i, label %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit, label %54 -56: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i - %57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %53) #28 +54: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i + %55 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %51) #28 to label %.noexc5.i unwind label %.body -.noexc5.i: ; preds = %56 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %57, ptr align 1 %19, i64 %53, i1 false) +.noexc5.i: ; preds = %54 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %55, ptr align 1 %19, i64 %51, i1 false) br label %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit _ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i, %.noexc5.i - %.sroa.01.0 = phi ptr [ %57, %.noexc5.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i ] - %.sroa.8.0 = getelementptr inbounds nuw i8, ptr %.sroa.01.0, i64 %53 - %58 = load ptr, ptr %2, align 8 - %59 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %60 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %.sroa.01.0 = phi ptr [ %55, %.noexc5.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i ] + %.sroa.8.0 = getelementptr inbounds nuw i8, ptr %.sroa.01.0, i64 %51 + %56 = load ptr, ptr %2, align 8 + %57 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %58 = getelementptr inbounds nuw i8, ptr %2, i64 16 store ptr %.sroa.01.0, ptr %2, align 8 - store ptr %.sroa.8.0, ptr %59, align 8 - store ptr %.sroa.8.0, ptr %60, align 8 - %.not.i.i.i.i.i = icmp eq ptr %58, null - br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIhSaIhEED2Ev.exit, label %61 + store ptr %.sroa.8.0, ptr %57, align 8 + store ptr %.sroa.8.0, ptr %58, align 8 + %.not.i.i.i.i.i = icmp eq ptr %56, null + br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIhSaIhEED2Ev.exit, label %59 -61: ; preds = %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit - tail call void @_ZdlPv(ptr noundef nonnull %58) #29 +59: ; preds = %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit + tail call void @_ZdlPv(ptr noundef nonnull %56) #29 br label %_ZNSt6vectorIhSaIhEED2Ev.exit -_ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %61, %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit +_ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %59, %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit %.not.i.i.i32 = icmp eq ptr %19, null - br i1 %.not.i.i.i32, label %_ZNSt6vectorIhSaIhEED2Ev.exit34, label %62 + br i1 %.not.i.i.i32, label %_ZNSt6vectorIhSaIhEED2Ev.exit34, label %60 -62: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit +60: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit tail call void @_ZdlPv(ptr noundef nonnull %19) #29 br label %_ZNSt6vectorIhSaIhEED2Ev.exit34 -_ZNSt6vectorIhSaIhEED2Ev.exit34: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit, %62 +_ZNSt6vectorIhSaIhEED2Ev.exit34: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit, %60 ret void -.body: ; preds = %56, %55 - %63 = landingpad { ptr, i32 } +.body: ; preds = %54, %53 + %61 = landingpad { ptr, i32 } cleanup %.not.i.i.i35 = icmp eq ptr %19, null - br i1 %.not.i.i.i35, label %_ZNSt6vectorIhSaIhEED2Ev.exit37, label %64 + br i1 %.not.i.i.i35, label %_ZNSt6vectorIhSaIhEED2Ev.exit37, label %62 -64: ; preds = %.body +62: ; preds = %.body tail call void @_ZdlPv(ptr noundef nonnull %19) #29 br label %_ZNSt6vectorIhSaIhEED2Ev.exit37 -_ZNSt6vectorIhSaIhEED2Ev.exit37: ; preds = %.body, %64 - resume { ptr, i32 } %63 +_ZNSt6vectorIhSaIhEED2Ev.exit37: ; preds = %.body, %62 + resume { ptr, i32 } %61 } ; Function Attrs: mustprogress uwtable diff --git a/bench/openjdk/optimized/mlib_c_ImageCopy.ll b/bench/openjdk/optimized/mlib_c_ImageCopy.ll index 0484f6f911f..00cd09457e8 100644 --- a/bench/openjdk/optimized/mlib_c_ImageCopy.ll +++ b/bench/openjdk/optimized/mlib_c_ImageCopy.ll @@ -318,7 +318,7 @@ define hidden void @mlib_ImageCopy_na(ptr noundef %0, ptr noundef %1, i32 nounde ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define hidden void @mlib_ImageCopy_bit_al(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #2 { %5 = icmp slt i32 %2, 1 - br i1 %5, label %91, label %6 + br i1 %5, label %87, label %6 6: ; preds = %4 %7 = sub nsw i32 8, %3 @@ -381,123 +381,120 @@ define hidden void @mlib_ImageCopy_bit_al(ptr noundef %0, ptr noundef %1, i32 no %40 = xor i64 %.lcssa, %39 %41 = and i64 %40, 7 %42 = icmp eq i64 %41, 0 - br i1 %42, label %.preheader, label %51 + br i1 %42, label %.preheader, label %48 .preheader: ; preds = %._crit_edge %43 = add nsw i32 %26, -8 %.not98120 = icmp sgt i32 %.092.lcssa, %43 - br i1 %.not98120, label %.loopexit, label %.lr.ph123.preheader - -.lr.ph123.preheader: ; preds = %.preheader - %44 = sub i32 %43, %.092.lcssa - %45 = lshr i32 %44, 3 - %46 = add nuw nsw i32 %45, 1 - %wide.trip.count149 = zext nneg i32 %46 to i64 - br label %.lr.ph123 - -.lr.ph123: ; preds = %.lr.ph123.preheader, %.lr.ph123 - %indvars.iv146 = phi i64 [ 0, %.lr.ph123.preheader ], [ %indvars.iv.next147, %.lr.ph123 ] - %.193121 = phi i32 [ %.092.lcssa, %.lr.ph123.preheader ], [ %50, %.lr.ph123 ] - %47 = getelementptr inbounds nuw double, ptr %.0.lcssa, i64 %indvars.iv146 - %48 = load double, ptr %47, align 8 - %49 = getelementptr inbounds nuw double, ptr %.087.lcssa, i64 %indvars.iv146 - store double %48, ptr %49, align 8 - %50 = add nuw nsw i32 %.193121, 8 + br i1 %.not98120, label %.loopexit, label %.lr.ph123 + +.lr.ph123: ; preds = %.preheader, %.lr.ph123 + %indvars.iv146 = phi i64 [ %indvars.iv.next147, %.lr.ph123 ], [ 0, %.preheader ] + %.193121 = phi i32 [ %47, %.lr.ph123 ], [ %.092.lcssa, %.preheader ] + %44 = getelementptr inbounds nuw double, ptr %.0.lcssa, i64 %indvars.iv146 + %45 = load double, ptr %44, align 8 + %46 = getelementptr inbounds nuw double, ptr %.087.lcssa, i64 %indvars.iv146 + store double %45, ptr %46, align 8 + %47 = add nuw nsw i32 %.193121, 8 %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 - %exitcond150 = icmp eq i64 %indvars.iv.next147, %wide.trip.count149 - br i1 %exitcond150, label %.loopexit, label %.lr.ph123, !llvm.loop !16 - -51: ; preds = %._crit_edge - %52 = and i64 %39, 7 - %53 = sub nsw i64 0, %52 - %54 = getelementptr inbounds i8, ptr %.0.lcssa, i64 %53 - %55 = add nsw i32 %26, -8 - %.not97112 = icmp sgt i32 %.092.lcssa, %55 + %.not98 = icmp sgt i32 %47, %43 + br i1 %.not98, label %.loopexit.loopexit, label %.lr.ph123, !llvm.loop !16 + +48: ; preds = %._crit_edge + %49 = and i64 %39, 7 + %50 = sub nsw i64 0, %49 + %51 = getelementptr inbounds i8, ptr %.0.lcssa, i64 %50 + %52 = add nsw i32 %26, -8 + %.not97112 = icmp sgt i32 %.092.lcssa, %52 br i1 %.not97112, label %.loopexit, label %.lr.ph117 -.lr.ph117: ; preds = %51 - %56 = load i64, ptr %54, align 8 - %57 = trunc i64 %39 to i32 - %58 = shl i32 %57, 3 - %59 = and i32 %58, 56 - %60 = sub nuw nsw i32 64, %59 - %61 = zext nneg i32 %59 to i64 - %62 = zext nneg i32 %60 to i64 - %63 = sub i32 %55, %.092.lcssa - %64 = lshr i32 %63, 3 - %65 = add nuw nsw i32 %64, 1 - %wide.trip.count = zext nneg i32 %65 to i64 - br label %66 - -66: ; preds = %.lr.ph117, %66 - %indvars.iv = phi i64 [ 0, %.lr.ph117 ], [ %indvars.iv.next, %66 ] - %.086115 = phi i64 [ %56, %.lr.ph117 ], [ %68, %66 ] - %.3113 = phi i32 [ %.092.lcssa, %.lr.ph117 ], [ %73, %66 ] +.lr.ph117: ; preds = %48 + %53 = load i64, ptr %51, align 8 + %54 = trunc i64 %39 to i32 + %55 = shl i32 %54, 3 + %56 = and i32 %55, 56 + %57 = sub nuw nsw i32 64, %56 + %58 = zext nneg i32 %56 to i64 + %59 = zext nneg i32 %57 to i64 + br label %60 + +60: ; preds = %.lr.ph117, %60 + %indvars.iv = phi i64 [ 0, %.lr.ph117 ], [ %indvars.iv.next, %60 ] + %.086115 = phi i64 [ %53, %.lr.ph117 ], [ %62, %60 ] + %.3113 = phi i32 [ %.092.lcssa, %.lr.ph117 ], [ %67, %60 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %67 = getelementptr inbounds nuw i64, ptr %54, i64 %indvars.iv.next - %68 = load i64, ptr %67, align 8 - %69 = shl i64 %.086115, %61 - %70 = lshr i64 %68, %62 - %71 = or i64 %70, %69 - %72 = getelementptr inbounds nuw i64, ptr %.087.lcssa, i64 %indvars.iv - store i64 %71, ptr %72, align 8 - %73 = add nuw nsw i32 %.3113, 8 - %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond, label %.loopexit, label %66, !llvm.loop !17 - -.loopexit: ; preds = %66, %.lr.ph123, %51, %.preheader - %.294 = phi i32 [ %.092.lcssa, %.preheader ], [ %.092.lcssa, %51 ], [ %50, %.lr.ph123 ], [ %73, %66 ] - %.pn.in.in = phi i32 [ 0, %.preheader ], [ 0, %51 ], [ %46, %.lr.ph123 ], [ %65, %66 ] + %61 = getelementptr inbounds nuw i64, ptr %51, i64 %indvars.iv.next + %62 = load i64, ptr %61, align 8 + %63 = shl i64 %.086115, %58 + %64 = lshr i64 %62, %59 + %65 = or i64 %64, %63 + %66 = getelementptr inbounds nuw i64, ptr %.087.lcssa, i64 %indvars.iv + store i64 %65, ptr %66, align 8 + %67 = add nuw nsw i32 %.3113, 8 + %.not97 = icmp sgt i32 %67, %52 + br i1 %.not97, label %.loopexit.loopexit134, label %60, !llvm.loop !17 + +.loopexit.loopexit: ; preds = %.lr.ph123 + %68 = trunc nuw nsw i64 %indvars.iv.next147 to i32 + br label %.loopexit + +.loopexit.loopexit134: ; preds = %60 + %69 = trunc nuw nsw i64 %indvars.iv.next to i32 + br label %.loopexit + +.loopexit: ; preds = %.loopexit.loopexit134, %.loopexit.loopexit, %48, %.preheader + %.294 = phi i32 [ %.092.lcssa, %.preheader ], [ %.092.lcssa, %48 ], [ %47, %.loopexit.loopexit ], [ %67, %.loopexit.loopexit134 ] + %.pn.in.in = phi i32 [ 0, %.preheader ], [ 0, %48 ], [ %68, %.loopexit.loopexit ], [ %69, %.loopexit.loopexit134 ] %.pn.in = shl i32 %.pn.in.in, 3 %.pn = sext i32 %.pn.in to i64 %.1 = getelementptr inbounds i8, ptr %.0.lcssa, i64 %.pn %.188 = getelementptr inbounds i8, ptr %.087.lcssa, i64 %.pn - %74 = icmp slt i32 %.294, %26 - br i1 %74, label %.lr.ph130, label %._crit_edge131 + %70 = icmp slt i32 %.294, %26 + br i1 %70, label %.lr.ph130, label %._crit_edge131 .lr.ph130: ; preds = %.loopexit, %.lr.ph130 - %.2128 = phi ptr [ %75, %.lr.ph130 ], [ %.1, %.loopexit ] - %.289127 = phi ptr [ %77, %.lr.ph130 ], [ %.188, %.loopexit ] - %.4126 = phi i32 [ %78, %.lr.ph130 ], [ %.294, %.loopexit ] - %75 = getelementptr inbounds nuw i8, ptr %.2128, i64 1 - %76 = load i8, ptr %.2128, align 1 - %77 = getelementptr inbounds nuw i8, ptr %.289127, i64 1 - store i8 %76, ptr %.289127, align 1 - %78 = add nuw nsw i32 %.4126, 1 - %exitcond151.not = icmp eq i32 %78, %26 - br i1 %exitcond151.not, label %._crit_edge131, label %.lr.ph130, !llvm.loop !18 + %.2128 = phi ptr [ %71, %.lr.ph130 ], [ %.1, %.loopexit ] + %.289127 = phi ptr [ %73, %.lr.ph130 ], [ %.188, %.loopexit ] + %.4126 = phi i32 [ %74, %.lr.ph130 ], [ %.294, %.loopexit ] + %71 = getelementptr inbounds nuw i8, ptr %.2128, i64 1 + %72 = load i8, ptr %.2128, align 1 + %73 = getelementptr inbounds nuw i8, ptr %.289127, i64 1 + store i8 %72, ptr %.289127, align 1 + %74 = add nuw nsw i32 %.4126, 1 + %exitcond.not = icmp eq i32 %74, %26 + br i1 %exitcond.not, label %._crit_edge131, label %.lr.ph130, !llvm.loop !18 ._crit_edge131: ; preds = %.lr.ph130, %.loopexit - %.289.lcssa = phi ptr [ %.188, %.loopexit ], [ %77, %.lr.ph130 ] - %.2.lcssa = phi ptr [ %.1, %.loopexit ], [ %75, %.lr.ph130 ] - %79 = and i32 %25, 7 - %.not100 = icmp eq i32 %79, 0 - br i1 %.not100, label %91, label %80 - -80: ; preds = %._crit_edge131 - %81 = sub nuw nsw i32 8, %79 - %82 = shl nuw nsw i32 255, %81 - %83 = and i32 %82, 254 + %.289.lcssa = phi ptr [ %.188, %.loopexit ], [ %73, %.lr.ph130 ] + %.2.lcssa = phi ptr [ %.1, %.loopexit ], [ %71, %.lr.ph130 ] + %75 = and i32 %25, 7 + %.not100 = icmp eq i32 %75, 0 + br i1 %.not100, label %87, label %76 + +76: ; preds = %._crit_edge131 + %77 = sub nuw nsw i32 8, %75 + %78 = shl nuw nsw i32 255, %77 + %79 = and i32 %78, 254 br label %.sink.split -.sink.split: ; preds = %8, %80 - %.sink166 = phi i32 [ %83, %80 ], [ %12, %8 ] - %.2.lcssa.sink = phi ptr [ %.2.lcssa, %80 ], [ %0, %8 ] - %.sink163 = phi i32 [ %82, %80 ], [ %12, %8 ] - %.289.lcssa.sink = phi ptr [ %.289.lcssa, %80 ], [ %1, %8 ] +.sink.split: ; preds = %8, %76 + %.sink162 = phi i32 [ %79, %76 ], [ %12, %8 ] + %.2.lcssa.sink = phi ptr [ %.2.lcssa, %76 ], [ %0, %8 ] + %.sink159 = phi i32 [ %78, %76 ], [ %12, %8 ] + %.289.lcssa.sink = phi ptr [ %.289.lcssa, %76 ], [ %1, %8 ] %.sink.in = load i8, ptr %.289.lcssa.sink, align 1 %.sink = zext i8 %.sink.in to i32 - %84 = xor i32 %.sink166, -1 - %85 = and i32 %.sink, %84 - %86 = load i8, ptr %.2.lcssa.sink, align 1 - %87 = zext i8 %86 to i32 - %88 = and i32 %.sink163, %87 - %89 = or i32 %88, %85 - %90 = trunc nuw i32 %89 to i8 - store i8 %90, ptr %.289.lcssa.sink, align 1 - br label %91 - -91: ; preds = %.sink.split, %4, %._crit_edge131 + %80 = xor i32 %.sink162, -1 + %81 = and i32 %.sink, %80 + %82 = load i8, ptr %.2.lcssa.sink, align 1 + %83 = zext i8 %82 to i32 + %84 = and i32 %.sink159, %83 + %85 = or i32 %84, %81 + %86 = trunc nuw i32 %85 to i8 + store i8 %86, ptr %.289.lcssa.sink, align 1 + br label %87 + +87: ; preds = %.sink.split, %4, %._crit_edge131 ret void } diff --git a/bench/openjdk/optimized/sharedRuntimeTrig.ll b/bench/openjdk/optimized/sharedRuntimeTrig.ll index 2517d1a4e7e..e5617b9f6e2 100644 --- a/bench/openjdk/optimized/sharedRuntimeTrig.ll +++ b/bench/openjdk/optimized/sharedRuntimeTrig.ll @@ -588,8 +588,8 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br i1 %exitcond.not.i, label %.preheader18.i, label %.lr.ph.i, !llvm.loop !11 .preheader16.i: ; preds = %._crit_edge.us.i, %.preheader17.preheader.i - %wide.trip.count130.i.pre-phi = phi i64 [ %.pre152, %.preheader17.preheader.i ], [ %wide.trip.count101.i, %._crit_edge.us.i ] - %.not269.not31163.i = phi i1 [ false, %.preheader17.preheader.i ], [ true, %._crit_edge.us.i ] + %wide.trip.count128.i.pre-phi = phi i64 [ %.pre152, %.preheader17.preheader.i ], [ %wide.trip.count101.i, %._crit_edge.us.i ] + %.not269.not31161.i = phi i1 [ false, %.preheader17.preheader.i ], [ true, %._crit_edge.us.i ] %154 = icmp sgt i32 %.neg262.i, 24 %155 = icmp eq i32 %127, 0 %156 = sub nsw i32 48, %.neg262.i @@ -611,32 +611,30 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 %162 = zext nneg i32 %.0231.i to i64 %163 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %162 %164 = load double, ptr %163, align 8 - %165 = tail call i32 @llvm.smax.i32(i32 %.0231.i, i32 1) - %wide.trip.count114.i = zext nneg i32 %165 to i64 br label %.lr.ph39.i .lr.ph39.i: ; preds = %.lr.ph39.i, %.lr.ph39.preheader.i %indvars.iv109.i = phi i64 [ 0, %.lr.ph39.preheader.i ], [ %indvars.iv.next110.i, %.lr.ph39.i ] %indvars.iv107.i = phi i64 [ %162, %.lr.ph39.preheader.i ], [ %indvars.iv.next108.i, %.lr.ph39.i ] - %.022638.i = phi double [ %164, %.lr.ph39.preheader.i ], [ %175, %.lr.ph39.i ] - %166 = fmul double %.022638.i, 0x3E70000000000000 - %167 = fptosi double %166 to i32 - %168 = sitofp i32 %167 to double - %169 = fmul double %168, 0x4170000000000000 - %170 = fsub double %.022638.i, %169 - %171 = fptosi double %170 to i32 - %172 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv109.i - store i32 %171, ptr %172, align 4 + %.022638.i = phi double [ %164, %.lr.ph39.preheader.i ], [ %174, %.lr.ph39.i ] + %165 = fmul double %.022638.i, 0x3E70000000000000 + %166 = fptosi double %165 to i32 + %167 = sitofp i32 %166 to double + %168 = fmul double %167, 0x4170000000000000 + %169 = fsub double %.022638.i, %168 + %170 = fptosi double %169 to i32 + %171 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv109.i + store i32 %170, ptr %171, align 4 %indvars.iv.next108.i = add nsw i64 %indvars.iv107.i, -1 - %173 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next108.i - %174 = load double, ptr %173, align 8 - %175 = fadd double %174, %168 + %172 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next108.i + %173 = load double, ptr %172, align 8 + %174 = fadd double %173, %167 %indvars.iv.next110.i = add nuw nsw i64 %indvars.iv109.i, 1 - %exitcond115.not.i = icmp eq i64 %indvars.iv.next110.i, %wide.trip.count114.i - br i1 %exitcond115.not.i, label %._crit_edge.i, label %.lr.ph39.i, !llvm.loop !13 + %175 = icmp samesign ugt i64 %indvars.iv107.i, 1 + br i1 %175, label %.lr.ph39.i, label %._crit_edge.i, !llvm.loop !13 ._crit_edge.i: ; preds = %.lr.ph39.i - %176 = bitcast double %175 to i64 + %176 = bitcast double %174 to i64 %.sroa.0.4.extract.shift.i.i.i = lshr i64 %176, 32 %.sroa.0.4.extract.trunc.i.i.i = trunc nuw i64 %.sroa.0.4.extract.shift.i.i.i to i32 %177 = lshr i32 %.sroa.0.4.extract.trunc.i.i.i, 20 @@ -654,7 +652,7 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br i1 %182, label %_ZL7scalbnAdi.exit.i, label %183 183: ; preds = %179 - %184 = fmul double %175, 0x4350000000000000 + %184 = fmul double %174, 0x4350000000000000 %185 = bitcast double %184 to i64 %.sroa.0.4.extract.shift.i22.i.i = lshr i64 %185, 32 %.sroa.0.4.extract.trunc.i23.i.i = trunc nuw i64 %.sroa.0.4.extract.shift.i22.i.i to i32 @@ -664,13 +662,13 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br label %.thread.i.i 189: ; preds = %._crit_edge.i - %190 = fadd double %175, %175 + %190 = fadd double %174, %174 br label %_ZL7scalbnAdi.exit.i .thread.i.i: ; preds = %183, %._crit_edge.i %.01844.i.i = phi i32 [ %.sroa.0.4.extract.trunc.i23.i.i, %183 ], [ %.sroa.0.4.extract.trunc.i.i.i, %._crit_edge.i ] %.01943.i.i = phi i32 [ %188, %183 ], [ %178, %._crit_edge.i ] - %.03842.i.i = phi double [ %184, %183 ], [ %175, %._crit_edge.i ] + %.03842.i.i = phi double [ %184, %183 ], [ %174, %._crit_edge.i ] %191 = add nsw i32 %.01943.i.i, %127 %192 = icmp sgt i32 %191, 2046 br i1 %192, label %193, label %196 @@ -720,7 +718,7 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br label %_ZL7scalbnAdi.exit.i _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %193, %189, %179 - %.0.i.i = phi double [ %190, %189 ], [ %195, %193 ], [ %203, %198 ], [ %208, %206 ], [ %216, %209 ], [ %175, %179 ] + %.0.i.i = phi double [ %190, %189 ], [ %195, %193 ], [ %203, %198 ], [ %208, %206 ], [ %216, %209 ], [ %174, %179 ] %217 = fmul double %.0.i.i, 1.250000e-01 %218 = tail call double @llvm.floor.f64(double %217) %219 = fmul double %218, 8.000000e+00 @@ -768,13 +766,13 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 %.02285.i = phi i32 [ %.0228.i, %243 ], [ 2, %241 ] %.02493.i = phi i32 [ %.0249.i, %243 ], [ %221, %241 ] %umax.i = tail call i32 @llvm.umax.i32(i32 %.0231.i, i32 1) - %wide.trip.count119.i = zext i32 %umax.i to i64 + %wide.trip.count117.i = zext i32 %umax.i to i64 br label %245 245: ; preds = %251, %.thread.i - %indvars.iv116.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next117.i, %251 ] + %indvars.iv114.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next115.i, %251 ] %.025140.i = phi i32 [ 0, %.thread.i ], [ %.1252.i, %251 ] - %246 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv116.i + %246 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv114.i %247 = load i32, ptr %246, align 4 %248 = icmp eq i32 %.025140.i, 0 br i1 %248, label %249, label %.sink.split.i @@ -784,17 +782,17 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 br i1 %.not268.i, label %251, label %.sink.split.i .sink.split.i: ; preds = %249, %245 - %.sink180.i = phi i32 [ 16777216, %249 ], [ 16777215, %245 ] - %250 = sub nsw i32 %.sink180.i, %247 + %.sink178.i = phi i32 [ 16777216, %249 ], [ 16777215, %245 ] + %250 = sub nsw i32 %.sink178.i, %247 store i32 %250, ptr %246, align 4 br label %251 251: ; preds = %.sink.split.i, %249 %.not263.i = phi i1 [ true, %249 ], [ false, %.sink.split.i ] %.1252.i = phi i32 [ 0, %249 ], [ 1, %.sink.split.i ] - %indvars.iv.next117.i = add nuw nsw i64 %indvars.iv116.i, 1 - %exitcond120.not.i = icmp eq i64 %indvars.iv.next117.i, %wide.trip.count119.i - br i1 %exitcond120.not.i, label %252, label %245, !llvm.loop !14 + %indvars.iv.next115.i = add nuw nsw i64 %indvars.iv114.i, 1 + %exitcond118.not.i = icmp eq i64 %indvars.iv.next115.i, %wide.trip.count117.i + br i1 %exitcond118.not.i, label %252, label %245, !llvm.loop !14 252: ; preds = %251 %253 = add nsw i32 %.02493.i, 1 @@ -802,24 +800,24 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 254: ; preds = %252 switch i32 %.neg262.i, label %261 [ - i32 25, label %.sink.split181.i + i32 25, label %.sink.split179.i i32 26, label %255 ] 255: ; preds = %254 - br label %.sink.split181.i + br label %.sink.split179.i -.sink.split181.i: ; preds = %255, %254 - %.sink184.i = phi i32 [ 4194303, %255 ], [ 8388607, %254 ] +.sink.split179.i: ; preds = %255, %254 + %.sink182.i = phi i32 [ 4194303, %255 ], [ 8388607, %254 ] %256 = add nsw i32 %.0231.i, -1 %257 = sext i32 %256 to i64 %258 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %257 %259 = load i32, ptr %258, align 4 - %260 = and i32 %259, %.sink184.i + %260 = and i32 %259, %.sink182.i store i32 %260, ptr %258, align 4 br label %261 -261: ; preds = %.sink.split181.i, %254, %252 +261: ; preds = %.sink.split179.i, %254, %252 %262 = icmp eq i32 %.02285.i, 2 br i1 %262, label %263, label %.thread6.i @@ -846,13 +844,13 @@ _ZL7scalbnAdi.exit285.i: ; preds = %263 br label %.preheader14.i .lr.ph44.i: ; preds = %.preheader15.i, %.lr.ph44.i - %indvars.iv121.i = phi i64 [ %indvars.iv.next122.i, %.lr.ph44.i ], [ %162, %.preheader15.i ] + %indvars.iv119.i = phi i64 [ %indvars.iv.next120.i, %.lr.ph44.i ], [ %162, %.preheader15.i ] %.323943.i = phi i32 [ %270, %.lr.ph44.i ], [ 0, %.preheader15.i ] - %indvars.iv.next122.i = add nsw i64 %indvars.iv121.i, -1 - %268 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next122.i + %indvars.iv.next120.i = add nsw i64 %indvars.iv119.i, -1 + %268 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next120.i %269 = load i32, ptr %268, align 4 %270 = or i32 %269, %.323943.i - %271 = icmp sgt i64 %indvars.iv121.i, 5 + %271 = icmp sgt i64 %indvars.iv119.i, 5 br i1 %271, label %.lr.ph44.i, label %._crit_edge45.i, !llvm.loop !15 ._crit_edge45.i: ; preds = %.lr.ph44.i @@ -864,61 +862,61 @@ _ZL7scalbnAdi.exit285.i: ; preds = %263 br label %296 .preheader14.i: ; preds = %.preheader14.i.preheader, %.preheader14.i - %indvars.iv124.i = phi i64 [ %indvars.iv.next125.i, %.preheader14.i ], [ 1, %.preheader14.i.preheader ] - %274 = sub nsw i64 4, %indvars.iv124.i + %indvars.iv122.i = phi i64 [ %indvars.iv.next123.i, %.preheader14.i ], [ 1, %.preheader14.i.preheader ] + %274 = sub nsw i64 4, %indvars.iv122.i %275 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %274 %276 = load i32, ptr %275, align 4 %277 = icmp eq i32 %276, 0 - %indvars.iv.next125.i = add nuw nsw i64 %indvars.iv124.i, 1 + %indvars.iv.next123.i = add nuw nsw i64 %indvars.iv122.i, 1 br i1 %277, label %.preheader14.i, label %.preheader12.i, !llvm.loop !16 .preheader12.i: ; preds = %.preheader14.i - %278 = trunc nuw nsw i64 %indvars.iv124.i to i32 + %278 = trunc nuw nsw i64 %indvars.iv122.i to i32 %279 = add nuw nsw i32 %.0231.i, %278 %280 = sext i32 %.0231.i to i64 br label %281 281: ; preds = %._crit_edge52.i, %.preheader12.i - %indvars.iv132.i = phi i64 [ %280, %.preheader12.i ], [ %indvars.iv.next133.i, %._crit_edge52.i ] - %indvars.iv.next133.i = add nuw nsw i64 %indvars.iv132.i, 1 - %gep.i = getelementptr i32, ptr %invariant.gep.i, i64 %indvars.iv.next133.i + %indvars.iv130.i = phi i64 [ %280, %.preheader12.i ], [ %indvars.iv.next131.i, %._crit_edge52.i ] + %indvars.iv.next131.i = add nuw nsw i64 %indvars.iv130.i, 1 + %gep.i = getelementptr i32, ptr %invariant.gep.i, i64 %indvars.iv.next131.i %282 = load i32, ptr %gep.i, align 4 %283 = sitofp i32 %282 to double - %284 = add i64 %indvars.iv149, %indvars.iv132.i + %284 = add i64 %indvars.iv149, %indvars.iv130.i %sext153 = shl i64 %284, 32 %285 = ashr exact i64 %sext153, 32 %286 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %285 store double %283, ptr %286, align 8 - br i1 %.not269.not31163.i, label %.lr.ph51.i, label %._crit_edge52.i + br i1 %.not269.not31161.i, label %.lr.ph51.i, label %._crit_edge52.i .lr.ph51.i: ; preds = %281, %.lr.ph51.i - %indvars.iv127.i = phi i64 [ %indvars.iv.next128.i, %.lr.ph51.i ], [ 0, %281 ] + %indvars.iv125.i = phi i64 [ %indvars.iv.next126.i, %.lr.ph51.i ], [ 0, %281 ] %.149.i = phi double [ %293, %.lr.ph51.i ], [ 0.000000e+00, %281 ] - %287 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv127.i + %287 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv125.i %288 = load double, ptr %287, align 8 - %289 = sub nsw i64 %285, %indvars.iv127.i + %289 = sub nsw i64 %285, %indvars.iv125.i %290 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %289 %291 = load double, ptr %290, align 8 %292 = fmul double %288, %291 %293 = fadd double %.149.i, %292 - %indvars.iv.next128.i = add nuw nsw i64 %indvars.iv127.i, 1 - %exitcond131.not.i = icmp eq i64 %indvars.iv.next128.i, %wide.trip.count130.i.pre-phi - br i1 %exitcond131.not.i, label %._crit_edge52.i, label %.lr.ph51.i, !llvm.loop !17 + %indvars.iv.next126.i = add nuw nsw i64 %indvars.iv125.i, 1 + %exitcond129.not.i = icmp eq i64 %indvars.iv.next126.i, %wide.trip.count128.i.pre-phi + br i1 %exitcond129.not.i, label %._crit_edge52.i, label %.lr.ph51.i, !llvm.loop !17 ._crit_edge52.i: ; preds = %.lr.ph51.i, %281 %.1.lcssa.i = phi double [ 0.000000e+00, %281 ], [ %293, %.lr.ph51.i ] - %294 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next133.i + %294 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next131.i store double %.1.lcssa.i, ptr %294, align 8 - %295 = trunc nsw i64 %indvars.iv.next133.i to i32 + %295 = trunc nsw i64 %indvars.iv.next131.i to i32 %.not266.not.i = icmp samesign ugt i32 %279, %295 br i1 %.not266.not.i, label %281, label %.loopexit13.loopexit.i, !llvm.loop !12 296: ; preds = %296, %.preheader11.i - %indvars.iv137.i = phi i64 [ %273, %.preheader11.i ], [ %indvars.iv.next138.i, %296 ] + %indvars.iv135.i = phi i64 [ %273, %.preheader11.i ], [ %indvars.iv.next136.i, %296 ] %.0229.in.i = phi i32 [ %127, %.preheader11.i ], [ %.0229.i, %296 ] %.0229.i = add nsw i32 %.0229.in.i, -24 - %indvars.iv.next138.i = add nsw i64 %indvars.iv137.i, -1 - %297 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next138.i + %indvars.iv.next136.i = add nsw i64 %indvars.iv135.i, -1 + %297 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next136.i %298 = load i32, ptr %297, align 4 %299 = icmp eq i32 %298, 0 br i1 %299, label %296, label %.loopexit.loopexit.i, !llvm.loop !18 @@ -1034,7 +1032,7 @@ _ZL7scalbnAdi.exit304.i: ; preds = %333, %330, %322, %3 br label %.loopexit.i .loopexit.loopexit.i: ; preds = %296 - %356 = trunc nsw i64 %indvars.iv.next138.i to i32 + %356 = trunc nsw i64 %indvars.iv.next136.i to i32 br label %.loopexit.i .loopexit.i: ; preds = %.loopexit.loopexit.i, %353, %342 @@ -1084,59 +1082,59 @@ _ZL7scalbnAdi.exit318.i: ; preds = %366, %364, %361, %. br label %.lr.ph59.i .lr.ph59.i: ; preds = %.lr.ph59.i, %.lr.ph59.preheader.i - %indvars.iv140.i = phi i64 [ %374, %.lr.ph59.preheader.i ], [ %indvars.iv.next141.i, %.lr.ph59.i ] + %indvars.iv138.i = phi i64 [ %374, %.lr.ph59.preheader.i ], [ %indvars.iv.next139.i, %.lr.ph59.i ] %.258.i = phi double [ %.0.i313.i, %.lr.ph59.preheader.i ], [ %380, %.lr.ph59.i ] - %375 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv140.i + %375 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv138.i %376 = load i32, ptr %375, align 4 %377 = sitofp i32 %376 to double %378 = fmul double %.258.i, %377 - %379 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv140.i + %379 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv138.i store double %378, ptr %379, align 8 %380 = fmul double %.258.i, 0x3E70000000000000 - %indvars.iv.next141.i = add nsw i64 %indvars.iv140.i, -1 - %.not.i = icmp eq i64 %indvars.iv140.i, 0 + %indvars.iv.next139.i = add nsw i64 %indvars.iv138.i, -1 + %.not.i = icmp eq i64 %indvars.iv138.i, 0 br i1 %.not.i, label %.lr.ph63.preheader.i, label %.lr.ph59.i, !llvm.loop !19 .lr.ph63.preheader.i: ; preds = %.lr.ph59.i, %.critedge.i - %indvars.iv150.i = phi i64 [ %indvars.iv.next151.i, %.critedge.i ], [ %374, %.lr.ph59.i ] - %indvars.iv146.i = phi i32 [ %indvars.iv.next147.i, %.critedge.i ], [ 0, %.lr.ph59.i ] - %umin.i = tail call i32 @llvm.umin.i32(i32 %indvars.iv146.i, i32 4) + %indvars.iv148.i = phi i64 [ %indvars.iv.next149.i, %.critedge.i ], [ %374, %.lr.ph59.i ] + %indvars.iv144.i = phi i32 [ %indvars.iv.next145.i, %.critedge.i ], [ 0, %.lr.ph59.i ] + %umin.i = tail call i32 @llvm.umin.i32(i32 %indvars.iv144.i, i32 4) %381 = add nuw nsw i32 %umin.i, 1 - %wide.trip.count148.i = zext nneg i32 %381 to i64 + %wide.trip.count146.i = zext nneg i32 %381 to i64 br label %.lr.ph63.i .lr.ph63.i: ; preds = %.lr.ph63.i, %.lr.ph63.preheader.i - %indvars.iv143.i = phi i64 [ 0, %.lr.ph63.preheader.i ], [ %indvars.iv.next144.i, %.lr.ph63.i ] + %indvars.iv141.i = phi i64 [ 0, %.lr.ph63.preheader.i ], [ %indvars.iv.next142.i, %.lr.ph63.i ] %.362.i = phi double [ 0.000000e+00, %.lr.ph63.preheader.i ], [ %388, %.lr.ph63.i ] - %382 = getelementptr inbounds nuw [8 x double], ptr @_ZL4PIo2, i64 0, i64 %indvars.iv143.i + %382 = getelementptr inbounds nuw [8 x double], ptr @_ZL4PIo2, i64 0, i64 %indvars.iv141.i %383 = load double, ptr %382, align 8 - %384 = add nuw nsw i64 %indvars.iv143.i, %indvars.iv150.i + %384 = add nuw nsw i64 %indvars.iv141.i, %indvars.iv148.i %385 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %384 %386 = load double, ptr %385, align 8 %387 = fmul double %383, %386 %388 = fadd double %.362.i, %387 - %indvars.iv.next144.i = add nuw nsw i64 %indvars.iv143.i, 1 - %exitcond149.i = icmp eq i64 %indvars.iv.next144.i, %wide.trip.count148.i - br i1 %exitcond149.i, label %.critedge.i, label %.lr.ph63.i, !llvm.loop !20 + %indvars.iv.next142.i = add nuw nsw i64 %indvars.iv141.i, 1 + %exitcond147.i = icmp eq i64 %indvars.iv.next142.i, %wide.trip.count146.i + br i1 %exitcond147.i, label %.critedge.i, label %.lr.ph63.i, !llvm.loop !20 .critedge.i: ; preds = %.lr.ph63.i - %389 = sub nuw nsw i64 %374, %indvars.iv150.i + %389 = sub nuw nsw i64 %374, %indvars.iv148.i %390 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %389 store double %388, ptr %390, align 8 - %indvars.iv.next151.i = add nsw i64 %indvars.iv150.i, -1 - %indvars.iv.next147.i = add nuw i32 %indvars.iv146.i, 1 - %exitcond153.not.i = icmp eq i32 %indvars.iv146.i, %.2233.i - br i1 %exitcond153.not.i, label %.lr.ph69.i, label %.lr.ph63.preheader.i, !llvm.loop !21 + %indvars.iv.next149.i = add nsw i64 %indvars.iv148.i, -1 + %indvars.iv.next145.i = add nuw i32 %indvars.iv144.i, 1 + %exitcond151.not.i = icmp eq i32 %indvars.iv144.i, %.2233.i + br i1 %exitcond151.not.i, label %.lr.ph69.i, label %.lr.ph63.preheader.i, !llvm.loop !21 .lr.ph69.i: ; preds = %.critedge.i, %.lr.ph69.i - %indvars.iv154.i = phi i64 [ %indvars.iv.next155.i, %.lr.ph69.i ], [ %374, %.critedge.i ] + %indvars.iv152.i = phi i64 [ %indvars.iv.next153.i, %.lr.ph69.i ], [ %374, %.critedge.i ] %.568.i = phi double [ %393, %.lr.ph69.i ], [ 0.000000e+00, %.critedge.i ] - %391 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv154.i + %391 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv152.i %392 = load double, ptr %391, align 8 %393 = fadd double %.568.i, %392 - %indvars.iv.next155.i = add nsw i64 %indvars.iv154.i, -1 - %.not186.i = icmp eq i64 %indvars.iv154.i, 0 - br i1 %.not186.i, label %._crit_edge70.i, label %.lr.ph69.i, !llvm.loop !22 + %indvars.iv.next153.i = add nsw i64 %indvars.iv152.i, -1 + %.not184.i = icmp eq i64 %indvars.iv152.i, 0 + br i1 %.not184.i, label %._crit_edge70.i, label %.lr.ph69.i, !llvm.loop !22 ._crit_edge70.i: ; preds = %.lr.ph69.i %.pre = load double, ptr %5, align 16 @@ -1150,18 +1148,18 @@ _ZL7scalbnAdi.exit318.i: ; preds = %366, %364, %361, %. .lr.ph76.preheader.i: ; preds = %._crit_edge70.i %398 = add nuw i32 %.2233.i, 1 - %wide.trip.count160.i = zext i32 %398 to i64 + %wide.trip.count158.i = zext i32 %398 to i64 br label %.lr.ph76.i .lr.ph76.i: ; preds = %.lr.ph76.i, %.lr.ph76.preheader.i - %indvars.iv157.i = phi i64 [ 1, %.lr.ph76.preheader.i ], [ %indvars.iv.next158.i, %.lr.ph76.i ] + %indvars.iv155.i = phi i64 [ 1, %.lr.ph76.preheader.i ], [ %indvars.iv.next156.i, %.lr.ph76.i ] %.674.i = phi double [ %397, %.lr.ph76.preheader.i ], [ %401, %.lr.ph76.i ] - %399 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv157.i + %399 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv155.i %400 = load double, ptr %399, align 8 %401 = fadd double %.674.i, %400 - %indvars.iv.next158.i = add nuw nsw i64 %indvars.iv157.i, 1 - %exitcond161.not.i = icmp eq i64 %indvars.iv.next158.i, %wide.trip.count160.i - br i1 %exitcond161.not.i, label %_ZL17__kernel_rem_pio2PdS_iiiPKi.exit, label %.lr.ph76.i, !llvm.loop !23 + %indvars.iv.next156.i = add nuw nsw i64 %indvars.iv155.i, 1 + %exitcond159.not.i = icmp eq i64 %indvars.iv.next156.i, %wide.trip.count158.i + br i1 %exitcond159.not.i, label %_ZL17__kernel_rem_pio2PdS_iiiPKi.exit, label %.lr.ph76.i, !llvm.loop !23 _ZL17__kernel_rem_pio2PdS_iiiPKi.exit: ; preds = %.lr.ph76.i, %._crit_edge70.i.thread, %._crit_edge70.i %402 = phi double [ %396, %._crit_edge70.i ], [ %373, %._crit_edge70.i.thread ], [ %396, %.lr.ph76.i ] diff --git a/bench/openssl/optimized/libssl-lib-s3_enc.ll b/bench/openssl/optimized/libssl-lib-s3_enc.ll index 59c370d766e..f19f5a91c0e 100644 --- a/bench/openssl/optimized/libssl-lib-s3_enc.ll +++ b/bench/openssl/optimized/libssl-lib-s3_enc.ll @@ -37,15 +37,15 @@ if.end: ; preds = %entry %2 = load ptr, ptr %new_compression, align 8 %key_block = getelementptr inbounds nuw i8, ptr %s, i64 752 %3 = load ptr, ptr %key_block, align 8 - %call = tail call i32 @EVP_MD_get_size(ptr noundef nonnull %1) #8 + %call = tail call i32 @EVP_MD_get_size(ptr noundef nonnull %1) #7 %cmp12 = icmp slt i32 %call, 0 br i1 %cmp12, label %err.sink.split, label %if.end15 if.end15: ; preds = %if.end %conv16 = zext nneg i32 %call to i64 - %call17 = tail call i32 @EVP_CIPHER_get_key_length(ptr noundef %0) #8 + %call17 = tail call i32 @EVP_CIPHER_get_key_length(ptr noundef %0) #7 %conv18 = sext i32 %call17 to i64 - %call19 = tail call i32 @EVP_CIPHER_get_iv_length(ptr noundef %0) #8 + %call19 = tail call i32 @EVP_CIPHER_get_iv_length(ptr noundef %0) #7 %conv20 = sext i32 %call19 to i64 switch i32 %which, label %if.else [ i32 33, label %if.then25 @@ -82,15 +82,15 @@ if.end40: ; preds = %if.else, %if.then25 if.end46: ; preds = %if.end40 %key.0 = getelementptr inbounds i8, ptr %3, i64 %add.pn %iv.0 = getelementptr inbounds i8, ptr %3, i64 %add28.pn - %call47 = tail call i32 @ssl_set_new_record_layer(ptr noundef nonnull %s, i32 noundef 768, i32 noundef %cond, i32 noundef 3, ptr noundef null, i64 noundef 0, ptr noundef %key.0, i64 noundef %conv18, ptr noundef %iv.0, i64 noundef %conv20, ptr noundef %mac_secret.0, i64 noundef %conv16, ptr noundef %0, i64 noundef 0, i32 noundef 0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef null) #8 + %call47 = tail call i32 @ssl_set_new_record_layer(ptr noundef nonnull %s, i32 noundef 768, i32 noundef %cond, i32 noundef 3, ptr noundef null, i64 noundef 0, ptr noundef %key.0, i64 noundef %conv18, ptr noundef %iv.0, i64 noundef %conv20, ptr noundef %mac_secret.0, i64 noundef %conv16, ptr noundef %0, i64 noundef 0, i32 noundef 0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef null) #7 %tobool48.not = icmp eq i32 %call47, 0 br i1 %tobool48.not, label %err, label %return err.sink.split: ; preds = %if.end40, %if.end, %entry %.sink = phi i32 [ 107, %entry ], [ 117, %if.end ], [ 142, %if.end40 ] - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink, ptr noundef nonnull @__func__.ssl3_change_cipher_state) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink, ptr noundef nonnull @__func__.ssl3_change_cipher_state) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %err err: ; preds = %err.sink.split, %if.end46 @@ -133,54 +133,54 @@ if.end: ; preds = %entry %1 = load ptr, ptr %ctx, align 8 %session = getelementptr inbounds nuw i8, ptr %s, i64 2176 %2 = load ptr, ptr %session, align 8 - %call = call i32 @ssl_cipher_get_evp(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %c, ptr noundef nonnull %hash, ptr noundef null, ptr noundef null, ptr noundef nonnull %comp, i32 noundef 0) #8 + %call = call i32 @ssl_cipher_get_evp(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %c, ptr noundef nonnull %hash, ptr noundef null, ptr noundef null, ptr noundef nonnull %comp, i32 noundef 0) #7 %tobool.not = icmp eq i32 %call, 0 br i1 %tobool.not, label %if.then1, label %if.end2 if.then1: ; preds = %if.end - call void @ossl_statem_send_fatal(ptr noundef nonnull %s, i32 noundef 80) #8 + call void @ossl_statem_send_fatal(ptr noundef nonnull %s, i32 noundef 80) #7 br label %return if.end2: ; preds = %if.end %new_sym_enc = getelementptr inbounds nuw i8, ptr %s, i64 760 %3 = load ptr, ptr %new_sym_enc, align 8 - call void @ssl_evp_cipher_free(ptr noundef %3) #8 + call void @ssl_evp_cipher_free(ptr noundef %3) #7 %4 = load ptr, ptr %c, align 8 store ptr %4, ptr %new_sym_enc, align 8 %new_hash = getelementptr inbounds nuw i8, ptr %s, i64 768 %5 = load ptr, ptr %new_hash, align 8 - call void @ssl_evp_md_free(ptr noundef %5) #8 + call void @ssl_evp_md_free(ptr noundef %5) #7 %6 = load ptr, ptr %hash, align 8 store ptr %6, ptr %new_hash, align 8 %7 = load ptr, ptr %comp, align 8 %new_compression = getelementptr inbounds nuw i8, ptr %s, i64 792 store ptr %7, ptr %new_compression, align 8 - %call15 = call i32 @EVP_MD_get_size(ptr noundef %6) #8 + %call15 = call i32 @EVP_MD_get_size(ptr noundef %6) #7 %cmp16 = icmp slt i32 %call15, 0 br i1 %cmp16, label %return, label %if.end18 if.end18: ; preds = %if.end2 %8 = load ptr, ptr %c, align 8 - %call19 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %8) #8 - %add = add i32 %call19, %call15 + %call19 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %8) #7 + %add = add nsw i32 %call19, %call15 %9 = load ptr, ptr %c, align 8 - %call20 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %9) #8 - %add21 = add i32 %add, %call20 - %mul = shl i32 %add21, 1 + %call20 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %9) #7 + %add21 = add nsw i32 %add, %call20 + %mul = shl nsw i32 %add21, 1 %key_block.i = getelementptr inbounds nuw i8, ptr %s, i64 752 %10 = load ptr, ptr %key_block.i, align 8 %11 = load i64, ptr %key_block_length, align 8 - call void @CRYPTO_clear_free(ptr noundef %10, i64 noundef %11, ptr noundef nonnull @.str, i32 noundef 214) #8 + call void @CRYPTO_clear_free(ptr noundef %10, i64 noundef %11, ptr noundef nonnull @.str, i32 noundef 214) #7 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %key_block_length, i8 0, i64 16, i1 false) %conv = sext i32 %mul to i64 - %call22 = call noalias ptr @CRYPTO_malloc(i64 noundef %conv, ptr noundef nonnull @.str, i32 noundef 198) #8 + %call22 = call noalias ptr @CRYPTO_malloc(i64 noundef %conv, ptr noundef nonnull @.str, i32 noundef 198) #7 %cmp23 = icmp eq ptr %call22, null br i1 %cmp23, label %if.then25, label %if.end26 if.then25: ; preds = %if.end18 - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 199, ptr noundef nonnull @__func__.ssl3_setup_key_block) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524303, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 199, ptr noundef nonnull @__func__.ssl3_setup_key_block) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524303, ptr noundef null) #7 br label %return if.end26: ; preds = %if.end18 @@ -192,12 +192,12 @@ if.end26: ; preds = %if.end18 %13 = load ptr, ptr %12, align 8 %propq.i = getelementptr inbounds nuw i8, ptr %12, i64 1096 %14 = load ptr, ptr %propq.i, align 8 - %call.i = call ptr @ssl_evp_md_fetch(ptr noundef %13, i32 noundef 4, ptr noundef %14) #8 + %call.i = call ptr @ssl_evp_md_fetch(ptr noundef %13, i32 noundef 4, ptr noundef %14) #7 %15 = load ptr, ptr %12, align 8 %16 = load ptr, ptr %propq.i, align 8 - %call3.i = call ptr @ssl_evp_md_fetch(ptr noundef %15, i32 noundef 64, ptr noundef %16) #8 - %call4.i = call ptr @EVP_MD_CTX_new() #8 - %call5.i = call ptr @EVP_MD_CTX_new() #8 + %call3.i = call ptr @ssl_evp_md_fetch(ptr noundef %15, i32 noundef 64, ptr noundef %16) #7 + %call4.i = call ptr @EVP_MD_CTX_new() #7 + %call5.i = call ptr @EVP_MD_CTX_new() #7 %cmp.i = icmp eq ptr %call.i, null %cmp6.i = icmp eq ptr %call3.i, null %or.cond.i = select i1 %cmp.i, i1 true, i1 %cmp6.i @@ -214,16 +214,13 @@ for.cond.preheader.i: ; preds = %if.end26 for.body.lr.ph.i: ; preds = %for.cond.preheader.i %server_random.i = getelementptr inbounds nuw i8, ptr %s, i64 288 %client_random.i = getelementptr inbounds nuw i8, ptr %s, i64 320 - %17 = zext i32 %mul to i64 - %umax = call i64 @llvm.umax.i64(i64 %17, i64 16) - %18 = add nsw i64 %umax, -1 - %19 = lshr i64 %18, 4 + %17 = zext nneg i32 %mul to i64 br label %for.body.i if.then.i: ; preds = %if.end26 - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 38, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 38, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 br label %ssl3_generate_key_block.exit for.body.i: ; preds = %if.end74.i, %for.body.lr.ph.i @@ -236,70 +233,70 @@ for.body.i: ; preds = %if.end74.i, %for.bo br i1 %exitcond.i, label %if.then14.i, label %if.end15.i if.then14.i: ; preds = %for.body.i - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 45, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 45, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %ssl3_generate_key_block.exit if.end15.i: ; preds = %for.body.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %buf.i, i8 %c.046.i, i64 %indvars.iv.next.i, i1 false) %inc18.i = add nuw nsw i8 %c.046.i, 1 - %call19.i = call i32 @EVP_DigestInit_ex(ptr noundef %call5.i, ptr noundef %call3.i, ptr noundef null) #8 + %call19.i = call i32 @EVP_DigestInit_ex(ptr noundef %call5.i, ptr noundef %call3.i, ptr noundef null) #7 %tobool.not.i = icmp eq i32 %call19.i, 0 br i1 %tobool.not.i, label %if.then58.i, label %lor.lhs.false20.i lor.lhs.false20.i: ; preds = %if.end15.i - %call23.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %buf.i, i64 noundef %indvars.iv.next.i) #8 + %call23.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %buf.i, i64 noundef %indvars.iv.next.i) #7 %tobool24.not.i = icmp eq i32 %call23.i, 0 br i1 %tobool24.not.i, label %if.then58.i, label %lor.lhs.false25.i lor.lhs.false25.i: ; preds = %lor.lhs.false20.i - %20 = load ptr, ptr %session, align 8 - %master_key.i = getelementptr inbounds nuw i8, ptr %20, i64 80 - %master_key_length.i = getelementptr inbounds nuw i8, ptr %20, i64 8 - %21 = load i64, ptr %master_key_length.i, align 8 - %call28.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %master_key.i, i64 noundef %21) #8 + %18 = load ptr, ptr %session, align 8 + %master_key.i = getelementptr inbounds nuw i8, ptr %18, i64 80 + %master_key_length.i = getelementptr inbounds nuw i8, ptr %18, i64 8 + %19 = load i64, ptr %master_key_length.i, align 8 + %call28.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %master_key.i, i64 noundef %19) #7 %tobool29.not.i = icmp eq i32 %call28.i, 0 br i1 %tobool29.not.i, label %if.then58.i, label %lor.lhs.false30.i lor.lhs.false30.i: ; preds = %lor.lhs.false25.i - %call32.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %server_random.i, i64 noundef 32) #8 + %call32.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %server_random.i, i64 noundef 32) #7 %tobool33.not.i = icmp eq i32 %call32.i, 0 br i1 %tobool33.not.i, label %if.then58.i, label %lor.lhs.false34.i lor.lhs.false34.i: ; preds = %lor.lhs.false30.i - %call37.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %client_random.i, i64 noundef 32) #8 + %call37.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %client_random.i, i64 noundef 32) #7 %tobool38.not.i = icmp eq i32 %call37.i, 0 br i1 %tobool38.not.i, label %if.then58.i, label %lor.lhs.false39.i lor.lhs.false39.i: ; preds = %lor.lhs.false34.i - %call41.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call5.i, ptr noundef nonnull %smd.i, ptr noundef null) #8 + %call41.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call5.i, ptr noundef nonnull %smd.i, ptr noundef null) #7 %tobool42.not.i = icmp eq i32 %call41.i, 0 br i1 %tobool42.not.i, label %if.then58.i, label %lor.lhs.false43.i lor.lhs.false43.i: ; preds = %lor.lhs.false39.i - %call44.i = call i32 @EVP_DigestInit_ex(ptr noundef %call4.i, ptr noundef %call.i, ptr noundef null) #8 + %call44.i = call i32 @EVP_DigestInit_ex(ptr noundef %call4.i, ptr noundef %call.i, ptr noundef null) #7 %tobool45.not.i = icmp eq i32 %call44.i, 0 br i1 %tobool45.not.i, label %if.then58.i, label %lor.lhs.false46.i lor.lhs.false46.i: ; preds = %lor.lhs.false43.i - %22 = load ptr, ptr %session, align 8 - %master_key48.i = getelementptr inbounds nuw i8, ptr %22, i64 80 - %master_key_length51.i = getelementptr inbounds nuw i8, ptr %22, i64 8 - %23 = load i64, ptr %master_key_length51.i, align 8 - %call52.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %master_key48.i, i64 noundef %23) #8 + %20 = load ptr, ptr %session, align 8 + %master_key48.i = getelementptr inbounds nuw i8, ptr %20, i64 80 + %master_key_length51.i = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = load i64, ptr %master_key_length51.i, align 8 + %call52.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %master_key48.i, i64 noundef %21) #7 %tobool53.not.i = icmp eq i32 %call52.i, 0 br i1 %tobool53.not.i, label %if.then58.i, label %lor.lhs.false54.i lor.lhs.false54.i: ; preds = %lor.lhs.false46.i - %call56.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %smd.i, i64 noundef 20) #8 + %call56.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %smd.i, i64 noundef 20) #7 %tobool57.not.i = icmp eq i32 %call56.i, 0 br i1 %tobool57.not.i, label %if.then58.i, label %if.end59.i if.then58.i: ; preds = %lor.lhs.false54.i, %lor.lhs.false46.i, %lor.lhs.false43.i, %lor.lhs.false39.i, %lor.lhs.false34.i, %lor.lhs.false30.i, %lor.lhs.false25.i, %lor.lhs.false20.i, %if.end15.i - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 62, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 62, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %ssl3_generate_key_block.exit if.end59.i: ; preds = %lor.lhs.false54.i @@ -308,49 +305,49 @@ if.end59.i: ; preds = %lor.lhs.false54.i br i1 %cmp60.i, label %if.then62.i, label %if.else.i if.then62.i: ; preds = %if.end59.i - %call64.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %smd.i, ptr noundef null) #8 + %call64.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %smd.i, ptr noundef null) #7 %tobool65.not.i = icmp eq i32 %call64.i, 0 br i1 %tobool65.not.i, label %if.then66.i, label %if.end67.i if.then66.i: ; preds = %if.then62.i - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 67, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 67, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %ssl3_generate_key_block.exit if.end67.i: ; preds = %if.then62.i - %24 = trunc nuw nsw i64 %indvars.iv50.i to i32 - %sub.i = sub i32 %mul, %24 + %22 = trunc nuw nsw i64 %indvars.iv50.i to i32 + %sub.i = sub i32 %mul, %22 %conv69.i = zext i32 %sub.i to i64 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %km.addr.049.i, ptr nonnull align 16 %smd.i, i64 %conv69.i, i1 false) br label %if.end74.i if.else.i: ; preds = %if.end59.i - %call70.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %km.addr.049.i, ptr noundef null) #8 + %call70.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %km.addr.049.i, ptr noundef null) #7 %tobool71.not.i = icmp eq i32 %call70.i, 0 br i1 %tobool71.not.i, label %if.then72.i, label %if.end74.i if.then72.i: ; preds = %if.else.i - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 73, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 73, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %ssl3_generate_key_block.exit if.end74.i: ; preds = %if.else.i, %if.end67.i %add.ptr.i = getelementptr inbounds nuw i8, ptr %km.addr.049.i, i64 16 - %exitcond.not = icmp eq i64 %indvars.iv.i, %19 - br i1 %exitcond.not, label %for.end.i, label %for.body.i, !llvm.loop !4 + %cmp11.i = icmp samesign ult i64 %indvars.iv.next51.i, %17 + br i1 %cmp11.i, label %for.body.i, label %for.end.i, !llvm.loop !4 for.end.i: ; preds = %if.end74.i, %for.cond.preheader.i - call void @OPENSSL_cleanse(ptr noundef nonnull %smd.i, i64 noundef 20) #8 + call void @OPENSSL_cleanse(ptr noundef nonnull %smd.i, i64 noundef 20) #7 br label %ssl3_generate_key_block.exit ssl3_generate_key_block.exit: ; preds = %if.then.i, %if.then14.i, %if.then58.i, %if.then66.i, %if.then72.i, %for.end.i %ret.0.i = phi i32 [ 0, %if.then.i ], [ 0, %if.then14.i ], [ 0, %if.then66.i ], [ 0, %if.then72.i ], [ 0, %if.then58.i ], [ 1, %for.end.i ] - call void @EVP_MD_CTX_free(ptr noundef %call4.i) #8 - call void @EVP_MD_CTX_free(ptr noundef %call5.i) #8 - call void @ssl_evp_md_free(ptr noundef %call.i) #8 - call void @ssl_evp_md_free(ptr noundef %call3.i) #8 + call void @EVP_MD_CTX_free(ptr noundef %call4.i) #7 + call void @EVP_MD_CTX_free(ptr noundef %call5.i) #7 + call void @ssl_evp_md_free(ptr noundef %call.i) #7 + call void @ssl_evp_md_free(ptr noundef %call3.i) #7 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %buf.i) call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %smd.i) br label %return @@ -375,7 +372,7 @@ entry: %0 = load ptr, ptr %key_block, align 8 %key_block_length = getelementptr inbounds nuw i8, ptr %s, i64 744 %1 = load i64, ptr %key_block_length, align 8 - tail call void @CRYPTO_clear_free(ptr noundef %0, i64 noundef %1, ptr noundef nonnull @.str, i32 noundef 214) #8 + tail call void @CRYPTO_clear_free(ptr noundef %0, i64 noundef %1, ptr noundef nonnull @.str, i32 noundef 214) #7 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %key_block_length, i8 0, i64 16, i1 false) ret void } @@ -387,28 +384,28 @@ declare void @CRYPTO_clear_free(ptr noundef, i64 noundef, ptr noundef, i32 nound ; Function Attrs: nounwind uwtable define range(i32 0, 2) i32 @ssl3_init_finished_mac(ptr noundef %s) local_unnamed_addr #0 { entry: - %call = tail call ptr @BIO_s_mem() #8 - %call1 = tail call ptr @BIO_new(ptr noundef %call) #8 + %call = tail call ptr @BIO_s_mem() #7 + %call1 = tail call ptr @BIO_new(ptr noundef %call) #7 %cmp = icmp eq ptr %call1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 224, ptr noundef nonnull @__func__.ssl3_init_finished_mac) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524320, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 224, ptr noundef nonnull @__func__.ssl3_init_finished_mac) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524320, ptr noundef null) #7 br label %return if.end: ; preds = %entry %handshake_buffer.i = getelementptr inbounds nuw i8, ptr %s, i64 352 %0 = load ptr, ptr %handshake_buffer.i, align 8 - %call.i = tail call i32 @BIO_free(ptr noundef %0) #8 + %call.i = tail call i32 @BIO_free(ptr noundef %0) #7 store ptr null, ptr %handshake_buffer.i, align 8 %handshake_dgst.i = getelementptr inbounds nuw i8, ptr %s, i64 360 %1 = load ptr, ptr %handshake_dgst.i, align 8 - tail call void @EVP_MD_CTX_free(ptr noundef %1) #8 + tail call void @EVP_MD_CTX_free(ptr noundef %1) #7 store ptr null, ptr %handshake_dgst.i, align 8 store ptr %call1, ptr %handshake_buffer.i, align 8 - %call4 = tail call i64 @BIO_ctrl(ptr noundef nonnull %call1, i32 noundef 9, i64 noundef 1, ptr noundef null) #8 + %call4 = tail call i64 @BIO_ctrl(ptr noundef nonnull %call1, i32 noundef 9, i64 noundef 1, ptr noundef null) #7 br label %return return: ; preds = %if.end, %if.then @@ -425,11 +422,11 @@ define void @ssl3_free_digest_list(ptr noundef captures(none) %s) local_unnamed_ entry: %handshake_buffer = getelementptr inbounds nuw i8, ptr %s, i64 352 %0 = load ptr, ptr %handshake_buffer, align 8 - %call = tail call i32 @BIO_free(ptr noundef %0) #8 + %call = tail call i32 @BIO_free(ptr noundef %0) #7 store ptr null, ptr %handshake_buffer, align 8 %handshake_dgst = getelementptr inbounds nuw i8, ptr %s, i64 360 %1 = load ptr, ptr %handshake_dgst, align 8 - tail call void @EVP_MD_CTX_free(ptr noundef %1) #8 + tail call void @EVP_MD_CTX_free(ptr noundef %1) #7 store ptr null, ptr %handshake_dgst, align 8 ret void } @@ -456,23 +453,23 @@ if.end: ; preds = %if.then %handshake_buffer = getelementptr inbounds nuw i8, ptr %s, i64 352 %1 = load ptr, ptr %handshake_buffer, align 8 %conv = trunc nuw nsw i64 %len to i32 - %call = tail call i32 @BIO_write(ptr noundef %1, ptr noundef %buf, i32 noundef %conv) #8 + %call = tail call i32 @BIO_write(ptr noundef %1, ptr noundef %buf, i32 noundef %conv) #7 %cmp4 = icmp sgt i32 %call, 0 %cmp7.not = icmp eq i32 %call, %conv %or.cond = and i1 %cmp4, %cmp7.not br i1 %or.cond, label %return, label %return.sink.split if.else: ; preds = %entry - %call13 = tail call i32 @EVP_DigestUpdate(ptr noundef nonnull %0, ptr noundef %buf, i64 noundef %len) #8 + %call13 = tail call i32 @EVP_DigestUpdate(ptr noundef nonnull %0, ptr noundef %buf, i64 noundef %len) #7 %tobool.not = icmp eq i32 %call13, 0 br i1 %tobool.not, label %return.sink.split, label %return return.sink.split: ; preds = %if.else, %if.end, %if.then %.sink12 = phi i32 [ 253, %if.then ], [ 258, %if.end ], [ 264, %if.else ] %.sink = phi i32 [ 237, %if.then ], [ 786691, %if.end ], [ 786691, %if.else ] - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink12, ptr noundef nonnull @__func__.ssl3_finish_mac) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef %.sink, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink12, ptr noundef nonnull @__func__.ssl3_finish_mac) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef %.sink, ptr noundef null) #7 br label %return return: ; preds = %return.sink.split, %if.else, %if.end @@ -496,56 +493,56 @@ entry: if.then: ; preds = %entry %handshake_buffer = getelementptr inbounds nuw i8, ptr %s, i64 352 %1 = load ptr, ptr %handshake_buffer, align 8 - %call = call i64 @BIO_ctrl(ptr noundef %1, i32 noundef 3, i64 noundef 0, ptr noundef nonnull %hdata) #8 + %call = call i64 @BIO_ctrl(ptr noundef %1, i32 noundef 3, i64 noundef 0, ptr noundef nonnull %hdata) #7 %cmp2 = icmp slt i64 %call, 1 br i1 %cmp2, label %if.then3, label %if.end if.then3: ; preds = %if.then - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 280, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 332, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 280, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 332, ptr noundef null) #7 br label %return if.end: ; preds = %if.then - %call4 = call ptr @EVP_MD_CTX_new() #8 + %call4 = call ptr @EVP_MD_CTX_new() #7 store ptr %call4, ptr %handshake_dgst, align 8 %cmp9 = icmp eq ptr %call4, null br i1 %cmp9, label %if.then10, label %if.end11 if.then10: ; preds = %if.end - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 286, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 286, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 br label %return if.end11: ; preds = %if.end - %call12 = call ptr @ssl_handshake_md(ptr noundef nonnull %s) #8 + %call12 = call ptr @ssl_handshake_md(ptr noundef nonnull %s) #7 %cmp13 = icmp eq ptr %call12, null br i1 %cmp13, label %if.then14, label %if.end15 if.then14: ; preds = %if.end11 - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 293, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 297, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 293, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 297, ptr noundef null) #7 br label %return if.end15: ; preds = %if.end11 %2 = load ptr, ptr %handshake_dgst, align 8 - %call18 = call i32 @EVP_DigestInit_ex(ptr noundef %2, ptr noundef nonnull %call12, ptr noundef null) #8 + %call18 = call i32 @EVP_DigestInit_ex(ptr noundef %2, ptr noundef nonnull %call12, ptr noundef null) #7 %tobool.not = icmp eq i32 %call18, 0 br i1 %tobool.not, label %if.then23, label %lor.lhs.false lor.lhs.false: ; preds = %if.end15 %3 = load ptr, ptr %handshake_dgst, align 8 %4 = load ptr, ptr %hdata, align 8 - %call21 = call i32 @EVP_DigestUpdate(ptr noundef %3, ptr noundef %4, i64 noundef %call) #8 + %call21 = call i32 @EVP_DigestUpdate(ptr noundef %3, ptr noundef %4, i64 noundef %call) #7 %tobool22.not = icmp eq i32 %call21, 0 br i1 %tobool22.not, label %if.then23, label %if.end25 if.then23: ; preds = %lor.lhs.false, %if.end15 - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 298, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 298, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %return if.end25: ; preds = %lor.lhs.false, %entry @@ -555,7 +552,7 @@ if.end25: ; preds = %lor.lhs.false, %ent if.then27: ; preds = %if.end25 %handshake_buffer29 = getelementptr inbounds nuw i8, ptr %s, i64 352 %5 = load ptr, ptr %handshake_buffer29, align 8 - %call30 = call i32 @BIO_free(ptr noundef %5) #8 + %call30 = call i32 @BIO_free(ptr noundef %5) #7 store ptr null, ptr %handshake_buffer29, align 8 br label %return @@ -578,10 +575,10 @@ entry: %master_key = getelementptr inbounds nuw i8, ptr %session, i64 80 %master_key_length = getelementptr inbounds nuw i8, ptr %session, i64 8 %0 = load i64, ptr %master_key_length, align 8 - call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key, i64 noundef %0) #8 + call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key, i64 noundef %0) #7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %params, ptr noundef nonnull align 8 dereferenceable(40) %tmp, i64 40, i1 false) %arrayidx3 = getelementptr inbounds nuw i8, ptr %params, i64 40 - call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp4) #8 + call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp4) #7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %arrayidx3, ptr noundef nonnull align 8 dereferenceable(40) %tmp4, i64 40, i1 false) ret void } @@ -605,50 +602,50 @@ entry: if.end: ; preds = %entry %handshake_dgst = getelementptr inbounds nuw i8, ptr %s, i64 360 %0 = load ptr, ptr %handshake_dgst, align 8 - %call1 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef %0) #8 - %call2 = tail call i32 @EVP_MD_get_type(ptr noundef %call1) #8 + %call1 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef %0) #7 + %call2 = tail call i32 @EVP_MD_get_type(ptr noundef %call1) #7 %cmp.not = icmp eq i32 %call2, 114 br i1 %cmp.not, label %if.end4, label %if.then3 if.then3: ; preds = %if.end - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 332, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 324, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 332, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 324, ptr noundef null) #7 br label %return if.end4: ; preds = %if.end - %call5 = tail call ptr @EVP_MD_CTX_new() #8 + %call5 = tail call ptr @EVP_MD_CTX_new() #7 %cmp6 = icmp eq ptr %call5, null br i1 %cmp6, label %if.then7, label %if.end8 if.then7: ; preds = %if.end4 - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 338, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 338, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 br label %return if.end8: ; preds = %if.end4 %1 = load ptr, ptr %handshake_dgst, align 8 - %call11 = tail call i32 @EVP_MD_CTX_copy_ex(ptr noundef nonnull %call5, ptr noundef %1) #8 + %call11 = tail call i32 @EVP_MD_CTX_copy_ex(ptr noundef nonnull %call5, ptr noundef %1) #7 %tobool12.not = icmp eq i32 %call11, 0 br i1 %tobool12.not, label %if.then13, label %if.end14 if.then13: ; preds = %if.end8 - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 342, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 342, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %err if.end14: ; preds = %if.end8 - %call15 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef nonnull %call5) #8 - %call16 = tail call i32 @EVP_MD_get_size(ptr noundef %call15) #8 + %call15 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef nonnull %call5) #7 + %call16 = tail call i32 @EVP_MD_get_size(ptr noundef %call15) #7 %cmp17 = icmp slt i32 %call16, 0 br i1 %cmp17, label %if.then18, label %if.end19 if.then18: ; preds = %if.end14 - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 349, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 349, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %err if.end19: ; preds = %if.end14 @@ -662,34 +659,34 @@ if.then21: ; preds = %if.end19 %master_key.i = getelementptr inbounds nuw i8, ptr %2, i64 80 %master_key_length.i = getelementptr inbounds nuw i8, ptr %2, i64 8 %3 = load i64, ptr %master_key_length.i, align 8 - call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp.i, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key.i, i64 noundef %3) #8 + call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp.i, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key.i, i64 noundef %3) #7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %digest_cmd_params, ptr noundef nonnull align 8 dereferenceable(40) %tmp.i, i64 40, i1 false) %arrayidx3.i = getelementptr inbounds nuw i8, ptr %digest_cmd_params, i64 40 - call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %arrayidx3.i) #8 + call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %arrayidx3.i) #7 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %tmp.i) - %call22 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call5, ptr noundef nonnull %sender, i64 noundef %len) #8 + %call22 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call5, ptr noundef nonnull %sender, i64 noundef %len) #7 %cmp23 = icmp slt i32 %call22, 1 br i1 %cmp23, label %if.then30, label %lor.lhs.false lor.lhs.false: ; preds = %if.then21 - %call25 = call i32 @EVP_MD_CTX_set_params(ptr noundef nonnull %call5, ptr noundef nonnull %digest_cmd_params) #8 + %call25 = call i32 @EVP_MD_CTX_set_params(ptr noundef nonnull %call5, ptr noundef nonnull %digest_cmd_params) #7 %cmp26 = icmp slt i32 %call25, 1 br i1 %cmp26, label %if.then30, label %lor.lhs.false27 lor.lhs.false27: ; preds = %lor.lhs.false - %call28 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call5, ptr noundef %p, ptr noundef null) #8 + %call28 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call5, ptr noundef %p, ptr noundef null) #7 %cmp29 = icmp slt i32 %call28, 1 br i1 %cmp29, label %if.then30, label %err if.then30: ; preds = %lor.lhs.false27, %lor.lhs.false, %if.then21 - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 362, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 362, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %err err: ; preds = %if.end19, %if.then30, %lor.lhs.false27, %if.then18, %if.then13 %ret.0 = phi i32 [ 0, %if.then18 ], [ 0, %if.then30 ], [ %call16, %lor.lhs.false27 ], [ %call16, %if.end19 ], [ 0, %if.then13 ] - call void @EVP_MD_CTX_free(ptr noundef nonnull %call5) #8 + call void @EVP_MD_CTX_free(ptr noundef nonnull %call5) #7 %conv = zext nneg i32 %ret.0 to i64 br label %return @@ -713,7 +710,7 @@ define range(i32 0, 2) i32 @ssl3_generate_master_secret(ptr noundef %s, ptr noun entry: %buf = alloca [64 x i8], align 16 %n = alloca i32, align 4 - %call = tail call ptr @EVP_MD_CTX_new() #8 + %call = tail call ptr @EVP_MD_CTX_new() #7 %cmp = icmp eq ptr %call, null br i1 %cmp, label %if.then, label %for.cond.preheader @@ -724,9 +721,9 @@ for.cond.preheader: ; preds = %entry br label %for.body if.then: ; preds = %entry - tail call void @ERR_new() #8 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 395, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #8 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 + tail call void @ERR_new() #7 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 395, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #7 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 br label %return for.body: ; preds = %for.cond.preheader, %if.end43 @@ -736,35 +733,35 @@ for.body: ; preds = %for.cond.preheader, %0 = load ptr, ptr %ctx2, align 8 %sha1 = getelementptr inbounds nuw i8, ptr %0, i64 264 %1 = load ptr, ptr %sha1, align 8 - %call3 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %1, ptr noundef null) #8 + %call3 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %1, ptr noundef null) #7 %cmp4 = icmp slt i32 %call3, 1 br i1 %cmp4, label %if.then42, label %lor.lhs.false lor.lhs.false: ; preds = %for.body %arrayidx = getelementptr inbounds nuw [3 x ptr], ptr @ssl3_generate_master_secret.salt, i64 0, i64 %indvars.iv %2 = load ptr, ptr %arrayidx, align 8 - %call7 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #9 - %call8 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %2, i64 noundef %call7) #8 + %call7 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #8 + %call8 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %2, i64 noundef %call7) #7 %cmp9 = icmp slt i32 %call8, 1 br i1 %cmp9, label %if.then42, label %lor.lhs.false10 lor.lhs.false10: ; preds = %lor.lhs.false - %call11 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #8 + %call11 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #7 %cmp12 = icmp slt i32 %call11, 1 br i1 %cmp12, label %if.then42, label %lor.lhs.false13 lor.lhs.false13: ; preds = %lor.lhs.false10 - %call15 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %client_random, i64 noundef 32) #8 + %call15 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %client_random, i64 noundef 32) #7 %cmp16 = icmp slt i32 %call15, 1 br i1 %cmp16, label %if.then42, label %lor.lhs.false17 lor.lhs.false17: ; preds = %lor.lhs.false13 - %call20 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %server_random, i64 noundef 32) #8 + %call20 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %server_random, i64 noundef 32) #7 %cmp21 = icmp slt i32 %call20, 1 br i1 %cmp21, label %if.then42, label %lor.lhs.false22 lor.lhs.false22: ; preds = %lor.lhs.false17 - %call23 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef nonnull %buf, ptr noundef nonnull %n) #8 + %call23 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef nonnull %buf, ptr noundef nonnull %n) #7 %cmp24 = icmp slt i32 %call23, 1 br i1 %cmp24, label %if.then42, label %lor.lhs.false25 @@ -772,31 +769,31 @@ lor.lhs.false25: ; preds = %lor.lhs.false22 %3 = load ptr, ptr %ctx2, align 8 %md5 = getelementptr inbounds nuw i8, ptr %3, i64 256 %4 = load ptr, ptr %md5, align 8 - %call28 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %4, ptr noundef null) #8 + %call28 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %4, ptr noundef null) #7 %cmp29 = icmp slt i32 %call28, 1 br i1 %cmp29, label %if.then42, label %lor.lhs.false30 lor.lhs.false30: ; preds = %lor.lhs.false25 - %call31 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #8 + %call31 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #7 %cmp32 = icmp slt i32 %call31, 1 br i1 %cmp32, label %if.then42, label %lor.lhs.false33 lor.lhs.false33: ; preds = %lor.lhs.false30 %5 = load i32, ptr %n, align 4 %conv = zext i32 %5 to i64 - %call35 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %buf, i64 noundef %conv) #8 + %call35 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %buf, i64 noundef %conv) #7 %cmp36 = icmp slt i32 %call35, 1 br i1 %cmp36, label %if.then42, label %lor.lhs.false38 lor.lhs.false38: ; preds = %lor.lhs.false33 - %call39 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef %out.addr.029, ptr noundef nonnull %n) #8 + %call39 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef %out.addr.029, ptr noundef nonnull %n) #7 %cmp40 = icmp slt i32 %call39, 1 br i1 %cmp40, label %if.then42, label %if.end43 if.then42: ; preds = %lor.lhs.false38, %lor.lhs.false33, %lor.lhs.false30, %lor.lhs.false25, %lor.lhs.false22, %lor.lhs.false17, %lor.lhs.false13, %lor.lhs.false10, %lor.lhs.false, %for.body - call void @ERR_new() #8 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 412, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #8 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 + call void @ERR_new() #7 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 412, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #7 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 br label %for.end if.end43: ; preds = %lor.lhs.false38 @@ -812,8 +809,8 @@ for.end: ; preds = %if.end43, %if.then4 %ret_secret_size.028 = phi i64 [ %ret_secret_size.031, %if.then42 ], [ %add, %if.end43 ] %cmp126 = phi i1 [ true, %if.then42 ], [ false, %if.end43 ] %ret.0 = phi i32 [ 0, %if.then42 ], [ 1, %if.end43 ] - call void @EVP_MD_CTX_free(ptr noundef nonnull %call) #8 - call void @OPENSSL_cleanse(ptr noundef nonnull %buf, i64 noundef 64) #8 + call void @EVP_MD_CTX_free(ptr noundef nonnull %call) #7 + call void @OPENSSL_cleanse(ptr noundef nonnull %buf, i64 noundef 64) #7 br i1 %cmp126, label %return, label %if.then46 if.then46: ; preds = %for.end @@ -897,9 +894,6 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #7 - attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -907,9 +901,8 @@ attributes #3 = { mustprogress nofree nounwind willreturn memory(argmem: read) " attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nounwind } -attributes #9 = { nounwind willreturn memory(read) } +attributes #7 = { nounwind } +attributes #8 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/openusd/optimized/openexr-c.ll b/bench/openusd/optimized/openexr-c.ll index c37ae8e38d0..f23f5c28088 100644 --- a/bench/openusd/optimized/openexr-c.ll +++ b/bench/openusd/optimized/openexr-c.ll @@ -23917,7 +23917,7 @@ define internal fastcc i32 @internal_exr_apply_rle(ptr noundef captures(none) %0 %5 = getelementptr inbounds nuw i8, ptr %0, i64 192 %6 = tail call fastcc i32 @internal_encode_alloc_buffer(ptr noundef %0, i32 noundef 3, ptr noundef nonnull %4, ptr noundef nonnull %5, i64 noundef %3) %.not = icmp eq i32 %6, 0 - br i1 %.not, label %7, label %81 + br i1 %.not, label %7, label %80 7: ; preds = %1 %8 = load ptr, ptr %4, align 8 @@ -23991,7 +23991,6 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ %.061.i = phi ptr [ %36, %reorder_and_predict.exit ], [ %.162.i, %.loopexit.i ] %.pn.i = phi ptr [ %36, %reorder_and_predict.exit ], [ %.259.i, %.loopexit.i ] %.055.i = phi i64 [ 0, %reorder_and_predict.exit ], [ %.2.i, %.loopexit.i ] - %.061100.i = ptrtoint ptr %.061.i to i64 %39 = icmp ult ptr %.061.i, %37 br i1 %39, label %.preheader71.i, label %internal_rle_compress.exit @@ -24026,19 +24025,19 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ br i1 %49, label %52, label %.preheader.i .preheader.i: ; preds = %.critedge.i, %.preheader71.i - %.158.lcssa104.i = phi ptr [ %.158.lcssa.i, %.critedge.i ], [ %.15872.i, %.preheader71.i ] - %.0.lcssa103.i = phi i8 [ %.0.lcssa.i, %.critedge.i ], [ 0, %.preheader71.i ] - %50 = icmp ult ptr %.158.lcssa104.i, %37 + %.158.lcssa102.i = phi ptr [ %.158.lcssa.i, %.critedge.i ], [ %.15872.i, %.preheader71.i ] + %.0.lcssa101.i = phi i8 [ %.0.lcssa.i, %.critedge.i ], [ 0, %.preheader71.i ] + %50 = icmp ult ptr %.158.lcssa102.i, %37 br i1 %50, label %.lr.ph83.i.preheader, label %.critedge2.i .lr.ph83.i.preheader: ; preds = %.preheader.i - %.182.i44 = add nuw nsw i8 %.0.lcssa103.i, 1 - %51 = getelementptr inbounds nuw i8, ptr %.158.lcssa104.i, i64 1 + %.182.i44 = add nuw nsw i8 %.0.lcssa101.i, 1 + %51 = getelementptr inbounds nuw i8, ptr %.158.lcssa102.i, i64 1 %.not.i27.not45 = icmp ult ptr %51, %37 br i1 %.not.i27.not45, label %.lr.ph.preheader, label %.thread .lr.ph.preheader: ; preds = %.lr.ph83.i.preheader - %.pre = load i8, ptr %.158.lcssa104.i, align 1 + %.pre = load i8, ptr %.158.lcssa102.i, align 1 br label %.lr.ph 52: ; preds = %.critedge.i @@ -24051,11 +24050,11 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ br label %.loopexit.i .thread: ; preds = %.lr.ph83.i.backedge, %.lr.ph83.i.preheader - %.36080.i.lcssa = phi ptr [ %.158.lcssa104.i, %.lr.ph83.i.preheader ], [ %58, %.lr.ph83.i.backedge ] + %.36080.i.lcssa = phi ptr [ %.158.lcssa102.i, %.lr.ph83.i.preheader ], [ %58, %.lr.ph83.i.backedge ] %.182.i.lcssa = phi i8 [ %.182.i44, %.lr.ph83.i.preheader ], [ %.182.i, %.lr.ph83.i.backedge ] %.lcssa = phi ptr [ %51, %.lr.ph83.i.preheader ], [ %66, %.lr.ph83.i.backedge ] %.old6.not.i29 = icmp eq i8 %.182.i.lcssa, 127 - %.36080.mux107.i31 = select i1 %.old6.not.i29, ptr %.36080.i.lcssa, ptr %.lcssa + %.36080.mux105.i31 = select i1 %.old6.not.i29, ptr %.36080.i.lcssa, ptr %.lcssa %.mux.i32 = tail call i8 @llvm.smin.i8(i8 %.182.i.lcssa, i8 126) br label %.critedge2.i @@ -24063,8 +24062,8 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ %57 = phi i8 [ %59, %.lr.ph83.i.backedge ], [ %.pre, %.lr.ph.preheader ] %58 = phi ptr [ %66, %.lr.ph83.i.backedge ], [ %51, %.lr.ph.preheader ] %.182.i48 = phi i8 [ %.182.i, %.lr.ph83.i.backedge ], [ %.182.i44, %.lr.ph.preheader ] - %.36080.i47 = phi ptr [ %58, %.lr.ph83.i.backedge ], [ %.158.lcssa104.i, %.lr.ph.preheader ] - %.1.in81.i46 = phi i8 [ %.182.i48, %.lr.ph83.i.backedge ], [ %.0.lcssa103.i, %.lr.ph.preheader ] + %.36080.i47 = phi ptr [ %58, %.lr.ph83.i.backedge ], [ %.158.lcssa102.i, %.lr.ph.preheader ] + %.1.in81.i46 = phi i8 [ %.182.i48, %.lr.ph83.i.backedge ], [ %.0.lcssa101.i, %.lr.ph.preheader ] %59 = load i8, ptr %58, align 1 %.not68.i = icmp eq i8 %57, %59 br i1 %.not68.i, label %60, label %67 @@ -24078,8 +24077,8 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ %63 = load i8, ptr %61, align 1 %64 = icmp eq i8 %57, %63 %65 = icmp eq i8 %.182.i48, 127 - %or.cond7.not110.i = select i1 %64, i1 true, i1 %65 - br i1 %or.cond7.not110.i, label %.critedge2.i, label %.lr.ph83.i.backedge + %or.cond7.not108.i = select i1 %64, i1 true, i1 %65 + br i1 %or.cond7.not108.i, label %.critedge2.i, label %.lr.ph83.i.backedge .lr.ph83.i.backedge: ; preds = %62, %67 %.182.i = add nuw nsw i8 %.182.i48, 1 @@ -24092,58 +24091,52 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ br i1 %.old6.not.i, label %.critedge2.i, label %.lr.ph83.i.backedge .critedge2.i: ; preds = %62, %67, %.thread, %.preheader.i - %.360.lcssa.i = phi ptr [ %.158.lcssa104.i, %.preheader.i ], [ %.36080.mux107.i31, %.thread ], [ %.36080.i47, %67 ], [ %.36080.i47, %62 ] - %.1.in.lcssa.i = phi i8 [ %.0.lcssa103.i, %.preheader.i ], [ %.mux.i32, %.thread ], [ %.1.in81.i46, %62 ], [ 126, %67 ] + %.360.lcssa.i = phi ptr [ %.158.lcssa102.i, %.preheader.i ], [ %.36080.mux105.i31, %.thread ], [ %.36080.i47, %67 ], [ %.36080.i47, %62 ] + %.1.in.lcssa.i = phi i8 [ %.0.lcssa101.i, %.preheader.i ], [ %.mux.i32, %.thread ], [ %.1.in81.i46, %62 ], [ 126, %67 ] %68 = xor i8 %.1.in.lcssa.i, -1 %69 = getelementptr inbounds i8, ptr %33, i64 %.055.i store i8 %68, ptr %69, align 1 %.392.i = add i64 %.055.i, 1 %70 = icmp ult ptr %.061.i, %.360.lcssa.i - br i1 %70, label %.lr.ph95.preheader.i, label %.loopexit.i - -.lr.ph95.preheader.i: ; preds = %.critedge2.i - %.360.lcssa99.i = ptrtoint ptr %.360.lcssa.i to i64 - %71 = sub i64 %.392.i, %.061100.i - %72 = add i64 %71, %.360.lcssa99.i - br label %.lr.ph95.i - -.lr.ph95.i: ; preds = %.lr.ph95.i, %.lr.ph95.preheader.i - %.394.i = phi i64 [ %.3.i, %.lr.ph95.i ], [ %.392.i, %.lr.ph95.preheader.i ] - %.26393.i = phi ptr [ %73, %.lr.ph95.i ], [ %.061.i, %.lr.ph95.preheader.i ] - %73 = getelementptr inbounds nuw i8, ptr %.26393.i, i64 1 - %74 = load i8, ptr %.26393.i, align 1 - %75 = getelementptr inbounds i8, ptr %33, i64 %.394.i - store i8 %74, ptr %75, align 1 + br i1 %70, label %.lr.ph95.i, label %.loopexit.i + +.lr.ph95.i: ; preds = %.critedge2.i, %.lr.ph95.i + %.394.i = phi i64 [ %.3.i, %.lr.ph95.i ], [ %.392.i, %.critedge2.i ] + %.26393.i = phi ptr [ %71, %.lr.ph95.i ], [ %.061.i, %.critedge2.i ] + %71 = getelementptr inbounds nuw i8, ptr %.26393.i, i64 1 + %72 = load i8, ptr %.26393.i, align 1 + %73 = getelementptr inbounds i8, ptr %33, i64 %.394.i + store i8 %72, ptr %73, align 1 %.3.i = add i64 %.394.i, 1 - %exitcond.not.i = icmp eq i64 %.3.i, %72 - br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph95.i, !llvm.loop !122 + %74 = icmp ult ptr %71, %.360.lcssa.i + br i1 %74, label %.lr.ph95.i, label %.loopexit.i, !llvm.loop !122 .loopexit.i: ; preds = %.lr.ph95.i, %.critedge2.i, %52 - %.162.i = phi ptr [ %.158.lcssa.i, %52 ], [ %.061.i, %.critedge2.i ], [ %73, %.lr.ph95.i ] + %.162.i = phi ptr [ %.158.lcssa.i, %52 ], [ %.061.i, %.critedge2.i ], [ %71, %.lr.ph95.i ] %.259.i = phi ptr [ %.158.lcssa.i, %52 ], [ %.360.lcssa.i, %.critedge2.i ], [ %.360.lcssa.i, %.lr.ph95.i ] - %.2.i = phi i64 [ %55, %52 ], [ %.392.i, %.critedge2.i ], [ %72, %.lr.ph95.i ] + %.2.i = phi i64 [ %55, %52 ], [ %.392.i, %.critedge2.i ], [ %.3.i, %.lr.ph95.i ] %.not70.i = icmp ult i64 %.2.i, %35 br i1 %.not70.i, label %38, label %internal_rle_compress.exit, !llvm.loop !123 internal_rle_compress.exit: ; preds = %38, %.loopexit.i %.156.i = phi i64 [ %.2.i, %.loopexit.i ], [ %.055.i, %38 ] %.not26 = icmp ult i64 %.156.i, %3 - br i1 %.not26, label %79, label %76 + br i1 %.not26, label %78, label %75 -76: ; preds = %internal_rle_compress.exit - %77 = load ptr, ptr %32, align 8 - %78 = load ptr, ptr %9, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr align 1 %78, i64 %3, i1 false) - br label %79 +75: ; preds = %internal_rle_compress.exit + %76 = load ptr, ptr %32, align 8 + %77 = load ptr, ptr %9, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %76, ptr align 1 %77, i64 %3, i1 false) + br label %78 -79: ; preds = %76, %internal_rle_compress.exit - %.022 = phi i64 [ %3, %76 ], [ %.156.i, %internal_rle_compress.exit ] - %80 = getelementptr inbounds nuw i8, ptr %0, i64 168 - store i64 %.022, ptr %80, align 8 - br label %81 +78: ; preds = %75, %internal_rle_compress.exit + %.022 = phi i64 [ %3, %75 ], [ %.156.i, %internal_rle_compress.exit ] + %79 = getelementptr inbounds nuw i8, ptr %0, i64 168 + store i64 %.022, ptr %79, align 8 + br label %80 -81: ; preds = %1, %79 - %.0 = phi i32 [ 0, %79 ], [ %6, %1 ] +80: ; preds = %1, %78 + %.0 = phi i32 [ 0, %78 ], [ %6, %1 ] ret i32 %.0 } @@ -25391,9 +25384,8 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures %.061 = phi ptr [ %2, %4 ], [ %.162, %.loopexit ] %.pn = phi ptr [ %2, %4 ], [ %.259, %.loopexit ] %.055 = phi i64 [ 0, %4 ], [ %.2, %.loopexit ] - %.061100 = ptrtoint ptr %.061 to i64 %7 = icmp ult ptr %.061, %5 - br i1 %7, label %.preheader71, label %43 + br i1 %7, label %.preheader71, label %42 .preheader71: ; preds = %6 %.15872 = getelementptr inbounds nuw i8, ptr %.pn, i64 1 @@ -25426,9 +25418,9 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures br i1 %17, label %19, label %.preheader .preheader: ; preds = %.preheader71, %.critedge - %.158.lcssa104 = phi ptr [ %.158.lcssa, %.critedge ], [ %.15872, %.preheader71 ] - %.0.lcssa103 = phi i8 [ %.0.lcssa, %.critedge ], [ 0, %.preheader71 ] - %18 = icmp ult ptr %.158.lcssa104, %5 + %.158.lcssa102 = phi ptr [ %.158.lcssa, %.critedge ], [ %.15872, %.preheader71 ] + %.0.lcssa101 = phi i8 [ %.0.lcssa, %.critedge ], [ 0, %.preheader71 ] + %18 = icmp ult ptr %.158.lcssa102, %5 br i1 %18, label %.lr.ph83, label %.critedge2 19: ; preds = %.critedge @@ -25441,8 +25433,8 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures br label %.loopexit .lr.ph83: ; preds = %.preheader, %.lr.ph83.backedge - %.1.in81 = phi i8 [ %.182, %.lr.ph83.backedge ], [ %.0.lcssa103, %.preheader ] - %.36080 = phi ptr [ %24, %.lr.ph83.backedge ], [ %.158.lcssa104, %.preheader ] + %.1.in81 = phi i8 [ %.182, %.lr.ph83.backedge ], [ %.0.lcssa101, %.preheader ] + %.36080 = phi ptr [ %24, %.lr.ph83.backedge ], [ %.158.lcssa102, %.preheader ] %.182 = add nuw nsw i8 %.1.in81, 1 %24 = getelementptr inbounds nuw i8, ptr %.36080, i64 1 %.not = icmp uge ptr %24, %5 @@ -25463,57 +25455,51 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures %31 = load i8, ptr %29, align 1 %32 = icmp eq i8 %26, %31 %33 = icmp eq i8 %.182, 127 - %or.cond7.not110 = select i1 %32, i1 true, i1 %33 - br i1 %or.cond7.not110, label %.critedge2, label %.lr.ph83.backedge + %or.cond7.not108 = select i1 %32, i1 true, i1 %33 + br i1 %or.cond7.not108, label %.critedge2, label %.lr.ph83.backedge .lr.ph83.backedge: ; preds = %30, %34 br label %.lr.ph83 34: ; preds = %28, %25, %.lr.ph83 %.old6.not = icmp eq i8 %.182, 127 - %brmerge106 = or i1 %.old6.not, %.not - br i1 %brmerge106, label %.critedge2.loopexit.split.loop.exit, label %.lr.ph83.backedge + %brmerge104 = or i1 %.old6.not, %.not + br i1 %brmerge104, label %.critedge2.loopexit.split.loop.exit, label %.lr.ph83.backedge .critedge2.loopexit.split.loop.exit: ; preds = %34 - %.36080.mux107.le = select i1 %.old6.not, ptr %.36080, ptr %24 + %.36080.mux105.le = select i1 %.old6.not, ptr %.36080, ptr %24 %.mux.le = tail call i8 @llvm.smin.i8(i8 %.182, i8 126) br label %.critedge2 .critedge2: ; preds = %.critedge2.loopexit.split.loop.exit, %30, %.preheader - %.360.lcssa = phi ptr [ %.158.lcssa104, %.preheader ], [ %.36080.mux107.le, %.critedge2.loopexit.split.loop.exit ], [ %.36080, %30 ] - %.1.in.lcssa = phi i8 [ %.0.lcssa103, %.preheader ], [ %.mux.le, %.critedge2.loopexit.split.loop.exit ], [ %.1.in81, %30 ] + %.360.lcssa = phi ptr [ %.158.lcssa102, %.preheader ], [ %.36080.mux105.le, %.critedge2.loopexit.split.loop.exit ], [ %.36080, %30 ] + %.1.in.lcssa = phi i8 [ %.0.lcssa101, %.preheader ], [ %.mux.le, %.critedge2.loopexit.split.loop.exit ], [ %.1.in81, %30 ] %35 = xor i8 %.1.in.lcssa, -1 %36 = getelementptr inbounds i8, ptr %0, i64 %.055 store i8 %35, ptr %36, align 1 %.392 = add i64 %.055, 1 %37 = icmp ult ptr %.061, %.360.lcssa - br i1 %37, label %.lr.ph95.preheader, label %.loopexit - -.lr.ph95.preheader: ; preds = %.critedge2 - %.360.lcssa99 = ptrtoint ptr %.360.lcssa to i64 - %38 = add i64 %.392, %.360.lcssa99 - %39 = sub i64 %38, %.061100 - br label %.lr.ph95 - -.lr.ph95: ; preds = %.lr.ph95.preheader, %.lr.ph95 - %.394 = phi i64 [ %.3, %.lr.ph95 ], [ %.392, %.lr.ph95.preheader ] - %.26393 = phi ptr [ %40, %.lr.ph95 ], [ %.061, %.lr.ph95.preheader ] - %40 = getelementptr inbounds nuw i8, ptr %.26393, i64 1 - %41 = load i8, ptr %.26393, align 1 - %42 = getelementptr inbounds i8, ptr %0, i64 %.394 - store i8 %41, ptr %42, align 1 + br i1 %37, label %.lr.ph95, label %.loopexit + +.lr.ph95: ; preds = %.critedge2, %.lr.ph95 + %.394 = phi i64 [ %.3, %.lr.ph95 ], [ %.392, %.critedge2 ] + %.26393 = phi ptr [ %38, %.lr.ph95 ], [ %.061, %.critedge2 ] + %38 = getelementptr inbounds nuw i8, ptr %.26393, i64 1 + %39 = load i8, ptr %.26393, align 1 + %40 = getelementptr inbounds i8, ptr %0, i64 %.394 + store i8 %39, ptr %40, align 1 %.3 = add i64 %.394, 1 - %exitcond.not = icmp eq i64 %.3, %39 - br i1 %exitcond.not, label %.loopexit, label %.lr.ph95, !llvm.loop !122 + %41 = icmp ult ptr %38, %.360.lcssa + br i1 %41, label %.lr.ph95, label %.loopexit, !llvm.loop !122 .loopexit: ; preds = %.lr.ph95, %.critedge2, %19 - %.162 = phi ptr [ %.158.lcssa, %19 ], [ %.061, %.critedge2 ], [ %40, %.lr.ph95 ] + %.162 = phi ptr [ %.158.lcssa, %19 ], [ %.061, %.critedge2 ], [ %38, %.lr.ph95 ] %.259 = phi ptr [ %.158.lcssa, %19 ], [ %.360.lcssa, %.critedge2 ], [ %.360.lcssa, %.lr.ph95 ] - %.2 = phi i64 [ %22, %19 ], [ %.392, %.critedge2 ], [ %39, %.lr.ph95 ] + %.2 = phi i64 [ %22, %19 ], [ %.392, %.critedge2 ], [ %.3, %.lr.ph95 ] %.not70 = icmp ult i64 %.2, %1 - br i1 %.not70, label %6, label %43, !llvm.loop !123 + br i1 %.not70, label %6, label %42, !llvm.loop !123 -43: ; preds = %.loopexit, %6 +42: ; preds = %.loopexit, %6 %.156 = phi i64 [ %.2, %.loopexit ], [ %.055, %6 ] ret i64 %.156 } diff --git a/bench/protobuf/optimized/padding_optimizer.ll b/bench/protobuf/optimized/padding_optimizer.ll index c8c2cd55abc..0bdb4f49882 100644 --- a/bench/protobuf/optimized/padding_optimizer.ll +++ b/bench/protobuf/optimized/padding_optimizer.ll @@ -686,8 +686,8 @@ for.inc: ; preds = %for.inc.sink.split, br i1 %cmp, label %invoke.cont, label %for.cond87.preheader, !llvm.loop !4 for.cond91.preheader: ; preds = %for.cond87.preheader, %for.end183 - %indvars.iv645 = phi i64 [ 0, %for.cond87.preheader ], [ %indvars.iv.next646, %for.end183 ] - %arrayidx94 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_1, i64 0, i64 %indvars.iv645 + %indvars.iv635 = phi i64 [ 0, %for.cond87.preheader ], [ %indvars.iv.next636, %for.end183 ] + %arrayidx94 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_1, i64 0, i64 %indvars.iv635 %29 = getelementptr i8, ptr %arrayidx94, i64 8 %arrayidx94.val549 = load ptr, ptr %arrayidx94, align 8 %arrayidx94.val62550 = load ptr, ptr %29, align 8 @@ -695,69 +695,65 @@ for.cond91.preheader: ; preds = %for.cond87.preheade br i1 %cmp96555.not, label %for.end122, label %for.body97.lr.ph for.body97.lr.ph: ; preds = %for.cond91.preheader - %arrayidx118 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv645 + %arrayidx118 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv635 br label %for.body97 for.body97: ; preds = %for.body97.lr.ph, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 %arrayidx94.val64 = phi ptr [ %arrayidx94.val62550, %for.body97.lr.ph ], [ %arrayidx94.val62, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 ] %arrayidx94.val63 = phi ptr [ %arrayidx94.val549, %for.body97.lr.ph ], [ %arrayidx94.val, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 ] - %indvars.iv630 = phi i64 [ 1, %for.body97.lr.ph ], [ %indvars.iv.next631, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 ] - %indvars.iv628 = phi i64 [ -1, %for.body97.lr.ph ], [ %indvars.iv.next629, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 ] %indvars.iv623 = phi i64 [ 0, %for.body97.lr.ph ], [ %indvars.iv.next624, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %sub.ptr.lhs.cast.i141 = ptrtoint ptr %arrayidx94.val64 to i64 %sub.ptr.rhs.cast.i142 = ptrtoint ptr %arrayidx94.val63 to i64 %sub.ptr.sub.i143 = sub i64 %sub.ptr.lhs.cast.i141, %sub.ptr.rhs.cast.i142 %sub.ptr.div.i144 = ashr exact i64 %sub.ptr.sub.i143, 5 - %indvars.iv.next624 = add nuw nsw i64 %indvars.iv623, 4 + %indvars.iv.next624 = add i64 %indvars.iv623, 4 %cmp105533 = icmp ugt i64 %sub.ptr.div.i144, %indvars.iv623 br i1 %cmp105533, label %for.body107.lr.ph, label %for.end116 for.body107.lr.ph: ; preds = %for.body97 - %30 = add i64 %sub.ptr.div.i144, %indvars.iv628 - %umin = tail call i64 @llvm.umin.i64(i64 %30, i64 3) - %31 = add i64 %umin, %indvars.iv630 + %invariant.umin = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div.i144, i64 %indvars.iv.next624) br label %for.body107 for.body107: ; preds = %for.body107.lr.ph, %for.inc114 %indvars.iv625 = phi i64 [ %indvars.iv623, %for.body107.lr.ph ], [ %indvars.iv.next626, %for.inc114 ] - %32 = phi ptr [ null, %for.body107.lr.ph ], [ %39, %for.inc114 ] + %30 = phi ptr [ null, %for.body107.lr.ph ], [ %37, %for.inc114 ] %cond.i47.i542 = phi ptr [ null, %for.body107.lr.ph ], [ %cond.i47.i541, %for.inc114 ] - %33 = phi ptr [ null, %for.body107.lr.ph ], [ %40, %for.inc114 ] + %31 = phi ptr [ null, %for.body107.lr.ph ], [ %38, %for.inc114 ] %div.i530534 = phi double [ 0.000000e+00, %for.body107.lr.ph ], [ %div.i529, %for.inc114 ] %add.ptr.i145 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx94.val63, i64 %indvars.iv625 %fields_.i146 = getelementptr inbounds nuw i8, ptr %add.ptr.i145, i64 8 - %34 = load ptr, ptr %fields_.i146, align 8 + %32 = load ptr, ptr %fields_.i146, align 8 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i145, i64 16 - %35 = load ptr, ptr %_M_finish.i.i.i, align 8 - %cmp.i.i.i = icmp eq ptr %34, %35 + %33 = load ptr, ptr %_M_finish.i.i.i, align 8 + %cmp.i.i.i = icmp eq ptr %32, %33 br i1 %cmp.i.i.i, label %for.inc114, label %if.then.i if.then.i: ; preds = %for.body107 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %33 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %31 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %cond.i47.i542 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %conv.i = uitofp i64 %sub.ptr.div.i.i to double - %36 = load double, ptr %add.ptr.i145, align 8 - %sub.ptr.lhs.cast.i7.i = ptrtoint ptr %35 to i64 - %sub.ptr.rhs.cast.i8.i = ptrtoint ptr %34 to i64 + %34 = load double, ptr %add.ptr.i145, align 8 + %sub.ptr.lhs.cast.i7.i = ptrtoint ptr %33 to i64 + %sub.ptr.rhs.cast.i8.i = ptrtoint ptr %32 to i64 %sub.ptr.sub.i9.i = sub i64 %sub.ptr.lhs.cast.i7.i, %sub.ptr.rhs.cast.i8.i %sub.ptr.div.i10.i = ashr exact i64 %sub.ptr.sub.i9.i, 3 %conv7.i = uitofp i64 %sub.ptr.div.i10.i to double - %mul8.i = fmul double %36, %conv7.i - %37 = tail call double @llvm.fmuladd.f64(double %div.i530534, double %conv.i, double %mul8.i) + %mul8.i = fmul double %34, %conv7.i + %35 = tail call double @llvm.fmuladd.f64(double %div.i530534, double %conv.i, double %mul8.i) %add.i = add nsw i64 %sub.ptr.div.i.i, %sub.ptr.div.i10.i %conv13.i = uitofp i64 %add.i to double - %div.i = fdiv double %37, %conv13.i - %sub.ptr.lhs.cast.i301 = ptrtoint ptr %32 to i64 + %div.i = fdiv double %35, %conv13.i + %sub.ptr.lhs.cast.i301 = ptrtoint ptr %30 to i64 %sub.ptr.sub.i303 = sub i64 %sub.ptr.lhs.cast.i301, %sub.ptr.lhs.cast.i.i %cmp.not.i = icmp ult i64 %sub.ptr.sub.i303, %sub.ptr.sub.i9.i br i1 %cmp.not.i, label %if.else68.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i: ; preds = %if.then.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %33, ptr align 8 %34, i64 %sub.ptr.sub.i9.i, i1 false) - %add.ptr50.i = getelementptr inbounds i8, ptr %33, i64 %sub.ptr.sub.i9.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %31, ptr align 8 %32, i64 %sub.ptr.sub.i9.i, i1 false) + %add.ptr50.i = getelementptr inbounds i8, ptr %31, i64 %sub.ptr.sub.i9.i br label %for.inc114 if.else68.i: ; preds = %if.then.i @@ -776,8 +772,8 @@ _ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.e %.sroa.speculated.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i10.i) %add.i.i = add nsw i64 %.sroa.speculated.i.i, %sub.ptr.div.i.i %cmp7.i.i = icmp ult i64 %add.i.i, %sub.ptr.div.i.i - %38 = tail call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) - %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %38 + %36 = tail call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) + %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %36 %cmp.not.i.i = icmp eq i64 %cond.i.i, 0 br i1 %cmp.not.i.i, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i, label %cond.true.i.i @@ -788,7 +784,7 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorIPKN6g _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i %cond.i47.i = phi ptr [ null, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i ], [ %call5.i.i.i.i315, %cond.true.i.i ] - %tobool.not.i.i.i.i.i.i.i.i.i51.i = icmp eq ptr %33, %cond.i47.i542 + %tobool.not.i.i.i.i.i.i.i.i.i51.i = icmp eq ptr %31, %cond.i47.i542 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51.i, label %invoke.cont83.i, label %if.then.i.i.i.i.i.i.i.i.i52.i if.then.i.i.i.i.i.i.i.i.i52.i: ; preds = %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i @@ -797,7 +793,7 @@ if.then.i.i.i.i.i.i.i.i.i52.i: ; preds = %_ZNSt12_Vector_base invoke.cont83.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i52.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i %add.ptr.i.i.i.i.i.i.i.i.i53.i = getelementptr inbounds i8, ptr %cond.i47.i, i64 %sub.ptr.sub.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i, ptr align 8 %34, i64 %sub.ptr.sub.i9.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i, ptr align 8 %32, i64 %sub.ptr.sub.i9.i, i1 false) %add.ptr.i.i.i.i.i.i.i.i59.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i53.i, i64 %sub.ptr.sub.i9.i %tobool.not.i.i312 = icmp eq ptr %cond.i47.i542, null br i1 %tobool.not.i.i312, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i, label %if.then.i68.i @@ -811,13 +807,13 @@ _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocate br label %for.inc114 for.inc114: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i, %for.body107, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i - %39 = phi ptr [ %32, %for.body107 ], [ %add.ptr105.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %32, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] + %37 = phi ptr [ %30, %for.body107 ], [ %add.ptr105.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %30, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] %cond.i47.i541 = phi ptr [ %cond.i47.i542, %for.body107 ], [ %cond.i47.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %cond.i47.i542, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] - %40 = phi ptr [ %33, %for.body107 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %add.ptr50.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] + %38 = phi ptr [ %31, %for.body107 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %add.ptr50.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] %div.i529 = phi double [ %div.i530534, %for.body107 ], [ %div.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %div.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] %indvars.iv.next626 = add nuw i64 %indvars.iv625, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next626, %31 - br i1 %exitcond.not, label %for.cond100.for.end116_crit_edge, label %for.body107, !llvm.loop !6 + %39 = icmp ult i64 %indvars.iv.next626, %invariant.umin + br i1 %39, label %for.body107, label %for.cond100.for.end116_crit_edge, !llvm.loop !6 lpad112.loopexit: ; preds = %cond.true.i.i %lpad.loopexit497 = landingpad { ptr, i32 } @@ -845,9 +841,9 @@ if.then.i.i.i.i150: ; preds = %lpad112 br label %ehcleanup for.cond100.for.end116_crit_edge: ; preds = %for.inc114 - store ptr %40, ptr %_M_finish.i.i147, align 8 + store ptr %38, ptr %_M_finish.i.i147, align 8 store ptr %cond.i47.i541, ptr %fields_2.i, align 8 - store ptr %39, ptr %_M_end_of_storage.i, align 8 + store ptr %37, ptr %_M_end_of_storage.i, align 8 br label %for.end116 for.end116: ; preds = %for.cond100.for.end116_crit_edge, %for.body97 @@ -873,86 +869,79 @@ _ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154: ; preds %sub.ptr.sub.i139 = sub i64 %sub.ptr.lhs.cast.i137, %sub.ptr.rhs.cast.i138 %sub.ptr.div.i140 = ashr exact i64 %sub.ptr.sub.i139, 5 %cmp96 = icmp ugt i64 %sub.ptr.div.i140, %indvars.iv.next624 - %indvars.iv.next629 = add i64 %indvars.iv628, -4 - %indvars.iv.next631 = add nuw i64 %indvars.iv630, 4 br i1 %cmp96, label %for.body97, label %for.end122, !llvm.loop !7 for.end122: ; preds = %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154, %for.cond91.preheader - %arrayidx124 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv645 + %arrayidx124 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv635 %arrayidx124.val72 = load ptr, ptr %arrayidx124, align 8 - %41 = getelementptr i8, ptr %arrayidx124, i64 8 - %arrayidx124.val = load ptr, ptr %41, align 8 + %40 = getelementptr i8, ptr %arrayidx124, i64 8 + %arrayidx124.val = load ptr, ptr %40, align 8 tail call fastcc void @_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEEEvT_SD_(ptr %arrayidx124.val72, ptr %arrayidx124.val) %cmp140587.not = icmp eq ptr %arrayidx124.val, %arrayidx124.val72 br i1 %cmp140587.not, label %for.end183, label %for.body141.lr.ph for.body141.lr.ph: ; preds = %for.end122 - %cmp171 = icmp eq i64 %indvars.iv645, 5 - %arrayidx179 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv645 + %cmp171 = icmp eq i64 %indvars.iv635, 5 + %arrayidx179 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv635 %. = select i1 %cmp171, double -1.000000e+00, double 0x41BFFFFFFF000000 br label %for.body141 for.body141: ; preds = %for.body141.lr.ph, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 %arrayidx124.val68 = phi ptr [ %arrayidx124.val, %for.body141.lr.ph ], [ %arrayidx124.val66, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] %arrayidx124.val67 = phi ptr [ %arrayidx124.val72, %for.body141.lr.ph ], [ %arrayidx124.val65, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] - %indvars.iv641 = phi i64 [ 1, %for.body141.lr.ph ], [ %indvars.iv.next642, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] - %indvars.iv638 = phi i64 [ -1, %for.body141.lr.ph ], [ %indvars.iv.next639, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] - %indvars.iv633 = phi i64 [ 0, %for.body141.lr.ph ], [ %indvars.iv.next634, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] + %indvars.iv629 = phi i64 [ 0, %for.body141.lr.ph ], [ %indvars.iv.next630, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) %sub.ptr.lhs.cast.i159 = ptrtoint ptr %arrayidx124.val68 to i64 %sub.ptr.rhs.cast.i160 = ptrtoint ptr %arrayidx124.val67 to i64 %sub.ptr.sub.i161 = sub i64 %sub.ptr.lhs.cast.i159, %sub.ptr.rhs.cast.i160 %sub.ptr.div.i162 = ashr exact i64 %sub.ptr.sub.i161, 5 - %indvars.iv.next634 = add nuw nsw i64 %indvars.iv633, 2 - %cmp150562 = icmp ugt i64 %sub.ptr.div.i162, %indvars.iv633 + %indvars.iv.next630 = add i64 %indvars.iv629, 2 + %cmp150562 = icmp ugt i64 %sub.ptr.div.i162, %indvars.iv629 br i1 %cmp150562, label %for.body155.lr.ph, label %for.end164 for.body155.lr.ph: ; preds = %for.body141 - %42 = sub i64 0, %indvars.iv638 - %43 = icmp ne i64 %sub.ptr.div.i162, %42 - %umin640 = zext i1 %43 to i64 - %44 = add i64 %indvars.iv641, %umin640 + %invariant.umin670 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div.i162, i64 %indvars.iv.next630) br label %for.body155 for.body155: ; preds = %for.body155.lr.ph, %for.inc162 - %indvars.iv635 = phi i64 [ %indvars.iv633, %for.body155.lr.ph ], [ %indvars.iv.next636, %for.inc162 ] - %45 = phi ptr [ null, %for.body155.lr.ph ], [ %52, %for.inc162 ] + %indvars.iv631 = phi i64 [ %indvars.iv629, %for.body155.lr.ph ], [ %indvars.iv.next632, %for.inc162 ] + %41 = phi ptr [ null, %for.body155.lr.ph ], [ %48, %for.inc162 ] %cond.i47.i383574 = phi ptr [ null, %for.body155.lr.ph ], [ %cond.i47.i383573, %for.inc162 ] - %46 = phi ptr [ null, %for.body155.lr.ph ], [ %53, %for.inc162 ] + %42 = phi ptr [ null, %for.body155.lr.ph ], [ %49, %for.inc162 ] %div.i183559563 = phi double [ 0.000000e+00, %for.body155.lr.ph ], [ %div.i183558, %for.inc162 ] - %add.ptr.i163 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx124.val67, i64 %indvars.iv635 + %add.ptr.i163 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx124.val67, i64 %indvars.iv631 %fields_.i164 = getelementptr inbounds nuw i8, ptr %add.ptr.i163, i64 8 - %47 = load ptr, ptr %fields_.i164, align 8 + %43 = load ptr, ptr %fields_.i164, align 8 %_M_finish.i.i.i165 = getelementptr inbounds nuw i8, ptr %add.ptr.i163, i64 16 - %48 = load ptr, ptr %_M_finish.i.i.i165, align 8 - %cmp.i.i.i166 = icmp eq ptr %47, %48 + %44 = load ptr, ptr %_M_finish.i.i.i165, align 8 + %cmp.i.i.i166 = icmp eq ptr %43, %44 br i1 %cmp.i.i.i166, label %for.inc162, label %if.then.i317 if.then.i317: ; preds = %for.body155 - %sub.ptr.lhs.cast.i.i170 = ptrtoint ptr %46 to i64 + %sub.ptr.lhs.cast.i.i170 = ptrtoint ptr %42 to i64 %sub.ptr.rhs.cast.i.i171 = ptrtoint ptr %cond.i47.i383574 to i64 %sub.ptr.sub.i.i172 = sub i64 %sub.ptr.lhs.cast.i.i170, %sub.ptr.rhs.cast.i.i171 %sub.ptr.div.i.i173 = ashr exact i64 %sub.ptr.sub.i.i172, 3 %conv.i174 = uitofp i64 %sub.ptr.div.i.i173 to double - %49 = load double, ptr %add.ptr.i163, align 8 - %sub.ptr.lhs.cast.i7.i175 = ptrtoint ptr %48 to i64 - %sub.ptr.rhs.cast.i8.i176 = ptrtoint ptr %47 to i64 + %45 = load double, ptr %add.ptr.i163, align 8 + %sub.ptr.lhs.cast.i7.i175 = ptrtoint ptr %44 to i64 + %sub.ptr.rhs.cast.i8.i176 = ptrtoint ptr %43 to i64 %sub.ptr.sub.i9.i177 = sub i64 %sub.ptr.lhs.cast.i7.i175, %sub.ptr.rhs.cast.i8.i176 %sub.ptr.div.i10.i178 = ashr exact i64 %sub.ptr.sub.i9.i177, 3 %conv7.i179 = uitofp i64 %sub.ptr.div.i10.i178 to double - %mul8.i180 = fmul double %49, %conv7.i179 - %50 = tail call double @llvm.fmuladd.f64(double %div.i183559563, double %conv.i174, double %mul8.i180) + %mul8.i180 = fmul double %45, %conv7.i179 + %46 = tail call double @llvm.fmuladd.f64(double %div.i183559563, double %conv.i174, double %mul8.i180) %add.i181 = add nsw i64 %sub.ptr.div.i.i173, %sub.ptr.div.i10.i178 %conv13.i182 = uitofp i64 %add.i181 to double - %div.i183 = fdiv double %50, %conv13.i182 - %sub.ptr.lhs.cast.i324 = ptrtoint ptr %45 to i64 + %div.i183 = fdiv double %46, %conv13.i182 + %sub.ptr.lhs.cast.i324 = ptrtoint ptr %41 to i64 %sub.ptr.sub.i326 = sub i64 %sub.ptr.lhs.cast.i324, %sub.ptr.lhs.cast.i.i170 %cmp.not.i327 = icmp ult i64 %sub.ptr.sub.i326, %sub.ptr.sub.i9.i177 br i1 %cmp.not.i327, label %if.else68.i368, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345: ; preds = %if.then.i317 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %46, ptr align 8 %47, i64 %sub.ptr.sub.i9.i177, i1 false) - %add.ptr50.i347 = getelementptr inbounds i8, ptr %46, i64 %sub.ptr.sub.i9.i177 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %42, ptr align 8 %43, i64 %sub.ptr.sub.i9.i177, i1 false) + %add.ptr50.i347 = getelementptr inbounds i8, ptr %42, i64 %sub.ptr.sub.i9.i177 br label %for.inc162 if.else68.i368: ; preds = %if.then.i317 @@ -971,8 +960,8 @@ _ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.e %.sroa.speculated.i.i375 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i173, i64 %sub.ptr.div.i10.i178) %add.i.i376 = add nsw i64 %.sroa.speculated.i.i375, %sub.ptr.div.i.i173 %cmp7.i.i377 = icmp ult i64 %add.i.i376, %sub.ptr.div.i.i173 - %51 = tail call i64 @llvm.umin.i64(i64 %add.i.i376, i64 1152921504606846975) - %cond.i.i378 = select i1 %cmp7.i.i377, i64 1152921504606846975, i64 %51 + %47 = tail call i64 @llvm.umin.i64(i64 %add.i.i376, i64 1152921504606846975) + %cond.i.i378 = select i1 %cmp7.i.i377, i64 1152921504606846975, i64 %47 %cmp.not.i.i379 = icmp eq i64 %cond.i.i378, 0 br i1 %cmp.not.i.i379, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382, label %cond.true.i.i380 @@ -983,7 +972,7 @@ cond.true.i.i380: ; preds = %_ZNKSt6vectorIPKN6g _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382: ; preds = %cond.true.i.i380, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i374 %cond.i47.i383 = phi ptr [ null, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i374 ], [ %call5.i.i.i.i402, %cond.true.i.i380 ] - %tobool.not.i.i.i.i.i.i.i.i.i51.i385 = icmp eq ptr %46, %cond.i47.i383574 + %tobool.not.i.i.i.i.i.i.i.i.i51.i385 = icmp eq ptr %42, %cond.i47.i383574 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51.i385, label %invoke.cont83.i387, label %if.then.i.i.i.i.i.i.i.i.i52.i386 if.then.i.i.i.i.i.i.i.i.i52.i386: ; preds = %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382 @@ -992,7 +981,7 @@ if.then.i.i.i.i.i.i.i.i.i52.i386: ; preds = %_ZNSt12_Vector_base invoke.cont83.i387: ; preds = %if.then.i.i.i.i.i.i.i.i.i52.i386, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382 %add.ptr.i.i.i.i.i.i.i.i.i53.i388 = getelementptr inbounds i8, ptr %cond.i47.i383, i64 %sub.ptr.sub.i.i172 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i388, ptr align 8 %47, i64 %sub.ptr.sub.i9.i177, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i388, ptr align 8 %43, i64 %sub.ptr.sub.i9.i177, i1 false) %add.ptr.i.i.i.i.i.i.i.i59.i389 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i53.i388, i64 %sub.ptr.sub.i9.i177 %tobool.not.i.i395 = icmp eq ptr %cond.i47.i383574, null br i1 %tobool.not.i.i395, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397, label %if.then.i68.i396 @@ -1006,13 +995,13 @@ _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocate br label %for.inc162 for.inc162: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345, %for.body155, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 - %52 = phi ptr [ %45, %for.body155 ], [ %add.ptr105.i398, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %45, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] + %48 = phi ptr [ %41, %for.body155 ], [ %add.ptr105.i398, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %41, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] %cond.i47.i383573 = phi ptr [ %cond.i47.i383574, %for.body155 ], [ %cond.i47.i383, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %cond.i47.i383574, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] - %53 = phi ptr [ %46, %for.body155 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i389, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %add.ptr50.i347, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] + %49 = phi ptr [ %42, %for.body155 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i389, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %add.ptr50.i347, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] %div.i183558 = phi double [ %div.i183559563, %for.body155 ], [ %div.i183, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %div.i183, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] - %indvars.iv.next636 = add nuw i64 %indvars.iv635, 1 - %exitcond643.not = icmp eq i64 %indvars.iv.next636, %44 - br i1 %exitcond643.not, label %for.cond145.for.end164_crit_edge, label %for.body155, !llvm.loop !8 + %indvars.iv.next632 = add nuw i64 %indvars.iv631, 1 + %50 = icmp ult i64 %indvars.iv.next632, %invariant.umin670 + br i1 %50, label %for.body155, label %for.cond145.for.end164_crit_edge, !llvm.loop !8 lpad160.loopexit: ; preds = %cond.true.i.i380 %lpad.loopexit494 = landingpad { ptr, i32 } @@ -1040,16 +1029,16 @@ if.then.i.i.i.i188: ; preds = %lpad160 br label %ehcleanup for.cond145.for.end164_crit_edge: ; preds = %for.inc162 - store ptr %53, ptr %_M_finish.i.i169, align 8 + store ptr %49, ptr %_M_finish.i.i169, align 8 store ptr %cond.i47.i383573, ptr %fields_2.i168, align 8 - store ptr %52, ptr %_M_end_of_storage.i322, align 8 + store ptr %48, ptr %_M_end_of_storage.i322, align 8 br label %for.end164 for.end164: ; preds = %for.cond145.for.end164_crit_edge, %for.body141 %field_group142.val78 = phi ptr [ %cond.i47.i383573, %for.cond145.for.end164_crit_edge ], [ null, %for.body141 ] %div.i183559.lcssa = phi double [ %div.i183558, %for.cond145.for.end164_crit_edge ], [ 0.000000e+00, %for.body141 ] %sub = add nsw i64 %sub.ptr.div.i162, -1 - %cmp169 = icmp eq i64 %sub, %indvars.iv633 + %cmp169 = icmp eq i64 %sub, %indvars.iv629 %storemerge = select i1 %cmp169, double %., double %div.i183559.lcssa store double %storemerge, ptr %field_group142, align 8 invoke fastcc void @_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %arrayidx179, ptr noundef nonnull align 8 dereferenceable(32) %field_group142) @@ -1065,48 +1054,46 @@ if.then.i.i.i.i195: ; preds = %invoke.cont180 _ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196: ; preds = %invoke.cont180, %if.then.i.i.i.i195 %arrayidx124.val65 = load ptr, ptr %arrayidx124, align 8 - %arrayidx124.val66 = load ptr, ptr %41, align 8 + %arrayidx124.val66 = load ptr, ptr %40, align 8 %sub.ptr.lhs.cast.i155 = ptrtoint ptr %arrayidx124.val66 to i64 %sub.ptr.rhs.cast.i156 = ptrtoint ptr %arrayidx124.val65 to i64 %sub.ptr.sub.i157 = sub i64 %sub.ptr.lhs.cast.i155, %sub.ptr.rhs.cast.i156 %sub.ptr.div.i158 = ashr exact i64 %sub.ptr.sub.i157, 5 - %cmp140 = icmp ugt i64 %sub.ptr.div.i158, %indvars.iv.next634 - %indvars.iv.next639 = add i64 %indvars.iv638, -2 - %indvars.iv.next642 = add nuw i64 %indvars.iv641, 2 + %cmp140 = icmp ugt i64 %sub.ptr.div.i158, %indvars.iv.next630 br i1 %cmp140, label %for.body141, label %for.end183, !llvm.loop !9 for.end183: ; preds = %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196, %for.end122 - %arrayidx186 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv645 + %arrayidx186 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv635 %arrayidx186.val73 = load ptr, ptr %arrayidx186, align 8 - %54 = getelementptr i8, ptr %arrayidx186, i64 8 - %arrayidx186.val = load ptr, ptr %54, align 8 + %51 = getelementptr i8, ptr %arrayidx186, i64 8 + %arrayidx186.val = load ptr, ptr %51, align 8 tail call fastcc void @_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEEEvT_SD_(ptr %arrayidx186.val73, ptr %arrayidx186.val) - %indvars.iv.next646 = add nuw nsw i64 %indvars.iv645, 1 - %exitcond648.not = icmp eq i64 %indvars.iv.next646, 6 - br i1 %exitcond648.not, label %for.end199, label %for.cond91.preheader, !llvm.loop !10 + %indvars.iv.next636 = add nuw nsw i64 %indvars.iv635, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next636, 6 + br i1 %exitcond.not, label %for.end199, label %for.cond91.preheader, !llvm.loop !10 for.end199: ; preds = %for.end183 - %55 = load ptr, ptr %fields, align 8 - %56 = load ptr, ptr %_M_finish.i.i, align 8 - %tobool.not.i.i198 = icmp eq ptr %56, %55 + %52 = load ptr, ptr %fields, align 8 + %53 = load ptr, ptr %_M_finish.i.i, align 8 + %tobool.not.i.i198 = icmp eq ptr %53, %52 br i1 %tobool.not.i.i198, label %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit, label %invoke.cont.i.i invoke.cont.i.i: ; preds = %for.end199 - store ptr %55, ptr %_M_finish.i.i, align 8 + store ptr %52, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit _ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit: ; preds = %for.end199, %invoke.cont.i.i - %57 = phi ptr [ %56, %for.end199 ], [ %55, %invoke.cont.i.i ] + %54 = phi ptr [ %53, %for.end199 ], [ %52, %invoke.cont.i.i ] %_M_end_of_storage.i410 = getelementptr inbounds nuw i8, ptr %fields, i64 16 br label %for.cond205.preheader for.cond205.preheader: ; preds = %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit, %for.inc243 - %58 = phi ptr [ %57, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %67, %for.inc243 ] - %indvars.iv653 = phi i64 [ 0, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %indvars.iv.next654, %for.inc243 ] - %arrayidx208 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv653 + %55 = phi ptr [ %54, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %64, %for.inc243 ] + %indvars.iv642 = phi i64 [ 0, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %indvars.iv.next643, %for.inc243 ] + %arrayidx208 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv642 %arrayidx208.val = load ptr, ptr %arrayidx208, align 8 - %59 = getelementptr i8, ptr %arrayidx208, i64 8 - %arrayidx208.val71 = load ptr, ptr %59, align 8 + %56 = getelementptr i8, ptr %arrayidx208, i64 8 + %arrayidx208.val71 = load ptr, ptr %56, align 8 %cmp210591.not = icmp eq ptr %arrayidx208.val71, %arrayidx208.val br i1 %cmp210591.not, label %for.inc243, label %for.body211.preheader @@ -1119,32 +1106,32 @@ for.body211.preheader: ; preds = %for.cond205.prehead br label %for.body211 for.body211: ; preds = %for.body211.preheader, %invoke.cont237 - %60 = phi ptr [ %58, %for.body211.preheader ], [ %66, %invoke.cont237 ] - %indvars.iv649 = phi i64 [ 0, %for.body211.preheader ], [ %indvars.iv.next650, %invoke.cont237 ] - %fields_.i205 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx208.val, i64 %indvars.iv649, i32 1 - %61 = load ptr, ptr %fields_.i205, align 8 + %57 = phi ptr [ %55, %for.body211.preheader ], [ %63, %invoke.cont237 ] + %indvars.iv638 = phi i64 [ 0, %for.body211.preheader ], [ %indvars.iv.next639, %invoke.cont237 ] + %fields_.i205 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx208.val, i64 %indvars.iv638, i32 1 + %58 = load ptr, ptr %fields_.i205, align 8 %_M_finish.i208 = getelementptr inbounds nuw i8, ptr %fields_.i205, i64 8 - %62 = load ptr, ptr %_M_finish.i208, align 8 - %63 = load ptr, ptr %fields, align 8 - %sub.ptr.lhs.cast.i.i209 = ptrtoint ptr %60 to i64 - %sub.ptr.rhs.cast.i.i210 = ptrtoint ptr %63 to i64 + %59 = load ptr, ptr %_M_finish.i208, align 8 + %60 = load ptr, ptr %fields, align 8 + %sub.ptr.lhs.cast.i.i209 = ptrtoint ptr %57 to i64 + %sub.ptr.rhs.cast.i.i210 = ptrtoint ptr %60 to i64 %sub.ptr.sub.i.i211 = sub i64 %sub.ptr.lhs.cast.i.i209, %sub.ptr.rhs.cast.i.i210 - %cmp.i.not.i404 = icmp eq ptr %61, %62 + %cmp.i.not.i404 = icmp eq ptr %58, %59 br i1 %cmp.i.not.i404, label %invoke.cont237, label %if.then.i405 if.then.i405: ; preds = %for.body211 - %sub.ptr.lhs.cast.i.i.i.i406 = ptrtoint ptr %62 to i64 - %sub.ptr.rhs.cast.i.i.i.i407 = ptrtoint ptr %61 to i64 + %sub.ptr.lhs.cast.i.i.i.i406 = ptrtoint ptr %59 to i64 + %sub.ptr.rhs.cast.i.i.i.i407 = ptrtoint ptr %58 to i64 %sub.ptr.sub.i.i.i.i408 = sub i64 %sub.ptr.lhs.cast.i.i.i.i406, %sub.ptr.rhs.cast.i.i.i.i407 %sub.ptr.div.i.i.i.i409 = ashr exact i64 %sub.ptr.sub.i.i.i.i408, 3 - %64 = load ptr, ptr %_M_end_of_storage.i410, align 8 - %sub.ptr.lhs.cast.i412 = ptrtoint ptr %64 to i64 + %61 = load ptr, ptr %_M_end_of_storage.i410, align 8 + %sub.ptr.lhs.cast.i412 = ptrtoint ptr %61 to i64 %sub.ptr.sub.i414 = sub i64 %sub.ptr.lhs.cast.i412, %sub.ptr.lhs.cast.i.i209 %cmp.not.i415 = icmp ult i64 %sub.ptr.sub.i414, %sub.ptr.sub.i.i.i.i408 br i1 %cmp.not.i415, label %if.else68.i456, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433: ; preds = %if.then.i405 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %60, ptr align 8 %61, i64 %sub.ptr.sub.i.i.i.i408, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %57, ptr align 8 %58, i64 %sub.ptr.sub.i.i.i.i408, i1 false) %.pre.i432 = load ptr, ptr %_M_finish.i.i, align 8 %add.ptr50.i435 = getelementptr inbounds i8, ptr %.pre.i432, i64 %sub.ptr.sub.i.i.i.i408 store ptr %add.ptr50.i435, ptr %_M_finish.i.i, align 8 @@ -1167,8 +1154,8 @@ _ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.e %.sroa.speculated.i.i463 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i459, i64 %sub.ptr.div.i.i.i.i409) %add.i.i464 = add nsw i64 %.sroa.speculated.i.i463, %sub.ptr.div.i.i.i459 %cmp7.i.i465 = icmp ult i64 %add.i.i464, %sub.ptr.div.i.i.i459 - %65 = tail call i64 @llvm.umin.i64(i64 %add.i.i464, i64 1152921504606846975) - %cond.i.i466 = select i1 %cmp7.i.i465, i64 1152921504606846975, i64 %65 + %62 = tail call i64 @llvm.umin.i64(i64 %add.i.i464, i64 1152921504606846975) + %cond.i.i466 = select i1 %cmp7.i.i465, i64 1152921504606846975, i64 %62 %cmp.not.i.i467 = icmp eq i64 %cond.i.i466, 0 br i1 %cmp.not.i.i467, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470, label %cond.true.i.i468 @@ -1179,22 +1166,22 @@ cond.true.i.i468: ; preds = %_ZNKSt6vectorIPKN6g _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470: ; preds = %cond.true.i.i468, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i462 %cond.i47.i471 = phi ptr [ null, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i462 ], [ %call5.i.i.i.i490, %cond.true.i.i468 ] - %tobool.not.i.i.i.i.i.i.i.i.i51.i473 = icmp eq ptr %60, %63 + %tobool.not.i.i.i.i.i.i.i.i.i51.i473 = icmp eq ptr %57, %60 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51.i473, label %invoke.cont83.i475, label %if.then.i.i.i.i.i.i.i.i.i52.i474 if.then.i.i.i.i.i.i.i.i.i52.i474: ; preds = %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i47.i471, ptr align 8 %63, i64 %sub.ptr.sub.i.i211, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i47.i471, ptr align 8 %60, i64 %sub.ptr.sub.i.i211, i1 false) br label %invoke.cont83.i475 invoke.cont83.i475: ; preds = %if.then.i.i.i.i.i.i.i.i.i52.i474, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470 %add.ptr.i.i.i.i.i.i.i.i.i53.i476 = getelementptr inbounds i8, ptr %cond.i47.i471, i64 %sub.ptr.sub.i.i211 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i476, ptr align 8 %61, i64 %sub.ptr.sub.i.i.i.i408, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i476, ptr align 8 %58, i64 %sub.ptr.sub.i.i.i.i408, i1 false) %add.ptr.i.i.i.i.i.i.i.i59.i477 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i53.i476, i64 %sub.ptr.sub.i.i.i.i408 - %tobool.not.i.i483 = icmp eq ptr %63, null + %tobool.not.i.i483 = icmp eq ptr %60, null br i1 %tobool.not.i.i483, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485, label %if.then.i68.i484 if.then.i68.i484: ; preds = %invoke.cont83.i475 - tail call void @_ZdlPv(ptr noundef nonnull %63) #26 + tail call void @_ZdlPv(ptr noundef nonnull %60) #26 br label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485: ; preds = %if.then.i68.i484, %invoke.cont83.i475 @@ -1205,30 +1192,30 @@ _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocate br label %invoke.cont237 invoke.cont237: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433, %for.body211, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 - %66 = phi ptr [ %add.ptr50.i435, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433 ], [ %60, %for.body211 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i477, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 ] - %indvars.iv.next650 = add nuw i64 %indvars.iv649, 1 - %exitcond652.not = icmp eq i64 %indvars.iv.next650, %umax - br i1 %exitcond652.not, label %for.inc243, label %for.body211, !llvm.loop !11 + %63 = phi ptr [ %add.ptr50.i435, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433 ], [ %57, %for.body211 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i477, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 ] + %indvars.iv.next639 = add nuw i64 %indvars.iv638, 1 + %exitcond641.not = icmp eq i64 %indvars.iv.next639, %umax + br i1 %exitcond641.not, label %for.inc243, label %for.body211, !llvm.loop !11 for.inc243: ; preds = %invoke.cont237, %for.cond205.preheader - %67 = phi ptr [ %58, %for.cond205.preheader ], [ %66, %invoke.cont237 ] - %indvars.iv.next654 = add nuw nsw i64 %indvars.iv653, 1 - %exitcond656.not = icmp eq i64 %indvars.iv.next654, 6 - br i1 %exitcond656.not, label %arraydestroy.body, label %for.cond205.preheader, !llvm.loop !12 + %64 = phi ptr [ %55, %for.cond205.preheader ], [ %63, %invoke.cont237 ] + %indvars.iv.next643 = add nuw nsw i64 %indvars.iv642, 1 + %exitcond645.not = icmp eq i64 %indvars.iv.next643, 6 + br i1 %exitcond645.not, label %arraydestroy.body, label %for.cond205.preheader, !llvm.loop !12 arraydestroy.body: ; preds = %for.inc243, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit ], [ %arrayctor.end9, %for.inc243 ] %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -24 - %68 = load ptr, ptr %arraydestroy.element, align 8 + %65 = load ptr, ptr %arraydestroy.element, align 8 %_M_finish.i213 = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %69 = load ptr, ptr %_M_finish.i213, align 8 - %cmp.not3.i.i.i.i = icmp eq ptr %68, %69 + %66 = load ptr, ptr %_M_finish.i213, align 8 + %cmp.not3.i.i.i.i = icmp eq ptr %65, %66 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %arraydestroy.body, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i - %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ], [ %68, %arraydestroy.body ] - %70 = getelementptr i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %__first.addr.0.val.i.i.i.i = load ptr, ptr %70, align 8 + %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ], [ %65, %arraydestroy.body ] + %67 = getelementptr i8, ptr %__first.addr.04.i.i.i.i, i64 8 + %__first.addr.0.val.i.i.i.i = load ptr, ptr %67, align 8 %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %__first.addr.0.val.i.i.i.i, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i @@ -1238,7 +1225,7 @@ if.then.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i, i64 32 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %69 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %66 br i1 %cmp.not.i.i.i.i, label %invoke.contthread-pre-split.i, label %for.body.i.i.i.i, !llvm.loop !13 invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i @@ -1246,7 +1233,7 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i invoke.cont.i: ; preds = %invoke.contthread-pre-split.i, %arraydestroy.body - %this.val.i = phi ptr [ %this.val.pr.i, %invoke.contthread-pre-split.i ], [ %68, %arraydestroy.body ] + %this.val.i = phi ptr [ %this.val.pr.i, %invoke.contthread-pre-split.i ], [ %65, %arraydestroy.body ] %tobool.not.i.i.i = icmp eq ptr %this.val.i, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit, label %if.then.i.i.i214 @@ -1261,16 +1248,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body255: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231 %arraydestroy.elementPast256 = phi ptr [ %arraydestroy.element257, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231 ], [ %arrayctor.end2, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit ] %arraydestroy.element257 = getelementptr inbounds i8, ptr %arraydestroy.elementPast256, i64 -24 - %71 = load ptr, ptr %arraydestroy.element257, align 8 + %68 = load ptr, ptr %arraydestroy.element257, align 8 %_M_finish.i215 = getelementptr inbounds i8, ptr %arraydestroy.elementPast256, i64 -16 - %72 = load ptr, ptr %_M_finish.i215, align 8 - %cmp.not3.i.i.i.i216 = icmp eq ptr %71, %72 + %69 = load ptr, ptr %_M_finish.i215, align 8 + %cmp.not3.i.i.i.i216 = icmp eq ptr %68, %69 br i1 %cmp.not3.i.i.i.i216, label %invoke.cont.i227, label %for.body.i.i.i.i217 for.body.i.i.i.i217: ; preds = %arraydestroy.body255, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 - %__first.addr.04.i.i.i.i218 = phi ptr [ %incdec.ptr.i.i.i.i223, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 ], [ %71, %arraydestroy.body255 ] - %73 = getelementptr i8, ptr %__first.addr.04.i.i.i.i218, i64 8 - %__first.addr.0.val.i.i.i.i219 = load ptr, ptr %73, align 8 + %__first.addr.04.i.i.i.i218 = phi ptr [ %incdec.ptr.i.i.i.i223, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 ], [ %68, %arraydestroy.body255 ] + %70 = getelementptr i8, ptr %__first.addr.04.i.i.i.i218, i64 8 + %__first.addr.0.val.i.i.i.i219 = load ptr, ptr %70, align 8 %tobool.not.i.i.i.i.i.i.i.i.i220 = icmp eq ptr %__first.addr.0.val.i.i.i.i219, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i220, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222, label %if.then.i.i.i.i.i.i.i.i.i221 @@ -1280,7 +1267,7 @@ if.then.i.i.i.i.i.i.i.i.i221: ; preds = %for.body.i.i.i.i217 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222: ; preds = %if.then.i.i.i.i.i.i.i.i.i221, %for.body.i.i.i.i217 %incdec.ptr.i.i.i.i223 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i218, i64 32 - %cmp.not.i.i.i.i224 = icmp eq ptr %incdec.ptr.i.i.i.i223, %72 + %cmp.not.i.i.i.i224 = icmp eq ptr %incdec.ptr.i.i.i.i223, %69 br i1 %cmp.not.i.i.i.i224, label %invoke.contthread-pre-split.i225, label %for.body.i.i.i.i217, !llvm.loop !13 invoke.contthread-pre-split.i225: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 @@ -1288,7 +1275,7 @@ invoke.contthread-pre-split.i225: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i227 invoke.cont.i227: ; preds = %invoke.contthread-pre-split.i225, %arraydestroy.body255 - %this.val.i228 = phi ptr [ %this.val.pr.i226, %invoke.contthread-pre-split.i225 ], [ %71, %arraydestroy.body255 ] + %this.val.i228 = phi ptr [ %this.val.pr.i226, %invoke.contthread-pre-split.i225 ], [ %68, %arraydestroy.body255 ] %tobool.not.i.i.i229 = icmp eq ptr %this.val.i228, null br i1 %tobool.not.i.i.i229, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231, label %if.then.i.i.i230 @@ -1303,16 +1290,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body268: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit248 %arraydestroy.elementPast269 = phi ptr [ %arraydestroy.element270, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit248 ], [ %arrayctor.end, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231 ] %arraydestroy.element270 = getelementptr inbounds i8, ptr %arraydestroy.elementPast269, i64 -24 - %74 = load ptr, ptr %arraydestroy.element270, align 8 + %71 = load ptr, ptr %arraydestroy.element270, align 8 %_M_finish.i232 = getelementptr inbounds i8, ptr %arraydestroy.elementPast269, i64 -16 - %75 = load ptr, ptr %_M_finish.i232, align 8 - %cmp.not3.i.i.i.i233 = icmp eq ptr %74, %75 + %72 = load ptr, ptr %_M_finish.i232, align 8 + %cmp.not3.i.i.i.i233 = icmp eq ptr %71, %72 br i1 %cmp.not3.i.i.i.i233, label %invoke.cont.i244, label %for.body.i.i.i.i234 for.body.i.i.i.i234: ; preds = %arraydestroy.body268, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 - %__first.addr.04.i.i.i.i235 = phi ptr [ %incdec.ptr.i.i.i.i240, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 ], [ %74, %arraydestroy.body268 ] - %76 = getelementptr i8, ptr %__first.addr.04.i.i.i.i235, i64 8 - %__first.addr.0.val.i.i.i.i236 = load ptr, ptr %76, align 8 + %__first.addr.04.i.i.i.i235 = phi ptr [ %incdec.ptr.i.i.i.i240, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 ], [ %71, %arraydestroy.body268 ] + %73 = getelementptr i8, ptr %__first.addr.04.i.i.i.i235, i64 8 + %__first.addr.0.val.i.i.i.i236 = load ptr, ptr %73, align 8 %tobool.not.i.i.i.i.i.i.i.i.i237 = icmp eq ptr %__first.addr.0.val.i.i.i.i236, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i237, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239, label %if.then.i.i.i.i.i.i.i.i.i238 @@ -1322,7 +1309,7 @@ if.then.i.i.i.i.i.i.i.i.i238: ; preds = %for.body.i.i.i.i234 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239: ; preds = %if.then.i.i.i.i.i.i.i.i.i238, %for.body.i.i.i.i234 %incdec.ptr.i.i.i.i240 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i235, i64 32 - %cmp.not.i.i.i.i241 = icmp eq ptr %incdec.ptr.i.i.i.i240, %75 + %cmp.not.i.i.i.i241 = icmp eq ptr %incdec.ptr.i.i.i.i240, %72 br i1 %cmp.not.i.i.i.i241, label %invoke.contthread-pre-split.i242, label %for.body.i.i.i.i234, !llvm.loop !13 invoke.contthread-pre-split.i242: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 @@ -1330,7 +1317,7 @@ invoke.contthread-pre-split.i242: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i244 invoke.cont.i244: ; preds = %invoke.contthread-pre-split.i242, %arraydestroy.body268 - %this.val.i245 = phi ptr [ %this.val.pr.i243, %invoke.contthread-pre-split.i242 ], [ %74, %arraydestroy.body268 ] + %this.val.i245 = phi ptr [ %this.val.pr.i243, %invoke.contthread-pre-split.i242 ], [ %71, %arraydestroy.body268 ] %tobool.not.i.i.i246 = icmp eq ptr %this.val.i245, null br i1 %tobool.not.i.i.i246, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit248, label %if.then.i.i.i247 @@ -1352,16 +1339,16 @@ ehcleanup: ; preds = %lpad.loopexit, %lpa arraydestroy.body249: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265, %ehcleanup %arraydestroy.elementPast250 = phi ptr [ %arrayctor.end9, %ehcleanup ], [ %arraydestroy.element251, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265 ] %arraydestroy.element251 = getelementptr inbounds i8, ptr %arraydestroy.elementPast250, i64 -24 - %77 = load ptr, ptr %arraydestroy.element251, align 8 + %74 = load ptr, ptr %arraydestroy.element251, align 8 %_M_finish.i249 = getelementptr inbounds i8, ptr %arraydestroy.elementPast250, i64 -16 - %78 = load ptr, ptr %_M_finish.i249, align 8 - %cmp.not3.i.i.i.i250 = icmp eq ptr %77, %78 + %75 = load ptr, ptr %_M_finish.i249, align 8 + %cmp.not3.i.i.i.i250 = icmp eq ptr %74, %75 br i1 %cmp.not3.i.i.i.i250, label %invoke.cont.i261, label %for.body.i.i.i.i251 for.body.i.i.i.i251: ; preds = %arraydestroy.body249, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 - %__first.addr.04.i.i.i.i252 = phi ptr [ %incdec.ptr.i.i.i.i257, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 ], [ %77, %arraydestroy.body249 ] - %79 = getelementptr i8, ptr %__first.addr.04.i.i.i.i252, i64 8 - %__first.addr.0.val.i.i.i.i253 = load ptr, ptr %79, align 8 + %__first.addr.04.i.i.i.i252 = phi ptr [ %incdec.ptr.i.i.i.i257, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 ], [ %74, %arraydestroy.body249 ] + %76 = getelementptr i8, ptr %__first.addr.04.i.i.i.i252, i64 8 + %__first.addr.0.val.i.i.i.i253 = load ptr, ptr %76, align 8 %tobool.not.i.i.i.i.i.i.i.i.i254 = icmp eq ptr %__first.addr.0.val.i.i.i.i253, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i254, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256, label %if.then.i.i.i.i.i.i.i.i.i255 @@ -1371,7 +1358,7 @@ if.then.i.i.i.i.i.i.i.i.i255: ; preds = %for.body.i.i.i.i251 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256: ; preds = %if.then.i.i.i.i.i.i.i.i.i255, %for.body.i.i.i.i251 %incdec.ptr.i.i.i.i257 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i252, i64 32 - %cmp.not.i.i.i.i258 = icmp eq ptr %incdec.ptr.i.i.i.i257, %78 + %cmp.not.i.i.i.i258 = icmp eq ptr %incdec.ptr.i.i.i.i257, %75 br i1 %cmp.not.i.i.i.i258, label %invoke.contthread-pre-split.i259, label %for.body.i.i.i.i251, !llvm.loop !13 invoke.contthread-pre-split.i259: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 @@ -1379,7 +1366,7 @@ invoke.contthread-pre-split.i259: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i261 invoke.cont.i261: ; preds = %invoke.contthread-pre-split.i259, %arraydestroy.body249 - %this.val.i262 = phi ptr [ %this.val.pr.i260, %invoke.contthread-pre-split.i259 ], [ %77, %arraydestroy.body249 ] + %this.val.i262 = phi ptr [ %this.val.pr.i260, %invoke.contthread-pre-split.i259 ], [ %74, %arraydestroy.body249 ] %tobool.not.i.i.i263 = icmp eq ptr %this.val.i262, null br i1 %tobool.not.i.i.i263, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265, label %if.then.i.i.i264 @@ -1394,16 +1381,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body262: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282 %arraydestroy.elementPast263 = phi ptr [ %arraydestroy.element264, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282 ], [ %arrayctor.end2, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265 ] %arraydestroy.element264 = getelementptr inbounds i8, ptr %arraydestroy.elementPast263, i64 -24 - %80 = load ptr, ptr %arraydestroy.element264, align 8 + %77 = load ptr, ptr %arraydestroy.element264, align 8 %_M_finish.i266 = getelementptr inbounds i8, ptr %arraydestroy.elementPast263, i64 -16 - %81 = load ptr, ptr %_M_finish.i266, align 8 - %cmp.not3.i.i.i.i267 = icmp eq ptr %80, %81 + %78 = load ptr, ptr %_M_finish.i266, align 8 + %cmp.not3.i.i.i.i267 = icmp eq ptr %77, %78 br i1 %cmp.not3.i.i.i.i267, label %invoke.cont.i278, label %for.body.i.i.i.i268 for.body.i.i.i.i268: ; preds = %arraydestroy.body262, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 - %__first.addr.04.i.i.i.i269 = phi ptr [ %incdec.ptr.i.i.i.i274, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 ], [ %80, %arraydestroy.body262 ] - %82 = getelementptr i8, ptr %__first.addr.04.i.i.i.i269, i64 8 - %__first.addr.0.val.i.i.i.i270 = load ptr, ptr %82, align 8 + %__first.addr.04.i.i.i.i269 = phi ptr [ %incdec.ptr.i.i.i.i274, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 ], [ %77, %arraydestroy.body262 ] + %79 = getelementptr i8, ptr %__first.addr.04.i.i.i.i269, i64 8 + %__first.addr.0.val.i.i.i.i270 = load ptr, ptr %79, align 8 %tobool.not.i.i.i.i.i.i.i.i.i271 = icmp eq ptr %__first.addr.0.val.i.i.i.i270, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i271, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273, label %if.then.i.i.i.i.i.i.i.i.i272 @@ -1413,7 +1400,7 @@ if.then.i.i.i.i.i.i.i.i.i272: ; preds = %for.body.i.i.i.i268 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273: ; preds = %if.then.i.i.i.i.i.i.i.i.i272, %for.body.i.i.i.i268 %incdec.ptr.i.i.i.i274 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i269, i64 32 - %cmp.not.i.i.i.i275 = icmp eq ptr %incdec.ptr.i.i.i.i274, %81 + %cmp.not.i.i.i.i275 = icmp eq ptr %incdec.ptr.i.i.i.i274, %78 br i1 %cmp.not.i.i.i.i275, label %invoke.contthread-pre-split.i276, label %for.body.i.i.i.i268, !llvm.loop !13 invoke.contthread-pre-split.i276: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 @@ -1421,7 +1408,7 @@ invoke.contthread-pre-split.i276: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i278 invoke.cont.i278: ; preds = %invoke.contthread-pre-split.i276, %arraydestroy.body262 - %this.val.i279 = phi ptr [ %this.val.pr.i277, %invoke.contthread-pre-split.i276 ], [ %80, %arraydestroy.body262 ] + %this.val.i279 = phi ptr [ %this.val.pr.i277, %invoke.contthread-pre-split.i276 ], [ %77, %arraydestroy.body262 ] %tobool.not.i.i.i280 = icmp eq ptr %this.val.i279, null br i1 %tobool.not.i.i.i280, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282, label %if.then.i.i.i281 @@ -1436,16 +1423,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body275: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit299 %arraydestroy.elementPast276 = phi ptr [ %arraydestroy.element277, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit299 ], [ %arrayctor.end, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282 ] %arraydestroy.element277 = getelementptr inbounds i8, ptr %arraydestroy.elementPast276, i64 -24 - %83 = load ptr, ptr %arraydestroy.element277, align 8 + %80 = load ptr, ptr %arraydestroy.element277, align 8 %_M_finish.i283 = getelementptr inbounds i8, ptr %arraydestroy.elementPast276, i64 -16 - %84 = load ptr, ptr %_M_finish.i283, align 8 - %cmp.not3.i.i.i.i284 = icmp eq ptr %83, %84 + %81 = load ptr, ptr %_M_finish.i283, align 8 + %cmp.not3.i.i.i.i284 = icmp eq ptr %80, %81 br i1 %cmp.not3.i.i.i.i284, label %invoke.cont.i295, label %for.body.i.i.i.i285 for.body.i.i.i.i285: ; preds = %arraydestroy.body275, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 - %__first.addr.04.i.i.i.i286 = phi ptr [ %incdec.ptr.i.i.i.i291, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 ], [ %83, %arraydestroy.body275 ] - %85 = getelementptr i8, ptr %__first.addr.04.i.i.i.i286, i64 8 - %__first.addr.0.val.i.i.i.i287 = load ptr, ptr %85, align 8 + %__first.addr.04.i.i.i.i286 = phi ptr [ %incdec.ptr.i.i.i.i291, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 ], [ %80, %arraydestroy.body275 ] + %82 = getelementptr i8, ptr %__first.addr.04.i.i.i.i286, i64 8 + %__first.addr.0.val.i.i.i.i287 = load ptr, ptr %82, align 8 %tobool.not.i.i.i.i.i.i.i.i.i288 = icmp eq ptr %__first.addr.0.val.i.i.i.i287, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i288, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290, label %if.then.i.i.i.i.i.i.i.i.i289 @@ -1455,7 +1442,7 @@ if.then.i.i.i.i.i.i.i.i.i289: ; preds = %for.body.i.i.i.i285 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290: ; preds = %if.then.i.i.i.i.i.i.i.i.i289, %for.body.i.i.i.i285 %incdec.ptr.i.i.i.i291 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i286, i64 32 - %cmp.not.i.i.i.i292 = icmp eq ptr %incdec.ptr.i.i.i.i291, %84 + %cmp.not.i.i.i.i292 = icmp eq ptr %incdec.ptr.i.i.i.i291, %81 br i1 %cmp.not.i.i.i.i292, label %invoke.contthread-pre-split.i293, label %for.body.i.i.i.i285, !llvm.loop !13 invoke.contthread-pre-split.i293: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 @@ -1463,7 +1450,7 @@ invoke.contthread-pre-split.i293: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i295 invoke.cont.i295: ; preds = %invoke.contthread-pre-split.i293, %arraydestroy.body275 - %this.val.i296 = phi ptr [ %this.val.pr.i294, %invoke.contthread-pre-split.i293 ], [ %83, %arraydestroy.body275 ] + %this.val.i296 = phi ptr [ %this.val.pr.i294, %invoke.contthread-pre-split.i293 ], [ %80, %arraydestroy.body275 ] %tobool.not.i.i.i297 = icmp eq ptr %this.val.i296, null br i1 %tobool.not.i.i.i297, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit299, label %if.then.i.i.i298 diff --git a/bench/qemu/optimized/block_qed-table.ll b/bench/qemu/optimized/block_qed-table.ll index 4673b094099..10529197a51 100644 --- a/bench/qemu/optimized/block_qed-table.ll +++ b/bench/qemu/optimized/block_qed-table.ll @@ -231,75 +231,72 @@ trace_qed_write_table.exit.for.end_crit_edge: ; preds = %trace_qed_write_tab for.body.preheader: ; preds = %trace_qed_write_table.exit %7 = and i32 %index, -64 - %8 = and i32 %index, -64 - %9 = zext i32 %8 to i64 - %10 = zext i32 %and to i64 - %11 = add i32 %and3, %7 - %12 = sub i32 %11, %and + %8 = zext i32 %7 to i64 + %9 = zext i32 %and to i64 + %10 = zext i32 %and3 to i64 br label %for.body for.body: ; preds = %for.body.preheader, %for.body - %indvars.iv = phi i64 [ %9, %for.body.preheader ], [ %indvars.iv.next, %for.body ] + %indvars.iv = phi i64 [ %8, %for.body.preheader ], [ %indvars.iv.next, %for.body ] %arrayidx = getelementptr [0 x i64], ptr %table, i64 0, i64 %indvars.iv - %13 = load i64, ptr %arrayidx, align 8 - %14 = sub nuw nsw i64 %indvars.iv, %10 - %arrayidx9 = getelementptr [0 x i64], ptr %call, i64 0, i64 %14 - store i64 %13, ptr %arrayidx9, align 8 + %11 = load i64, ptr %arrayidx, align 8 + %12 = sub nuw nsw i64 %indvars.iv, %9 + %arrayidx9 = getelementptr [0 x i64], ptr %call, i64 0, i64 %12 + store i64 %11, ptr %arrayidx9, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next to i32 - %exitcond.not = icmp eq i32 %12, %lftr.wideiv - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !5 + %cmp = icmp samesign ult i64 %indvars.iv.next, %10 + br i1 %cmp, label %for.body, label %for.end, !llvm.loop !5 for.end: ; preds = %for.body, %trace_qed_write_table.exit.for.end_crit_edge - %conv10.pre-phi = phi i64 [ %.pre, %trace_qed_write_table.exit.for.end_crit_edge ], [ %10, %for.body ] + %conv10.pre-phi = phi i64 [ %.pre, %trace_qed_write_table.exit.for.end_crit_edge ], [ %9, %for.body ] %mul11 = shl nuw nsw i64 %conv10.pre-phi, 3 %add12 = add i64 %mul11, %offset %table_lock = getelementptr inbounds nuw i8, ptr %s, i64 72 tail call void @qemu_co_mutex_unlock(ptr noundef nonnull %table_lock) #6 - %15 = load ptr, ptr %s, align 8 - %file = getelementptr inbounds nuw i8, ptr %15, i64 16840 - %16 = load ptr, ptr %file, align 8 + %13 = load ptr, ptr %s, align 8 + %file = getelementptr inbounds nuw i8, ptr %13, i64 16840 + %14 = load ptr, ptr %file, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %qiov.i) - %17 = getelementptr inbounds nuw i8, ptr %qiov.i, i64 16 + %15 = getelementptr inbounds nuw i8, ptr %qiov.i, i64 16 %local_iov.i = getelementptr inbounds nuw i8, ptr %qiov.i, i64 24 store ptr %local_iov.i, ptr %qiov.i, align 8 %niov.i = getelementptr inbounds nuw i8, ptr %qiov.i, i64 8 store i32 1, ptr %niov.i, align 8 - store i32 -1, ptr %17, align 8 + store i32 -1, ptr %15, align 8 store ptr %call, ptr %local_iov.i, align 8 %iov_len.i = getelementptr inbounds nuw i8, ptr %qiov.i, i64 32 store i64 %mul, ptr %iov_len.i, align 8 call void @assert_bdrv_graph_readable() #6 - %call.i = call i32 @bdrv_co_pwritev(ptr noundef %16, i64 noundef %add12, i64 noundef %mul, ptr noundef nonnull %qiov.i, i32 noundef 0) #6 + %call.i = call i32 @bdrv_co_pwritev(ptr noundef %14, i64 noundef %add12, i64 noundef %mul, ptr noundef nonnull %qiov.i, i32 noundef 0) #6 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %qiov.i) call void @qemu_co_mutex_lock(ptr noundef nonnull %table_lock) #6 %conv17 = zext i1 %flush to i32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_now.i.i30) - %18 = load i32, ptr @trace_events_enabled_count, align 4 - %tobool.i.i31 = icmp ne i32 %18, 0 - %19 = load i16, ptr @_TRACE_QED_WRITE_TABLE_CB_DSTATE, align 2 - %tobool4.i.i32 = icmp ne i16 %19, 0 + %16 = load i32, ptr @trace_events_enabled_count, align 4 + %tobool.i.i31 = icmp ne i32 %16, 0 + %17 = load i16, ptr @_TRACE_QED_WRITE_TABLE_CB_DSTATE, align 2 + %tobool4.i.i32 = icmp ne i16 %17, 0 %or.cond.i.i33 = select i1 %tobool.i.i31, i1 %tobool4.i.i32, i1 false br i1 %or.cond.i.i33, label %land.lhs.true5.i.i34, label %trace_qed_write_table_cb.exit land.lhs.true5.i.i34: ; preds = %for.end - %20 = load i32, ptr @qemu_loglevel, align 4 - %and.i.i.i35 = and i32 %20, 32768 + %18 = load i32, ptr @qemu_loglevel, align 4 + %and.i.i.i35 = and i32 %18, 32768 %cmp.i.not.i.i36 = icmp eq i32 %and.i.i.i35, 0 br i1 %cmp.i.not.i.i36, label %trace_qed_write_table_cb.exit, label %if.then.i.i37 if.then.i.i37: ; preds = %land.lhs.true5.i.i34 - %21 = load i8, ptr @message_with_timestamp, align 1 - %tobool7.i.i38 = trunc i8 %21 to i1 + %19 = load i8, ptr @message_with_timestamp, align 1 + %tobool7.i.i38 = trunc i8 %19 to i1 br i1 %tobool7.i.i38, label %if.then8.i.i40, label %if.else.i.i39 if.then8.i.i40: ; preds = %if.then.i.i37 %call9.i.i41 = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i30, ptr noundef null) #6 %call10.i.i42 = call i32 @qemu_get_thread_id() #6 - %22 = load i64, ptr %_now.i.i30, align 8 + %20 = load i64, ptr %_now.i.i30, align 8 %tv_usec.i.i43 = getelementptr inbounds nuw i8, ptr %_now.i.i30, i64 8 - %23 = load i64, ptr %tv_usec.i.i43, align 8 - call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.8, i32 noundef %call10.i.i42, i64 noundef %22, i64 noundef %23, ptr noundef nonnull %s, ptr noundef %table, i32 noundef range(i32 0, 2) %conv17, i32 noundef %call.i) #6 + %21 = load i64, ptr %tv_usec.i.i43, align 8 + call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.8, i32 noundef %call10.i.i42, i64 noundef %20, i64 noundef %21, ptr noundef nonnull %s, ptr noundef %table, i32 noundef range(i32 0, 2) %conv17, i32 noundef %call.i) #6 br label %trace_qed_write_table_cb.exit if.else.i.i39: ; preds = %if.then.i.i37 @@ -315,8 +312,8 @@ if.end: ; preds = %trace_qed_write_tab br i1 %flush, label %if.then21, label %if.end28 if.then21: ; preds = %if.end - %24 = load ptr, ptr %s, align 8 - %call23 = call i32 @bdrv_co_flush(ptr noundef %24) #6 + %22 = load ptr, ptr %s, align 8 + %call23 = call i32 @bdrv_co_flush(ptr noundef %22) #6 %cmp24 = icmp slt i32 %call23, 0 br i1 %cmp24, label %out, label %if.end28 diff --git a/bench/qemu/optimized/hw_riscv_numa.ll b/bench/qemu/optimized/hw_riscv_numa.ll index c75fff30056..35e5e549024 100644 --- a/bench/qemu/optimized/hw_riscv_numa.ll +++ b/bench/qemu/optimized/hw_riscv_numa.ll @@ -364,30 +364,27 @@ for.cond.preheader: ; preds = %numa_enabled.exit if.end3.lr.ph: ; preds = %for.cond.preheader %nodes = getelementptr inbounds nuw i8, ptr %ms.val, i64 8 %2 = zext i32 %socket_id to i64 - %3 = add nsw i32 %1, -1 - %4 = add i32 %socket_id, -1 - %umin = tail call i32 @llvm.umin.i32(i32 %3, i32 %4) - %5 = add nuw nsw i32 %umin, 1 - %wide.trip.count = zext nneg i32 %5 to i64 + %3 = zext nneg i32 %1 to i64 br label %if.end3 if.end3: ; preds = %if.end3.lr.ph, %if.end3 %indvars.iv = phi i64 [ 0, %if.end3.lr.ph ], [ %indvars.iv.next, %if.end3 ] %mem_offset.013 = phi i64 [ 0, %if.end3.lr.ph ], [ %add, %if.end3 ] %arrayidx = getelementptr [128 x %struct.NodeInfo], ptr %nodes, i64 0, i64 %indvars.iv - %6 = load i64, ptr %arrayidx, align 8 - %add = add i64 %6, %mem_offset.013 + %4 = load i64, ptr %arrayidx, align 8 + %add = add i64 %4, %mem_offset.013 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond, label %for.end.loopexit, label %if.end3, !llvm.loop !9 + %cmp = icmp samesign uge i64 %indvars.iv.next, %3 + %cmp1 = icmp eq i64 %indvars.iv.next, %2 + %or.cond = or i1 %cmp1, %cmp + br i1 %or.cond, label %for.end.loopexit, label %if.end3, !llvm.loop !9 for.end.loopexit: ; preds = %if.end3 - %cmp1 = icmp eq i64 %indvars.iv.next, %2 - %7 = select i1 %cmp1, i64 %add, i64 0 + %5 = select i1 %cmp1, i64 %add, i64 0 br label %return return: ; preds = %for.cond.preheader, %for.end.loopexit, %entry, %numa_enabled.exit - %retval.0 = phi i64 [ 0, %numa_enabled.exit ], [ 0, %entry ], [ 0, %for.cond.preheader ], [ %7, %for.end.loopexit ] + %retval.0 = phi i64 [ 0, %numa_enabled.exit ], [ 0, %entry ], [ 0, %for.cond.preheader ], [ %5, %for.end.loopexit ] ret i64 %retval.0 } @@ -737,9 +734,6 @@ declare i32 @llvm.smin.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #9 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #9 - attributes #0 = { mustprogress nofree norecurse nosync nounwind sspstrong willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx16,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind sspstrong memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx16,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind sspstrong uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx16,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/qemu/optimized/qemu-io-cmds.ll b/bench/qemu/optimized/qemu-io-cmds.ll index c86cf85070c..546a01fc81a 100644 --- a/bench/qemu/optimized/qemu-io-cmds.ll +++ b/bench/qemu/optimized/qemu-io-cmds.ll @@ -1587,17 +1587,11 @@ declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immar define internal fastcc void @dump_buffer(ptr noundef readonly captures(none) %buffer, i64 noundef %offset, i64 noundef %len) unnamed_addr #6 { entry: %cmp25.not = icmp eq i64 %len, 0 - br i1 %cmp25.not, label %for.end33, label %for.body.preheader + br i1 %cmp25.not, label %for.end33, label %for.body -for.body.preheader: ; preds = %entry - %0 = add i64 %len, -1 - br label %for.body - -for.body: ; preds = %for.body.preheader, %for.end29 - %indvars.iv32 = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next33, %for.end29 ] - %p.027 = phi ptr [ %buffer, %for.body.preheader ], [ %incdec.ptr, %for.end29 ] - %i.026 = phi i64 [ 0, %for.body.preheader ], [ %add32, %for.end29 ] - %umin = tail call i64 @llvm.umin.i64(i64 %indvars.iv32, i64 15) +for.body: ; preds = %entry, %for.end29 + %p.027 = phi ptr [ %incdec.ptr, %for.end29 ], [ %buffer, %entry ] + %i.026 = phi i64 [ %add32, %for.end29 ], [ 0, %entry ] %add = add i64 %i.026, %offset %call = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %add) br label %for.body6 @@ -1605,8 +1599,8 @@ for.body: ; preds = %for.body.preheader, for.body6: ; preds = %for.body, %for.body6 %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body6 ] %p.121 = phi ptr [ %p.027, %for.body ], [ %incdec.ptr, %for.body6 ] - %1 = load i8, ptr %p.121, align 1 - %conv7 = zext i8 %1 to i32 + %0 = load i8, ptr %p.121, align 1 + %conv7 = zext i8 %0 to i32 %call8 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.35, i32 noundef %conv7) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %incdec.ptr = getelementptr i8, ptr %p.121, i64 1 @@ -1624,26 +1618,28 @@ for.body19.lr.ph: ; preds = %for.body6 for.body19: ; preds = %for.body19.lr.ph, %for.body19 %indvars.iv29 = phi i64 [ 0, %for.body19.lr.ph ], [ %indvars.iv.next30, %for.body19 ] %s.024 = phi ptr [ %p.027, %for.body19.lr.ph ], [ %incdec.ptr28, %for.body19 ] - %2 = load ptr, ptr %call20, align 8 - %3 = load i8, ptr %s.024, align 1 - %idxprom = zext i8 %3 to i64 - %arrayidx = getelementptr i16, ptr %2, i64 %idxprom - %4 = load i16, ptr %arrayidx, align 2 - %5 = and i16 %4, 8 - %tobool.not = icmp eq i16 %5, 0 - %conv21 = zext i8 %3 to i32 + %1 = load ptr, ptr %call20, align 8 + %2 = load i8, ptr %s.024, align 1 + %idxprom = zext i8 %2 to i64 + %arrayidx = getelementptr i16, ptr %1, i64 %idxprom + %3 = load i16, ptr %arrayidx, align 2 + %4 = and i16 %3, 8 + %tobool.not = icmp eq i16 %4, 0 + %conv21 = zext i8 %2 to i32 %conv21.sink = select i1 %tobool.not, i32 46, i32 %conv21 %putchar18 = tail call i32 @putchar(i32 %conv21.sink) %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 %incdec.ptr28 = getelementptr i8, ptr %s.024, i64 1 - %exitcond.not = icmp eq i64 %indvars.iv29, %umin - br i1 %exitcond.not, label %for.end29, label %for.body19, !llvm.loop !12 + %cmp11 = icmp samesign ult i64 %indvars.iv29, 15 + %add15 = or disjoint i64 %i.026, %indvars.iv.next30 + %cmp16 = icmp ult i64 %add15, %len + %or.cond19 = select i1 %cmp11, i1 %cmp16, i1 false + br i1 %or.cond19, label %for.body19, label %for.end29, !llvm.loop !12 for.end29: ; preds = %for.body19 %putchar16 = tail call i32 @putchar(i32 10) %add32 = add i64 %i.026, 16 %cmp = icmp ult i64 %add32, %len - %indvars.iv.next33 = add i64 %indvars.iv32, -16 br i1 %cmp, label %for.body, label %for.end33, !llvm.loop !13 for.end33: ; preds = %for.end29, %entry @@ -5212,9 +5208,6 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #23 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #23 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #22 - attributes #0 = { nounwind sspstrong uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx16,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx16,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx16,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/qemu/optimized/sdhci-cmd.ll b/bench/qemu/optimized/sdhci-cmd.ll index 5542f91b175..a3ba9486513 100644 --- a/bench/qemu/optimized/sdhci-cmd.ll +++ b/bench/qemu/optimized/sdhci-cmd.ll @@ -48,7 +48,7 @@ while.cond.loopexit.i: ; preds = %if.end13.i, %while. while.body.i: ; preds = %entry, %while.cond.loopexit.i %index.019.i = phi i64 [ %index.1.lcssa.i, %while.cond.loopexit.i ], [ 0, %entry ] - %sub.i = sub i64 %count, %index.019.i + %sub.i = sub nuw i64 %count, %index.019.i %conv.i = trunc i64 %sub.i to i32 %call.i = tail call i32 @qtest_readl(ptr noundef %qts, i64 noundef %add) #3 %cmp414.i = icmp sgt i32 %conv.i, 0 @@ -56,11 +56,10 @@ while.body.i: ; preds = %entry, %while.cond. while.body6.preheader.i: ; preds = %while.body.i %0 = tail call i32 @llvm.umin.i32(i32 %conv.i, i32 4) - %1 = trunc i64 %index.019.i to i32 - %2 = add i32 %0, %1 br label %while.body6.i while.body6.i: ; preds = %if.end13.i, %while.body6.preheader.i + %size.017.i = phi i32 [ %dec.i, %if.end13.i ], [ %0, %while.body6.preheader.i ] %msg_frag.016.i = phi i32 [ %shr.i, %if.end13.i ], [ %call.i, %while.body6.preheader.i ] %index.115.i = phi i64 [ %inc.i, %if.end13.i ], [ %index.019.i, %while.body6.preheader.i ] %conv7.i = trunc i32 %msg_frag.016.i to i8 @@ -73,9 +72,9 @@ while.body6.i: ; preds = %if.end13.i, %while. if.end13.i: ; preds = %while.body6.i %shr.i = lshr i32 %msg_frag.016.i, 8 - %lftr.wideiv = trunc i64 %inc.i to i32 - %exitcond = icmp eq i32 %2, %lftr.wideiv - br i1 %exitcond, label %while.cond.loopexit.i, label %while.body6.i, !llvm.loop !7 + %dec.i = add nsw i32 %size.017.i, -1 + %cmp4.i = icmp sgt i32 %size.017.i, 1 + br i1 %cmp4.i, label %while.body6.i, label %while.cond.loopexit.i, !llvm.loop !7 read_fifo.exit: ; preds = %while.cond.loopexit.i, %while.body6.i, %entry %retval.0.i = phi i64 [ 0, %entry ], [ %inc.i, %while.body6.i ], [ %index.1.lcssa.i, %while.cond.loopexit.i ] diff --git a/bench/quantlib/optimized/date.ll b/bench/quantlib/optimized/date.ll index fa0b9b867f8..074ea2a5bea 100644 --- a/bench/quantlib/optimized/date.ll +++ b/bench/quantlib/optimized/date.ll @@ -10659,7 +10659,7 @@ entry: %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 376 %1 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !71 %cmp.i.i = icmp eq ptr %0, %1 - %.pre155.pre156.pre159.pre162 = load ptr, ptr %a_format, align 8, !tbaa !8 + %.pre143.pre144.pre147.pre150 = load ptr, ptr %a_format, align 8, !tbaa !8 br i1 %cmp.i.i, label %if.end, label %if.then if.then: ; preds = %entry @@ -10677,36 +10677,34 @@ if.then: ; preds = %entry store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE19long_weekday_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i, align 8 %_M_string_length.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %a_format, i64 8 %5 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pre155.pre156.pre159.pre162, i64 %5 + %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pre143.pre144.pre147.pre150, i64 %5 %cmp.i.not28.i.i.i = icmp samesign eq i64 %5, 0 br i1 %cmp.i.not28.i.i.i, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i, label %for.body13.preheader.i.i.i for.body13.preheader.i.i.i: ; preds = %if.then, %for.inc29.critedge.i.i.i - %indvars.iv.in = phi i64 [ %indvars.iv, %for.inc29.critedge.i.i.i ], [ %5, %if.then ] - %OuterIt.sroa.0.029.i.i.i = phi ptr [ %incdec.ptr.i11.i.i.i, %for.inc29.critedge.i.i.i ], [ %.pre155.pre156.pre159.pre162, %if.then ] - %indvars.iv = add i64 %indvars.iv.in, -1 - %.not = icmp eq i64 %indvars.iv, 0 - %6 = select i1 %.not, i64 1, i64 2 + %OuterIt.sroa.0.029.i.i.i = phi ptr [ %incdec.ptr.i11.i.i.i, %for.inc29.critedge.i.i.i ], [ %.pre143.pre144.pre147.pre150, %if.then ] br label %for.body13.i.i.i for.body13.i.i.i: ; preds = %for.inc.i.i.i, %for.body13.preheader.i.i.i %SubstrIt.024.i.i.i.idx = phi i64 [ %SubstrIt.024.i.i.i.add, %for.inc.i.i.i ], [ 0, %for.body13.preheader.i.i.i ] %InnerIt.sroa.0.023.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %for.inc.i.i.i ], [ %OuterIt.sroa.0.029.i.i.i, %for.body13.preheader.i.i.i ] %SubstrIt.024.i.i.i.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE19long_weekday_formatE, i64 %SubstrIt.024.i.i.i.idx - %7 = load i8, ptr %InnerIt.sroa.0.023.i.i.i, align 1, !tbaa !13 - %8 = load i8, ptr %SubstrIt.024.i.i.i.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i = icmp eq i8 %7, %8 + %6 = load i8, ptr %InnerIt.sroa.0.023.i.i.i, align 1, !tbaa !13 + %7 = load i8, ptr %SubstrIt.024.i.i.i.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i = icmp eq i8 %6, %7 br i1 %cmp.i8.i.i.i, label %for.inc.i.i.i, label %for.end.i.i.i for.inc.i.i.i: ; preds = %for.body13.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i, i64 1 %SubstrIt.024.i.i.i.add = add nuw nsw i64 %SubstrIt.024.i.i.i.idx, 1 - %exitcond = icmp eq i64 %SubstrIt.024.i.i.i.add, %6 - br i1 %exitcond, label %for.end.i.i.i, label %for.body13.i.i.i, !llvm.loop !100 + %cmp.i7.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.i.i + %cmp.not.i.i.i = icmp eq i64 %SubstrIt.024.i.i.i.add, 2 + %or.cond.i.i.i = select i1 %cmp.i7.i.i.i, i1 true, i1 %cmp.not.i.i.i + br i1 %or.cond.i.i.i, label %for.end.i.i.i, label %for.body13.i.i.i, !llvm.loop !100 for.end.i.i.i: ; preds = %for.inc.i.i.i, %for.body13.i.i.i %InnerIt.sroa.0.0.lcssa.ph.i.i.i = phi ptr [ %InnerIt.sroa.0.023.i.i.i, %for.body13.i.i.i ], [ %incdec.ptr.i.i.i.i, %for.inc.i.i.i ] - %SubstrIt.0.lcssa.ph.i.i.i.idx = phi i64 [ %SubstrIt.024.i.i.i.idx, %for.body13.i.i.i ], [ %6, %for.inc.i.i.i ] + %SubstrIt.0.lcssa.ph.i.i.i.idx = phi i64 [ %SubstrIt.024.i.i.i.idx, %for.body13.i.i.i ], [ %SubstrIt.024.i.i.i.add, %for.inc.i.i.i ] %cmp21.not.i.i.i = icmp eq i64 %SubstrIt.0.lcssa.ph.i.i.i.idx, 2 br i1 %cmp21.not.i.i.i, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i, label %for.inc29.critedge.i.i.i @@ -10729,69 +10727,67 @@ if.then.i.i.i: ; preds = %_ZNK5boost9algorith %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i, align 8 tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i, ptr %3, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i, ptr %OuterIt.sroa.0.029.i.i.i, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i) - %.pre155.pre156.pre159.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 + %.pre143.pre144.pre147.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i, %if.then.i.i.i - %.pre155.pre156.pre159.pre = phi ptr [ %.pre155.pre156.pre159.pre162, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i ], [ %.pre155.pre156.pre159.pre162, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i ], [ %.pre155.pre156.pre159.pre.pre, %if.then.i.i.i ] + %.pre143.pre144.pre147.pre = phi ptr [ %.pre143.pre144.pre147.pre150, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i ], [ %.pre143.pre144.pre147.pre150, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i ], [ %.pre143.pre144.pre147.pre.pre, %if.then.i.i.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i) br label %if.end if.end: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit, %entry - %.pre155.pre156.pre159 = phi ptr [ %.pre155.pre156.pre159.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit ], [ %.pre155.pre156.pre159.pre162, %entry ] + %.pre143.pre144.pre147 = phi ptr [ %.pre143.pre144.pre147.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit ], [ %.pre143.pre144.pre147.pre150, %entry ] %m_weekday_short_names = getelementptr inbounds nuw i8, ptr %this, i64 344 - %9 = load ptr, ptr %m_weekday_short_names, align 8, !tbaa !71 + %8 = load ptr, ptr %m_weekday_short_names, align 8, !tbaa !71 %_M_finish.i.i7 = getelementptr inbounds nuw i8, ptr %this, i64 352 - %10 = load ptr, ptr %_M_finish.i.i7, align 8, !tbaa !71 - %cmp.i.i8 = icmp eq ptr %9, %10 + %9 = load ptr, ptr %_M_finish.i.i7, align 8, !tbaa !71 + %cmp.i.i8 = icmp eq ptr %8, %9 br i1 %cmp.i.i8, label %if.end10, label %if.then5 if.then5: ; preds = %if.end %tm_wday7 = getelementptr inbounds nuw i8, ptr %tm_value, i64 24 - %11 = load i32, ptr %tm_wday7, align 8, !tbaa !99 - %conv8 = sext i32 %11 to i64 - %add.ptr.i9 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %9, i64 %conv8 - %12 = load ptr, ptr %add.ptr.i9, align 8, !tbaa !8 + %10 = load i32, ptr %tm_wday7, align 8, !tbaa !99 + %conv8 = sext i32 %10 to i64 + %add.ptr.i9 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %8, i64 %conv8 + %11 = load ptr, ptr %add.ptr.i9, align 8, !tbaa !8 %_M_string_length.i.i.i.i.i.i.i.i.i.i.i14 = getelementptr inbounds nuw i8, ptr %add.ptr.i9, i64 8 - %13 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i14, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i.i.i.i.i.i15 = getelementptr inbounds nuw i8, ptr %12, i64 %13 + %12 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i14, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i.i.i.i.i.i15 = getelementptr inbounds nuw i8, ptr %11, i64 %12 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp1.i11) store ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE20short_weekday_formatE, ptr %agg.tmp1.i11, align 8 %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i16 = getelementptr inbounds nuw i8, ptr %agg.tmp1.i11, i64 8 store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE20short_weekday_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i16, align 8 %_M_string_length.i.i.i.i.i.i17 = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %14 = load i64, ptr %_M_string_length.i.i.i.i.i.i17, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i18 = getelementptr inbounds nuw i8, ptr %.pre155.pre156.pre159, i64 %14 - %cmp.i.not28.i.i.i19 = icmp samesign eq i64 %14, 0 + %13 = load i64, ptr %_M_string_length.i.i.i.i.i.i17, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i18 = getelementptr inbounds nuw i8, ptr %.pre143.pre144.pre147, i64 %13 + %cmp.i.not28.i.i.i19 = icmp samesign eq i64 %13, 0 br i1 %cmp.i.not28.i.i.i19, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35, label %for.body13.preheader.i.i.i22 for.body13.preheader.i.i.i22: ; preds = %if.then5, %for.inc29.critedge.i.i.i32 - %indvars.iv143.in = phi i64 [ %indvars.iv143, %for.inc29.critedge.i.i.i32 ], [ %14, %if.then5 ] - %OuterIt.sroa.0.029.i.i.i23 = phi ptr [ %incdec.ptr.i11.i.i.i33, %for.inc29.critedge.i.i.i32 ], [ %.pre155.pre156.pre159, %if.then5 ] - %indvars.iv143 = add i64 %indvars.iv143.in, -1 - %.not166 = icmp eq i64 %indvars.iv143, 0 - %15 = select i1 %.not166, i64 1, i64 2 + %OuterIt.sroa.0.029.i.i.i23 = phi ptr [ %incdec.ptr.i11.i.i.i33, %for.inc29.critedge.i.i.i32 ], [ %.pre143.pre144.pre147, %if.then5 ] br label %for.body13.i.i.i24 for.body13.i.i.i24: ; preds = %for.inc.i.i.i40, %for.body13.preheader.i.i.i22 %SubstrIt.024.i.i.i25.idx = phi i64 [ %SubstrIt.024.i.i.i25.add, %for.inc.i.i.i40 ], [ 0, %for.body13.preheader.i.i.i22 ] %InnerIt.sroa.0.023.i.i.i26 = phi ptr [ %incdec.ptr.i.i.i.i41, %for.inc.i.i.i40 ], [ %OuterIt.sroa.0.029.i.i.i23, %for.body13.preheader.i.i.i22 ] %SubstrIt.024.i.i.i25.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE20short_weekday_formatE, i64 %SubstrIt.024.i.i.i25.idx - %16 = load i8, ptr %InnerIt.sroa.0.023.i.i.i26, align 1, !tbaa !13 - %17 = load i8, ptr %SubstrIt.024.i.i.i25.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i27 = icmp eq i8 %16, %17 + %14 = load i8, ptr %InnerIt.sroa.0.023.i.i.i26, align 1, !tbaa !13 + %15 = load i8, ptr %SubstrIt.024.i.i.i25.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i27 = icmp eq i8 %14, %15 br i1 %cmp.i8.i.i.i27, label %for.inc.i.i.i40, label %for.end.i.i.i28 for.inc.i.i.i40: ; preds = %for.body13.i.i.i24 %incdec.ptr.i.i.i.i41 = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i26, i64 1 %SubstrIt.024.i.i.i25.add = add nuw nsw i64 %SubstrIt.024.i.i.i25.idx, 1 - %exitcond146 = icmp eq i64 %SubstrIt.024.i.i.i25.add, %15 - br i1 %exitcond146, label %for.end.i.i.i28, label %for.body13.i.i.i24, !llvm.loop !100 + %cmp.i7.i.i.i43 = icmp eq ptr %incdec.ptr.i.i.i.i41, %add.ptr.i.i.i.i.i18 + %cmp.not.i.i.i44 = icmp eq i64 %SubstrIt.024.i.i.i25.add, 2 + %or.cond.i.i.i45 = select i1 %cmp.i7.i.i.i43, i1 true, i1 %cmp.not.i.i.i44 + br i1 %or.cond.i.i.i45, label %for.end.i.i.i28, label %for.body13.i.i.i24, !llvm.loop !100 for.end.i.i.i28: ; preds = %for.inc.i.i.i40, %for.body13.i.i.i24 %InnerIt.sroa.0.0.lcssa.ph.i.i.i29 = phi ptr [ %InnerIt.sroa.0.023.i.i.i26, %for.body13.i.i.i24 ], [ %incdec.ptr.i.i.i.i41, %for.inc.i.i.i40 ] - %SubstrIt.0.lcssa.ph.i.i.i30.idx = phi i64 [ %SubstrIt.024.i.i.i25.idx, %for.body13.i.i.i24 ], [ %15, %for.inc.i.i.i40 ] + %SubstrIt.0.lcssa.ph.i.i.i30.idx = phi i64 [ %SubstrIt.024.i.i.i25.idx, %for.body13.i.i.i24 ], [ %SubstrIt.024.i.i.i25.add, %for.inc.i.i.i40 ] %cmp21.not.i.i.i31 = icmp eq i64 %SubstrIt.0.lcssa.ph.i.i.i30.idx, 2 br i1 %cmp21.not.i.i.i31, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36, label %for.inc29.critedge.i.i.i32 @@ -10810,73 +10806,71 @@ _ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__n br i1 %cmp.i.i.i.not.i.i.i37, label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46, label %if.then.i.i.i38 if.then.i.i.i38: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36 - store ptr %12, ptr %agg.tmp3.i.i.i10, align 8 + store ptr %11, ptr %agg.tmp3.i.i.i10, align 8 %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i39 = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i10, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i15, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i39, align 8 - tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i11, ptr %12, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i15, ptr %OuterIt.sroa.0.029.i.i.i23, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i29, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i10) - %.pre155.pre156.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 + tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i11, ptr %11, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i15, ptr %OuterIt.sroa.0.029.i.i.i23, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i29, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i10) + %.pre143.pre144.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46 _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36, %if.then.i.i.i38 - %.pre155.pre156.pre = phi ptr [ %.pre155.pre156.pre159, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35 ], [ %.pre155.pre156.pre159, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36 ], [ %.pre155.pre156.pre.pre, %if.then.i.i.i38 ] + %.pre143.pre144.pre = phi ptr [ %.pre143.pre144.pre147, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35 ], [ %.pre143.pre144.pre147, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36 ], [ %.pre143.pre144.pre.pre, %if.then.i.i.i38 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i10) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i11) br label %if.end10 if.end10: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46, %if.end - %.pre155.pre156 = phi ptr [ %.pre155.pre156.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46 ], [ %.pre155.pre156.pre159, %if.end ] + %.pre143.pre144 = phi ptr [ %.pre143.pre144.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46 ], [ %.pre143.pre144.pre147, %if.end ] %m_month_long_names = getelementptr inbounds nuw i8, ptr %this, i64 320 - %18 = load ptr, ptr %m_month_long_names, align 8, !tbaa !71 + %16 = load ptr, ptr %m_month_long_names, align 8, !tbaa !71 %_M_finish.i.i47 = getelementptr inbounds nuw i8, ptr %this, i64 328 - %19 = load ptr, ptr %_M_finish.i.i47, align 8, !tbaa !71 - %cmp.i.i48 = icmp eq ptr %18, %19 + %17 = load ptr, ptr %_M_finish.i.i47, align 8, !tbaa !71 + %cmp.i.i48 = icmp eq ptr %16, %17 br i1 %cmp.i.i48, label %if.end16, label %if.then12 if.then12: ; preds = %if.end10 %tm_mon = getelementptr inbounds nuw i8, ptr %tm_value, i64 16 - %20 = load i32, ptr %tm_mon, align 8, !tbaa !36 - %conv14 = sext i32 %20 to i64 - %add.ptr.i49 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %18, i64 %conv14 - %21 = load ptr, ptr %add.ptr.i49, align 8, !tbaa !8 + %18 = load i32, ptr %tm_mon, align 8, !tbaa !36 + %conv14 = sext i32 %18 to i64 + %add.ptr.i49 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %16, i64 %conv14 + %19 = load ptr, ptr %add.ptr.i49, align 8, !tbaa !8 %_M_string_length.i.i.i.i.i.i.i.i.i.i.i54 = getelementptr inbounds nuw i8, ptr %add.ptr.i49, i64 8 - %22 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i54, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i.i.i.i.i.i55 = getelementptr inbounds nuw i8, ptr %21, i64 %22 + %20 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i54, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i.i.i.i.i.i55 = getelementptr inbounds nuw i8, ptr %19, i64 %20 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp1.i51) store ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE17long_month_formatE, ptr %agg.tmp1.i51, align 8 %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i56 = getelementptr inbounds nuw i8, ptr %agg.tmp1.i51, i64 8 store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE17long_month_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i56, align 8 %_M_string_length.i.i.i.i.i.i57 = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %23 = load i64, ptr %_M_string_length.i.i.i.i.i.i57, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i58 = getelementptr inbounds nuw i8, ptr %.pre155.pre156, i64 %23 - %cmp.i.not28.i.i.i59 = icmp samesign eq i64 %23, 0 + %21 = load i64, ptr %_M_string_length.i.i.i.i.i.i57, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i58 = getelementptr inbounds nuw i8, ptr %.pre143.pre144, i64 %21 + %cmp.i.not28.i.i.i59 = icmp samesign eq i64 %21, 0 br i1 %cmp.i.not28.i.i.i59, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75, label %for.body13.preheader.i.i.i62 for.body13.preheader.i.i.i62: ; preds = %if.then12, %for.inc29.critedge.i.i.i72 - %indvars.iv147.in = phi i64 [ %indvars.iv147, %for.inc29.critedge.i.i.i72 ], [ %23, %if.then12 ] - %OuterIt.sroa.0.029.i.i.i63 = phi ptr [ %incdec.ptr.i11.i.i.i73, %for.inc29.critedge.i.i.i72 ], [ %.pre155.pre156, %if.then12 ] - %indvars.iv147 = add i64 %indvars.iv147.in, -1 - %.not167 = icmp eq i64 %indvars.iv147, 0 - %24 = select i1 %.not167, i64 1, i64 2 + %OuterIt.sroa.0.029.i.i.i63 = phi ptr [ %incdec.ptr.i11.i.i.i73, %for.inc29.critedge.i.i.i72 ], [ %.pre143.pre144, %if.then12 ] br label %for.body13.i.i.i64 for.body13.i.i.i64: ; preds = %for.inc.i.i.i80, %for.body13.preheader.i.i.i62 %SubstrIt.024.i.i.i65.idx = phi i64 [ %SubstrIt.024.i.i.i65.add, %for.inc.i.i.i80 ], [ 0, %for.body13.preheader.i.i.i62 ] %InnerIt.sroa.0.023.i.i.i66 = phi ptr [ %incdec.ptr.i.i.i.i81, %for.inc.i.i.i80 ], [ %OuterIt.sroa.0.029.i.i.i63, %for.body13.preheader.i.i.i62 ] %SubstrIt.024.i.i.i65.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE17long_month_formatE, i64 %SubstrIt.024.i.i.i65.idx - %25 = load i8, ptr %InnerIt.sroa.0.023.i.i.i66, align 1, !tbaa !13 - %26 = load i8, ptr %SubstrIt.024.i.i.i65.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i67 = icmp eq i8 %25, %26 + %22 = load i8, ptr %InnerIt.sroa.0.023.i.i.i66, align 1, !tbaa !13 + %23 = load i8, ptr %SubstrIt.024.i.i.i65.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i67 = icmp eq i8 %22, %23 br i1 %cmp.i8.i.i.i67, label %for.inc.i.i.i80, label %for.end.i.i.i68 for.inc.i.i.i80: ; preds = %for.body13.i.i.i64 %incdec.ptr.i.i.i.i81 = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i66, i64 1 %SubstrIt.024.i.i.i65.add = add nuw nsw i64 %SubstrIt.024.i.i.i65.idx, 1 - %exitcond150 = icmp eq i64 %SubstrIt.024.i.i.i65.add, %24 - br i1 %exitcond150, label %for.end.i.i.i68, label %for.body13.i.i.i64, !llvm.loop !100 + %cmp.i7.i.i.i83 = icmp eq ptr %incdec.ptr.i.i.i.i81, %add.ptr.i.i.i.i.i58 + %cmp.not.i.i.i84 = icmp eq i64 %SubstrIt.024.i.i.i65.add, 2 + %or.cond.i.i.i85 = select i1 %cmp.i7.i.i.i83, i1 true, i1 %cmp.not.i.i.i84 + br i1 %or.cond.i.i.i85, label %for.end.i.i.i68, label %for.body13.i.i.i64, !llvm.loop !100 for.end.i.i.i68: ; preds = %for.inc.i.i.i80, %for.body13.i.i.i64 %InnerIt.sroa.0.0.lcssa.ph.i.i.i69 = phi ptr [ %InnerIt.sroa.0.023.i.i.i66, %for.body13.i.i.i64 ], [ %incdec.ptr.i.i.i.i81, %for.inc.i.i.i80 ] - %SubstrIt.0.lcssa.ph.i.i.i70.idx = phi i64 [ %SubstrIt.024.i.i.i65.idx, %for.body13.i.i.i64 ], [ %24, %for.inc.i.i.i80 ] + %SubstrIt.0.lcssa.ph.i.i.i70.idx = phi i64 [ %SubstrIt.024.i.i.i65.idx, %for.body13.i.i.i64 ], [ %SubstrIt.024.i.i.i65.add, %for.inc.i.i.i80 ] %cmp21.not.i.i.i71 = icmp eq i64 %SubstrIt.0.lcssa.ph.i.i.i70.idx, 2 br i1 %cmp21.not.i.i.i71, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76, label %for.inc29.critedge.i.i.i72 @@ -10895,73 +10889,71 @@ _ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__n br i1 %cmp.i.i.i.not.i.i.i77, label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86, label %if.then.i.i.i78 if.then.i.i.i78: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76 - store ptr %21, ptr %agg.tmp3.i.i.i50, align 8 + store ptr %19, ptr %agg.tmp3.i.i.i50, align 8 %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i79 = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i50, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i55, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i79, align 8 - tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i51, ptr %21, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i55, ptr %OuterIt.sroa.0.029.i.i.i63, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i69, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i50) - %.pre155.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 + tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i51, ptr %19, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i55, ptr %OuterIt.sroa.0.029.i.i.i63, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i69, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i50) + %.pre143.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86 _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76, %if.then.i.i.i78 - %.pre155.pre = phi ptr [ %.pre155.pre156, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75 ], [ %.pre155.pre156, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76 ], [ %.pre155.pre.pre, %if.then.i.i.i78 ] + %.pre143.pre = phi ptr [ %.pre143.pre144, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75 ], [ %.pre143.pre144, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76 ], [ %.pre143.pre.pre, %if.then.i.i.i78 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i50) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i51) br label %if.end16 if.end16: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86, %if.end10 - %.pre155 = phi ptr [ %.pre155.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86 ], [ %.pre155.pre156, %if.end10 ] + %.pre143 = phi ptr [ %.pre143.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86 ], [ %.pre143.pre144, %if.end10 ] %m_month_short_names = getelementptr inbounds nuw i8, ptr %this, i64 296 - %27 = load ptr, ptr %m_month_short_names, align 8, !tbaa !71 + %24 = load ptr, ptr %m_month_short_names, align 8, !tbaa !71 %_M_finish.i.i87 = getelementptr inbounds nuw i8, ptr %this, i64 304 - %28 = load ptr, ptr %_M_finish.i.i87, align 8, !tbaa !71 - %cmp.i.i88 = icmp eq ptr %27, %28 + %25 = load ptr, ptr %_M_finish.i.i87, align 8, !tbaa !71 + %cmp.i.i88 = icmp eq ptr %24, %25 br i1 %cmp.i.i88, label %if.end23, label %if.then18 if.then18: ; preds = %if.end16 %tm_mon20 = getelementptr inbounds nuw i8, ptr %tm_value, i64 16 - %29 = load i32, ptr %tm_mon20, align 8, !tbaa !36 - %conv21 = sext i32 %29 to i64 - %add.ptr.i89 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %27, i64 %conv21 - %30 = load ptr, ptr %add.ptr.i89, align 8, !tbaa !8 + %26 = load i32, ptr %tm_mon20, align 8, !tbaa !36 + %conv21 = sext i32 %26 to i64 + %add.ptr.i89 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %24, i64 %conv21 + %27 = load ptr, ptr %add.ptr.i89, align 8, !tbaa !8 %_M_string_length.i.i.i.i.i.i.i.i.i.i.i94 = getelementptr inbounds nuw i8, ptr %add.ptr.i89, i64 8 - %31 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i94, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i.i.i.i.i.i95 = getelementptr inbounds nuw i8, ptr %30, i64 %31 + %28 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i94, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i.i.i.i.i.i95 = getelementptr inbounds nuw i8, ptr %27, i64 %28 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp1.i91) store ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE18short_month_formatE, ptr %agg.tmp1.i91, align 8 %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i96 = getelementptr inbounds nuw i8, ptr %agg.tmp1.i91, i64 8 store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE18short_month_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i96, align 8 %_M_string_length.i.i.i.i.i.i97 = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %32 = load i64, ptr %_M_string_length.i.i.i.i.i.i97, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i98 = getelementptr inbounds nuw i8, ptr %.pre155, i64 %32 - %cmp.i.not28.i.i.i99 = icmp samesign eq i64 %32, 0 + %29 = load i64, ptr %_M_string_length.i.i.i.i.i.i97, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i98 = getelementptr inbounds nuw i8, ptr %.pre143, i64 %29 + %cmp.i.not28.i.i.i99 = icmp samesign eq i64 %29, 0 br i1 %cmp.i.not28.i.i.i99, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115, label %for.body13.preheader.i.i.i102 for.body13.preheader.i.i.i102: ; preds = %if.then18, %for.inc29.critedge.i.i.i112 - %indvars.iv151.in = phi i64 [ %indvars.iv151, %for.inc29.critedge.i.i.i112 ], [ %32, %if.then18 ] - %OuterIt.sroa.0.029.i.i.i103 = phi ptr [ %incdec.ptr.i11.i.i.i113, %for.inc29.critedge.i.i.i112 ], [ %.pre155, %if.then18 ] - %indvars.iv151 = add i64 %indvars.iv151.in, -1 - %.not168 = icmp eq i64 %indvars.iv151, 0 - %33 = select i1 %.not168, i64 1, i64 2 + %OuterIt.sroa.0.029.i.i.i103 = phi ptr [ %incdec.ptr.i11.i.i.i113, %for.inc29.critedge.i.i.i112 ], [ %.pre143, %if.then18 ] br label %for.body13.i.i.i104 for.body13.i.i.i104: ; preds = %for.inc.i.i.i120, %for.body13.preheader.i.i.i102 %SubstrIt.024.i.i.i105.idx = phi i64 [ %SubstrIt.024.i.i.i105.add, %for.inc.i.i.i120 ], [ 0, %for.body13.preheader.i.i.i102 ] %InnerIt.sroa.0.023.i.i.i106 = phi ptr [ %incdec.ptr.i.i.i.i121, %for.inc.i.i.i120 ], [ %OuterIt.sroa.0.029.i.i.i103, %for.body13.preheader.i.i.i102 ] %SubstrIt.024.i.i.i105.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE18short_month_formatE, i64 %SubstrIt.024.i.i.i105.idx - %34 = load i8, ptr %InnerIt.sroa.0.023.i.i.i106, align 1, !tbaa !13 - %35 = load i8, ptr %SubstrIt.024.i.i.i105.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i107 = icmp eq i8 %34, %35 + %30 = load i8, ptr %InnerIt.sroa.0.023.i.i.i106, align 1, !tbaa !13 + %31 = load i8, ptr %SubstrIt.024.i.i.i105.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i107 = icmp eq i8 %30, %31 br i1 %cmp.i8.i.i.i107, label %for.inc.i.i.i120, label %for.end.i.i.i108 for.inc.i.i.i120: ; preds = %for.body13.i.i.i104 %incdec.ptr.i.i.i.i121 = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i106, i64 1 %SubstrIt.024.i.i.i105.add = add nuw nsw i64 %SubstrIt.024.i.i.i105.idx, 1 - %exitcond154 = icmp eq i64 %SubstrIt.024.i.i.i105.add, %33 - br i1 %exitcond154, label %for.end.i.i.i108, label %for.body13.i.i.i104, !llvm.loop !100 + %cmp.i7.i.i.i123 = icmp eq ptr %incdec.ptr.i.i.i.i121, %add.ptr.i.i.i.i.i98 + %cmp.not.i.i.i124 = icmp eq i64 %SubstrIt.024.i.i.i105.add, 2 + %or.cond.i.i.i125 = select i1 %cmp.i7.i.i.i123, i1 true, i1 %cmp.not.i.i.i124 + br i1 %or.cond.i.i.i125, label %for.end.i.i.i108, label %for.body13.i.i.i104, !llvm.loop !100 for.end.i.i.i108: ; preds = %for.inc.i.i.i120, %for.body13.i.i.i104 %InnerIt.sroa.0.0.lcssa.ph.i.i.i109 = phi ptr [ %InnerIt.sroa.0.023.i.i.i106, %for.body13.i.i.i104 ], [ %incdec.ptr.i.i.i.i121, %for.inc.i.i.i120 ] - %SubstrIt.0.lcssa.ph.i.i.i110.idx = phi i64 [ %SubstrIt.024.i.i.i105.idx, %for.body13.i.i.i104 ], [ %33, %for.inc.i.i.i120 ] + %SubstrIt.0.lcssa.ph.i.i.i110.idx = phi i64 [ %SubstrIt.024.i.i.i105.idx, %for.body13.i.i.i104 ], [ %SubstrIt.024.i.i.i105.add, %for.inc.i.i.i120 ] %cmp21.not.i.i.i111 = icmp eq i64 %SubstrIt.0.lcssa.ph.i.i.i110.idx, 2 br i1 %cmp21.not.i.i.i111, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116, label %for.inc29.critedge.i.i.i112 @@ -10980,21 +10972,21 @@ _ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__n br i1 %cmp.i.i.i.not.i.i.i117, label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126, label %if.then.i.i.i118 if.then.i.i.i118: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116 - store ptr %30, ptr %agg.tmp3.i.i.i90, align 8 + store ptr %27, ptr %agg.tmp3.i.i.i90, align 8 %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i119 = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i90, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i95, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i119, align 8 - tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i91, ptr %30, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i95, ptr %OuterIt.sroa.0.029.i.i.i103, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i109, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i90) + tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i91, ptr %27, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i95, ptr %OuterIt.sroa.0.029.i.i.i103, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i109, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i90) %.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126 _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116, %if.then.i.i.i118 - %.pre = phi ptr [ %.pre155, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115 ], [ %.pre155, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116 ], [ %.pre.pre, %if.then.i.i.i118 ] + %.pre = phi ptr [ %.pre143, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115 ], [ %.pre143, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116 ], [ %.pre.pre, %if.then.i.i.i118 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i90) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i91) br label %if.end23 if.end23: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126, %if.end16 - %36 = phi ptr [ %.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126 ], [ %.pre155, %if.end16 ] + %32 = phi ptr [ %.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126 ], [ %.pre143, %if.end16 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp) #29 %_M_ios_locale.i = getelementptr inbounds nuw i8, ptr %a_ios, i64 208 call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %_M_ios_locale.i) #29 @@ -11003,9 +10995,9 @@ if.end23: ; preds = %_ZN5boost9algorithm invoke.cont: ; preds = %if.end23 %_M_string_length.i = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %37 = load i64, ptr %_M_string_length.i, align 8, !tbaa !12 - %add.ptr = getelementptr inbounds nuw i8, ptr %36, i64 %37 - %call28 = invoke { ptr, i8 } @_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_(ptr noundef nonnull align 8 dereferenceable(12) %call25, ptr %next.coerce0, i8 %next.coerce1, ptr noundef nonnull align 8 dereferenceable(216) %a_ios, i8 noundef signext %fill_char, ptr noundef nonnull %tm_value, ptr noundef %36, ptr noundef %add.ptr) + %33 = load i64, ptr %_M_string_length.i, align 8, !tbaa !12 + %add.ptr = getelementptr inbounds nuw i8, ptr %32, i64 %33 + %call28 = invoke { ptr, i8 } @_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_(ptr noundef nonnull align 8 dereferenceable(12) %call25, ptr %next.coerce0, i8 %next.coerce1, ptr noundef nonnull align 8 dereferenceable(216) %a_ios, i8 noundef signext %fill_char, ptr noundef nonnull %tm_value, ptr noundef %32, ptr noundef %add.ptr) to label %invoke.cont27 unwind label %lpad invoke.cont27: ; preds = %invoke.cont @@ -11014,11 +11006,11 @@ invoke.cont27: ; preds = %invoke.cont ret { ptr, i8 } %call28 lpad: ; preds = %invoke.cont, %if.end23 - %38 = landingpad { ptr, i32 } + %34 = landingpad { ptr, i32 } cleanup call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp) #29 - resume { ptr, i32 } %38 + resume { ptr, i32 } %34 } ; Function Attrs: mustprogress uwtable diff --git a/bench/raylib/optimized/rcore.ll b/bench/raylib/optimized/rcore.ll index ce3702dab48..f743821f1e9 100644 --- a/bench/raylib/optimized/rcore.ll +++ b/bench/raylib/optimized/rcore.ll @@ -21034,243 +21034,240 @@ define void @rlLoadRenderBatch(ptr dead_on_unwind noalias writable writeonly sre %smax = tail call i32 @llvm.smax.i32(i32 %9, i32 1) %smax110 = tail call i32 @llvm.smax.i32(i32 %12, i32 1) %smax116 = tail call i32 @llvm.smax.i32(i32 %15, i32 1) - %smax122 = tail call i32 @llvm.smax.i32(i32 %17, i32 6) - %21 = add nsw i32 %smax122, -1 - %22 = udiv i32 %21, 6 - %wide.trip.count127 = zext nneg i32 %1 to i64 + %wide.trip.count125 = zext nneg i32 %1 to i64 %wide.trip.count = zext nneg i32 %smax to i64 %wide.trip.count111 = zext nneg i32 %smax110 to i64 %wide.trip.count117 = zext nneg i32 %smax116 to i64 - br label %23 + br label %21 -23: ; preds = %.lr.ph99, %._crit_edge - %indvars.iv124 = phi i64 [ 0, %.lr.ph99 ], [ %indvars.iv.next125, %._crit_edge ] - %24 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124 - store i32 %2, ptr %24, align 8 - %25 = tail call noalias ptr @malloc(i64 noundef %11) #56 - %26 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 1 +21: ; preds = %.lr.ph99, %._crit_edge + %indvars.iv122 = phi i64 [ 0, %.lr.ph99 ], [ %indvars.iv.next123, %._crit_edge ] + %22 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122 + store i32 %2, ptr %22, align 8 + %23 = tail call noalias ptr @malloc(i64 noundef %11) #56 + %24 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 1 + store ptr %23, ptr %24, align 8 + %25 = tail call noalias ptr @malloc(i64 noundef %14) #56 + %26 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 2 store ptr %25, ptr %26, align 8 - %27 = tail call noalias ptr @malloc(i64 noundef %14) #56 - %28 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 2 + %27 = tail call noalias ptr @malloc(i64 noundef %16) #56 + %28 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 3 store ptr %27, ptr %28, align 8 - %29 = tail call noalias ptr @malloc(i64 noundef %16) #56 - %30 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 3 + %29 = tail call noalias ptr @malloc(i64 noundef %19) #56 + %30 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 4 store ptr %29, ptr %30, align 8 - %31 = tail call noalias ptr @malloc(i64 noundef %19) #56 - %32 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 4 - store ptr %31, ptr %32, align 8 br i1 %20, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %23, %.lr.ph - %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %23 ] - %33 = load ptr, ptr %26, align 8 - %34 = getelementptr inbounds nuw float, ptr %33, i64 %indvars.iv - store float 0.000000e+00, ptr %34, align 4 +.lr.ph: ; preds = %21, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %21 ] + %31 = load ptr, ptr %24, align 8 + %32 = getelementptr inbounds nuw float, ptr %31, i64 %indvars.iv + store float 0.000000e+00, ptr %32, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.lr.ph91, label %.lr.ph .lr.ph91: ; preds = %.lr.ph, %.lr.ph91 %indvars.iv107 = phi i64 [ %indvars.iv.next108, %.lr.ph91 ], [ 0, %.lr.ph ] - %35 = load ptr, ptr %28, align 8 - %36 = getelementptr inbounds nuw float, ptr %35, i64 %indvars.iv107 - store float 0.000000e+00, ptr %36, align 4 + %33 = load ptr, ptr %26, align 8 + %34 = getelementptr inbounds nuw float, ptr %33, i64 %indvars.iv107 + store float 0.000000e+00, ptr %34, align 4 %indvars.iv.next108 = add nuw nsw i64 %indvars.iv107, 1 %exitcond112.not = icmp eq i64 %indvars.iv.next108, %wide.trip.count111 br i1 %exitcond112.not, label %.lr.ph93, label %.lr.ph91 .lr.ph93: ; preds = %.lr.ph91, %.lr.ph93 %indvars.iv113 = phi i64 [ %indvars.iv.next114, %.lr.ph93 ], [ 0, %.lr.ph91 ] - %37 = load ptr, ptr %30, align 8 - %38 = getelementptr inbounds nuw i8, ptr %37, i64 %indvars.iv113 - store i8 0, ptr %38, align 1 + %35 = load ptr, ptr %28, align 8 + %36 = getelementptr inbounds nuw i8, ptr %35, i64 %indvars.iv113 + store i8 0, ptr %36, align 1 %indvars.iv.next114 = add nuw nsw i64 %indvars.iv113, 1 %exitcond118.not = icmp eq i64 %indvars.iv.next114, %wide.trip.count117 br i1 %exitcond118.not, label %.lr.ph96, label %.lr.ph93 .lr.ph96: ; preds = %.lr.ph93, %.lr.ph96 %indvars.iv119 = phi i64 [ %indvars.iv.next120, %.lr.ph96 ], [ 0, %.lr.ph93 ] - %.08194 = phi i32 [ %60, %.lr.ph96 ], [ 0, %.lr.ph93 ] - %39 = shl nsw i32 %.08194, 2 - %40 = load ptr, ptr %32, align 8 - %41 = getelementptr inbounds nuw i32, ptr %40, i64 %indvars.iv119 - store i32 %39, ptr %41, align 4 - %42 = or disjoint i32 %39, 1 - %43 = load ptr, ptr %32, align 8 - %44 = or disjoint i64 %indvars.iv119, 1 - %45 = getelementptr inbounds nuw i32, ptr %43, i64 %44 - store i32 %42, ptr %45, align 4 - %46 = or disjoint i32 %39, 2 - %47 = load ptr, ptr %32, align 8 - %48 = getelementptr inbounds nuw i32, ptr %47, i64 %indvars.iv119 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 - store i32 %46, ptr %49, align 4 - %50 = load ptr, ptr %32, align 8 - %51 = getelementptr inbounds nuw i32, ptr %50, i64 %indvars.iv119 - %52 = getelementptr inbounds nuw i8, ptr %51, i64 12 - store i32 %39, ptr %52, align 4 - %53 = load ptr, ptr %32, align 8 - %54 = getelementptr inbounds nuw i32, ptr %53, i64 %indvars.iv119 - %55 = getelementptr inbounds nuw i8, ptr %54, i64 16 - store i32 %46, ptr %55, align 4 - %56 = or disjoint i32 %39, 3 - %57 = load ptr, ptr %32, align 8 - %58 = getelementptr inbounds nuw i32, ptr %57, i64 %indvars.iv119 - %59 = getelementptr inbounds nuw i8, ptr %58, i64 20 - store i32 %56, ptr %59, align 4 - %60 = add nuw nsw i32 %.08194, 1 + %.08194 = phi i32 [ %58, %.lr.ph96 ], [ 0, %.lr.ph93 ] + %37 = shl nsw i32 %.08194, 2 + %38 = load ptr, ptr %30, align 8 + %39 = getelementptr inbounds nuw i32, ptr %38, i64 %indvars.iv119 + store i32 %37, ptr %39, align 4 + %40 = or disjoint i32 %37, 1 + %41 = load ptr, ptr %30, align 8 + %42 = or disjoint i64 %indvars.iv119, 1 + %43 = getelementptr inbounds nuw i32, ptr %41, i64 %42 + store i32 %40, ptr %43, align 4 + %44 = or disjoint i32 %37, 2 + %45 = load ptr, ptr %30, align 8 + %46 = getelementptr inbounds nuw i32, ptr %45, i64 %indvars.iv119 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 + store i32 %44, ptr %47, align 4 + %48 = load ptr, ptr %30, align 8 + %49 = getelementptr inbounds nuw i32, ptr %48, i64 %indvars.iv119 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 12 + store i32 %37, ptr %50, align 4 + %51 = load ptr, ptr %30, align 8 + %52 = getelementptr inbounds nuw i32, ptr %51, i64 %indvars.iv119 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 16 + store i32 %44, ptr %53, align 4 + %54 = or disjoint i32 %37, 3 + %55 = load ptr, ptr %30, align 8 + %56 = getelementptr inbounds nuw i32, ptr %55, i64 %indvars.iv119 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 20 + store i32 %54, ptr %57, align 4 + %58 = add nuw nsw i32 %.08194, 1 %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 6 - %exitcond123.not = icmp eq i32 %.08194, %22 - br i1 %exitcond123.not, label %._crit_edge, label %.lr.ph96 + %59 = icmp slt i64 %indvars.iv.next120, %18 + br i1 %59, label %.lr.ph96, label %._crit_edge -._crit_edge: ; preds = %.lr.ph96, %23 +._crit_edge: ; preds = %.lr.ph96, %21 store i32 0, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 40), align 8 - %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1 - %exitcond128.not = icmp eq i64 %indvars.iv.next125, %wide.trip.count127 - br i1 %exitcond128.not, label %._crit_edge100, label %23 + %indvars.iv.next123 = add nuw nsw i64 %indvars.iv122, 1 + %exitcond126.not = icmp eq i64 %indvars.iv.next123, %wide.trip.count125 + br i1 %exitcond126.not, label %._crit_edge100, label %21 ._crit_edge100: ; preds = %._crit_edge tail call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.38) #54 - %61 = mul nsw i32 %2, 12 - %62 = sext i32 %61 to i64 - %63 = shl nsw i64 %62, 2 - %64 = shl nsw i32 %2, 3 - %65 = sext i32 %64 to i64 - %66 = shl nsw i64 %65, 2 - %67 = shl nsw i32 %2, 4 - %68 = sext i32 %67 to i64 - %69 = mul nsw i32 %2, 6 - %70 = sext i32 %69 to i64 - %71 = shl nsw i64 %70, 2 - %wide.trip.count132 = zext nneg i32 %1 to i64 - br label %72 + %60 = mul nsw i32 %2, 12 + %61 = sext i32 %60 to i64 + %62 = shl nsw i64 %61, 2 + %63 = shl nsw i32 %2, 3 + %64 = sext i32 %63 to i64 + %65 = shl nsw i64 %64, 2 + %66 = shl nsw i32 %2, 4 + %67 = sext i32 %66 to i64 + %68 = mul nsw i32 %2, 6 + %69 = sext i32 %68 to i64 + %70 = shl nsw i64 %69, 2 + %wide.trip.count130 = zext nneg i32 %1 to i64 + br label %71 -72: ; preds = %._crit_edge100, %80 - %indvars.iv129 = phi i64 [ 0, %._crit_edge100 ], [ %indvars.iv.next130, %80 ] - %73 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 - %74 = trunc i8 %73 to i1 - br i1 %74, label %75, label %80 +71: ; preds = %._crit_edge100, %79 + %indvars.iv127 = phi i64 [ 0, %._crit_edge100 ], [ %indvars.iv.next128, %79 ] + %72 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 + %73 = trunc i8 %72 to i1 + br i1 %73, label %74, label %79 + +74: ; preds = %71 + %75 = load ptr, ptr @glad_glGenVertexArrays, align 8 + %76 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 5 + tail call void %75(i32 noundef 1, ptr noundef nonnull %76) #54 + %77 = load ptr, ptr @glad_glBindVertexArray, align 8 + %78 = load i32, ptr %76, align 8 + tail call void %77(i32 noundef %78) #54 + br label %79 -75: ; preds = %72 - %76 = load ptr, ptr @glad_glGenVertexArrays, align 8 - %77 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 5 - tail call void %76(i32 noundef 1, ptr noundef nonnull %77) #54 - %78 = load ptr, ptr @glad_glBindVertexArray, align 8 - %79 = load i32, ptr %77, align 8 - tail call void %78(i32 noundef %79) #54 - br label %80 +79: ; preds = %74, %71 + %80 = load ptr, ptr @glad_glGenBuffers, align 8 + %81 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 6 + tail call void %80(i32 noundef 1, ptr noundef nonnull %81) #54 + %82 = load ptr, ptr @glad_glBindBuffer, align 8 + %83 = load i32, ptr %81, align 4 + tail call void %82(i32 noundef 34962, i32 noundef %83) #54 + %84 = load ptr, ptr @glad_glBufferData, align 8 + %85 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 1 + %86 = load ptr, ptr %85, align 8 + tail call void %84(i32 noundef 34962, i64 noundef %62, ptr noundef %86, i32 noundef 35048) #54 + %87 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8 + %88 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 + %89 = load i32, ptr %88, align 4 + tail call void %87(i32 noundef %89) #54 + %90 = load ptr, ptr @glad_glVertexAttribPointer, align 8 + %91 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 + %92 = load i32, ptr %91, align 4 + tail call void %90(i32 noundef %92, i32 noundef 3, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef null) #54 + %93 = load ptr, ptr @glad_glGenBuffers, align 8 + %94 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 6, i64 1 + tail call void %93(i32 noundef 1, ptr noundef nonnull %94) #54 + %95 = load ptr, ptr @glad_glBindBuffer, align 8 + %96 = load i32, ptr %94, align 4 + tail call void %95(i32 noundef 34962, i32 noundef %96) #54 + %97 = load ptr, ptr @glad_glBufferData, align 8 + %98 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 2 + %99 = load ptr, ptr %98, align 8 + tail call void %97(i32 noundef 34962, i64 noundef %65, ptr noundef %99, i32 noundef 35048) #54 + %100 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8 + %101 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 4 + %103 = load i32, ptr %102, align 4 + tail call void %100(i32 noundef %103) #54 + %104 = load ptr, ptr @glad_glVertexAttribPointer, align 8 + %105 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 + %106 = getelementptr inbounds nuw i8, ptr %105, i64 4 + %107 = load i32, ptr %106, align 4 + tail call void %104(i32 noundef %107, i32 noundef 2, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef null) #54 + %108 = load ptr, ptr @glad_glGenBuffers, align 8 + %109 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 6, i64 2 + tail call void %108(i32 noundef 1, ptr noundef nonnull %109) #54 + %110 = load ptr, ptr @glad_glBindBuffer, align 8 + %111 = load i32, ptr %109, align 4 + tail call void %110(i32 noundef 34962, i32 noundef %111) #54 + %112 = load ptr, ptr @glad_glBufferData, align 8 + %113 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 3 + %114 = load ptr, ptr %113, align 8 + tail call void %112(i32 noundef 34962, i64 noundef %67, ptr noundef %114, i32 noundef 35048) #54 + %115 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8 + %116 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 + %117 = getelementptr inbounds nuw i8, ptr %116, i64 20 + %118 = load i32, ptr %117, align 4 + tail call void %115(i32 noundef %118) #54 + %119 = load ptr, ptr @glad_glVertexAttribPointer, align 8 + %120 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 + %121 = getelementptr inbounds nuw i8, ptr %120, i64 20 + %122 = load i32, ptr %121, align 4 + tail call void %119(i32 noundef %122, i32 noundef 4, i32 noundef 5121, i8 noundef zeroext 1, i32 noundef 0, ptr noundef null) #54 + %123 = load ptr, ptr @glad_glGenBuffers, align 8 + %124 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 6, i64 3 + tail call void %123(i32 noundef 1, ptr noundef nonnull %124) #54 + %125 = load ptr, ptr @glad_glBindBuffer, align 8 + %126 = load i32, ptr %124, align 4 + tail call void %125(i32 noundef 34963, i32 noundef %126) #54 + %127 = load ptr, ptr @glad_glBufferData, align 8 + %128 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 4 + %129 = load ptr, ptr %128, align 8 + tail call void %127(i32 noundef 34963, i64 noundef %70, ptr noundef %129, i32 noundef 35044) #54 + %indvars.iv.next128 = add nuw nsw i64 %indvars.iv127, 1 + %exitcond131.not = icmp eq i64 %indvars.iv.next128, %wide.trip.count130 + br i1 %exitcond131.not, label %._crit_edge104, label %71 -80: ; preds = %75, %72 - %81 = load ptr, ptr @glad_glGenBuffers, align 8 - %82 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 6 - tail call void %81(i32 noundef 1, ptr noundef nonnull %82) #54 - %83 = load ptr, ptr @glad_glBindBuffer, align 8 - %84 = load i32, ptr %82, align 4 - tail call void %83(i32 noundef 34962, i32 noundef %84) #54 - %85 = load ptr, ptr @glad_glBufferData, align 8 - %86 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 1 - %87 = load ptr, ptr %86, align 8 - tail call void %85(i32 noundef 34962, i64 noundef %63, ptr noundef %87, i32 noundef 35048) #54 - %88 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8 - %89 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 - %90 = load i32, ptr %89, align 4 - tail call void %88(i32 noundef %90) #54 - %91 = load ptr, ptr @glad_glVertexAttribPointer, align 8 - %92 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 - %93 = load i32, ptr %92, align 4 - tail call void %91(i32 noundef %93, i32 noundef 3, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef null) #54 - %94 = load ptr, ptr @glad_glGenBuffers, align 8 - %95 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 6, i64 1 - tail call void %94(i32 noundef 1, ptr noundef nonnull %95) #54 - %96 = load ptr, ptr @glad_glBindBuffer, align 8 - %97 = load i32, ptr %95, align 4 - tail call void %96(i32 noundef 34962, i32 noundef %97) #54 - %98 = load ptr, ptr @glad_glBufferData, align 8 - %99 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 2 - %100 = load ptr, ptr %99, align 8 - tail call void %98(i32 noundef 34962, i64 noundef %66, ptr noundef %100, i32 noundef 35048) #54 - %101 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8 - %102 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 4 - %104 = load i32, ptr %103, align 4 - tail call void %101(i32 noundef %104) #54 - %105 = load ptr, ptr @glad_glVertexAttribPointer, align 8 - %106 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 - %107 = getelementptr inbounds nuw i8, ptr %106, i64 4 - %108 = load i32, ptr %107, align 4 - tail call void %105(i32 noundef %108, i32 noundef 2, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef null) #54 - %109 = load ptr, ptr @glad_glGenBuffers, align 8 - %110 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 6, i64 2 - tail call void %109(i32 noundef 1, ptr noundef nonnull %110) #54 - %111 = load ptr, ptr @glad_glBindBuffer, align 8 - %112 = load i32, ptr %110, align 4 - tail call void %111(i32 noundef 34962, i32 noundef %112) #54 - %113 = load ptr, ptr @glad_glBufferData, align 8 - %114 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 3 - %115 = load ptr, ptr %114, align 8 - tail call void %113(i32 noundef 34962, i64 noundef %68, ptr noundef %115, i32 noundef 35048) #54 - %116 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8 - %117 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 - %118 = getelementptr inbounds nuw i8, ptr %117, i64 20 - %119 = load i32, ptr %118, align 4 - tail call void %116(i32 noundef %119) #54 - %120 = load ptr, ptr @glad_glVertexAttribPointer, align 8 - %121 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2376), align 8 - %122 = getelementptr inbounds nuw i8, ptr %121, i64 20 - %123 = load i32, ptr %122, align 4 - tail call void %120(i32 noundef %123, i32 noundef 4, i32 noundef 5121, i8 noundef zeroext 1, i32 noundef 0, ptr noundef null) #54 - %124 = load ptr, ptr @glad_glGenBuffers, align 8 - %125 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 6, i64 3 - tail call void %124(i32 noundef 1, ptr noundef nonnull %125) #54 - %126 = load ptr, ptr @glad_glBindBuffer, align 8 - %127 = load i32, ptr %125, align 4 - tail call void %126(i32 noundef 34963, i32 noundef %127) #54 - %128 = load ptr, ptr @glad_glBufferData, align 8 - %129 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 4 - %130 = load ptr, ptr %129, align 8 - tail call void %128(i32 noundef 34963, i64 noundef %71, ptr noundef %130, i32 noundef 35044) #54 - %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 - %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 - br i1 %exitcond133.not, label %._crit_edge104, label %72 - -._crit_edge104: ; preds = %80, %._crit_edge100.thread +._crit_edge104: ; preds = %79, %._crit_edge100.thread tail call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.39) #54 - %131 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 - %132 = trunc i8 %131 to i1 - br i1 %132, label %133, label %135 - -133: ; preds = %._crit_edge104 - %134 = load ptr, ptr @glad_glBindVertexArray, align 8 - tail call void %134(i32 noundef 0) #54 - br label %135 - -135: ; preds = %133, %._crit_edge104 - %136 = tail call noalias dereferenceable_or_null(4096) ptr @malloc(i64 noundef 4096) #56 - %137 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %136, ptr %137, align 8 - %138 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2328), align 8 - br label %139 - -139: ; preds = %135, %139 - %indvars.iv134 = phi i64 [ 0, %135 ], [ %indvars.iv.next135, %139 ] - %140 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134 - store i32 7, ptr %140, align 4 - %141 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134, i32 1 + %130 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 + %131 = trunc i8 %130 to i1 + br i1 %131, label %132, label %134 + +132: ; preds = %._crit_edge104 + %133 = load ptr, ptr @glad_glBindVertexArray, align 8 + tail call void %133(i32 noundef 0) #54 + br label %134 + +134: ; preds = %132, %._crit_edge104 + %135 = tail call noalias dereferenceable_or_null(4096) ptr @malloc(i64 noundef 4096) #56 + %136 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %135, ptr %136, align 8 + %137 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2328), align 8 + br label %138 + +138: ; preds = %134, %138 + %indvars.iv132 = phi i64 [ 0, %134 ], [ %indvars.iv.next133, %138 ] + %139 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132 + store i32 7, ptr %139, align 4 + %140 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132, i32 1 + store i32 0, ptr %140, align 4 + %141 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132, i32 2 store i32 0, ptr %141, align 4 - %142 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134, i32 2 - store i32 0, ptr %142, align 4 - %143 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134, i32 3 - store i32 %138, ptr %143, align 4 - %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 - %exitcond137.not = icmp eq i64 %indvars.iv.next135, 256 - br i1 %exitcond137.not, label %144, label %139 - -144: ; preds = %139 + %142 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132, i32 3 + store i32 %137, ptr %142, align 4 + %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 + %exitcond135.not = icmp eq i64 %indvars.iv.next133, 256 + br i1 %exitcond135.not, label %143, label %138 + +143: ; preds = %138 store i32 %1, ptr %0, align 8 - %145 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 1, ptr %145, align 8 - %146 = getelementptr inbounds nuw i8, ptr %0, i64 28 - store float -1.000000e+00, ptr %146, align 4 + %144 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 1, ptr %144, align 8 + %145 = getelementptr inbounds nuw i8, ptr %0, i64 28 + store float -1.000000e+00, ptr %145, align 4 ret void } diff --git a/bench/raylib/optimized/rtext.ll b/bench/raylib/optimized/rtext.ll index 85d958f2dcc..ec83e22e34f 100644 --- a/bench/raylib/optimized/rtext.ll +++ b/bench/raylib/optimized/rtext.ll @@ -1000,11 +1000,11 @@ LoadFontEx.exit: ; preds = %38, %41 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %29, i64 48, i1 false) - br label %235 + br label %234 42: ; preds = %34 %43 = tail call zeroext i1 @IsFileExtension(ptr noundef %1, ptr noundef nonnull @.str.3) #41 - br i1 %43, label %44, label %223 + br i1 %43, label %44, label %222 44: ; preds = %42 tail call void @llvm.experimental.noalias.scope.decl(metadata !7) @@ -1217,8 +1217,8 @@ GetLine.exit134.i: ; preds = %99, %.split.loop.ex call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %112, i64 24, i1 false), !noalias !7 br label %.loopexit.i -.lr.ph162.i: ; preds = %109, %141 - %indvars.iv193.i = phi i64 [ %indvars.iv.next194.i, %141 ], [ 0, %109 ] +.lr.ph162.i: ; preds = %109, %140 + %indvars.iv193.i = phi i64 [ %indvars.iv.next194.i, %140 ], [ 0, %109 ] %114 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv193.i %115 = call ptr @GetDirectoryPath(ptr noundef %1) #41, !noalias !7 %116 = getelementptr inbounds nuw [8 x [129 x i8]], ptr %12, i64 0, i64 %indvars.iv193.i @@ -1228,7 +1228,7 @@ GetLine.exit134.i: ; preds = %99, %.split.loop.ex %118 = getelementptr inbounds nuw i8, ptr %114, i64 20 %119 = load i32, ptr %118, align 4, !noalias !7 %120 = icmp eq i32 %119, 1 - br i1 %120, label %121, label %141 + br i1 %120, label %121, label %140 121: ; preds = %.lr.ph162.i %122 = getelementptr inbounds nuw i8, ptr %114, i64 8 @@ -1242,241 +1242,237 @@ GetLine.exit134.i: ; preds = %99, %.split.loop.ex br i1 %129, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %121 - %130 = shl nuw i32 %126, 1 + %130 = shl nuw nsw i32 %126, 1 %131 = load ptr, ptr %114, align 8, !noalias !7 - %smax.i = call i32 @llvm.smax.i32(i32 %130, i32 2) - %132 = add nsw i32 %smax.i, -1 - %133 = lshr i32 %132, 1 - %134 = add nuw nsw i32 %133, 1 - %wide.trip.count.i = zext nneg i32 %134 to i64 - br label %135 + %132 = zext nneg i32 %130 to i64 + br label %133 -135: ; preds = %135, %.lr.ph.i - %indvars.iv188.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next189.i, %135 ] - %indvars.iv186.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next187.i, %135 ] - %136 = getelementptr inbounds nuw i8, ptr %128, i64 %indvars.iv186.i - store i8 -1, ptr %136, align 1, !noalias !7 - %137 = getelementptr inbounds nuw i8, ptr %131, i64 %indvars.iv188.i - %138 = load i8, ptr %137, align 1, !noalias !7 - %139 = or disjoint i64 %indvars.iv186.i, 1 - %140 = getelementptr inbounds nuw i8, ptr %128, i64 %139 - store i8 %138, ptr %140, align 1, !noalias !7 +133: ; preds = %133, %.lr.ph.i + %indvars.iv188.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next189.i, %133 ] + %indvars.iv186.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next187.i, %133 ] + %134 = getelementptr inbounds nuw i8, ptr %128, i64 %indvars.iv186.i + store i8 -1, ptr %134, align 1, !noalias !7 + %135 = getelementptr inbounds nuw i8, ptr %131, i64 %indvars.iv188.i + %136 = load i8, ptr %135, align 1, !noalias !7 + %137 = or disjoint i64 %indvars.iv186.i, 1 + %138 = getelementptr inbounds nuw i8, ptr %128, i64 %137 + store i8 %136, ptr %138, align 1, !noalias !7 %indvars.iv.next187.i = add nuw nsw i64 %indvars.iv186.i, 2 %indvars.iv.next189.i = add nuw nsw i64 %indvars.iv188.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next189.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.i, label %135 + %139 = icmp samesign ult i64 %indvars.iv.next187.i, %132 + br i1 %139, label %133, label %._crit_edge.i -._crit_edge.i: ; preds = %135, %121 +._crit_edge.i: ; preds = %133, %121 call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %14) #41, !noalias !7 store ptr %128, ptr %114, align 8, !noalias !7 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 16 store i32 1, ptr %.sroa.6.0..sroa_idx.i, align 8, !noalias !7 store i32 2, ptr %118, align 4, !noalias !7 - br label %141 + br label %140 -141: ; preds = %._crit_edge.i, %.lr.ph162.i +140: ; preds = %._crit_edge.i, %.lr.ph162.i %indvars.iv.next194.i = add nuw nsw i64 %indvars.iv193.i, 1 - %142 = load i32, ptr %11, align 4, !noalias !7 - %143 = sext i32 %142 to i64 - %144 = icmp slt i64 %indvars.iv.next194.i, %143 - br i1 %144, label %.lr.ph162.i, label %._crit_edge163.i + %141 = load i32, ptr %11, align 4, !noalias !7 + %142 = sext i32 %141 to i64 + %143 = icmp slt i64 %indvars.iv.next194.i, %142 + br i1 %143, label %.lr.ph162.i, label %._crit_edge163.i -._crit_edge163.i: ; preds = %141 +._crit_edge163.i: ; preds = %140 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %112, i64 24, i1 false), !noalias !7 - %145 = icmp sgt i32 %142, 1 - br i1 %145, label %.lr.ph167.i, label %.loopexit.i + %144 = icmp sgt i32 %141, 1 + br i1 %144, label %.lr.ph167.i, label %.loopexit.i .lr.ph167.i: ; preds = %._crit_edge163.i, %.lr.ph167.i %indvars.iv196.i = phi i64 [ %indvars.iv.next197.i, %.lr.ph167.i ], [ 1, %._crit_edge163.i ] - %146 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv196.i - call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %146) #41, !noalias !7 + %145 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv196.i + call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %145) #41, !noalias !7 %indvars.iv.next197.i = add nuw nsw i64 %indvars.iv196.i, 1 %.pr.i = load i32, ptr %11, align 4, !noalias !7 - %147 = sext i32 %.pr.i to i64 - %148 = icmp slt i64 %indvars.iv.next197.i, %147 - br i1 %148, label %.lr.ph167.i, label %._crit_edge168.i + %146 = sext i32 %.pr.i to i64 + %147 = icmp slt i64 %indvars.iv.next197.i, %146 + br i1 %147, label %.lr.ph167.i, label %._crit_edge168.i ._crit_edge168.i: ; preds = %.lr.ph167.i - %149 = icmp sgt i32 %.pr.i, 1 - br i1 %149, label %150, label %.loopexit.i - -150: ; preds = %._crit_edge168.i - %151 = load i32, ptr %9, align 4, !noalias !7 - %152 = load i32, ptr %10, align 4, !noalias !7 - %153 = mul nsw i32 %152, %.pr.i - call void @ImageResizeCanvas(ptr noundef nonnull %15, i32 noundef %151, i32 noundef %153, i32 noundef 0, i32 noundef 0, i32 -16777216) #41, !noalias !7 - %154 = load i32, ptr %11, align 4, !noalias !7 - %155 = icmp sgt i32 %154, 1 - br i1 %155, label %.lr.ph172.i, label %.loopexit.i - -.lr.ph172.i: ; preds = %150, %.lr.ph172.i - %indvars.iv199.i = phi i64 [ %indvars.iv.next200.i, %.lr.ph172.i ], [ 1, %150 ] - %156 = load i32, ptr %9, align 4, !noalias !7 - %157 = sitofp i32 %156 to float - %.sroa.319.8.vec.insert.i = insertelement <2 x float> poison, float %157, i64 0 - %158 = load i32, ptr %10, align 4, !noalias !7 - %159 = sitofp i32 %158 to float - %.sroa.319.12.vec.insert.i = insertelement <2 x float> %.sroa.319.8.vec.insert.i, float %159, i64 1 - %160 = trunc nuw nsw i64 %indvars.iv199.i to i32 - %161 = uitofp nneg i32 %160 to float - %162 = fmul float %161, %159 - %.sroa.013.4.vec.insert.i = insertelement <2 x float> , float %162, i64 1 - %163 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv199.i - call void @ImageDraw(ptr noundef nonnull %15, ptr noundef nonnull byval(%struct.Image) align 8 %163, <2 x float> zeroinitializer, <2 x float> %.sroa.319.12.vec.insert.i, <2 x float> %.sroa.013.4.vec.insert.i, <2 x float> %.sroa.319.12.vec.insert.i, i32 -1) #41, !noalias !7 + %148 = icmp sgt i32 %.pr.i, 1 + br i1 %148, label %149, label %.loopexit.i + +149: ; preds = %._crit_edge168.i + %150 = load i32, ptr %9, align 4, !noalias !7 + %151 = load i32, ptr %10, align 4, !noalias !7 + %152 = mul nsw i32 %151, %.pr.i + call void @ImageResizeCanvas(ptr noundef nonnull %15, i32 noundef %150, i32 noundef %152, i32 noundef 0, i32 noundef 0, i32 -16777216) #41, !noalias !7 + %153 = load i32, ptr %11, align 4, !noalias !7 + %154 = icmp sgt i32 %153, 1 + br i1 %154, label %.lr.ph172.i, label %.loopexit.i + +.lr.ph172.i: ; preds = %149, %.lr.ph172.i + %indvars.iv199.i = phi i64 [ %indvars.iv.next200.i, %.lr.ph172.i ], [ 1, %149 ] + %155 = load i32, ptr %9, align 4, !noalias !7 + %156 = sitofp i32 %155 to float + %.sroa.319.8.vec.insert.i = insertelement <2 x float> poison, float %156, i64 0 + %157 = load i32, ptr %10, align 4, !noalias !7 + %158 = sitofp i32 %157 to float + %.sroa.319.12.vec.insert.i = insertelement <2 x float> %.sroa.319.8.vec.insert.i, float %158, i64 1 + %159 = trunc nuw nsw i64 %indvars.iv199.i to i32 + %160 = uitofp nneg i32 %159 to float + %161 = fmul float %160, %158 + %.sroa.013.4.vec.insert.i = insertelement <2 x float> , float %161, i64 1 + %162 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv199.i + call void @ImageDraw(ptr noundef nonnull %15, ptr noundef nonnull byval(%struct.Image) align 8 %162, <2 x float> zeroinitializer, <2 x float> %.sroa.319.12.vec.insert.i, <2 x float> %.sroa.013.4.vec.insert.i, <2 x float> %.sroa.319.12.vec.insert.i, i32 -1) #41, !noalias !7 %indvars.iv.next200.i = add nuw nsw i64 %indvars.iv199.i, 1 - %164 = load i32, ptr %11, align 4, !noalias !7 - %165 = sext i32 %164 to i64 - %166 = icmp slt i64 %indvars.iv.next200.i, %165 - br i1 %166, label %.lr.ph172.i, label %.loopexit.i + %163 = load i32, ptr %11, align 4, !noalias !7 + %164 = sext i32 %163 to i64 + %165 = icmp slt i64 %indvars.iv.next200.i, %164 + br i1 %165, label %.lr.ph172.i, label %.loopexit.i -.loopexit.i: ; preds = %.lr.ph172.i, %150, %._crit_edge168.i, %._crit_edge163.i, %._crit_edge163.thread.i +.loopexit.i: ; preds = %.lr.ph172.i, %149, %._crit_edge168.i, %._crit_edge163.i, %._crit_edge163.thread.i call void @free(ptr noundef nonnull %112) #41, !noalias !7 call void @LoadTextureFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Texture) align 4 %16, ptr noundef nonnull byval(%struct.Image) align 8 %15) #41, !noalias !7 %.sroa.6.12.copyload = load i32, ptr %16, align 4 %.sroa.8.12..sroa_idx = getelementptr inbounds nuw i8, ptr %16, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.8.12..sroa_idx, i64 16, i1 false) - %167 = load i32, ptr %7, align 4, !noalias !7 - %168 = load i32, ptr %8, align 4, !noalias !7 - %169 = sext i32 %168 to i64 - %170 = mul nsw i64 %169, 40 - %171 = call noalias ptr @malloc(i64 noundef %170) #43 - %172 = shl nsw i64 %169, 4 - %173 = call noalias ptr @malloc(i64 noundef %172) #43 - %174 = icmp sgt i32 %168, 0 - br i1 %174, label %.lr.ph176.i, label %._crit_edge177.i - -.lr.ph176.i: ; preds = %.loopexit.i, %214 - %indvars.iv202.i = phi i64 [ %indvars.iv.next203.i, %214 ], [ 0, %.loopexit.i ] - %.pn174.i = phi ptr [ %185, %214 ], [ %106, %.loopexit.i ] + %166 = load i32, ptr %7, align 4, !noalias !7 + %167 = load i32, ptr %8, align 4, !noalias !7 + %168 = sext i32 %167 to i64 + %169 = mul nsw i64 %168, 40 + %170 = call noalias ptr @malloc(i64 noundef %169) #43 + %171 = shl nsw i64 %168, 4 + %172 = call noalias ptr @malloc(i64 noundef %171) #43 + %173 = icmp sgt i32 %167, 0 + br i1 %173, label %.lr.ph176.i, label %._crit_edge177.i + +.lr.ph176.i: ; preds = %.loopexit.i, %213 + %indvars.iv202.i = phi i64 [ %indvars.iv.next203.i, %213 ], [ 0, %.loopexit.i ] + %.pn174.i = phi ptr [ %184, %213 ], [ %106, %.loopexit.i ] %.1.i = getelementptr i8, ptr %.pn174.i, i64 1 - br label %175 + br label %174 -175: ; preds = %179, %.lr.ph176.i - %indvars.iv.i135.i = phi i64 [ 0, %.lr.ph176.i ], [ %indvars.iv.next.i136.i, %179 ] - %176 = getelementptr inbounds nuw i8, ptr %.1.i, i64 %indvars.iv.i135.i - %177 = load i8, ptr %176, align 1, !noalias !7 - %178 = icmp eq i8 %177, 10 - br i1 %178, label %.split.loop.exit.i139.i, label %179 +174: ; preds = %178, %.lr.ph176.i + %indvars.iv.i135.i = phi i64 [ 0, %.lr.ph176.i ], [ %indvars.iv.next.i136.i, %178 ] + %175 = getelementptr inbounds nuw i8, ptr %.1.i, i64 %indvars.iv.i135.i + %176 = load i8, ptr %175, align 1, !noalias !7 + %177 = icmp eq i8 %176, 10 + br i1 %177, label %.split.loop.exit.i139.i, label %178 -179: ; preds = %175 +178: ; preds = %174 %indvars.iv.next.i136.i = add nuw nsw i64 %indvars.iv.i135.i, 1 %exitcond.not.i137.i = icmp eq i64 %indvars.iv.next.i136.i, 255 - br i1 %exitcond.not.i137.i, label %GetLine.exit140.i, label %175 + br i1 %exitcond.not.i137.i, label %GetLine.exit140.i, label %174 -.split.loop.exit.i139.i: ; preds = %175 - %180 = trunc nuw nsw i64 %indvars.iv.i135.i to i32 +.split.loop.exit.i139.i: ; preds = %174 + %179 = trunc nuw nsw i64 %indvars.iv.i135.i to i32 br label %GetLine.exit140.i -GetLine.exit140.i: ; preds = %179, %.split.loop.exit.i139.i - %.0.lcssa.i138.i = phi i32 [ %180, %.split.loop.exit.i139.i ], [ 255, %179 ] - %181 = zext nneg i32 %.0.lcssa.i138.i to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull readonly align 1 %.1.i, i64 %181, i1 false), !noalias !7 - %182 = getelementptr inbounds nuw i8, ptr %6, i64 %181 - store i8 0, ptr %182, align 1, !noalias !7 - %183 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.80, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25) #41, !noalias !7 - %184 = sext i32 %.0.lcssa.i138.i to i64 - %185 = getelementptr i8, ptr %.1.i, i64 %184 - %186 = icmp eq i32 %183, 9 - br i1 %186, label %187, label %213 - -187: ; preds = %GetLine.exit140.i - %188 = getelementptr inbounds nuw %struct.Rectangle, ptr %173, i64 %indvars.iv202.i - %189 = load i32, ptr %18, align 4, !noalias !7 - %190 = sitofp i32 %189 to float - %191 = load i32, ptr %19, align 4, !noalias !7 - %192 = sitofp i32 %191 to float - %193 = load i32, ptr %10, align 4, !noalias !7 - %194 = sitofp i32 %193 to float - %195 = load i32, ptr %25, align 4, !noalias !7 - %196 = sitofp i32 %195 to float - %197 = call float @llvm.fmuladd.f32(float %194, float %196, float %192) - %198 = load i32, ptr %20, align 4, !noalias !7 - %199 = sitofp i32 %198 to float - %200 = load i32, ptr %21, align 4, !noalias !7 - %201 = sitofp i32 %200 to float - store float %190, ptr %188, align 4, !noalias !7 - %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %188, i64 4 - store float %197, ptr %.sroa.2.0..sroa_idx.i, align 4, !noalias !7 - %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %188, i64 8 - store float %199, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %188, i64 12 - store float %201, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !7 - %202 = load i32, ptr %17, align 4, !noalias !7 - %203 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i - store i32 %202, ptr %203, align 8, !noalias !7 - %204 = load i32, ptr %22, align 4, !noalias !7 - %205 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 1 - store i32 %204, ptr %205, align 4, !noalias !7 - %206 = load i32, ptr %23, align 4, !noalias !7 - %207 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 2 - store i32 %206, ptr %207, align 8, !noalias !7 - %208 = load i32, ptr %24, align 4, !noalias !7 - %209 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 3 - store i32 %208, ptr %209, align 4, !noalias !7 - %210 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 4 - %211 = load <2 x float>, ptr %188, align 4, !noalias !7 - %212 = load <2 x float>, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 - call void @ImageFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Image) align 8 %26, ptr noundef nonnull byval(%struct.Image) align 8 %15, <2 x float> %211, <2 x float> %212) #41, !noalias !7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %210, ptr noundef nonnull align 8 dereferenceable(24) %26, i64 24, i1 false), !noalias !7 - br label %214 - -213: ; preds = %GetLine.exit140.i +GetLine.exit140.i: ; preds = %178, %.split.loop.exit.i139.i + %.0.lcssa.i138.i = phi i32 [ %179, %.split.loop.exit.i139.i ], [ 255, %178 ] + %180 = zext nneg i32 %.0.lcssa.i138.i to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull readonly align 1 %.1.i, i64 %180, i1 false), !noalias !7 + %181 = getelementptr inbounds nuw i8, ptr %6, i64 %180 + store i8 0, ptr %181, align 1, !noalias !7 + %182 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.80, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25) #41, !noalias !7 + %183 = sext i32 %.0.lcssa.i138.i to i64 + %184 = getelementptr i8, ptr %.1.i, i64 %183 + %185 = icmp eq i32 %182, 9 + br i1 %185, label %186, label %212 + +186: ; preds = %GetLine.exit140.i + %187 = getelementptr inbounds nuw %struct.Rectangle, ptr %172, i64 %indvars.iv202.i + %188 = load i32, ptr %18, align 4, !noalias !7 + %189 = sitofp i32 %188 to float + %190 = load i32, ptr %19, align 4, !noalias !7 + %191 = sitofp i32 %190 to float + %192 = load i32, ptr %10, align 4, !noalias !7 + %193 = sitofp i32 %192 to float + %194 = load i32, ptr %25, align 4, !noalias !7 + %195 = sitofp i32 %194 to float + %196 = call float @llvm.fmuladd.f32(float %193, float %195, float %191) + %197 = load i32, ptr %20, align 4, !noalias !7 + %198 = sitofp i32 %197 to float + %199 = load i32, ptr %21, align 4, !noalias !7 + %200 = sitofp i32 %199 to float + store float %189, ptr %187, align 4, !noalias !7 + %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %187, i64 4 + store float %196, ptr %.sroa.2.0..sroa_idx.i, align 4, !noalias !7 + %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %187, i64 8 + store float %198, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %187, i64 12 + store float %200, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !7 + %201 = load i32, ptr %17, align 4, !noalias !7 + %202 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i + store i32 %201, ptr %202, align 8, !noalias !7 + %203 = load i32, ptr %22, align 4, !noalias !7 + %204 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 1 + store i32 %203, ptr %204, align 4, !noalias !7 + %205 = load i32, ptr %23, align 4, !noalias !7 + %206 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 2 + store i32 %205, ptr %206, align 8, !noalias !7 + %207 = load i32, ptr %24, align 4, !noalias !7 + %208 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 3 + store i32 %207, ptr %208, align 4, !noalias !7 + %209 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 4 + %210 = load <2 x float>, ptr %187, align 4, !noalias !7 + %211 = load <2 x float>, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 + call void @ImageFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Image) align 8 %26, ptr noundef nonnull byval(%struct.Image) align 8 %15, <2 x float> %210, <2 x float> %211) #41, !noalias !7 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %209, ptr noundef nonnull align 8 dereferenceable(24) %26, i64 24, i1 false), !noalias !7 + br label %213 + +212: ; preds = %GetLine.exit140.i call void (i32, ptr, ...) @TraceLog(i32 noundef 4, ptr noundef nonnull @.str.81, ptr noundef %1) #41, !noalias !7 - br label %214 + br label %213 -214: ; preds = %213, %187 +213: ; preds = %212, %186 %indvars.iv.next203.i = add nuw nsw i64 %indvars.iv202.i, 1 - %215 = load i32, ptr %8, align 4, !noalias !7 - %216 = sext i32 %215 to i64 - %217 = icmp slt i64 %indvars.iv.next203.i, %216 - br i1 %217, label %.lr.ph176.i, label %._crit_edge177.i + %214 = load i32, ptr %8, align 4, !noalias !7 + %215 = sext i32 %214 to i64 + %216 = icmp slt i64 %indvars.iv.next203.i, %215 + br i1 %216, label %.lr.ph176.i, label %._crit_edge177.i -._crit_edge177.i: ; preds = %214, %.loopexit.i +._crit_edge177.i: ; preds = %213, %.loopexit.i call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %15) #41, !noalias !7 call void @UnloadFileText(ptr noundef nonnull %45) #41, !noalias !7 - %218 = icmp eq i32 %.sroa.6.12.copyload, 0 - br i1 %218, label %219, label %222 + %217 = icmp eq i32 %.sroa.6.12.copyload, 0 + br i1 %217, label %218, label %221 -219: ; preds = %._crit_edge177.i +218: ; preds = %._crit_edge177.i call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %5), !noalias !7 %.sroa.1.0.copyload.i.i = load i32, ptr getelementptr inbounds nuw (i8, ptr @defaultFont, i64 12), align 4, !noalias !7 %.not.i.i = icmp eq i32 %.sroa.1.0.copyload.i.i, 0 - br i1 %.not.i.i, label %UnloadFont.exit.i, label %220 + br i1 %.not.i.i, label %UnloadFont.exit.i, label %219 -220: ; preds = %219 - %.not.i.i.i = icmp eq ptr %171, null +219: ; preds = %218 + %.not.i.i.i = icmp eq ptr %170, null br i1 %.not.i.i.i, label %UnloadFontData.exit.i.i, label %.preheader.i.i.i -.preheader.i.i.i: ; preds = %220 - br i1 %174, label %.lr.ph.preheader.i.i.i, label %._crit_edge.i.i.i +.preheader.i.i.i: ; preds = %219 + br i1 %173, label %.lr.ph.preheader.i.i.i, label %._crit_edge.i.i.i .lr.ph.preheader.i.i.i: ; preds = %.preheader.i.i.i - %wide.trip.count.i.i.i = zext nneg i32 %168 to i64 + %wide.trip.count.i.i.i = zext nneg i32 %167 to i64 br label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.preheader.i.i.i %indvars.iv.i.i.i = phi i64 [ 0, %.lr.ph.preheader.i.i.i ], [ %indvars.iv.next.i.i.i, %.lr.ph.i.i.i ] - %221 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv.i.i.i, i32 4 - call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %221) #41, !noalias !7 + %220 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv.i.i.i, i32 4 + call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %220) #41, !noalias !7 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, %wide.trip.count.i.i.i br i1 %exitcond.not.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph.i.i.i ._crit_edge.i.i.i: ; preds = %.lr.ph.i.i.i, %.preheader.i.i.i - call void @free(ptr noundef nonnull %171) #41, !noalias !7 + call void @free(ptr noundef nonnull %170) #41, !noalias !7 br label %UnloadFontData.exit.i.i -UnloadFontData.exit.i.i: ; preds = %._crit_edge.i.i.i, %220 +UnloadFontData.exit.i.i: ; preds = %._crit_edge.i.i.i, %219 store i32 0, ptr %5, align 8, !noalias !7 %.sroa.6.12..sroa_idx.i = getelementptr inbounds nuw i8, ptr %5, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6.12..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8, i64 16, i1 false) call void @UnloadTexture(ptr noundef nonnull byval(%struct.Texture) align 8 %5) #41, !noalias !7 - call void @free(ptr noundef %173) #41, !noalias !7 + call void @free(ptr noundef %172) #41, !noalias !7 %.sroa.6.0.copyload14.pre = load i32, ptr getelementptr inbounds nuw (i8, ptr @defaultFont, i64 12), align 4 br label %UnloadFont.exit.i -UnloadFont.exit.i: ; preds = %UnloadFontData.exit.i.i, %219 - %.sroa.6.0.copyload14 = phi i32 [ %.sroa.6.0.copyload14.pre, %UnloadFontData.exit.i.i ], [ 0, %219 ] +UnloadFont.exit.i: ; preds = %UnloadFontData.exit.i.i, %218 + %.sroa.6.0.copyload14 = phi i32 [ %.sroa.6.0.copyload14.pre, %UnloadFontData.exit.i.i ], [ 0, %218 ] call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %5), !noalias !7 %.sroa.0.0.copyload11 = load i32, ptr @defaultFont, align 8 %.sroa.4.0.copyload12 = load i32, ptr getelementptr inbounds nuw (i8, ptr @defaultFont, i64 4), align 4 @@ -1487,17 +1483,17 @@ UnloadFont.exit.i: ; preds = %UnloadFontData.exit call void (i32, ptr, ...) @TraceLog(i32 noundef 4, ptr noundef nonnull @.str.82, ptr noundef %1) #41, !noalias !7 br label %LoadBMFont.exit -222: ; preds = %._crit_edge177.i - call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.83, ptr noundef %1, i32 noundef %168) #41, !noalias !7 +221: ; preds = %._crit_edge177.i + call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.83, ptr noundef %1, i32 noundef %167) #41, !noalias !7 br label %LoadBMFont.exit -LoadBMFont.exit: ; preds = %44, %70, %88, %108, %UnloadFont.exit.i, %222 - %.sroa.0.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.0.0.copyload11, %UnloadFont.exit.i ], [ %167, %222 ] - %.sroa.4.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.4.0.copyload12, %UnloadFont.exit.i ], [ %168, %222 ] - %.sroa.5.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.5.0.copyload13, %UnloadFont.exit.i ], [ 0, %222 ] - %.sroa.6.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.6.0.copyload14, %UnloadFont.exit.i ], [ %.sroa.6.12.copyload, %222 ] - %.sroa.9.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.9.0.copyload15, %UnloadFont.exit.i ], [ %173, %222 ] - %.sroa.10.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.10.0.copyload16, %UnloadFont.exit.i ], [ %171, %222 ] +LoadBMFont.exit: ; preds = %44, %70, %88, %108, %UnloadFont.exit.i, %221 + %.sroa.0.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.0.0.copyload11, %UnloadFont.exit.i ], [ %166, %221 ] + %.sroa.4.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.4.0.copyload12, %UnloadFont.exit.i ], [ %167, %221 ] + %.sroa.5.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.5.0.copyload13, %UnloadFont.exit.i ], [ 0, %221 ] + %.sroa.6.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.6.0.copyload14, %UnloadFont.exit.i ], [ %.sroa.6.12.copyload, %221 ] + %.sroa.9.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.9.0.copyload15, %UnloadFont.exit.i ], [ %172, %221 ] + %.sroa.10.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.10.0.copyload16, %UnloadFont.exit.i ], [ %170, %221 ] call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) @@ -1532,70 +1528,70 @@ LoadBMFont.exit: ; preds = %44, %70, %88, %108, store ptr %.sroa.9.0, ptr %.sroa.9.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %.sroa.10.0, ptr %.sroa.10.0..sroa_idx, align 8 - br label %235 + br label %234 -223: ; preds = %42 - %224 = tail call zeroext i1 @IsFileExtension(ptr noundef %1, ptr noundef nonnull @.str.4) #41 - br i1 %224, label %225, label %231 +222: ; preds = %42 + %223 = tail call zeroext i1 @IsFileExtension(ptr noundef %1, ptr noundef nonnull @.str.4) #41 + br i1 %223, label %224, label %230 -225: ; preds = %223 +224: ; preds = %222 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) store i32 0, ptr %3, align 4, !noalias !10 - %226 = call ptr @LoadFileData(ptr noundef %1, ptr noundef nonnull %3) #41, !noalias !10 - %.not.i9 = icmp eq ptr %226, null - br i1 %.not.i9, label %230, label %227 - -227: ; preds = %225 - %228 = call ptr @GetFileExtension(ptr noundef %1) #41, !noalias !10 - %229 = load i32, ptr %3, align 4, !noalias !10 - call void @LoadFontFromMemory(ptr dead_on_unwind nonnull writable sret(%struct.Font) align 8 %4, ptr noundef %228, ptr noundef nonnull %226, i32 noundef %229, i32 noundef 32, ptr noundef null, i32 noundef 95), !noalias !10 + %225 = call ptr @LoadFileData(ptr noundef %1, ptr noundef nonnull %3) #41, !noalias !10 + %.not.i9 = icmp eq ptr %225, null + br i1 %.not.i9, label %229, label %226 + +226: ; preds = %224 + %227 = call ptr @GetFileExtension(ptr noundef %1) #41, !noalias !10 + %228 = load i32, ptr %3, align 4, !noalias !10 + call void @LoadFontFromMemory(ptr dead_on_unwind nonnull writable sret(%struct.Font) align 8 %4, ptr noundef %227, ptr noundef nonnull %225, i32 noundef %228, i32 noundef 32, ptr noundef null, i32 noundef 95), !noalias !10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) %4, i64 48, i1 false) - call void @UnloadFileData(ptr noundef nonnull %226) #41, !noalias !10 + call void @UnloadFileData(ptr noundef nonnull %225) #41, !noalias !10 br label %LoadFontEx.exit10 -230: ; preds = %225 +229: ; preds = %224 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) @defaultFont, i64 48, i1 false) br label %LoadFontEx.exit10 -LoadFontEx.exit10: ; preds = %227, %230 +LoadFontEx.exit10: ; preds = %226, %229 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %30, i64 48, i1 false) - br label %235 + br label %234 -231: ; preds = %223 +230: ; preds = %222 call void @LoadImage(ptr dead_on_unwind nonnull writable sret(%struct.Image) align 8 %31, ptr noundef %1) #41 - %232 = load ptr, ptr %31, align 8 - %.not = icmp eq ptr %232, null - br i1 %.not, label %234, label %233 + %231 = load ptr, ptr %31, align 8 + %.not = icmp eq ptr %231, null + br i1 %.not, label %233, label %232 -233: ; preds = %231 +232: ; preds = %230 call void @LoadFontFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Font) align 8 %0, ptr noundef nonnull byval(%struct.Image) align 8 %31, i32 -65281, i32 noundef 32) - br label %234 + br label %233 -234: ; preds = %233, %231 +233: ; preds = %232, %230 call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %31) #41 - br label %235 + br label %234 -235: ; preds = %LoadBMFont.exit, %234, %LoadFontEx.exit10, %LoadFontEx.exit - %236 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %237 = load i32, ptr %236, align 4 - %238 = icmp eq i32 %237, 0 - br i1 %238, label %239, label %240 +234: ; preds = %LoadBMFont.exit, %233, %LoadFontEx.exit10, %LoadFontEx.exit + %235 = getelementptr inbounds nuw i8, ptr %0, i64 12 + %236 = load i32, ptr %235, align 4 + %237 = icmp eq i32 %236, 0 + br i1 %237, label %238, label %239 -239: ; preds = %235 +238: ; preds = %234 call void (i32, ptr, ...) @TraceLog(i32 noundef 4, ptr noundef nonnull @.str.5, ptr noundef %1) #41 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) @defaultFont, i64 48, i1 false) - br label %241 + br label %240 -240: ; preds = %235 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %32, ptr noundef nonnull align 4 dereferenceable(20) %236, i64 20, i1 false) +239: ; preds = %234 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %32, ptr noundef nonnull align 4 dereferenceable(20) %235, i64 20, i1 false) call void @SetTextureFilter(ptr noundef nonnull byval(%struct.Texture) align 8 %32, i32 noundef 0) #41 call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.6, i32 noundef 32, i32 noundef 95) #41 - br label %241 + br label %240 -241: ; preds = %240, %239 +240: ; preds = %239, %238 ret void } diff --git a/bench/recastnavigation/optimized/RecastMeshDetail.ll b/bench/recastnavigation/optimized/RecastMeshDetail.ll index d1b9d1f75e5..1b5fb2dd2a7 100644 --- a/bench/recastnavigation/optimized/RecastMeshDetail.ll +++ b/bench/recastnavigation/optimized/RecastMeshDetail.ll @@ -234,7 +234,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 106: ; preds = %99 %107 = mul nsw i32 %58, 3 - br label %.invoke1067 + br label %.invoke1068 .loopexit: ; preds = %.lr.ph172.i.i, %2135, %_ZN10rcIntArrayixEi.exit127._crit_edge.i.i, %.noexc436, %2160, %_ZN10rcIntArrayixEi.exit129.i.i, %2174, %_ZN10rcIntArrayixEi.exit131.i.i, %2188, %_ZN10rcIntArrayixEi.exit133.i.i, %2202, %2215, %.noexc556, %2223, %.noexc558, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552 %lpad.loopexit = landingpad { ptr, i32 } @@ -316,8 +316,8 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke1067, %.invoke, %213, %202, %190, %._crit_edge896 - %.sroa.0720.3.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph = phi ptr [ %184, %213 ], [ %184, %202 ], [ %184, %190 ], [ null, %._crit_edge896 ], [ %184, %.invoke ], [ null, %.invoke1067 ] +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke1068, %.invoke, %213, %202, %190, %._crit_edge896 + %.sroa.0720.3.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph = phi ptr [ %184, %213 ], [ %184, %202 ], [ %184, %190 ], [ null, %._crit_edge896 ], [ %184, %.invoke ], [ null, %.invoke1068 ] %lpad.loopexit.split-lp857 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -470,9 +470,9 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 186: ; preds = %185 %187 = mul nsw i32 %.0260.lcssa, %.0269.lcssa - br label %.invoke1067 + br label %.invoke1068 -.invoke1067: ; preds = %106, %186 +.invoke1068: ; preds = %106, %186 %188 = phi ptr [ @.str.4, %186 ], [ @.str.3, %106 ] %189 = phi i32 [ %187, %186 ], [ %107, %106 ] invoke void (ptr, i32, ptr, ...) @_ZN9rcContext3logE13rcLogCategoryPKcz(ptr noundef nonnull align 8 dereferenceable(10) %0, i32 noundef 3, ptr noundef nonnull %188, i32 noundef %189) @@ -578,11 +578,11 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 br label %.invoke 252: ; preds = %.lr.ph924, %._crit_edge920 - %indvars.iv1009 = phi i64 [ 0, %.lr.ph924 ], [ %indvars.iv.next1010, %._crit_edge920 ] + %indvars.iv1010 = phi i64 [ 0, %.lr.ph924 ], [ %indvars.iv.next1011, %._crit_edge920 ] %.0263922 = phi i32 [ %205, %.lr.ph924 ], [ %.1264, %._crit_edge920 ] %.0266921 = phi i32 [ %204, %.lr.ph924 ], [ %.1267, %._crit_edge920 ] %253 = load ptr, ptr %221, align 8 - %254 = trunc nuw nsw i64 %indvars.iv1009 to i32 + %254 = trunc nuw nsw i64 %indvars.iv1010 to i32 %255 = mul i32 %222, %254 %256 = sext i32 %255 to i64 %257 = getelementptr inbounds i16, ptr %253, i64 %256 @@ -603,8 +603,8 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 %265 = load i16, ptr %264, align 2 %266 = uitofp i16 %265 to float %267 = fmul float %60, %266 - %.idx1028 = mul nuw nsw i64 %indvars.iv960, 12 - %268 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1028 + %.idx1029 = mul nuw nsw i64 %indvars.iv960, 12 + %268 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1029 store float %267, ptr %268, align 4 %269 = getelementptr inbounds nuw i8, ptr %264, i64 2 %270 = load i16, ptr %269, align 2 @@ -628,7 +628,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 ._crit_edge904: ; preds = %261, %._crit_edge904.loopexit.split.loop.exit, %252 %.0259.lcssa = phi i32 [ 0, %252 ], [ %indvars964.le, %._crit_edge904.loopexit.split.loop.exit ], [ %58, %261 ] - %279 = shl nsw i64 %indvars.iv1009, 2 + %279 = shl nsw i64 %indvars.iv1010, 2 %280 = getelementptr inbounds nuw i32, ptr %78, i64 %279 %281 = load i32, ptr %280, align 4 %282 = or disjoint i64 %279, 2 @@ -644,7 +644,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 %292 = sub i32 %291, %284 %293 = load ptr, ptr %1, align 8 %294 = load ptr, ptr %224, align 8 - %295 = getelementptr inbounds nuw i16, ptr %294, i64 %indvars.iv1009 + %295 = getelementptr inbounds nuw i16, ptr %294, i64 %indvars.iv1010 %296 = load i16, ptr %295, align 2 store i64 0, ptr %34, align 8 %297 = sext i32 %288 to i64 @@ -801,7 +801,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 .noexc629: ; preds = %.noexc628 %.not.i.i621 = icmp eq ptr %380, null - %.pre1013 = load ptr, ptr %228, align 8 + %.pre1014 = load ptr, ptr %228, align 8 br i1 %.not.i.i621, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622, label %381 381: ; preds = %.noexc629 @@ -812,7 +812,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 .lr.ph.i.i.i623: ; preds = %381, %.lr.ph.i.i.i623 %.07.i.i.i624 = phi i64 [ %387, %.lr.ph.i.i.i623 ], [ 0, %381 ] %384 = getelementptr inbounds nuw i32, ptr %380, i64 %.07.i.i.i624 - %385 = getelementptr inbounds nuw i32, ptr %.pre1013, i64 %.07.i.i.i624 + %385 = getelementptr inbounds nuw i32, ptr %.pre1014, i64 %.07.i.i.i624 %386 = load i32, ptr %385, align 4 store i32 %386, ptr %384, align 4 %387 = add nuw nsw i64 %.07.i.i.i624, 1 @@ -824,7 +824,7 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit: ; br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit, %381, %.noexc629 - %388 = phi ptr [ %.pre, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit ], [ %.pre1013, %381 ], [ %.pre1013, %.noexc629 ] + %388 = phi ptr [ %.pre, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit ], [ %.pre1014, %381 ], [ %.pre1014, %.noexc629 ] invoke void @_Z6rcFreePv(ptr noundef %388) to label %.noexc630 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -1912,7 +1912,7 @@ _ZN10rcIntArrayixEi.exit150.i: ; preds = %.noexc342, %.noexc3 .noexc470: ; preds = %.noexc469 %.not.i.i466 = icmp eq ptr %822, null - %.pre1015 = load ptr, ptr %228, align 8 + %.pre1016 = load ptr, ptr %228, align 8 br i1 %.not.i.i466, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i, label %823 823: ; preds = %.noexc470 @@ -1923,7 +1923,7 @@ _ZN10rcIntArrayixEi.exit150.i: ; preds = %.noexc342, %.noexc3 .lr.ph.i.i.i: ; preds = %823, %.lr.ph.i.i.i %.07.i.i.i = phi i64 [ %829, %.lr.ph.i.i.i ], [ 0, %823 ] %826 = getelementptr inbounds nuw i32, ptr %822, i64 %.07.i.i.i - %827 = getelementptr inbounds nuw i32, ptr %.pre1015, i64 %.07.i.i.i + %827 = getelementptr inbounds nuw i32, ptr %.pre1016, i64 %.07.i.i.i %828 = load i32, ptr %827, align 4 store i32 %828, ptr %826, align 4 %829 = add nuw nsw i64 %.07.i.i.i, 1 @@ -1931,11 +1931,11 @@ _ZN10rcIntArrayixEi.exit150.i: ; preds = %.noexc342, %.noexc3 br i1 %exitcond.not.i.i.i, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit, label %.lr.ph.i.i.i, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit: ; preds = %.lr.ph.i.i.i - %.pre1014 = load ptr, ptr %228, align 8 + %.pre1015 = load ptr, ptr %228, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit, %823, %.noexc470 - %830 = phi ptr [ %.pre1014, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit ], [ %.pre1015, %823 ], [ %.pre1015, %.noexc470 ] + %830 = phi ptr [ %.pre1015, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit ], [ %.pre1016, %823 ], [ %.pre1016, %.noexc470 ] invoke void @_Z6rcFreePv(ptr noundef %830) to label %.noexc471 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -2304,12 +2304,12 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, to label %.noexc381 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc381: ; preds = %_ZL13polyMinExtentPKfi.exit.i - %brmerge569.i = or i1 %231, %937 - br i1 %brmerge569.i, label %._crit_edge.i594, label %.lr.ph442.i + %brmerge567.i = or i1 %231, %937 + br i1 %brmerge567.i, label %._crit_edge.i594, label %.lr.ph442.i .lr.ph442.i: ; preds = %.noexc381 %993 = add nsw i32 %.0259.lcssa, -1 - %wide.trip.count535.i = zext nneg i32 %.0259.lcssa to i64 + %wide.trip.count533.i = zext nneg i32 %.0259.lcssa to i64 %994 = load float, ptr %232, align 8 %995 = add nsw i32 %288, -1 %996 = add nsw i32 %292, -1 @@ -2317,13 +2317,13 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, 997: ; preds = %.loopexit401.i, %.lr.ph442.i %.0798 = phi i32 [ %.0259.lcssa, %.lr.ph442.i ], [ %.1799, %.loopexit401.i ] - %indvars.iv532.i = phi i64 [ 0, %.lr.ph442.i ], [ %indvars.iv.next533.i, %.loopexit401.i ] + %indvars.iv530.i = phi i64 [ 0, %.lr.ph442.i ], [ %indvars.iv.next531.i, %.loopexit401.i ] %.1440.i = phi i32 [ 0, %.lr.ph442.i ], [ %.4.i, %.loopexit401.i ] %.0234438.i = phi i32 [ %993, %.lr.ph442.i ], [ %1238, %.loopexit401.i ] %998 = mul nsw i32 %.0234438.i, 3 %999 = sext i32 %998 to i64 %1000 = getelementptr inbounds float, ptr %98, i64 %999 - %.idx.i = mul nuw nsw i64 %indvars.iv532.i, 12 + %.idx.i = mul nuw nsw i64 %indvars.iv530.i, 12 %1001 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx.i %1002 = load float, ptr %1000, align 4 %1003 = load float, ptr %1001, align 4 @@ -2384,10 +2384,8 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, .lr.ph414.i: ; preds = %1017 %1040 = uitofp nneg i32 %spec.select.i to float - %smin.i = call i32 @llvm.smin.i32(i32 %1037, i32 126) - %reass.sub = sub i32 %smin.i, %.0798 - %1041 = add i32 %reass.sub, 1 - %wide.trip.count505.i = zext i32 %1041 to i64 + %narrow = add nuw i32 %spec.select.i, 1 + %1041 = zext i32 %narrow to i64 br label %1042 1042: ; preds = %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i, %.lr.ph414.i @@ -2422,8 +2420,8 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, %1068 = sext i32 %1067 to i64 %1069 = getelementptr inbounds i16, ptr %184, i64 %1068 %1070 = load i16, ptr %1069, align 2 - %.not1029 = icmp eq i16 %1070, -1 - br i1 %.not1029, label %.lr.ph.i.i361, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i + %.not1030 = icmp eq i16 %1070, -1 + br i1 %.not1030, label %.lr.ph.i.i361, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i .lr.ph.i.i361: ; preds = %1042 %1071 = call float @llvm.fmuladd.f32(float %1025, float %1045, float %1024) @@ -2526,8 +2524,8 @@ _ZL9getHeightffffffiRK13rcHeightPatch.exit.i: ; preds = %1112, %1096, %1042 %1116 = fmul float %994, %1115 store float %1116, ptr %1049, align 4 %indvars.iv.next503.i = add nuw nsw i64 %indvars.iv502.i, 1 - %exitcond506.not.i = icmp eq i64 %indvars.iv.next503.i, %wide.trip.count505.i - br i1 %exitcond506.not.i, label %._crit_edge415.i, label %1042, !llvm.loop !26 + %exitcond975.not = icmp eq i64 %indvars.iv.next503.i, %1041 + br i1 %exitcond975.not, label %._crit_edge415.i, label %1042, !llvm.loop !26 ._crit_edge415.i: ; preds = %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i, %1017 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(128) %20, i8 0, i64 128, i1 false) @@ -2577,10 +2575,10 @@ _ZL9getHeightffffffiRK13rcHeightPatch.exit.i: ; preds = %1112, %1096, %1042 br label %1151 1151: ; preds = %_ZL13distancePtSegPKfS0_S0_.exit.i, %.lr.ph421.i - %indvars.iv507.i = phi i64 [ %1150, %.lr.ph421.i ], [ %indvars.iv.next508.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] + %indvars.iv505.i = phi i64 [ %1150, %.lr.ph421.i ], [ %indvars.iv.next506.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] %.0245418.i = phi i32 [ -1, %.lr.ph421.i ], [ %.1246.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] %.0247417.i = phi float [ 0.000000e+00, %.lr.ph421.i ], [ %.1248.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] - %1152 = mul nsw i64 %indvars.iv507.i, 3 + %1152 = mul nsw i64 %indvars.iv505.i, 3 %1153 = getelementptr inbounds [99 x float], ptr %18, i64 0, i64 %1152 %1154 = load float, ptr %1153, align 4 %1155 = fsub float %1154, %1133 @@ -2618,12 +2616,12 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 %1178 = call noundef float @llvm.fmuladd.f32(float %1175, float %1175, float %1177) %1179 = fcmp ogt float %1178, %.0247417.i %.1248.i = select i1 %1179, float %1178, float %.0247417.i - %1180 = trunc nsw i64 %indvars.iv507.i to i32 + %1180 = trunc nsw i64 %indvars.iv505.i to i32 %.1246.i = select i1 %1179, i32 %1180, i32 %.0245418.i - %indvars.iv.next508.i = add nsw i64 %indvars.iv507.i, 1 - %lftr.wideiv.i = trunc i64 %indvars.iv.next508.i to i32 - %exitcond510.not.i = icmp eq i32 %1124, %lftr.wideiv.i - br i1 %exitcond510.not.i, label %._crit_edge422.i, label %1151, !llvm.loop !27 + %indvars.iv.next506.i = add nsw i64 %indvars.iv505.i, 1 + %lftr.wideiv.i = trunc i64 %indvars.iv.next506.i to i32 + %exitcond508.not.i = icmp eq i32 %1124, %lftr.wideiv.i + br i1 %exitcond508.not.i, label %._crit_edge422.i, label %1151, !llvm.loop !27 ._crit_edge422.i: ; preds = %_ZL13distancePtSegPKfS0_S0_.exit.i %.not259.i = icmp ne i32 %.1246.i, -1 @@ -2640,13 +2638,13 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 br label %.lr.ph425.i .lr.ph425.i: ; preds = %.lr.ph425.i, %.lr.ph425.preheader.i - %indvars.iv513.i = phi i64 [ %1183, %.lr.ph425.preheader.i ], [ %indvars.iv.next514.i, %.lr.ph425.i ] - %indvars.iv.next514.i = add nsw i64 %indvars.iv513.i, -1 - %1184 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv.next514.i + %indvars.iv511.i = phi i64 [ %1183, %.lr.ph425.preheader.i ], [ %indvars.iv.next512.i, %.lr.ph425.i ] + %indvars.iv.next512.i = add nsw i64 %indvars.iv511.i, -1 + %1184 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv.next512.i %1185 = load i32, ptr %1184, align 4 - %1186 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv513.i + %1186 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv511.i store i32 %1185, ptr %1186, align 4 - %1187 = icmp sgt i64 %indvars.iv.next514.i, %1118 + %1187 = icmp sgt i64 %indvars.iv.next512.i, %1118 br i1 %1187, label %.lr.ph425.i, label %._crit_edge426.i, !llvm.loop !28 ._crit_edge426.i: ; preds = %.lr.ph425.i, %.preheader400.i @@ -2674,7 +2672,7 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 .lr.ph431.preheader.i: ; preds = %.preheader402.i %1196 = sext i32 %1192 to i64 - %wide.trip.count523.i = zext nneg i32 %1189 to i64 + %wide.trip.count521.i = zext nneg i32 %1189 to i64 %1197 = sext i32 %.0798 to i64 br label %.lr.ph431.i @@ -2689,12 +2687,12 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 br label %.lr.ph436.i .lr.ph436.i: ; preds = %.lr.ph436.i, %.lr.ph436.preheader.i - %indvars.iv978 = phi i64 [ %indvars.iv.next979, %.lr.ph436.i ], [ %1202, %.lr.ph436.preheader.i ] - %indvars.iv527.i = phi i64 [ %indvars.iv.next528.i, %.lr.ph436.i ], [ %1201, %.lr.ph436.preheader.i ] - %indvars.iv525.i = phi i64 [ %indvars.iv.next526.i, %.lr.ph436.i ], [ %1200, %.lr.ph436.preheader.i ] - %.idx1031 = mul nsw i64 %indvars.iv978, 12 - %1203 = getelementptr inbounds i8, ptr %36, i64 %.idx1031 - %1204 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv527.i + %indvars.iv979 = phi i64 [ %indvars.iv.next980, %.lr.ph436.i ], [ %1202, %.lr.ph436.preheader.i ] + %indvars.iv525.i = phi i64 [ %indvars.iv.next526.i, %.lr.ph436.i ], [ %1201, %.lr.ph436.preheader.i ] + %indvars.iv523.i = phi i64 [ %indvars.iv.next524.i, %.lr.ph436.i ], [ %1200, %.lr.ph436.preheader.i ] + %.idx1032 = mul nsw i64 %indvars.iv979, 12 + %1203 = getelementptr inbounds i8, ptr %36, i64 %.idx1032 + %1204 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv525.i %1205 = load i32, ptr %1204, align 4 %1206 = mul nsw i32 %1205, 3 %1207 = sext i32 %1206 to i64 @@ -2709,22 +2707,22 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 %1214 = load float, ptr %1213, align 4 %1215 = getelementptr inbounds nuw i8, ptr %1203, i64 8 store float %1214, ptr %1215, align 4 - %indvars.iv.next526.i = add nsw i64 %indvars.iv525.i, 1 - %1216 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv525.i - %1217 = trunc nsw i64 %indvars.iv978 to i32 + %indvars.iv.next524.i = add nsw i64 %indvars.iv523.i, 1 + %1216 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv523.i + %1217 = trunc nsw i64 %indvars.iv979 to i32 store i32 %1217, ptr %1216, align 4 - %indvars.iv.next979 = add nsw i64 %indvars.iv978, 1 - %indvars.iv.next528.i = add nsw i64 %indvars.iv527.i, -1 - %1218 = icmp samesign ugt i64 %indvars.iv527.i, 1 + %indvars.iv.next980 = add nsw i64 %indvars.iv979, 1 + %indvars.iv.next526.i = add nsw i64 %indvars.iv525.i, -1 + %1218 = icmp samesign ugt i64 %indvars.iv525.i, 1 br i1 %1218, label %.lr.ph436.i, label %.loopexit401.loopexit.i, !llvm.loop !30 .lr.ph431.i: ; preds = %.lr.ph431.i, %.lr.ph431.preheader.i - %indvars.iv975 = phi i64 [ %indvars.iv.next976, %.lr.ph431.i ], [ %1197, %.lr.ph431.preheader.i ] - %indvars.iv518.i = phi i64 [ %indvars.iv.next519.i, %.lr.ph431.i ], [ 1, %.lr.ph431.preheader.i ] - %indvars.iv516.i = phi i64 [ %indvars.iv.next517.i, %.lr.ph431.i ], [ %1196, %.lr.ph431.preheader.i ] - %.idx1030 = mul nsw i64 %indvars.iv975, 12 - %1219 = getelementptr inbounds i8, ptr %36, i64 %.idx1030 - %1220 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv518.i + %indvars.iv976 = phi i64 [ %indvars.iv.next977, %.lr.ph431.i ], [ %1197, %.lr.ph431.preheader.i ] + %indvars.iv516.i = phi i64 [ %indvars.iv.next517.i, %.lr.ph431.i ], [ 1, %.lr.ph431.preheader.i ] + %indvars.iv514.i = phi i64 [ %indvars.iv.next515.i, %.lr.ph431.i ], [ %1196, %.lr.ph431.preheader.i ] + %.idx1031 = mul nsw i64 %indvars.iv976, 12 + %1219 = getelementptr inbounds i8, ptr %36, i64 %.idx1031 + %1220 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv516.i %1221 = load i32, ptr %1220, align 4 %1222 = mul nsw i32 %1221, 3 %1223 = sext i32 %1222 to i64 @@ -2739,32 +2737,32 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 %1230 = load float, ptr %1229, align 4 %1231 = getelementptr inbounds nuw i8, ptr %1219, i64 8 store float %1230, ptr %1231, align 4 - %indvars.iv.next517.i = add nsw i64 %indvars.iv516.i, 1 - %1232 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv516.i - %1233 = trunc nsw i64 %indvars.iv975 to i32 + %indvars.iv.next515.i = add nsw i64 %indvars.iv514.i, 1 + %1232 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv514.i + %1233 = trunc nsw i64 %indvars.iv976 to i32 store i32 %1233, ptr %1232, align 4 - %indvars.iv.next976 = add nsw i64 %indvars.iv975, 1 - %indvars.iv.next519.i = add nuw nsw i64 %indvars.iv518.i, 1 - %exitcond524.not.i = icmp eq i64 %indvars.iv.next519.i, %wide.trip.count523.i - br i1 %exitcond524.not.i, label %.loopexit401.loopexit487.i, label %.lr.ph431.i, !llvm.loop !31 + %indvars.iv.next977 = add nsw i64 %indvars.iv976, 1 + %indvars.iv.next517.i = add nuw nsw i64 %indvars.iv516.i, 1 + %exitcond522.not.i = icmp eq i64 %indvars.iv.next517.i, %wide.trip.count521.i + br i1 %exitcond522.not.i, label %.loopexit401.loopexit487.i, label %.lr.ph431.i, !llvm.loop !31 .loopexit401.loopexit.i: ; preds = %.lr.ph436.i - %1234 = trunc nsw i64 %indvars.iv.next979 to i32 - %1235 = trunc nsw i64 %indvars.iv.next526.i to i32 + %1234 = trunc nsw i64 %indvars.iv.next980 to i32 + %1235 = trunc nsw i64 %indvars.iv.next524.i to i32 br label %.loopexit401.i .loopexit401.loopexit487.i: ; preds = %.lr.ph431.i - %1236 = trunc nsw i64 %indvars.iv.next976 to i32 - %1237 = trunc nsw i64 %indvars.iv.next517.i to i32 + %1236 = trunc nsw i64 %indvars.iv.next977 to i32 + %1237 = trunc nsw i64 %indvars.iv.next515.i to i32 br label %.loopexit401.i .loopexit401.i: ; preds = %.loopexit401.loopexit487.i, %.loopexit401.loopexit.i, %1198, %.preheader402.i %.1799 = phi i32 [ %1234, %.loopexit401.loopexit.i ], [ %.0798, %1198 ], [ %1236, %.loopexit401.loopexit487.i ], [ %.0798, %.preheader402.i ] %.4.i = phi i32 [ %1235, %.loopexit401.loopexit.i ], [ %1192, %1198 ], [ %1237, %.loopexit401.loopexit487.i ], [ %1192, %.preheader402.i ] - %indvars.iv.next533.i = add nuw nsw i64 %indvars.iv532.i, 1 - %1238 = trunc nuw nsw i64 %indvars.iv532.i to i32 - %exitcond536.not.i = icmp eq i64 %indvars.iv.next533.i, %wide.trip.count535.i - br i1 %exitcond536.not.i, label %.loopexit404.i, label %997, !llvm.loop !32 + %indvars.iv.next531.i = add nuw nsw i64 %indvars.iv530.i, 1 + %1238 = trunc nuw nsw i64 %indvars.iv530.i to i32 + %exitcond534.not.i = icmp eq i64 %indvars.iv.next531.i, %wide.trip.count533.i + br i1 %exitcond534.not.i, label %.loopexit404.i, label %997, !llvm.loop !32 .loopexit404.i: ; preds = %.loopexit401.i %1239 = add nsw i32 %.4.i, -1 @@ -3302,19 +3300,19 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i637: ; preds = % br i1 %1472, label %.lr.ph452.preheader.i, label %._crit_edge453.i .lr.ph452.preheader.i: ; preds = %1468 - %wide.trip.count540.i = zext nneg i32 %.0259.lcssa to i64 + %wide.trip.count538.i = zext nneg i32 %.0259.lcssa to i64 br label %.lr.ph452.i .lr.ph452.i: ; preds = %.lr.ph452.i, %.lr.ph452.preheader.i - %indvars.iv537.i = phi i64 [ 1, %.lr.ph452.preheader.i ], [ %indvars.iv.next538.i, %.lr.ph452.i ] + %indvars.iv535.i = phi i64 [ 1, %.lr.ph452.preheader.i ], [ %indvars.iv.next536.i, %.lr.ph452.i ] %.sroa.8376.0449.i = phi float [ %1471, %.lr.ph452.preheader.i ], [ %1484, %.lr.ph452.i ] %.sroa.4374.0448.i = phi float [ %1470, %.lr.ph452.preheader.i ], [ %1480, %.lr.ph452.i ] %.sroa.0372.0447.i = phi float [ %1469, %.lr.ph452.preheader.i ], [ %1476, %.lr.ph452.i ] %.sroa.8.0446.i = phi float [ %1471, %.lr.ph452.preheader.i ], [ %1490, %.lr.ph452.i ] %.sroa.0368.0445.i = phi float [ %1469, %.lr.ph452.preheader.i ], [ %1486, %.lr.ph452.i ] %.sroa.4.0444.i = phi float [ %1470, %.lr.ph452.preheader.i ], [ %1488, %.lr.ph452.i ] - %.idx550.i = mul nuw nsw i64 %indvars.iv537.i, 12 - %1473 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx550.i + %.idx548.i = mul nuw nsw i64 %indvars.iv535.i, 12 + %1473 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx548.i %1474 = load float, ptr %1473, align 4 %1475 = fcmp olt float %.sroa.0372.0447.i, %1474 %1476 = select i1 %1475, float %.sroa.0372.0447.i, float %1474 @@ -3332,9 +3330,9 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i637: ; preds = % %1488 = select i1 %1487, float %.sroa.4.0444.i, float %1478 %1489 = fcmp ogt float %.sroa.8.0446.i, %1482 %1490 = select i1 %1489, float %.sroa.8.0446.i, float %1482 - %indvars.iv.next538.i = add nuw nsw i64 %indvars.iv537.i, 1 - %exitcond541.not.i = icmp eq i64 %indvars.iv.next538.i, %wide.trip.count540.i - br i1 %exitcond541.not.i, label %._crit_edge453.i, label %.lr.ph452.i, !llvm.loop !35 + %indvars.iv.next536.i = add nuw nsw i64 %indvars.iv535.i, 1 + %exitcond539.not.i = icmp eq i64 %indvars.iv.next536.i, %wide.trip.count538.i + br i1 %exitcond539.not.i, label %._crit_edge453.i, label %.lr.ph452.i, !llvm.loop !35 ._crit_edge453.i: ; preds = %.lr.ph452.i, %1468 %.sroa.4.0.lcssa.i = phi float [ %1470, %1468 ], [ %1488, %.lr.ph452.i ] @@ -3575,8 +3573,8 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit.us.i: ; preds = %1600, % %1613 = sext i32 %1612 to i64 %1614 = getelementptr inbounds i16, ptr %184, i64 %1613 %1615 = load i16, ptr %1614, align 2 - %.not1032 = icmp eq i16 %1615, -1 - br i1 %.not1032, label %.lr.ph.i274.us.i, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit297.us.i + %.not1033 = icmp eq i16 %1615, -1 + br i1 %.not1033, label %.lr.ph.i274.us.i, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit297.us.i .lr.ph.i274.us.i: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit.us.i, %1654 %.1100.i275.us.i = phi i16 [ %.2.i286.us.i, %1654 ], [ -1, %_ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit.us.i ] @@ -3921,13 +3919,13 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i353.us.i: ; pred _ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit359.us.i: ; preds = %1747, %.noexc404, %_ZL10distToPolyiPKfS0_.exit.us.i %1751 = add i32 %.0232460.us.i, 1 - %exitcond542.not.i = icmp eq i32 %1751, %1496 - br i1 %exitcond542.not.i, label %._crit_edge463.us.i, label %1520, !llvm.loop !37 + %exitcond540.not.i = icmp eq i32 %1751, %1496 + br i1 %exitcond540.not.i, label %._crit_edge463.us.i, label %1520, !llvm.loop !37 ._crit_edge463.us.i: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit359.us.i %1752 = add i32 %.0233464.us.i, 1 - %exitcond543.not.i = icmp eq i32 %1752, %1502 - br i1 %exitcond543.not.i, label %._crit_edge465.i, label %.preheader399.us.i, !llvm.loop !38 + %exitcond541.not.i = icmp eq i32 %1752, %1502 + br i1 %exitcond541.not.i, label %._crit_edge465.i, label %.preheader399.us.i, !llvm.loop !38 ._crit_edge465.i: ; preds = %._crit_edge463.us.i %.pre.i365 = load i64, ptr %35, align 8 @@ -3940,23 +3938,23 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit359.us.i: ; preds = %1747 .preheader.lr.ph.i: ; preds = %._crit_edge465.i %wide.trip.count.i313.i = zext nneg i32 %.0223.i804 to i64 - %wide.trip.count547.i = zext nneg i32 %1754 to i64 + %wide.trip.count545.i = zext nneg i32 %1754 to i64 %1757 = sext i32 %.2800803 to i64 br label %.lr.ph472.preheader.i .lr.ph472.preheader.i: ; preds = %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i, %.preheader.lr.ph.i - %indvars.iv981 = phi i64 [ %indvars.iv.next982, %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i ], [ %1757, %.preheader.lr.ph.i ] + %indvars.iv982 = phi i64 [ %indvars.iv.next983, %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i ], [ %1757, %.preheader.lr.ph.i ] %.0230480.i = phi i32 [ %2238, %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i ], [ 0, %.preheader.lr.ph.i ] br label %.lr.ph472.i .lr.ph472.i: ; preds = %1884, %.lr.ph472.preheader.i - %indvars.iv544.i = phi i64 [ 0, %.lr.ph472.preheader.i ], [ %indvars.iv.next545.i, %1884 ] + %indvars.iv542.i = phi i64 [ 0, %.lr.ph472.preheader.i ], [ %indvars.iv.next543.i, %1884 ] %.0226470.i = phi i32 [ -1, %.lr.ph472.preheader.i ], [ %.1227.i, %1884 ] %.0228469.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.1229.i, %1884 ] %.sroa.5.1468.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.sroa.5.2.i, %1884 ] %.sroa.3364.1467.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.sroa.3364.2.i, %1884 ] %.sroa.0363.1466.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.sroa.0363.2.i, %1884 ] - %1758 = shl nsw i64 %indvars.iv544.i, 2 + %1758 = shl nsw i64 %indvars.iv542.i, 2 %1759 = invoke noundef ptr @_Z21rcAssertFailGetCustomv() to label %.noexc405 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -3982,7 +3980,7 @@ _ZN10rcIntArrayixEi.exit.i366: ; preds = %1763, %.noexc405 1768: ; preds = %_ZN10rcIntArrayixEi.exit.i366 %1769 = load i32, ptr %1765, align 4 %1770 = sitofp i32 %1769 to float - %1771 = trunc nuw nsw i64 %indvars.iv544.i to i32 + %1771 = trunc nuw nsw i64 %indvars.iv542.i to i32 %1772 = mul i32 %1771, 45891 %1773 = and i32 %1772, 65535 %1774 = uitofp nneg i32 %1773 to float @@ -4022,11 +4020,11 @@ _ZN10rcIntArrayixEi.exit.i366: ; preds = %1763, %.noexc405 to label %.noexc408 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc408: ; preds = %1800 - %.pre549.i = load i64, ptr %33, align 8 + %.pre547.i = load i64, ptr %33, align 8 br label %_ZN10rcIntArrayixEi.exit299.i _ZN10rcIntArrayixEi.exit299.i: ; preds = %.noexc408, %.noexc407 - %1801 = phi i64 [ %1798, %.noexc407 ], [ %.pre549.i, %.noexc408 ] + %1801 = phi i64 [ %1798, %.noexc407 ], [ %.pre547.i, %.noexc408 ] %1802 = load ptr, ptr %240, align 8 %1803 = trunc i64 %1801 to i32 %1804 = icmp sgt i32 %1803, 3 @@ -4144,9 +4142,9 @@ _ZL13distToTriMeshPKfS0_iPKii.exit.i: ; preds = %_ZL9distPtTriPKfS0_ %.sroa.5.2.i = phi float [ %1795, %1883 ], [ %.sroa.5.1468.i, %_ZL13distToTriMeshPKfS0_iPKii.exit.i ], [ %.sroa.5.1468.i, %_ZN10rcIntArrayixEi.exit.i366 ] %.1229.i = phi float [ %..021.i.i, %1883 ], [ %.0228469.i, %_ZL13distToTriMeshPKfS0_iPKii.exit.i ], [ %.0228469.i, %_ZN10rcIntArrayixEi.exit.i366 ] %.1227.i = phi i32 [ %1771, %1883 ], [ %.0226470.i, %_ZL13distToTriMeshPKfS0_iPKii.exit.i ], [ %.0226470.i, %_ZN10rcIntArrayixEi.exit.i366 ] - %indvars.iv.next545.i = add nuw nsw i64 %indvars.iv544.i, 1 - %exitcond548.not.i = icmp eq i64 %indvars.iv.next545.i, %wide.trip.count547.i - br i1 %exitcond548.not.i, label %._crit_edge473.i, label %.lr.ph472.i, !llvm.loop !40 + %indvars.iv.next543.i = add nuw nsw i64 %indvars.iv542.i, 1 + %exitcond546.not.i = icmp eq i64 %indvars.iv.next543.i, %wide.trip.count545.i + br i1 %exitcond546.not.i, label %._crit_edge473.i, label %.lr.ph472.i, !llvm.loop !40 ._crit_edge473.i: ; preds = %1884 %1885 = fcmp ole float %.1229.i, %4 @@ -4180,28 +4178,28 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex %1898 = load ptr, ptr %245, align 8 %1899 = getelementptr inbounds i32, ptr %1898, i64 %1890 store i32 1, ptr %1899, align 4 - %.idx1033 = mul nsw i64 %indvars.iv981, 12 - %1900 = getelementptr inbounds i8, ptr %36, i64 %.idx1033 + %.idx1034 = mul nsw i64 %indvars.iv982, 12 + %1900 = getelementptr inbounds i8, ptr %36, i64 %.idx1034 store float %.sroa.0363.2.i, ptr %1900, align 4 %1901 = getelementptr inbounds nuw i8, ptr %1900, i64 4 store float %.sroa.3364.2.i, ptr %1901, align 4 %1902 = getelementptr inbounds nuw i8, ptr %1900, i64 8 store float %.sroa.5.2.i, ptr %1902, align 4 - %indvars.iv.next982 = add nsw i64 %indvars.iv981, 1 - %indvars = trunc i64 %indvars.iv.next982 to i32 + %indvars.iv.next983 = add nsw i64 %indvars.iv982, 1 + %indvars = trunc i64 %indvars.iv.next983 to i32 store i64 0, ptr %32, align 8 store i64 0, ptr %33, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) store i32 0, ptr %16, align 4 - %1903 = mul nsw i64 %indvars.iv.next982, 10 + %1903 = mul nsw i64 %indvars.iv.next983, 10 %1904 = mul nsw i32 %indvars, 10 - %1905 = mul nsw i64 %indvars.iv.next982, 40 - %1906 = icmp slt i64 %indvars.iv981, -1 + %1905 = mul nsw i64 %indvars.iv.next983, 40 + %1906 = icmp slt i64 %indvars.iv982, -1 br i1 %1906, label %.sink.split.i579, label %1907 1907: ; preds = %_ZN10rcIntArrayixEi.exit309.i - %.not809 = icmp eq i64 %indvars.iv.next982, 0 + %.not809 = icmp eq i64 %indvars.iv.next983, 0 br i1 %.not809, label %.noexc411, label %1908 1908: ; preds = %1907 @@ -4239,7 +4237,7 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex .noexc591: ; preds = %.noexc590 %.not.i.i583 = icmp eq ptr %1920, null - %.pre1017 = load ptr, ptr %246, align 8 + %.pre1018 = load ptr, ptr %246, align 8 br i1 %.not.i.i583, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584, label %1921 1921: ; preds = %.noexc591 @@ -4250,7 +4248,7 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex .lr.ph.i.i.i585: ; preds = %1921, %.lr.ph.i.i.i585 %.07.i.i.i586 = phi i64 [ %1927, %.lr.ph.i.i.i585 ], [ 0, %1921 ] %1924 = getelementptr inbounds nuw i32, ptr %1920, i64 %.07.i.i.i586 - %1925 = getelementptr inbounds nuw i32, ptr %.pre1017, i64 %.07.i.i.i586 + %1925 = getelementptr inbounds nuw i32, ptr %.pre1018, i64 %.07.i.i.i586 %1926 = load i32, ptr %1925, align 4 store i32 %1926, ptr %1924, align 4 %1927 = add nuw nsw i64 %.07.i.i.i586, 1 @@ -4258,11 +4256,11 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex br i1 %exitcond.not.i.i.i587, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit, label %.lr.ph.i.i.i585, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit: ; preds = %.lr.ph.i.i.i585 - %.pre1016 = load ptr, ptr %246, align 8 + %.pre1017 = load ptr, ptr %246, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit, %1921, %.noexc591 - %1928 = phi ptr [ %.pre1016, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit ], [ %.pre1017, %1921 ], [ %.pre1017, %.noexc591 ] + %1928 = phi ptr [ %.pre1017, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit ], [ %.pre1018, %1921 ], [ %.pre1018, %.noexc591 ] invoke void @_Z6rcFreePv(ptr noundef %1928) to label %.noexc592 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -4532,7 +4530,7 @@ _ZN10rcIntArrayixEi.exit117.i.i: ; preds = %2006, %.noexc422 .noexc575: ; preds = %.noexc574 %.not.i.i567 = icmp eq ptr %2031, null - %.pre1019 = load ptr, ptr %240, align 8 + %.pre1020 = load ptr, ptr %240, align 8 br i1 %.not.i.i567, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568, label %2032 2032: ; preds = %.noexc575 @@ -4543,7 +4541,7 @@ _ZN10rcIntArrayixEi.exit117.i.i: ; preds = %2006, %.noexc422 .lr.ph.i.i.i569: ; preds = %2032, %.lr.ph.i.i.i569 %.07.i.i.i570 = phi i64 [ %2038, %.lr.ph.i.i.i569 ], [ 0, %2032 ] %2035 = getelementptr inbounds nuw i32, ptr %2031, i64 %.07.i.i.i570 - %2036 = getelementptr inbounds nuw i32, ptr %.pre1019, i64 %.07.i.i.i570 + %2036 = getelementptr inbounds nuw i32, ptr %.pre1020, i64 %.07.i.i.i570 %2037 = load i32, ptr %2036, align 4 store i32 %2037, ptr %2035, align 4 %2038 = add nuw nsw i64 %.07.i.i.i570, 1 @@ -4551,11 +4549,11 @@ _ZN10rcIntArrayixEi.exit117.i.i: ; preds = %2006, %.noexc422 br i1 %exitcond.not.i.i.i571, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit, label %.lr.ph.i.i.i569, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit: ; preds = %.lr.ph.i.i.i569 - %.pre1018 = load ptr, ptr %240, align 8 + %.pre1019 = load ptr, ptr %240, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit, %2032, %.noexc575 - %2039 = phi ptr [ %.pre1018, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit ], [ %.pre1019, %2032 ], [ %.pre1019, %.noexc575 ] + %2039 = phi ptr [ %.pre1019, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit ], [ %.pre1020, %2032 ], [ %.pre1020, %.noexc575 ] invoke void @_Z6rcFreePv(ptr noundef %2039) to label %.noexc576 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -4800,10 +4798,10 @@ _ZN10rcIntArrayixEi.exit127.i.i: ; preds = %2135, %2131, %.noex %2143 = getelementptr inbounds nuw i8, ptr %2137, i64 8 %2144 = load i32, ptr %2143, align 4 %2145 = icmp eq i32 %2144, -1 - br i1 %2145, label %_ZN10rcIntArrayixEi.exit127._crit_edge.i.i, label %._crit_edge1022 + br i1 %2145, label %_ZN10rcIntArrayixEi.exit127._crit_edge.i.i, label %._crit_edge1023 -._crit_edge1022: ; preds = %2142 - %.pre1023 = load i64, ptr %33, align 8 +._crit_edge1023: ; preds = %2142 + %.pre1024 = load i64, ptr %33, align 8 %2146 = add nsw i32 %.0100171.i.i, 1 br label %.noexc445 @@ -4974,7 +4972,7 @@ _ZN10rcIntArrayixEi.exit135.i.i: ; preds = %2202, %2197, %.noex .noexc559: ; preds = %.noexc558 %.not.i.i551 = icmp eq ptr %2225, null - %.pre1021 = load ptr, ptr %240, align 8 + %.pre1022 = load ptr, ptr %240, align 8 br i1 %.not.i.i551, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552, label %2226 2226: ; preds = %.noexc559 @@ -4985,7 +4983,7 @@ _ZN10rcIntArrayixEi.exit135.i.i: ; preds = %2202, %2197, %.noex .lr.ph.i.i.i553: ; preds = %2226, %.lr.ph.i.i.i553 %.07.i.i.i554 = phi i64 [ %2232, %.lr.ph.i.i.i553 ], [ 0, %2226 ] %2229 = getelementptr inbounds nuw i32, ptr %2225, i64 %.07.i.i.i554 - %2230 = getelementptr inbounds nuw i32, ptr %.pre1021, i64 %.07.i.i.i554 + %2230 = getelementptr inbounds nuw i32, ptr %.pre1022, i64 %.07.i.i.i554 %2231 = load i32, ptr %2230, align 4 store i32 %2231, ptr %2229, align 4 %2232 = add nuw nsw i64 %.07.i.i.i554, 1 @@ -4993,11 +4991,11 @@ _ZN10rcIntArrayixEi.exit135.i.i: ; preds = %2202, %2197, %.noex br i1 %exitcond.not.i.i.i555, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit, label %.lr.ph.i.i.i553, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit: ; preds = %.lr.ph.i.i.i553 - %.pre1020 = load ptr, ptr %240, align 8 + %.pre1021 = load ptr, ptr %240, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit, %2226, %.noexc559 - %2233 = phi ptr [ %.pre1020, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit ], [ %.pre1021, %2226 ], [ %.pre1021, %.noexc559 ] + %2233 = phi ptr [ %.pre1021, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit ], [ %.pre1022, %2226 ], [ %.pre1022, %.noexc559 ] invoke void @_Z6rcFreePv(ptr noundef %2233) to label %.noexc560 unwind label %.loopexit @@ -5010,9 +5008,9 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552: ; preds = % store i64 %2209, ptr %33, align 8 br label %.noexc445 -.noexc445: ; preds = %2211, %.sink.split.i547, %._crit_edge1022 - %2234 = phi i64 [ %.pre1023, %._crit_edge1022 ], [ %2209, %.sink.split.i547 ], [ %2207, %2211 ] - %.1.i311.i = phi i32 [ %2146, %._crit_edge1022 ], [ %.0100171.i.i, %.sink.split.i547 ], [ %.0100171.i.i, %2211 ] +.noexc445: ; preds = %2211, %.sink.split.i547, %._crit_edge1023 + %2234 = phi i64 [ %.pre1024, %._crit_edge1023 ], [ %2209, %.sink.split.i547 ], [ %2207, %2211 ] + %.1.i311.i = phi i32 [ %2146, %._crit_edge1023 ], [ %.0100171.i.i, %.sink.split.i547 ], [ %.0100171.i.i, %2211 ] %2235 = trunc i64 %2234 to i32 %2236 = sdiv i32 %2235, 4 %2237 = icmp slt i32 %.1.i311.i, %2236 @@ -5023,12 +5021,12 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) %2238 = add nuw nsw i32 %.0230480.i, 1 %2239 = icmp sge i32 %2238, %1754 - %2240 = icmp sgt i64 %indvars.iv981, 125 + %2240 = icmp sgt i64 %indvars.iv982, 125 %or.cond261.i = select i1 %2239, i1 true, i1 %2240 br i1 %or.cond261.i, label %.loopexit.i363, label %.lr.ph472.preheader.i, !llvm.loop !47 .loopexit.i363.loopexit.split.loop.exit: ; preds = %._crit_edge473.i - %2241 = trunc nsw i64 %indvars.iv981 to i32 + %2241 = trunc nsw i64 %indvars.iv982 to i32 br label %.loopexit.i363 .loopexit.i363: ; preds = %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i, %.loopexit.i363.loopexit.split.loop.exit, %._crit_edge465.i, %.preheader399.lr.ph.i, %._crit_edge453.i, %1467 @@ -5076,7 +5074,7 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 .noexc543: ; preds = %.noexc542 %.not.i.i535 = icmp eq ptr %2259, null - %.pre1025 = load ptr, ptr %240, align 8 + %.pre1026 = load ptr, ptr %240, align 8 br i1 %.not.i.i535, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536, label %2260 2260: ; preds = %.noexc543 @@ -5087,7 +5085,7 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 .lr.ph.i.i.i537: ; preds = %2260, %.lr.ph.i.i.i537 %.07.i.i.i538 = phi i64 [ %2266, %.lr.ph.i.i.i537 ], [ 0, %2260 ] %2263 = getelementptr inbounds nuw i32, ptr %2259, i64 %.07.i.i.i538 - %2264 = getelementptr inbounds nuw i32, ptr %.pre1025, i64 %.07.i.i.i538 + %2264 = getelementptr inbounds nuw i32, ptr %.pre1026, i64 %.07.i.i.i538 %2265 = load i32, ptr %2264, align 4 store i32 %2265, ptr %2263, align 4 %2266 = add nuw nsw i64 %.07.i.i.i538, 1 @@ -5095,11 +5093,11 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 br i1 %exitcond.not.i.i.i539, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit, label %.lr.ph.i.i.i537, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit: ; preds = %.lr.ph.i.i.i537 - %.pre1024 = load ptr, ptr %240, align 8 + %.pre1025 = load ptr, ptr %240, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit, %2260, %.noexc543 - %2267 = phi ptr [ %.pre1024, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit ], [ %.pre1025, %2260 ], [ %.pre1025, %.noexc543 ] + %2267 = phi ptr [ %.pre1025, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit ], [ %.pre1026, %2260 ], [ %.pre1026, %.noexc543 ] invoke void @_Z6rcFreePv(ptr noundef %2267) to label %.noexc544 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -5131,19 +5129,19 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2271 = load float, ptr %232, align 8 %2272 = fadd float %2270, %2271 %2273 = load float, ptr %249, align 8 - %wide.trip.count988 = zext nneg i32 %.7 to i64 + %wide.trip.count989 = zext nneg i32 %.7 to i64 br label %2274 .preheader843: ; preds = %2274, %_ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchPfRiR10rcIntArraySC_SC_.exit br i1 %937, label %._crit_edge912, label %.lr.ph911.preheader .lr.ph911.preheader: ; preds = %.preheader843 - %wide.trip.count994 = zext i32 %.0259.lcssa to i64 + %wide.trip.count995 = zext i32 %.0259.lcssa to i64 br label %.lr.ph911 2274: ; preds = %.lr.ph909, %2274 - %indvars.iv984 = phi i64 [ 0, %.lr.ph909 ], [ %indvars.iv.next985, %2274 ] - %2275 = mul nuw nsw i64 %indvars.iv984, 3 + %indvars.iv985 = phi i64 [ 0, %.lr.ph909 ], [ %indvars.iv.next986, %2274 ] + %2275 = mul nuw nsw i64 %indvars.iv985, 3 %2276 = getelementptr inbounds nuw [768 x float], ptr %36, i64 0, i64 %2275 %2277 = load float, ptr %2276, align 4 %2278 = fadd float %2269, %2277 @@ -5158,15 +5156,15 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2285 = load float, ptr %2284, align 4 %2286 = fadd float %2273, %2285 store float %2286, ptr %2284, align 4 - %indvars.iv.next985 = add nuw nsw i64 %indvars.iv984, 1 - %exitcond989.not = icmp eq i64 %indvars.iv.next985, %wide.trip.count988 - br i1 %exitcond989.not, label %.preheader843, label %2274, !llvm.loop !48 + %indvars.iv.next986 = add nuw nsw i64 %indvars.iv985, 1 + %exitcond990.not = icmp eq i64 %indvars.iv.next986, %wide.trip.count989 + br i1 %exitcond990.not, label %.preheader843, label %2274, !llvm.loop !48 .lr.ph911: ; preds = %.lr.ph911.preheader, %.lr.ph911 - %indvars.iv990 = phi i64 [ 0, %.lr.ph911.preheader ], [ %indvars.iv.next991, %.lr.ph911 ] + %indvars.iv991 = phi i64 [ 0, %.lr.ph911.preheader ], [ %indvars.iv.next992, %.lr.ph911 ] %2287 = load float, ptr %63, align 8 - %.idx1034 = mul nuw nsw i64 %indvars.iv990, 12 - %2288 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1034 + %.idx1035 = mul nuw nsw i64 %indvars.iv991, 12 + %2288 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1035 %2289 = load float, ptr %2288, align 4 %2290 = fadd float %2287, %2289 store float %2290, ptr %2288, align 4 @@ -5180,9 +5178,9 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2297 = load float, ptr %2296, align 4 %2298 = fadd float %2295, %2297 store float %2298, ptr %2296, align 4 - %indvars.iv.next991 = add nuw nsw i64 %indvars.iv990, 1 - %exitcond995.not = icmp eq i64 %indvars.iv.next991, %wide.trip.count994 - br i1 %exitcond995.not, label %._crit_edge912, label %.lr.ph911, !llvm.loop !49 + %indvars.iv.next992 = add nuw nsw i64 %indvars.iv991, 1 + %exitcond996.not = icmp eq i64 %indvars.iv.next992, %wide.trip.count995 + br i1 %exitcond996.not, label %._crit_edge912, label %.lr.ph911, !llvm.loop !49 ._crit_edge912: ; preds = %.lr.ph911, %.preheader843 %2299 = load i64, ptr %33, align 8 @@ -5251,14 +5249,14 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP br i1 %2268, label %.lr.ph915.preheader, label %._crit_edge916 .lr.ph915.preheader: ; preds = %2334 - %wide.trip.count1000 = zext nneg i32 %.7 to i64 - %.pre1026 = load i32, ptr %193, align 4 + %wide.trip.count1001 = zext nneg i32 %.7 to i64 + %.pre1027 = load i32, ptr %193, align 4 br label %.lr.ph915 .lr.ph915: ; preds = %.lr.ph915.preheader, %.lr.ph915 - %2335 = phi i32 [ %.pre1026, %.lr.ph915.preheader ], [ %2362, %.lr.ph915 ] - %indvars.iv996 = phi i64 [ 0, %.lr.ph915.preheader ], [ %indvars.iv.next997, %.lr.ph915 ] - %2336 = mul nuw nsw i64 %indvars.iv996, 3 + %2335 = phi i32 [ %.pre1027, %.lr.ph915.preheader ], [ %2362, %.lr.ph915 ] + %indvars.iv997 = phi i64 [ 0, %.lr.ph915.preheader ], [ %indvars.iv.next998, %.lr.ph915 ] + %2336 = mul nuw nsw i64 %indvars.iv997, 3 %2337 = getelementptr inbounds nuw [768 x float], ptr %36, i64 0, i64 %2336 %2338 = load float, ptr %2337, align 4 %2339 = load ptr, ptr %210, align 8 @@ -5289,9 +5287,9 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2361 = load i32, ptr %193, align 4 %2362 = add nsw i32 %2361, 1 store i32 %2362, ptr %193, align 4 - %indvars.iv.next997 = add nuw nsw i64 %indvars.iv996, 1 - %exitcond1001.not = icmp eq i64 %indvars.iv.next997, %wide.trip.count1000 - br i1 %exitcond1001.not, label %._crit_edge916, label %.lr.ph915, !llvm.loop !50 + %indvars.iv.next998 = add nuw nsw i64 %indvars.iv997, 1 + %exitcond1002.not = icmp eq i64 %indvars.iv.next998, %wide.trip.count1001 + br i1 %exitcond1002.not, label %._crit_edge916, label %.lr.ph915, !llvm.loop !50 ._crit_edge916: ; preds = %.lr.ph915, %2334 %2363 = load i32, ptr %194, align 8 @@ -5350,12 +5348,12 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP br i1 %2388, label %.lr.ph919.preheader, label %._crit_edge920 .lr.ph919.preheader: ; preds = %2387 - %wide.trip.count1007 = zext nneg i32 %2301 to i64 + %wide.trip.count1008 = zext nneg i32 %2301 to i64 br label %.lr.ph919 .lr.ph919: ; preds = %.lr.ph919.preheader, %2395 - %indvars.iv1003 = phi i64 [ 0, %.lr.ph919.preheader ], [ %indvars.iv.next1004, %2395 ] - %2389 = shl nsw i64 %indvars.iv1003, 2 + %indvars.iv1004 = phi i64 [ 0, %.lr.ph919.preheader ], [ %indvars.iv.next1005, %2395 ] + %2389 = shl nsw i64 %indvars.iv1004, 2 %2390 = invoke noundef ptr @_Z21rcAssertFailGetCustomv() to label %.noexc450 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -5414,20 +5412,20 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2432 = load i32, ptr %194, align 8 %2433 = add nsw i32 %2432, 1 store i32 %2433, ptr %194, align 8 - %indvars.iv.next1004 = add nuw nsw i64 %indvars.iv1003, 1 - %exitcond1008.not = icmp eq i64 %indvars.iv.next1004, %wide.trip.count1007 - br i1 %exitcond1008.not, label %._crit_edge920, label %.lr.ph919, !llvm.loop !51 + %indvars.iv.next1005 = add nuw nsw i64 %indvars.iv1004, 1 + %exitcond1009.not = icmp eq i64 %indvars.iv.next1005, %wide.trip.count1008 + br i1 %exitcond1009.not, label %._crit_edge920, label %.lr.ph919, !llvm.loop !51 ._crit_edge920: ; preds = %2395, %2387 - %indvars.iv.next1010 = add nuw nsw i64 %indvars.iv1009, 1 + %indvars.iv.next1011 = add nuw nsw i64 %indvars.iv1010, 1 %2434 = load i32, ptr %53, align 4 %2435 = sext i32 %2434 to i64 - %2436 = icmp slt i64 %indvars.iv.next1010, %2435 + %2436 = icmp slt i64 %indvars.iv.next1011, %2435 br i1 %2436, label %252, label %.loopexit855, !llvm.loop !52 -.loopexit855: ; preds = %._crit_edge920, %.invoke1067, %.invoke, %.preheader854 - %.sroa.0720.4 = phi ptr [ %184, %.preheader854 ], [ %184, %.invoke ], [ null, %.invoke1067 ], [ %184, %._crit_edge920 ] - %.2 = phi i1 [ true, %.preheader854 ], [ false, %.invoke ], [ false, %.invoke1067 ], [ true, %._crit_edge920 ] +.loopexit855: ; preds = %._crit_edge920, %.invoke1068, %.invoke, %.preheader854 + %.sroa.0720.4 = phi ptr [ %184, %.preheader854 ], [ %184, %.invoke ], [ null, %.invoke1068 ], [ %184, %._crit_edge920 ] + %.2 = phi i1 [ true, %.preheader854 ], [ false, %.invoke ], [ false, %.invoke1068 ], [ true, %._crit_edge920 ] invoke void @_Z6rcFreePv(ptr noundef %98) to label %_ZN14rcScopedDeleteIfED2Ev.exit452 unwind label %2437 diff --git a/bench/ruby/optimized/transcode.ll b/bench/ruby/optimized/transcode.ll index ee0ac9af048..a5b0b8581c3 100644 --- a/bench/ruby/optimized/transcode.ll +++ b/bench/ruby/optimized/transcode.ll @@ -8071,9 +8071,9 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c i32 29, label %542 ], !llvm.loop !141 -.loopexit: ; preds = %74, %817, %792, %989, %936, %1165, %1108, %6, %651, %99, %641, %511, %382, %286, %222 - %.01129 = phi ptr [ %10, %6 ], [ %.201149, %651 ], [ %.191148, %641 ], [ %.151144, %511 ], [ %.111140, %382 ], [ %.81137, %286 ], [ %.61135, %222 ], [ %.31132, %99 ], [ %.291158, %1108 ], [ %.301159, %1165 ], [ %.261155, %936 ], [ %.271156, %989 ], [ %.221151, %792 ], [ %.231152, %817 ], [ %.21131, %74 ] - %.01093 = phi ptr [ %11, %6 ], [ %.201113, %651 ], [ %648, %641 ], [ %516, %511 ], [ %387, %382 ], [ %291, %286 ], [ %227, %222 ], [ %.31096, %99 ], [ %1113, %1108 ], [ %.301123, %1165 ], [ %939, %936 ], [ %.271120, %989 ], [ %797, %792 ], [ %.231116, %817 ], [ %.21095, %74 ] +.loopexit: ; preds = %75, %817, %792, %989, %936, %1165, %1108, %6, %651, %99, %641, %511, %382, %286, %222 + %.01129 = phi ptr [ %10, %6 ], [ %.201149, %651 ], [ %.191148, %641 ], [ %.151144, %511 ], [ %.111140, %382 ], [ %.81137, %286 ], [ %.61135, %222 ], [ %.31132, %99 ], [ %.291158, %1108 ], [ %.301159, %1165 ], [ %.261155, %936 ], [ %.271156, %989 ], [ %.221151, %792 ], [ %.231152, %817 ], [ %.21131, %75 ] + %.01093 = phi ptr [ %11, %6 ], [ %.201113, %651 ], [ %648, %641 ], [ %516, %511 ], [ %387, %382 ], [ %291, %286 ], [ %227, %222 ], [ %.31096, %99 ], [ %1113, %1108 ], [ %.301123, %1165 ], [ %939, %936 ], [ %.271120, %989 ], [ %797, %792 ], [ %.231116, %817 ], [ %.21095, %75 ] %14 = getelementptr inbounds nuw i8, ptr %4, i64 40 store i64 0, ptr %14, align 8 %15 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -8117,17 +8117,15 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c %28 = getelementptr inbounds nuw i8, ptr %4, i64 32 store i8 %27, ptr %28, align 8 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %4, i64 16 - %.pre1326 = load i32, ptr %.phi.trans.insert, align 8 + %.pre1324 = load i32, ptr %.phi.trans.insert, align 8 br label %29 29: ; preds = %189, %26 - %30 = phi i32 [ %.pre1326, %26 ], [ %194, %189 ] + %30 = phi i32 [ %.pre1324, %26 ], [ %194, %189 ] %31 = phi i8 [ %27, %26 ], [ %190, %189 ] %.01091.pn = phi ptr [ %.01091, %26 ], [ %.51134, %189 ] %.21095 = phi ptr [ %.11094, %26 ], [ %.51098, %189 ] %.1 = phi ptr [ %.01091, %26 ], [ %.4, %189 ] - %.01091.pn1322 = ptrtoint ptr %.01091.pn to i64 - %.11323 = ptrtoint ptr %.1 to i64 %.21131 = getelementptr i8, ptr %.01091.pn, i64 1 %32 = zext i8 %31 to i64 %33 = getelementptr inbounds nuw i8, ptr %7, i64 24 @@ -8172,21 +8170,22 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c %65 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 %.sink, ptr %65, align 8 %66 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %67 = getelementptr inbounds nuw i8, ptr %4, i64 40 - %68 = getelementptr inbounds nuw i8, ptr %4, i64 56 + %67 = ptrtoint ptr %.1 to i64 + %68 = getelementptr inbounds nuw i8, ptr %4, i64 40 + %69 = getelementptr inbounds nuw i8, ptr %4, i64 56 %.not.i.i = icmp eq ptr %.21131, %.1 - %69 = ptrtoint ptr %.21131 to i64 - %70 = sub i64 %69, %.11323 - %71 = getelementptr inbounds nuw i8, ptr %7, i64 104 - %72 = getelementptr inbounds nuw i8, ptr %4, i64 88 - %73 = getelementptr inbounds nuw i8, ptr %7, i64 96 - br label %74 + %70 = ptrtoint ptr %.21131 to i64 + %71 = sub i64 %70, %67 + %72 = getelementptr inbounds nuw i8, ptr %7, i64 104 + %73 = getelementptr inbounds nuw i8, ptr %4, i64 88 + %74 = getelementptr inbounds nuw i8, ptr %7, i64 96 + br label %75 -74: ; preds = %.backedge, %64 - %75 = phi i64 [ %storemerge, %.backedge ], [ %.sink, %64 ] - %76 = and i64 %75, 31 - switch i64 %76, label %1261 [ - i64 1, label %77 +75: ; preds = %.backedge, %64 + %76 = phi i64 [ %storemerge, %.backedge ], [ %.sink, %64 ] + %77 = and i64 %76, 31 + switch i64 %77, label %1261 [ + i64 1, label %78 i64 0, label %145 i64 4, label %145 i64 8, label %145 @@ -8211,57 +8210,54 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c i64 9, label %1300 ] -77: ; preds = %74 - %78 = getelementptr inbounds nuw i8, ptr %4, i64 64 - store i64 0, ptr %78, align 8 - %79 = icmp ult ptr %.1, %.21131 - br i1 %79, label %.lr.ph, label %._crit_edge - -.lr.ph: ; preds = %77 - %80 = getelementptr inbounds nuw i8, ptr %4, i64 80 - %81 = add i64 %.01091.pn1322, 1 - %82 = sub i64 %81, %.11323 - %scevgep = getelementptr i8, ptr %.1, i64 %82 - br label %83 - -83: ; preds = %.lr.ph, %92 - %.010921321 = phi ptr [ %.1, %.lr.ph ], [ %84, %92 ] - %84 = getelementptr i8, ptr %.010921321, i64 1 - %85 = load i8, ptr %.010921321, align 1 - %86 = load ptr, ptr %4, align 8 - %87 = getelementptr inbounds nuw i8, ptr %86, i64 64 - %88 = load i32, ptr %87, align 8 - %89 = icmp slt i32 %88, 9 - br i1 %89, label %92, label %90 - -90: ; preds = %83 - %91 = load ptr, ptr %80, align 8 - br label %92 - -92: ; preds = %83, %90 - %93 = phi ptr [ %91, %90 ], [ %80, %83 ] - %94 = load i64, ptr %78, align 8 - %95 = add i64 %94, 1 - store i64 %95, ptr %78, align 8 - %96 = getelementptr i8, ptr %93, i64 %94 - store i8 %85, ptr %96, align 1 - %exitcond.not = icmp eq ptr %84, %scevgep - br i1 %exitcond.not, label %._crit_edge.loopexit, label %83, !llvm.loop !142 - -._crit_edge.loopexit: ; preds = %92 - %.pre1348 = load i64, ptr %78, align 8 +78: ; preds = %75 + %79 = getelementptr inbounds nuw i8, ptr %4, i64 64 + store i64 0, ptr %79, align 8 + %80 = icmp ult ptr %.1, %.21131 + br i1 %80, label %.lr.ph, label %._crit_edge + +.lr.ph: ; preds = %78 + %81 = getelementptr inbounds nuw i8, ptr %4, i64 80 + br label %82 + +82: ; preds = %.lr.ph, %91 + %.010921321 = phi ptr [ %.1, %.lr.ph ], [ %83, %91 ] + %83 = getelementptr i8, ptr %.010921321, i64 1 + %84 = load i8, ptr %.010921321, align 1 + %85 = load ptr, ptr %4, align 8 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 64 + %87 = load i32, ptr %86, align 8 + %88 = icmp slt i32 %87, 9 + br i1 %88, label %91, label %89 + +89: ; preds = %82 + %90 = load ptr, ptr %81, align 8 + br label %91 + +91: ; preds = %82, %89 + %92 = phi ptr [ %90, %89 ], [ %81, %82 ] + %93 = load i64, ptr %79, align 8 + %94 = add i64 %93, 1 + store i64 %94, ptr %79, align 8 + %95 = getelementptr i8, ptr %92, i64 %93 + store i8 %84, ptr %95, align 1 + %96 = icmp ult ptr %83, %.21131 + br i1 %96, label %82, label %._crit_edge.loopexit, !llvm.loop !142 + +._crit_edge.loopexit: ; preds = %91 + %.pre1346 = load i64, ptr %79, align 8 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %77 - %97 = phi i64 [ %.pre1348, %._crit_edge.loopexit ], [ 0, %77 ] +._crit_edge: ; preds = %._crit_edge.loopexit, %78 + %97 = phi i64 [ %.pre1346, %._crit_edge.loopexit ], [ 0, %78 ] %98 = getelementptr inbounds nuw i8, ptr %4, i64 72 store i64 %97, ptr %98, align 8 - store i64 0, ptr %78, align 8 + store i64 0, ptr %79, align 8 br label %99 99: ; preds = %137, %._crit_edge - %100 = phi i64 [ %97, %._crit_edge ], [ %.pre1352, %137 ] - %101 = phi i64 [ 0, %._crit_edge ], [ %.pre1350, %137 ] + %100 = phi i64 [ %97, %._crit_edge ], [ %.pre1350, %137 ] + %101 = phi i64 [ 0, %._crit_edge ], [ %.pre1348, %137 ] %.31132 = phi ptr [ %.21131, %._crit_edge ], [ %.41133, %137 ] %.31096 = phi ptr [ %.21095, %._crit_edge ], [ %144, %137 ] %.2 = phi ptr [ %.1, %._crit_edge ], [ %.3, %137 ] @@ -8337,12 +8333,12 @@ rbimpl_size_mul_or_raise.exit: ; preds = %113, %119 %143 = load i8, ptr %142, align 1 %144 = getelementptr i8, ptr %.41097, i64 1 store i8 %143, ptr %.41097, align 1 - %.pre1350 = load i64, ptr %139, align 8 - %.phi.trans.insert1351 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1352 = load i64, ptr %.phi.trans.insert1351, align 8 + %.pre1348 = load i64, ptr %139, align 8 + %.phi.trans.insert1349 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1350 = load i64, ptr %.phi.trans.insert1349, align 8 br label %99, !llvm.loop !143 -145: ; preds = %74, %74, %74, %74, %74, %74, %74, %74 +145: ; preds = %75, %75, %75, %75, %75, %75, %75, %75 %146 = and i32 %5, 262144 %.not1226 = icmp eq i32 %146, 0 br i1 %.not1226, label %164, label %147 @@ -8354,7 +8350,7 @@ rbimpl_size_mul_or_raise.exit: ; preds = %113, %119 149: ; preds = %147 store i32 25, ptr %12, align 4 - %150 = icmp sgt i64 %70, 0 + %150 = icmp sgt i64 %71, 0 br i1 %150, label %151, label %161 151: ; preds = %149 @@ -8365,22 +8361,22 @@ rbimpl_size_mul_or_raise.exit: ; preds = %113, %119 br i1 %155, label %rbimpl_size_mul_or_raise.exit1236, label %156 156: ; preds = %151 - %157 = load ptr, ptr %68, align 8 + %157 = load ptr, ptr %69, align 8 br label %rbimpl_size_mul_or_raise.exit1236 rbimpl_size_mul_or_raise.exit1236: ; preds = %151, %156 - %158 = phi ptr [ %157, %156 ], [ %68, %151 ] - %159 = load i64, ptr %67, align 8 + %158 = phi ptr [ %157, %156 ], [ %69, %151 ] + %159 = load i64, ptr %68, align 8 %160 = getelementptr i8, ptr %158, i64 %159 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %160, ptr align 1 %.1, i64 %70, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %160, ptr align 1 %.1, i64 %71, i1 false) br label %161 161: ; preds = %rbimpl_size_mul_or_raise.exit1236, %149 store ptr %.21131, ptr %0, align 8 store ptr %.21095, ptr %1, align 8 - %162 = load i64, ptr %67, align 8 - %163 = add i64 %162, %70 - store i64 %163, ptr %67, align 8 + %162 = load i64, ptr %68, align 8 + %163 = add i64 %162, %71 + store i64 %163, ptr %68, align 8 br label %1428 164: ; preds = %145, %147, %6, %188 @@ -8446,10 +8442,10 @@ rbimpl_size_mul_or_raise.exit1237: ; preds = %172, %178 store i32 %194, ptr %195, align 8 br label %29 -.loopexit1313: ; preds = %74, %221 - %.61135 = phi ptr [ %10, %221 ], [ %.21131, %74 ] - %.61099 = phi ptr [ %11, %221 ], [ %.21095, %74 ] - %.5 = phi ptr [ %10, %221 ], [ %.1, %74 ] +.loopexit1313: ; preds = %75, %221 + %.61135 = phi ptr [ %10, %221 ], [ %.21131, %75 ] + %.61099 = phi ptr [ %11, %221 ], [ %.21095, %75 ] + %.5 = phi ptr [ %10, %221 ], [ %.1, %75 ] %196 = ptrtoint ptr %3 to i64 %197 = ptrtoint ptr %.61099 to i64 %198 = sub i64 %196, %197 @@ -8505,10 +8501,10 @@ rbimpl_size_mul_or_raise.exit1238: ; preds = %205, %211 store i8 %226, ptr %.61099, align 1 br label %.loopexit -.loopexit1314: ; preds = %74, %253 - %.71136 = phi ptr [ %10, %253 ], [ %.21131, %74 ] - %.71100 = phi ptr [ %11, %253 ], [ %.21095, %74 ] - %.6 = phi ptr [ %10, %253 ], [ %.1, %74 ] +.loopexit1314: ; preds = %75, %253 + %.71136 = phi ptr [ %10, %253 ], [ %.21131, %75 ] + %.71100 = phi ptr [ %11, %253 ], [ %.21095, %75 ] + %.6 = phi ptr [ %10, %253 ], [ %.1, %75 ] %228 = ptrtoint ptr %3 to i64 %229 = ptrtoint ptr %.71100 to i64 %230 = sub i64 %228, %229 @@ -8565,7 +8561,7 @@ rbimpl_size_mul_or_raise.exit1239: ; preds = %237, %243 br label %260 260: ; preds = %285, %254 - %.pre-phi = phi i64 [ %.pre1353, %285 ], [ %228, %254 ] + %.pre-phi = phi i64 [ %.pre1351, %285 ], [ %228, %254 ] %.81137 = phi ptr [ %10, %285 ], [ %.71136, %254 ] %.81101 = phi ptr [ %11, %285 ], [ %259, %254 ] %.7 = phi ptr [ %10, %285 ], [ %.6, %254 ] @@ -8612,7 +8608,7 @@ rbimpl_size_mul_or_raise.exit1240: ; preds = %269, %275 br label %1428 285: ; preds = %6 - %.pre1353 = ptrtoint ptr %3 to i64 + %.pre1351 = ptrtoint ptr %3 to i64 br label %260, !llvm.loop !147 286: ; preds = %260 @@ -8624,10 +8620,10 @@ rbimpl_size_mul_or_raise.exit1240: ; preds = %269, %275 store i8 %290, ptr %.81101, align 1 br label %.loopexit -.loopexit1315: ; preds = %74, %317 - %.91138 = phi ptr [ %10, %317 ], [ %.21131, %74 ] - %.91102 = phi ptr [ %11, %317 ], [ %.21095, %74 ] - %.8 = phi ptr [ %10, %317 ], [ %.1, %74 ] +.loopexit1315: ; preds = %75, %317 + %.91138 = phi ptr [ %10, %317 ], [ %.21131, %75 ] + %.91102 = phi ptr [ %11, %317 ], [ %.21095, %75 ] + %.8 = phi ptr [ %10, %317 ], [ %.1, %75 ] %292 = ptrtoint ptr %3 to i64 %293 = ptrtoint ptr %.91102 to i64 %294 = sub i64 %292, %293 @@ -8684,12 +8680,12 @@ rbimpl_size_mul_or_raise.exit1241: ; preds = %301, %307 br label %324 324: ; preds = %349, %318 - %.pre-phi1355 = phi i64 [ %.pre1354, %349 ], [ %292, %318 ] + %.pre-phi1353 = phi i64 [ %.pre1352, %349 ], [ %292, %318 ] %.101139 = phi ptr [ %10, %349 ], [ %.91138, %318 ] %.101103 = phi ptr [ %11, %349 ], [ %323, %318 ] %.9 = phi ptr [ %10, %349 ], [ %.8, %318 ] %325 = ptrtoint ptr %.101103 to i64 - %326 = sub i64 %.pre-phi1355, %325 + %326 = sub i64 %.pre-phi1353, %325 %327 = icmp slt i64 %326, 1 br i1 %327, label %328, label %350 @@ -8731,7 +8727,7 @@ rbimpl_size_mul_or_raise.exit1242: ; preds = %333, %339 br label %1428 349: ; preds = %6 - %.pre1354 = ptrtoint ptr %3 to i64 + %.pre1352 = ptrtoint ptr %3 to i64 br label %324, !llvm.loop !149 350: ; preds = %324 @@ -8744,12 +8740,12 @@ rbimpl_size_mul_or_raise.exit1242: ; preds = %333, %339 br label %356 356: ; preds = %381, %350 - %.pre-phi1357 = phi i64 [ %.pre1356, %381 ], [ %.pre-phi1355, %350 ] + %.pre-phi1355 = phi i64 [ %.pre1354, %381 ], [ %.pre-phi1353, %350 ] %.111140 = phi ptr [ %10, %381 ], [ %.101139, %350 ] %.111104 = phi ptr [ %11, %381 ], [ %355, %350 ] %.10 = phi ptr [ %10, %381 ], [ %.9, %350 ] %357 = ptrtoint ptr %.111104 to i64 - %358 = sub i64 %.pre-phi1357, %357 + %358 = sub i64 %.pre-phi1355, %357 %359 = icmp slt i64 %358, 1 br i1 %359, label %360, label %382 @@ -8791,7 +8787,7 @@ rbimpl_size_mul_or_raise.exit1243: ; preds = %365, %371 br label %1428 381: ; preds = %6 - %.pre1356 = ptrtoint ptr %3 to i64 + %.pre1354 = ptrtoint ptr %3 to i64 br label %356, !llvm.loop !150 382: ; preds = %356 @@ -8803,10 +8799,10 @@ rbimpl_size_mul_or_raise.exit1243: ; preds = %365, %371 store i8 %386, ptr %.111104, align 1 br label %.loopexit -.loopexit1316: ; preds = %74, %413 - %.121141 = phi ptr [ %10, %413 ], [ %.21131, %74 ] - %.121105 = phi ptr [ %11, %413 ], [ %.21095, %74 ] - %.11 = phi ptr [ %10, %413 ], [ %.1, %74 ] +.loopexit1316: ; preds = %75, %413 + %.121141 = phi ptr [ %10, %413 ], [ %.21131, %75 ] + %.121105 = phi ptr [ %11, %413 ], [ %.21095, %75 ] + %.11 = phi ptr [ %10, %413 ], [ %.1, %75 ] %388 = ptrtoint ptr %3 to i64 %389 = ptrtoint ptr %.121105 to i64 %390 = sub i64 %388, %389 @@ -8864,12 +8860,12 @@ rbimpl_size_mul_or_raise.exit1244: ; preds = %397, %403 br label %421 421: ; preds = %446, %414 - %.pre-phi1359 = phi i64 [ %.pre1358, %446 ], [ %388, %414 ] + %.pre-phi1357 = phi i64 [ %.pre1356, %446 ], [ %388, %414 ] %.131142 = phi ptr [ %10, %446 ], [ %.121141, %414 ] %.131106 = phi ptr [ %11, %446 ], [ %420, %414 ] %.12 = phi ptr [ %10, %446 ], [ %.11, %414 ] %422 = ptrtoint ptr %.131106 to i64 - %423 = sub i64 %.pre-phi1359, %422 + %423 = sub i64 %.pre-phi1357, %422 %424 = icmp slt i64 %423, 1 br i1 %424, label %425, label %447 @@ -8911,7 +8907,7 @@ rbimpl_size_mul_or_raise.exit1245: ; preds = %430, %436 br label %1428 446: ; preds = %6 - %.pre1358 = ptrtoint ptr %3 to i64 + %.pre1356 = ptrtoint ptr %3 to i64 br label %421, !llvm.loop !152 447: ; preds = %421 @@ -8924,12 +8920,12 @@ rbimpl_size_mul_or_raise.exit1245: ; preds = %430, %436 br label %453 453: ; preds = %478, %447 - %.pre-phi1361 = phi i64 [ %.pre1360, %478 ], [ %.pre-phi1359, %447 ] + %.pre-phi1359 = phi i64 [ %.pre1358, %478 ], [ %.pre-phi1357, %447 ] %.141143 = phi ptr [ %10, %478 ], [ %.131142, %447 ] %.141107 = phi ptr [ %11, %478 ], [ %452, %447 ] %.13 = phi ptr [ %10, %478 ], [ %.12, %447 ] %454 = ptrtoint ptr %.141107 to i64 - %455 = sub i64 %.pre-phi1361, %454 + %455 = sub i64 %.pre-phi1359, %454 %456 = icmp slt i64 %455, 1 br i1 %456, label %457, label %479 @@ -8971,7 +8967,7 @@ rbimpl_size_mul_or_raise.exit1246: ; preds = %462, %468 br label %1428 478: ; preds = %6 - %.pre1360 = ptrtoint ptr %3 to i64 + %.pre1358 = ptrtoint ptr %3 to i64 br label %453, !llvm.loop !153 479: ; preds = %453 @@ -8984,12 +8980,12 @@ rbimpl_size_mul_or_raise.exit1246: ; preds = %462, %468 br label %485 485: ; preds = %510, %479 - %.pre-phi1363 = phi i64 [ %.pre1362, %510 ], [ %.pre-phi1361, %479 ] + %.pre-phi1361 = phi i64 [ %.pre1360, %510 ], [ %.pre-phi1359, %479 ] %.151144 = phi ptr [ %10, %510 ], [ %.141143, %479 ] %.151108 = phi ptr [ %11, %510 ], [ %484, %479 ] %.14 = phi ptr [ %10, %510 ], [ %.13, %479 ] %486 = ptrtoint ptr %.151108 to i64 - %487 = sub i64 %.pre-phi1363, %486 + %487 = sub i64 %.pre-phi1361, %486 %488 = icmp slt i64 %487, 1 br i1 %488, label %489, label %511 @@ -9031,7 +9027,7 @@ rbimpl_size_mul_or_raise.exit1247: ; preds = %494, %500 br label %1428 510: ; preds = %6 - %.pre1362 = ptrtoint ptr %3 to i64 + %.pre1360 = ptrtoint ptr %3 to i64 br label %485, !llvm.loop !154 511: ; preds = %485 @@ -9043,10 +9039,10 @@ rbimpl_size_mul_or_raise.exit1247: ; preds = %494, %500 store i8 %515, ptr %.151108, align 1 br label %.loopexit -.loopexit1317: ; preds = %74, %542 - %.161145 = phi ptr [ %10, %542 ], [ %.21131, %74 ] - %.161109 = phi ptr [ %11, %542 ], [ %.21095, %74 ] - %.15 = phi ptr [ %10, %542 ], [ %.1, %74 ] +.loopexit1317: ; preds = %75, %542 + %.161145 = phi ptr [ %10, %542 ], [ %.21131, %75 ] + %.161109 = phi ptr [ %11, %542 ], [ %.21095, %75 ] + %.15 = phi ptr [ %10, %542 ], [ %.1, %75 ] %517 = ptrtoint ptr %3 to i64 %518 = ptrtoint ptr %.161109 to i64 %519 = sub i64 %517, %518 @@ -9103,12 +9099,12 @@ rbimpl_size_mul_or_raise.exit1248: ; preds = %526, %532 br label %549 549: ; preds = %574, %543 - %.pre-phi1365 = phi i64 [ %.pre1364, %574 ], [ %517, %543 ] + %.pre-phi1363 = phi i64 [ %.pre1362, %574 ], [ %517, %543 ] %.171146 = phi ptr [ %10, %574 ], [ %.161145, %543 ] %.171110 = phi ptr [ %11, %574 ], [ %548, %543 ] %.16 = phi ptr [ %10, %574 ], [ %.15, %543 ] %550 = ptrtoint ptr %.171110 to i64 - %551 = sub i64 %.pre-phi1365, %550 + %551 = sub i64 %.pre-phi1363, %550 %552 = icmp slt i64 %551, 1 br i1 %552, label %553, label %575 @@ -9150,7 +9146,7 @@ rbimpl_size_mul_or_raise.exit1249: ; preds = %558, %564 br label %1428 574: ; preds = %6 - %.pre1364 = ptrtoint ptr %3 to i64 + %.pre1362 = ptrtoint ptr %3 to i64 br label %549, !llvm.loop !156 575: ; preds = %549 @@ -9165,12 +9161,12 @@ rbimpl_size_mul_or_raise.exit1249: ; preds = %558, %564 br label %583 583: ; preds = %608, %575 - %.pre-phi1367 = phi i64 [ %.pre1366, %608 ], [ %.pre-phi1365, %575 ] + %.pre-phi1365 = phi i64 [ %.pre1364, %608 ], [ %.pre-phi1363, %575 ] %.181147 = phi ptr [ %10, %608 ], [ %.171146, %575 ] %.181111 = phi ptr [ %11, %608 ], [ %582, %575 ] %.17 = phi ptr [ %10, %608 ], [ %.16, %575 ] %584 = ptrtoint ptr %.181111 to i64 - %585 = sub i64 %.pre-phi1367, %584 + %585 = sub i64 %.pre-phi1365, %584 %586 = icmp slt i64 %585, 1 br i1 %586, label %587, label %609 @@ -9212,7 +9208,7 @@ rbimpl_size_mul_or_raise.exit1250: ; preds = %592, %598 br label %1428 608: ; preds = %6 - %.pre1366 = ptrtoint ptr %3 to i64 + %.pre1364 = ptrtoint ptr %3 to i64 br label %583, !llvm.loop !157 609: ; preds = %583 @@ -9225,12 +9221,12 @@ rbimpl_size_mul_or_raise.exit1250: ; preds = %592, %598 br label %615 615: ; preds = %640, %609 - %.pre-phi1369 = phi i64 [ %.pre1368, %640 ], [ %.pre-phi1367, %609 ] + %.pre-phi1367 = phi i64 [ %.pre1366, %640 ], [ %.pre-phi1365, %609 ] %.191148 = phi ptr [ %10, %640 ], [ %.181147, %609 ] %.191112 = phi ptr [ %11, %640 ], [ %614, %609 ] %.18 = phi ptr [ %10, %640 ], [ %.17, %609 ] %616 = ptrtoint ptr %.191112 to i64 - %617 = sub i64 %.pre-phi1369, %616 + %617 = sub i64 %.pre-phi1367, %616 %618 = icmp slt i64 %617, 1 br i1 %618, label %619, label %641 @@ -9272,7 +9268,7 @@ rbimpl_size_mul_or_raise.exit1251: ; preds = %624, %630 br label %1428 640: ; preds = %6 - %.pre1368 = ptrtoint ptr %3 to i64 + %.pre1366 = ptrtoint ptr %3 to i64 br label %615, !llvm.loop !158 641: ; preds = %615 @@ -9286,13 +9282,13 @@ rbimpl_size_mul_or_raise.exit1251: ; preds = %624, %630 store i8 %647, ptr %.191112, align 1 br label %.loopexit -649: ; preds = %74 +649: ; preds = %75 %650 = getelementptr inbounds nuw i8, ptr %4, i64 36 store i32 0, ptr %650, align 4 br label %651 651: ; preds = %689, %649 - %652 = phi i64 [ %75, %649 ], [ %.pre1347, %689 ] + %652 = phi i64 [ %76, %649 ], [ %.pre1345, %689 ] %653 = phi i32 [ 0, %649 ], [ %704, %689 ] %.201149 = phi ptr [ %.21131, %649 ], [ %.211150, %689 ] %.201113 = phi ptr [ %.21095, %649 ], [ %702, %689 ] @@ -9375,11 +9371,11 @@ rbimpl_size_mul_or_raise.exit1252: ; preds = %672, %678 %703 = load i32, ptr %696, align 4 %704 = add i32 %703, 1 store i32 %704, ptr %696, align 4 - %.pre1347 = load i64, ptr %692, align 8 + %.pre1345 = load i64, ptr %692, align 8 br label %651, !llvm.loop !160 -705: ; preds = %74 - %706 = load ptr, ptr %73, align 8 +705: ; preds = %75 + %706 = load ptr, ptr %74, align 8 %707 = load ptr, ptr %4, align 8 %708 = getelementptr inbounds nuw i8, ptr %707, i64 72 %709 = load i64, ptr %708, align 8 @@ -9387,24 +9383,24 @@ rbimpl_size_mul_or_raise.exit1252: ; preds = %672, %678 br i1 %710, label %713, label %711 711: ; preds = %705 - %712 = load ptr, ptr %72, align 8 + %712 = load ptr, ptr %73, align 8 br label %713 713: ; preds = %705, %711 - %714 = phi ptr [ %712, %711 ], [ %72, %705 ] - %715 = tail call i64 %706(ptr noundef %714, i64 noundef %75) #21 + %714 = phi ptr [ %712, %711 ], [ %73, %705 ] + %715 = tail call i64 %706(ptr noundef %714, i64 noundef %76) #21 br label %.backedge .backedge: ; preds = %713, %749 %storemerge = phi i64 [ %751, %749 ], [ %715, %713 ] store i64 %storemerge, ptr %66, align 8 - br label %74 + br label %75 -716: ; preds = %74 +716: ; preds = %75 %717 = load ptr, ptr %0, align 8 %718 = ptrtoint ptr %717 to i64 - %719 = sub i64 %.11323, %718 - %720 = load i64, ptr %67, align 8 + %719 = sub i64 %67, %718 + %720 = load i64, ptr %68, align 8 %721 = icmp slt i64 %719, %720 br i1 %721, label %722, label %737 @@ -9416,16 +9412,16 @@ rbimpl_size_mul_or_raise.exit1252: ; preds = %672, %678 br i1 %726, label %rbimpl_size_mul_or_raise.exit.i, label %727 727: ; preds = %722 - %728 = load ptr, ptr %68, align 8 + %728 = load ptr, ptr %69, align 8 br label %rbimpl_size_mul_or_raise.exit.i rbimpl_size_mul_or_raise.exit.i: ; preds = %727, %722 - %729 = phi ptr [ %728, %727 ], [ %68, %722 ] + %729 = phi ptr [ %728, %727 ], [ %69, %722 ] br i1 %.not.i.i, label %ruby_nonempty_memcpy.exit.i, label %730 730: ; preds = %rbimpl_size_mul_or_raise.exit.i %731 = getelementptr i8, ptr %729, i64 %720 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %731, ptr readonly align 1 %.1, i64 %70, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %731, ptr readonly align 1 %.1, i64 %71, i1 false) %.pre.i = load ptr, ptr %4, align 8 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i, i64 60 %.pre21.i = load i32, ptr %.phi.trans.insert.i, align 4 @@ -9438,39 +9434,39 @@ ruby_nonempty_memcpy.exit.i: ; preds = %730, %rbimpl_size_m br i1 %734, label %transcode_char_start.exit, label %735 735: ; preds = %ruby_nonempty_memcpy.exit.i - %736 = load ptr, ptr %68, align 8 + %736 = load ptr, ptr %69, align 8 br label %transcode_char_start.exit 737: ; preds = %716 %738 = sub i64 0, %720 %739 = getelementptr i8, ptr %.1, i64 %738 - %.pre1345 = load ptr, ptr %4, align 8 + %.pre1343 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit transcode_char_start.exit: ; preds = %ruby_nonempty_memcpy.exit.i, %735, %737 - %740 = phi ptr [ %.pre1345, %737 ], [ %732, %735 ], [ %732, %ruby_nonempty_memcpy.exit.i ] - %.0.i = phi ptr [ %739, %737 ], [ %736, %735 ], [ %68, %ruby_nonempty_memcpy.exit.i ] - %741 = load i64, ptr %67, align 8 - %742 = add i64 %70, %741 - %743 = load ptr, ptr %71, align 8 + %740 = phi ptr [ %.pre1343, %737 ], [ %732, %735 ], [ %732, %ruby_nonempty_memcpy.exit.i ] + %.0.i = phi ptr [ %739, %737 ], [ %736, %735 ], [ %69, %ruby_nonempty_memcpy.exit.i ] + %741 = load i64, ptr %68, align 8 + %742 = add i64 %71, %741 + %743 = load ptr, ptr %72, align 8 %744 = getelementptr inbounds nuw i8, ptr %740, i64 72 %745 = load i64, ptr %744, align 8 %746 = icmp ult i64 %745, 9 br i1 %746, label %749, label %747 747: ; preds = %transcode_char_start.exit - %748 = load ptr, ptr %72, align 8 + %748 = load ptr, ptr %73, align 8 br label %749 749: ; preds = %transcode_char_start.exit, %747 - %750 = phi ptr [ %748, %747 ], [ %72, %transcode_char_start.exit ] + %750 = phi ptr [ %748, %747 ], [ %73, %transcode_char_start.exit ] %751 = tail call i64 %743(ptr noundef %750, ptr noundef %.0.i, i64 noundef %742) #21 br label %.backedge -.loopexit1318: ; preds = %74, %777 - %.221151 = phi ptr [ %10, %777 ], [ %.21131, %74 ] - %.221115 = phi ptr [ %11, %777 ], [ %.21095, %74 ] - %.21 = phi ptr [ %10, %777 ], [ %.1, %74 ] +.loopexit1318: ; preds = %75, %777 + %.221151 = phi ptr [ %10, %777 ], [ %.21131, %75 ] + %.221115 = phi ptr [ %11, %777 ], [ %.21095, %75 ] + %.21 = phi ptr [ %10, %777 ], [ %.1, %75 ] %752 = ptrtoint ptr %3 to i64 %753 = ptrtoint ptr %.221115 to i64 %754 = sub i64 %752, %753 @@ -9579,8 +9575,8 @@ rbimpl_size_mul_or_raise.exit1253: ; preds = %761, %767 br label %817 817: ; preds = %856, %812 - %818 = phi i64 [ %814, %812 ], [ %.pre1344, %856 ] - %819 = phi i64 [ 0, %812 ], [ %.pre1342, %856 ] + %818 = phi i64 [ %814, %812 ], [ %.pre1342, %856 ] + %819 = phi i64 [ 0, %812 ], [ %.pre1340, %856 ] %.231152 = phi ptr [ %.221151, %812 ], [ %.241153, %856 ] %.231116 = phi ptr [ %.221115, %812 ], [ %863, %856 ] %.22 = phi ptr [ %.21, %812 ], [ %.23, %856 ] @@ -9659,15 +9655,15 @@ rbimpl_size_mul_or_raise.exit1254: ; preds = %831, %837 %862 = load i8, ptr %861, align 1 %863 = getelementptr i8, ptr %.241117, i64 1 store i8 %862, ptr %.241117, align 1 - %.pre1342 = load i64, ptr %858, align 8 - %.phi.trans.insert1343 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1344 = load i64, ptr %.phi.trans.insert1343, align 8 + %.pre1340 = load i64, ptr %858, align 8 + %.phi.trans.insert1341 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1342 = load i64, ptr %.phi.trans.insert1341, align 8 br label %817, !llvm.loop !163 -.loopexit1319: ; preds = %74, %889 - %.261155 = phi ptr [ %10, %889 ], [ %.21131, %74 ] - %.261119 = phi ptr [ %11, %889 ], [ %.21095, %74 ] - %.24 = phi ptr [ %10, %889 ], [ %.1, %74 ] +.loopexit1319: ; preds = %75, %889 + %.261155 = phi ptr [ %10, %889 ], [ %.21131, %75 ] + %.261119 = phi ptr [ %11, %889 ], [ %.21095, %75 ] + %.24 = phi ptr [ %10, %889 ], [ %.1, %75 ] %864 = ptrtoint ptr %3 to i64 %865 = ptrtoint ptr %.261119 to i64 %866 = sub i64 %864, %865 @@ -9771,11 +9767,11 @@ ruby_nonempty_memcpy.exit.i1262: ; preds = %911, %rbimpl_size_m 920: ; preds = %901 %921 = sub i64 0, %899 %922 = getelementptr i8, ptr %.24, i64 %921 - %.pre1335 = load ptr, ptr %4, align 8 + %.pre1333 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1263 transcode_char_start.exit1263: ; preds = %ruby_nonempty_memcpy.exit.i1262, %918, %920 - %923 = phi ptr [ %.pre1335, %920 ], [ %915, %918 ], [ %915, %ruby_nonempty_memcpy.exit.i1262 ] + %923 = phi ptr [ %.pre1333, %920 ], [ %915, %918 ], [ %915, %ruby_nonempty_memcpy.exit.i1262 ] %.0.i1256 = phi ptr [ %922, %920 ], [ %919, %918 ], [ %907, %ruby_nonempty_memcpy.exit.i1262 ] %924 = load i64, ptr %898, align 8 %925 = ptrtoint ptr %.261155 to i64 @@ -9842,11 +9838,11 @@ ruby_nonempty_memcpy.exit.i1270: ; preds = %950, %rbimpl_size_m 959: ; preds = %940 %960 = sub i64 0, %899 %961 = getelementptr i8, ptr %.24, i64 %960 - %.pre1336 = load ptr, ptr %4, align 8 + %.pre1334 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1271 transcode_char_start.exit1271: ; preds = %ruby_nonempty_memcpy.exit.i1270, %957, %959 - %962 = phi ptr [ %.pre1336, %959 ], [ %954, %957 ], [ %954, %ruby_nonempty_memcpy.exit.i1270 ] + %962 = phi ptr [ %.pre1334, %959 ], [ %954, %957 ], [ %954, %ruby_nonempty_memcpy.exit.i1270 ] %.0.i1264 = phi ptr [ %961, %959 ], [ %958, %957 ], [ %946, %ruby_nonempty_memcpy.exit.i1270 ] %963 = load i64, ptr %898, align 8 %964 = ptrtoint ptr %.261155 to i64 @@ -9888,8 +9884,8 @@ transcode_char_start.exit1271: ; preds = %ruby_nonempty_memcp br label %989 989: ; preds = %1028, %984 - %990 = phi i64 [ %986, %984 ], [ %.pre1340, %1028 ] - %991 = phi i64 [ 0, %984 ], [ %.pre1338, %1028 ] + %990 = phi i64 [ %986, %984 ], [ %.pre1338, %1028 ] + %991 = phi i64 [ 0, %984 ], [ %.pre1336, %1028 ] %.271156 = phi ptr [ %.261155, %984 ], [ %.281157, %1028 ] %.271120 = phi ptr [ %.261119, %984 ], [ %1035, %1028 ] %.25 = phi ptr [ %.24, %984 ], [ %.26, %1028 ] @@ -9968,15 +9964,15 @@ rbimpl_size_mul_or_raise.exit1272: ; preds = %1003, %1009 %1034 = load i8, ptr %1033, align 1 %1035 = getelementptr i8, ptr %.281121, i64 1 store i8 %1034, ptr %.281121, align 1 - %.pre1338 = load i64, ptr %1030, align 8 - %.phi.trans.insert1339 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1340 = load i64, ptr %.phi.trans.insert1339, align 8 + %.pre1336 = load i64, ptr %1030, align 8 + %.phi.trans.insert1337 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1338 = load i64, ptr %.phi.trans.insert1337, align 8 br label %989, !llvm.loop !166 -.loopexit1320: ; preds = %74, %1061 - %.291158 = phi ptr [ %10, %1061 ], [ %.21131, %74 ] - %.291122 = phi ptr [ %11, %1061 ], [ %.21095, %74 ] - %.27 = phi ptr [ %10, %1061 ], [ %.1, %74 ] +.loopexit1320: ; preds = %75, %1061 + %.291158 = phi ptr [ %10, %1061 ], [ %.21131, %75 ] + %.291122 = phi ptr [ %11, %1061 ], [ %.21095, %75 ] + %.27 = phi ptr [ %10, %1061 ], [ %.1, %75 ] %1036 = ptrtoint ptr %3 to i64 %1037 = ptrtoint ptr %.291122 to i64 %1038 = sub i64 %1036, %1037 @@ -10080,11 +10076,11 @@ ruby_nonempty_memcpy.exit.i1280: ; preds = %1083, %rbimpl_size_ 1092: ; preds = %1073 %1093 = sub i64 0, %1071 %1094 = getelementptr i8, ptr %.27, i64 %1093 - %.pre1329 = load ptr, ptr %4, align 8 + %.pre1327 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1281 transcode_char_start.exit1281: ; preds = %ruby_nonempty_memcpy.exit.i1280, %1090, %1092 - %1095 = phi ptr [ %.pre1329, %1092 ], [ %1087, %1090 ], [ %1087, %ruby_nonempty_memcpy.exit.i1280 ] + %1095 = phi ptr [ %.pre1327, %1092 ], [ %1087, %1090 ], [ %1087, %ruby_nonempty_memcpy.exit.i1280 ] %.0.i1274 = phi ptr [ %1094, %1092 ], [ %1091, %1090 ], [ %1079, %ruby_nonempty_memcpy.exit.i1280 ] %1096 = load i64, ptr %1070, align 8 %1097 = ptrtoint ptr %.291158 to i64 @@ -10153,11 +10149,11 @@ ruby_nonempty_memcpy.exit.i1288: ; preds = %1124, %rbimpl_size_ 1133: ; preds = %1114 %1134 = sub i64 0, %1071 %1135 = getelementptr i8, ptr %.27, i64 %1134 - %.pre1330 = load ptr, ptr %4, align 8 + %.pre1328 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1289 transcode_char_start.exit1289: ; preds = %ruby_nonempty_memcpy.exit.i1288, %1131, %1133 - %1136 = phi ptr [ %.pre1330, %1133 ], [ %1128, %1131 ], [ %1128, %ruby_nonempty_memcpy.exit.i1288 ] + %1136 = phi ptr [ %.pre1328, %1133 ], [ %1128, %1131 ], [ %1128, %ruby_nonempty_memcpy.exit.i1288 ] %.0.i1282 = phi ptr [ %1135, %1133 ], [ %1132, %1131 ], [ %1120, %ruby_nonempty_memcpy.exit.i1288 ] %1137 = load i64, ptr %1070, align 8 %1138 = ptrtoint ptr %.291158 to i64 @@ -10201,8 +10197,8 @@ transcode_char_start.exit1289: ; preds = %ruby_nonempty_memcp br label %1165 1165: ; preds = %1204, %1160 - %1166 = phi i64 [ %1162, %1160 ], [ %.pre1334, %1204 ] - %1167 = phi i64 [ 0, %1160 ], [ %.pre1332, %1204 ] + %1166 = phi i64 [ %1162, %1160 ], [ %.pre1332, %1204 ] + %1167 = phi i64 [ 0, %1160 ], [ %.pre1330, %1204 ] %.301159 = phi ptr [ %.291158, %1160 ], [ %.311160, %1204 ] %.301123 = phi ptr [ %.291122, %1160 ], [ %1211, %1204 ] %.28 = phi ptr [ %.27, %1160 ], [ %.29, %1204 ] @@ -10281,14 +10277,14 @@ rbimpl_size_mul_or_raise.exit1290: ; preds = %1179, %1185 %1210 = load i8, ptr %1209, align 1 %1211 = getelementptr i8, ptr %.311124, i64 1 store i8 %1210, ptr %.311124, align 1 - %.pre1332 = load i64, ptr %1206, align 8 - %.phi.trans.insert1333 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1334 = load i64, ptr %.phi.trans.insert1333, align 8 + %.pre1330 = load i64, ptr %1206, align 8 + %.phi.trans.insert1331 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1332 = load i64, ptr %.phi.trans.insert1331, align 8 br label %1165, !llvm.loop !169 -1212: ; preds = %74 - %1213 = load i64, ptr %67, align 8 - %1214 = add i64 %1213, %70 +1212: ; preds = %75 + %1213 = load i64, ptr %68, align 8 + %1214 = add i64 %1213, %71 %.fr1217 = freeze i64 %1214 %1215 = sext i32 %9 to i64 %.not1216 = icmp sgt i64 %.fr1217, %1215 @@ -10308,7 +10304,7 @@ rbimpl_size_mul_or_raise.exit1290: ; preds = %1179, %1185 1221: ; preds = %1219 store i32 26, ptr %12, align 4 - %1222 = icmp sgt i64 %70, 0 + %1222 = icmp sgt i64 %71, 0 br i1 %1222, label %1223, label %1232 1223: ; preds = %1221 @@ -10319,21 +10315,21 @@ rbimpl_size_mul_or_raise.exit1290: ; preds = %1179, %1185 br i1 %1227, label %rbimpl_size_mul_or_raise.exit1291, label %1228 1228: ; preds = %1223 - %1229 = load ptr, ptr %68, align 8 + %1229 = load ptr, ptr %69, align 8 br label %rbimpl_size_mul_or_raise.exit1291 rbimpl_size_mul_or_raise.exit1291: ; preds = %1223, %1228 - %1230 = phi ptr [ %1229, %1228 ], [ %68, %1223 ] + %1230 = phi ptr [ %1229, %1228 ], [ %69, %1223 ] %1231 = getelementptr i8, ptr %1230, i64 %1213 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1231, ptr align 1 %.1, i64 %70, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1231, ptr align 1 %.1, i64 %71, i1 false) br label %1232 1232: ; preds = %rbimpl_size_mul_or_raise.exit1291, %1221 store ptr %.21131, ptr %0, align 8 store ptr %.21095, ptr %1, align 8 - %1233 = load i64, ptr %67, align 8 - %1234 = add i64 %1233, %70 - store i64 %1234, ptr %67, align 8 + %1233 = load i64, ptr %68, align 8 + %1234 = add i64 %1233, %71 + store i64 %1234, ptr %68, align 8 br label %1428 1235: ; preds = %1216, %6, %1219, %1253 @@ -10341,20 +10337,20 @@ rbimpl_size_mul_or_raise.exit1291: ; preds = %1223, %1228 %.30 = phi ptr [ %.1, %1219 ], [ %.1, %1216 ], [ %10, %6 ], [ %10, %1253 ] %1236 = and i32 %5, 131072 %.not1220 = icmp ne i32 %1236, 0 - %.phi.trans.insert1327 = getelementptr inbounds nuw i8, ptr %4, i64 40 - %.pre1328 = load i64, ptr %.phi.trans.insert1327, align 8 - %.pre1375 = ptrtoint ptr %2 to i64 - %.pre1377 = ptrtoint ptr %.30 to i64 - %.pre1379 = sub i64 %.pre1375, %.pre1377 - %.pre1381 = add i64 %.pre1379, %.pre1328 - %.pre1383 = sext i32 %9 to i64 - %1237 = icmp slt i64 %.pre1381, %.pre1383 - %or.cond1400 = select i1 %.not1220, i1 %1237, i1 false - br i1 %or.cond1400, label %1238, label %.critedge + %.phi.trans.insert1325 = getelementptr inbounds nuw i8, ptr %4, i64 40 + %.pre1326 = load i64, ptr %.phi.trans.insert1325, align 8 + %.pre1373 = ptrtoint ptr %2 to i64 + %.pre1375 = ptrtoint ptr %.30 to i64 + %.pre1377 = sub i64 %.pre1373, %.pre1375 + %.pre1379 = add i64 %.pre1377, %.pre1326 + %.pre1381 = sext i32 %9 to i64 + %1237 = icmp slt i64 %.pre1379, %.pre1381 + %or.cond1398 = select i1 %.not1220, i1 %1237, i1 false + br i1 %or.cond1398, label %1238, label %.critedge 1238: ; preds = %1235 store i32 8, ptr %12, align 4 - %1239 = icmp sgt i64 %.pre1379, 0 + %1239 = icmp sgt i64 %.pre1377, 0 br i1 %1239, label %1240, label %1250 1240: ; preds = %1238 @@ -10371,27 +10367,27 @@ rbimpl_size_mul_or_raise.exit1291: ; preds = %1223, %1228 rbimpl_size_mul_or_raise.exit1292: ; preds = %1240, %1246 %1248 = phi ptr [ %1247, %1246 ], [ %1245, %1240 ] - %1249 = getelementptr i8, ptr %1248, i64 %.pre1328 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1249, ptr align 1 %.30, i64 %.pre1379, i1 false) + %1249 = getelementptr i8, ptr %1248, i64 %.pre1326 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1249, ptr align 1 %.30, i64 %.pre1377, i1 false) br label %1250 1250: ; preds = %rbimpl_size_mul_or_raise.exit1292, %1238 store ptr %2, ptr %0, align 8 store ptr %.321125, ptr %1, align 8 - %1251 = load i64, ptr %.phi.trans.insert1327, align 8 - %1252 = add i64 %1251, %.pre1379 - store i64 %1252, ptr %.phi.trans.insert1327, align 8 + %1251 = load i64, ptr %.phi.trans.insert1325, align 8 + %1252 = add i64 %1251, %.pre1377 + store i64 %1252, ptr %.phi.trans.insert1325, align 8 br label %1428 1253: ; preds = %6 br label %1235, !llvm.loop !170 .critedge: ; preds = %1235 - %.not1221 = icmp sgt i64 %.pre1381, %.pre1383 + %.not1221 = icmp sgt i64 %.pre1379, %.pre1381 br i1 %.not1221, label %1254, label %1263 1254: ; preds = %.critedge - %1255 = sub i64 %.pre1383, %.pre1328 + %1255 = sub i64 %.pre1381, %.pre1326 %1256 = getelementptr i8, ptr %.30, i64 %1255 br label %1263 @@ -10401,20 +10397,20 @@ rbimpl_size_mul_or_raise.exit1292: ; preds = %1240, %1246 %1260 = add nsw i64 %1259, 1 br label %1263 -1261: ; preds = %74 +1261: ; preds = %75 %1262 = load i64, ptr @rb_eRuntimeError, align 8 tail call void (i64, ptr, ...) @rb_raise(i64 noundef %1262, ptr noundef nonnull @.str.79) #22 unreachable 1263: ; preds = %.critedge, %1254, %1257 - %.pre-phi1374 = phi i64 [ %.pre1379, %.critedge ], [ %1255, %1254 ], [ %70, %1257 ] - %1264 = phi i64 [ %.pre1328, %.critedge ], [ %.pre1328, %1254 ], [ %1213, %1257 ] + %.pre-phi1372 = phi i64 [ %.pre1377, %.critedge ], [ %1255, %1254 ], [ %71, %1257 ] + %1264 = phi i64 [ %.pre1326, %.critedge ], [ %.pre1326, %1254 ], [ %1213, %1257 ] %.321161 = phi ptr [ %2, %.critedge ], [ %1256, %1254 ], [ %.21131, %1257 ] %.331126 = phi ptr [ %.321125, %.critedge ], [ %.321125, %1254 ], [ %.21095, %1257 ] %.31 = phi ptr [ %.30, %.critedge ], [ %.30, %1254 ], [ %.1, %1257 ] %.01090 = phi i64 [ 0, %.critedge ], [ 0, %1254 ], [ %1260, %1257 ] store i32 1, ptr %12, align 4 - %1265 = icmp sgt i64 %.pre-phi1374, 0 + %1265 = icmp sgt i64 %.pre-phi1372, 0 br i1 %1265, label %1266, label %1276 1266: ; preds = %1263 @@ -10432,7 +10428,7 @@ rbimpl_size_mul_or_raise.exit1292: ; preds = %1240, %1246 rbimpl_size_mul_or_raise.exit1293: ; preds = %1266, %1272 %1274 = phi ptr [ %1273, %1272 ], [ %1271, %1266 ] %1275 = getelementptr i8, ptr %1274, i64 %1264 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1275, ptr align 1 %.31, i64 %.pre-phi1374, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1275, ptr align 1 %.31, i64 %.pre-phi1372, i1 false) br label %1276 1276: ; preds = %rbimpl_size_mul_or_raise.exit1293, %1263 @@ -10440,7 +10436,7 @@ rbimpl_size_mul_or_raise.exit1293: ; preds = %1266, %1272 store ptr %.331126, ptr %1, align 8 %1277 = getelementptr inbounds nuw i8, ptr %4, i64 40 %1278 = load i64, ptr %1277, align 8 - %1279 = add i64 %1278, %.pre-phi1374 + %1279 = add i64 %1278, %.pre-phi1372 store i64 %1279, ptr %1277, align 8 %.not1222 = icmp eq i64 %.01090, 0 br i1 %.not1222, label %1428, label %1280 @@ -10485,9 +10481,9 @@ rbimpl_size_mul_or_raise.exit1294: ; preds = %1284, %1290 store i64 %1299, ptr %1297, align 8 br label %1428 -1300: ; preds = %74 +1300: ; preds = %75 store i32 2, ptr %12, align 4 - %1301 = icmp sgt i64 %70, 0 + %1301 = icmp sgt i64 %71, 0 br i1 %1301, label %1302, label %1312 1302: ; preds = %1300 @@ -10498,22 +10494,22 @@ rbimpl_size_mul_or_raise.exit1294: ; preds = %1284, %1290 br i1 %1306, label %rbimpl_size_mul_or_raise.exit1295, label %1307 1307: ; preds = %1302 - %1308 = load ptr, ptr %68, align 8 + %1308 = load ptr, ptr %69, align 8 br label %rbimpl_size_mul_or_raise.exit1295 rbimpl_size_mul_or_raise.exit1295: ; preds = %1302, %1307 - %1309 = phi ptr [ %1308, %1307 ], [ %68, %1302 ] - %1310 = load i64, ptr %67, align 8 + %1309 = phi ptr [ %1308, %1307 ], [ %69, %1302 ] + %1310 = load i64, ptr %68, align 8 %1311 = getelementptr i8, ptr %1309, i64 %1310 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1311, ptr align 1 %.1, i64 %70, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1311, ptr align 1 %.1, i64 %71, i1 false) br label %1312 1312: ; preds = %rbimpl_size_mul_or_raise.exit1295, %1300 store ptr %.21131, ptr %0, align 8 store ptr %.21095, ptr %1, align 8 - %1313 = load i64, ptr %67, align 8 - %1314 = add i64 %1313, %70 - store i64 %1314, ptr %67, align 8 + %1313 = load i64, ptr %68, align 8 + %1314 = add i64 %1313, %71 + store i64 %1314, ptr %68, align 8 br label %1428 1315: ; preds = %23 @@ -10598,7 +10594,7 @@ rbimpl_size_mul_or_raise.exit1295: ; preds = %1302, %1307 br label %1360 1360: ; preds = %1399, %1355 - %1361 = phi i64 [ %1357, %1355 ], [ %.pre1325, %1399 ] + %1361 = phi i64 [ %1357, %1355 ], [ %.pre1323, %1399 ] %1362 = phi i64 [ 0, %1355 ], [ %.pre, %1399 ] %.341163 = phi ptr [ %.32, %1355 ], [ %.351164, %1399 ] %.351128 = phi ptr [ %.341127, %1355 ], [ %1406, %1399 ] @@ -10679,8 +10675,8 @@ rbimpl_size_mul_or_raise.exit1296: ; preds = %1374, %1380 %1406 = getelementptr i8, ptr %.36, i64 1 store i8 %1405, ptr %.36, align 1 %.pre = load i64, ptr %1401, align 8 - %.phi.trans.insert1324 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1325 = load i64, ptr %.phi.trans.insert1324, align 8 + %.phi.trans.insert1322 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1323 = load i64, ptr %.phi.trans.insert1322, align 8 br label %1360, !llvm.loop !173 1407: ; preds = %6, %1339, %1360, %1315 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index b44c7aebc18..5712109fd94 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -1524,7 +1524,7 @@ target triple = "x86_64-pc-linux-gnu" @.str.1195 = private unnamed_addr constant [4 x i8] c"50f\00", align 1 @.str.1196 = private unnamed_addr constant [12 x i8] c"40f-20a-20d\00", align 1 @.str.1197 = private unnamed_addr constant [12 x i8] c"50f-20a-20d\00", align 1 -@aXformType = internal constant [6 x %struct.anon.40] [%struct.anon.40 { i8 6, [7 x i8] c"second\00", float 0x42FA640480000000, float 1.000000e+00 }, %struct.anon.40 { i8 6, [7 x i8] c"minute\00", float 0x429C267B20000000, float 6.000000e+01 }, %struct.anon.40 { i8 4, [7 x i8] c"hour\00\00\00", float 0x423E073600000000, float 3.600000e+03 }, %struct.anon.40 { i8 3, [7 x i8] c"day\00\00\00\00", float 0x41547F8B40000000, float 8.640000e+04 }, %struct.anon.40 { i8 5, [7 x i8] c"month\00\00", float 1.765460e+05, float 2.592000e+06 }, %struct.anon.40 { i8 4, [7 x i8] c"year\00\00\00", float 1.471300e+04, float 3.153600e+07 }], align 16 +@aXformType = internal unnamed_addr constant [6 x %struct.anon.40] [%struct.anon.40 { i8 6, [7 x i8] c"second\00", float 0x42FA640480000000, float 1.000000e+00 }, %struct.anon.40 { i8 6, [7 x i8] c"minute\00", float 0x429C267B20000000, float 6.000000e+01 }, %struct.anon.40 { i8 4, [7 x i8] c"hour\00\00\00", float 0x423E073600000000, float 3.600000e+03 }, %struct.anon.40 { i8 3, [7 x i8] c"day\00\00\00\00", float 0x41547F8B40000000, float 8.640000e+04 }, %struct.anon.40 { i8 5, [7 x i8] c"month\00\00", float 1.765460e+05, float 2.592000e+06 }, %struct.anon.40 { i8 4, [7 x i8] c"year\00\00\00", float 1.471300e+04, float 3.153600e+07 }], align 16 @.str.1198 = private unnamed_addr constant [23 x i8] c"local time unavailable\00", align 1 @.str.1199 = private unnamed_addr constant [5 x i8] c"%02d\00", align 1 @.str.1200 = private unnamed_addr constant [4 x i8] c"%2d\00", align 1 @@ -360104,7 +360104,7 @@ sqlite3_stricmp.exit289.thread.i: ; preds = %467 br label %parseModifier.exit.thread82 .preheader.i290.i: ; preds = %.preheader.i290.i.preheader, %504 - %492 = phi i8 [ %.pre480.i, %504 ], [ %356, %.preheader.i290.i.preheader ] + %492 = phi i8 [ %.pre477.i, %504 ], [ %356, %.preheader.i290.i.preheader ] %.013.i.i291.i = phi ptr [ %506, %504 ], [ @.str.1188, %.preheader.i290.i.preheader ] %.0.i.i292.i = phi ptr [ %505, %504 ], [ %.0.i.i54, %.preheader.i290.i.preheader ] %493 = load i8, ptr %.013.i.i291.i, align 1 @@ -360128,7 +360128,7 @@ sqlite3_stricmp.exit289.thread.i: ; preds = %467 504: ; preds = %497, %495 %505 = getelementptr inbounds nuw i8, ptr %.0.i.i292.i, i64 1 %506 = getelementptr inbounds nuw i8, ptr %.013.i.i291.i, i64 1 - %.pre480.i = load i8, ptr %505, align 1 + %.pre477.i = load i8, ptr %505, align 1 br label %.preheader.i290.i sqlite3_stricmp.exit295.thread.i: ; preds = %495 @@ -360165,7 +360165,7 @@ sqlite3_stricmp.exit295.thread.i: ; preds = %495 br i1 %.not.i296.i, label %519, label %.computeJD.exit_crit_edge.i .computeJD.exit_crit_edge.i: ; preds = %517 - %.pre481.i = load i64, ptr %6, align 8 + %.pre478.i = load i64, ptr %6, align 8 br label %computeJD.exit.i 519: ; preds = %517 @@ -360256,7 +360256,7 @@ sqlite3_stricmp.exit295.thread.i: ; preds = %495 br label %computeJD.exit.i computeJD.exit.i: ; preds = %563, %550, %529, %528, %.computeJD.exit_crit_edge.i - %568 = phi i64 [ %.pre481.i, %.computeJD.exit_crit_edge.i ], [ 0, %528 ], [ %548, %529 ], [ %561, %550 ], [ %567, %563 ] + %568 = phi i64 [ %.pre478.i, %.computeJD.exit_crit_edge.i ], [ 0, %528 ], [ %548, %529 ], [ %561, %550 ], [ %567, %563 ] %569 = sub nsw i64 %568, %513 %.not241.i = icmp ne i64 %569, 0 %570 = add nuw nsw i32 %.0211.i, 1 @@ -360294,8 +360294,8 @@ computeJD.exit.i: ; preds = %563, %550, %529, %5 br i1 %581, label %582, label %split.i.i 582: ; preds = %.lr.ph434.i - %exitcond474.not.i = icmp eq i64 %.023.i432.idx.i, 7 - br i1 %exitcond474.not.i, label %sqlite3_strnicmp.exit.thread.i, label %.lr.ph.ithread-pre-split.i, !llvm.loop !65 + %exitcond471.not.i = icmp eq i64 %.023.i432.idx.i, 7 + br i1 %exitcond471.not.i, label %sqlite3_strnicmp.exit.thread.i, label %.lr.ph.ithread-pre-split.i, !llvm.loop !65 split.i.i: ; preds = %.lr.ph434.i %.023.i432.ptr.i.le = getelementptr inbounds nuw i8, ptr @.str.1189, i64 %.023.i432.idx.i @@ -360303,11 +360303,11 @@ split.i.i: ; preds = %.lr.ph434.i br label %sqlite3_strnicmp.exit.i sqlite3_strnicmp.exit.loopexit.i: ; preds = %.lr.ph.ithread-pre-split.i - %.ptr482.i = getelementptr inbounds nuw i8, ptr @.str.1189, i64 %.023.i432.add.i + %.ptr479.i = getelementptr inbounds nuw i8, ptr @.str.1189, i64 %.023.i432.add.i br label %sqlite3_strnicmp.exit.i sqlite3_strnicmp.exit.i: ; preds = %sqlite3_strnicmp.exit.loopexit.i, %split.i.i, %.lr.ph.i.preheader.i - %.023.i408.i = phi ptr [ %.023.i432.ptr.i.le, %split.i.i ], [ @.str.1189, %.lr.ph.i.preheader.i ], [ %.ptr482.i, %sqlite3_strnicmp.exit.loopexit.i ] + %.023.i408.i = phi ptr [ %.023.i432.ptr.i.le, %split.i.i ], [ @.str.1189, %.lr.ph.i.preheader.i ], [ %.ptr479.i, %sqlite3_strnicmp.exit.loopexit.i ] %584 = phi i32 [ %583, %split.i.i ], [ 0, %.lr.ph.i.preheader.i ], [ 0, %sqlite3_strnicmp.exit.loopexit.i ] %585 = load i8, ptr %.023.i408.i, align 1 %586 = zext i8 %585 to i64 @@ -360382,8 +360382,8 @@ sqlite3_strnicmp.exit.thread.i: ; preds = %582, %sqlite3_strni br i1 %625, label %626, label %split.i307.i 626: ; preds = %.lr.ph.i - %exitcond473.not.i = icmp eq i64 %.023.i304428.idx.i, 8 - br i1 %exitcond473.not.i, label %sqlite3_strnicmp.exit310.thread.i, label %.lr.ph.i302thread-pre-split.i, !llvm.loop !65 + %exitcond470.not.i = icmp eq i64 %.023.i304428.idx.i, 8 + br i1 %exitcond470.not.i, label %sqlite3_strnicmp.exit310.thread.i, label %.lr.ph.i302thread-pre-split.i, !llvm.loop !65 split.i307.i: ; preds = %.lr.ph.i %.023.i304428.ptr.i.le = getelementptr inbounds nuw i8, ptr @.str.1190, i64 %.023.i304428.idx.i @@ -360406,7 +360406,7 @@ sqlite3_strnicmp.exit310.i: ; preds = %sqlite3_strnicmp.ex br i1 %.not234.i, label %sqlite3_strnicmp.exit310.thread.i, label %.preheader.i311.i .preheader.i311.i: ; preds = %sqlite3_strnicmp.exit310.i, %646 - %634 = phi i8 [ %.pre478.i, %646 ], [ %356, %sqlite3_strnicmp.exit310.i ] + %634 = phi i8 [ %.pre475.i, %646 ], [ %356, %sqlite3_strnicmp.exit310.i ] %.013.i.i312.i = phi ptr [ %648, %646 ], [ @.str.1180, %sqlite3_strnicmp.exit310.i ] %.0.i.i313.i = phi ptr [ %647, %646 ], [ %.0.i.i54, %sqlite3_strnicmp.exit310.i ] %635 = load i8, ptr %.013.i.i312.i, align 1 @@ -360430,11 +360430,11 @@ sqlite3_strnicmp.exit310.i: ; preds = %sqlite3_strnicmp.ex 646: ; preds = %639, %637 %647 = getelementptr inbounds nuw i8, ptr %.0.i.i313.i, i64 1 %648 = getelementptr inbounds nuw i8, ptr %.013.i.i312.i, i64 1 - %.pre478.i = load i8, ptr %647, align 1 + %.pre475.i = load i8, ptr %647, align 1 br label %.preheader.i311.i .preheader.i317.i: ; preds = %639, %661 - %649 = phi i8 [ %.pre479.i, %661 ], [ %356, %639 ] + %649 = phi i8 [ %.pre476.i, %661 ], [ %356, %639 ] %.013.i.i318.i = phi ptr [ %663, %661 ], [ @.str.1181, %639 ] %.0.i.i319.i = phi ptr [ %662, %661 ], [ %.0.i.i54, %639 ] %650 = load i8, ptr %.013.i.i318.i, align 1 @@ -360458,7 +360458,7 @@ sqlite3_strnicmp.exit310.i: ; preds = %sqlite3_strnicmp.ex 661: ; preds = %654, %652 %662 = getelementptr inbounds nuw i8, ptr %.0.i.i319.i, i64 1 %663 = getelementptr inbounds nuw i8, ptr %.013.i.i318.i, i64 1 - %.pre479.i = load i8, ptr %662, align 1 + %.pre476.i = load i8, ptr %662, align 1 br label %.preheader.i317.i sqlite3_stricmp.exit316.thread.i: ; preds = %637, %652 @@ -360894,7 +360894,7 @@ computeFloor.exit.i: ; preds = %847, %844, %835, %8 br i1 %.not.i343.i, label %878, label %.computeJD.exit359_crit_edge.i .computeJD.exit359_crit_edge.i: ; preds = %876 - %.pre477.i = load i64, ptr %12, align 8 + %.pre474.i = load i64, ptr %12, align 8 br label %computeJD.exit359.i 878: ; preds = %876 @@ -360973,7 +360973,7 @@ computeFloor.exit.i: ; preds = %847, %844, %835, %8 br label %computeJD.exit359.i computeJD.exit359.i: ; preds = %921, %908, %887, %.thread.i346.i, %880, %.computeJD.exit359_crit_edge.i - %926 = phi i64 [ %.pre477.i, %.computeJD.exit359_crit_edge.i ], [ %906, %887 ], [ %919, %908 ], [ %925, %921 ], [ 0, %.thread.i346.i ], [ 0, %880 ] + %926 = phi i64 [ %.pre474.i, %.computeJD.exit359_crit_edge.i ], [ %906, %887 ], [ %919, %908 ], [ %925, %921 ], [ 0, %.thread.i346.i ], [ 0, %880 ] %.fr233.i = freeze i64 %926 %927 = add i64 %.fr233.i, -43200000 %928 = srem i64 %927, 86400000 @@ -361026,63 +361026,62 @@ computeJD.exit359.i: ; preds = %921, %908, %887, %. %956 = fcmp olt double %955, 0.000000e+00 %957 = select i1 %956, double -5.000000e-01, double 5.000000e-01 store i8 0, ptr %293, align 4 - %958 = zext nneg i32 %spec.select252.i to i64 - %959 = getelementptr i8, ptr @aXformType, i64 %958 - br label %960 - -960: ; preds = %1045, %947 - %indvars.iv469.i = phi i64 [ 0, %947 ], [ %indvars.iv.next470.i, %1045 ] - %indvars.iv467.i = phi ptr [ %959, %947 ], [ %scevgep468.i, %1045 ] - %961 = getelementptr inbounds nuw [6 x %struct.anon.40], ptr @aXformType, i64 0, i64 %indvars.iv469.i - %962 = load i8, ptr %961, align 16 - %963 = zext i8 %962 to i32 - %964 = icmp eq i32 %spec.select252.i, %963 - br i1 %964, label %.lr.ph.i363.i, label %1045 - -.lr.ph.i363.i: ; preds = %960, %975 - %.023.i365.i = phi ptr [ %976, %975 ], [ %.2.i, %960 ] - %.01422.i366.pn.i = phi ptr [ %.01422.i366.i, %975 ], [ %961, %960 ] + br label %958 + +958: ; preds = %1045, %947 + %indvars.iv467.i = phi i64 [ 0, %947 ], [ %indvars.iv.next468.i, %1045 ] + %959 = getelementptr inbounds nuw [6 x %struct.anon.40], ptr @aXformType, i64 0, i64 %indvars.iv467.i + %960 = load i8, ptr %959, align 16 + %961 = zext i8 %960 to i32 + %962 = icmp eq i32 %spec.select252.i, %961 + br i1 %962, label %.lr.ph.i363.i, label %1045 + +.lr.ph.i363.i: ; preds = %958, %974 + %.in.i364.i = phi i32 [ %963, %974 ], [ %spec.select252.i, %958 ] + %.023.i365.i = phi ptr [ %975, %974 ], [ %.2.i, %958 ] + %.01422.i366.pn.i = phi ptr [ %.01422.i366.i, %974 ], [ %959, %958 ] %.01422.i366.i = getelementptr inbounds nuw i8, ptr %.01422.i366.pn.i, i64 1 - %965 = load i8, ptr %.01422.i366.i, align 1 - %.not.i367.i = icmp eq i8 %965, 0 - br i1 %.not.i367.i, label %sqlite3_strnicmp.exit370.loopexit.i, label %966 - -966: ; preds = %.lr.ph.i363.i - %967 = zext i8 %965 to i64 - %968 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %967 - %969 = load i8, ptr %968, align 1 - %970 = load i8, ptr %.023.i365.i, align 1 - %971 = zext i8 %970 to i64 - %972 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %971 - %973 = load i8, ptr %972, align 1 - %974 = icmp eq i8 %969, %973 - br i1 %974, label %975, label %split.i368.i - -975: ; preds = %966 - %976 = getelementptr inbounds nuw i8, ptr %.023.i365.i, i64 1 - %exitcond.not.i = icmp eq ptr %.01422.i366.i, %indvars.iv467.i - br i1 %exitcond.not.i, label %sqlite3_strnicmp.exit370.thread.i, label %.lr.ph.i363.i, !llvm.loop !65 - -split.i368.i: ; preds = %966 - %977 = zext i8 %969 to i32 + %963 = add nsw i32 %.in.i364.i, -1 + %964 = load i8, ptr %.01422.i366.i, align 1 + %.not.i367.i = icmp eq i8 %964, 0 + br i1 %.not.i367.i, label %sqlite3_strnicmp.exit370.loopexit.i, label %965 + +965: ; preds = %.lr.ph.i363.i + %966 = zext i8 %964 to i64 + %967 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %966 + %968 = load i8, ptr %967, align 1 + %969 = load i8, ptr %.023.i365.i, align 1 + %970 = zext i8 %969 to i64 + %971 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %970 + %972 = load i8, ptr %971, align 1 + %973 = icmp eq i8 %968, %972 + br i1 %973, label %974, label %split.i368.i + +974: ; preds = %965 + %975 = getelementptr inbounds nuw i8, ptr %.023.i365.i, i64 1 + %976 = icmp samesign ugt i32 %.in.i364.i, 1 + br i1 %976, label %.lr.ph.i363.i, label %sqlite3_strnicmp.exit370.thread.i, !llvm.loop !65 + +split.i368.i: ; preds = %965 + %977 = zext i8 %968 to i32 br label %sqlite3_strnicmp.exit370.i sqlite3_strnicmp.exit370.loopexit.i: ; preds = %.lr.ph.i363.i %.pre.i = load i8, ptr %.023.i365.i, align 1 %.phi.trans.insert.i = zext i8 %.pre.i to i64 - %.phi.trans.insert475.i = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert.i - %.pre476.i = load i8, ptr %.phi.trans.insert475.i, align 1 + %.phi.trans.insert472.i = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert.i + %.pre473.i = load i8, ptr %.phi.trans.insert472.i, align 1 br label %sqlite3_strnicmp.exit370.i sqlite3_strnicmp.exit370.i: ; preds = %sqlite3_strnicmp.exit370.loopexit.i, %split.i368.i - %978 = phi i8 [ %973, %split.i368.i ], [ %.pre476.i, %sqlite3_strnicmp.exit370.loopexit.i ] + %978 = phi i8 [ %972, %split.i368.i ], [ %.pre473.i, %sqlite3_strnicmp.exit370.loopexit.i ] %979 = phi i32 [ %977, %split.i368.i ], [ 0, %sqlite3_strnicmp.exit370.loopexit.i ] %980 = zext i8 %978 to i32 %981 = icmp eq i32 %979, %980 br i1 %981, label %sqlite3_strnicmp.exit370.thread.i, label %1045 -sqlite3_strnicmp.exit370.thread.i: ; preds = %975, %sqlite3_strnicmp.exit370.i - %982 = getelementptr inbounds nuw i8, ptr %961, i64 8 +sqlite3_strnicmp.exit370.thread.i: ; preds = %974, %sqlite3_strnicmp.exit370.i + %982 = getelementptr inbounds nuw i8, ptr %959, i64 8 %983 = load float, ptr %982, align 8 %984 = fneg float %983 %985 = fpext float %984 to double @@ -361093,7 +361092,7 @@ sqlite3_strnicmp.exit370.thread.i: ; preds = %975, %sqlite3_strni br i1 %or.cond255.i, label %989, label %1045 989: ; preds = %sqlite3_strnicmp.exit370.thread.i - %990 = trunc nuw nsw i64 %indvars.iv469.i to i32 + %990 = trunc nuw nsw i64 %indvars.iv467.i to i32 switch i32 %990, label %1035 [ i32 4, label %991 i32 5, label %1006 @@ -361138,7 +361137,7 @@ sqlite3_strnicmp.exit370.thread.i: ; preds = %975, %sqlite3_strni .sink.split.i: ; preds = %1006, %1001 %1010 = phi i32 [ %1009, %1006 ], [ %1004, %1001 ] - %.sink516.i = phi i32 [ %1007, %1006 ], [ %992, %1001 ] + %.sink513.i = phi i32 [ %1007, %1006 ], [ %992, %1001 ] %1011 = load i32, ptr %292, align 8 %1012 = icmp slt i32 %1011, 29 br i1 %1012, label %computeFloor.exit, label %1013 @@ -361186,7 +361185,7 @@ computeFloor.exit: ; preds = %.sink.split.i, %101 %.sink.i = phi i8 [ %1029, %1027 ], [ %1032, %1030 ], [ %1020, %1018 ], [ 0, %.sink.split.i ], [ 0, %1013 ] store i8 %.sink.i, ptr %293, align 4 store i8 0, ptr %289, align 8 - %1033 = sitofp i32 %.sink516.i to double + %1033 = sitofp i32 %.sink513.i to double %1034 = fsub double %955, %1033 br label %1035 @@ -361194,7 +361193,7 @@ computeFloor.exit: ; preds = %.sink.split.i, %101 %1036 = phi double [ %955, %989 ], [ %1034, %computeFloor.exit ] call fastcc void @computeJD(ptr noundef nonnull %3) %1037 = fmul double %1036, 1.000000e+03 - %1038 = getelementptr inbounds nuw i8, ptr %961, i64 12 + %1038 = getelementptr inbounds nuw i8, ptr %959, i64 12 %1039 = load float, ptr %1038, align 4 %1040 = fpext float %1039 to double %1041 = call double @llvm.fmuladd.f64(double %1037, double %1040, double %957) @@ -361204,11 +361203,10 @@ computeFloor.exit: ; preds = %.sink.split.i, %101 store i64 %1044, ptr %3, align 8 br label %.loopexit.i -1045: ; preds = %sqlite3_strnicmp.exit370.thread.i, %sqlite3_strnicmp.exit370.i, %960 - %indvars.iv.next470.i = add nuw nsw i64 %indvars.iv469.i, 1 - %scevgep468.i = getelementptr i8, ptr %indvars.iv467.i, i64 16 - %exitcond472.not.i = icmp eq i64 %indvars.iv.next470.i, 6 - br i1 %exitcond472.not.i, label %.loopexit.i, label %960, !llvm.loop !1370 +1045: ; preds = %sqlite3_strnicmp.exit370.thread.i, %sqlite3_strnicmp.exit370.i, %958 + %indvars.iv.next468.i = add nuw nsw i64 %indvars.iv467.i, 1 + %exitcond.not.i = icmp eq i64 %indvars.iv.next468.i, 6 + br i1 %exitcond.not.i, label %.loopexit.i, label %958, !llvm.loop !1370 .loopexit.i: ; preds = %1045, %1035 %.1208.i = phi i32 [ 0, %1035 ], [ 1, %1045 ] diff --git a/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll b/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll index 4dfb2e1533e..09f4eb52a25 100644 --- a/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll +++ b/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll @@ -5335,7 +5335,7 @@ define internal fastcc void @_ZN6rustls6crypto9aws_lc_rs4quic19HeaderProtectionK store <5 x i8> %.sroa.0.0.vec.extract.i.i, ptr %14, align 8 %25 = getelementptr inbounds nuw i8, ptr %14, i64 1 %26 = icmp ugt i64 %6, 4 - br i1 %26, label %40, label %31 + br i1 %26, label %39, label %31 _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: ; preds = %8 %27 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h881b5322e8400d52E"(i64 noundef 24, i1 noundef zeroext false), !noalias !1299 @@ -5351,7 +5351,7 @@ _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: store ptr %29, ptr %.sroa.329.sroa.3.0..sroa.329.0..sroa_idx.sroa_idx, align 8 %.sroa.329.sroa.4.0..sroa.329.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 24, ptr %.sroa.329.sroa.4.0..sroa.329.0..sroa_idx.sroa_idx, align 8 - br label %51 + br label %53 31: ; preds = %24 %32 = extractelement <16 x i8> %.sroa.0.0.i.i, i64 0 @@ -5367,34 +5367,35 @@ _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: .lr.ph.preheader: ; preds = %31 %36 = select i1 %7, i8 %32, i8 0 %.031 = xor i8 %36, %33 - %37 = add nsw i64 %6, -1 - %38 = and i8 %.031, 3 - %39 = zext nneg i8 %38 to i64 - %umin = call i64 @llvm.umin.i64(i64 %37, i64 %39) + %37 = and i8 %.031, 3 + %narrow = add nuw nsw i8 %37, 1 + %38 = zext nneg i8 %narrow to i64 br label %.lr.ph -40: ; preds = %24 - %41 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h881b5322e8400d52E"(i64 noundef 22, i1 noundef zeroext false), !noalias !1307 - %42 = extractvalue { i64, ptr } %41, 0 - %43 = extractvalue { i64, ptr } %41, 1 - %44 = icmp ne ptr %43, null - call void @llvm.assume(i1 %44) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(22) %43, ptr noundef nonnull align 1 dereferenceable(22) @anon.ef2cb31d04e324dd9619959f34c788f4.80, i64 22, i1 false) +39: ; preds = %24 + %40 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h881b5322e8400d52E"(i64 noundef 22, i1 noundef zeroext false), !noalias !1307 + %41 = extractvalue { i64, ptr } %40, 0 + %42 = extractvalue { i64, ptr } %40, 1 + %43 = icmp ne ptr %42, null + call void @llvm.assume(i1 %43) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(22) %42, ptr noundef nonnull align 1 dereferenceable(22) @anon.ef2cb31d04e324dd9619959f34c788f4.80, i64 22, i1 false) store i8 12, ptr %0, align 8 %.sroa.48.sroa.3.0..sroa.48.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %42, ptr %.sroa.48.sroa.3.0..sroa.48.0..sroa_idx.sroa_idx, align 8 + store i64 %41, ptr %.sroa.48.sroa.3.0..sroa.48.0..sroa_idx.sroa_idx, align 8 %.sroa.48.sroa.4.0..sroa.48.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %43, ptr %.sroa.48.sroa.4.0..sroa.48.0..sroa_idx.sroa_idx, align 8 + store ptr %42, ptr %.sroa.48.sroa.4.0..sroa.48.0..sroa_idx.sroa_idx, align 8 %.sroa.48.sroa.5.0..sroa.48.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 22, ptr %.sroa.48.sroa.5.0..sroa.48.0..sroa_idx.sroa_idx, align 8 - br label %51 + br label %53 .thread65: ; preds = %.lr.ph, %31 store i8 20, ptr %0, align 8 - br label %51 + br label %53 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.sroa.14.075 = phi i64 [ %44, %.lr.ph ], [ %38, %.lr.ph.preheader ] %.sroa.849.074 = phi i64 [ %45, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %44 = add nsw i64 %.sroa.14.075, -1 %45 = add nuw nsw i64 %.sroa.849.074, 1 %46 = getelementptr inbounds nuw i8, ptr %5, i64 %.sroa.849.074 %47 = getelementptr inbounds nuw i8, ptr %25, i64 %.sroa.849.074 @@ -5402,10 +5403,12 @@ _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: %49 = load i8, ptr %46, align 1, !noundef !14 %50 = xor i8 %49, %48 store i8 %50, ptr %46, align 1 - %exitcond.not = icmp eq i64 %.sroa.849.074, %umin - br i1 %exitcond.not, label %.thread65, label %.lr.ph + %51 = icmp ne i64 %44, 0 + %52 = icmp ult i64 %45, %6 + %or.cond = select i1 %51, i1 %52, i1 false + br i1 %or.cond, label %.lr.ph, label %.thread65 -51: ; preds = %_ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit, %40, %.thread65 +53: ; preds = %_ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit, %39, %.thread65 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %14) ret void } diff --git a/bench/wireshark/optimized/packet-ieee80211.ll b/bench/wireshark/optimized/packet-ieee80211.ll index 2b19fd2737b..a05064ece62 100644 --- a/bench/wireshark/optimized/packet-ieee80211.ll +++ b/bench/wireshark/optimized/packet-ieee80211.ll @@ -37593,22 +37593,20 @@ define internal range(i32 3, 2) i32 @dissect_wfa_wnm_non_pref_chan(ptr noundef % %12 = load i32, ptr @hf_ieee80211_wfa_ie_mbo_non_pref_chan_op_class, align 4 %13 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %12, ptr noundef %0, i32 noundef 0, i32 noundef 1, i32 noundef 0) #22 %.not = icmp eq i32 %5, 3 - br i1 %.not, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %11 - %14 = add nsw i32 %5, -2 - br label %.lr.ph + br i1 %.not, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.029 = phi i32 [ %17, %.lr.ph ], [ 1, %.lr.ph.preheader ] - %15 = load i32, ptr @hf_ieee80211_wfa_ie_mbo_non_pref_chan_chan, align 4 - %16 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %15, ptr noundef %0, i32 noundef %.029, i32 noundef 1, i32 noundef 0) #22 - %17 = add nuw nsw i32 %.029, 1 - %exitcond.not = icmp eq i32 %17, %14 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !161 +.lr.ph: ; preds = %11, %.lr.ph + %.029 = phi i32 [ %16, %.lr.ph ], [ 1, %11 ] + %.025.in28 = phi i32 [ %.025, %.lr.ph ], [ %5, %11 ] + %.025 = add nsw i32 %.025.in28, -1 + %14 = load i32, ptr @hf_ieee80211_wfa_ie_mbo_non_pref_chan_chan, align 4 + %15 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %14, ptr noundef %0, i32 noundef %.029, i32 noundef 1, i32 noundef 0) #22 + %16 = add nuw nsw i32 %.029, 1 + %17 = icmp samesign ugt i32 %.025.in28, 4 + br i1 %17, label %.lr.ph, label %._crit_edge, !llvm.loop !161 ._crit_edge: ; preds = %.lr.ph, %11 - %.0.lcssa = phi i32 [ 1, %11 ], [ %14, %.lr.ph ] + %.0.lcssa = phi i32 [ 1, %11 ], [ %16, %.lr.ph ] %18 = load i32, ptr @hf_ieee80211_wfa_ie_mbo_non_pref_chan_pref, align 4 %19 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %18, ptr noundef %0, i32 noundef %.0.lcssa, i32 noundef 1, i32 noundef 0) #22 %20 = add i32 %.0.lcssa, 1 diff --git a/bench/wireshark/optimized/packet-sctp.ll b/bench/wireshark/optimized/packet-sctp.ll index a8f94f44060..71e35a9e9ee 100644 --- a/bench/wireshark/optimized/packet-sctp.ll +++ b/bench/wireshark/optimized/packet-sctp.ll @@ -8457,79 +8457,77 @@ define internal fastcc void @sctp_ack_block(ptr noundef readonly captures(none) %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 %60 = load ptr, ptr %8, align 8 %61 = icmp eq ptr %60, null - br i1 %61, label %.loopexit, label %.preheader.split.preheader + br i1 %61, label %.loopexit, label %.preheader.split -.preheader.split.preheader: ; preds = %.preheader - %62 = add i32 %5, 1 - %63 = add i32 %.059, %17 - %64 = sub i32 %62, %63 +.preheader.splitthread-pre-split: ; preds = %sctp_ack.exit + %62 = add nuw i32 %.089, 1 + %.pr = load ptr, ptr %8, align 8 br label %.preheader.split -.preheader.split: ; preds = %.preheader.split.preheader, %sctp_ack.exit - %.089 = phi i32 [ %93, %sctp_ack.exit ], [ 0, %.preheader.split.preheader ] - %65 = load ptr, ptr %8, align 8 - %.not.i = icmp eq ptr %65, null - br i1 %.not.i, label %sctp_ack.exit, label %66 - -66: ; preds = %.preheader.split - %67 = add i32 %.089, %.059 - %68 = load i32, ptr %14, align 4 - %69 = getelementptr inbounds nuw i8, ptr %65, i64 24 - %70 = load ptr, ptr %69, align 8 - %71 = tail call ptr @wmem_tree_lookup32(ptr noundef %70, i32 noundef %67) #17 - %.not30.i = icmp eq ptr %71, null - br i1 %.not30.i, label %sctp_ack.exit, label %72 - -72: ; preds = %66 - %73 = getelementptr inbounds nuw i8, ptr %71, i64 32 - %74 = load i32, ptr %73, align 8 - %.not31.i = icmp eq i32 %74, 0 - br i1 %.not31.i, label %75, label %89 - -75: ; preds = %72 - store i32 %68, ptr %73, align 8 - %76 = getelementptr inbounds nuw i8, ptr %71, i64 40 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull readonly align 8 dereferenceable(16) %59, i64 16, i1 false) - %77 = load ptr, ptr %8, align 8 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 32 - %79 = load ptr, ptr %78, align 8 - %80 = tail call ptr @wmem_tree_lookup32(ptr noundef %79, i32 noundef %68) #17 - %.not32.i = icmp eq ptr %80, null - br i1 %.not32.i, label %85, label %.preheader.i +.preheader.split: ; preds = %.preheader, %.preheader.splitthread-pre-split + %63 = phi ptr [ %.pr, %.preheader.splitthread-pre-split ], [ %60, %.preheader ] + %.089 = phi i32 [ %62, %.preheader.splitthread-pre-split ], [ 0, %.preheader ] + %.not.i = icmp eq ptr %63, null + br i1 %.not.i, label %sctp_ack.exit, label %64 + +64: ; preds = %.preheader.split + %65 = add i32 %.089, %.059 + %66 = load i32, ptr %14, align 4 + %67 = getelementptr inbounds nuw i8, ptr %63, i64 24 + %68 = load ptr, ptr %67, align 8 + %69 = tail call ptr @wmem_tree_lookup32(ptr noundef %68, i32 noundef %65) #17 + %.not30.i = icmp eq ptr %69, null + br i1 %.not30.i, label %sctp_ack.exit, label %70 + +70: ; preds = %64 + %71 = getelementptr inbounds nuw i8, ptr %69, i64 32 + %72 = load i32, ptr %71, align 8 + %.not31.i = icmp eq i32 %72, 0 + br i1 %.not31.i, label %73, label %87 -.preheader.i: ; preds = %75, %.preheader.i - %.0.i = phi ptr [ %82, %.preheader.i ], [ %80, %75 ] - %81 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 - %82 = load ptr, ptr %81, align 8 - %.not33.i = icmp eq ptr %82, null - br i1 %.not33.i, label %83, label %.preheader.i, !llvm.loop !50 - -83: ; preds = %.preheader.i - %84 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 - store ptr %71, ptr %84, align 8 - br label %89 - -85: ; preds = %75 - %86 = load ptr, ptr %8, align 8 - %87 = getelementptr inbounds nuw i8, ptr %86, i64 32 - %88 = load ptr, ptr %87, align 8 - tail call void @wmem_tree_insert32(ptr noundef %88, i32 noundef %68, ptr noundef nonnull %71) #17 - br label %89 - -89: ; preds = %85, %83, %72 - %90 = load i32, ptr %73, align 8 - %91 = icmp eq i32 %90, %68 - br i1 %91, label %92, label %sctp_ack.exit - -92: ; preds = %89 +73: ; preds = %70 + store i32 %66, ptr %71, align 8 + %74 = getelementptr inbounds nuw i8, ptr %69, i64 40 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull readonly align 8 dereferenceable(16) %59, i64 16, i1 false) + %75 = load ptr, ptr %8, align 8 + %76 = getelementptr inbounds nuw i8, ptr %75, i64 32 + %77 = load ptr, ptr %76, align 8 + %78 = tail call ptr @wmem_tree_lookup32(ptr noundef %77, i32 noundef %66) #17 + %.not32.i = icmp eq ptr %78, null + br i1 %.not32.i, label %83, label %.preheader.i + +.preheader.i: ; preds = %73, %.preheader.i + %.0.i = phi ptr [ %80, %.preheader.i ], [ %78, %73 ] + %79 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 + %80 = load ptr, ptr %79, align 8 + %.not33.i = icmp eq ptr %80, null + br i1 %.not33.i, label %81, label %.preheader.i, !llvm.loop !50 + +81: ; preds = %.preheader.i + %82 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 + store ptr %69, ptr %82, align 8 + br label %87 + +83: ; preds = %73 + %84 = load ptr, ptr %8, align 8 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 32 + %86 = load ptr, ptr %85, align 8 + tail call void @wmem_tree_insert32(ptr noundef %86, i32 noundef %66, ptr noundef nonnull %69) #17 + br label %87 + +87: ; preds = %83, %81, %70 + %88 = load i32, ptr %71, align 8 + %89 = icmp eq i32 %88, %66 + br i1 %89, label %90, label %sctp_ack.exit + +90: ; preds = %87 %.val.i = load i32, ptr %14, align 4 - tail call fastcc void @ack_tree(ptr noundef %71, ptr noundef %3, ptr noundef %2, i32 %.val.i) + tail call fastcc void @ack_tree(ptr noundef %69, ptr noundef %3, ptr noundef %2, i32 %.val.i) br label %sctp_ack.exit -sctp_ack.exit: ; preds = %.preheader.split, %66, %89, %92 - %93 = add nuw i32 %.089, 1 - %exitcond.not = icmp eq i32 %93, %64 - br i1 %exitcond.not, label %.loopexit, label %.preheader.split, !llvm.loop !51 +sctp_ack.exit: ; preds = %.preheader.split, %64, %87, %90 + %.not79.not = icmp ult i32 %.089, %50 + br i1 %.not79.not, label %.preheader.splitthread-pre-split, label %.loopexit, !llvm.loop !51 .loopexit: ; preds = %39, %sctp_ack.exit, %.preheader, %42, %49, %6, %7, %10, %57 ret void diff --git a/bench/wireshark/optimized/packet-ssh.ll b/bench/wireshark/optimized/packet-ssh.ll index 14856827013..d0e059a9df1 100644 --- a/bench/wireshark/optimized/packet-ssh.ll +++ b/bench/wireshark/optimized/packet-ssh.ll @@ -6074,77 +6074,75 @@ define internal fastcc void @ssh_print_data(ptr noundef %0, ptr noundef readonly .lr.ph43: ; preds = %5 %8 = load ptr, ptr @g_ascii_table, align 8 - %9 = add nsw i64 %2, -1 - br label %10 + br label %9 -10: ; preds = %.lr.ph43, %._crit_edge40 - %indvars.iv = phi i64 [ %9, %.lr.ph43 ], [ %indvars.iv.next, %._crit_edge40 ] - %.041 = phi i64 [ 0, %.lr.ph43 ], [ %46, %._crit_edge40 ] - %umin = tail call i64 @llvm.umin.i64(i64 %indvars.iv, i64 15) - %11 = load ptr, ptr @ssh_debug_file, align 8 - %12 = trunc nuw i64 %.041 to i32 - %13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11, ptr noundef nonnull @.str.482, i32 noundef %12) #21 - br label %14 - -.preheader: ; preds = %14 - br i1 %22, label %.lr.ph, label %.lr.ph39.preheader - -14: ; preds = %10, %14 - %.02834 = phi i64 [ 0, %10 ], [ %21, %14 ] - %.02933 = phi i64 [ %.041, %10 ], [ %20, %14 ] - %15 = load ptr, ptr @ssh_debug_file, align 8 - %16 = getelementptr i8, ptr %1, i64 %.02933 - %17 = load i8, ptr %16, align 1 - %18 = zext i8 %17 to i32 - %19 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.483, i32 noundef %18) #21 - %20 = add nuw nsw i64 %.02933, 1 - %21 = add nuw nsw i64 %.02834, 1 - %22 = icmp samesign ult i64 %.02834, 15 - %23 = icmp samesign ult i64 %20, %2 - %24 = select i1 %22, i1 %23, i1 false - br i1 %24, label %14, label %.preheader, !llvm.loop !22 +9: ; preds = %.lr.ph43, %._crit_edge40 + %.041 = phi i64 [ 0, %.lr.ph43 ], [ %48, %._crit_edge40 ] + %10 = load ptr, ptr @ssh_debug_file, align 8 + %11 = trunc nuw i64 %.041 to i32 + %12 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10, ptr noundef nonnull @.str.482, i32 noundef %11) #21 + br label %13 + +.preheader: ; preds = %13 + br i1 %21, label %.lr.ph, label %.lr.ph39.preheader + +13: ; preds = %9, %13 + %.02834 = phi i64 [ 0, %9 ], [ %20, %13 ] + %.02933 = phi i64 [ %.041, %9 ], [ %19, %13 ] + %14 = load ptr, ptr @ssh_debug_file, align 8 + %15 = getelementptr i8, ptr %1, i64 %.02933 + %16 = load i8, ptr %15, align 1 + %17 = zext i8 %16 to i32 + %18 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %14, ptr noundef nonnull @.str.483, i32 noundef %17) #21 + %19 = add nuw nsw i64 %.02933, 1 + %20 = add nuw nsw i64 %.02834, 1 + %21 = icmp samesign ult i64 %.02834, 15 + %22 = icmp samesign ult i64 %19, %2 + %23 = select i1 %21, i1 %22, i1 false + br i1 %23, label %13, label %.preheader, !llvm.loop !22 .lr.ph: ; preds = %.preheader, %.lr.ph - %.135 = phi i64 [ %27, %.lr.ph ], [ %21, %.preheader ] - %25 = load ptr, ptr @ssh_debug_file, align 8 - %26 = tail call i64 @fwrite(ptr nonnull @.str.484, i64 3, i64 1, ptr %25) - %27 = add nuw nsw i64 %.135, 1 - %28 = icmp samesign ult i64 %.135, 15 - br i1 %28, label %.lr.ph, label %.lr.ph39.preheader, !llvm.loop !23 + %.135 = phi i64 [ %26, %.lr.ph ], [ %20, %.preheader ] + %24 = load ptr, ptr @ssh_debug_file, align 8 + %25 = tail call i64 @fwrite(ptr nonnull @.str.484, i64 3, i64 1, ptr %24) + %26 = add nuw nsw i64 %.135, 1 + %27 = icmp samesign ult i64 %.135, 15 + br i1 %27, label %.lr.ph, label %.lr.ph39.preheader, !llvm.loop !23 .lr.ph39.preheader: ; preds = %.lr.ph, %.preheader - %29 = load ptr, ptr @ssh_debug_file, align 8 - %30 = tail call i32 @fputc(i32 noundef 32, ptr noundef %29) + %28 = load ptr, ptr @ssh_debug_file, align 8 + %29 = tail call i32 @fputc(i32 noundef 32, ptr noundef %28) br label %.lr.ph39 .lr.ph39: ; preds = %.lr.ph39.preheader, %.lr.ph39 - %.237 = phi i64 [ %44, %.lr.ph39 ], [ 0, %.lr.ph39.preheader ] - %.13036 = phi i64 [ %43, %.lr.ph39 ], [ %.041, %.lr.ph39.preheader ] - %31 = getelementptr i8, ptr %1, i64 %.13036 - %32 = load i8, ptr %31, align 1 - %33 = zext i8 %32 to i64 - %34 = getelementptr i16, ptr %8, i64 %33 - %35 = load i16, ptr %34, align 2 - %36 = and i16 %35, 64 - %37 = icmp eq i16 %36, 0 - %38 = icmp eq i8 %32, 9 - %or.cond = or i1 %38, %37 - %39 = zext i8 %32 to i32 - %40 = select i1 %or.cond, i32 46, i32 %39 - %41 = load ptr, ptr @ssh_debug_file, align 8 - %42 = tail call i32 @fputc(i32 noundef %40, ptr noundef %41) - %43 = add nuw nsw i64 %.13036, 1 - %44 = add nuw nsw i64 %.237, 1 - %exitcond.not = icmp eq i64 %.237, %umin - br i1 %exitcond.not, label %._crit_edge40, label %.lr.ph39, !llvm.loop !24 + %.237 = phi i64 [ %43, %.lr.ph39 ], [ 0, %.lr.ph39.preheader ] + %.13036 = phi i64 [ %42, %.lr.ph39 ], [ %.041, %.lr.ph39.preheader ] + %30 = getelementptr i8, ptr %1, i64 %.13036 + %31 = load i8, ptr %30, align 1 + %32 = zext i8 %31 to i64 + %33 = getelementptr i16, ptr %8, i64 %32 + %34 = load i16, ptr %33, align 2 + %35 = and i16 %34, 64 + %36 = icmp eq i16 %35, 0 + %37 = icmp eq i8 %31, 9 + %or.cond = or i1 %37, %36 + %38 = zext i8 %31 to i32 + %39 = select i1 %or.cond, i32 46, i32 %38 + %40 = load ptr, ptr @ssh_debug_file, align 8 + %41 = tail call i32 @fputc(i32 noundef %39, ptr noundef %40) + %42 = add nuw nsw i64 %.13036, 1 + %43 = add nuw nsw i64 %.237, 1 + %44 = icmp samesign ult i64 %.237, 15 + %45 = icmp samesign ult i64 %42, %2 + %46 = select i1 %44, i1 %45, i1 false + br i1 %46, label %.lr.ph39, label %._crit_edge40, !llvm.loop !24 ._crit_edge40: ; preds = %.lr.ph39 - %45 = load ptr, ptr @ssh_debug_file, align 8 - %fputc = tail call i32 @fputc(i32 10, ptr %45) - %46 = add nuw nsw i64 %.041, 16 - %47 = icmp samesign ult i64 %46, %2 - %indvars.iv.next = add nsw i64 %indvars.iv, -16 - br i1 %47, label %10, label %.loopexit, !llvm.loop !25 + %47 = load ptr, ptr @ssh_debug_file, align 8 + %fputc = tail call i32 @fputc(i32 10, ptr %47) + %48 = add nuw nsw i64 %.041, 16 + %49 = icmp samesign ult i64 %48, %2 + br i1 %49, label %9, label %.loopexit, !llvm.loop !25 .loopexit: ; preds = %._crit_edge40, %5, %3 ret void @@ -8430,9 +8428,6 @@ declare i32 @llvm.umin.i32(i32, i32) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #19 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #19 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #20 diff --git a/bench/wireshark/optimized/packet-tls-utils.ll b/bench/wireshark/optimized/packet-tls-utils.ll index 77238832b69..1590bba6a74 100644 --- a/bench/wireshark/optimized/packet-tls-utils.ll +++ b/bench/wireshark/optimized/packet-tls-utils.ll @@ -4104,89 +4104,86 @@ define hidden void @ssl_print_data(ptr noundef %0, ptr noundef readonly captures .lr.ph47: ; preds = %5 %8 = load ptr, ptr @g_ascii_table, align 8 - %9 = add i64 %2, -1 - br label %10 + br label %9 -10: ; preds = %.lr.ph47, %._crit_edge44 - %indvars.iv = phi i64 [ %9, %.lr.ph47 ], [ %indvars.iv.next, %._crit_edge44 ] - %.045 = phi i64 [ 0, %.lr.ph47 ], [ %50, %._crit_edge44 ] - %umin = tail call i64 @llvm.umin.i64(i64 %indvars.iv, i64 15) - %11 = add nuw nsw i64 %umin, 1 - %12 = load ptr, ptr @ssl_debug_file, align 8 - %13 = tail call i64 @fwrite(ptr nonnull @.str.688, i64 2, i64 1, ptr %12) - br label %14 +9: ; preds = %.lr.ph47, %._crit_edge44 + %.045 = phi i64 [ 0, %.lr.ph47 ], [ %52, %._crit_edge44 ] + %10 = load ptr, ptr @ssl_debug_file, align 8 + %11 = tail call i64 @fwrite(ptr nonnull @.str.688, i64 2, i64 1, ptr %10) + br label %12 -.preheader34: ; preds = %14 - br i1 %22, label %.lr.ph, label %.lr.ph41.preheader - -14: ; preds = %10, %14 - %.02936 = phi i64 [ 0, %10 ], [ %21, %14 ] - %.03035 = phi i64 [ %.045, %10 ], [ %20, %14 ] - %15 = load ptr, ptr @ssl_debug_file, align 8 - %16 = getelementptr i8, ptr %1, i64 %.03035 - %17 = load i8, ptr %16, align 1 - %18 = zext i8 %17 to i32 - %19 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.689, i32 noundef %18) #23 - %20 = add nuw i64 %.03035, 1 - %21 = add nuw nsw i64 %.02936, 1 - %22 = icmp samesign ult i64 %.02936, 15 - %23 = icmp ult i64 %20, %2 - %24 = select i1 %22, i1 %23, i1 false - br i1 %24, label %14, label %.preheader34, !llvm.loop !10 +.preheader34: ; preds = %12 + br i1 %20, label %.lr.ph, label %.lr.ph41.preheader + +12: ; preds = %9, %12 + %.02936 = phi i64 [ 0, %9 ], [ %19, %12 ] + %.03035 = phi i64 [ %.045, %9 ], [ %18, %12 ] + %13 = load ptr, ptr @ssl_debug_file, align 8 + %14 = getelementptr i8, ptr %1, i64 %.03035 + %15 = load i8, ptr %14, align 1 + %16 = zext i8 %15 to i32 + %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %13, ptr noundef nonnull @.str.689, i32 noundef %16) #23 + %18 = add nuw i64 %.03035, 1 + %19 = add nuw nsw i64 %.02936, 1 + %20 = icmp samesign ult i64 %.02936, 15 + %21 = icmp ult i64 %18, %2 + %22 = select i1 %20, i1 %21, i1 false + br i1 %22, label %12, label %.preheader34, !llvm.loop !10 .lr.ph: ; preds = %.preheader34, %.lr.ph - %.137 = phi i64 [ %27, %.lr.ph ], [ %21, %.preheader34 ] - %25 = load ptr, ptr @ssl_debug_file, align 8 - %26 = tail call i64 @fwrite(ptr nonnull @.str.690, i64 3, i64 1, ptr %25) - %27 = add nuw nsw i64 %.137, 1 - %28 = icmp samesign ult i64 %.137, 15 - br i1 %28, label %.lr.ph, label %.lr.ph41.preheader, !llvm.loop !11 + %.137 = phi i64 [ %25, %.lr.ph ], [ %19, %.preheader34 ] + %23 = load ptr, ptr @ssl_debug_file, align 8 + %24 = tail call i64 @fwrite(ptr nonnull @.str.690, i64 3, i64 1, ptr %23) + %25 = add nuw nsw i64 %.137, 1 + %26 = icmp samesign ult i64 %.137, 15 + br i1 %26, label %.lr.ph, label %.lr.ph41.preheader, !llvm.loop !11 .lr.ph41.preheader: ; preds = %.lr.ph, %.preheader34 - %29 = load ptr, ptr @ssl_debug_file, align 8 - %30 = tail call i32 @fputc(i32 noundef 124, ptr noundef %29) + %27 = load ptr, ptr @ssl_debug_file, align 8 + %28 = tail call i32 @fputc(i32 noundef 124, ptr noundef %27) br label %.lr.ph41 .preheader: ; preds = %.lr.ph41 - %.not51 = icmp ugt i64 %indvars.iv, 14 - br i1 %.not51, label %._crit_edge44, label %.lr.ph43 + %29 = icmp samesign ult i64 %.239, 15 + br i1 %29, label %.lr.ph43, label %._crit_edge44 .lr.ph41: ; preds = %.lr.ph41.preheader, %.lr.ph41 - %.239 = phi i64 [ %44, %.lr.ph41 ], [ 0, %.lr.ph41.preheader ] - %.13138 = phi i64 [ %43, %.lr.ph41 ], [ %.045, %.lr.ph41.preheader ] - %31 = getelementptr i8, ptr %1, i64 %.13138 - %32 = load i8, ptr %31, align 1 - %33 = zext i8 %32 to i64 - %34 = getelementptr i16, ptr %8, i64 %33 - %35 = load i16, ptr %34, align 2 - %36 = and i16 %35, 64 - %37 = icmp eq i16 %36, 0 - %38 = icmp eq i8 %32, 9 - %or.cond = or i1 %38, %37 - %39 = zext i8 %32 to i32 - %40 = select i1 %or.cond, i32 46, i32 %39 - %41 = load ptr, ptr @ssl_debug_file, align 8 - %42 = tail call i32 @fputc(i32 noundef %40, ptr noundef %41) - %43 = add nuw i64 %.13138, 1 - %44 = add nuw nsw i64 %.239, 1 - %exitcond.not = icmp eq i64 %.239, %umin - br i1 %exitcond.not, label %.preheader, label %.lr.ph41, !llvm.loop !12 + %.239 = phi i64 [ %43, %.lr.ph41 ], [ 0, %.lr.ph41.preheader ] + %.13138 = phi i64 [ %42, %.lr.ph41 ], [ %.045, %.lr.ph41.preheader ] + %30 = getelementptr i8, ptr %1, i64 %.13138 + %31 = load i8, ptr %30, align 1 + %32 = zext i8 %31 to i64 + %33 = getelementptr i16, ptr %8, i64 %32 + %34 = load i16, ptr %33, align 2 + %35 = and i16 %34, 64 + %36 = icmp eq i16 %35, 0 + %37 = icmp eq i8 %31, 9 + %or.cond = or i1 %37, %36 + %38 = zext i8 %31 to i32 + %39 = select i1 %or.cond, i32 46, i32 %38 + %40 = load ptr, ptr @ssl_debug_file, align 8 + %41 = tail call i32 @fputc(i32 noundef %39, ptr noundef %40) + %42 = add nuw i64 %.13138, 1 + %43 = add nuw nsw i64 %.239, 1 + %44 = icmp samesign ult i64 %.239, 15 + %45 = icmp ult i64 %42, %2 + %46 = select i1 %44, i1 %45, i1 false + br i1 %46, label %.lr.ph41, label %.preheader, !llvm.loop !12 .lr.ph43: ; preds = %.preheader, %.lr.ph43 - %.342 = phi i64 [ %47, %.lr.ph43 ], [ %11, %.preheader ] - %45 = load ptr, ptr @ssl_debug_file, align 8 - %46 = tail call i32 @fputc(i32 noundef 32, ptr noundef %45) - %47 = add nuw nsw i64 %.342, 1 - %exitcond50.not = icmp eq i64 %47, 16 - br i1 %exitcond50.not, label %._crit_edge44, label %.lr.ph43, !llvm.loop !13 + %.342 = phi i64 [ %49, %.lr.ph43 ], [ %43, %.preheader ] + %47 = load ptr, ptr @ssl_debug_file, align 8 + %48 = tail call i32 @fputc(i32 noundef 32, ptr noundef %47) + %49 = add nuw nsw i64 %.342, 1 + %exitcond.not = icmp eq i64 %49, 16 + br i1 %exitcond.not, label %._crit_edge44, label %.lr.ph43, !llvm.loop !13 ._crit_edge44: ; preds = %.lr.ph43, %.preheader - %48 = load ptr, ptr @ssl_debug_file, align 8 - %49 = tail call i64 @fwrite(ptr nonnull @.str.691, i64 2, i64 1, ptr %48) - %50 = add i64 %.045, 16 - %51 = icmp ult i64 %50, %2 - %indvars.iv.next = add i64 %indvars.iv, -16 - br i1 %51, label %10, label %.loopexit, !llvm.loop !14 + %50 = load ptr, ptr @ssl_debug_file, align 8 + %51 = tail call i64 @fwrite(ptr nonnull @.str.691, i64 2, i64 1, ptr %50) + %52 = add i64 %.045, 16 + %53 = icmp ult i64 %52, %2 + br i1 %53, label %9, label %.loopexit, !llvm.loop !14 .loopexit: ; preds = %._crit_edge44, %5, %3 ret void @@ -15117,9 +15114,6 @@ declare i32 @llvm.umax.i32(i32, i32) #19 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.umax.i8(i8, i8) #19 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #19 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #22 diff --git a/bench/wolfssl/optimized/chacha.ll b/bench/wolfssl/optimized/chacha.ll index abdffaf6080..f7951d0a794 100644 --- a/bench/wolfssl/optimized/chacha.ll +++ b/bench/wolfssl/optimized/chacha.ll @@ -252,14 +252,10 @@ if.end19.i: ; preds = %if.end.i, %land.lhs br i1 %cmp20152.i, label %while.body.lr.ph.i, label %while.end.i while.body.lr.ph.i: ; preds = %if.end19.i - %m.addr.0.i5 = ptrtoint ptr %m.addr.0.i to i64 %c.addr.0162.i = ptrtoint ptr %c.addr.0.i to i64 %arrayidx25.i = getelementptr inbounds nuw i8, ptr %ctx, i64 48 %14 = and i64 %c.addr.0162.i, 7 %cmp627.not.i53.i = icmp eq i64 %14, 0 - %15 = and i64 %m.addr.0.i5, 7 - %16 = xor i64 %15, 7 - %scevgep = getelementptr i8, ptr %tmp.i, i64 %16 br label %while.body.i while.body.i: ; preds = %xorbufout.exit91.i, %while.body.lr.ph.i @@ -267,14 +263,14 @@ while.body.i: ; preds = %xorbufout.exit91.i, %bytes.addr.1156.i = phi i32 [ %bytes.addr.0.i, %while.body.lr.ph.i ], [ %sub31.i, %xorbufout.exit91.i ] %c.addr.1153.i = phi ptr [ %c.addr.0.i, %while.body.lr.ph.i ], [ %add.ptr32.i, %xorbufout.exit91.i ] call fastcc void @wc_Chacha_wordtobyte(ptr noundef %tmp.i, ptr noundef nonnull %ctx) - %17 = load i32, ptr %arrayidx25.i, align 4 - %add26.i = add i32 %17, 1 + %15 = load i32, ptr %arrayidx25.i, align 4 + %add26.i = add i32 %15, 1 store i32 %add26.i, ptr %arrayidx25.i, align 4 - %18 = ptrtoint ptr %c.addr.1153.i to i64 - %19 = ptrtoint ptr %m.addr.1157.i to i64 - %20 = or i64 %18, %19 - %21 = and i64 %20, 7 - %or.cond.i37.i = icmp eq i64 %21, 0 + %16 = ptrtoint ptr %c.addr.1153.i to i64 + %17 = ptrtoint ptr %m.addr.1157.i to i64 + %18 = or i64 %16, %17 + %19 = and i64 %18, 7 + %or.cond.i37.i = icmp eq i64 %19, 0 br i1 %or.cond.i37.i, label %while.cond.preheader.i52.i, label %for.body.preheader.i38.i while.cond.preheader.i52.i: ; preds = %while.body.i @@ -286,15 +282,17 @@ while.body.i54.i: ; preds = %while.cond.preheade %o.129.i57.i = phi ptr [ %incdec.ptr11.i62.i, %while.body.i54.i ], [ %c.addr.1153.i, %while.cond.preheader.i52.i ] %count.addr.128.i58.i = phi i32 [ %dec.i63.i, %while.body.i54.i ], [ 64, %while.cond.preheader.i52.i ] %incdec.ptr.i59.i = getelementptr inbounds nuw i8, ptr %b.130.i56.i, i64 1 - %22 = load i8, ptr %b.130.i56.i, align 1 + %20 = load i8, ptr %b.130.i56.i, align 1 %incdec.ptr8.i60.i = getelementptr inbounds nuw i8, ptr %m.131.i55.i, i64 1 - %23 = load i8, ptr %m.131.i55.i, align 1 - %xor22.i61.i = xor i8 %23, %22 + %21 = load i8, ptr %m.131.i55.i, align 1 + %xor22.i61.i = xor i8 %21, %20 %incdec.ptr11.i62.i = getelementptr inbounds nuw i8, ptr %o.129.i57.i, i64 1 store i8 %xor22.i61.i, ptr %o.129.i57.i, align 1 %dec.i63.i = add nsw i32 %count.addr.128.i58.i, -1 - %exitcond = icmp eq ptr %m.131.i55.i, %scevgep - br i1 %exitcond, label %while.end.i67.i, label %while.body.i54.i, !llvm.loop !4 + %22 = ptrtoint ptr %incdec.ptr.i59.i to i64 + %rem5.i64.i = and i64 %22, 7 + %cmp6.i65.not.i = icmp eq i64 %rem5.i64.i, 0 + br i1 %cmp6.i65.not.i, label %while.end.i67.i, label %while.body.i54.i, !llvm.loop !4 while.end.i67.i: ; preds = %while.body.i54.i %div20.i72.i = lshr i32 %dec.i63.i, 3 @@ -315,10 +313,10 @@ for.body.i.i74.i: ; preds = %for.body.i.i74.i, % %tpm.sroa.0.0.i77.i = phi ptr [ %incdec.ptr1.i.i80.i, %for.body.i.i74.i ], [ %m.1.lcssa.i71177.i, %for.body.i.i74.preheader.i ] %i.03.i.i78.i = phi i32 [ %inc.i.i83.i, %for.body.i.i74.i ], [ 0, %for.body.i.i74.preheader.i ] %incdec.ptr.i.i79.i = getelementptr inbounds nuw i8, ptr %tpb.sroa.0.0.i76.i, i64 8 - %24 = load i64, ptr %tpb.sroa.0.0.i76.i, align 8 + %23 = load i64, ptr %tpb.sroa.0.0.i76.i, align 8 %incdec.ptr1.i.i80.i = getelementptr inbounds nuw i8, ptr %tpm.sroa.0.0.i77.i, i64 8 - %25 = load i64, ptr %tpm.sroa.0.0.i77.i, align 8 - %xor.i.i81.i = xor i64 %25, %24 + %24 = load i64, ptr %tpm.sroa.0.0.i77.i, align 8 + %xor.i.i81.i = xor i64 %24, %23 %incdec.ptr2.i.i82.i = getelementptr inbounds nuw i8, ptr %tpo.sroa.0.0.i75.i, i64 8 store i64 %xor.i.i81.i, ptr %tpo.sroa.0.0.i75.i, align 8 %inc.i.i83.i = add nuw nsw i32 %i.03.i.i78.i, 1 @@ -345,10 +343,10 @@ for.body.preheader.i38.i: ; preds = %if.end.i85.i, %whil for.body.i44.i: ; preds = %for.body.i44.i, %for.body.preheader.i38.i %indvars.iv.i45.i = phi i64 [ 0, %for.body.preheader.i38.i ], [ %indvars.iv.next.i50.i, %for.body.i44.i ] %arrayidx.i46.i = getelementptr inbounds nuw i8, ptr %b.045.i40.i, i64 %indvars.iv.i45.i - %26 = load i8, ptr %arrayidx.i46.i, align 1 + %25 = load i8, ptr %arrayidx.i46.i, align 1 %arrayidx17.i47.i = getelementptr inbounds nuw i8, ptr %m.046.i39.i, i64 %indvars.iv.i45.i - %27 = load i8, ptr %arrayidx17.i47.i, align 1 - %xor1921.i48.i = xor i8 %27, %26 + %26 = load i8, ptr %arrayidx17.i47.i, align 1 + %xor1921.i48.i = xor i8 %26, %25 %arrayidx22.i49.i = getelementptr inbounds nuw i8, ptr %o.044.i41.i, i64 %indvars.iv.i45.i store i8 %xor1921.i48.i, ptr %arrayidx22.i49.i, align 1 %indvars.iv.next.i50.i = add nuw nsw i64 %indvars.iv.i45.i, 1 @@ -371,15 +369,15 @@ while.end.i: ; preds = %xorbufout.exit91.i, if.then34.i: ; preds = %while.end.i call fastcc void @wc_Chacha_wordtobyte(ptr noundef %tmp.i, ptr noundef nonnull %ctx) - %28 = ptrtoint ptr %c.addr.1.lcssa.i to i64 - %29 = ptrtoint ptr %m.addr.1.lcssa.i to i64 - %30 = or i64 %29, %28 - %31 = and i64 %30, 7 - %or.cond.i97.i = icmp eq i64 %31, 0 + %27 = ptrtoint ptr %c.addr.1.lcssa.i to i64 + %28 = ptrtoint ptr %m.addr.1.lcssa.i to i64 + %29 = or i64 %28, %27 + %30 = and i64 %29, 7 + %or.cond.i97.i = icmp eq i64 %30, 0 br i1 %or.cond.i97.i, label %while.cond.preheader.i112.i, label %for.body.preheader.i98.i while.cond.preheader.i112.i: ; preds = %if.then34.i - %rem.i92.i = and i64 %28, 7 + %rem.i92.i = and i64 %27, 7 %cmp627.not.i113.i = icmp eq i64 %rem.i92.i, 0 br i1 %cmp627.not.i113.i, label %while.end.i127.i, label %while.body.i114.i @@ -389,19 +387,19 @@ while.body.i114.i: ; preds = %while.cond.preheade %o.129.i117.i = phi ptr [ %incdec.ptr11.i122.i, %while.body.i114.i ], [ %c.addr.1.lcssa.i, %while.cond.preheader.i112.i ] %count.addr.128.i118.i = phi i32 [ %dec.i123.i, %while.body.i114.i ], [ %bytes.addr.1.lcssa.i, %while.cond.preheader.i112.i ] %incdec.ptr.i119.i = getelementptr inbounds nuw i8, ptr %b.130.i116.i, i64 1 - %32 = load i8, ptr %b.130.i116.i, align 1 + %31 = load i8, ptr %b.130.i116.i, align 1 %incdec.ptr8.i120.i = getelementptr inbounds nuw i8, ptr %m.131.i115.i, i64 1 - %33 = load i8, ptr %m.131.i115.i, align 1 - %xor22.i121.i = xor i8 %33, %32 + %32 = load i8, ptr %m.131.i115.i, align 1 + %xor22.i121.i = xor i8 %32, %31 %incdec.ptr11.i122.i = getelementptr inbounds nuw i8, ptr %o.129.i117.i, i64 1 store i8 %xor22.i121.i, ptr %o.129.i117.i, align 1 %dec.i123.i = add i32 %count.addr.128.i118.i, -1 - %34 = ptrtoint ptr %incdec.ptr.i119.i to i64 - %rem5.i124.i = and i64 %34, 7 + %33 = ptrtoint ptr %incdec.ptr.i119.i to i64 + %rem5.i124.i = and i64 %33, 7 %cmp6.i125.i = icmp ne i64 %rem5.i124.i, 0 %cmp7.i126.i = icmp ne i32 %dec.i123.i, 0 - %35 = select i1 %cmp6.i125.i, i1 %cmp7.i126.i, i1 false - br i1 %35, label %while.body.i114.i, label %while.end.i127.i, !llvm.loop !4 + %34 = select i1 %cmp6.i125.i, i1 %cmp7.i126.i, i1 false + br i1 %34, label %while.body.i114.i, label %while.end.i127.i, !llvm.loop !4 while.end.i127.i: ; preds = %while.body.i114.i, %while.cond.preheader.i112.i %count.addr.1.lcssa.i128.i = phi i32 [ %bytes.addr.1.lcssa.i, %while.cond.preheader.i112.i ], [ %dec.i123.i, %while.body.i114.i ] @@ -418,10 +416,10 @@ for.body.i.i134.i: ; preds = %while.end.i127.i, % %tpm.sroa.0.0.i137.i = phi ptr [ %incdec.ptr1.i.i140.i, %for.body.i.i134.i ], [ %m.1.lcssa.i131.i, %while.end.i127.i ] %i.03.i.i138.i = phi i32 [ %inc.i.i143.i, %for.body.i.i134.i ], [ 0, %while.end.i127.i ] %incdec.ptr.i.i139.i = getelementptr inbounds nuw i8, ptr %tpb.sroa.0.0.i136.i, i64 8 - %36 = load i64, ptr %tpb.sroa.0.0.i136.i, align 8 + %35 = load i64, ptr %tpb.sroa.0.0.i136.i, align 8 %incdec.ptr1.i.i140.i = getelementptr inbounds nuw i8, ptr %tpm.sroa.0.0.i137.i, i64 8 - %37 = load i64, ptr %tpm.sroa.0.0.i137.i, align 8 - %xor.i.i141.i = xor i64 %37, %36 + %36 = load i64, ptr %tpm.sroa.0.0.i137.i, align 8 + %xor.i.i141.i = xor i64 %36, %35 %incdec.ptr2.i.i142.i = getelementptr inbounds nuw i8, ptr %tpo.sroa.0.0.i135.i, i64 8 store i64 %xor.i.i141.i, ptr %tpo.sroa.0.0.i135.i, align 8 %inc.i.i143.i = add nuw nsw i32 %i.03.i.i138.i, 1 @@ -447,10 +445,10 @@ for.body.preheader.i98.i: ; preds = %if.end.i145.i, %if. for.body.i104.i: ; preds = %for.body.i104.i, %for.body.preheader.i98.i %indvars.iv.i105.i = phi i64 [ 0, %for.body.preheader.i98.i ], [ %indvars.iv.next.i110.i, %for.body.i104.i ] %arrayidx.i106.i = getelementptr inbounds nuw i8, ptr %b.045.i100.i, i64 %indvars.iv.i105.i - %38 = load i8, ptr %arrayidx.i106.i, align 1 + %37 = load i8, ptr %arrayidx.i106.i, align 1 %arrayidx17.i107.i = getelementptr inbounds nuw i8, ptr %m.046.i99.i, i64 %indvars.iv.i105.i - %39 = load i8, ptr %arrayidx17.i107.i, align 1 - %xor1921.i108.i = xor i8 %39, %38 + %38 = load i8, ptr %arrayidx17.i107.i, align 1 + %xor1921.i108.i = xor i8 %38, %37 %arrayidx22.i109.i = getelementptr inbounds nuw i8, ptr %o.044.i101.i, i64 %indvars.iv.i105.i store i8 %xor1921.i108.i, ptr %arrayidx22.i109.i, align 1 %indvars.iv.next.i110.i = add nuw nsw i64 %indvars.iv.i105.i, 1 From 6ebebdf0ae5f544df11537efdaa07016c81e576d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:08:51 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/abcRec3.ll | 60 +-- bench/abc/optimized/bmcFx.ll | 118 ++--- bench/abc/optimized/wlcAbc.ll | 100 ++-- bench/abc/optimized/wlnWlc.ll | 152 +++--- bench/arrow/optimized/UriParse.ll | 14 +- bench/boost/optimized/args_cmd.ll | 26 +- bench/bullet3/optimized/btSoftBodyHelpers.ll | 134 +++--- bench/cmake/optimized/cmHexFileConverter.ll | 260 +++++------ bench/cvc5/optimized/bags_utils.ll | 70 +-- .../optimized/introspection_sharpen.ll | 440 +++++++++--------- bench/eastl/optimized/EAMemory.ll | 90 ++-- bench/graphviz/optimized/excontext.ll | 244 +++++----- bench/graphviz/optimized/partition.ll | 76 +-- bench/hermes/optimized/hbc-attribute.ll | 60 +-- bench/icu/optimized/msgfmt.ll | 4 +- bench/icu/optimized/ubidi_props.ll | 36 +- bench/libevent/optimized/http.ll | 22 +- bench/linux/optimized/indirect.ll | 206 ++++---- bench/llvm/optimized/SemaConcept.ll | 216 ++++----- bench/llvm/optimized/SemaTemplate.ll | 322 ++++++------- bench/node/optimized/libnode.Protocol.ll | 120 ++--- bench/opencv/optimized/convexhull.ll | 382 +++++++-------- bench/opencv/optimized/qrcode_encoder.ll | 124 ++--- bench/openjdk/optimized/mlib_c_ImageCopy.ll | 156 +++---- bench/openjdk/optimized/sharedRuntimeTrig.ll | 182 ++++---- bench/openssl/optimized/libssl-lib-s3_enc.ll | 298 ++++++------ bench/openusd/optimized/openexr-c.ll | 114 ++--- bench/protobuf/optimized/padding_optimizer.ll | 320 ++++++------- bench/qemu/optimized/block_qed-table.ll | 50 +- bench/qemu/optimized/hw_riscv_numa.ll | 8 +- bench/qemu/optimized/qemu-io-cmds.ll | 28 +- bench/qemu/optimized/sdhci-cmd.ll | 6 +- bench/quantlib/optimized/date.ll | 160 +++---- bench/raylib/optimized/rcore.ll | 218 ++++----- bench/raylib/optimized/rtext.ll | 420 ++++++++--------- .../optimized/RecastMeshDetail.ll | 324 ++++++------- bench/ruby/optimized/transcode.ll | 360 +++++++------- bench/sqlite/optimized/sqlite3.ll | 86 ++-- bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll | 34 +- bench/wireshark/optimized/packet-ieee80211.ll | 8 +- bench/wireshark/optimized/packet-sctp.ll | 70 +-- bench/wireshark/optimized/packet-ssh.ll | 100 ++-- bench/wireshark/optimized/packet-tls-utils.ll | 120 ++--- bench/wolfssl/optimized/chacha.ll | 74 +-- 44 files changed, 3206 insertions(+), 3206 deletions(-) diff --git a/bench/abc/optimized/abcRec3.ll b/bench/abc/optimized/abcRec3.ll index 64be210bfce..3eb0f096790 100644 --- a/bench/abc/optimized/abcRec3.ll +++ b/bench/abc/optimized/abcRec3.ll @@ -2711,13 +2711,13 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 %5 = load ptr, ptr %4, align 8, !tbaa !78 %6 = icmp eq ptr %5, null - br i1 %6, label %56, label %7 + br i1 %6, label %54, label %7 7: ; preds = %1 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 %9 = load i32, ptr %8, align 8, !tbaa !111 %.not = icmp eq i32 %9, 0 - br i1 %.not, label %10, label %56 + br i1 %.not, label %10, label %54 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -2747,7 +2747,7 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ %22 = zext nneg i32 %.val30 to i64 %.pre43 = load i32, ptr %.val32, align 4, !tbaa !43 %23 = add nsw i32 %.val30, -2 - %24 = zext i32 %23 to i64 + %umin = zext i32 %23 to i64 br label %25 25: ; preds = %.lr.ph, %25 @@ -2769,7 +2769,7 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ %38 = load i32, ptr %37, align 4, !tbaa !43 %39 = add nsw i32 %36, %38 store i32 %39, ptr %37, align 4, !tbaa !43 - %40 = icmp samesign uge i64 %indvars.iv.next, %22 + %exitcond = icmp samesign uge i64 %indvars.iv.next, %22 %41 = icmp eq i64 %indvars.iv, %24 %or.cond = select i1 %40, i1 true, i1 %41 br i1 %or.cond, label %.critedge.preheader.preheader, label %25, !llvm.loop !112 @@ -2779,41 +2779,41 @@ define void @Lms_ManPrintFuncStats(ptr noundef captures(none) %0) local_unnamed_ .critedge.preheader: ; preds = %.critedge.preheader.preheader, %.critedge %indvars.iv40 = phi i64 [ %indvars.iv.next41, %.critedge ], [ 0, %.critedge.preheader.preheader ] - %42 = getelementptr inbounds nuw [17 x i32], ptr %2, i64 0, i64 %indvars.iv40 - %43 = load i32, ptr %42, align 4, !tbaa !43 - %.not29 = icmp eq i32 %43, 0 - br i1 %.not29, label %.critedge, label %44 - -44: ; preds = %.critedge.preheader - %45 = getelementptr inbounds nuw [17 x i32], ptr %3, i64 0, i64 %indvars.iv40 - %46 = load i32, ptr %45, align 4, !tbaa !43 - %47 = sitofp i32 %46 to double - %48 = sitofp i32 %43 to double - %49 = fdiv double %47, %48 - %50 = trunc nuw nsw i64 %indvars.iv40 to i32 - %51 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %50, i32 noundef %43, i32 noundef %46, double noundef %49) + %40 = getelementptr inbounds nuw [17 x i32], ptr %2, i64 0, i64 %indvars.iv40 + %41 = load i32, ptr %40, align 4, !tbaa !43 + %.not29 = icmp eq i32 %41, 0 + br i1 %.not29, label %.critedge, label %42 + +42: ; preds = %.critedge.preheader + %43 = getelementptr inbounds nuw [17 x i32], ptr %3, i64 0, i64 %indvars.iv40 + %44 = load i32, ptr %43, align 4, !tbaa !43 + %45 = sitofp i32 %44 to double + %46 = sitofp i32 %41 to double + %47 = fdiv double %45, %46 + %48 = trunc nuw nsw i64 %indvars.iv40 to i32 + %49 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %48, i32 noundef %41, i32 noundef %44, double noundef %47) br label %.critedge -.critedge: ; preds = %.critedge.preheader, %44 +.critedge: ; preds = %.critedge.preheader, %42 %indvars.iv.next41 = add nuw nsw i64 %indvars.iv40, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next41, 17 - br i1 %exitcond.not, label %52, label %.critedge.preheader, !llvm.loop !113 + %exitcond43.not = icmp eq i64 %indvars.iv.next41, 17 + br i1 %exitcond43.not, label %50, label %.critedge.preheader, !llvm.loop !113 -52: ; preds = %.critedge - %53 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %54 = load ptr, ptr %53, align 8, !tbaa !48 - %.not.i = icmp eq ptr %54, null - br i1 %.not.i, label %Vec_StrFree.exit, label %55 +50: ; preds = %.critedge + %51 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %52 = load ptr, ptr %51, align 8, !tbaa !48 + %.not.i = icmp eq ptr %52, null + br i1 %.not.i, label %Vec_StrFree.exit, label %53 -55: ; preds = %52 - tail call void @free(ptr noundef nonnull %54) #26 +53: ; preds = %50 + tail call void @free(ptr noundef nonnull %52) #26 br label %Vec_StrFree.exit -Vec_StrFree.exit: ; preds = %52, %55 +Vec_StrFree.exit: ; preds = %50, %53 tail call void @free(ptr noundef nonnull %17) #26 - br label %56 + br label %54 -56: ; preds = %7, %1, %Vec_StrFree.exit +54: ; preds = %7, %1, %Vec_StrFree.exit call void @llvm.lifetime.end.p0(i64 68, ptr nonnull %3) #26 call void @llvm.lifetime.end.p0(i64 68, ptr nonnull %2) #26 ret void diff --git a/bench/abc/optimized/bmcFx.ll b/bench/abc/optimized/bmcFx.ll index 5060f509fd8..e7962705177 100644 --- a/bench/abc/optimized/bmcFx.ll +++ b/bench/abc/optimized/bmcFx.ll @@ -1010,90 +1010,90 @@ Vec_IntPush.exit.i: ; preds = %Vec_IntPush.exit.si .lr.ph44.preheader.i: ; preds = %._crit_edge.i %217 = zext i32 %2 to i64 %218 = zext nneg i32 %.val37.i to i64 - %219 = load ptr, ptr %16, align 8, !tbaa !32 + %umin.i = load ptr, ptr %16, align 8, !tbaa !32 br label %.lr.ph44.i -.lr.ph44.i: ; preds = %228, %.lr.ph44.preheader.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph44.preheader.i ], [ %indvars.iv.next.i, %228 ] - %220 = getelementptr inbounds nuw i32, ptr %214, i64 %indvars.iv.i - %221 = load i32, ptr %220, align 4, !tbaa !11 - %222 = sext i32 %221 to i64 - %223 = getelementptr inbounds %struct.Tab_Obj_t_, ptr %219, i64 %222, i32 2 - %224 = load i64, ptr %223, align 4 - %225 = trunc i64 %224 to i32 - %226 = and i32 %225, 131071 - %227 = icmp eq i32 %226, 1 - br i1 %227, label %._crit_edge45.i, label %228 - -228: ; preds = %.lr.ph44.i - %229 = lshr i32 %225, 17 - %230 = lshr i64 %224, 32 - %231 = trunc nuw i64 %230 to i32 - %232 = and i32 %231, 32767 - %233 = lshr i64 %224, 47 - %234 = trunc nuw nsw i64 %233 to i32 - %235 = and i32 %234, 32767 - %236 = lshr i64 %224, 62 - %237 = getelementptr inbounds nuw [5 x ptr], ptr @__const.Tab_TabFindBest.pNames, i64 0, i64 %236 - %238 = load ptr, ptr %237, align 8, !tbaa !40 - %239 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef %229, i32 noundef %232, i32 noundef %235, ptr noundef %238, i32 noundef %226) - %240 = load i64, ptr %223, align 4 - %241 = lshr i64 %240, 62 - %242 = trunc nuw nsw i64 %241 to i32 - %243 = trunc i64 %240 to i32 - %244 = lshr i32 %243, 17 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %242, i32 noundef %244) - %245 = load i64, ptr %223, align 4 - %246 = lshr i64 %245, 32 - %247 = trunc nuw i64 %246 to i32 - %248 = and i32 %247, 32767 - %249 = lshr i64 %245, 47 - %250 = trunc nuw nsw i64 %249 to i32 - %251 = and i32 %250, 32767 - tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %248, i32 noundef %251) +.lr.ph44.i: ; preds = %229, %.lr.ph44.preheader.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph44.preheader.i ], [ %indvars.iv.next.i, %229 ] + %221 = getelementptr inbounds nuw i32, ptr %214, i64 %indvars.iv.i + %222 = load i32, ptr %221, align 4, !tbaa !11 + %223 = sext i32 %222 to i64 + %224 = getelementptr inbounds %struct.Tab_Obj_t_, ptr %219, i64 %223, i32 2 + %225 = load i64, ptr %224, align 4 + %226 = trunc i64 %225 to i32 + %227 = and i32 %226, 131071 + %228 = icmp eq i32 %227, 1 + br i1 %228, label %._crit_edge45.i, label %229 + +229: ; preds = %.lr.ph44.i + %230 = lshr i32 %226, 17 + %231 = lshr i64 %225, 32 + %232 = trunc nuw i64 %231 to i32 + %233 = and i32 %232, 32767 + %234 = lshr i64 %225, 47 + %235 = trunc nuw nsw i64 %234 to i32 + %236 = and i32 %235, 32767 + %237 = lshr i64 %225, 62 + %238 = getelementptr inbounds nuw [5 x ptr], ptr @__const.Tab_TabFindBest.pNames, i64 0, i64 %237 + %239 = load ptr, ptr %238, align 8, !tbaa !40 + %240 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef %230, i32 noundef %233, i32 noundef %236, ptr noundef %239, i32 noundef %227) + %241 = load i64, ptr %224, align 4 + %242 = lshr i64 %241, 62 + %243 = trunc nuw nsw i64 %242 to i32 + %244 = trunc i64 %241 to i32 + %245 = lshr i32 %244, 17 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %243, i32 noundef %245) + %246 = load i64, ptr %224, align 4 + %247 = lshr i64 %246, 32 + %248 = trunc nuw i64 %247 to i32 + %249 = and i32 %248, 32767 + %250 = lshr i64 %246, 47 + %251 = trunc nuw nsw i64 %250 to i32 + %252 = and i32 %251, 32767 + tail call fastcc void @Vec_IntPushTwo(ptr noundef nonnull %168, i32 noundef %249, i32 noundef %252) %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %252 = icmp samesign uge i64 %indvars.iv.next.i, %218 + %exitcond.i = icmp samesign uge i64 %indvars.iv.next.i, %218 %253 = icmp eq i64 %indvars.iv.next.i, %217 %or.cond.i = or i1 %252, %253 br i1 %or.cond.i, label %._crit_edge45.i, label %.lr.ph44.i, !llvm.loop !41 -._crit_edge45.i: ; preds = %228, %.lr.ph44.i, %._crit_edge.i +._crit_edge45.i: ; preds = %229, %.lr.ph44.i, %._crit_edge.i %.not.i39.i = icmp eq ptr %.val38.i, null - br i1 %.not.i39.i, label %Vec_IntFree.exit.i, label %254 + br i1 %.not.i39.i, label %Vec_IntFree.exit.i, label %253 -254: ; preds = %._crit_edge45.i +253: ; preds = %._crit_edge45.i tail call void @free(ptr noundef nonnull %.val38.i) #18 br label %Vec_IntFree.exit.i -Vec_IntFree.exit.i: ; preds = %254, %._crit_edge45.i +Vec_IntFree.exit.i: ; preds = %253, %._crit_edge45.i tail call void @free(ptr noundef nonnull %172) #18 %.not.i = icmp eq ptr %214, null - br i1 %.not.i, label %Tab_TabFindBest.exit, label %255 + br i1 %.not.i, label %Tab_TabFindBest.exit, label %254 -255: ; preds = %Vec_IntFree.exit.i +254: ; preds = %Vec_IntFree.exit.i tail call void @free(ptr noundef nonnull %214) #18 br label %Tab_TabFindBest.exit -Tab_TabFindBest.exit: ; preds = %Vec_IntFree.exit.i, %255 - %256 = load ptr, ptr %12, align 8, !tbaa !19 - %.not.i73 = icmp eq ptr %256, null - br i1 %.not.i73, label %Vec_StrFree.exit, label %257 +Tab_TabFindBest.exit: ; preds = %Vec_IntFree.exit.i, %254 + %255 = load ptr, ptr %12, align 8, !tbaa !19 + %.not.i73 = icmp eq ptr %255, null + br i1 %.not.i73, label %Vec_StrFree.exit, label %256 -257: ; preds = %Tab_TabFindBest.exit - tail call void @free(ptr noundef nonnull %256) #18 +256: ; preds = %Tab_TabFindBest.exit + tail call void @free(ptr noundef nonnull %255) #18 br label %Vec_StrFree.exit -Vec_StrFree.exit: ; preds = %Tab_TabFindBest.exit, %257 +Vec_StrFree.exit: ; preds = %Tab_TabFindBest.exit, %256 tail call void @free(ptr noundef nonnull %6) #18 - %258 = load ptr, ptr %16, align 8, !tbaa !32 - %.not.i74 = icmp eq ptr %258, null - br i1 %.not.i74, label %Tab_TabFree.exit, label %259 + %257 = load ptr, ptr %16, align 8, !tbaa !32 + %.not.i74 = icmp eq ptr %257, null + br i1 %.not.i74, label %Tab_TabFree.exit, label %258 -259: ; preds = %Vec_StrFree.exit - tail call void @free(ptr noundef nonnull %258) #18 +258: ; preds = %Vec_StrFree.exit + tail call void @free(ptr noundef nonnull %257) #18 br label %Tab_TabFree.exit -Tab_TabFree.exit: ; preds = %Vec_StrFree.exit, %259 +Tab_TabFree.exit: ; preds = %Vec_StrFree.exit, %258 tail call void @free(ptr noundef nonnull %14) #18 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #18 ret ptr %168 diff --git a/bench/abc/optimized/wlcAbc.ll b/bench/abc/optimized/wlcAbc.ll index 76687380eda..466adf47adc 100644 --- a/bench/abc/optimized/wlcAbc.ll +++ b/bench/abc/optimized/wlcAbc.ll @@ -64,7 +64,7 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %. = tail call i32 @llvm.smin.i32(i32 %.val67, i32 %.val68) %21 = ptrtoint ptr %16 to i64 %22 = zext nneg i32 %.05680 to i64 - %23 = zext nneg i32 %20 to i64 + %smax = zext nneg i32 %20 to i64 br label %24 24: ; preds = %12, %33 @@ -94,8 +94,8 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %41 = add i32 %., %40 %42 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.2, ptr noundef %39, i32 noundef %41, i32 noundef %34) #11 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not77.not = icmp samesign ult i64 %indvars.iv, %23 - br i1 %.not77.not, label %24, label %43, !llvm.loop !26 + %exitcond.not = icmp samesign ult i64 %indvars.iv, %23 + br i1 %exitcond.not, label %24, label %43, !llvm.loop !26 43: ; preds = %33 %44 = add nuw nsw i32 %20, 1 @@ -111,10 +111,10 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { br i1 %50, label %12, label %.critedge.preheader, !llvm.loop !28 51: ; preds = %.lr.ph85, %.critedge - %indvars.iv90 = phi i64 [ 0, %.lr.ph85 ], [ %indvars.iv.next91, %.critedge ] + %indvars.iv92 = phi i64 [ 0, %.lr.ph85 ], [ %indvars.iv.next93, %.critedge ] %.val74 = load ptr, ptr %10, align 8, !tbaa !10 %.val75 = load ptr, ptr %11, align 8, !tbaa !11 - %52 = getelementptr inbounds nuw i32, ptr %.val74, i64 %indvars.iv90 + %52 = getelementptr inbounds nuw i32, ptr %.val74, i64 %indvars.iv92 %53 = load i32, ptr %52, align 4, !tbaa !20 %54 = sext i32 %53 to i64 %55 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val75, i64 %54 @@ -125,7 +125,7 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %.64 = tail call i32 @llvm.smin.i32(i32 %.val69, i32 %.val70) %58 = ptrtoint ptr %55 to i64 %59 = sub i32 %.val70, %.val69 - %smax = tail call i32 @llvm.abs.i32(i32 %59, i1 false) + %smax90 = tail call i32 @llvm.abs.i32(i32 %59, i1 false) br label %60 60: ; preds = %51, %60 @@ -139,14 +139,14 @@ define void @Wlc_NtkPrintInputInfo(ptr noundef %0) local_unnamed_addr #0 { %66 = tail call ptr @Wlc_ObjName(ptr noundef nonnull %0, i32 noundef %65) #11 %67 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2, ptr noundef nonnull @.str.3, ptr noundef %66, i32 noundef %61) #11 %68 = add nuw i32 %.15582, 1 - %exitcond.not = icmp eq i32 %.15582, %smax - br i1 %exitcond.not, label %.critedge, label %60, !llvm.loop !29 + %exitcond91.not = icmp eq i32 %.15582, %smax90 + br i1 %exitcond91.not, label %.critedge, label %60, !llvm.loop !29 .critedge: ; preds = %60 - %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1 + %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %.val73 = load i32, ptr %8, align 4, !tbaa !3 %69 = sext i32 %.val73 to i64 - %70 = icmp slt i64 %indvars.iv.next91, %69 + %70 = icmp slt i64 %indvars.iv.next93, %69 br i1 %70, label %51, label %.critedge2, !llvm.loop !30 .critedge2: ; preds = %.critedge, %.critedge.preheader @@ -185,12 +185,12 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( br label %9 9: ; preds = %.lr.ph, %47 - %.val63 = phi i32 [ %.val51, %.lr.ph ], [ %.val, %47 ] - %indvars.iv59 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next60, %47 ] + %.val66 = phi i32 [ %.val51, %.lr.ph ], [ %.val, %47 ] + %indvars.iv62 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next63, %47 ] %.053 = phi i32 [ 0, %.lr.ph ], [ %.1, %47 ] %.val42 = load ptr, ptr %6, align 8, !tbaa !10 %.val43 = load ptr, ptr %7, align 8, !tbaa !11 - %10 = getelementptr inbounds nuw i32, ptr %.val42, i64 %indvars.iv59 + %10 = getelementptr inbounds nuw i32, ptr %.val42, i64 %indvars.iv62 %11 = load i32, ptr %10, align 4, !tbaa !20 %12 = sext i32 %11 to i64 %13 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val43, i64 %12 @@ -209,7 +209,7 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( %21 = add nuw nsw i32 %20, 1 %.val40 = load ptr, ptr %8, align 8, !tbaa !10 %22 = zext nneg i32 %.053 to i64 - %23 = zext nneg i32 %20 to i64 + %smax = zext nneg i32 %20 to i64 %invariant.gep = getelementptr inbounds nuw i32, ptr %.val40, i64 %22 br label %24 @@ -222,8 +222,8 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( 26: ; preds = %24 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not47.not = icmp samesign ult i64 %indvars.iv, %23 - br i1 %.not47.not, label %24, label %27, !llvm.loop !31 + %exitcond.not = icmp samesign ult i64 %indvars.iv, %23 + br i1 %exitcond.not, label %24, label %27, !llvm.loop !31 27: ; preds = %24, %26 %.034.lcssa.in = phi i64 [ %indvars.iv, %24 ], [ %indvars.iv.next, %26 ] @@ -258,8 +258,8 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( 44: ; preds = %36, %41 %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 - %.not48.not = icmp samesign ult i64 %indvars.iv55, %23 - br i1 %.not48.not, label %36, label %45, !llvm.loop !32 + %exitcond61.not = icmp samesign ult i64 %indvars.iv55, %23 + br i1 %exitcond61.not, label %36, label %45, !llvm.loop !32 45: ; preds = %44 %putchar = tail call i32 @putchar(i32 10) @@ -268,11 +268,11 @@ define void @Wlc_NtkPrintInvStats(ptr noundef %0, ptr noundef readonly captures( br label %47 47: ; preds = %9, %45, %29 - %.val = phi i32 [ %.val63, %9 ], [ %.val63, %29 ], [ %.val.pre, %45 ] + %.val = phi i32 [ %.val66, %9 ], [ %.val66, %29 ], [ %.val.pre, %45 ] %.1 = phi i32 [ %.053, %9 ], [ %30, %29 ], [ %46, %45 ] - %indvars.iv.next60 = add nuw nsw i64 %indvars.iv59, 1 + %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 %48 = sext i32 %.val to i64 - %49 = icmp slt i64 %indvars.iv.next60, %48 + %49 = icmp slt i64 %indvars.iv.next63, %48 br i1 %49, label %9, label %.critedge, !llvm.loop !33 .critedge: ; preds = %47, %3 @@ -328,33 +328,33 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br i1 %.not97, label %.lr.ph125.split.us, label %.lr.ph125.split .lr.ph125.split.us: ; preds = %.lr.ph125, %35 - %.val.us155 = phi i32 [ %.val.us, %35 ], [ %.val123, %.lr.ph125 ] - %indvars.iv145 = phi i64 [ %indvars.iv.next146, %35 ], [ 0, %.lr.ph125 ] + %.val.us158 = phi i32 [ %.val.us, %35 ], [ %.val123, %.lr.ph125 ] + %indvars.iv148 = phi i64 [ %indvars.iv.next149, %35 ], [ 0, %.lr.ph125 ] %.val102.us = load ptr, ptr %24, align 8, !tbaa !10 - %27 = getelementptr inbounds nuw i32, ptr %.val102.us, i64 %indvars.iv145 + %27 = getelementptr inbounds nuw i32, ptr %.val102.us, i64 %indvars.iv148 %28 = load i32, ptr %27, align 4, !tbaa !20 %29 = icmp eq i32 %28, 0 br i1 %29, label %35, label %30 30: ; preds = %.lr.ph125.split.us %31 = call ptr @Abc_NtkCreateObj(ptr noundef %7, i32 noundef 2) #11 - %32 = trunc nuw nsw i64 %indvars.iv145 to i32 + %32 = trunc nuw nsw i64 %indvars.iv148 to i32 %33 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %4, ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %32) #11 %34 = call ptr @Abc_ObjAssignName(ptr noundef %31, ptr noundef nonnull %4, ptr noundef null) #11 %.val.us.pre = load i32, ptr %22, align 4, !tbaa !3 br label %35 35: ; preds = %30, %.lr.ph125.split.us - %.val.us = phi i32 [ %.val.us.pre, %30 ], [ %.val.us155, %.lr.ph125.split.us ] - %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 + %.val.us = phi i32 [ %.val.us.pre, %30 ], [ %.val.us158, %.lr.ph125.split.us ] + %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 %36 = sext i32 %.val.us to i64 - %37 = icmp slt i64 %indvars.iv.next146, %36 + %37 = icmp slt i64 %indvars.iv.next149, %36 br i1 %37, label %.lr.ph125.split.us, label %.critedge, !llvm.loop !49 .lr.ph125.split: ; preds = %.lr.ph125, %52 - %indvars.iv141 = phi i64 [ %indvars.iv.next142, %52 ], [ 0, %.lr.ph125 ] + %indvars.iv144 = phi i64 [ %indvars.iv.next145, %52 ], [ 0, %.lr.ph125 ] %.val102 = load ptr, ptr %24, align 8, !tbaa !10 - %38 = getelementptr inbounds nuw i32, ptr %.val102, i64 %indvars.iv141 + %38 = getelementptr inbounds nuw i32, ptr %.val102, i64 %indvars.iv144 %39 = load i32, ptr %38, align 4, !tbaa !20 %40 = icmp eq i32 %39, 0 br i1 %40, label %52, label %41 @@ -363,17 +363,17 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % %42 = call ptr @Abc_NtkCreateObj(ptr noundef %7, i32 noundef 2) #11 %.val110 = load i32, ptr %25, align 4, !tbaa !50 %43 = sext i32 %.val110 to i64 - %44 = icmp slt i64 %indvars.iv141, %43 + %44 = icmp slt i64 %indvars.iv144, %43 br i1 %44, label %45, label %48 45: ; preds = %41 %.val111 = load ptr, ptr %26, align 8, !tbaa !52 - %46 = getelementptr inbounds nuw ptr, ptr %.val111, i64 %indvars.iv141 + %46 = getelementptr inbounds nuw ptr, ptr %.val111, i64 %indvars.iv144 %47 = load ptr, ptr %46, align 8, !tbaa !53 br label %.sink.split 48: ; preds = %41 - %49 = trunc nuw nsw i64 %indvars.iv141 to i32 + %49 = trunc nuw nsw i64 %indvars.iv144 to i32 %50 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %4, ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %49) #11 br label %.sink.split @@ -383,10 +383,10 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br label %52 52: ; preds = %.sink.split, %.lr.ph125.split - %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1 + %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 1 %.val = load i32, ptr %22, align 4, !tbaa !3 %53 = sext i32 %.val to i64 - %54 = icmp slt i64 %indvars.iv.next142, %53 + %54 = icmp slt i64 %indvars.iv.next145, %53 br i1 %54, label %.lr.ph125.split, label %.critedge, !llvm.loop !49 .critedge: ; preds = %52, %35, %17 @@ -403,12 +403,12 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br label %124 58: ; preds = %.lr.ph, %99 - %.val99153 = phi i32 [ %.val99120, %.lr.ph ], [ %.val99, %99 ] - %indvars.iv137 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next138, %99 ] + %.val99156 = phi i32 [ %.val99120, %.lr.ph ], [ %.val99, %99 ] + %indvars.iv140 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next141, %99 ] %.085121 = phi i32 [ 0, %.lr.ph ], [ %.186, %99 ] %.val103 = load ptr, ptr %14, align 8, !tbaa !10 %.val104 = load ptr, ptr %15, align 8, !tbaa !11 - %59 = getelementptr inbounds nuw i32, ptr %.val103, i64 %indvars.iv137 + %59 = getelementptr inbounds nuw i32, ptr %.val103, i64 %indvars.iv140 %60 = load i32, ptr %59, align 4, !tbaa !20 %61 = sext i32 %60 to i64 %62 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val104, i64 %61 @@ -427,7 +427,7 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % %70 = add nuw nsw i32 %69, 1 %.val101 = load ptr, ptr %16, align 8, !tbaa !10 %71 = zext nneg i32 %.085121 to i64 - %72 = zext nneg i32 %69 to i64 + %smax = zext nneg i32 %69 to i64 %invariant.gep = getelementptr inbounds nuw i32, ptr %.val101, i64 %71 br label %73 @@ -440,8 +440,8 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % 75: ; preds = %73 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not116.not = icmp samesign ult i64 %indvars.iv, %72 - br i1 %.not116.not, label %73, label %76, !llvm.loop !55 + %exitcond.not = icmp samesign ult i64 %indvars.iv, %72 + br i1 %exitcond.not, label %73, label %76, !llvm.loop !55 76: ; preds = %73, %75 %.087.lcssa.in = phi i64 [ %indvars.iv, %73 ], [ %indvars.iv.next, %75 ] @@ -481,8 +481,8 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % 96: ; preds = %81, %86 %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1 - %.not117.not = icmp samesign ult i64 %indvars.iv133, %72 - br i1 %.not117.not, label %81, label %97, !llvm.loop !56 + %exitcond139.not = icmp samesign ult i64 %indvars.iv133, %72 + br i1 %exitcond139.not, label %81, label %97, !llvm.loop !56 97: ; preds = %96 %98 = add nuw nsw i32 %70, %.085121 @@ -490,11 +490,11 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br label %99 99: ; preds = %58, %97, %79 - %.val99 = phi i32 [ %.val99153, %58 ], [ %.val99153, %79 ], [ %.val99.pre, %97 ] + %.val99 = phi i32 [ %.val99156, %58 ], [ %.val99156, %79 ], [ %.val99.pre, %97 ] %.186 = phi i32 [ %.085121, %58 ], [ %80, %79 ], [ %98, %97 ] - %indvars.iv.next138 = add nuw nsw i64 %indvars.iv137, 1 + %indvars.iv.next141 = add nuw nsw i64 %indvars.iv140, 1 %100 = sext i32 %.val99 to i64 - %101 = icmp slt i64 %indvars.iv.next138, %100 + %101 = icmp slt i64 %indvars.iv.next141, %100 br i1 %101, label %58, label %.critedge2, !llvm.loop !57 .critedge2: ; preds = %99, %8, %.critedge @@ -507,19 +507,19 @@ define ptr @Wlc_NtkGetInv(ptr noundef %0, ptr noundef %1, ptr noundef readonly % br i1 %105, label %.lr.ph130, label %.critedge4 .lr.ph130: ; preds = %.critedge2, %.lr.ph130 - %indvars.iv149 = phi i64 [ %indvars.iv.next150, %.lr.ph130 ], [ 0, %.critedge2 ] + %indvars.iv152 = phi i64 [ %indvars.iv.next153, %.lr.ph130 ], [ 0, %.critedge2 ] %.val113129 = phi ptr [ %.val113, %.lr.ph130 ], [ %.val113126, %.critedge2 ] %106 = getelementptr i8, ptr %.val113129, i64 8 %.val114.val = load ptr, ptr %106, align 8, !tbaa !52 - %107 = getelementptr inbounds nuw ptr, ptr %.val114.val, i64 %indvars.iv149 + %107 = getelementptr inbounds nuw ptr, ptr %.val114.val, i64 %indvars.iv152 %108 = load ptr, ptr %107, align 8, !tbaa !53 call void @Abc_ObjAddFanin(ptr noundef %102, ptr noundef %108) #11 - %indvars.iv.next150 = add nuw nsw i64 %indvars.iv149, 1 + %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1 %.val113 = load ptr, ptr %103, align 8, !tbaa !54 %109 = getelementptr i8, ptr %.val113, i64 4 %.val113.val = load i32, ptr %109, align 4, !tbaa !50 %110 = sext i32 %.val113.val to i64 - %111 = icmp slt i64 %indvars.iv.next150, %110 + %111 = icmp slt i64 %indvars.iv.next153, %110 br i1 %111, label %.lr.ph130, label %.critedge4, !llvm.loop !58 .critedge4: ; preds = %.lr.ph130, %.critedge2 diff --git a/bench/abc/optimized/wlnWlc.ll b/bench/abc/optimized/wlnWlc.ll index ea4bb651ed2..6a35c70fafe 100644 --- a/bench/abc/optimized/wlnWlc.ll +++ b/bench/abc/optimized/wlnWlc.ll @@ -358,13 +358,13 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. br label %252 129: ; preds = %.lr.ph393, %.critedge - %.val263468 = phi i32 [ %.val263390, %.lr.ph393 ], [ %.val263, %.critedge ] - %130 = phi ptr [ %17, %.lr.ph393 ], [ %.pre.i466, %.critedge ] - %indvars.iv439 = phi i64 [ 0, %.lr.ph393 ], [ %indvars.iv.next440, %.critedge ] + %.val263470 = phi i32 [ %.val263390, %.lr.ph393 ], [ %.val263, %.critedge ] + %130 = phi ptr [ %17, %.lr.ph393 ], [ %.pre.i468, %.critedge ] + %indvars.iv441 = phi i64 [ 0, %.lr.ph393 ], [ %indvars.iv.next442, %.critedge ] %.0220391 = phi i32 [ 0, %.lr.ph393 ], [ %.1221, %.critedge ] %.val265 = load ptr, ptr %89, align 8, !tbaa !29 %.val266 = load ptr, ptr %90, align 8, !tbaa !21 - %131 = getelementptr inbounds nuw i32, ptr %.val265, i64 %indvars.iv439 + %131 = getelementptr inbounds nuw i32, ptr %.val265, i64 %indvars.iv441 %132 = load i32, ptr %131, align 4, !tbaa !3 %133 = sext i32 %132 to i64 %134 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val266, i64 %133 @@ -382,7 +382,7 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. %141 = call i32 @llvm.abs.i32(i32 %140, i1 true) %142 = load ptr, ptr %91, align 8, !tbaa !42 %143 = sext i32 %.0220391 to i64 - %144 = zext nneg i32 %141 to i64 + %smax = zext nneg i32 %141 to i64 %invariant.gep = getelementptr i8, ptr %142, i64 %143 br label %145 @@ -395,15 +395,15 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. 148: ; preds = %145 %indvars.iv.next423 = add nuw nsw i64 %indvars.iv422, 1 - %.not361.not = icmp samesign ult i64 %indvars.iv422, %144 - br i1 %.not361.not, label %145, label %149, !llvm.loop !43 + %exitcond.not = icmp samesign ult i64 %indvars.iv422, %144 + br i1 %exitcond.not, label %145, label %149, !llvm.loop !43 149: ; preds = %145, %148 %.0219.lcssa.in = phi i64 [ %indvars.iv422, %145 ], [ %indvars.iv.next423, %148 ] %.0219.lcssa = trunc i64 %.0219.lcssa.in to i32 %150 = add nuw nsw i32 %141, 1 %.val250 = load i32, ptr %7, align 4, !tbaa !27 - %151 = trunc nuw nsw i64 %indvars.iv439 to i32 + %151 = trunc nuw nsw i64 %indvars.iv441 to i32 %152 = sub nsw i32 %151, %.val250 %153 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %152, i32 noundef %150) %.val273 = load i32, ptr %138, align 8, !tbaa !38 @@ -413,28 +413,28 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. %156 = add nuw nsw i32 %155, 1 %157 = icmp eq i32 %156, %.0219.lcssa %158 = load ptr, ptr %91, align 8, !tbaa !42 - %invariant.gep495 = getelementptr i8, ptr %158, i64 %143 + %invariant.gep497 = getelementptr i8, ptr %158, i64 %143 br i1 %157, label %.preheader367, label %.preheader368 .preheader368: ; preds = %149 - %wide.trip.count = zext nneg i32 %156 to i64 + %wide.trip.count429 = zext nneg i32 %156 to i64 br label %175 .preheader367: ; preds = %149 - %wide.trip.count433 = and i64 %.0219.lcssa.in, 4294967295 + %wide.trip.count435 = and i64 %.0219.lcssa.in, 4294967295 br label %159 159: ; preds = %.preheader367, %159 - %indvars.iv429 = phi i64 [ 0, %.preheader367 ], [ %indvars.iv.next430, %159 ] + %indvars.iv431 = phi i64 [ 0, %.preheader367 ], [ %indvars.iv.next432, %159 ] %.0217386 = phi i32 [ 0, %.preheader367 ], [ %163, %159 ] - %gep496 = getelementptr i8, ptr %invariant.gep495, i64 %indvars.iv429 - %160 = load i8, ptr %gep496, align 1, !tbaa !7 + %gep498 = getelementptr i8, ptr %invariant.gep497, i64 %indvars.iv431 + %160 = load i8, ptr %gep498, align 1, !tbaa !7 %161 = icmp eq i8 %160, 48 %162 = zext i1 %161 to i32 %163 = add nuw nsw i32 %.0217386, %162 - %indvars.iv.next430 = add nuw nsw i64 %indvars.iv429, 1 - %exitcond434.not = icmp eq i64 %indvars.iv.next430, %wide.trip.count433 - br i1 %exitcond434.not, label %164, label %159, !llvm.loop !44 + %indvars.iv.next432 = add nuw nsw i64 %indvars.iv431, 1 + %exitcond436.not = icmp eq i64 %indvars.iv.next432, %wide.trip.count435 + br i1 %exitcond436.not, label %164, label %159, !llvm.loop !44 164: ; preds = %159 %165 = icmp eq i32 %163, %.0219.lcssa @@ -445,33 +445,33 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. br label %.loopexit .preheader: ; preds = %164, %.preheader - %indvars.iv435 = phi i64 [ %indvars.iv.next436, %.preheader ], [ 0, %164 ] + %indvars.iv437 = phi i64 [ %indvars.iv.next438, %.preheader ], [ 0, %164 ] %167 = load ptr, ptr %91, align 8, !tbaa !42 - %168 = getelementptr i8, ptr %167, i64 %indvars.iv435 + %168 = getelementptr i8, ptr %167, i64 %indvars.iv437 %169 = getelementptr i8, ptr %168, i64 %143 %170 = load i8, ptr %169, align 1, !tbaa !7 %171 = sext i8 %170 to i32 %putchar235 = call i32 @putchar(i32 %171) - %indvars.iv.next436 = add nuw nsw i64 %indvars.iv435, 1 + %indvars.iv.next438 = add nuw nsw i64 %indvars.iv437, 1 %.val279 = load i32, ptr %138, align 8, !tbaa !38 %.val280 = load i32, ptr %139, align 4, !tbaa !40 %172 = sub nsw i32 %.val279, %.val280 %173 = call i32 @llvm.abs.i32(i32 %172, i1 true) %174 = zext nneg i32 %173 to i64 - %.not364.not = icmp samesign ult i64 %indvars.iv435, %174 + %.not364.not = icmp samesign ult i64 %indvars.iv437, %174 br i1 %.not364.not, label %.preheader, label %.loopexit, !llvm.loop !45 175: ; preds = %.preheader368, %175 %indvars.iv425 = phi i64 [ 0, %.preheader368 ], [ %indvars.iv.next426, %175 ] %.0384 = phi i32 [ 0, %.preheader368 ], [ %179, %175 ] - %gep494 = getelementptr i8, ptr %invariant.gep495, i64 %indvars.iv425 - %176 = load i8, ptr %gep494, align 1, !tbaa !7 + %gep496 = getelementptr i8, ptr %invariant.gep497, i64 %indvars.iv425 + %176 = load i8, ptr %gep496, align 1, !tbaa !7 %177 = icmp eq i8 %176, 120 %178 = zext i1 %177 to i32 %179 = add nuw nsw i32 %.0384, %178 %indvars.iv.next426 = add nuw nsw i64 %indvars.iv425, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next426, %wide.trip.count - br i1 %exitcond.not, label %180, label %175, !llvm.loop !46 + %exitcond430.not = icmp eq i64 %indvars.iv.next426, %wide.trip.count429 + br i1 %exitcond430.not, label %180, label %175, !llvm.loop !46 180: ; preds = %175 %putchar = call i32 @putchar(i32 120) @@ -523,8 +523,8 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. %209 = and i64 %.0219.lcssa.in, 4294967295 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep.i, ptr noundef nonnull readonly align 1 dereferenceable(1) %202, i64 %209, i1 false), !tbaa !7 %210 = add i64 %.0219.lcssa.in, %207 - %sext482 = shl i64 %210, 32 - %211 = ashr exact i64 %sext482, 32 + %sext484 = shl i64 %210, 32 + %211 = ashr exact i64 %sext484, 32 %212 = getelementptr inbounds i8, ptr %205, i64 %211 store i8 0, ptr %212, align 1, !tbaa !7 %213 = load ptr, ptr %29, align 8, !tbaa !10 @@ -578,18 +578,18 @@ Wln_NtkCleanNameId.exit: ; preds = %Vec_IntGrow.exit.i. br label %Vec_IntPush.exit.sink.split Vec_IntPush.exit.sink.split: ; preds = %234, %236, %226, %228 - %.sink498 = phi ptr [ %227, %226 ], [ %229, %228 ], [ %235, %234 ], [ %237, %236 ] + %.sink500 = phi ptr [ %227, %226 ], [ %229, %228 ], [ %235, %234 ], [ %237, %236 ] %.sink = phi i32 [ 16, %226 ], [ 16, %228 ], [ %231, %234 ], [ %231, %236 ] - store ptr %.sink498, ptr %18, align 8, !tbaa !29 + store ptr %.sink500, ptr %18, align 8, !tbaa !29 store i32 %.sink, ptr %10, align 8, !tbaa !28 br label %Vec_IntPush.exit Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.sink.split, %215 - %.pre.i467 = phi ptr [ %130, %215 ], [ %.sink498, %Vec_IntPush.exit.sink.split ] + %.pre.i469 = phi ptr [ %130, %215 ], [ %.sink500, %Vec_IntPush.exit.sink.split ] %238 = add nsw i32 %.val241, 1 store i32 %238, ptr %12, align 4, !tbaa !27 %239 = sext i32 %.val241 to i64 - %240 = getelementptr inbounds i32, ptr %.pre.i467, i64 %239 + %240 = getelementptr inbounds i32, ptr %.pre.i469, i64 %239 store i32 %195, ptr %240, align 4, !tbaa !3 %.val293 = load i32, ptr %138, align 8, !tbaa !38 %.val294 = load i32, ptr %139, align 4, !tbaa !40 @@ -601,12 +601,12 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %.critedge .critedge: ; preds = %129, %Vec_IntPush.exit - %.val263 = phi i32 [ %.val263468, %129 ], [ %.val263.pre, %Vec_IntPush.exit ] - %.pre.i466 = phi ptr [ %130, %129 ], [ %.pre.i467, %Vec_IntPush.exit ] + %.val263 = phi i32 [ %.val263470, %129 ], [ %.val263.pre, %Vec_IntPush.exit ] + %.pre.i468 = phi ptr [ %130, %129 ], [ %.pre.i469, %Vec_IntPush.exit ] %.1221 = phi i32 [ %.0220391, %129 ], [ %244, %Vec_IntPush.exit ] - %indvars.iv.next440 = add nuw nsw i64 %indvars.iv439, 1 + %indvars.iv.next442 = add nuw nsw i64 %indvars.iv441, 1 %245 = sext i32 %.val263 to i64 - %246 = icmp slt i64 %indvars.iv.next440, %245 + %246 = icmp slt i64 %indvars.iv.next442, %245 br i1 %246, label %129, label %.critedge2.preheader, !llvm.loop !47 .critedge4.preheader: ; preds = %.critedge2, %.critedge.preheader, %.critedge2.preheader @@ -622,11 +622,11 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %291 252: ; preds = %.lr.ph396, %.critedge2 - %.val264473 = phi i32 [ %.val263, %.lr.ph396 ], [ %.val264, %.critedge2 ] - %.val268 = phi ptr [ %.val268.pre, %.lr.ph396 ], [ %.val268471, %.critedge2 ] - %indvars.iv443 = phi i64 [ 0, %.lr.ph396 ], [ %indvars.iv.next444, %.critedge2 ] + %.val264475 = phi i32 [ %.val263, %.lr.ph396 ], [ %.val264, %.critedge2 ] + %.val268 = phi ptr [ %.val268.pre, %.lr.ph396 ], [ %.val268473, %.critedge2 ] + %indvars.iv445 = phi i64 [ 0, %.lr.ph396 ], [ %indvars.iv.next446, %.critedge2 ] %.val267 = load ptr, ptr %125, align 8, !tbaa !29 - %253 = getelementptr inbounds nuw i32, ptr %.val267, i64 %indvars.iv443 + %253 = getelementptr inbounds nuw i32, ptr %.val267, i64 %indvars.iv445 %254 = load i32, ptr %253, align 4, !tbaa !3 %255 = sext i32 %254 to i64 %256 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val268, i64 %255 @@ -670,11 +670,11 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %.critedge2 .critedge2: ; preds = %252, %260 - %.val264 = phi i32 [ %.val264473, %252 ], [ %.val264.pre, %260 ] - %.val268471 = phi ptr [ %.val268, %252 ], [ %.val239, %260 ] - %indvars.iv.next444 = add nuw nsw i64 %indvars.iv443, 1 + %.val264 = phi i32 [ %.val264475, %252 ], [ %.val264.pre, %260 ] + %.val268473 = phi ptr [ %.val268, %252 ], [ %.val239, %260 ] + %indvars.iv.next446 = add nuw nsw i64 %indvars.iv445, 1 %284 = sext i32 %.val264 to i64 - %285 = icmp slt i64 %indvars.iv.next444, %284 + %285 = icmp slt i64 %indvars.iv.next446, %284 br i1 %285, label %252, label %.critedge4.preheader, !llvm.loop !48 .critedge6.preheader: ; preds = %.critedge4, %.critedge4.preheader @@ -690,10 +690,10 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %.critedge6 291: ; preds = %.lr.ph404, %.critedge4 - %.val297475 = phi i32 [ %.val297402, %.lr.ph404 ], [ %.val297, %.critedge4 ] - %indvars.iv451 = phi i64 [ 1, %.lr.ph404 ], [ %indvars.iv.next452, %.critedge4 ] + %.val297477 = phi i32 [ %.val297402, %.lr.ph404 ], [ %.val297, %.critedge4 ] + %indvars.iv453 = phi i64 [ 1, %.lr.ph404 ], [ %indvars.iv.next454, %.critedge4 ] %.val253 = load ptr, ptr %248, align 8, !tbaa !21 - %292 = getelementptr inbounds nuw %struct.Wlc_Obj_t_, ptr %.val253, i64 %indvars.iv451 + %292 = getelementptr inbounds nuw %struct.Wlc_Obj_t_, ptr %.val253, i64 %indvars.iv453 %.val298 = load i16, ptr %292, align 8 %293 = and i16 %.val298, 61 %narrow.i.not = icmp eq i16 %293, 1 @@ -727,7 +727,7 @@ Vec_IntPush.exit: ; preds = %Vec_IntPush.exit.si br label %312 312: ; preds = %.lr.ph400, %Vec_IntPush.exit323 - %indvars.iv447 = phi i64 [ 0, %.lr.ph400 ], [ %indvars.iv.next448, %Vec_IntPush.exit323 ] + %indvars.iv449 = phi i64 [ 0, %.lr.ph400 ], [ %indvars.iv.next450, %Vec_IntPush.exit323 ] %.val299399 = phi i32 [ %.val299397, %.lr.ph400 ], [ %.val299, %Vec_IntPush.exit323 ] %313 = icmp ugt i32 %.val299399, 2 br i1 %313, label %Wlc_ObjHasArray.exit.thread.i.i, label %314 @@ -746,7 +746,7 @@ Wlc_ObjHasArray.exit.thread.i.i: ; preds = %314, %314, %312 Wlc_ObjFaninId.exit: ; preds = %314, %Wlc_ObjHasArray.exit.thread.i.i %318 = phi ptr [ %317, %Wlc_ObjHasArray.exit.thread.i.i ], [ %311, %314 ] - %319 = getelementptr inbounds nuw i32, ptr %318, i64 %indvars.iv447 + %319 = getelementptr inbounds nuw i32, ptr %318, i64 %indvars.iv449 %320 = load i32, ptr %319, align 4, !tbaa !3 %.val300 = load ptr, ptr %249, align 8, !tbaa !29 %321 = sext i32 %320 to i64 @@ -814,10 +814,10 @@ Vec_IntPush.exit323: ; preds = %.Vec_IntGrow.exit10 %350 = sext i32 %348 to i64 %351 = getelementptr inbounds i32, ptr %347, i64 %350 store i32 %323, ptr %351, align 4, !tbaa !3 - %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1 + %indvars.iv.next450 = add nuw nsw i64 %indvars.iv449, 1 %.val299 = load i32, ptr %309, align 4, !tbaa !49 %352 = sext i32 %.val299 to i64 - %353 = icmp slt i64 %indvars.iv.next448, %352 + %353 = icmp slt i64 %indvars.iv.next450, %352 br i1 %353, label %312, label %.critedge8, !llvm.loop !50 .critedge8: ; preds = %Vec_IntPush.exit323, %297 @@ -1367,16 +1367,16 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge8 %614 = getelementptr inbounds i32, ptr %.val259, i64 %613 store i32 %612, ptr %614, align 4, !tbaa !3 %.val262 = load ptr, ptr %249, align 8, !tbaa !29 - %615 = getelementptr inbounds nuw i32, ptr %.val262, i64 %indvars.iv451 + %615 = getelementptr inbounds nuw i32, ptr %.val262, i64 %indvars.iv453 store i32 %308, ptr %615, align 4, !tbaa !3 %.val297.pre = load i32, ptr %20, align 8, !tbaa !31 br label %.critedge4 .critedge4: ; preds = %291, %294, %604 - %.val297 = phi i32 [ %.val297475, %291 ], [ %.val297475, %294 ], [ %.val297.pre, %604 ] - %indvars.iv.next452 = add nuw nsw i64 %indvars.iv451, 1 + %.val297 = phi i32 [ %.val297477, %291 ], [ %.val297477, %294 ], [ %.val297.pre, %604 ] + %indvars.iv.next454 = add nuw nsw i64 %indvars.iv453, 1 %616 = sext i32 %.val297 to i64 - %617 = icmp slt i64 %indvars.iv.next452, %616 + %617 = icmp slt i64 %indvars.iv.next454, %616 br i1 %617, label %291, label %.critedge6.preheader, !llvm.loop !63 .critedge10.preheader: ; preds = %.critedge6, %.critedge6.preheader @@ -1392,10 +1392,10 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge8 br label %645 .critedge6: ; preds = %.lr.ph407, %.critedge6 - %indvars.iv455 = phi i64 [ 0, %.lr.ph407 ], [ %indvars.iv.next456, %.critedge6 ] + %indvars.iv457 = phi i64 [ 0, %.lr.ph407 ], [ %indvars.iv.next458, %.critedge6 ] %.val307 = load ptr, ptr %288, align 8, !tbaa !29 %.val308 = load ptr, ptr %289, align 8, !tbaa !21 - %623 = getelementptr inbounds nuw i32, ptr %.val307, i64 %indvars.iv455 + %623 = getelementptr inbounds nuw i32, ptr %.val307, i64 %indvars.iv457 %624 = load i32, ptr %623, align 4, !tbaa !3 %625 = sext i32 %624 to i64 %626 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val308, i64 %625 @@ -1419,24 +1419,24 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge8 %641 = getelementptr inbounds i8, ptr %.val301, i64 %640 %642 = load i32, ptr %641, align 4, !tbaa !3 call void @Wln_ObjAddFanin(ptr noundef %24, i32 noundef %635, i32 noundef %642) #15 - %indvars.iv.next456 = add nuw nsw i64 %indvars.iv455, 1 + %indvars.iv.next458 = add nuw nsw i64 %indvars.iv457, 1 %.val303 = load i32, ptr %286, align 4, !tbaa !27 %643 = sext i32 %.val303 to i64 - %644 = icmp slt i64 %indvars.iv.next456, %643 + %644 = icmp slt i64 %indvars.iv.next458, %643 br i1 %644, label %.critedge6, label %.critedge10.preheader, !llvm.loop !64 645: ; preds = %.lr.ph411, %.critedge10 - %.val248479 = phi i32 [ %.val248409, %.lr.ph411 ], [ %.val248, %.critedge10 ] - %indvars.iv460 = phi i64 [ 0, %.lr.ph411 ], [ %indvars.iv.next461, %.critedge10 ] + %.val248481 = phi i32 [ %.val248409, %.lr.ph411 ], [ %.val248, %.critedge10 ] + %indvars.iv462 = phi i64 [ 0, %.lr.ph411 ], [ %indvars.iv.next463, %.critedge10 ] %.val309 = load ptr, ptr %619, align 8, !tbaa !29 %.val310 = load ptr, ptr %620, align 8, !tbaa !21 - %646 = getelementptr inbounds nuw i32, ptr %.val309, i64 %indvars.iv460 + %646 = getelementptr inbounds nuw i32, ptr %.val309, i64 %indvars.iv462 %647 = load i32, ptr %646, align 4, !tbaa !3 %648 = sext i32 %647 to i64 %649 = getelementptr inbounds %struct.Wlc_Obj_t_, ptr %.val310, i64 %648 %.val304 = load i32, ptr %286, align 4, !tbaa !27 %650 = sext i32 %.val304 to i64 - %651 = icmp slt i64 %indvars.iv460, %650 + %651 = icmp slt i64 %indvars.iv462, %650 br i1 %651, label %.critedge10, label %652 652: ; preds = %645 @@ -1518,11 +1518,11 @@ Vec_IntPush.exit349.sink.split: ; preds = %682 %688 = shl nuw nsw i32 %684, 1 %689 = zext nneg i32 %688 to i64 %690 = shl nuw nsw i64 %689, 2 - %.sink501 = select i1 %687, i64 64, i64 %690 - %.sink499 = select i1 %687, i32 16, i32 %688 - %691 = call ptr @realloc(ptr noundef nonnull %683, i64 noundef %.sink501) #17 + %.sink503 = select i1 %687, i64 64, i64 %690 + %.sink501 = select i1 %687, i32 16, i32 %688 + %691 = call ptr @realloc(ptr noundef nonnull %683, i64 noundef %.sink503) #17 store ptr %691, ptr %6, align 8, !tbaa !29 - store i32 %.sink499, ptr %3, align 8, !tbaa !28 + store i32 %.sink501, ptr %3, align 8, !tbaa !28 br label %Vec_IntPush.exit349 Vec_IntPush.exit349: ; preds = %Vec_IntPush.exit349.sink.split, %682 @@ -1534,12 +1534,12 @@ Vec_IntPush.exit349: ; preds = %Vec_IntPush.exit349 %696 = getelementptr inbounds i32, ptr %692, i64 %695 store i32 0, ptr %696, align 4, !tbaa !3 %697 = add nuw nsw i32 %.4226408, 1 - %exitcond459.not = icmp eq i32 %697, 6 - br i1 %exitcond459.not, label %698, label %682, !llvm.loop !65 + %exitcond461.not = icmp eq i32 %697, 6 + br i1 %exitcond461.not, label %698, label %682, !llvm.loop !65 698: ; preds = %Vec_IntPush.exit349 %.val305 = load i32, ptr %286, align 4, !tbaa !27 - %699 = trunc nuw nsw i64 %indvars.iv460 to i32 + %699 = trunc nuw nsw i64 %indvars.iv462 to i32 %700 = sub nsw i32 %699, %.val305 %.val251 = load ptr, ptr %18, align 8, !tbaa !29 %701 = sext i32 %700 to i64 @@ -1555,11 +1555,11 @@ Vec_IntPush.exit356.sink.split: ; preds = %698 %708 = shl nuw nsw i32 %704, 1 %709 = zext nneg i32 %708 to i64 %710 = shl nuw nsw i64 %709, 2 - %.sink504 = select i1 %707, i64 64, i64 %710 - %.sink502 = select i1 %707, i32 16, i32 %708 - %711 = call ptr @realloc(ptr noundef nonnull %692, i64 noundef %.sink504) #17 + %.sink506 = select i1 %707, i64 64, i64 %710 + %.sink504 = select i1 %707, i32 16, i32 %708 + %711 = call ptr @realloc(ptr noundef nonnull %692, i64 noundef %.sink506) #17 store ptr %711, ptr %6, align 8, !tbaa !29 - store i32 %.sink502, ptr %3, align 8, !tbaa !28 + store i32 %.sink504, ptr %3, align 8, !tbaa !28 br label %Vec_IntPush.exit356 Vec_IntPush.exit356: ; preds = %Vec_IntPush.exit356.sink.split, %698 @@ -1581,10 +1581,10 @@ Vec_IntPush.exit356: ; preds = %Vec_IntPush.exit356 br label %.critedge10 .critedge10: ; preds = %645, %Vec_IntPush.exit356 - %.val248 = phi i32 [ %.val248479, %645 ], [ %.val248.pre, %Vec_IntPush.exit356 ] - %indvars.iv.next461 = add nuw nsw i64 %indvars.iv460, 1 + %.val248 = phi i32 [ %.val248481, %645 ], [ %.val248.pre, %Vec_IntPush.exit356 ] + %indvars.iv.next463 = add nuw nsw i64 %indvars.iv462, 1 %722 = sext i32 %.val248 to i64 - %723 = icmp slt i64 %indvars.iv.next461, %722 + %723 = icmp slt i64 %indvars.iv.next463, %722 br i1 %723, label %645, label %.critedge12, !llvm.loop !66 .critedge12: ; preds = %.critedge10, %.critedge10.preheader diff --git a/bench/arrow/optimized/UriParse.ll b/bench/arrow/optimized/UriParse.ll index 4081b08175e..60f7fba72a0 100644 --- a/bench/arrow/optimized/UriParse.ll +++ b/bench/arrow/optimized/UriParse.ll @@ -5400,8 +5400,8 @@ if.end.i46: ; preds = %if.end.i46.backedge sw.bb.i47: ; preds = %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46, %if.end.i46 %add.ptr.i48 = getelementptr inbounds nuw i8, ptr %first.tr17.i, i64 1 - %cmp.not.i.i = icmp ult ptr %add.ptr.i48, %afterLast - br i1 %cmp.not.i.i, label %if.end.i.i, label %if.end26 + %exitcond.not.i49 = icmp ult ptr %add.ptr.i48, %afterLast + br i1 %exitcond.not.i49, label %if.end.i.i, label %if.end26 if.end.i.i: ; preds = %sw.bb.i47 %8 = load i8, ptr %add.ptr.i48, align 1 @@ -5511,11 +5511,11 @@ if.end26: ; preds = %if.end.i.i, %sw.bb. sw.default: ; preds = %if.end3 %12 = load ptr, ptr %state, align 8 - %call.i49 = tail call i32 @uriFreeUriMembersMmA(ptr noundef %12, ptr noundef %memory) - %errorPos1.i50 = getelementptr inbounds nuw i8, ptr %state, i64 16 - store ptr %add.ptr, ptr %errorPos1.i50, align 8 - %errorCode.i51 = getelementptr inbounds nuw i8, ptr %state, i64 8 - store i32 1, ptr %errorCode.i51, align 8 + %call.i50 = tail call i32 @uriFreeUriMembersMmA(ptr noundef %12, ptr noundef %memory) + %errorPos1.i51 = getelementptr inbounds nuw i8, ptr %state, i64 16 + store ptr %add.ptr, ptr %errorPos1.i51, align 8 + %errorCode.i52 = getelementptr inbounds nuw i8, ptr %state, i64 8 + store i32 1, ptr %errorCode.i52, align 8 br label %return return: ; preds = %uriParseIpFutLoopA.exit, %sw.default, %if.end26, %if.then16, %if.then11, %if.then2, %if.then diff --git a/bench/boost/optimized/args_cmd.ll b/bench/boost/optimized/args_cmd.ll index cd6d1e05c7e..8058c5144ca 100644 --- a/bench/boost/optimized/args_cmd.ll +++ b/bench/boost/optimized/args_cmd.ll @@ -147864,26 +147864,26 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIN9__gnu_cxx17__norm %.sroa.018.036.i.i.i = phi ptr [ %37, %.critedge15.i.i.i ], [ %28, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignIN9__gnu_cxx17__normal_iteratorIPKcS4_EEvEERS4_T_SC_.exit ] br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %34, %.lr.ph.preheader.i.i.i - %.01230.i.i.i.idx = phi i64 [ %.01230.i.i.i.add, %34 ], [ 0, %.lr.ph.preheader.i.i.i ] - %.sroa.0.029.i.i.i = phi ptr [ %35, %34 ], [ %.sroa.018.036.i.i.i, %.lr.ph.preheader.i.i.i ] +.lr.ph.i.i.i: ; preds = %35, %.lr.ph.preheader.i.i.i + %.01230.i.i.i.idx = phi i64 [ %.01230.i.i.i.add, %35 ], [ 0, %.lr.ph.preheader.i.i.i ] + %.sroa.0.029.i.i.i = phi ptr [ %36, %35 ], [ %.sroa.018.036.i.i.i, %.lr.ph.preheader.i.i.i ] %.01230.i.i.i.ptr.ptr = getelementptr inbounds nuw i8, ptr @.str.780, i64 %.01230.i.i.i.idx - %31 = load i8, ptr %.sroa.0.029.i.i.i, align 1, !tbaa !24 - %32 = load i8, ptr %.01230.i.i.i.ptr.ptr, align 1, !tbaa !24 - %33 = icmp eq i8 %31, %32 - br i1 %33, label %34, label %.critedge.i.i.i + %32 = load i8, ptr %.sroa.0.029.i.i.i, align 1, !tbaa !24 + %33 = load i8, ptr %.01230.i.i.i.ptr.ptr, align 1, !tbaa !24 + %34 = icmp eq i8 %32, %33 + br i1 %34, label %35, label %.critedge.i.i.i -34: ; preds = %.lr.ph.i.i.i - %35 = getelementptr inbounds nuw i8, ptr %.sroa.0.029.i.i.i, i64 1 +35: ; preds = %.lr.ph.i.i.i + %36 = getelementptr inbounds nuw i8, ptr %.sroa.0.029.i.i.i, i64 1 %.01230.i.i.i.add = add nuw nsw i64 %.01230.i.i.i.idx, 1 - %36 = icmp eq ptr %35, %30 + %exitcond = icmp eq ptr %35, %30 %.not.i.i.i = icmp eq i64 %.01230.i.i.i.add, 2 %or.cond.i.i.i = select i1 %36, i1 true, i1 %.not.i.i.i br i1 %or.cond.i.i.i, label %.critedge.i.i.i, label %.lr.ph.i.i.i, !llvm.loop !2555 -.critedge.i.i.i: ; preds = %34, %.lr.ph.i.i.i - %.sroa.0.0.lcssa.ph.i.i.i = phi ptr [ %.sroa.0.029.i.i.i, %.lr.ph.i.i.i ], [ %35, %34 ] - %.012.lcssa.ph.i.i.i.idx = phi i64 [ %.01230.i.i.i.idx, %.lr.ph.i.i.i ], [ %.01230.i.i.i.add, %34 ] +.critedge.i.i.i: ; preds = %35, %.lr.ph.i.i.i + %.sroa.0.0.lcssa.ph.i.i.i = phi ptr [ %.sroa.0.029.i.i.i, %.lr.ph.i.i.i ], [ %36, %35 ] + %.012.lcssa.ph.i.i.i.idx = phi i64 [ %.01230.i.i.i.idx, %.lr.ph.i.i.i ], [ %.01230.i.i.i.add, %35 ] %.not13.i.i.i = icmp eq i64 %.012.lcssa.ph.i.i.i.idx, 2 br i1 %.not13.i.i.i, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i, label %.critedge15.i.i.i diff --git a/bench/bullet3/optimized/btSoftBodyHelpers.ll b/bench/bullet3/optimized/btSoftBodyHelpers.ll index 0dfe39ffb11..14f33786a92 100644 --- a/bench/bullet3/optimized/btSoftBodyHelpers.ll +++ b/bench/bullet3/optimized/btSoftBodyHelpers.ll @@ -5281,7 +5281,7 @@ for.body11.preheader: ; preds = %if.then.i.i.i60 store i32 %maxidx.0.lcssa, ptr %m_capacity.i.i38, align 8 store i32 %maxidx.0.lcssa, ptr %m_size.i.i37, align 4 %mul8 = mul nsw i32 %maxidx.0.lcssa, 3 - %2 = zext nneg i32 %mul8 to i64 + %smax151 = zext nneg i32 %mul8 to i64 br label %for.body11 for.body11: ; preds = %for.body11.preheader, %for.body11 @@ -5290,21 +5290,21 @@ for.body11: ; preds = %for.body11.preheade %arrayidx14 = getelementptr inbounds nuw float, ptr %vertices, i64 %indvars.iv144 %arrayidx16 = getelementptr inbounds nuw i8, ptr %arrayidx14, i64 4 %arrayidx19 = getelementptr inbounds nuw i8, ptr %arrayidx14, i64 8 - %3 = load float, ptr %arrayidx14, align 4 - %4 = load float, ptr %arrayidx16, align 4 - %5 = load float, ptr %arrayidx19, align 4 + %5 = load float, ptr %arrayidx14, align 4 + %6 = load float, ptr %arrayidx16, align 4 + %7 = load float, ptr %arrayidx19, align 4 %arrayidx.i = getelementptr inbounds nuw %class.btVector3, ptr %call.i.i.i.i83, i64 %indvars.iv146 - store float %3, ptr %arrayidx.i, align 4 + store float %5, ptr %arrayidx.i, align 4 %ref.tmp12.sroa.2.0.arrayidx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 4 - store float %4, ptr %ref.tmp12.sroa.2.0.arrayidx.i.sroa_idx, align 4 + store float %6, ptr %ref.tmp12.sroa.2.0.arrayidx.i.sroa_idx, align 4 %ref.tmp12.sroa.3.0.arrayidx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 - store float %5, ptr %ref.tmp12.sroa.3.0.arrayidx.i.sroa_idx, align 4 + store float %7, ptr %ref.tmp12.sroa.3.0.arrayidx.i.sroa_idx, align 4 %ref.tmp12.sroa.4.0.arrayidx.i.sroa_idx = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 12 store float 0.000000e+00, ptr %ref.tmp12.sroa.4.0.arrayidx.i.sroa_idx, align 4 %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 3 - %cmp10 = icmp samesign ult i64 %indvars.iv.next145, %2 - br i1 %cmp10, label %for.body11, label %for.end26, !llvm.loop !45 + %exitcond153.not = icmp samesign ult i64 %indvars.iv.next145, %2 + br i1 %exitcond153.not, label %for.body11, label %for.end26, !llvm.loop !45 lpad3.loopexit: ; preds = %if.then %lpad.loopexit = landingpad { ptr, i32 } @@ -5326,8 +5326,8 @@ for.end26: ; preds = %for.body11 to label %invoke.cont27 unwind label %lpad3.loopexit.split-lp.loopexit.split-lp invoke.cont27: ; preds = %for.end26 - %6 = load i32, ptr %m_size.i.i37, align 4 - invoke void @_ZN10btSoftBodyC1EP19btSoftBodyWorldInfoiPK9btVector3PKf(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, ptr noundef nonnull %worldInfo, i32 noundef %6, ptr noundef nonnull %call.i.i.i.i83, ptr noundef null) + %8 = load i32, ptr %m_size.i.i37, align 4 + invoke void @_ZN10btSoftBodyC1EP19btSoftBodyWorldInfoiPK9btVector3PKf(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, ptr noundef nonnull %worldInfo, i32 noundef %8, ptr noundef nonnull %call.i.i.i.i83, ptr noundef null) to label %for.cond36.preheader unwind label %lpad29 for.cond36.preheader: ; preds = %invoke.cont27 @@ -5340,76 +5340,76 @@ for.body38.lr.ph: ; preds = %for.cond36.preheade br label %for.body38 for.body38: ; preds = %for.body38.lr.ph, %for.inc88 - %.pre = phi ptr [ %.pre.pre, %for.body38.lr.ph ], [ %.pre158, %for.inc88 ] - %indvars.iv155 = phi i64 [ 0, %for.body38.lr.ph ], [ %indvars.iv.next156, %for.inc88 ] - %arrayidx40 = getelementptr inbounds nuw i32, ptr %triangles, i64 %indvars.iv155 - %7 = load i32, ptr %arrayidx40, align 4 - store i32 %7, ptr %idx, align 4 + %.pre = phi ptr [ %.pre.pre, %for.body38.lr.ph ], [ %.pre161, %for.inc88 ] + %indvars.iv158 = phi i64 [ 0, %for.body38.lr.ph ], [ %indvars.iv.next159, %for.inc88 ] + %arrayidx40 = getelementptr inbounds nuw i32, ptr %triangles, i64 %indvars.iv158 + %9 = load i32, ptr %arrayidx40, align 4 + store i32 %9, ptr %idx, align 4 %arrayidx43 = getelementptr inbounds nuw i8, ptr %arrayidx40, i64 4 - %8 = load i32, ptr %arrayidx43, align 4 - store i32 %8, ptr %arrayinit.element, align 4 + %10 = load i32, ptr %arrayidx43, align 4 + store i32 %10, ptr %arrayinit.element, align 4 %arrayidx47 = getelementptr inbounds nuw i8, ptr %arrayidx40, i64 8 - %9 = load i32, ptr %arrayidx47, align 4 - store i32 %9, ptr %arrayinit.element44, align 4 + %11 = load i32, ptr %arrayidx47, align 4 + store i32 %11, ptr %arrayinit.element44, align 4 br label %for.body51 for.body51: ; preds = %for.body38, %for.inc81 - %.pre159 = phi ptr [ %.pre, %for.body38 ], [ %.pre158, %for.inc81 ] - %10 = phi ptr [ %.pre, %for.body38 ], [ %18, %for.inc81 ] - %indvars.iv151 = phi i64 [ 0, %for.body38 ], [ %indvars.iv.next152, %for.inc81 ] - %j48.0139 = phi i64 [ 2, %for.body38 ], [ %indvars.iv151, %for.inc81 ] - %arrayidx53 = getelementptr inbounds nuw [3 x i32], ptr %idx, i64 0, i64 %indvars.iv151 - %11 = load i32, ptr %arrayidx53, align 4 - %mul54 = mul nsw i32 %11, %maxidx.0.lcssa + %.pre162 = phi ptr [ %.pre, %for.body38 ], [ %.pre161, %for.inc81 ] + %12 = phi ptr [ %.pre, %for.body38 ], [ %20, %for.inc81 ] + %indvars.iv154 = phi i64 [ 0, %for.body38 ], [ %indvars.iv.next155, %for.inc81 ] + %j48.0139 = phi i64 [ 2, %for.body38 ], [ %indvars.iv154, %for.inc81 ] + %arrayidx53 = getelementptr inbounds nuw [3 x i32], ptr %idx, i64 0, i64 %indvars.iv154 + %13 = load i32, ptr %arrayidx53, align 4 + %mul54 = mul nsw i32 %13, %maxidx.0.lcssa %idxprom55 = and i64 %j48.0139, 4294967295 %arrayidx56 = getelementptr inbounds nuw [3 x i32], ptr %idx, i64 0, i64 %idxprom55 - %12 = load i32, ptr %arrayidx56, align 4 - %add57 = add nsw i32 %mul54, %12 + %14 = load i32, ptr %arrayidx56, align 4 + %add57 = add nsw i32 %mul54, %14 %idxprom.i89 = sext i32 %add57 to i64 - %arrayidx.i90 = getelementptr inbounds i8, ptr %10, i64 %idxprom.i89 - %13 = load i8, ptr %arrayidx.i90, align 1 - %tobool = trunc i8 %13 to i1 + %arrayidx.i90 = getelementptr inbounds i8, ptr %12, i64 %idxprom.i89 + %15 = load i8, ptr %arrayidx.i90, align 1 + %tobool = trunc i8 %15 to i1 br i1 %tobool, label %for.inc81, label %if.then if.then: ; preds = %for.body51 store i8 1, ptr %arrayidx.i90, align 1 - %mul70 = mul nsw i32 %12, %maxidx.0.lcssa - %add73 = add nsw i32 %mul70, %11 - %14 = load ptr, ptr %m_data.i.i, align 8 + %mul70 = mul nsw i32 %14, %maxidx.0.lcssa + %add73 = add nsw i32 %mul70, %13 + %16 = load ptr, ptr %m_data.i.i, align 8 %idxprom.i95 = sext i32 %add73 to i64 - %arrayidx.i96 = getelementptr inbounds i8, ptr %14, i64 %idxprom.i95 + %arrayidx.i96 = getelementptr inbounds i8, ptr %16, i64 %idxprom.i95 store i8 1, ptr %arrayidx.i96, align 1 - invoke void @_ZN10btSoftBody10appendLinkEiiPNS_8MaterialEb(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %12, i32 noundef %11, ptr noundef null, i1 noundef zeroext false) + invoke void @_ZN10btSoftBody10appendLinkEiiPNS_8MaterialEb(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %14, i32 noundef %13, ptr noundef null, i1 noundef zeroext false) to label %for.inc81 unwind label %lpad3.loopexit lpad29: ; preds = %invoke.cont27 - %15 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %call.i85) to label %ehcleanup unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %lpad29 - %16 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - tail call void @__clang_call_terminate(ptr %17) #24 + %19 = extractvalue { ptr, i32 } %18, 0 + tail call void @__clang_call_terminate(ptr %19) #24 unreachable for.inc81: ; preds = %for.body51, %if.then - %.pre158 = phi ptr [ %.pre159, %for.body51 ], [ %14, %if.then ] - %18 = phi ptr [ %10, %for.body51 ], [ %14, %if.then ] - %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 1 - %exitcond154.not = icmp eq i64 %indvars.iv.next152, 3 - br i1 %exitcond154.not, label %for.end83, label %for.body51, !llvm.loop !46 + %.pre161 = phi ptr [ %.pre162, %for.body51 ], [ %16, %if.then ] + %20 = phi ptr [ %12, %for.body51 ], [ %16, %if.then ] + %indvars.iv.next155 = add nuw nsw i64 %indvars.iv154, 1 + %exitcond157.not = icmp eq i64 %indvars.iv.next155, 3 + br i1 %exitcond157.not, label %for.end83, label %for.body51, !llvm.loop !46 for.end83: ; preds = %for.inc81 - invoke void @_ZN10btSoftBody10appendFaceEiiiPNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %7, i32 noundef %8, i32 noundef %9, ptr noundef null) + invoke void @_ZN10btSoftBody10appendFaceEiiiPNS_8MaterialE(ptr noundef nonnull align 8 dereferenceable(2064) %call.i85, i32 noundef %9, i32 noundef %10, i32 noundef %11, ptr noundef null) to label %for.inc88 unwind label %lpad3.loopexit.split-lp.loopexit for.inc88: ; preds = %for.end83 - %indvars.iv.next156 = add nuw nsw i64 %indvars.iv155, 3 - %19 = trunc nuw i64 %indvars.iv.next156 to i32 - %cmp37 = icmp sgt i32 %mul, %19 + %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 3 + %21 = trunc nuw i64 %indvars.iv.next159 to i32 + %cmp37 = icmp sgt i32 %mul, %21 br i1 %cmp37, label %for.body38, label %for.end90, !llvm.loop !47 for.end90: ; preds = %for.inc88, %for.cond36.preheader @@ -5420,52 +5420,52 @@ if.then92: ; preds = %for.end90 to label %if.end94 unwind label %lpad3.loopexit.split-lp.loopexit.split-lp if.end94: ; preds = %if.then92, %for.end90 - %20 = load ptr, ptr %m_data.i.i36, align 8 - %tobool.not.i.i.i98 = icmp eq ptr %20, null + %22 = load ptr, ptr %m_data.i.i36, align 8 + %tobool.not.i.i.i98 = icmp eq ptr %22, null br i1 %tobool.not.i.i.i98, label %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit, label %if.then.i.i.i99 if.then.i.i.i99: ; preds = %if.end94 - %21 = load i8, ptr %m_ownsMemory.i.i35, align 8 - %tobool2.i.i.i101 = trunc i8 %21 to i1 + %23 = load i8, ptr %m_ownsMemory.i.i35, align 8 + %tobool2.i.i.i101 = trunc i8 %23 to i1 br i1 %tobool2.i.i.i101, label %if.then3.i.i.i103, label %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit if.then3.i.i.i103: ; preds = %if.then.i.i.i99 - invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %20) + invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %22) to label %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit unwind label %terminate.lpad.i104 terminate.lpad.i104: ; preds = %if.then3.i.i.i103 - %22 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } catch ptr null - %23 = extractvalue { ptr, i32 } %22, 0 - tail call void @__clang_call_terminate(ptr %23) #24 + %25 = extractvalue { ptr, i32 } %24, 0 + tail call void @__clang_call_terminate(ptr %25) #24 unreachable _ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit: ; preds = %if.end94, %if.then.i.i.i99, %if.then3.i.i.i103 - %24 = load ptr, ptr %m_data.i.i, align 8 - %tobool.not.i.i.i106 = icmp eq ptr %24, null + %26 = load ptr, ptr %m_data.i.i, align 8 + %tobool.not.i.i.i106 = icmp eq ptr %26, null br i1 %tobool.not.i.i.i106, label %_ZN20btAlignedObjectArrayIbED2Ev.exit, label %if.then.i.i.i107 if.then.i.i.i107: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit - %25 = load i8, ptr %m_ownsMemory.i.i, align 8 - %tobool2.i.i.i109 = trunc i8 %25 to i1 + %27 = load i8, ptr %m_ownsMemory.i.i, align 8 + %tobool2.i.i.i109 = trunc i8 %27 to i1 br i1 %tobool2.i.i.i109, label %if.then3.i.i.i113, label %_ZN20btAlignedObjectArrayIbED2Ev.exit if.then3.i.i.i113: ; preds = %if.then.i.i.i107 - invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %24) + invoke void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %26) to label %_ZN20btAlignedObjectArrayIbED2Ev.exit unwind label %terminate.lpad.i114 terminate.lpad.i114: ; preds = %if.then3.i.i.i113 - %26 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } catch ptr null - %27 = extractvalue { ptr, i32 } %26, 0 - tail call void @__clang_call_terminate(ptr %27) #24 + %29 = extractvalue { ptr, i32 } %28, 0 + tail call void @__clang_call_terminate(ptr %29) #24 unreachable _ZN20btAlignedObjectArrayIbED2Ev.exit: ; preds = %_ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit, %if.then.i.i.i107, %if.then3.i.i.i113 ret ptr %call.i85 ehcleanup: ; preds = %lpad3.loopexit, %lpad3.loopexit.split-lp.loopexit.split-lp, %lpad3.loopexit.split-lp.loopexit, %lpad29 - %.pn = phi { ptr, i32 } [ %15, %lpad29 ], [ %lpad.loopexit, %lpad3.loopexit ], [ %lpad.loopexit130, %lpad3.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp131, %lpad3.loopexit.split-lp.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %17, %lpad29 ], [ %lpad.loopexit, %lpad3.loopexit ], [ %lpad.loopexit130, %lpad3.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp131, %lpad3.loopexit.split-lp.loopexit.split-lp ] call void @_ZN20btAlignedObjectArrayI9btVector3ED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %vtx) #23 call void @_ZN20btAlignedObjectArrayIbED2Ev(ptr noundef nonnull align 8 dereferenceable(25) %chks) #23 resume { ptr, i32 } %.pn diff --git a/bench/cmake/optimized/cmHexFileConverter.ll b/bench/cmake/optimized/cmHexFileConverter.ll index 2085806f786..93ad87ab3ec 100644 --- a/bench/cmake/optimized/cmHexFileConverter.ll +++ b/bench/cmake/optimized/cmHexFileConverter.ll @@ -140,7 +140,7 @@ define dso_local noundef zeroext i1 @_ZN18cmHexFileConverter10TryConvertERKNSt7_ %9 = alloca [1024 x i8], align 16 %10 = tail call noundef i32 @_ZN18cmHexFileConverter17DetermineFileTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %0) %11 = icmp eq i32 %10, 0 - br i1 %11, label %117, label %12 + br i1 %11, label %115, label %12 12: ; preds = %2 %13 = tail call noundef ptr @_ZN5cmsys11SystemTools5FopenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str) @@ -158,11 +158,11 @@ define dso_local noundef zeroext i1 @_ZN18cmHexFileConverter10TryConvertERKNSt7_ br label %20 20: ; preds = %18, %17 - br i1 %16, label %21, label %117 + br i1 %16, label %21, label %115 21: ; preds = %20 %22 = tail call i32 @fclose(ptr noundef nonnull %14) - br label %117 + br label %115 23: ; preds = %12 call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %9) #9 @@ -175,18 +175,18 @@ define dso_local noundef zeroext i1 @_ZN18cmHexFileConverter10TryConvertERKNSt7_ %30 = getelementptr inbounds nuw i8, ptr %6, i64 1 %switch = icmp eq i32 %10, 2 %31 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) - %.not.us61 = icmp eq ptr %31, null - br i1 %switch, label %.split.us, label %.split.us54 + %.not.us62 = icmp eq ptr %31, null + br i1 %switch, label %.split.us, label %.split.us55 .split.us: ; preds = %23 - br i1 %.not.us61, label %.split53.us, label %.lr.ph + br i1 %.not.us62, label %.split54.us, label %.lr.ph -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74: ; preds = %50, %50, %50, %50, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75: ; preds = %50, %50, %50, %50, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us %32 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) %.not.us = icmp eq ptr %32, null - br i1 %.not.us, label %.split53.us, label %.lr.ph, !llvm.loop !9 + br i1 %.not.us, label %.split54.us, label %.lr.ph, !llvm.loop !9 -.lr.ph: ; preds = %.split.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 +.lr.ph: ; preds = %.split.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 %33 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %9) #10 %34 = trunc i64 %33 to i32 %35 = add i64 %33, 4294967295 @@ -225,16 +225,16 @@ _ZL11ChompStrlenPKc.exit.i.us: ; preds = %46, %41 %or.cond21.i.us = and i1 %or.cond.i.us, %.not.i.us %49 = load i8, ptr %9, align 16 %.not20.i.us = icmp eq i8 %49, 83 - %or.cond46.us = select i1 %or.cond21.i.us, i1 %.not20.i.us, i1 false - br i1 %or.cond46.us, label %50, label %.split53.us + %or.cond47.us = select i1 %or.cond21.i.us, i1 %.not20.i.us, i1 false + br i1 %or.cond47.us, label %50, label %.split54.us 50: ; preds = %_ZL11ChompStrlenPKc.exit.i.us %51 = load i8, ptr %28, align 1, !tbaa !4 - switch i8 %51, label %.split53.us [ - i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 - i8 55, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 - i8 56, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 - i8 57, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 + switch i8 %51, label %.split54.us [ + i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 + i8 55, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 + i8 56, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 + i8 57, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 i8 49, label %54 i8 50, label %53 i8 51, label %52 @@ -260,40 +260,40 @@ _ZL11ChompStrlenPKc.exit.i.us: ; preds = %46, %41 %58 = zext nneg i32 %55 to i64 br label %59 -59: ; preds = %65, %.lr.ph.i.i.us - %indvars.iv30.i.i.us = phi i64 [ 0, %.lr.ph.i.i.us ], [ %indvars.iv.next31.i.i.us, %65 ] +59:; preds = %65, %.lr.ph.i.i.us + %wide.trip.count.i.i.us = phi i64 [ 0, %.lr.ph.i.i.us ], [ %indvars.iv.next31.i.i.us, %65 ] %indvars.iv.i.i.us = phi i64 [ %57, %.lr.ph.i.i.us ], [ %indvars.iv.next.i.i.us, %65 ] %60 = getelementptr inbounds nuw i8, ptr %9, i64 %indvars.iv.i.i.us %61 = load i8, ptr %60, align 2, !tbaa !4 store i8 %61, ptr %6, align 1, !tbaa !4 - %62 = getelementptr inbounds nuw i8, ptr %60, i64 1 - %63 = load i8, ptr %62, align 1, !tbaa !4 + %indvars.iv.i.i.us = getelementptr inbounds nuw i8, ptr %60, i64 1 + %63 = load i8, ptr %indvars.iv.i.i.us, align 1, !tbaa !4 store i8 %63, ptr %30, align 1, !tbaa !4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #9 store i32 0, ptr %8, align 4, !tbaa !10 - %64 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.2, ptr noundef nonnull %8) #9 - %.not.i.i.us = icmp eq i32 %64, 1 - br i1 %.not.i.i.us, label %65, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77 + %67 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.2, ptr noundef nonnull %8) #9 + %.not.i.i.us = icmp eq i32 %67, 1 + br i1 %.not.i.i.us, label %68, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78 -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77: ; preds = %59 +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78: ; preds = %59 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6) #9 - br label %.split53.us + br label %.split54.us -65: ; preds = %59 - %66 = load i32, ptr %8, align 4, !tbaa !10 - %67 = trunc i32 %66 to i8 - %68 = getelementptr inbounds nuw [256 x i8], ptr %7, i64 0, i64 %indvars.iv30.i.i.us - store i8 %67, ptr %68, align 1, !tbaa !4 +68: ; preds = %59 + %69 = load i32, ptr %8, align 4, !tbaa !10 + %70 = trunc i32 %69 to i8 + %71 = getelementptr inbounds nuw [256 x i8], ptr %7, i64 0, i64 %indvars.iv30.i.i.us + store i8 %70, ptr %71, align 1, !tbaa !4 %indvars.iv.next31.i.i.us = add nuw nsw i64 %indvars.iv30.i.i.us, 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9 %indvars.iv.next.i.i.us = add nuw nsw i64 %indvars.iv.i.i.us, 2 - %69 = icmp samesign ult i64 %indvars.iv.next.i.i.us, %58 - br i1 %69, label %59, label %._crit_edge.loopexit.i.i.us, !llvm.loop !12 + %exitcond.not.i.i.us = icmp samesign ult i64 %indvars.iv.next.i.i.us, %58 + br i1 %exitcond.not.i.i.us, label %59, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us, !llvm.loop !12 -._crit_edge.loopexit.i.i.us: ; preds = %65 - %70 = and i64 %indvars.iv.next31.i.i.us, 4294967295 +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us: ; preds = %65 + %.016.lcssa.i.i.us = and i64 %indvars.iv.next31.i.i.us, 4294967295 br label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us _ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us: ; preds = %54, %._crit_edge.loopexit.i.i.us @@ -302,91 +302,91 @@ _ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us: ; preds = %54, %._crit_edge.l %72 = icmp eq i64 %71, %.016.lcssa.i.i.us call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %6) #9 - br i1 %72, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74, label %.split53.us, !llvm.loop !9 - -.split.us54: ; preds = %23 - br i1 %.not.us61, label %.split53.us, label %.lr.ph64 - -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82: ; preds = %93, %93, %93, %93, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 - %73 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) - %.not.us56 = icmp eq ptr %73, null - br i1 %.not.us56, label %.split53.us, label %.lr.ph64, !llvm.loop !9 - -.lr.ph64: ; preds = %.split.us54, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 - %74 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %9) #10 - %75 = trunc i64 %74 to i32 - %76 = add i64 %74, 4294967295 - %77 = and i64 %76, 4294967295 - %78 = getelementptr inbounds nuw i8, ptr %9, i64 %77 - %79 = load i8, ptr %78, align 1, !tbaa !4 - switch i8 %79, label %82 [ - i8 10, label %80 - i8 13, label %80 + br i1 %72, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75, label %.split54.us, !llvm.loop !9 + +.split.us55: ; preds = %23 + br i1 %.not.us62, label %.split54.us, label %.lr.ph65 + +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83: ; preds = %94, %94, %94, %94, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 + %74 = call ptr @fgets(ptr noundef nonnull %9, i32 noundef 1024, ptr noundef nonnull %13) + %.not.us57 = icmp eq ptr %74, null + br i1 %.not.us57, label %.split54.us, label %.lr.ph65, !llvm.loop !9 + +.lr.ph65: ; preds = %.split.us55, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 + %75 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %9) #10 + %76 = trunc i64 %75 to i32 + %77 = add i64 %75, 4294967295 + %78 = and i64 %77, 4294967295 + %79 = getelementptr inbounds nuw i8, ptr %9, i64 %78 + %80 = load i8, ptr %79, align 1, !tbaa !4 + switch i8 %80, label %83 [ + i8 10, label %81 + i8 13, label %81 ] -80: ; preds = %.lr.ph64, %.lr.ph64 - %81 = add i32 %75, -1 - br label %82 - -82: ; preds = %80, %.lr.ph64 - %.0.i.i27.us = phi i32 [ %81, %80 ], [ %75, %.lr.ph64 ] - %83 = add i32 %.0.i.i27.us, -1 - %84 = zext i32 %83 to i64 - %85 = getelementptr inbounds nuw i8, ptr %9, i64 %84 - %86 = load i8, ptr %85, align 1, !tbaa !4 - switch i8 %86, label %_ZL11ChompStrlenPKc.exit.i28.us [ - i8 10, label %87 - i8 13, label %87 +81: ; preds = %.lr.ph65, %.lr.ph65 + %82 = add i32 %76, -1 + br label %83 + +83: ; preds = %81, %.lr.ph65 + %.0.i.i27.us = phi i32 [ %82, %81 ], [ %76, %.lr.ph65 ] + %84 = add i32 %.0.i.i27.us, -1 + %85 = zext i32 %84 to i64 + %86 = getelementptr inbounds nuw i8, ptr %9, i64 %85 + %87 = load i8, ptr %86, align 1, !tbaa !4 + switch i8 %87, label %_ZL11ChompStrlenPKc.exit.i28.us [ + i8 10, label %88 + i8 13, label %88 ] -87: ; preds = %82, %82 +88: ; preds = %83, %83 br label %_ZL11ChompStrlenPKc.exit.i28.us -_ZL11ChompStrlenPKc.exit.i28.us: ; preds = %87, %82 - %.1.i.i29.us = phi i32 [ %83, %87 ], [ %.0.i.i27.us, %82 ] - %88 = add i32 %.1.i.i29.us, -11 - %or.cond.i30.us = icmp ult i32 %88, 513 - %89 = and i32 %.1.i.i29.us, 1 - %90 = icmp ne i32 %89, 0 - %or.cond21.i31.not51.us = and i1 %or.cond.i30.us, %90 - %91 = load i8, ptr %9, align 16 - %.not.i32.us = icmp eq i8 %91, 58 - %or.cond47.us = select i1 %or.cond21.i31.not51.us, i1 %.not.i32.us, i1 false - %92 = load i8, ptr %24, align 1 - %.not19.i.us = icmp eq i8 %92, 48 - %or.cond49.us = select i1 %or.cond47.us, i1 %.not19.i.us, i1 false - br i1 %or.cond49.us, label %93, label %.split53.us - -93: ; preds = %_ZL11ChompStrlenPKc.exit.i28.us - %94 = load i8, ptr %25, align 8, !tbaa !4 - switch i8 %94, label %.split53.us [ - i8 48, label %95 - i8 49, label %95 - i8 50, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 - i8 51, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 - i8 52, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 - i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 +_ZL11ChompStrlenPKc.exit.i28.us: ; preds = %88, %83 + %.1.i.i29.us = phi i32 [ %84, %88 ], [ %.0.i.i27.us, %83 ] + %89 = add i32 %.1.i.i29.us, -11 + %or.cond.i30.us = icmp ult i32 %89, 513 + %90 = and i32 %.1.i.i29.us, 1 + %91 = icmp ne i32 %90, 0 + %or.cond21.i31.not52.us = and i1 %or.cond.i30.us, %91 + %92 = load i8, ptr %9, align 16 + %.not.i32.us = icmp eq i8 %92, 58 + %or.cond48.us = select i1 %or.cond21.i31.not52.us, i1 %.not.i32.us, i1 false + %93 = load i8, ptr %24, align 1 + %.not19.i.us = icmp eq i8 %93, 48 + %or.cond50.us = select i1 %or.cond48.us, i1 %.not19.i.us, i1 false + br i1 %or.cond50.us, label %94, label %.split54.us + +94: ; preds = %_ZL11ChompStrlenPKc.exit.i28.us + %95 = load i8, ptr %25, align 8, !tbaa !4 + switch i8 %95, label %.split54.us [ + i8 48, label %96 + i8 49, label %96 + i8 50, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 + i8 51, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 + i8 52, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 + i8 53, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 ] -95: ; preds = %93, %93 +96: ; preds = %94, %94 call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %3) #9 store i8 0, ptr %26, align 1, !tbaa !4 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %4) #9 - %96 = add nsw i32 %.1.i.i29.us, -12 - %97 = icmp ult i32 %96, -10 - br i1 %97, label %.lr.ph.i.i38.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 - -.lr.ph.i.i38.us: ; preds = %95 - %98 = zext nneg i32 %.1.i.i29.us to i64 - %99 = add nsw i64 %98, -12 - %100 = lshr i64 %99, 1 + %97 = add nsw i32 %.1.i.i29.us, -12 + %98 = icmp ult i32 %97, -10 + br i1 %98, label %.lr.ph.i.i38.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 + +.lr.ph.i.i38.us: ; preds = %96 + %99 = zext nneg i32 %.1.i.i29.us to i64 + %100 = add nsw i64 %99, -12 + %wide.trip.count.i.i39.us = lshr i64 %100, 1 %101 = add nuw nsw i64 %100, 1 br label %102 -102: ; preds = %108, %.lr.ph.i.i38.us - %indvars.iv30.i.i39.us = phi i64 [ 0, %.lr.ph.i.i38.us ], [ %indvars.iv.next31.i.i43.us, %108 ] - %indvars.iv.i.i40.us = phi i64 [ 9, %.lr.ph.i.i38.us ], [ %indvars.iv.next.i.i44.us, %108 ] - %103 = getelementptr inbounds nuw i8, ptr %9, i64 %indvars.iv.i.i40.us +102:; preds = %108, %.lr.ph.i.i38.us + %indvars.iv.i.i41.us = phi i64 [ 0, %.lr.ph.i.i38.us ], [ %indvars.iv.next31.i.i43.us, %107 ] + %102 = phi i64 [ 9, %.lr.ph.i.i38.us ], [ %indvars.iv.next.i.i44.us, %108 ] + %103 = getelementptr inbounds nuw i8, ptr %9, i64 %102 %104 = load i8, ptr %103, align 1, !tbaa !4 store i8 %104, ptr %3, align 1, !tbaa !4 %105 = getelementptr inbounds nuw i8, ptr %103, i64 1 @@ -394,29 +394,29 @@ _ZL11ChompStrlenPKc.exit.i28.us: ; preds = %87, %82 store i8 %106, ptr %27, align 1, !tbaa !4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #9 store i32 0, ptr %5, align 4, !tbaa !10 - %107 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull @.str.2, ptr noundef nonnull %5) #9 - %.not.i.i41.us = icmp eq i32 %107, 1 - br i1 %.not.i.i41.us, label %108, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85 + %106 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %3, ptr noundef nonnull @.str.2, ptr noundef nonnull %5) #9 + %.not.i.i42.us = icmp eq i32 %106, 1 + br i1 %.not.i.i42.us, label %107, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86 -_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85: ; preds = %102 +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86: ; preds = %102 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) #9 - br label %.split53.us - -108: ; preds = %102 - %109 = load i32, ptr %5, align 4, !tbaa !10 - %110 = trunc i32 %109 to i8 - %111 = getelementptr inbounds nuw [256 x i8], ptr %4, i64 0, i64 %indvars.iv30.i.i39.us - store i8 %110, ptr %111, align 1, !tbaa !4 - %indvars.iv.next31.i.i43.us = add nuw nsw i64 %indvars.iv30.i.i39.us, 1 + br label %.split54.us + +107: ; preds = %102 + %108 = load i32, ptr %5, align 4, !tbaa !10 + %109 = trunc i32 %108 to i8 + %110 = getelementptr inbounds nuw [256 x i8], ptr %4, i64 0, i64 %indvars.iv30.i.i39.us + store i8 %109, ptr %110, align 1, !tbaa !4 + %indvars.iv.next31.i.i44.us = add nuw nsw i64 %indvars.iv30.i.i39.us, 1 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #9 - %indvars.iv.next.i.i44.us = add nuw nsw i64 %indvars.iv.i.i40.us, 2 - %exitcond.not.i.us = icmp eq i64 %indvars.iv30.i.i39.us, %100 - br i1 %exitcond.not.i.us, label %._crit_edge.loopexit.i.i45.us, label %102, !llvm.loop !12 + %indvars.iv.next.i.i45.us = add nuw nsw i64 %indvars.iv.i.i40.us, 2 + %exitcond.not.i.i46.us = icmp eq i64 %indvars.iv.i.i41.us, %wide.trip.count.i.i39.us + br i1 %exitcond.not.i.i46.us, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58, label %102, !llvm.loop !12 -._crit_edge.loopexit.i.i45.us: ; preds = %108 - %112 = and i64 %101, 4294967295 +_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58: ; preds = %107 + %.016.lcssa.i.i35.us = and i64 %101, 4294967295 br label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 _ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57: ; preds = %95, %._crit_edge.loopexit.i.i45.us @@ -425,17 +425,17 @@ _ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57: ; preds = %95, %._crit_edge %114 = icmp eq i64 %113, %.016.lcssa.i.i35.us call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) #9 call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) #9 - br i1 %114, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82, label %.split53.us, !llvm.loop !9 + br i1 %114, label %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83, label %.split54.us, !llvm.loop !9 -.split53.us: ; preds = %93, %_ZL11ChompStrlenPKc.exit.i28.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57, %50, %_ZL11ChompStrlenPKc.exit.i.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77, %.split.us54, %.split.us - %.us-phi = phi i1 [ false, %.split.us ], [ false, %.split.us54 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread77 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread85 ], [ false, %50 ], [ false, %_ZL11ChompStrlenPKc.exit.i.us ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread74 ], [ false, %93 ], [ false, %_ZL11ChompStrlenPKc.exit.i28.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57.thread82 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 ] - %115 = call i32 @fclose(ptr noundef nonnull %13) - %116 = call i32 @fclose(ptr noundef nonnull %14) +.split54.us: ; preds = %94, %_ZL11ChompStrlenPKc.exit.i28.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57, %50, %_ZL11ChompStrlenPKc.exit.i.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78, %.split.us55, %.split.us + %.us-phi = phi i1 [ false, %.split.us ], [ false, %.split.us55 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread78 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread86 ], [ false, %50 ], [ false, %_ZL11ChompStrlenPKc.exit.i.us ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us.thread75 ], [ false, %94 ], [ false, %_ZL11ChompStrlenPKc.exit.i28.us ], [ true, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us58.thread83 ], [ false, %_ZL23ConvertMotorolaSrecLinePKcP8_IO_FILE.exit.us57 ] + %113 = call i32 @fclose(ptr noundef nonnull %13) + %114 = call i32 @fclose(ptr noundef nonnull %14) call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) #9 - br label %117 + br label %115 -117: ; preds = %.split53.us, %21, %20, %2 - %.020 = phi i1 [ false, %2 ], [ %.us-phi, %.split53.us ], [ false, %21 ], [ false, %20 ] +115: ; preds = %.split54.us, %21, %20, %2 + %.020 = phi i1 [ false, %2 ], [ %.us-phi, %.split54.us ], [ false, %21 ], [ false, %20 ] ret i1 %.020 } diff --git a/bench/cvc5/optimized/bags_utils.ll b/bench/cvc5/optimized/bags_utils.ll index 3ffbc9f2618..026b96fb131 100644 --- a/bench/cvc5/optimized/bags_utils.ll +++ b/bench/cvc5/optimized/bags_utils.ll @@ -16613,39 +16613,39 @@ for.body.preheader: ; preds = %if.end.i.i.i.i.i.i. for.body: ; preds = %for.body.preheader, %for.body %index.058 = phi i64 [ %inc, %for.body ], [ 0, %for.body.preheader ] %i.057 = phi i64 [ %add16, %for.body ], [ 0, %for.body.preheader ] - %11 = load ptr, ptr %call4, align 8 - %add.ptr.i = getelementptr inbounds i32, ptr %11, i64 %i.057 - %12 = load i32, ptr %add.ptr.i, align 4 + %13 = load ptr, ptr %call4, align 8 + %add.ptr.i = getelementptr inbounds i32, ptr %13, i64 %i.057 + %14 = load i32, ptr %add.ptr.i, align 4 %add.ptr.i38 = getelementptr inbounds nuw i32, ptr %call5.i.i.i.i2.i.i19, i64 %index.058 - store i32 %12, ptr %add.ptr.i38, align 4 + store i32 %14, ptr %add.ptr.i38, align 4 %add = or disjoint i64 %i.057, 1 - %add.ptr.i39 = getelementptr inbounds i32, ptr %11, i64 %add - %13 = load i32, ptr %add.ptr.i39, align 4 + %add.ptr.i39 = getelementptr inbounds i32, ptr %13, i64 %add + %15 = load i32, ptr %add.ptr.i39, align 4 %add.ptr.i40 = getelementptr inbounds nuw i32, ptr %call5.i.i.i.i2.i.i36, i64 %index.058 - store i32 %13, ptr %add.ptr.i40, align 4 + store i32 %15, ptr %add.ptr.i40, align 4 %add16 = add nuw i64 %i.057, 2 %inc = add nuw nsw i64 %index.058, 1 - %cmp = icmp ult i64 %add16, %div10 - br i1 %cmp, label %for.body, label %for.end, !llvm.loop !344 + %exitcond.not = icmp ult i64 %add16, %div10 + br i1 %exitcond.not, label %for.body, label %for.end, !llvm.loop !344 lpad: ; preds = %_ZNSt16allocator_traitsISaIjEE8allocateERS0_m.exit.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i, %entry - %14 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #20 br label %eh.resume lpad2: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %15 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup br label %ehcleanup19 lpad7: ; preds = %if.then.i.i.i.i.i, %if.then.i.i17 - %16 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup br label %ehcleanup19 lpad10: ; preds = %if.then.i.i.i.i.i23 - %17 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -16654,68 +16654,68 @@ for.end: ; preds = %for.body, %invoke.c to label %invoke.cont18 unwind label %lpad17 invoke.cont18: ; preds = %for.end - %18 = load ptr, ptr %indices2, align 8 - %tobool.not.i.i.i = icmp eq ptr %18, null + %20 = load ptr, ptr %indices2, align 8 + %tobool.not.i.i.i = icmp eq ptr %20, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont18 - call void @_ZdlPv(ptr noundef nonnull %18) #23 + call void @_ZdlPv(ptr noundef nonnull %20) #23 br label %_ZNSt6vectorIjSaIjEED2Ev.exit _ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %invoke.cont18, %if.then.i.i.i - %19 = load ptr, ptr %indices1, align 8 - %tobool.not.i.i.i42 = icmp eq ptr %19, null + %21 = load ptr, ptr %indices1, align 8 + %tobool.not.i.i.i42 = icmp eq ptr %21, null br i1 %tobool.not.i.i.i42, label %_ZNSt6vectorIjSaIjEED2Ev.exit44, label %if.then.i.i.i43 if.then.i.i.i43: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %19) #23 + call void @_ZdlPv(ptr noundef nonnull %21) #23 br label %_ZNSt6vectorIjSaIjEED2Ev.exit44 _ZNSt6vectorIjSaIjEED2Ev.exit44: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %if.then.i.i.i43 - %20 = load ptr, ptr %op, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %20, null + %22 = load ptr, ptr %op, align 8 + %tobool.not.i.i.i.i = icmp eq ptr %22, null br i1 %tobool.not.i.i.i.i, label %_ZN4cvc58internal9ProjectOpD2Ev.exit, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit44 - call void @_ZdlPv(ptr noundef nonnull %20) #23 + call void @_ZdlPv(ptr noundef nonnull %22) #23 br label %_ZN4cvc58internal9ProjectOpD2Ev.exit _ZN4cvc58internal9ProjectOpD2Ev.exit: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit44, %if.then.i.i.i.i ret void lpad17: ; preds = %for.end - %21 = landingpad { ptr, i32 } + %23 = landingpad { ptr, i32 } cleanup - %22 = load ptr, ptr %indices2, align 8 - %tobool.not.i.i.i45 = icmp eq ptr %22, null + %24 = load ptr, ptr %indices2, align 8 + %tobool.not.i.i.i45 = icmp eq ptr %24, null br i1 %tobool.not.i.i.i45, label %ehcleanup, label %if.then.i.i.i46 if.then.i.i.i46: ; preds = %lpad17 - call void @_ZdlPv(ptr noundef nonnull %22) #23 + call void @_ZdlPv(ptr noundef nonnull %24) #23 br label %ehcleanup ehcleanup: ; preds = %if.then.i.i.i46, %lpad17, %lpad10 - %.pn = phi { ptr, i32 } [ %17, %lpad10 ], [ %21, %lpad17 ], [ %21, %if.then.i.i.i46 ] - %23 = load ptr, ptr %indices1, align 8 - %tobool.not.i.i.i48 = icmp eq ptr %23, null + %.pn = phi { ptr, i32 } [ %19, %lpad10 ], [ %23, %lpad17 ], [ %23, %if.then.i.i.i46 ] + %25 = load ptr, ptr %indices1, align 8 + %tobool.not.i.i.i48 = icmp eq ptr %25, null br i1 %tobool.not.i.i.i48, label %ehcleanup19, label %if.then.i.i.i49 if.then.i.i.i49: ; preds = %ehcleanup - call void @_ZdlPv(ptr noundef nonnull %23) #23 + call void @_ZdlPv(ptr noundef nonnull %25) #23 br label %ehcleanup19 ehcleanup19: ; preds = %if.then.i.i.i49, %ehcleanup, %lpad7, %lpad2 - %.pn.pn = phi { ptr, i32 } [ %16, %lpad7 ], [ %15, %lpad2 ], [ %.pn, %ehcleanup ], [ %.pn, %if.then.i.i.i49 ] - %24 = load ptr, ptr %op, align 8 - %tobool.not.i.i.i.i51 = icmp eq ptr %24, null + %.pn.pn = phi { ptr, i32 } [ %18, %lpad7 ], [ %17, %lpad2 ], [ %.pn, %ehcleanup ], [ %.pn, %if.then.i.i.i49 ] + %26 = load ptr, ptr %op, align 8 + %tobool.not.i.i.i.i51 = icmp eq ptr %26, null br i1 %tobool.not.i.i.i.i51, label %eh.resume, label %if.then.i.i.i.i52 if.then.i.i.i.i52: ; preds = %ehcleanup19 - call void @_ZdlPv(ptr noundef nonnull %24) #23 + call void @_ZdlPv(ptr noundef nonnull %26) #23 br label %eh.resume eh.resume: ; preds = %if.then.i.i.i.i52, %ehcleanup19, %lpad - %.pn.pn.pn = phi { ptr, i32 } [ %14, %lpad ], [ %.pn.pn, %ehcleanup19 ], [ %.pn.pn, %if.then.i.i.i.i52 ] + %.pn.pn.pn = phi { ptr, i32 } [ %16, %lpad ], [ %.pn.pn, %ehcleanup19 ], [ %.pn.pn, %if.then.i.i.i.i52 ] resume { ptr, i32 } %.pn.pn.pn } diff --git a/bench/darktable/optimized/introspection_sharpen.ll b/bench/darktable/optimized/introspection_sharpen.ll index 1302ad73c67..c5d38fbeabc 100644 --- a/bench/darktable/optimized/introspection_sharpen.ll +++ b/bench/darktable/optimized/introspection_sharpen.ll @@ -155,7 +155,7 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %11 = load i32, ptr %10, align 4, !tbaa !44 %12 = tail call i32 @dt_iop_have_required_input_format(i32 noundef 4, ptr noundef %0, i32 noundef %11, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #20 %.not = icmp eq i32 %12, 0 - br i1 %.not, label %210, label %13 + br i1 %.not, label %211, label %13 13: ; preds = %6 %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -173,29 +173,29 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %25 = fptosi float %24 to i32 %26 = icmp eq i32 %25, 0 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %5, i64 8 - %.pre295 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 - br i1 %26, label %._crit_edge294, label %27 + %.pre297 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 + br i1 %26, label %._crit_edge296, label %27 27: ; preds = %13 %28 = shl nsw i32 %25, 1 - %.not212 = icmp sgt i32 %.pre295, %28 - br i1 %.not212, label %29, label %._crit_edge294 + %.not212 = icmp sgt i32 %.pre297, %28 + br i1 %.not212, label %29, label %._crit_edge296 29: ; preds = %27 %30 = getelementptr inbounds nuw i8, ptr %5, i64 12 %31 = load i32, ptr %30, align 4, !tbaa !46 %.not213 = icmp sgt i32 %31, %28 - br i1 %.not213, label %38, label %._crit_edge294 + br i1 %.not213, label %38, label %._crit_edge296 -._crit_edge294: ; preds = %13, %29, %27 - %32 = sext i32 %.pre295 to i64 +._crit_edge296: ; preds = %13, %29, %27 + %32 = sext i32 %.pre297 to i64 %33 = getelementptr inbounds nuw i8, ptr %5, i64 12 %34 = load i32, ptr %33, align 4, !tbaa !46 %35 = sext i32 %34 to i64 %36 = shl nsw i64 %32, 2 %37 = mul i64 %36, %35 tail call void @dt_iop_image_copy(ptr noundef %3, ptr noundef %2, i64 noundef %37) #20 - br label %210 + br label %211 38: ; preds = %29 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #20 @@ -206,7 +206,7 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr 40: ; preds = %38 call void @dt_iop_copy_image_roi(ptr noundef %3, ptr noundef %2, i64 noundef 4, ptr noundef nonnull %4, ptr noundef nonnull %5) #20 - br label %209 + br label %210 41: ; preds = %38 %42 = ashr i32 %25, 1 @@ -279,7 +279,7 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr call void @llvm.assume(i1 true) [ "align"(ptr null, i64 64) ] call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.7) #20 call void @dt_iop_copy_image_roi(ptr noundef %3, ptr noundef %2, i64 noundef 4, ptr noundef nonnull %4, ptr noundef nonnull %5) #20 - br label %209 + br label %210 .loopexit225: ; preds = %.lr.ph32.i, %56 %75 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 @@ -298,90 +298,90 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr %83 = icmp sgt i32 %25, 0 %84 = getelementptr inbounds nuw i8, ptr %15, i64 8 %85 = getelementptr inbounds nuw i8, ptr %15, i64 4 - %86 = shl nsw i64 %76, 2 - %87 = and i64 %86, -16 - %scevgep269 = getelementptr i8, ptr %80, i64 %87 + %umax = shl nsw i64 %76, 2 + %86 = and i64 %umax, -16 + %87 = getelementptr i8, ptr %80, i64 %86 %88 = or disjoint i64 %81, 1 - %umax = call i64 @llvm.umax.i64(i64 %88, i64 %76) - %89 = shl i64 %umax, 2 + %89 = call i64 @llvm.umax.i64(i64 %88, i64 %76) + %scevgep270 = shl i64 %89, 2 %90 = sub i64 %89, %87 - %91 = or disjoint i32 %28, 1 - %92 = sext i32 %25 to i64 + %umax271 = or disjoint i32 %28, 1 + %91 = sext i32 %25 to i64 %wide.trip.count = zext nneg i32 %25 to i64 - %93 = shl i32 %25, 1 - br label %95 + %95 = shl i32 %25, 1 + br label %97 ._crit_edge263: ; preds = %.loopexit, %.loopexit225 call void @free(ptr noundef %55) #20 - %94 = load ptr, ptr %7, align 8, !tbaa !48 - call void @free(ptr noundef %94) #20 - br label %209 - -95: ; preds = %.lr.ph262, %.loopexit - %96 = phi i32 [ %77, %.lr.ph262 ], [ %206, %.loopexit ] - %indvars.iv291 = phi i64 [ 0, %.lr.ph262 ], [ %indvars.iv.next292, %.loopexit ] - %97 = icmp sge i64 %indvars.iv291, %92 - %98 = sub nsw i32 %96, %25 - %99 = sext i32 %98 to i64 - %.not216 = icmp slt i64 %indvars.iv291, %99 - %or.cond = select i1 %97, i1 %.not216, i1 false - br i1 %or.cond, label %105, label %100 - -100: ; preds = %95 - %101 = shl nuw nsw i64 %indvars.iv291, 2 - %102 = mul i64 %101, %76 - %103 = getelementptr inbounds nuw float, ptr %2, i64 %102 - %104 = getelementptr inbounds nuw float, ptr %3, i64 %102 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 4 %103, i64 %79, i1 false) + %96 = load ptr, ptr %7, align 8, !tbaa !48 + call void @free(ptr noundef %96) #20 + br label %210 + +97: ; preds = %.lr.ph262, %.loopexit + %98 = phi i32 [ %77, %.lr.ph262 ], [ %207, %.loopexit ] + %indvars.iv293 = phi i64 [ 0, %.lr.ph262 ], [ %indvars.iv.next294, %.loopexit ] + %99 = icmp sge i64 %indvars.iv293, %92 + %100 = sub nsw i32 %98, %25 + %101 = sext i32 %100 to i64 + %.not216 = icmp slt i64 %indvars.iv293, %101 + %or.cond = select i1 %99, i1 %.not216, i1 false + br i1 %or.cond, label %107, label %102 + +102: ; preds = %97 + %103 = shl nuw nsw i64 %indvars.iv293, 2 + %104 = mul i64 %103, %76 + %105 = getelementptr inbounds nuw float, ptr %2, i64 %104 + %106 = getelementptr inbounds nuw float, ptr %3, i64 %104 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %106, ptr align 4 %105, i64 %79, i1 false) %.pre = load i32, ptr %30, align 4, !tbaa !46 br label %.loopexit -105: ; preds = %95 - %indvars293 = trunc i64 %indvars.iv291 to i32 +107: ; preds = %97 + %indvars295 = trunc i64 %indvars.iv293 to i32 call void @llvm.assume(i1 true) [ "align"(ptr %80, i64 64) ] - %106 = sub nsw i64 %indvars.iv291, %92 - %107 = add nsw i64 %indvars.iv291, %92 - %108 = add nsw i32 %indvars293, %25 + %108 = sub nsw i64 %indvars.iv293, %92 + %109 = add nsw i64 %indvars.iv293, %92 + %110 = add nsw i32 %indvars295, %25 br i1 %.not264, label %.preheader224, label %.lr.ph234 -.lr.ph234: ; preds = %105 - %109 = trunc nsw i64 %106 to i32 - %.not221229 = icmp ult i32 %108, %109 - br label %111 +.lr.ph234: ; preds = %107 + %111 = trunc nsw i64 %108 to i32 + %.not221229 = icmp ult i32 %110, %111 + br label %113 -.preheader224: ; preds = %._crit_edge, %105 +.preheader224: ; preds = %._crit_edge, %107 br i1 %.not265, label %._crit_edge241, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %.preheader224 - %110 = trunc nsw i64 %106 to i32 - %.not219235 = icmp ult i32 %108, %110 + %112 = trunc nsw i64 %108 to i32 + %.not219235 = icmp ult i32 %110, %112 br i1 %.not219235, label %.preheader.us.preheader, label %.preheader .preheader.us.preheader: ; preds = %.preheader.lr.ph call void @llvm.memset.p0.i64(ptr align 16 %scevgep269, i8 0, i64 %90, i1 false), !tbaa !47 br label %._crit_edge241 -111: ; preds = %.lr.ph234, %._crit_edge +113: ; preds = %.lr.ph234, %._crit_edge %indvar = phi i64 [ 0, %.lr.ph234 ], [ %indvar.next, %._crit_edge ] - %.0191232 = phi i64 [ 0, %.lr.ph234 ], [ %113, %._crit_edge ] - %112 = shl i64 %indvar, 4 - %scevgep = getelementptr i8, ptr %80, i64 %112 + %.0191232 = phi i64 [ 0, %.lr.ph234 ], [ %115, %._crit_edge ] + %114 = shl i64 %indvar, 4 + %scevgep = getelementptr i8, ptr %80, i64 %114 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #20 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %9, i8 0, i64 16, i1 false) br i1 %.not221229, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %120, %111 +._crit_edge: ; preds = %120, %113 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %scevgep, ptr noundef nonnull align 16 dereferenceable(16) %9, i64 16, i1 false), !tbaa !47 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #20 - %113 = add nuw i64 %.0191232, 4 + %115 = add nuw i64 %.0191232, 4 %114 = icmp ult i64 %113, %81 %indvar.next = add nuw nsw i64 %indvar, 1 br i1 %114, label %111, label %.preheader224 .lr.ph: ; preds = %111, %120 %.0192230 = phi i64 [ %121, %120 ], [ %106, %111 ] - %115 = sub i64 %.0192230, %106 - %116 = getelementptr inbounds nuw float, ptr %55, i64 %115 + %.0192230 = sub i64 %.0192230, %108 + %116 = getelementptr inbounds nuw float, ptr %55, i64 %.0192230 %117 = load float, ptr %116, align 4, !tbaa !47 %118 = mul i64 %.0192230, %76 %119 = add i64 %118, %.0191232 @@ -389,191 +389,191 @@ define void @process(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr 120: ; preds = %122 %121 = add i64 %.0192230, 1 - %.not221 = icmp ugt i64 %121, %107 + %122 = icmp ugt i64 %121, %107 br i1 %.not221, label %._crit_edge, label %.lr.ph -122: ; preds = %.lr.ph, %122 - %.0193228 = phi i64 [ 0, %.lr.ph ], [ %130, %122 ] - %123 = add i64 %119, %.0193228 - %.idx222 = shl i64 %123, 4 - %124 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx222 - %125 = load float, ptr %124, align 4, !tbaa !47 - %126 = fmul reassoc nsz arcp contract afn float %125, %117 - %127 = getelementptr inbounds nuw [4 x float], ptr %9, i64 0, i64 %.0193228 - %128 = load float, ptr %127, align 4, !tbaa !47 - %129 = fadd reassoc nsz arcp contract afn float %128, %126 - store float %129, ptr %127, align 4, !tbaa !47 - %130 = add nuw nsw i64 %.0193228, 1 - %exitcond.not = icmp eq i64 %130, 4 - br i1 %exitcond.not, label %120, label %122 +123: ; preds = %.lr.ph, %123 + %.0193228 = phi i64 [ 0, %.lr.ph ], [ %131, %123 ] + %124 = add i64 %119, %.0193228 + %.idx222 = shl i64 %124, 4 + %125 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx222 + %126 = load float, ptr %125, align 4, !tbaa !47 + %127 = fmul reassoc nsz arcp contract afn float %126, %117 + %128 = getelementptr inbounds nuw [4 x float], ptr %9, i64 0, i64 %.0193228 + %129 = load float, ptr %128, align 4, !tbaa !47 + %130 = fadd reassoc nsz arcp contract afn float %129, %127 + store float %130, ptr %128, align 4, !tbaa !47 + %131 = add nuw nsw i64 %.0193228, 1 + %exitcond.not = icmp eq i64 %131, 4 + br i1 %exitcond.not, label %120, label %123 .preheader: ; preds = %.preheader.lr.ph, %._crit_edge239 - %.0198240 = phi i64 [ %135, %._crit_edge239 ], [ %81, %.preheader.lr.ph ] - br label %137 + %.0198240 = phi i64 [ %136, %._crit_edge239 ], [ %81, %.preheader.lr.ph ] + br label %138 ._crit_edge241: ; preds = %._crit_edge239, %.preheader.us.preheader, %.preheader224 - %131 = mul i64 %82, %indvars.iv291 - %132 = getelementptr inbounds nuw float, ptr %3, i64 %131 + %132 = mul i64 %82, %indvars.iv293 + %133 = getelementptr inbounds nuw float, ptr %3, i64 %132 br i1 %83, label %.lr.ph244, label %._crit_edge245 .lr.ph244: ; preds = %._crit_edge241 - %133 = mul nsw i64 %indvars.iv291, %76 - br label %155 - -._crit_edge239: ; preds = %137 - %134 = getelementptr inbounds nuw float, ptr %80, i64 %.0198240 - store float %146, ptr %134, align 4, !tbaa !47 - %135 = add nuw i64 %.0198240, 1 - %136 = icmp ult i64 %135, %76 - br i1 %136, label %.preheader, label %._crit_edge241 - -137: ; preds = %.preheader, %137 - %.0200237 = phi float [ 0.000000e+00, %.preheader ], [ %146, %137 ] - %.0201236 = phi i64 [ %106, %.preheader ], [ %147, %137 ] - %138 = sub i64 %.0201236, %106 - %139 = getelementptr inbounds nuw float, ptr %55, i64 %138 - %140 = load float, ptr %139, align 4, !tbaa !47 - %141 = mul i64 %.0201236, %76 - %142 = add i64 %141, %.0198240 - %.idx220 = shl i64 %142, 4 - %143 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx220 - %144 = load float, ptr %143, align 4, !tbaa !47 - %145 = fmul reassoc nsz arcp contract afn float %144, %140 - %146 = fadd reassoc nsz arcp contract afn float %145, %.0200237 - %147 = add i64 %.0201236, 1 - %.not219 = icmp ugt i64 %147, %107 - br i1 %.not219, label %._crit_edge239, label %137 - -._crit_edge245: ; preds = %155, %._crit_edge241 - %148 = load float, ptr %84, align 4, !tbaa !50 - %149 = load float, ptr %85, align 4, !tbaa !51 - %150 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 - %151 = sub nsw i32 %150, %25 - %152 = icmp sgt i32 %151, %25 - br i1 %152, label %.lr.ph255, label %.preheader223 + %134 = mul nsw i64 %indvars.iv293, %76 + br label %156 + +._crit_edge239: ; preds = %138 + %135 = getelementptr inbounds nuw float, ptr %80, i64 %.0198240 + store float %147, ptr %135, align 4, !tbaa !47 + %136 = add nuw i64 %.0198240, 1 + %137 = icmp ult i64 %136, %76 + br i1 %137, label %.preheader, label %._crit_edge241 + +138: ; preds = %.preheader, %138 + %.0200237 = phi float [ 0.000000e+00, %.preheader ], [ %147, %138 ] + %.0201236 = phi i64 [ %108, %.preheader ], [ %148, %138 ] + %139 = sub i64 %.0201236, %108 + %140 = getelementptr inbounds nuw float, ptr %55, i64 %139 + %141 = load float, ptr %140, align 4, !tbaa !47 + %142 = mul i64 %.0201236, %76 + %143 = add i64 %142, %.0198240 + %.idx220 = shl i64 %143, 4 + %144 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx220 + %145 = load float, ptr %144, align 4, !tbaa !47 + %146 = fmul reassoc nsz arcp contract afn float %145, %141 + %147 = fadd reassoc nsz arcp contract afn float %146, %.0200237 + %148 = add i64 %.0201236, 1 + %.not219 = icmp ugt i64 %148, %109 + br i1 %.not219, label %._crit_edge239, label %138 + +._crit_edge245: ; preds = %156, %._crit_edge241 + %149 = load float, ptr %84, align 4, !tbaa !50 + %150 = load float, ptr %85, align 4, !tbaa !51 + %151 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !45 + %152 = sub nsw i32 %151, %25 + %153 = icmp sgt i32 %152, %25 + br i1 %153, label %.lr.ph255, label %.preheader223 .lr.ph255: ; preds = %._crit_edge245 - %153 = mul nsw i64 %indvars.iv291, %76 - %154 = sub i32 %150, %93 - br label %162 - -155: ; preds = %.lr.ph244, %155 - %indvars.iv = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next, %155 ] - %.idx296 = shl nsw i64 %indvars.iv, 4 - %156 = getelementptr inbounds nuw i8, ptr %132, i64 %.idx296 - %157 = add nsw i64 %133, %indvars.iv - %.idx218 = shl i64 %157, 4 - %158 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx218 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %156, ptr noundef nonnull readonly align 4 dereferenceable(16) %158, i64 16, i1 false), !tbaa !47, !alias.scope !52 + %154 = mul nsw i64 %indvars.iv293, %76 + %155 = sub i32 %151, %95 + br label %163 + +156: ; preds = %.lr.ph244, %156 + %indvars.iv = phi i64 [ 0, %.lr.ph244 ], [ %indvars.iv.next, %156 ] + %.idx298 = shl nsw i64 %indvars.iv, 4 + %157 = getelementptr inbounds nuw i8, ptr %133, i64 %.idx298 + %158 = add nsw i64 %134, %indvars.iv + %.idx218 = shl i64 %158, 4 + %159 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx218 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %157, ptr noundef nonnull readonly align 4 dereferenceable(16) %159, i64 16, i1 false), !tbaa !47, !alias.scope !52 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond275.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond275.not, label %._crit_edge245, label %155 + %exitcond277.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond277.not, label %._crit_edge245, label %156 -.preheader223: ; preds = %185, %._crit_edge245 +.preheader223: ; preds = %186, %._crit_edge245 br i1 %83, label %.lr.ph259, label %.loopexit .lr.ph259: ; preds = %.preheader223 - %159 = mul nsw i64 %indvars.iv291, %76 - %160 = sext i32 %151 to i64 - %161 = sext i32 %150 to i64 - br label %201 - -162: ; preds = %.lr.ph255, %185 - %indvars.iv284 = phi i64 [ %92, %.lr.ph255 ], [ %indvars.iv.next285, %185 ] - %indvars.iv281 = phi i32 [ %91, %.lr.ph255 ], [ %indvars.iv.next282, %185 ] - %indvars.iv276 = phi i32 [ 0, %.lr.ph255 ], [ %indvars.iv.next277, %185 ] - %163 = sub nsw i64 %indvars.iv284, %92 - %164 = add nsw i64 %indvars.iv284, %92 - %.not217246 = icmp sgt i64 %163, %164 + %160 = mul nsw i64 %indvars.iv293, %76 + %161 = sext i32 %152 to i64 + %162 = sext i32 %151 to i64 + br label %202 + +163: ; preds = %.lr.ph255, %186 + %indvars.iv286 = phi i64 [ %92, %.lr.ph255 ], [ %indvars.iv.next287, %186 ] + %indvars.iv283 = phi i32 [ %91, %.lr.ph255 ], [ %indvars.iv.next284, %186 ] + %indvars.iv278 = phi i32 [ 0, %.lr.ph255 ], [ %indvars.iv.next279, %186 ] + %164 = sub nsw i64 %indvars.iv286, %92 + %165 = add nsw i64 %indvars.iv286, %92 + %.not217246 = icmp sgt i64 %164, %165 br i1 %.not217246, label %._crit_edge251, label %.lr.ph250.preheader -.lr.ph250.preheader: ; preds = %162 - %165 = sext i32 %indvars.iv276 to i64 +.lr.ph250.preheader: ; preds = %163 + %166 = sext i32 %indvars.iv278 to i64 br label %.lr.ph250 -._crit_edge251: ; preds = %.lr.ph250, %162 - %.0195.lcssa = phi float [ 0.000000e+00, %162 ], [ %179, %.lr.ph250 ] - %166 = add nsw i64 %153, %indvars.iv284 - %167 = shl i64 %166, 2 - %168 = getelementptr inbounds nuw float, ptr %2, i64 %167 - %169 = load float, ptr %168, align 4, !tbaa !47 - %170 = fsub reassoc nsz arcp contract afn float %169, %.0195.lcssa - %171 = call reassoc nsz arcp contract afn float @llvm.fabs.f32(float %170) - %172 = fcmp reassoc nsz arcp contract afn ogt float %171, %148 - br i1 %172, label %180, label %185 +._crit_edge251: ; preds = %.lr.ph250, %163 + %.0195.lcssa = phi float [ 0.000000e+00, %163 ], [ %180, %.lr.ph250 ] + %167 = add nsw i64 %154, %indvars.iv286 + %168 = shl i64 %167, 2 + %169 = getelementptr inbounds nuw float, ptr %2, i64 %168 + %170 = load float, ptr %169, align 4, !tbaa !47 + %171 = fsub reassoc nsz arcp contract afn float %170, %.0195.lcssa + %172 = call reassoc nsz arcp contract afn float @llvm.fabs.f32(float %171) + %173 = fcmp reassoc nsz arcp contract afn ogt float %172, %149 + br i1 %173, label %181, label %186 .lr.ph250: ; preds = %.lr.ph250.preheader, %.lr.ph250 - %indvars.iv278 = phi i64 [ %165, %.lr.ph250.preheader ], [ %indvars.iv.next279, %.lr.ph250 ] - %.0195247 = phi float [ 0.000000e+00, %.lr.ph250.preheader ], [ %179, %.lr.ph250 ] - %173 = sub nsw i64 %indvars.iv278, %163 - %174 = getelementptr inbounds float, ptr %55, i64 %173 - %175 = load float, ptr %174, align 4, !tbaa !47 - %176 = getelementptr inbounds float, ptr %80, i64 %indvars.iv278 - %177 = load float, ptr %176, align 4, !tbaa !47 - %178 = fmul reassoc nsz arcp contract afn float %177, %175 - %179 = fadd reassoc nsz arcp contract afn float %178, %.0195247 - %indvars.iv.next279 = add nsw i64 %indvars.iv278, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next279 to i32 - %exitcond283.not = icmp eq i32 %indvars.iv281, %lftr.wideiv - br i1 %exitcond283.not, label %._crit_edge251, label %.lr.ph250 - -180: ; preds = %._crit_edge251 - %181 = fsub reassoc nsz arcp contract afn float %171, %148 - %182 = fcmp reassoc nsz arcp contract afn ogt float %181, 0.000000e+00 - %183 = select reassoc nsz arcp contract afn i1 %182, float %181, float 0.000000e+00 - %184 = call reassoc nsz arcp contract afn float @llvm.copysign.f32(float %183, float %170) - br label %185 - -185: ; preds = %._crit_edge251, %180 - %186 = phi reassoc nsz arcp contract afn float [ %184, %180 ], [ 0.000000e+00, %._crit_edge251 ] - %187 = fmul reassoc nsz arcp contract afn float %186, %149 - %188 = fadd reassoc nsz arcp contract afn float %187, %169 - %189 = shl nsw i64 %indvars.iv284, 2 - %190 = getelementptr inbounds float, ptr %132, i64 %189 - store float %188, ptr %190, align 4, !tbaa !47 - %191 = or disjoint i64 %167, 1 - %192 = getelementptr inbounds nuw float, ptr %2, i64 %191 - %193 = load float, ptr %192, align 4, !tbaa !47 - %194 = or disjoint i64 %189, 1 - %195 = getelementptr inbounds float, ptr %132, i64 %194 - store float %193, ptr %195, align 4, !tbaa !47 - %196 = or disjoint i64 %167, 2 - %197 = getelementptr inbounds nuw float, ptr %2, i64 %196 - %198 = load float, ptr %197, align 4, !tbaa !47 - %199 = or disjoint i64 %189, 2 - %200 = getelementptr inbounds float, ptr %132, i64 %199 - store float %198, ptr %200, align 4, !tbaa !47 - %indvars.iv.next285 = add nsw i64 %indvars.iv284, 1 - %indvars.iv.next277 = add i32 %indvars.iv276, 1 - %indvars.iv.next282 = add i32 %indvars.iv281, 1 - %exitcond287.not = icmp eq i32 %indvars.iv.next277, %154 - br i1 %exitcond287.not, label %.preheader223, label %162 - -201: ; preds = %.lr.ph259, %201 - %indvars.iv288 = phi i64 [ %160, %.lr.ph259 ], [ %indvars.iv.next289, %201 ] - %.idx297 = shl nsw i64 %indvars.iv288, 4 - %202 = getelementptr inbounds i8, ptr %132, i64 %.idx297 - %203 = add nsw i64 %159, %indvars.iv288 - %.idx = shl i64 %203, 4 - %204 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %202, ptr noundef nonnull readonly align 4 dereferenceable(16) %204, i64 16, i1 false), !tbaa !47, !alias.scope !56 - %indvars.iv.next289 = add nsw i64 %indvars.iv288, 1 - %205 = icmp slt i64 %indvars.iv.next289, %161 - br i1 %205, label %201, label %.loopexit - -.loopexit: ; preds = %201, %.preheader223, %100 - %206 = phi i32 [ %96, %.preheader223 ], [ %.pre, %100 ], [ %96, %201 ] - %indvars.iv.next292 = add nuw nsw i64 %indvars.iv291, 1 - %207 = sext i32 %206 to i64 - %208 = icmp slt i64 %indvars.iv.next292, %207 - br i1 %208, label %95, label %._crit_edge263 - -209: ; preds = %74, %._crit_edge263, %40 + %indvars.iv280 = phi i64 [ %166, %.lr.ph250.preheader ], [ %indvars.iv.next281, %.lr.ph250 ] + %.0195247 = phi float [ 0.000000e+00, %.lr.ph250.preheader ], [ %180, %.lr.ph250 ] + %174 = sub nsw i64 %indvars.iv280, %164 + %175 = getelementptr inbounds float, ptr %55, i64 %174 + %176 = load float, ptr %175, align 4, !tbaa !47 + %177 = getelementptr inbounds float, ptr %80, i64 %indvars.iv280 + %178 = load float, ptr %177, align 4, !tbaa !47 + %179 = fmul reassoc nsz arcp contract afn float %178, %176 + %180 = fadd reassoc nsz arcp contract afn float %179, %.0195247 + %indvars.iv.next281 = add nsw i64 %indvars.iv280, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next281 to i32 + %exitcond285.not = icmp eq i32 %indvars.iv283, %lftr.wideiv + br i1 %exitcond285.not, label %._crit_edge251, label %.lr.ph250 + +181: ; preds = %._crit_edge251 + %182 = fsub reassoc nsz arcp contract afn float %172, %149 + %183 = fcmp reassoc nsz arcp contract afn ogt float %182, 0.000000e+00 + %184 = select reassoc nsz arcp contract afn i1 %183, float %182, float 0.000000e+00 + %185 = call reassoc nsz arcp contract afn float @llvm.copysign.f32(float %184, float %171) + br label %186 + +186: ; preds = %._crit_edge251, %181 + %187 = phi reassoc nsz arcp contract afn float [ %185, %181 ], [ 0.000000e+00, %._crit_edge251 ] + %188 = fmul reassoc nsz arcp contract afn float %187, %150 + %189 = fadd reassoc nsz arcp contract afn float %188, %170 + %190 = shl nsw i64 %indvars.iv286, 2 + %191 = getelementptr inbounds float, ptr %133, i64 %190 + store float %189, ptr %191, align 4, !tbaa !47 + %192 = or disjoint i64 %168, 1 + %193 = getelementptr inbounds nuw float, ptr %2, i64 %192 + %194 = load float, ptr %193, align 4, !tbaa !47 + %195 = or disjoint i64 %190, 1 + %196 = getelementptr inbounds float, ptr %133, i64 %195 + store float %194, ptr %196, align 4, !tbaa !47 + %197 = or disjoint i64 %168, 2 + %198 = getelementptr inbounds nuw float, ptr %2, i64 %197 + %199 = load float, ptr %198, align 4, !tbaa !47 + %200 = or disjoint i64 %190, 2 + %201 = getelementptr inbounds float, ptr %133, i64 %200 + store float %199, ptr %201, align 4, !tbaa !47 + %indvars.iv.next287 = add nsw i64 %indvars.iv286, 1 + %indvars.iv.next279 = add i32 %indvars.iv278, 1 + %indvars.iv.next284 = add i32 %indvars.iv283, 1 + %exitcond289.not = icmp eq i32 %indvars.iv.next279, %155 + br i1 %exitcond289.not, label %.preheader223, label %163 + +202: ; preds = %.lr.ph259, %202 + %indvars.iv290 = phi i64 [ %161, %.lr.ph259 ], [ %indvars.iv.next291, %202 ] + %.idx299 = shl nsw i64 %indvars.iv290, 4 + %203 = getelementptr inbounds i8, ptr %133, i64 %.idx299 + %204 = add nsw i64 %160, %indvars.iv290 + %.idx = shl i64 %204, 4 + %205 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %203, ptr noundef nonnull readonly align 4 dereferenceable(16) %205, i64 16, i1 false), !tbaa !47, !alias.scope !56 + %indvars.iv.next291 = add nsw i64 %indvars.iv290, 1 + %206 = icmp slt i64 %indvars.iv.next291, %162 + br i1 %206, label %202, label %.loopexit + +.loopexit: ; preds = %202, %.preheader223, %102 + %207 = phi i32 [ %98, %.preheader223 ], [ %.pre, %102 ], [ %98, %202 ] + %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1 + %208 = sext i32 %207 to i64 + %209 = icmp slt i64 %indvars.iv.next294, %208 + br i1 %209, label %97, label %._crit_edge263 + +210: ; preds = %74, %._crit_edge263, %40 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #20 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #20 - br label %210 + br label %211 -210: ; preds = %._crit_edge294, %209, %6 +211: ; preds = %._crit_edge296, %210, %6 ret void } diff --git a/bench/eastl/optimized/EAMemory.ll b/bench/eastl/optimized/EAMemory.ll index df13a2ff35b..e06a8d4876a 100644 --- a/bench/eastl/optimized/EAMemory.ll +++ b/bench/eastl/optimized/EAMemory.ll @@ -976,12 +976,12 @@ for.body26.us.i: ; preds = %for.body26.us.i.bac %d.sroa.0.429.us.i = phi ptr [ %pDestination, %for.cond21.preheader.lr.ph.i ], [ %incdec.ptr28.us.i, %for.body26.us.i.backedge ] %destByteCount.addr.428.us.i = phi i64 [ %destByteCount, %for.cond21.preheader.lr.ph.i ], [ %dec29.us.i, %for.body26.us.i.backedge ] %incdec.ptr27.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.230.us.i, i64 1 - %29 = load i8, ptr %s.sroa.0.230.us.i, align 1 + %31 = load i8, ptr %s.sroa.0.230.us.i, align 1 %incdec.ptr28.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.429.us.i, i64 1 - store i8 %29, ptr %d.sroa.0.429.us.i, align 1 + store i8 %31, ptr %d.sroa.0.429.us.i, align 1 %dec29.us.i = add i64 %destByteCount.addr.428.us.i, -1 %inc.us.i = add nuw i64 %i20.031.us.i, 1 - %cmp22.us.i = icmp ult i64 %inc.us.i, %sourceByteCount + %exitcond.not.i = icmp ult i64 %inc.us.i, %sourceByteCount %tobool24.us.i = icmp ne i64 %dec29.us.i, 0 %30 = select i1 %cmp22.us.i, i1 %tobool24.us.i, i1 false br i1 %30, label %for.body26.us.i.backedge, label %for.cond21.while.cond18.loopexit_crit_edge.us.i @@ -992,7 +992,7 @@ for.body26.us.i.backedge: ; preds = %for.body26.us.i, %f br label %for.body26.us.i, !llvm.loop !15 for.cond21.while.cond18.loopexit_crit_edge.us.i: ; preds = %for.body26.us.i - %tobool.not.us.i = icmp eq i64 %dec29.us.i, 0 + %32 = icmp eq i64 %dec29.us.i, 0 br i1 %tobool.not.us.i, label %sw.epilog, label %for.body26.us.i.backedge while.cond.preheader.i: ; preds = %sw.default @@ -1010,17 +1010,17 @@ for.body.us.i: ; preds = %for.body.us.i, %for %d.sroa.0.138.us.i = phi ptr [ %pDestination, %for.cond.preheader.lr.ph.i ], [ %incdec.ptr9.us.i, %for.body.us.i ] %destByteCount.addr.137.us.i = phi i64 [ %destByteCount, %for.cond.preheader.lr.ph.i ], [ %sub.us.i, %for.body.us.i ] %incdec.ptr.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.039.us.i, i64 4 - %31 = load i32, ptr %s.sroa.0.039.us.i, align 4 + %33 = load i32, ptr %s.sroa.0.039.us.i, align 4 %incdec.ptr9.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.138.us.i, i64 4 - store i32 %31, ptr %d.sroa.0.138.us.i, align 4 + store i32 %33, ptr %d.sroa.0.138.us.i, align 4 %add.us.i = add i64 %i.140.us.i, 4 %sub.us.i = add i64 %destByteCount.addr.137.us.i, -4 %cmp7.us.i = icmp ult i64 %add.us.i, %sourceByteCount %cmp8.us.i = icmp ugt i64 %sub.us.i, 3 - %32 = select i1 %cmp7.us.i, i1 %cmp8.us.i, i1 false - %brmerge = select i1 %32, i1 true, i1 %cmp8.us.i - %add.us.i.mux = select i1 %32, i64 %add.us.i, i64 0 - %incdec.ptr.us.i.mux = select i1 %32, ptr %incdec.ptr.us.i, ptr %pSource + %34 = select i1 %cmp7.us.i, i1 %cmp8.us.i, i1 false + %brmerge = select i1 %34, i1 true, i1 %cmp8.us.i + %add.us.i.mux = select i1 %34, i64 %add.us.i, i64 0 + %incdec.ptr.us.i.mux = select i1 %34, ptr %incdec.ptr.us.i, ptr %pSource br i1 %brmerge, label %for.body.us.i, label %while.end.i29, !llvm.loop !16 while.end.i29: ; preds = %for.body.us.i, %while.cond.preheader.i @@ -1041,9 +1041,9 @@ while.body14.i: ; preds = %while.body14.i, %wh %d.sroa.0.254.i = phi ptr [ %incdec.ptr16.i, %while.body14.i ], [ %d.sroa.0.0.lcssa.i, %while.body14.preheader.i ] %destByteCount.addr.253.i = phi i64 [ %dec.i31, %while.body14.i ], [ %destByteCount.addr.0.lcssa.i, %while.body14.preheader.i ] %incdec.ptr15.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.155.i, i64 1 - %33 = load i8, ptr %s.sroa.0.155.i, align 1 + %35 = load i8, ptr %s.sroa.0.155.i, align 1 %incdec.ptr16.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.254.i, i64 1 - store i8 %33, ptr %d.sroa.0.254.i, align 1 + store i8 %35, ptr %d.sroa.0.254.i, align 1 %dec.i31 = add nsw i64 %destByteCount.addr.253.i, -1 %cmp13.not.i = icmp eq i64 %dec.i31, 0 br i1 %cmp13.not.i, label %sw.epilog, label %while.body14.i, !llvm.loop !17 @@ -1056,17 +1056,17 @@ sw.bb7: ; preds = %entry %v2.0.in.i = getelementptr inbounds nuw i8, ptr %pSource, i64 4 %v2.0.i = load i32, ptr %v2.0.in.i, align 1 %v1.0.i = load i32, ptr %pSource, align 1 - %34 = ptrtoint ptr %pDestination to i64 - %and67.i = and i64 %34, 15 + %36 = ptrtoint ptr %pDestination to i64 + %and67.i = and i64 %36, 15 %cmp68.not.i = icmp eq i64 %and67.i, 0 br i1 %cmp68.not.i, label %if.end98.i, label %while.cond.preheader.i32 while.cond.preheader.i32: ; preds = %sw.bb7 - %and7091.i = and i64 %34, 3 + %and7091.i = and i64 %36, 3 %cmp7192.i = icmp ne i64 %and7091.i, 0 %cmp7293.i = icmp ne i64 %destByteCount, 0 - %35 = and i1 %cmp7192.i, %cmp7293.i - br i1 %35, label %while.body.i40, label %while.end.i33 + %37 = and i1 %cmp7192.i, %cmp7293.i + br i1 %37, label %while.body.i40, label %while.end.i33 while.body.i40: ; preds = %while.cond.preheader.i32, %while.body.i40 %byteCount.addr.199.i = phi i64 [ %dec.i41, %while.body.i40 ], [ %destByteCount, %while.cond.preheader.i32 ] @@ -1083,12 +1083,12 @@ while.body.i40: ; preds = %while.cond.preheade %add77.i = tail call i32 @llvm.fshl.i32(i32 %v3.296.i, i32 %v2.295.i, i32 24) %add80.i = tail call i32 @llvm.fshl.i32(i32 %v4.297.i, i32 %v3.296.i, i32 24) %add83.i = tail call i32 @llvm.fshl.i32(i32 %v1.294.i, i32 %v4.297.i, i32 24) - %36 = ptrtoint ptr %incdec.ptr.i42 to i64 - %and70.i = and i64 %36, 3 + %38 = ptrtoint ptr %incdec.ptr.i42 to i64 + %and70.i = and i64 %38, 3 %cmp71.i = icmp ne i64 %and70.i, 0 %cmp72.i = icmp ne i64 %dec.i41, 0 - %37 = select i1 %cmp71.i, i1 %cmp72.i, i1 false - br i1 %37, label %while.body.i40, label %while.end.i33, !llvm.loop !18 + %39 = select i1 %cmp71.i, i1 %cmp72.i, i1 false + br i1 %39, label %while.body.i40, label %while.end.i33, !llvm.loop !18 while.end.i33: ; preds = %while.body.i40, %while.cond.preheader.i32 %v1.2.lcssa.i = phi i32 [ %v1.0.i, %while.cond.preheader.i32 ], [ %add74.i, %while.body.i40 ] @@ -1097,14 +1097,14 @@ while.end.i33: ; preds = %while.body.i40, %wh %v4.2.lcssa.i = phi i32 [ %v4.0.i, %while.cond.preheader.i32 ], [ %add83.i, %while.body.i40 ] %pDestination.1.lcssa.i34 = phi ptr [ %pDestination, %while.cond.preheader.i32 ], [ %incdec.ptr.i42, %while.body.i40 ] %byteCount.addr.1.lcssa.i35 = phi i64 [ %destByteCount, %while.cond.preheader.i32 ], [ %dec.i41, %while.body.i40 ] - %.lcssa.i36 = phi i64 [ %34, %while.cond.preheader.i32 ], [ %36, %while.body.i40 ] + %.lcssa.i36 = phi i64 [ %36, %while.cond.preheader.i32 ], [ %38, %while.body.i40 ] %cmp84.i = icmp ugt i64 %byteCount.addr.1.lcssa.i35, 255 br i1 %cmp84.i, label %if.then85.i, label %if.end98.i if.then85.i: ; preds = %while.end.i33 %and86.i = lshr i64 %.lcssa.i36, 2 - %38 = and i64 %and86.i, 3 - switch i64 %38, label %default.unreachable [ + %40 = and i64 %and86.i, 3 + switch i64 %40, label %default.unreachable [ i64 3, label %sw.bb.i i64 2, label %sw.bb88.i i64 1, label %sw.bb92.i @@ -1221,8 +1221,8 @@ for.body.i: ; preds = %for.body.i.preheade %inc.i = add nuw nsw i32 %i.0124.i, 1 %cmp116.i = icmp samesign ult i32 %i.0124.i, 3 %cmp118.i = icmp ne i64 %dec123.i, 0 - %39 = select i1 %cmp116.i, i1 %cmp118.i, i1 false - br i1 %39, label %for.body.i, label %sw.epilog, !llvm.loop !21 + %41 = select i1 %cmp116.i, i1 %cmp118.i, i1 false + br i1 %41, label %for.body.i, label %sw.epilog, !llvm.loop !21 sw.epilog: ; preds = %for.body.i, %while.body46.i, %while.body53.i, %while.body46.i.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i, %while.body14.i, %for.cond.preheader.i, %while.end107.i, %while.end.i29, %while.cond18.preheader.i, %if.end43.i, %while.cond51.preheader.i, %if.end43.i.i, %sw.bb ret void @@ -1390,12 +1390,12 @@ for.body27.us: ; preds = %for.body27.us.backe %count.addr.430.us = phi i64 [ %count, %for.cond22.preheader.lr.ph ], [ %dec31.us, %for.body27.us.backedge ] %pDestination8.429.us = phi ptr [ %pDestination, %for.cond22.preheader.lr.ph ], [ %incdec.ptr29.us, %for.body27.us.backedge ] %incdec.ptr28.us = getelementptr inbounds nuw i8, ptr %pSource8Temp.231.us, i64 1 - %5 = load i8, ptr %pSource8Temp.231.us, align 1 + %7 = load i8, ptr %pSource8Temp.231.us, align 1 %incdec.ptr29.us = getelementptr inbounds nuw i8, ptr %pDestination8.429.us, i64 1 - store i8 %5, ptr %pDestination8.429.us, align 1 + store i8 %7, ptr %pDestination8.429.us, align 1 %inc.us = add nuw i64 %i21.032.us, 1 %dec31.us = add i64 %count.addr.430.us, -1 - %cmp23.us = icmp ult i64 %inc.us, %sourceBytes + %exitcond.not = icmp ult i64 %inc.us, %sourceBytes %cmp25.us = icmp ne i64 %dec31.us, 0 %6 = select i1 %cmp23.us, i1 %cmp25.us, i1 false br i1 %6, label %for.body27.us.backedge, label %for.cond22.while.cond18.loopexit_crit_edge.us @@ -1423,18 +1423,18 @@ for.body.us: ; preds = %for.body.us, %for.c %pSource8Temp.040.us = phi ptr [ %pSource, %for.cond.preheader.lr.ph ], [ %add.ptr9.us.mux, %for.body.us ] %count.addr.139.us = phi i64 [ %count, %for.cond.preheader.lr.ph ], [ %sub.us, %for.body.us ] %pDestination8.138.us = phi ptr [ %pDestination, %for.cond.preheader.lr.ph ], [ %add.ptr.us, %for.body.us ] - %7 = load i32, ptr %pSource8Temp.040.us, align 4 - store i32 %7, ptr %pDestination8.138.us, align 4 + %8 = load i32, ptr %pSource8Temp.040.us, align 4 + store i32 %8, ptr %pDestination8.138.us, align 4 %add.ptr.us = getelementptr inbounds nuw i8, ptr %pDestination8.138.us, i64 4 %add.ptr9.us = getelementptr inbounds nuw i8, ptr %pSource8Temp.040.us, i64 4 %add.us = add i64 %i.141.us, 4 %sub.us = add i64 %count.addr.139.us, -4 %cmp7.us = icmp ult i64 %add.us, %sourceBytes %cmp8.us = icmp ugt i64 %sub.us, 3 - %8 = select i1 %cmp7.us, i1 %cmp8.us, i1 false - %brmerge = select i1 %8, i1 true, i1 %cmp8.us - %add.us.mux = select i1 %8, i64 %add.us, i64 0 - %add.ptr9.us.mux = select i1 %8, ptr %add.ptr9.us, ptr %pSource + %9 = select i1 %cmp7.us, i1 %cmp8.us, i1 false + %brmerge = select i1 %9, i1 true, i1 %cmp8.us + %add.us.mux = select i1 %9, i64 %add.us, i64 0 + %add.ptr9.us.mux = select i1 %9, ptr %add.ptr9.us, ptr %pSource br i1 %brmerge, label %for.body.us, label %while.end, !llvm.loop !28 while.end: ; preds = %for.body.us, %while.cond.preheader @@ -1456,9 +1456,9 @@ while.body15: ; preds = %while.body15.prehea %pDestination8.254 = phi ptr [ %incdec.ptr16, %while.body15 ], [ %pDestination8.0.lcssa, %while.body15.preheader ] %dec = add i64 %count.addr.255, -1 %incdec.ptr = getelementptr inbounds nuw i8, ptr %pSource8Temp.156, i64 1 - %9 = load i8, ptr %pSource8Temp.156, align 1 + %10 = load i8, ptr %pSource8Temp.156, align 1 %incdec.ptr16 = getelementptr inbounds nuw i8, ptr %pDestination8.254, i64 1 - store i8 %9, ptr %pDestination8.254, align 1 + store i8 %10, ptr %pDestination8.254, align 1 %cmp14.not = icmp eq i64 %dec, 0 br i1 %cmp14.not, label %if.end34, label %while.body15, !llvm.loop !29 @@ -1894,7 +1894,7 @@ for.cond21.preheader.us.i: ; preds = %while.cond18.prehea %d.sroa.0.335.us.i = phi ptr [ %incdec.ptr28.us.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %pDestination, %while.cond18.preheader.i ] %destByteCount.addr.334.us.i = phi i64 [ %dec29.us.i, %for.cond21.while.cond18.loopexit_crit_edge.us.i ], [ %byteCount, %while.cond18.preheader.i ] %2 = add i64 %destByteCount.addr.334.us.i, -1 - %umin = tail call i64 @llvm.umin.i64(i64 %2, i64 7) + %umin.i = tail call i64 @llvm.umin.i64(i64 %2, i64 7) br label %for.body26.us.i for.body26.us.i: ; preds = %for.body26.us.i, %for.cond21.preheader.us.i @@ -1908,11 +1908,11 @@ for.body26.us.i: ; preds = %for.body26.us.i, %f store i8 %3, ptr %d.sroa.0.429.us.i, align 1 %dec29.us.i = add i64 %destByteCount.addr.428.us.i, -1 %inc.us.i = add nuw nsw i64 %i20.031.us.i, 1 - %exitcond.not = icmp eq i64 %i20.031.us.i, %umin - br i1 %exitcond.not, label %for.cond21.while.cond18.loopexit_crit_edge.us.i, label %for.body26.us.i, !llvm.loop !39 + %exitcond.not.i = icmp eq i64 %i20.031.us.i, %umin.i + br i1 %exitcond.not.i, label %for.cond21.while.cond18.loopexit_crit_edge.us.i, label %for.body26.us.i, !llvm.loop !39 for.cond21.while.cond18.loopexit_crit_edge.us.i: ; preds = %for.body26.us.i - %tobool.not.us.i = icmp eq i64 %dec29.us.i, 0 + %4 = icmp eq i64 %dec29.us.i, 0 br i1 %tobool.not.us.i, label %_ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit, label %for.cond21.preheader.us.i, !llvm.loop !15 while.cond.preheader.i: ; preds = %entry @@ -1927,9 +1927,9 @@ for.body.us.i: ; preds = %for.body.us.i, %whi %destByteCount.addr.137.us.i = phi i64 [ %byteCount, %while.cond.preheader.i ], [ %sub.us.i, %for.body.us.i ] %cmp7.us.i.not = xor i1 %cmp7.us.i, true %incdec.ptr.us.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.039.us.i, i64 4 - %4 = load i32, ptr %s.sroa.0.039.us.i, align 4 + %5 = load i32, ptr %s.sroa.0.039.us.i, align 4 %incdec.ptr9.us.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.138.us.i, i64 4 - store i32 %4, ptr %d.sroa.0.138.us.i, align 4 + store i32 %5, ptr %d.sroa.0.138.us.i, align 4 %sub.us.i = add i64 %destByteCount.addr.137.us.i, -4 %cmp8.us.i = icmp ult i64 %sub.us.i, 4 %.not = select i1 %cmp7.us.i.not, i1 true, i1 %cmp8.us.i @@ -1958,9 +1958,9 @@ while.body14.i: ; preds = %while.body14.i, %wh %d.sroa.0.254.i = phi ptr [ %incdec.ptr16.i, %while.body14.i ], [ %d.sroa.0.0.lcssa.i, %while.body14.preheader.i ] %destByteCount.addr.253.i = phi i64 [ %dec.i, %while.body14.i ], [ %destByteCount.addr.0.lcssa.i, %while.body14.preheader.i ] %incdec.ptr15.i = getelementptr inbounds nuw i8, ptr %s.sroa.0.155.i, i64 1 - %5 = load i8, ptr %s.sroa.0.155.i, align 1 + %6 = load i8, ptr %s.sroa.0.155.i, align 1 %incdec.ptr16.i = getelementptr inbounds nuw i8, ptr %d.sroa.0.254.i, i64 1 - store i8 %5, ptr %d.sroa.0.254.i, align 1 + store i8 %6, ptr %d.sroa.0.254.i, align 1 %dec.i = add nsw i64 %destByteCount.addr.253.i, -1 %cmp13.not.i = icmp eq i64 %dec.i, 0 br i1 %cmp13.not.i, label %_ZN2EA4StdCL10MemfillAnyEPvPKvmm.exit, label %while.body14.i, !llvm.loop !17 diff --git a/bench/graphviz/optimized/excontext.ll b/bench/graphviz/optimized/excontext.ll index 6e3d131ee3c..50e758d63e1 100644 --- a/bench/graphviz/optimized/excontext.ll +++ b/bench/graphviz/optimized/excontext.ll @@ -14,35 +14,35 @@ define noundef ptr @excontext(ptr noundef %0, ptr noundef %1, i32 noundef %2) lo %8 = icmp ugt ptr %6, %7 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 868 %.pre = load i32, ptr %.phi.trans.insert, align 4 - %9 = icmp eq i32 %.pre, 0 - br i1 %8, label %14, label %10 + %10 = icmp eq i32 %.pre, 0 + br i1 %8, label %15, label %11 -10: ; preds = %3 - br i1 %9, label %.loopexit, label %.thread +11: ; preds = %3 + br i1 %10, label %.loopexit, label %.thread -.thread: ; preds = %10 - %11 = sext i32 %2 to i64 - %12 = getelementptr inbounds i8, ptr %1, i64 %11 - %13 = getelementptr inbounds i8, ptr %12, i64 -5 +.thread: ; preds = %11 + %12 = sext i32 %2 to i64 + %13 = getelementptr inbounds i8, ptr %1, i64 %12 + %14 = getelementptr inbounds i8, ptr %13, i64 -5 br label %.preheader69 -14: ; preds = %3 - %15 = sext i32 %2 to i64 - %16 = getelementptr inbounds i8, ptr %1, i64 %15 - %17 = getelementptr inbounds i8, ptr %16, i64 -5 - br i1 %9, label %.preheader, label %.preheader69 +15: ; preds = %3 + %16 = sext i32 %2 to i64 + %17 = getelementptr inbounds i8, ptr %1, i64 %16 + %18 = getelementptr inbounds i8, ptr %17, i64 -5 + br i1 %10, label %.preheader, label %.preheader69 -.preheader69: ; preds = %.thread, %14 - %18 = phi ptr [ %13, %.thread ], [ %17, %14 ] - %19 = getelementptr inbounds nuw i8, ptr %0, i64 868 +.preheader69: ; preds = %.thread, %15 + %19 = phi ptr [ %14, %.thread ], [ %18, %15 ] + %20 = getelementptr inbounds nuw i8, ptr %0, i64 868 %.070 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %20 = icmp ult ptr %.070, %5 - br i1 %20, label %.lr.ph, label %.critedge + %21 = icmp ult ptr %.070, %5 + br i1 %21, label %.lr.ph.preheader, label %.critedge -.lr.ph: ; preds = %.preheader69, %gv_isspace.exit - %.071 = phi ptr [ %.0, %gv_isspace.exit ], [ %.070, %.preheader69 ] - %21 = load i8, ptr %.071, align 1 - switch i8 %21, label %.critedge [ +.lr.ph.preheader: ; preds = %.preheader69, %gv_isspace.exit + %22 = phi ptr [ %.0, %gv_isspace.exit ], [ %.070, %.preheader69 ] + %23 = load i8, ptr %22, align 1 + switch i8 %23, label %.critedge [ i8 9, label %gv_isspace.exit i8 10, label %gv_isspace.exit i8 11, label %gv_isspace.exit @@ -53,133 +53,133 @@ define noundef ptr @excontext(ptr noundef %0, ptr noundef %1, i32 noundef %2) lo gv_isspace.exit: ; preds = %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph %.0 = getelementptr inbounds nuw i8, ptr %.071, i64 1 - %22 = icmp ult ptr %.0, %5 - br i1 %22, label %.lr.ph, label %.critedge + %exitcond.not = icmp ult ptr %.0, %5 + br i1 %exitcond.not, label %.lr.ph, label %.critedge .critedge: ; preds = %gv_isspace.exit, %.lr.ph, %.preheader69 %.0.lcssa = phi ptr [ %.070, %.preheader69 ], [ %.071, %.lr.ph ], [ %.0, %gv_isspace.exit ] - %23 = ptrtoint ptr %.0.lcssa to i64 - %24 = ptrtoint ptr %.070 to i64 - %25 = ptrtoint ptr %18 to i64 - %26 = ptrtoint ptr %1 to i64 - %.neg60 = sub i64 %26, %25 + %25 = ptrtoint ptr %.0.lcssa to i64 + %26 = ptrtoint ptr %.070 to i64 + %27 = ptrtoint ptr %19 to i64 + %28 = ptrtoint ptr %1 to i64 + %.neg60 = sub i64 %28, %27 %.neg = add i64 %.neg60, 512 - %27 = add i64 %.neg, %24 - %28 = sub i64 %27, %23 - %29 = trunc i64 %28 to i32 - %30 = icmp sgt i32 %29, 0 - %31 = and i64 %28, 2147483647 - %32 = ptrtoint ptr %5 to i64 - %33 = sub i64 %32, %23 - %34 = icmp sgt i64 %31, %33 - %35 = getelementptr inbounds nuw i8, ptr %.0.lcssa, i64 %31 - %spec.select = select i1 %34, ptr %5, ptr %35 - %.1 = select i1 %30, ptr %spec.select, ptr %.0.lcssa - %36 = icmp ult ptr %.1, %5 - br i1 %36, label %.lr.ph76, label %thread-pre-split.thread102 - -.lr.ph76: ; preds = %.critedge, %.lr.ph76 - %.275 = phi ptr [ %37, %.lr.ph76 ], [ %.1, %.critedge ] - %.25374 = phi ptr [ %39, %.lr.ph76 ], [ %1, %.critedge ] - %37 = getelementptr inbounds nuw i8, ptr %.275, i64 1 - %38 = load i8, ptr %.275, align 1 + %29 = add i64 %.neg, %26 + %30 = sub i64 %29, %25 + %31 = trunc i64 %30 to i32 + %32 = icmp sgt i32 %31, 0 + %33 = and i64 %30, 2147483647 + %34 = ptrtoint ptr %5 to i64 + %35 = sub i64 %34, %25 + %36 = icmp sgt i64 %33, %35 + %37 = getelementptr inbounds nuw i8, ptr %.0.lcssa, i64 %33 + %spec.select = select i1 %36, ptr %5, ptr %37 + %.1 = select i1 %32, ptr %spec.select, ptr %.0.lcssa + %38 = icmp ult ptr %.1, %5 + br i1 %38, label %.lr.ph76.preheader, label %thread-pre-split.thread107 + +.lr.ph76.preheader: ; preds = %.critedge, %.lr.ph76 + %.191 = phi ptr [ %37, %.lr.ph76 ], [ %.1, %.critedge ] + %39 = phi ptr [ %39, %.lr.ph76 ], [ %1, %.critedge ] + %40 = getelementptr inbounds nuw i8, ptr %.191, i64 1 + %scevgep92 = load i8, ptr %.191, align 1 %39 = getelementptr inbounds nuw i8, ptr %.25374, i64 1 store i8 %38, ptr %.25374, align 1 %40 = icmp ult ptr %37, %5 - br i1 %40, label %.lr.ph76, label %thread-pre-split + br i1 %40, label %.lr.ph76.preheader, label %thread-pre-split thread-pre-split: ; preds = %.lr.ph76 - %.pr.pre = load i32, ptr %19, align 4 - %41 = icmp eq i32 %.pr.pre, 0 - br i1 %41, label %.preheader, label %thread-pre-split.thread102 - -.preheader: ; preds = %14, %thread-pre-split - %.152101 = phi ptr [ %39, %thread-pre-split ], [ %1, %14 ] - %42 = phi ptr [ %18, %thread-pre-split ], [ %17, %14 ] - %43 = load ptr, ptr %5, align 8 - %44 = ptrtoint ptr %43 to i64 - %45 = icmp ult ptr %7, %43 - br i1 %45, label %.lr.ph79.preheader, label %.critedge2 + %.pr.pre = load i32, ptr %20, align 4 + %44 = icmp eq i32 %.pr.pre, 0 + br i1 %44, label %.preheader, label %thread-pre-split.thread107 + +.preheader: ; preds = %15, %thread-pre-split + %.152106 = phi ptr [ %39, %thread-pre-split ], [ %1, %15 ] + %45 = phi ptr [ %19, %thread-pre-split ], [ %18, %15 ] + %46 = load ptr, ptr %5, align 8 + %47 = ptrtoint ptr %46 to i64 + %48 = icmp ult ptr %7, %46 + br i1 %48, label %.lr.ph79.preheader, label %.critedge2 .lr.ph79.preheader: ; preds = %.preheader - %46 = sub i64 %44, %4 - %scevgep = getelementptr i8, ptr %0, i64 %46 + %49 = sub i64 %47, %4 + %scevgep94 = getelementptr i8, ptr %0, i64 %49 br label %.lr.ph79 -thread-pre-split.thread102: ; preds = %.critedge, %thread-pre-split - %.152105 = phi ptr [ %39, %thread-pre-split ], [ %1, %.critedge ] - store i32 0, ptr %19, align 4 - %.pre95 = load ptr, ptr %5, align 8 - %.pre96 = ptrtoint ptr %.pre95 to i64 +thread-pre-split.thread107: ; preds = %.critedge, %thread-pre-split + %.152110 = phi ptr [ %39, %thread-pre-split ], [ %1, %.critedge ] + store i32 0, ptr %20, align 4 + %.pre100 = load ptr, ptr %5, align 8 + %.pre101 = ptrtoint ptr %.pre100 to i64 br label %.critedge2 -.lr.ph79: ; preds = %.lr.ph79.preheader, %48 - %.478 = phi ptr [ %49, %48 ], [ %7, %.lr.ph79.preheader ] - %47 = load i8, ptr %.478, align 1 - switch i8 %47, label %.critedge2 [ - i8 9, label %48 - i8 10, label %48 - i8 11, label %48 - i8 12, label %48 - i8 13, label %48 - i8 32, label %48 +.lr.ph79: ; preds = %.lr.ph79.preheader, %51 + %.478 = phi ptr [ %52, %51 ], [ %7, %.lr.ph79.preheader ] + %50 = load i8, ptr %.478, align 1 + switch i8 %50, label %.critedge2 [ + i8 9, label %51 + i8 10, label %51 + i8 11, label %51 + i8 12, label %51 + i8 13, label %51 + i8 32, label %51 ] -48: ; preds = %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79 - %49 = getelementptr inbounds nuw i8, ptr %.478, i64 1 - %exitcond.not = icmp eq ptr %49, %43 - br i1 %exitcond.not, label %.critedge2, label %.lr.ph79 - -.critedge2: ; preds = %48, %.lr.ph79, %.preheader, %thread-pre-split.thread102 - %.152100 = phi ptr [ %.152101, %.preheader ], [ %.152105, %thread-pre-split.thread102 ], [ %.152101, %.lr.ph79 ], [ %.152101, %48 ] - %50 = phi ptr [ %42, %.preheader ], [ %18, %thread-pre-split.thread102 ], [ %42, %.lr.ph79 ], [ %42, %48 ] - %.pre-phi = phi i64 [ %44, %.preheader ], [ %.pre96, %thread-pre-split.thread102 ], [ %44, %.lr.ph79 ], [ %44, %48 ] - %51 = phi ptr [ %43, %.preheader ], [ %.pre95, %thread-pre-split.thread102 ], [ %43, %.lr.ph79 ], [ %43, %48 ] - %.3 = phi ptr [ %7, %.preheader ], [ %7, %thread-pre-split.thread102 ], [ %scevgep, %48 ], [ %.478, %.lr.ph79 ] - %52 = ptrtoint ptr %.3 to i64 - %53 = sub i64 %.pre-phi, %52 - %54 = ptrtoint ptr %50 to i64 - %55 = ptrtoint ptr %.152100 to i64 - %.neg62 = sub i64 %55, %54 - %56 = add i64 %53, %.neg62 - %57 = trunc i64 %56 to i32 - %58 = icmp sgt i32 %57, 0 - %59 = and i64 %56, 2147483647 - %.5.idx = select i1 %58, i64 %59, i64 0 +51: ; preds = %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79, %.lr.ph79 + %52 = getelementptr inbounds nuw i8, ptr %.478, i64 1 + %exitcond95.not = icmp eq ptr %52, %46 + br i1 %exitcond95.not, label %.critedge2, label %.lr.ph79 + +.critedge2: ; preds = %51, %.lr.ph79, %.preheader, %thread-pre-split.thread107 + %.152105 = phi ptr [ %.152106, %.preheader ], [ %.152110, %thread-pre-split.thread107 ], [ %.152106, %.lr.ph79 ], [ %.152106, %51 ] + %53 = phi ptr [ %45, %.preheader ], [ %19, %thread-pre-split.thread107 ], [ %45, %.lr.ph79 ], [ %45, %51 ] + %.pre-phi = phi i64 [ %47, %.preheader ], [ %.pre101, %thread-pre-split.thread107 ], [ %47, %.lr.ph79 ], [ %47, %51 ] + %54 = phi ptr [ %46, %.preheader ], [ %.pre100, %thread-pre-split.thread107 ], [ %46, %.lr.ph79 ], [ %46, %51 ] + %.3 = phi ptr [ %7, %.preheader ], [ %7, %thread-pre-split.thread107 ], [ %scevgep94, %51 ], [ %.478, %.lr.ph79 ] + %55 = ptrtoint ptr %.3 to i64 + %56 = sub i64 %.pre-phi, %55 + %57 = ptrtoint ptr %53 to i64 + %58 = ptrtoint ptr %.152105 to i64 + %.neg62 = sub i64 %58, %57 + %59 = add i64 %56, %.neg62 + %60 = trunc i64 %59 to i32 + %61 = icmp sgt i32 %60, 0 + %62 = and i64 %59, 2147483647 + %.5.idx = select i1 %61, i64 %62, i64 0 %.5 = getelementptr inbounds nuw i8, ptr %.3, i64 %.5.idx - %60 = icmp ult ptr %.5, %51 - br i1 %60, label %.lr.ph85, label %._crit_edge + %63 = icmp ult ptr %.5, %54 + br i1 %63, label %.lr.ph85, label %._crit_edge .lr.ph85: ; preds = %.critedge2, %.lr.ph85 - %.684 = phi ptr [ %61, %.lr.ph85 ], [ %.5, %.critedge2 ] - %.35483 = phi ptr [ %63, %.lr.ph85 ], [ %.152100, %.critedge2 ] - %61 = getelementptr inbounds nuw i8, ptr %.684, i64 1 - %62 = load i8, ptr %.684, align 1 - %63 = getelementptr inbounds nuw i8, ptr %.35483, i64 1 - store i8 %62, ptr %.35483, align 1 - %64 = load ptr, ptr %5, align 8 - %65 = icmp ult ptr %61, %64 - br i1 %65, label %.lr.ph85, label %._crit_edge + %.684 = phi ptr [ %64, %.lr.ph85 ], [ %.5, %.critedge2 ] + %.35483 = phi ptr [ %66, %.lr.ph85 ], [ %.152105, %.critedge2 ] + %64 = getelementptr inbounds nuw i8, ptr %.684, i64 1 + %65 = load i8, ptr %.684, align 1 + %66 = getelementptr inbounds nuw i8, ptr %.35483, i64 1 + store i8 %65, ptr %.35483, align 1 + %67 = load ptr, ptr %5, align 8 + %68 = icmp ult ptr %64, %67 + br i1 %68, label %.lr.ph85, label %._crit_edge ._crit_edge: ; preds = %.lr.ph85, %.critedge2 - %.354.lcssa = phi ptr [ %.152100, %.critedge2 ], [ %63, %.lr.ph85 ] + %.354.lcssa = phi ptr [ %.152105, %.critedge2 ], [ %66, %.lr.ph85 ] store ptr %7, ptr %5, align 8 store i8 60, ptr %.354.lcssa, align 1 - br label %66 + br label %69 -66: ; preds = %._crit_edge, %66 - %.788.idx = phi i64 [ 0, %._crit_edge ], [ %.788.add, %66 ] - %.45587 = phi ptr [ %.354.lcssa, %._crit_edge ], [ %67, %66 ] +69: ; preds = %._crit_edge, %69 + %.788.idx = phi i64 [ 0, %._crit_edge ], [ %.788.add, %69 ] + %.45587 = phi ptr [ %.354.lcssa, %._crit_edge ], [ %70, %69 ] %.788.add = add nuw nsw i64 %.788.idx, 1 %.ptr = getelementptr inbounds nuw i8, ptr @.str, i64 %.788.add - %67 = getelementptr inbounds nuw i8, ptr %.45587, i64 1 - %68 = load i8, ptr %.ptr, align 1 - store i8 %68, ptr %67, align 1 - %exitcond92 = icmp eq i64 %.788.add, 4 - br i1 %exitcond92, label %.loopexit, label %66 - -.loopexit: ; preds = %66, %10 - %.051 = phi ptr [ %1, %10 ], [ %67, %66 ] + %70 = getelementptr inbounds nuw i8, ptr %.45587, i64 1 + %71 = load i8, ptr %.ptr, align 1 + store i8 %71, ptr %70, align 1 + %exitcond97 = icmp eq i64 %.788.add, 4 + br i1 %exitcond97, label %.loopexit, label %69 + +.loopexit: ; preds = %69, %11 + %.051 = phi ptr [ %1, %11 ], [ %70, %69 ] store i8 0, ptr %.051, align 1 ret ptr %.051 } diff --git a/bench/graphviz/optimized/partition.ll b/bench/graphviz/optimized/partition.ll index 55a1169a475..fc920f32ac0 100644 --- a/bench/graphviz/optimized/partition.ll +++ b/bench/graphviz/optimized/partition.ll @@ -349,8 +349,8 @@ define internal fastcc void @genSegments(ptr noundef readonly captures(none) %0, %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 24 %.sroa.8.0.copyload = load double, ptr %.sroa.8.0..sroa_idx, align 8 store double %.sroa.0.0.copyload, ptr %6, align 16 - %.sroa.5.0..sroa_idx30 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store double %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx30, align 8 + %.sroa.5.0..sroa_idx31 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store double %.sroa.5.0.copyload, ptr %.sroa.5.0..sroa_idx31, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 32 store double %.sroa.6.0.copyload, ptr %7, align 16 %.sroa.8.16..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 40 @@ -428,8 +428,8 @@ convert.exit: ; preds = %.preheader.i, %5 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull readonly align 16 dereferenceable(16) %38, i64 16, i1 false) %indvars.iv.next43.i = add nuw nsw i64 %indvars.iv42.i, 1 %indvars.iv.next.i12 = add nuw nsw i64 %indvars.iv.i11, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next.i12, 4 - br i1 %exitcond.not, label %store.exit.preheader, label %21 + %exitcond.not.i13 = icmp eq i64 %indvars.iv.next.i12, 4 + br i1 %exitcond.not.i13, label %store.exit.preheader, label %21 store.exit.preheader: ; preds = %31 %39 = icmp sgt i32 %1, 0 @@ -443,42 +443,42 @@ store.exit.preheader: ; preds = %31 %indvars.iv42 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next43, %store.exit28 ] %indvars.iv = phi i64 [ 5, %.lr.ph.preheader ], [ %indvars.iv.next, %store.exit28 ] %40 = getelementptr inbounds nuw %struct.cell, ptr %0, i64 %indvars.iv42, i32 5 - %.sroa.032.0.copyload = load double, ptr %40, align 1 - %.sroa.534.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 8 - %.sroa.534.0.copyload = load double, ptr %.sroa.534.0..sroa_idx, align 1 - %.sroa.637.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 16 - %.sroa.637.0.copyload = load double, ptr %.sroa.637.0..sroa_idx, align 1 - %.sroa.838.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 24 - %.sroa.838.0.copyload = load double, ptr %.sroa.838.0..sroa_idx, align 1 - store double %.sroa.032.0.copyload, ptr %6, align 16 - store double %.sroa.534.0.copyload, ptr %.sroa.5.0..sroa_idx30, align 8 - store double %.sroa.637.0.copyload, ptr %7, align 16 - store double %.sroa.838.0.copyload, ptr %.sroa.8.16..sroa_idx, align 8 - store double %.sroa.032.0.copyload, ptr %8, align 16 - store double %.sroa.838.0.copyload, ptr %9, align 8 - store double %.sroa.637.0.copyload, ptr %10, align 16 - store double %.sroa.534.0.copyload, ptr %11, align 8 - br i1 %.not22.i, label %convert.exit22, label %.preheader.i18 - -.preheader.i18: ; preds = %.lr.ph, %.preheader.i18 - %indvars.iv.i19 = phi i64 [ %indvars.iv.next.i20, %.preheader.i18 ], [ 0, %.lr.ph ] - %41 = getelementptr inbounds nuw %struct.pointf_s, ptr %6, i64 %indvars.iv.i19 + %.sroa.033.0.copyload = load double, ptr %40, align 1 + %.sroa.535.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 8 + %.sroa.535.0.copyload = load double, ptr %.sroa.535.0..sroa_idx, align 1 + %.sroa.638.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 16 + %.sroa.638.0.copyload = load double, ptr %.sroa.638.0..sroa_idx, align 1 + %.sroa.839.0..sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 24 + %.sroa.839.0.copyload = load double, ptr %.sroa.839.0..sroa_idx, align 1 + store double %.sroa.033.0.copyload, ptr %6, align 16 + store double %.sroa.535.0.copyload, ptr %.sroa.5.0..sroa_idx31, align 8 + store double %.sroa.638.0.copyload, ptr %7, align 16 + store double %.sroa.839.0.copyload, ptr %.sroa.8.16..sroa_idx, align 8 + store double %.sroa.033.0.copyload, ptr %8, align 16 + store double %.sroa.839.0.copyload, ptr %9, align 8 + store double %.sroa.638.0.copyload, ptr %10, align 16 + store double %.sroa.535.0.copyload, ptr %11, align 8 + br i1 %.not22.i, label %convert.exit23, label %.preheader.i19 + +.preheader.i19: ; preds = %.lr.ph, %.preheader.i19 + %indvars.iv.i20 = phi i64 [ %indvars.iv.next.i21, %.preheader.i19 ], [ 0, %.lr.ph ] + %41 = getelementptr inbounds nuw %struct.pointf_s, ptr %6, i64 %indvars.iv.i20 %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 %43 = load double, ptr %42, align 8 %44 = load double, ptr %41, align 16 store double %44, ptr %42, align 8 %45 = fneg double %43 store double %45, ptr %41, align 16 - %indvars.iv.next.i20 = add nuw nsw i64 %indvars.iv.i19, 1 - %exitcond.not.i21 = icmp eq i64 %indvars.iv.next.i20, 4 - br i1 %exitcond.not.i21, label %convert.exit22, label %.preheader.i18 + %indvars.iv.next.i21 = add nuw nsw i64 %indvars.iv.i20, 1 + %exitcond.not.i22 = icmp eq i64 %indvars.iv.next.i21, 4 + br i1 %exitcond.not.i22, label %convert.exit23, label %.preheader.i19 -convert.exit22: ; preds = %.preheader.i18, %.lr.ph +convert.exit23: ; preds = %.preheader.i19, %.lr.ph %46 = add nuw nsw i64 %indvars.iv, 3 %47 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %46 %48 = getelementptr inbounds nuw i8, ptr %47, i64 44 - %49 = getelementptr inbounds nuw i8, ptr %47, i64 48 - %50 = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv + %sext.i = getelementptr inbounds nuw i8, ptr %47, i64 48 + %smax.i = getelementptr inbounds nuw %struct.segment_t, ptr %3, i64 %indvars.iv %51 = getelementptr inbounds nuw i8, ptr %50, i64 44 %52 = getelementptr inbounds nuw i8, ptr %50, i64 48 %53 = trunc nuw nsw i64 %indvars.iv to i32 @@ -491,9 +491,9 @@ convert.exit22: ; preds = %.preheader.i18, %.l 59: ; preds = %72, %convert.exit22 %indvars.iv42.i23 = phi i64 [ %indvars.iv, %convert.exit22 ], [ %indvars.iv.next43.i25, %72 ] - %indvars.iv.i24 = phi i64 [ 0, %convert.exit22 ], [ %indvars.iv.next.i26, %72 ] - %60 = icmp eq i64 %indvars.iv42.i23, %indvars.iv - br i1 %60, label %61, label %62 + %indvars.iv42.i24 = phi i64 [ 0, %convert.exit23 ], [ %indvars.iv.next43.i26, %72 ] + %indvars.iv.i25 = icmp eq i64 %indvars.iv42.i23, %indvars.iv + br i1 %indvars.iv.i25, label %61, label %62 61: ; preds = %59 store i32 %57, ptr %51, align 4 @@ -532,15 +532,15 @@ convert.exit22: ; preds = %.preheader.i18, %.l call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull readonly align 16 dereferenceable(16) %79, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull readonly align 16 dereferenceable(16) %79, i64 16, i1 false) %indvars.iv.next43.i25 = add nuw nsw i64 %indvars.iv42.i23, 1 - %indvars.iv.next.i26 = add nuw nsw i64 %indvars.iv.i24, 1 - %exitcond41.not = icmp eq i64 %indvars.iv.next.i26, 4 - br i1 %exitcond41.not, label %store.exit28, label %59 + %indvars.iv.next43.i26 = add nuw nsw i64 %indvars.iv42.i24, 1 + %indvars.iv.next.i27 = icmp eq i64 %indvars.iv.next43.i26, 4 + br i1 %indvars.iv.next.i27, label %store.exit28, label %59 store.exit28: ; preds = %72 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 4 %indvars.iv.next43 = add nuw nsw i64 %indvars.iv42, 1 - %exitcond47.not = icmp eq i64 %indvars.iv.next43, %wide.trip.count - br i1 %exitcond47.not, label %store.exit._crit_edge, label %.lr.ph + %exitcond.not = icmp eq i64 %indvars.iv.next43, %wide.trip.count + br i1 %exitcond.not, label %store.exit._crit_edge, label %.lr.ph store.exit._crit_edge: ; preds = %store.exit28, %store.exit.preheader ret void diff --git a/bench/hermes/optimized/hbc-attribute.ll b/bench/hermes/optimized/hbc-attribute.ll index 01ca77c735c..e0cb087934e 100644 --- a/bench/hermes/optimized/hbc-attribute.ll +++ b/bench/hermes/optimized/hbc-attribute.ll @@ -4523,11 +4523,11 @@ for.body: ; preds = %for.body.lr.ph, %_Z %keyInd.187 = phi i32 [ %add, %for.body.lr.ph ], [ %keyInd.2, %_ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit ] %idx.ext.i = zext i32 %keyInd.187 to i64 %add.ptr.i = getelementptr inbounds nuw i8, ptr %array.coerce0, i64 %idx.ext.i - %3 = load i64, ptr %bundleStart_, align 8 - %idx.neg.i = sub i64 0, %3 + %5 = load i64, ptr %bundleStart_, align 8 + %idx.neg.i = sub i64 0, %5 %add.ptr2.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i - %4 = ptrtoint ptr %add.ptr2.i to i64 - %conv.i = trunc i64 %4 to i32 + %6 = ptrtoint ptr %add.ptr2.i to i64 + %conv.i = trunc i64 %6 to i32 switch i32 %2, label %_ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit [ i32 6, label %sw.bb.i i32 5, label %sw.bb7.i @@ -4551,22 +4551,22 @@ sw.bb.i: ; preds = %for.body if.end3.i71: ; preds = %sw.bb.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i64) %call.i.i.i.i72 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i64) - %5 = load ptr, ptr %ConstFoundBucket.i.i.i.i64, align 8 + %7 = load ptr, ptr %ConstFoundBucket.i.i.i.i64, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i64) br i1 %call.i.i.i.i72, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77, label %if.end.i.i.i73 if.end.i.i.i73: ; preds = %if.end3.i71 - %call.i2.i.i.i74 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef %5) + %call.i2.i.i.i74 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, ptr noundef %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i74, ptr noundef nonnull align 8 dereferenceable(20) %key.i66, i64 16, i1 false) - %6 = load i32, ptr %second.i.i68, align 8 + %8 = load i32, ptr %second.i.i68, align 8 %second3.i.i.i.i.i75 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i74, i64 16 - store i32 %6, ptr %second3.i.i.i.i.i75, align 8 + store i32 %8, ptr %second3.i.i.i.i.i75, align 8 %second.i6.i.i.i.i76 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i74, i64 24 store i32 0, ptr %second.i6.i.i.i.i76, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i77: ; preds = %if.end.i.i.i73, %if.end3.i71 - %retval.0.i.i.i78 = phi ptr [ %call.i2.i.i.i74, %if.end.i.i.i73 ], [ %5, %if.end3.i71 ] + %retval.0.i.i.i78 = phi ptr [ %call.i2.i.i.i74, %if.end.i.i.i73 ], [ %7, %if.end3.i71 ] %second.i7.i79 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i78, i64 24 store i32 1, ptr %second.i7.i79, align 4 %7 = load ptr, ptr %emitter_.i, align 8 @@ -4605,22 +4605,22 @@ sw.bb7.i: ; preds = %for.body if.end3.i53: ; preds = %sw.bb7.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i46) %call.i.i.i.i54 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i46) - %12 = load ptr, ptr %ConstFoundBucket.i.i.i.i46, align 8 + %14 = load ptr, ptr %ConstFoundBucket.i.i.i.i46, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i46) br i1 %call.i.i.i.i54, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59, label %if.end.i.i.i55 if.end.i.i.i55: ; preds = %if.end3.i53 - %call.i2.i.i.i56 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef %12) + %call.i2.i.i.i56 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, ptr noundef %14) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i56, ptr noundef nonnull align 8 dereferenceable(20) %key.i48, i64 16, i1 false) - %13 = load i32, ptr %second.i.i50, align 8 + %15 = load i32, ptr %second.i.i50, align 8 %second3.i.i.i.i.i57 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i56, i64 16 - store i32 %13, ptr %second3.i.i.i.i.i57, align 8 + store i32 %15, ptr %second3.i.i.i.i.i57, align 8 %second.i6.i.i.i.i58 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i56, i64 24 store i32 0, ptr %second.i6.i.i.i.i58, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i59: ; preds = %if.end.i.i.i55, %if.end3.i53 - %retval.0.i.i.i60 = phi ptr [ %call.i2.i.i.i56, %if.end.i.i.i55 ], [ %12, %if.end3.i53 ] + %retval.0.i.i.i60 = phi ptr [ %call.i2.i.i.i56, %if.end.i.i.i55 ], [ %14, %if.end3.i53 ] %second.i7.i61 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i60, i64 24 store i32 2, ptr %second.i7.i61, align 4 %14 = load ptr, ptr %emitter_.i, align 8 @@ -4659,22 +4659,22 @@ sw.bb15.i: ; preds = %for.body if.end3.i35: ; preds = %sw.bb15.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i28) %call.i.i.i.i36 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i28) - %19 = load ptr, ptr %ConstFoundBucket.i.i.i.i28, align 8 + %21 = load ptr, ptr %ConstFoundBucket.i.i.i.i28, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i28) br i1 %call.i.i.i.i36, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41, label %if.end.i.i.i37 if.end.i.i.i37: ; preds = %if.end3.i35 - %call.i2.i.i.i38 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef %19) + %call.i2.i.i.i38 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, ptr noundef %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i38, ptr noundef nonnull align 8 dereferenceable(20) %key.i30, i64 16, i1 false) - %20 = load i32, ptr %second.i.i32, align 8 + %22 = load i32, ptr %second.i.i32, align 8 %second3.i.i.i.i.i39 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i38, i64 16 - store i32 %20, ptr %second3.i.i.i.i.i39, align 8 + store i32 %22, ptr %second3.i.i.i.i.i39, align 8 %second.i6.i.i.i.i40 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i38, i64 24 store i32 0, ptr %second.i6.i.i.i.i40, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i41: ; preds = %if.end.i.i.i37, %if.end3.i35 - %retval.0.i.i.i42 = phi ptr [ %call.i2.i.i.i38, %if.end.i.i.i37 ], [ %19, %if.end3.i35 ] + %retval.0.i.i.i42 = phi ptr [ %call.i2.i.i.i38, %if.end.i.i.i37 ], [ %21, %if.end3.i35 ] %second.i7.i43 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i42, i64 24 store i32 4, ptr %second.i7.i43, align 4 %21 = load ptr, ptr %emitter_.i, align 8 @@ -4710,22 +4710,22 @@ _ZN4llvh9StringRefC2EPKc.exit58.i: ; preds = %for.body if.end3.i17: ; preds = %_ZN4llvh9StringRefC2EPKc.exit58.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i10) %call.i.i.i.i18 = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i10) - %26 = load ptr, ptr %ConstFoundBucket.i.i.i.i10, align 8 + %28 = load ptr, ptr %ConstFoundBucket.i.i.i.i10, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i10) br i1 %call.i.i.i.i18, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23, label %if.end.i.i.i19 if.end.i.i.i19: ; preds = %if.end3.i17 - %call.i2.i.i.i20 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef %26) + %call.i2.i.i.i20 = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, ptr noundef %28) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i20, ptr noundef nonnull align 8 dereferenceable(20) %key.i12, i64 16, i1 false) - %27 = load i32, ptr %second.i.i14, align 8 + %29 = load i32, ptr %second.i.i14, align 8 %second3.i.i.i.i.i21 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i20, i64 16 - store i32 %27, ptr %second3.i.i.i.i.i21, align 8 + store i32 %29, ptr %second3.i.i.i.i.i21, align 8 %second.i6.i.i.i.i22 = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i20, i64 24 store i32 0, ptr %second.i6.i.i.i.i22, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23 _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i23: ; preds = %if.end.i.i.i19, %if.end3.i17 - %retval.0.i.i.i24 = phi ptr [ %call.i2.i.i.i20, %if.end.i.i.i19 ], [ %26, %if.end3.i17 ] + %retval.0.i.i.i24 = phi ptr [ %call.i2.i.i.i20, %if.end.i.i.i19 ], [ %28, %if.end3.i17 ] %second.i7.i25 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i24, i64 24 store i32 8, ptr %second.i7.i25, align 4 %28 = load ptr, ptr %emitter_.i, align 8 @@ -4760,22 +4760,22 @@ _ZN4llvh9StringRefC2EPKc.exit68.i: ; preds = %for.body if.end3.i: ; preds = %_ZN4llvh9StringRefC2EPKc.exit68.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i) %call.i.i.i.i = call noundef zeroext i1 @_ZNK4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E15LookupBucketForIS4_EEbRKT_RPKS9_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef nonnull align 8 dereferenceable(8) %ConstFoundBucket.i.i.i.i) - %33 = load ptr, ptr %ConstFoundBucket.i.i.i.i, align 8 + %35 = load ptr, ptr %ConstFoundBucket.i.i.i.i, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ConstFoundBucket.i.i.i.i) br i1 %call.i.i.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i, label %if.end.i.i.i if.end.i.i.i: ; preds = %if.end3.i - %call.i2.i.i.i = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef %33) + %call.i2.i.i.i = call noundef ptr @_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_E20InsertIntoBucketImplIS4_EEPS9_RKS4_RKT_SD_(ptr noundef nonnull align 1 dereferenceable(1) %emitted_.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, ptr noundef %35) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %call.i2.i.i.i, ptr noundef nonnull align 8 dereferenceable(20) %key.i, i64 16, i1 false) - %34 = load i32, ptr %second.i.i, align 8 + %36 = load i32, ptr %second.i.i, align 8 %second3.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i, i64 16 - store i32 %34, ptr %second3.i.i.i.i.i, align 8 + store i32 %36, ptr %second3.i.i.i.i.i, align 8 %second.i6.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i2.i.i.i, i64 24 store i32 0, ptr %second.i6.i.i.i.i, align 4 br label %_ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i _ZN4llvh12DenseMapBaseINS_8DenseMapISt4pairINS_9StringRefEjEjNS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_jEEEES4_jS6_S9_EixERKS4_.exit.i: ; preds = %if.end.i.i.i, %if.end3.i - %retval.0.i.i.i = phi ptr [ %call.i2.i.i.i, %if.end.i.i.i ], [ %33, %if.end3.i ] + %retval.0.i.i.i = phi ptr [ %call.i2.i.i.i, %if.end.i.i.i ], [ %35, %if.end3.i ] %second.i7.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 24 store i32 4, ptr %second.i7.i, align 4 %35 = load ptr, ptr %emitter_.i, align 8 @@ -4806,7 +4806,7 @@ _ZN12_GLOBAL__N_112UsageCounter22countSerializedLiteralEhPKhPj.exit: ; preds = % %keyInd.2 = phi i32 [ %keyInd.187, %for.body ], [ %add27.i, %sw.epilog.sink.split.i ] %dec = add nsw i32 %count.addr.188, -1 %inc = add nuw nsw i32 %i.089, 1 - %cmp8 = icmp slt i32 %inc, %keyTag.sroa.0.0.extract.trunc + %exitcond.not = icmp slt i32 %inc, %keyTag.sroa.0.0.extract.trunc %tobool = icmp ne i32 %dec, 0 %40 = select i1 %cmp8, i1 %tobool, i1 false br i1 %40, label %for.body, label %while.cond.loopexit, !llvm.loop !37 diff --git a/bench/icu/optimized/msgfmt.ll b/bench/icu/optimized/msgfmt.ll index fdea5e075c3..dafd8c6b383 100644 --- a/bench/icu/optimized/msgfmt.ll +++ b/bench/icu/optimized/msgfmt.ll @@ -1530,8 +1530,8 @@ if.end38: ; preds = %for.body for.inc: ; preds = %if.end38 %inc = add nuw nsw i32 %idx.023, 1 - %cmp28 = icmp slt i32 %inc, %call22 - br i1 %cmp28, label %for.body, label %return, !llvm.loop !7 + %exitcond.not = icmp slt i32 %inc, %call22 + br i1 %exitcond.not, label %for.body, label %return, !llvm.loop !7 return: ; preds = %for.body, %if.end38, %for.inc, %if.end27, %if.end9, %if.end20, %if.end3, %lor.lhs.false, %if.end, %entry %retval.0 = phi i1 [ true, %entry ], [ false, %if.end ], [ false, %lor.lhs.false ], [ false, %if.end3 ], [ %not.cmp14.not.not, %if.end9 ], [ false, %if.end20 ], [ true, %if.end27 ], [ false, %for.body ], [ false, %if.end38 ], [ true, %for.inc ] diff --git a/bench/icu/optimized/ubidi_props.ll b/bench/icu/optimized/ubidi_props.ll index 8504dbf2ca3..d9482ff8d23 100644 --- a/bench/icu/optimized/ubidi_props.ll +++ b/bench/icu/optimized/ubidi_props.ll @@ -48,37 +48,37 @@ for.cond4: ; preds = %for.cond4.preheader %limit.0 = phi i32 [ 68900, %if.end18 ], [ 2252, %for.cond4.preheader ] %jgArray.0 = phi ptr [ @_ZL20ubidi_props_jgArray2, %if.end18 ], [ @_ZL19ubidi_props_jgArray, %for.cond4.preheader ] %cmp517 = icmp samesign ult i32 %start.0, %limit.0 - br i1 %cmp517, label %while.body, label %if.end18 + br i1 %cmp517, label %while.body.preheader, label %if.end18 -while.body: ; preds = %for.cond4, %if.end11 - %prev.020 = phi i8 [ %prev.1, %if.end11 ], [ 0, %for.cond4 ] - %jgArray.119 = phi ptr [ %incdec.ptr, %if.end11 ], [ %jgArray.0, %for.cond4 ] - %start.118 = phi i32 [ %inc12, %if.end11 ], [ %start.0, %for.cond4 ] +while.body.preheader: ; preds = %for.cond4, %if.end11 + %scevgep = phi i8 [ %prev.1, %if.end11 ], [ 0, %for.cond4 ] + %4 = phi ptr [ %incdec.ptr, %if.end11 ], [ %jgArray.0, %for.cond4 ] + %5 = phi i32 [ %inc12, %if.end11 ], [ %start.0, %for.cond4 ] %incdec.ptr = getelementptr inbounds nuw i8, ptr %jgArray.119, i64 1 - %4 = load i8, ptr %jgArray.119, align 1 - %cmp7.not = icmp eq i8 %4, %prev.020 + %7 = load i8, ptr %jgArray.119, align 1 + %cmp7.not = icmp eq i8 %7, %prev.020 br i1 %cmp7.not, label %if.end11, label %if.then8 if.then8: ; preds = %while.body - %5 = load ptr, ptr %add9, align 8 - %6 = load ptr, ptr %sa, align 8 - tail call void %5(ptr noundef %6, i32 noundef %start.118) + %8 = load ptr, ptr %add9, align 8 + %9 = load ptr, ptr %sa, align 8 + tail call void %5(ptr noundef %9, i32 noundef %start.118) br label %if.end11 if.end11: ; preds = %if.then8, %while.body - %prev.1 = phi i8 [ %4, %if.then8 ], [ %prev.020, %while.body ] + %prev.1 = phi i8 [ %7, %if.then8 ], [ %prev.020, %while.body ] %inc12 = add nuw nsw i32 %start.118, 1 - %cmp5 = icmp samesign ult i32 %inc12, %limit.0 - br i1 %cmp5, label %while.body, label %while.end, !llvm.loop !6 + %exitcond23.not = icmp samesign ult i32 %inc12, %limit.0 + br i1 %exitcond23.not, label %while.body, label %while.end, !llvm.loop !6 while.end: ; preds = %if.end11 - %7 = icmp eq i8 %prev.1, 0 - br i1 %7, label %if.end18, label %if.then15 + %10 = icmp eq i8 %prev.1, 0 + br i1 %10, label %if.end18, label %if.then15 if.then15: ; preds = %while.end - %8 = load ptr, ptr %add9, align 8 - %9 = load ptr, ptr %sa, align 8 - tail call void %8(ptr noundef %9, i32 noundef %limit.0) + %11 = load ptr, ptr %add9, align 8 + %12 = load ptr, ptr %sa, align 8 + tail call void %8(ptr noundef %12, i32 noundef %limit.0) br label %if.end18 if.end18: ; preds = %for.cond4, %if.then15, %while.end diff --git a/bench/libevent/optimized/http.ll b/bench/libevent/optimized/http.ll index 50205ada4e4..75e98639750 100644 --- a/bench/libevent/optimized/http.ll +++ b/bench/libevent/optimized/http.ll @@ -9346,10 +9346,10 @@ if.then11: ; preds = %if.end while.cond.preheader: ; preds = %if.then11 %cmp1531 = icmp ult ptr %add.ptr12, %add.ptr4 - br i1 %cmp1531, label %land.rhs, label %while.endthread-pre-split + br i1 %cmp1531, label %land.rhs.preheader, label %while.endthread-pre-split -land.rhs: ; preds = %while.cond.preheader, %if.then22 - %s.addr.032 = phi ptr [ %incdec.ptr23, %if.then22 ], [ %add.ptr12, %while.cond.preheader ] +land.rhs.preheader: ; preds = %while.cond.preheader, %if.then22 + %scevgep = phi ptr [ %incdec.ptr23, %if.then22 ], [ %add.ptr12, %while.cond.preheader ] %4 = load i8, ptr %s.addr.032, align 1 %cmp18.not = icmp eq i8 %4, 46 br i1 %cmp18.not, label %while.cond31.preheader, label %while.body @@ -9361,8 +9361,8 @@ while.body: ; preds = %land.rhs if.then22: ; preds = %while.body %incdec.ptr23 = getelementptr inbounds nuw i8, ptr %s.addr.032, i64 1 - %cmp15 = icmp ult ptr %incdec.ptr23, %add.ptr4 - br i1 %cmp15, label %land.rhs, label %while.endthread-pre-split, !llvm.loop !43 + %exitcond.not = icmp ult ptr %incdec.ptr23, %add.ptr4 + br i1 %exitcond.not, label %land.rhs, label %while.endthread-pre-split, !llvm.loop !43 while.endthread-pre-split: ; preds = %if.then22, %while.cond.preheader %s.addr.0.lcssa = phi ptr [ %add.ptr12, %while.cond.preheader ], [ %incdec.ptr23, %if.then22 ] @@ -9374,10 +9374,10 @@ while.cond31.preheader: ; preds = %land.rhs, %while.en %s.addr.030 = phi ptr [ %s.addr.0.lcssa, %while.endthread-pre-split ], [ %s.addr.032, %land.rhs ] %s.addr.133 = getelementptr inbounds nuw i8, ptr %s.addr.030, i64 1 %cmp3234 = icmp ult ptr %s.addr.133, %add.ptr4 - br i1 %cmp3234, label %while.body34, label %return + br i1 %cmp3234, label %while.body34.preheader, label %return -while.body34: ; preds = %while.cond31.preheader, %if.then46 - %s.addr.135 = phi ptr [ %s.addr.1, %if.then46 ], [ %s.addr.133, %while.cond31.preheader ] +while.body34.preheader: ; preds = %while.cond31.preheader, %if.then46 + %scevgep45 = phi ptr [ %s.addr.1, %if.then46 ], [ %s.addr.133, %while.cond31.preheader ] %6 = load i8, ptr %s.addr.135, align 1 %idxprom = zext i8 %6 to i64 %arrayidx35 = getelementptr inbounds nuw [256 x i8], ptr @uri_chars, i64 0, i64 %idxprom @@ -9397,11 +9397,11 @@ lor.lhs.false38: ; preds = %while.body34 if.then46: ; preds = %lor.lhs.false38, %while.body34 %s.addr.1 = getelementptr inbounds nuw i8, ptr %s.addr.135, i64 1 - %cmp32 = icmp ult ptr %s.addr.1, %add.ptr4 - br i1 %cmp32, label %while.body34, label %return, !llvm.loop !44 + %exitcond46.not = icmp ult ptr %s.addr.1, %add.ptr4 + br i1 %exitcond46.not, label %while.body34, label %return, !llvm.loop !44 if.else51: ; preds = %if.end - %sub.ptr.lhs.cast = ptrtoint ptr %eos to i64 + %sub.ptr.sub = ptrtoint ptr %eos to i64 %sub.ptr.rhs.cast = ptrtoint ptr %s to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %cmp52 = icmp sgt i64 %sub.ptr.sub, 65 diff --git a/bench/linux/optimized/indirect.ll b/bench/linux/optimized/indirect.ll index 0d915f14bff..4c01a20b356 100644 --- a/bench/linux/optimized/indirect.ll +++ b/bench/linux/optimized/indirect.ll @@ -59,18 +59,18 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %8 = alloca i32, align 4 %9 = alloca [4 x i32], align 16 %10 = alloca [4 x %struct.Indirect], align 16 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #11 + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %7, i8 0, i64 56, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #11 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #12 store i32 -5, ptr %8, align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #11 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #11 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #12 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %10, i8 0, i64 96, i1 false), !annotation !6 %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 %12 = load i32, ptr %11, align 8 %13 = getelementptr inbounds nuw i8, ptr %2, i64 12 %14 = load i32, ptr %13, align 4 - callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_enter, i64 8), i32 2) #11 + callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_enter, i64 8), i32 2) #12 to label %35 [label %15], !srcloc !7 15: ; preds = %4 @@ -92,7 +92,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no 24: ; preds = %21 %25 = getelementptr inbounds nuw i8, ptr %22, i64 8 %26 = load ptr, ptr %25, align 8 - %27 = tail call i32 @__SCT__tp_func_ext4_ind_map_blocks_enter(ptr noundef %26, ptr noundef %1, i32 noundef %12, i32 noundef %14, i32 noundef %3) #11 + %27 = tail call i32 @__SCT__tp_func_ext4_ind_map_blocks_enter(ptr noundef %26, ptr noundef %1, i32 noundef %12, i32 noundef %14, i32 noundef %3) #12 br label %28 28: ; preds = %24, %21 @@ -117,7 +117,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %39, label %42, label %40, !prof !14 40: ; preds = %35 - %41 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 546, ptr noundef nonnull @.str.2) #12 + %41 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 546, ptr noundef nonnull @.str.2) #13 tail call void asm sideeffect "2048: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2048b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2048) #11, !srcloc !16 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 546, i32 0, i64 12) #11, !srcloc !17 unreachable @@ -130,7 +130,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %46, label %47, label %49, !prof !18 47: ; preds = %42 - %48 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 547, ptr noundef nonnull @.str.3) #12 + %48 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.ext4_ind_map_blocks, ptr noundef nonnull @.str.1, i32 noundef 547, ptr noundef nonnull @.str.3) #13 tail call void asm sideeffect "2049: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 2049b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 2049) #11, !srcloc !19 tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.1, i32 547, i32 0, i64 12) #11, !srcloc !20 unreachable @@ -215,7 +215,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %99 = add nsw i64 %98, %96 %100 = getelementptr inbounds nuw i8, ptr %1, i64 64 %101 = load i64, ptr %100, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %52, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %99, i64 noundef %101) #11 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %52, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %99, i64 noundef %101) #12 br label %.loopexit 102: ; preds = %67, %72, %77, %87 @@ -325,7 +325,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %178, label %180, label %179 179: ; preds = %169 - call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_map_blocks, i32 noundef 604, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.4) #11 + call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_map_blocks, i32 noundef 604, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.4) #12 store i32 -117, ptr %8, align 4 br label %.loopexit @@ -413,7 +413,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br label %229 227: ; preds = %223 - %228 = call i64 @ext4_inode_to_goal_block(ptr noundef %1) #11 + %228 = call i64 @ext4_inode_to_goal_block(ptr noundef %1) #12 br label %229 229: ; preds = %227, %224, %221 @@ -445,13 +445,13 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %250 = zext i32 %106 to i64 br label %254 -251: ; preds = %229 - %252 = sub i32 %.ph32, %104 - %253 = call i32 @llvm.umin.i32(i32 %252, i32 %241) +262: ; preds = %229 + %263 = sub i32 %.ph32, %104 + %exitcond = call i32 @llvm.umin.i32(i32 %263, i32 %241) br label %267 -254: ; preds = %259, %247 - %255 = phi i64 [ %260, %259 ], [ 1, %247 ] +264: ; preds = %259, %247 + %265 = phi i64 [ %260, %259 ], [ 1, %247 ] %256 = getelementptr i32, ptr %248, i64 %255 %257 = load i32, ptr %256, align 4 %258 = icmp eq i32 %257, 0 @@ -477,9 +477,9 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %271 = sub i64 %236, %270 %272 = sdiv exact i64 %271, 6 %273 = getelementptr i8, ptr %9, i64 %272 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #11 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, i8 0, i64 32, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12 store i32 0, ptr %6, align 4, !annotation !6 %274 = icmp slt i32 %240, 0 br i1 %274, label %.thread34, label %275 @@ -497,7 +497,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %282, label %283, label %285 283: ; preds = %279 - %284 = call i64 @ext4_mb_new_blocks(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %6) #11 + %284 = call i64 @ext4_mb_new_blocks(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %6) #12 store i64 %284, ptr %278, align 8 br label %296 @@ -506,7 +506,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %287 = load i64, ptr %232, align 8 %288 = load i32, ptr %276, align 8 %289 = and i32 %288, 1024 - %290 = call i64 @ext4_new_meta_blocks(ptr noundef %0, ptr noundef %286, i64 noundef %287, i32 noundef %289, ptr noundef null, ptr noundef nonnull %6) #11 + %290 = call i64 @ext4_new_meta_blocks(ptr noundef %0, ptr noundef %286, i64 noundef %287, i32 noundef %289, ptr noundef null, ptr noundef nonnull %6) #12 %291 = sext i32 %281 to i64 %292 = getelementptr [4 x i64], ptr %5, i64 0, i64 %291 store i64 %290, ptr %292, align 8 @@ -558,7 +558,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %327 = load i32, ptr %326, align 8 %328 = and i32 %327, -32905 %329 = or disjoint i32 %328, 32776 - %330 = call ptr @bdev_getblk(ptr noundef %318, i64 noundef %316, i32 noundef %321, i32 noundef %329) #11 + %330 = call ptr @bdev_getblk(ptr noundef %318, i64 noundef %316, i32 noundef %321, i32 noundef %329) #12 %331 = getelementptr inbounds nuw i8, ptr %306, i64 16 store ptr %330, ptr %331, align 8 %332 = icmp eq ptr %330, null @@ -569,7 +569,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br label %.loopexit41 334: ; preds = %309 - %335 = call i32 @__SCT__might_resched() #11 + %335 = call i32 @__SCT__might_resched() #12 %336 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; btsq $2, $0\0A\09/* output condition code c*/\0A", "=*m,={@ccc},Ir,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) %330, i64 2, ptr nonnull elementtype(i64) %330) #11, !srcloc !26 %337 = icmp ult i8 %336, 2 call void @llvm.assume(i1 %337) @@ -577,20 +577,20 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %338, label %340, label %339 339: ; preds = %334 - call void @__lock_buffer(ptr noundef nonnull %330) #11 + call void @__lock_buffer(ptr noundef nonnull %330) #12 br label %340 340: ; preds = %339, %334 %341 = load ptr, ptr %7, align 8 %342 = getelementptr inbounds nuw i8, ptr %341, i64 40 %343 = load ptr, ptr %342, align 8 - %344 = call i32 @__ext4_journal_get_create_access(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 365, ptr noundef %0, ptr noundef %343, ptr noundef nonnull %330, i32 noundef 1) #11 + %344 = call i32 @__ext4_journal_get_create_access(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 365, ptr noundef %0, ptr noundef %343, ptr noundef nonnull %330, i32 noundef 1) #12 store i32 %344, ptr %6, align 4 %345 = icmp eq i32 %344, 0 br i1 %345, label %347, label %346 346: ; preds = %340 - call void @unlock_buffer(ptr noundef nonnull %330) #11 + call void @unlock_buffer(ptr noundef nonnull %330) #12 br label %.loopexit41 347: ; preds = %340 @@ -633,9 +633,9 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br label %372 372: ; preds = %371, %.loopexit40 - call void @unlock_buffer(ptr noundef nonnull %330) #11 + call void @unlock_buffer(ptr noundef nonnull %330) #12 %373 = load ptr, ptr %7, align 8 - %374 = call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 385, ptr noundef %0, ptr noundef %373, ptr noundef nonnull %330) #11 + %374 = call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_alloc_branch, i32 noundef 385, ptr noundef %0, ptr noundef %373, ptr noundef nonnull %330) #12 store i32 %374, ptr %6, align 4 %375 = icmp eq i32 %374, 0 br i1 %375, label %376, label %.loopexit41 @@ -658,7 +658,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %386 = load i64, ptr %385, align 8 %387 = load i32, ptr %269, align 8 %388 = zext i32 %387 to i64 - call void @ext4_free_blocks(ptr noundef %0, ptr noundef %383, ptr noundef null, i64 noundef %386, i64 noundef %388, i32 noundef 0) #11 + call void @ext4_free_blocks(ptr noundef %0, ptr noundef %383, ptr noundef null, i64 noundef %386, i64 noundef %388, i32 noundef 0) #12 %389 = add i32 %239, -2 br label %390 @@ -683,20 +683,20 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no %404 = load i64, ptr %403, align 8 %405 = icmp eq ptr %402, null %406 = select i1 %405, i32 0, i32 2 - call void @ext4_free_blocks(ptr noundef %0, ptr noundef %397, ptr noundef %402, i64 noundef %404, i64 noundef 1, i32 noundef %406) #11 + call void @ext4_free_blocks(ptr noundef %0, ptr noundef %397, ptr noundef %402, i64 noundef %404, i64 noundef 1, i32 noundef %406) #12 %407 = add nsw i64 %396, -1 %.not = icmp eq i64 %396, 0 br i1 %.not, label %.loopexit38, label %395, !llvm.loop !30 .thread34: ; preds = %376, %267 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12 br label %410 .loopexit38: ; preds = %395, %390 %408 = load i32, ptr %6, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #12 store i32 %408, ptr %8, align 4 %409 = icmp eq i32 %408, 0 br i1 %409, label %410, label %.thread35 @@ -717,7 +717,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %191, label %.loopexit36, label %418 418: ; preds = %413 - call void @ext4_da_update_reserve_space(ptr noundef %1, i32 noundef %417, i32 noundef 1) #11 + call void @ext4_da_update_reserve_space(ptr noundef %1, i32 noundef %417, i32 noundef 1) #12 br label %.loopexit36 .loopexit36: ; preds = %122, %117, %418, %413 @@ -761,7 +761,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br i1 %440, label %442, label %441 441: ; preds = %.preheader - call void @__brelse(ptr noundef nonnull %439) #11 + call void @__brelse(ptr noundef nonnull %439) #12 br label %442 442: ; preds = %441, %.preheader @@ -771,7 +771,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no .loopexit: ; preds = %442, %95, %.thread35, %179 %445 = load i32, ptr %8, align 4 - callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_exit, i64 8), i32 2) #11 + callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds nuw (i8, ptr @__tracepoint_ext4_ind_map_blocks_exit, i64 8), i32 2) #12 to label %466 [label %446], !srcloc !7 446: ; preds = %.loopexit @@ -793,7 +793,7 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no 455: ; preds = %452 %456 = getelementptr inbounds nuw i8, ptr %453, i64 8 %457 = load ptr, ptr %456, align 8 - %458 = call i32 @__SCT__tp_func_ext4_ind_map_blocks_exit(ptr noundef %457, ptr noundef %1, i32 noundef %3, ptr noundef %2, i32 noundef %445) #11 + %458 = call i32 @__SCT__tp_func_ext4_ind_map_blocks_exit(ptr noundef %457, ptr noundef %1, i32 noundef %3, ptr noundef %2, i32 noundef %445) #12 br label %459 459: ; preds = %455, %452 @@ -811,10 +811,10 @@ define dso_local i32 @ext4_ind_map_blocks(ptr noundef %0, ptr noundef %1, ptr no br label %466 466: ; preds = %463, %459, %446, %.loopexit - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #11 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #11 - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #11 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #12 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #12 + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #12 ret i32 %445 } @@ -900,17 +900,17 @@ define internal fastcc noundef ptr @ext4_get_branch(ptr noundef %0, i32 noundef %58 = load i32, ptr %57, align 8 %59 = and i32 %58, -32905 %60 = or disjoint i32 %59, 32776 - %61 = tail call ptr @bdev_getblk(ptr noundef %50, i64 noundef %29, i32 noundef %52, i32 noundef %60) #11 + %61 = tail call ptr @bdev_getblk(ptr noundef %50, i64 noundef %29, i32 noundef %52, i32 noundef %60) #12 %62 = icmp eq ptr %61, null br i1 %62, label %.loopexit3, label %63, !prof !18 63: ; preds = %49 - %64 = tail call i32 @bh_uptodate_or_lock(ptr noundef nonnull %61) #11 + %64 = tail call i32 @bh_uptodate_or_lock(ptr noundef nonnull %61) #12 %65 = icmp eq i32 %64, 0 br i1 %65, label %66, label %83 66: ; preds = %63 - %67 = tail call i32 @ext4_read_bh(ptr noundef nonnull %61, i32 noundef 0, ptr noundef null) #11 + %67 = tail call i32 @ext4_read_bh(ptr noundef nonnull %61, i32 noundef 0, ptr noundef null) #12 %68 = icmp slt i32 %67, 0 br i1 %68, label %69, label %71 @@ -927,7 +927,7 @@ define internal fastcc noundef ptr @ext4_get_branch(ptr noundef %0, i32 noundef %76 = load i64, ptr %75, align 8 %77 = lshr i64 %76, 2 %78 = trunc i64 %77 to i32 - %79 = tail call i32 @ext4_check_blockref(ptr noundef nonnull @__func__.ext4_get_branch, i32 noundef 178, ptr noundef %0, ptr noundef %73, i32 noundef %78) #11 + %79 = tail call i32 @ext4_check_blockref(ptr noundef nonnull @__func__.ext4_get_branch, i32 noundef 178, ptr noundef %0, ptr noundef %73, i32 noundef %78) #12 %80 = icmp eq i32 %79, 0 br i1 %80, label %83, label %81 @@ -980,7 +980,7 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado %9 = load ptr, ptr %1, align 8 %10 = getelementptr inbounds nuw i8, ptr %9, i64 40 %11 = load ptr, ptr %10, align 8 - %12 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 441, ptr noundef %0, ptr noundef %11, ptr noundef nonnull %6, i32 noundef 1) #11 + %12 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 441, ptr noundef %0, ptr noundef %11, ptr noundef nonnull %6, i32 noundef 1) #12 %13 = icmp eq i32 %12, 0 br i1 %13, label %14, label %40 @@ -1018,12 +1018,12 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado br i1 %32, label %37, label %34 34: ; preds = %.loopexit5 - %35 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 472, ptr noundef %0, ptr noundef %33, ptr noundef nonnull %31) #11 + %35 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 472, ptr noundef %0, ptr noundef %33, ptr noundef nonnull %31) #12 %36 = icmp eq i32 %35, 0 br i1 %36, label %58, label %40 37: ; preds = %.loopexit5 - %38 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %33, ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 479) #11 + %38 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %33, ptr noundef nonnull @__func__.ext4_splice_branch, i32 noundef 479) #12 %39 = icmp eq i32 %38, 0 br i1 %39, label %58, label %40, !prof !14 @@ -1038,7 +1038,7 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado %45 = sext i32 %43 to i64 %46 = getelementptr %struct.Indirect, ptr %2, i64 %45, i32 2 %47 = load ptr, ptr %46, align 8 - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %44, ptr noundef %47, i64 noundef 0, i64 noundef 1, i32 noundef 2) #11 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %44, ptr noundef %47, i64 noundef 0, i64 noundef 1, i32 noundef 2) #12 %48 = add i32 %43, 1 %49 = icmp sgt i32 %48, %3 br i1 %49, label %.loopexit, label %.preheader, !llvm.loop !39 @@ -1052,7 +1052,7 @@ define internal fastcc i32 @ext4_splice_branch(ptr noundef %0, ptr noundef reado %55 = getelementptr inbounds nuw i8, ptr %1, i64 8 %56 = load i32, ptr %55, align 8 %57 = zext i32 %56 to i64 - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %50, ptr noundef null, i64 noundef %54, i64 noundef %57, i32 noundef 0) #11 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %50, ptr noundef null, i64 noundef %54, i64 noundef %57, i32 noundef 0) #12 br label %58 58: ; preds = %.loopexit, %37, %34 @@ -1129,11 +1129,11 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u %8 = load ptr, ptr %7, align 8 %9 = getelementptr inbounds nuw i8, ptr %8, i64 24 %10 = load i64, ptr %9, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #11 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #11 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %4, i8 0, i64 96, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #12 store i32 0, ptr %5, align 4 %11 = getelementptr inbounds nuw i8, ptr %1, i64 80 %12 = load i64, ptr %11, align 8 @@ -1227,7 +1227,7 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u %72 = add nsw i64 %71, %69 %73 = getelementptr inbounds nuw i8, ptr %1, i64 64 %74 = load i64, ptr %73, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %8, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %72, i64 noundef %74) #11 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %8, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %72, i64 noundef %74) #12 br label %190 .thread: ; preds = %60, %50, %45, %40, %2 @@ -1235,7 +1235,7 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u %76 = phi i1 [ false, %2 ], [ false, %60 ], [ false, %50 ], [ false, %45 ], [ true, %40 ] %77 = phi i32 [ 0, %2 ], [ 4, %60 ], [ 3, %50 ], [ 2, %45 ], [ 1, %40 ] %78 = xor i32 %20, -1 - tail call void @ext4_es_remove_extent(ptr noundef %1, i32 noundef %20, i32 noundef %78) #11 + tail call void @ext4_es_remove_extent(ptr noundef %1, i32 noundef %20, i32 noundef %78) #12 %79 = load i64, ptr %11, align 8 %80 = getelementptr i8, ptr %1, i64 -48 store i64 %79, ptr %80, align 8 @@ -1368,7 +1368,7 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u br i1 %166, label %168, label %167 167: ; preds = %152 - call void @__brelse(ptr noundef nonnull %165) #11 + call void @__brelse(ptr noundef nonnull %165) #12 br label %168 168: ; preds = %167, %152 @@ -1428,9 +1428,9 @@ define dso_local void @ext4_ind_truncate(ptr noundef %0, ptr noundef %1) local_u br label %190 190: ; preds = %68, %188, %184, %.thread27, %.thread - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11 - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #11 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #12 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #12 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #12 ret void } @@ -1440,7 +1440,7 @@ declare dso_local void @ext4_es_remove_extent(ptr noundef, i32 noundef, i32 noun ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define internal fastcc ptr @ext4_find_shared(ptr noundef %0, i32 noundef range(i32 0, 5) %1, ptr noundef readonly captures(none) %2, ptr noundef %3, ptr noundef writeonly captures(none) initializes((0, 4)) %4) unnamed_addr #0 align 16 { %6 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #12 store i32 0, ptr %4, align 4 %7 = getelementptr i8, ptr %2, i64 -4 %8 = icmp samesign ugt i32 %1, 1 @@ -1541,7 +1541,7 @@ define internal fastcc ptr @ext4_find_shared(ptr noundef %0, i32 noundef range(i br i1 %61, label %63, label %62 62: ; preds = %.preheader - tail call void @__brelse(ptr noundef nonnull %60) #11 + tail call void @__brelse(ptr noundef nonnull %60) #12 br label %63 63: ; preds = %62, %.preheader @@ -1551,7 +1551,7 @@ define internal fastcc ptr @ext4_find_shared(ptr noundef %0, i32 noundef range(i .loopexit: ; preds = %63, %55, %27 %66 = phi ptr [ %23, %27 ], [ %23, %55 ], [ %64, %63 ] - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #12 ret ptr %66 } @@ -1608,17 +1608,17 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %40, label %53, label %41 41: ; preds = %36 - %42 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %39, i32 noundef 1) #11 + %42 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %39, i32 noundef 1) #12 %43 = icmp eq i32 %42, 0 br i1 %43, label %44, label %45 44: ; preds = %41 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1030, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.9, i64 noundef %39, i32 noundef %22) #11 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1030, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.9, i64 noundef %39, i32 noundef %22) #12 br label %.critedge10 45: ; preds = %41 %46 = load ptr, ptr %25, align 8 - %47 = tail call ptr @ext4_sb_bread(ptr noundef %46, i64 noundef %39, i32 noundef 0) #11 + %47 = tail call ptr @ext4_sb_bread(ptr noundef %46, i64 noundef %39, i32 noundef 0) #12 %48 = icmp ugt ptr %47, inttoptr (i64 -4096 to ptr) br i1 %48, label %49, label %56 @@ -1626,7 +1626,7 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, %50 = ptrtoint ptr %47 to i64 %51 = trunc i64 %50 to i32 %52 = sub i32 0, %51 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1043, i64 noundef %39, i32 noundef %52, ptr noundef nonnull @.str.10) #11 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1043, i64 noundef %39, i32 noundef %52, ptr noundef nonnull @.str.10) #12 br label %53 53: ; preds = %87, %83, %82, %49, %36 @@ -1643,7 +1643,7 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %60, label %62, label %61 61: ; preds = %56 - tail call void @__brelse(ptr noundef nonnull %47) #11 + tail call void @__brelse(ptr noundef nonnull %47) #12 br label %62 62: ; preds = %61, %56 @@ -1678,18 +1678,18 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %81, label %.critedge10, label %82 82: ; preds = %.critedge - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %39, i64 noundef 1, i32 noundef 3) #11 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %39, i64 noundef 1, i32 noundef 3) #12 br i1 %35, label %53, label %83 83: ; preds = %82 %84 = load ptr, ptr %25, align 8 - %85 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1102, ptr noundef %0, ptr noundef %84, ptr noundef nonnull %2, i32 noundef 1) #11 + %85 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1102, ptr noundef %0, ptr noundef %84, ptr noundef nonnull %2, i32 noundef 1) #12 %86 = icmp eq i32 %85, 0 br i1 %86, label %87, label %53 87: ; preds = %83 store i32 0, ptr %37, align 4 - %88 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1108, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #11 + %88 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_branches, i32 noundef 1108, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #12 br label %53 89: ; preds = %21 @@ -1699,7 +1699,7 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, 91: ; preds = %89 %92 = getelementptr inbounds nuw i8, ptr %1, i64 40 %93 = load ptr, ptr %92, align 8 - %94 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 938, ptr noundef %0, ptr noundef %93, ptr noundef nonnull %2, i32 noundef 1) #11 + %94 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 938, ptr noundef %0, ptr noundef %93, ptr noundef nonnull %2, i32 noundef 1) #12 %95 = icmp eq i32 %94, 0 br i1 %95, label %96, label %.critedge10 @@ -1781,13 +1781,13 @@ define internal fastcc void @ext4_free_branches(ptr noundef %0, ptr noundef %1, br i1 %146, label %149, label %147 147: ; preds = %143, %135 - %148 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 985, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #11 + %148 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 985, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #12 br label %.critedge10 149: ; preds = %143 %150 = getelementptr inbounds nuw i8, ptr %2, i64 24 %151 = load i64, ptr %150, align 8 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 990, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.7, i64 noundef %151) #11 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_free_data, i32 noundef 990, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.7, i64 noundef %151) #12 br label %.critedge10 .critedge10: ; preds = %67, %63, %.critedge, %70, %53, %149, %147, %.thread.i, %91, %44, %24, %16, %13, %8 @@ -1807,15 +1807,15 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef %13 = load ptr, ptr %12, align 8 %14 = getelementptr inbounds nuw i8, ptr %13, i64 24 %15 = load i64, ptr %14, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #11 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #11 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #11 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #12 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #12 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %7, i8 0, i64 96, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #11 + call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %8, i8 0, i64 96, i1 false), !annotation !6 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #12 store i32 0, ptr %9, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #11 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #12 store i32 0, ptr %10, align 4 %16 = getelementptr inbounds nuw i8, ptr %13, i64 872 %17 = load ptr, ptr %16, align 8 @@ -1907,7 +1907,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef %73 = add nsw i64 %72, %70 %74 = getelementptr inbounds nuw i8, ptr %1, i64 64 %75 = load i64, ptr %74, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %13, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %73, i64 noundef %75) #11 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %13, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %73, i64 noundef %75) #12 %.pre = load ptr, ptr %12, align 8 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 24 %.pre103 = load i64, ptr %.phi.trans.insert, align 8 @@ -1994,7 +1994,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef %114 = add nsw i64 %113, %111 %115 = getelementptr inbounds nuw i8, ptr %1, i64 64 %116 = load i64, ptr %115, align 8 - tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %79, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %114, i64 noundef %116) #11 + tail call void (ptr, ptr, i32, ptr, ...) @__ext4_warning(ptr noundef %79, ptr noundef nonnull @__func__.ext4_block_to_path, i32 noundef 107, ptr noundef nonnull @.str.6, i64 noundef %114, i64 noundef %116) #12 br label %117 117: ; preds = %110, %102, %92, %87 @@ -2421,7 +2421,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br i1 %396, label %398, label %397 397: ; preds = %.preheader66 - call void @__brelse(ptr noundef nonnull %395) #11 + call void @__brelse(ptr noundef nonnull %395) #12 br label %398 398: ; preds = %397, %.preheader66 @@ -2437,7 +2437,7 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br i1 %404, label %406, label %405 405: ; preds = %.preheader64 - call void @__brelse(ptr noundef nonnull %403) #11 + call void @__brelse(ptr noundef nonnull %403) #12 br label %406 406: ; preds = %405, %.preheader64 @@ -2510,12 +2510,12 @@ define dso_local noundef i32 @ext4_ind_remove_space(ptr noundef %0, ptr noundef br label %.loopexit70 .thread: ; preds = %406, %139, %.thread122, %.loopexit, %149, %148, %4 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11 - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #11 - call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #11 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #11 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #12 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #12 + call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #12 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #12 ret i32 0 } @@ -2604,7 +2604,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun br i1 %16, label %17, label %22 17: ; preds = %12 - %18 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #11 + %18 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #12 %19 = and i32 %18, 1 %20 = icmp eq i32 %19, 0 %21 = select i1 %20, i32 4, i32 6 @@ -2613,12 +2613,12 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun 22: ; preds = %17, %12, %7, %7 %23 = phi i32 [ 7, %7 ], [ 7, %7 ], [ 7, %12 ], [ %21, %17 ] %24 = trunc i64 %4 to i32 - %25 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %3, i32 noundef %24) #11 + %25 = tail call i32 @ext4_inode_block_valid(ptr noundef %1, i64 noundef %3, i32 noundef %24) #12 %26 = icmp eq i32 %25, 0 br i1 %26, label %27, label %28 27: ; preds = %22 - tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 883, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.8, i64 noundef %3, i64 noundef %4) #11 + tail call void (ptr, ptr, i32, i64, i32, ptr, ...) @__ext4_error_inode(ptr noundef %1, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 883, i64 noundef 0, i32 noundef 0, ptr noundef nonnull @.str.8, i64 noundef %3, i64 noundef %4) #12 br label %66 28: ; preds = %22 @@ -2633,7 +2633,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun br i1 %36, label %50, label %37 37: ; preds = %28 - %38 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #11 + %38 = tail call i32 @ext4_inode_journal_mode(ptr noundef %1) #12 %39 = and i32 %38, 1 %40 = icmp eq i32 %39, 0 br i1 %40, label %50, label %41 @@ -2670,12 +2670,12 @@ define internal fastcc range(i32 -2147483648, 2) i32 @ext4_clear_blocks(ptr noun br label %63 63: ; preds = %56, %54 - tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %3, i64 noundef %4, i32 noundef %23) #11 + tail call void @ext4_free_blocks(ptr noundef %0, ptr noundef %1, ptr noundef null, i64 noundef %3, i64 noundef %4, i32 noundef %23) #12 br label %66 64: ; preds = %50 %65 = load ptr, ptr %29, align 8 - tail call void @__ext4_std_error(ptr noundef %65, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 898, i32 noundef %52) #11 + tail call void @__ext4_std_error(ptr noundef %65, ptr noundef nonnull @__func__.ext4_clear_blocks, i32 noundef 898, i32 noundef %52) #12 br label %66 66: ; preds = %64, %63, %27 @@ -2728,7 +2728,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr %38 = tail call i32 @llvm.umin.i32(i32 %37, i32 64) %39 = add nuw nsw i32 %38, %31 %40 = add nuw nsw i32 %39, %28 - %41 = tail call i32 @__ext4_journal_ensure_credits(ptr noundef %0, i32 noundef 12, i32 noundef %40, i32 noundef %3) #11 + %41 = tail call i32 @__ext4_journal_ensure_credits(ptr noundef %0, i32 noundef 12, i32 noundef %40, i32 noundef %3) #12 %42 = icmp slt i32 %41, 1 br i1 %42, label %.thread10, label %43 @@ -2737,12 +2737,12 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr br i1 %44, label %48, label %45 45: ; preds = %43 - %46 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 703, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #11 + %46 = tail call i32 @__ext4_handle_dirty_metadata(ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 703, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2) #12 %47 = icmp eq i32 %46, 0 br i1 %47, label %48, label %60, !prof !14 48: ; preds = %45, %43 - %49 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 707) #11 + %49 = tail call i32 @__ext4_mark_inode_dirty(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @__func__.ext4_ind_trunc_restart_fn, i32 noundef 707) #12 %50 = icmp eq i32 %49, 0 br i1 %50, label %51, label %60, !prof !14 @@ -2761,9 +2761,9 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr unreachable .thread: ; preds = %51 - tail call void @ext4_discard_preallocations(ptr noundef %1) #11 + tail call void @ext4_discard_preallocations(ptr noundef %1) #12 %59 = getelementptr i8, ptr %1, i64 -40 - tail call void @up_write(ptr noundef %59) #11 + tail call void @up_write(ptr noundef %59) #12 br label %63 60: ; preds = %48, %45 @@ -2815,7 +2815,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr %98 = select i1 %97, i32 12, i32 24 %99 = add nuw nsw i32 %95, %98 %100 = add nuw nsw i32 %99, %86 - %101 = tail call i32 @jbd2__journal_restart(ptr noundef %0, i32 noundef %100, i32 noundef %3, i32 noundef 3136) #11 + %101 = tail call i32 @jbd2__journal_restart(ptr noundef %0, i32 noundef %100, i32 noundef %3, i32 noundef 3136) #12 br label %102 102: ; preds = %85, %88 @@ -2825,7 +2825,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr 105: ; preds = %102 %106 = getelementptr i8, ptr %1, i64 -40 - tail call void @down_write(ptr noundef %106) #11 + tail call void @down_write(ptr noundef %106) #12 br label %107 107: ; preds = %105, %102 @@ -2837,7 +2837,7 @@ define internal fastcc i32 @ext4_ind_truncate_ensure_credits(ptr noundef %0, ptr 110: ; preds = %109 %111 = load ptr, ptr %7, align 8 - %112 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_ind_truncate_ensure_credits, i32 noundef 749, ptr noundef %0, ptr noundef %111, ptr noundef nonnull %2, i32 noundef 1) #11 + %112 = tail call i32 @__ext4_journal_get_write_access(ptr noundef nonnull @__func__.ext4_ind_truncate_ensure_credits, i32 noundef 749, ptr noundef %0, ptr noundef %111, ptr noundef nonnull %2, i32 noundef 1) #12 %113 = icmp eq i32 %112, 0 br i1 %113, label %114, label %.thread10, !prof !14 diff --git a/bench/llvm/optimized/SemaConcept.ll b/bench/llvm/optimized/SemaConcept.ll index 654348fac69..80d5c01c06f 100644 --- a/bench/llvm/optimized/SemaConcept.ll +++ b/bench/llvm/optimized/SemaConcept.ll @@ -9182,14 +9182,14 @@ define dso_local noundef zeroext i1 @_ZN5clang4Sema22IsAtLeastAsConstrainedEPNS_ 23: ; preds = %7 %24 = zext i1 %22 to i8 store i8 %24, ptr %6, align 1, !tbaa !748 - br label %188 + br label %192 25: ; preds = %7 br i1 %22, label %26, label %27 26: ; preds = %25 store i8 1, ptr %6, align 1, !tbaa !748 - br label %188 + br label %192 27: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #25 @@ -9274,7 +9274,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPN5clang9NamedDeclES5_EbNS_12DenseMa %85 = getelementptr inbounds nuw i8, ptr %.sroa.0.1.i, i64 16 %86 = load i8, ptr %85, align 8, !tbaa !1075, !range !699, !noundef !700 store i8 %86, ptr %6, align 1, !tbaa !748 - br label %187 + br label %191 87: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPN5clang9NamedDeclES5_EbNS_12DenseMapInfoIS6_vEENS_6detail12DenseMapPairIS6_bEEEES6_bS8_SB_E4findERKS6_.exit call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) @@ -9361,56 +9361,56 @@ _ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38: %131 = getelementptr inbounds nuw i8, ptr %15, i64 8 %132 = getelementptr inbounds nuw i8, ptr %15, i64 32 %133 = getelementptr inbounds nuw i8, ptr %15, i64 24 - br i1 %124, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split + br i1 %124, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us.preheader, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split -_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us - %.02260.us = phi i64 [ %141, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38 ] +_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us.preheader: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us + %134 = phi i64 [ %141, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38 ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15) #25 store ptr %0, ptr %15, align 8, !tbaa !775 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %131, i8 0, i64 20, i1 false) store i32 %130, ptr %132, align 8, !tbaa !1077 - %134 = getelementptr inbounds nuw ptr, ptr %2, i64 %.02260.us - %135 = load ptr, ptr %134, align 8, !tbaa !773 - %136 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %135) - %137 = and i64 %136, -2 - %138 = inttoptr i64 %137 to ptr - store ptr %138, ptr %134, align 8, !tbaa !773 + %136 = getelementptr inbounds nuw ptr, ptr %2, i64 %.02260.us + %137 = load ptr, ptr %136, align 8, !tbaa !773 + %138 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %137) + %139 = and i64 %138, -2 + %140 = inttoptr i64 %139 to ptr + store ptr %140, ptr %136, align 8, !tbaa !773 %.val30.us = load ptr, ptr %131, align 8, !tbaa !1082 %.val31.us = load i32, ptr %133, align 8, !tbaa !1083 - %139 = zext i32 %.val31.us to i64 - %140 = shl nuw nsw i64 %139, 4 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val30.us, i64 noundef %140, i64 noundef 8) #25 + %141 = zext i32 %.val31.us to i64 + %142 = shl nuw nsw i64 %141, 4 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val30.us, i64 noundef %142, i64 noundef 8) #25 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) #25 - %141 = add i64 %.02260.us, 1 - %.not27.us = icmp eq i64 %141, %3 + %143 = add i64 %.02260.us, 1 + %exitcond68 = icmp eq i64 %141, %3 %.not28.us = icmp eq i64 %141, %21 %or.cond.us = or i1 %.not27.us, %.not28.us br i1 %or.cond.us, label %.critedge, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, !llvm.loop !1084 _ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38 - %142 = icmp ugt i32 %105, %123 - br i1 %142, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, label %.critedge + %144 = icmp ugt i32 %105, %123 + br i1 %144, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us.preheader, label %.critedge -_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us - %.02260.us61 = phi i64 [ %150, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split ] +_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us.preheader: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us + %145 = phi i64 [ %150, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us ], [ 0, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #25 store ptr %0, ptr %16, align 8, !tbaa !775 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %126, i8 0, i64 20, i1 false) store i32 %125, ptr %127, align 8, !tbaa !1077 - %143 = getelementptr inbounds nuw ptr, ptr %128, i64 %.02260.us61 - %144 = load ptr, ptr %143, align 8, !tbaa !773 - %145 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %144) - %146 = and i64 %145, -2 - %147 = inttoptr i64 %146 to ptr - store ptr %147, ptr %143, align 8, !tbaa !773 + %147 = getelementptr inbounds nuw ptr, ptr %128, i64 %.02260.us61 + %148 = load ptr, ptr %147, align 8, !tbaa !773 + %149 = call fastcc i64 @_ZN5clang13TreeTransformIN12_GLOBAL__N_121AdjustConstraintDepthEE13TransformExprEPNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %148) + %150 = and i64 %149, -2 + %151 = inttoptr i64 %150 to ptr + store ptr %151, ptr %147, align 8, !tbaa !773 %.val32.us = load ptr, ptr %126, align 8, !tbaa !1082 %.val33.us = load i32, ptr %129, align 8, !tbaa !1083 - %148 = zext i32 %.val33.us to i64 - %149 = shl nuw nsw i64 %148, 4 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val32.us, i64 noundef %149, i64 noundef 8) #25 + %152 = zext i32 %.val33.us to i64 + %153 = shl nuw nsw i64 %152, 4 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %.val32.us, i64 noundef %153, i64 noundef 8) #25 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #25 - %150 = add i64 %.02260.us61, 1 - %.not27.us62 = icmp eq i64 %150, %3 + %154 = add i64 %.02260.us61, 1 + %exitcond = icmp eq i64 %150, %3 %.not28.us63 = icmp eq i64 %150, %21 %or.cond.us64 = or i1 %.not27.us62, %.not28.us63 br i1 %or.cond.us64, label %.critedge, label %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, !llvm.loop !1084 @@ -9418,132 +9418,132 @@ _ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38. .critedge: ; preds = %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.split.us, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split.us, %_ZL36CalculateTemplateDepthForConstraintsRN5clang4SemaEPKNS_9NamedDeclEb.exit38.split call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #25 store ptr %0, ptr %17, align 8, !tbaa !1085 - %151 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %1, ptr %2, i64 %3) - %.not.i = icmp eq ptr %151, null - br i1 %.not.i, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", label %152 + %155 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %1, ptr %2, i64 %3) + %.not.i = icmp eq ptr %155, null + br i1 %.not.i, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", label %156 "_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread": ; preds = %.critedge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #25 - br label %187 + br label %191 -152: ; preds = %.critedge +156: ; preds = %.critedge call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) #25 - call void @_ZN5clang7makeDNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %151) - %153 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %4, ptr %128, i64 %21) - %.not17.i = icmp eq ptr %153, null - br i1 %.not17.i, label %171, label %154 + call void @_ZN5clang7makeDNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %8, ptr noundef nonnull align 8 dereferenceable(8) %155) + %157 = call noundef ptr @_ZN5clang4Sema34getNormalizedAssociatedConstraintsEPNS_9NamedDeclEN4llvm8ArrayRefIPKNS_4ExprEEE(ptr noundef nonnull align 8 dereferenceable(17504) %0, ptr noundef nonnull %4, ptr %128, i64 %21) + %.not17.i = icmp eq ptr %157, null + br i1 %.not17.i, label %175, label %158 -154: ; preds = %152 +158: ; preds = %156 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %9) #25 - call void @_ZN5clang7makeCNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %153) - %155 = call fastcc noundef zeroext i1 @"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRKNS4_11SmallVectorINSC_INS4_12PointerUnionIJPNS_16AtomicConstraintEPNS_22FoldExpandedConstraintEEEELj2EEELj4EEESM_RKT_"(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(144) %9, ptr noundef nonnull readonly align 8 dereferenceable(8) %17) - %156 = zext i1 %155 to i8 - store i8 %156, ptr %6, align 1, !tbaa !748 - %157 = load ptr, ptr %9, align 8, !tbaa !30 - %158 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %159 = load i32, ptr %158, align 8, !tbaa !28 - %.not4.i.i.i = icmp eq i32 %159, 0 + call void @_ZN5clang7makeCNFERKNS_20NormalizedConstraintE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::SmallVector.1229") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %157) + %159 = call fastcc noundef zeroext i1 @"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRKNS4_11SmallVectorINSC_INS4_12PointerUnionIJPNS_16AtomicConstraintEPNS_22FoldExpandedConstraintEEEELj2EEELj4EEESM_RKT_"(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(144) %9, ptr noundef nonnull readonly align 8 dereferenceable(8) %17) + %160 = zext i1 %159 to i8 + store i8 %160, ptr %6, align 1, !tbaa !748 + %161 = load ptr, ptr %9, align 8, !tbaa !30 + %162 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %163 = load i32, ptr %162, align 8, !tbaa !28 + %.not4.i.i.i = icmp eq i32 %163, 0 br i1 %.not4.i.i.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i, label %.lr.ph.i.preheader.i.i -.lr.ph.i.preheader.i.i: ; preds = %154 - %160 = zext i32 %159 to i64 - %161 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %157, i64 %160 +.lr.ph.i.preheader.i.i: ; preds = %158 + %164 = zext i32 %163 to i64 + %165 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %161, i64 %164 br label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i, %.lr.ph.i.preheader.i.i - %.05.i.i.i = phi ptr [ %162, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i ], [ %161, %.lr.ph.i.preheader.i.i ] - %162 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -32 - %163 = load ptr, ptr %162, align 8, !tbaa !30 - %164 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -16 - %165 = icmp eq ptr %163, %164 - br i1 %165, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i, label %166 - -166: ; preds = %.lr.ph.i.i.i - call void @free(ptr noundef %163) #25 + %.05.i.i.i = phi ptr [ %166, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i ], [ %165, %.lr.ph.i.preheader.i.i ] + %166 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -32 + %167 = load ptr, ptr %166, align 8, !tbaa !30 + %168 = getelementptr inbounds i8, ptr %.05.i.i.i, i64 -16 + %169 = icmp eq ptr %167, %168 + br i1 %169, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i, label %170 + +170: ; preds = %.lr.ph.i.i.i + call void @free(ptr noundef %167) #25 br label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i -_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i: ; preds = %166, %.lr.ph.i.i.i - %.not.i.i.i = icmp eq ptr %157, %162 +_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i: ; preds = %170, %.lr.ph.i.i.i + %.not.i.i.i = icmp eq ptr %161, %166 br i1 %.not.i.i.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i, label %.lr.ph.i.i.i, !llvm.loop !1061 _ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i.i %.pre.i.i = load ptr, ptr %9, align 8, !tbaa !30 br label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i -_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i, %154 - %167 = phi ptr [ %.pre.i.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i ], [ %157, %154 ] - %168 = getelementptr inbounds nuw i8, ptr %9, i64 16 - %169 = icmp eq ptr %167, %168 - br i1 %169, label %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, label %170 +_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i, %158 + %171 = phi ptr [ %.pre.i.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i.i ], [ %161, %158 ] + %172 = getelementptr inbounds nuw i8, ptr %9, i64 16 + %173 = icmp eq ptr %171, %172 + br i1 %173, label %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, label %174 -170: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i - call void @free(ptr noundef %167) #25 +174: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i + call void @free(ptr noundef %171) #25 br label %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i -_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i: ; preds = %170, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i +_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i: ; preds = %174, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i.i call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #25 - br label %171 + br label %175 -171: ; preds = %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, %152 - %172 = load ptr, ptr %8, align 8, !tbaa !30 - %173 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %174 = load i32, ptr %173, align 8, !tbaa !28 - %.not4.i.i18.i = icmp eq i32 %174, 0 +175: ; preds = %_ZN4llvm11SmallVectorINS0_INS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EEELj4EED2Ev.exit.i, %156 + %176 = load ptr, ptr %8, align 8, !tbaa !30 + %177 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %178 = load i32, ptr %177, align 8, !tbaa !28 + %.not4.i.i18.i = icmp eq i32 %178, 0 br i1 %.not4.i.i18.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i, label %.lr.ph.i.preheader.i19.i -.lr.ph.i.preheader.i19.i: ; preds = %171 - %175 = zext i32 %174 to i64 - %176 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %172, i64 %175 +.lr.ph.i.preheader.i19.i: ; preds = %175 + %179 = zext i32 %178 to i64 + %180 = getelementptr inbounds nuw %"class.llvm::SmallVector.1235", ptr %176, i64 %179 br label %.lr.ph.i.i20.i .lr.ph.i.i20.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i, %.lr.ph.i.preheader.i19.i - %.05.i.i21.i = phi ptr [ %177, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i ], [ %176, %.lr.ph.i.preheader.i19.i ] - %177 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -32 - %178 = load ptr, ptr %177, align 8, !tbaa !30 - %179 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -16 - %180 = icmp eq ptr %178, %179 - br i1 %180, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i, label %181 - -181: ; preds = %.lr.ph.i.i20.i - call void @free(ptr noundef %178) #25 + %.05.i.i21.i = phi ptr [ %181, %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i ], [ %180, %.lr.ph.i.preheader.i19.i ] + %181 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -32 + %182 = load ptr, ptr %181, align 8, !tbaa !30 + %183 = getelementptr inbounds i8, ptr %.05.i.i21.i, i64 -16 + %184 = icmp eq ptr %182, %183 + br i1 %184, label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i, label %185 + +185: ; preds = %.lr.ph.i.i20.i + call void @free(ptr noundef %182) #25 br label %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i -_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i: ; preds = %181, %.lr.ph.i.i20.i - %.not.i.i23.i = icmp eq ptr %172, %177 +_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i: ; preds = %185, %.lr.ph.i.i20.i + %.not.i.i23.i = icmp eq ptr %176, %181 br i1 %.not.i.i23.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i, label %.lr.ph.i.i20.i, !llvm.loop !1061 _ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i: ; preds = %_ZN4llvm11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS2_22FoldExpandedConstraintEEEELj2EED2Ev.exit.i.i22.i %.pre.i25.i = load ptr, ptr %8, align 8, !tbaa !30 br label %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i -_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i, %171 - %182 = phi ptr [ %.pre.i25.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i ], [ %172, %171 ] - %183 = getelementptr inbounds nuw i8, ptr %8, i64 16 - %184 = icmp eq ptr %182, %183 - br i1 %184, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", label %185 +_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i, %175 + %186 = phi ptr [ %.pre.i25.i, %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.loopexit.i24.i ], [ %176, %175 ] + %187 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %188 = icmp eq ptr %186, %187 + br i1 %188, label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", label %189 -185: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i - call void @free(ptr noundef %182) #25 +189: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i + call void @free(ptr noundef %186) #25 br label %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" -"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit": ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i, %185 +"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit": ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorINS_12PointerUnionIJPN5clang16AtomicConstraintEPNS3_22FoldExpandedConstraintEEEELj2EEELb0EE13destroy_rangeEPS9_SB_.exit.i26.i, %189 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #25 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #25 - br i1 %.not17.i, label %187, label %186 + br i1 %.not17.i, label %191, label %190 -186: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" +190: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #25 call void @_ZN4llvm12DenseMapBaseINS_8DenseMapISt4pairIPN5clang9NamedDeclES5_EbNS_12DenseMapInfoIS6_vEENS_6detail12DenseMapPairIS6_bEEEES6_bS8_SB_E11try_emplaceIJRbEEES2_INS_16DenseMapIteratorIS6_bS8_SB_Lb0EEEbERKS6_DpOT_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.1255") align 8 %18, ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 1 dereferenceable(1) %6) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #25 - br label %187 + br label %191 -187: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", %186, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", %84 - %.1 = phi i1 [ false, %84 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" ], [ false, %186 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread" ] +191: ; preds = %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread", %190, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit", %84 + %.1 = phi i1 [ false, %84 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit" ], [ false, %190 ], [ true, %"_ZN5clang8subsumesIZNS_4Sema22IsAtLeastAsConstrainedEPNS_9NamedDeclEN4llvm15MutableArrayRefIPKNS_4ExprEEES3_S9_RbE3$_1EEbRS1_S3_NS4_8ArrayRefIS8_EES3_SE_SA_RKT_.exit.thread" ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #25 - br label %188 + br label %192 -188: ; preds = %187, %26, %23 - %.0 = phi i1 [ false, %23 ], [ false, %26 ], [ %.1, %187 ] +192: ; preds = %191, %26, %23 + %.0 = phi i1 [ false, %23 ], [ false, %26 ], [ %.1, %191 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/SemaTemplate.ll b/bench/llvm/optimized/SemaTemplate.ll index 7d084cb7f77..e8aa581cd40 100644 --- a/bench/llvm/optimized/SemaTemplate.ll +++ b/bench/llvm/optimized/SemaTemplate.ll @@ -78308,7 +78308,7 @@ define dso_local void @_ZN5clang4Sema31getTemplateArgumentBindingsTextB5cxx11EPK store ptr %7, ptr %18, align 8, !tbaa !1959 call void @_ZN4llvm11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef null, i64 noundef 0, i32 noundef 0) #30 %.not = icmp eq ptr %2, null - br i1 %.not, label %34, label %19 + br i1 %.not, label %35, label %19 19: ; preds = %5 %20 = getelementptr inbounds nuw i8, ptr %2, i64 20 @@ -78317,7 +78317,7 @@ define dso_local void @_ZN5clang4Sema31getTemplateArgumentBindingsTextB5cxx11EPK %23 = icmp eq i32 %22, 0 %24 = icmp eq i32 %4, 0 %or.cond = or i1 %24, %23 - br i1 %or.cond, label %34, label %.preheader + br i1 %or.cond, label %35, label %.preheader .preheader: ; preds = %19 %25 = getelementptr inbounds nuw i8, ptr %8, i64 24 @@ -78331,172 +78331,172 @@ define dso_local void @_ZN5clang4Sema31getTemplateArgumentBindingsTextB5cxx11EPK %33 = zext nneg i32 %22 to i64 br label %37 -34: ; preds = %19, %5 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %35, ptr %0, align 8, !tbaa !890 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %36, align 8, !tbaa !861 - store i8 0, ptr %35, align 8, !tbaa !794 - br label %141 +35: ; preds = %19, %5 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %36, ptr %0, align 8, !tbaa !890 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %37, align 8, !tbaa !861 + store i8 0, ptr %36, align 8, !tbaa !794 + br label %142 -37: ; preds = %.preheader, %_ZN4llvm11raw_ostreamlsEPKc.exit37 +38: ; preds = %.preheader, %_ZN4llvm11raw_ostreamlsEPKc.exit37 %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %_ZN4llvm11raw_ostreamlsEPKc.exit37 ] - %38 = icmp eq i64 %indvars.iv, 0 - %39 = load ptr, ptr %25, align 8, !tbaa !2180 - %40 = load ptr, ptr %26, align 8, !tbaa !2181 + %39 = icmp eq i64 %indvars.iv, 0 + %40 = load ptr, ptr %25, align 8, !tbaa !2180 + %41 = load ptr, ptr %26, align 8, !tbaa !2181 %41 = ptrtoint ptr %39 to i64 %42 = ptrtoint ptr %40 to i64 %43 = sub i64 %41, %42 br i1 %38, label %.split, label %.split21 -.split: ; preds = %37 - %44 = icmp ult i64 %43, 6 - br i1 %44, label %45, label %47 +.split: ; preds = %38 + %45 = icmp ult i64 %43, 6 + br i1 %45, label %46, label %48 -45: ; preds = %.split - %46 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.5, i64 noundef 6) #30 +46: ; preds = %.split + %47 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.5, i64 noundef 6) #30 br label %_ZN4llvm11raw_ostreamlsEPKc.exit -47: ; preds = %.split - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %40, ptr noundef nonnull align 1 dereferenceable(6) @.str.5, i64 6, i1 false) - %48 = load ptr, ptr %26, align 8, !tbaa !2181 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 6 - store ptr %49, ptr %26, align 8, !tbaa !2181 +48: ; preds = %.split + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %41, ptr noundef nonnull align 1 dereferenceable(6) @.str.5, i64 6, i1 false) + %49 = load ptr, ptr %26, align 8, !tbaa !2181 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 6 + store ptr %50, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsEPKc.exit -.split21: ; preds = %37 - %50 = icmp ult i64 %43, 2 - br i1 %50, label %51, label %53 +.split21: ; preds = %38 + %51 = icmp ult i64 %43, 2 + br i1 %51, label %52, label %54 -51: ; preds = %.split21 - %52 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.6, i64 noundef 2) #30 +52: ; preds = %.split21 + %53 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.6, i64 noundef 2) #30 br label %_ZN4llvm11raw_ostreamlsEPKc.exit31 -53: ; preds = %.split21 - store i16 8236, ptr %40, align 1 - %54 = load ptr, ptr %26, align 8, !tbaa !2181 - %55 = getelementptr inbounds nuw i8, ptr %54, i64 2 - store ptr %55, ptr %26, align 8, !tbaa !2181 +54: ; preds = %.split21 + store i16 8236, ptr %41, align 1 + %55 = load ptr, ptr %26, align 8, !tbaa !2181 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 2 + store ptr %56, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsEPKc.exit31 -_ZN4llvm11raw_ostreamlsEPKc.exit31: ; preds = %51, %53 - %56 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv +_ZN4llvm11raw_ostreamlsEPKc.exit31: ; preds = %52, %54 + %57 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv br label %_ZN4llvm11raw_ostreamlsEPKc.exit -_ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %47, %45, %_ZN4llvm11raw_ostreamlsEPKc.exit31 - %phi.call.in = phi ptr [ %56, %_ZN4llvm11raw_ostreamlsEPKc.exit31 ], [ %27, %45 ], [ %27, %47 ] +_ZN4llvm11raw_ostreamlsEPKc.exit: ; preds = %48, %46, %_ZN4llvm11raw_ostreamlsEPKc.exit31 + %phi.call.in = phi ptr [ %57, %_ZN4llvm11raw_ostreamlsEPKc.exit31 ], [ %27, %46 ], [ %27, %48 ] %phi.call = load ptr, ptr %phi.call.in, align 8, !tbaa !849 - %57 = getelementptr inbounds nuw i8, ptr %phi.call, i64 40 - %58 = load i64, ptr %57, align 8, !tbaa !848 - %59 = and i64 %58, 7 - %60 = icmp ne i64 %59, 0 - %61 = and i64 %58, -8 - %.not2744 = icmp eq i64 %61, 0 - %.not27 = or i1 %60, %.not2744 - br i1 %.not27, label %81, label %62 - -62: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit - %63 = inttoptr i64 %61 to ptr - %64 = getelementptr inbounds nuw i8, ptr %63, i64 16 - %65 = load ptr, ptr %64, align 8, !tbaa !910 - %66 = getelementptr inbounds nuw i8, ptr %65, i64 16 - %67 = load i64, ptr %65, align 8, !tbaa !913 - %68 = and i64 %67, 4294967295 - %69 = load ptr, ptr %25, align 8, !tbaa !2180 - %70 = load ptr, ptr %26, align 8, !tbaa !2181 + %58 = getelementptr inbounds nuw i8, ptr %phi.call, i64 40 + %59 = load i64, ptr %58, align 8, !tbaa !848 + %60 = and i64 %59, 7 + %61 = icmp ne i64 %60, 0 + %62 = and i64 %59, -8 + %.not2744 = icmp eq i64 %62, 0 + %.not27 = or i1 %61, %.not2744 + br i1 %.not27, label %82, label %63 + +63: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit + %64 = inttoptr i64 %62 to ptr + %65 = getelementptr inbounds nuw i8, ptr %64, i64 16 + %66 = load ptr, ptr %65, align 8, !tbaa !910 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 16 + %68 = load i64, ptr %66, align 8, !tbaa !913 + %69 = and i64 %68, 4294967295 + %70 = load ptr, ptr %25, align 8, !tbaa !2180 + %71 = load ptr, ptr %26, align 8, !tbaa !2181 %71 = ptrtoint ptr %69 to i64 %72 = ptrtoint ptr %70 to i64 %73 = sub i64 %71, %72 %74 = icmp ugt i64 %68, %73 br i1 %74, label %75, label %77 -75: ; preds = %62 - %76 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull %66, i64 noundef %68) #30 +76: ; preds = %63 + %77 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull %67, i64 noundef %69) #30 br label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit -77: ; preds = %62 - %.not.i = icmp eq i64 %68, 0 - br i1 %.not.i, label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit, label %78 +78: ; preds = %63 + %.not.i = icmp eq i64 %69, 0 + br i1 %.not.i, label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit, label %79 -78: ; preds = %77 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr nonnull align 1 %66, i64 %68, i1 false) - %79 = load ptr, ptr %26, align 8, !tbaa !2181 - %80 = getelementptr inbounds nuw i8, ptr %79, i64 %68 - store ptr %80, ptr %26, align 8, !tbaa !2181 +79: ; preds = %78 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %71, ptr nonnull align 1 %67, i64 %69, i1 false) + %80 = load ptr, ptr %26, align 8, !tbaa !2181 + %81 = getelementptr inbounds nuw i8, ptr %80, i64 %69 + store ptr %81, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit -81: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit - %82 = load ptr, ptr %26, align 8, !tbaa !2181 - %83 = load ptr, ptr %25, align 8, !tbaa !2180 - %.not.i33 = icmp ult ptr %82, %83 - br i1 %.not.i33, label %86, label %84 +82: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit + %83 = load ptr, ptr %26, align 8, !tbaa !2181 + %84 = load ptr, ptr %25, align 8, !tbaa !2180 + %.not.i33 = icmp ult ptr %83, %84 + br i1 %.not.i33, label %87, label %85 -84: ; preds = %81 - %85 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 36) #30 +85: ; preds = %82 + %86 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 36) #30 br label %_ZN4llvm11raw_ostreamlsEc.exit -86: ; preds = %81 - %87 = getelementptr inbounds nuw i8, ptr %82, i64 1 - store ptr %87, ptr %26, align 8, !tbaa !2181 - store i8 36, ptr %82, align 1, !tbaa !794 +87: ; preds = %82 + %88 = getelementptr inbounds nuw i8, ptr %83, i64 1 + store ptr %88, ptr %26, align 8, !tbaa !2181 + store i8 36, ptr %83, align 1, !tbaa !794 br label %_ZN4llvm11raw_ostreamlsEc.exit -_ZN4llvm11raw_ostreamlsEc.exit: ; preds = %84, %86 - %.0.i34 = phi ptr [ %85, %84 ], [ %8, %86 ] - %88 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsEm(ptr noundef nonnull align 8 dereferenceable(48) %.0.i34, i64 noundef %indvars.iv) #30 +_ZN4llvm11raw_ostreamlsEc.exit: ; preds = %85, %87 + %.0.i34 = phi ptr [ %86, %85 ], [ %8, %87 ] + %89 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostreamlsEm(ptr noundef nonnull align 8 dereferenceable(48) %.0.i34, i64 noundef %indvars.iv) #30 br label %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit -_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit: ; preds = %78, %77, %75, %_ZN4llvm11raw_ostreamlsEc.exit - %89 = load ptr, ptr %25, align 8, !tbaa !2180 - %90 = load ptr, ptr %26, align 8, !tbaa !2181 +_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit: ; preds = %79, %78, %76, %_ZN4llvm11raw_ostreamlsEc.exit + %90 = load ptr, ptr %25, align 8, !tbaa !2180 + %91 = load ptr, ptr %26, align 8, !tbaa !2181 %91 = ptrtoint ptr %89 to i64 %92 = ptrtoint ptr %90 to i64 %93 = sub i64 %91, %92 %94 = icmp ult i64 %93, 3 br i1 %94, label %95, label %97 -95: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit - %96 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.7, i64 noundef 3) #30 +96: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit + %97 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull @.str.7, i64 noundef 3) #30 br label %_ZN4llvm11raw_ostreamlsEPKc.exit37 -97: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %90, ptr noundef nonnull align 1 dereferenceable(3) @.str.7, i64 3, i1 false) - %98 = load ptr, ptr %26, align 8, !tbaa !2181 - %99 = getelementptr inbounds nuw i8, ptr %98, i64 3 - store ptr %99, ptr %26, align 8, !tbaa !2181 +98: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %91, ptr noundef nonnull align 1 dereferenceable(3) @.str.7, i64 3, i1 false) + %99 = load ptr, ptr %26, align 8, !tbaa !2181 + %100 = getelementptr inbounds nuw i8, ptr %99, i64 3 + store ptr %100, ptr %26, align 8, !tbaa !2181 br label %_ZN4llvm11raw_ostreamlsEPKc.exit37 -_ZN4llvm11raw_ostreamlsEPKc.exit37: ; preds = %95, %97 - %100 = getelementptr inbounds nuw %"class.clang::TemplateArgument", ptr %3, i64 %indvars.iv +_ZN4llvm11raw_ostreamlsEPKc.exit37: ; preds = %96, %98 + %101 = getelementptr inbounds nuw %"class.clang::TemplateArgument", ptr %3, i64 %indvars.iv call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #30 - %101 = load ptr, ptr %28, align 8, !tbaa !817 - %102 = load ptr, ptr %29, align 8, !tbaa !1581 - %103 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %101, ptr noundef nonnull align 8 dereferenceable(3288) %102) #30 - %104 = extractvalue { i64, ptr } %103, 0 - store i64 %104, ptr %9, align 8 - %105 = extractvalue { i64, ptr } %103, 1 - store ptr %105, ptr %30, align 8 + %102 = load ptr, ptr %28, align 8, !tbaa !817 + %103 = load ptr, ptr %29, align 8, !tbaa !1581 + %104 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %102, ptr noundef nonnull align 8 dereferenceable(3288) %103) #30 + %105 = extractvalue { i64, ptr } %104, 0 + store i64 %105, ptr %9, align 8 + %106 = extractvalue { i64, ptr } %104, 1 + store ptr %106, ptr %30, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #30 - %106 = load ptr, ptr %28, align 8, !tbaa !817 - %107 = load ptr, ptr %29, align 8, !tbaa !1581 - %108 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %106, ptr noundef nonnull align 8 dereferenceable(3288) %107) #30 - %109 = extractvalue { i64, ptr } %108, 0 - store i64 %109, ptr %10, align 8 - %110 = extractvalue { i64, ptr } %108, 1 - store ptr %110, ptr %31, align 8 - %111 = trunc nuw nsw i64 %indvars.iv to i32 - %112 = call noundef zeroext i1 @_ZN5clang21TemplateParameterList28shouldIncludeTypeForArgumentERKNS_14PrintingPolicyEPKS0_j(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %2, i32 noundef %111) #30 - call void @_ZNK5clang16TemplateArgument5printERKNS_14PrintingPolicyERN4llvm11raw_ostreamEb(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %8, i1 noundef zeroext %112) #30 + %107 = load ptr, ptr %28, align 8, !tbaa !817 + %108 = load ptr, ptr %29, align 8, !tbaa !1581 + %109 = call { i64, ptr } @_ZN5clang4Sema17getPrintingPolicyERKNS_10ASTContextERKNS_12PreprocessorE(ptr noundef nonnull align 8 dereferenceable(23216) %107, ptr noundef nonnull align 8 dereferenceable(3288) %108) #30 + %110 = extractvalue { i64, ptr } %109, 0 + store i64 %110, ptr %10, align 8 + %111 = extractvalue { i64, ptr } %109, 1 + store ptr %111, ptr %31, align 8 + %112 = trunc nuw nsw i64 %indvars.iv to i32 + %113 = call noundef zeroext i1 @_ZN5clang21TemplateParameterList28shouldIncludeTypeForArgumentERKNS_14PrintingPolicyEPKS0_j(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %2, i32 noundef %112) #30 + call void @_ZNK5clang16TemplateArgument5printERKNS_14PrintingPolicyERN4llvm11raw_ostreamEb(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(48) %8, i1 noundef zeroext %113) #30 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #30 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #30 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not25 = icmp ne i64 %indvars.iv.next, %33 + %exitcond.not = icmp ne i64 %indvars.iv.next, %33 %.not26 = icmp samesign ult i64 %indvars.iv.next, %32 %or.cond28 = and i1 %.not25, %.not26 br i1 %or.cond28, label %37, label %113, !llvm.loop !2182 -113: ; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit37 - %114 = load ptr, ptr %26, align 8, !tbaa !2181 +113:; preds = %_ZN4llvm11raw_ostreamlsEPKc.exit38 + %.not.i38 = load ptr, ptr %26, align 8, !tbaa !2181 %115 = load ptr, ptr %25, align 8, !tbaa !2180 %.not.i38 = icmp ult ptr %114, %115 br i1 %.not.i38, label %118, label %116 @@ -78505,79 +78505,79 @@ _ZN4llvm11raw_ostreamlsEPKc.exit37: ; preds = %95, %97 %117 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %8, i8 noundef zeroext 93) #30 br label %_ZN4llvm11raw_ostreamlsEc.exit40 -118: ; preds = %113 - %119 = getelementptr inbounds nuw i8, ptr %114, i64 1 - store ptr %119, ptr %26, align 8, !tbaa !2181 +119: ; preds = %113 + %120 = getelementptr inbounds nuw i8, ptr %114, i64 1 + store ptr %120, ptr %26, align 8, !tbaa !2181 store i8 93, ptr %114, align 1, !tbaa !794 br label %_ZN4llvm11raw_ostreamlsEc.exit40 -_ZN4llvm11raw_ostreamlsEc.exit40: ; preds = %116, %118 - %120 = load ptr, ptr %18, align 8, !tbaa !1961 - %121 = load ptr, ptr %120, align 8, !tbaa !1758 - %122 = getelementptr inbounds nuw i8, ptr %120, i64 8 - %123 = load i64, ptr %122, align 8, !tbaa !1760 - %124 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %124, ptr %0, align 8, !tbaa !890 - %125 = icmp eq ptr %121, null - %126 = icmp ne i64 %123, 0 - %or.cond.i.i.i = and i1 %125, %126 - br i1 %or.cond.i.i.i, label %127, label %128 - -127: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 +_ZN4llvm11raw_ostreamlsEc.exit40: ; preds = %116, %119 + %121 = load ptr, ptr %18, align 8, !tbaa !1961 + %122 = load ptr, ptr %121, align 8, !tbaa !1758 + %123 = getelementptr inbounds nuw i8, ptr %121, i64 8 + %124 = load i64, ptr %123, align 8, !tbaa !1760 + %125 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %125, ptr %0, align 8, !tbaa !890 + %126 = icmp eq ptr %122, null + %127 = icmp ne i64 %124, 0 + %or.cond.i.i.i = and i1 %126, %127 + br i1 %or.cond.i.i.i, label %128, label %129 + +128: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 call void @_ZSt19__throw_logic_errorPKc(ptr noundef nonnull @.str.14) #34 unreachable -128: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 +129: ; preds = %_ZN4llvm11raw_ostreamlsEc.exit40 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #30 - store i64 %123, ptr %6, align 8, !tbaa !820 - %129 = icmp ugt i64 %123, 15 - br i1 %129, label %130, label %._crit_edge.i.i.i.i - -130: ; preds = %128 - %131 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 0) #30 - store ptr %131, ptr %0, align 8, !tbaa !862 - %132 = load i64, ptr %6, align 8, !tbaa !820 - store i64 %132, ptr %124, align 8, !tbaa !794 + store i64 %124, ptr %6, align 8, !tbaa !820 + %130 = icmp ugt i64 %124, 15 + br i1 %130, label %131, label %._crit_edge.i.i.i.i + +131: ; preds = %129 + %132 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 0) #30 + store ptr %132, ptr %0, align 8, !tbaa !862 + %133 = load i64, ptr %6, align 8, !tbaa !820 + store i64 %133, ptr %125, align 8, !tbaa !794 br label %._crit_edge.i.i.i.i -._crit_edge.i.i.i.i: ; preds = %130, %128 - %133 = phi ptr [ %131, %130 ], [ %124, %128 ] - switch i64 %123, label %136 [ - i64 1, label %134 +._crit_edge.i.i.i.i: ; preds = %131, %129 + %134 = phi ptr [ %132, %131 ], [ %125, %129 ] + switch i64 %124, label %137 [ + i64 1, label %135 i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit ] -134: ; preds = %._crit_edge.i.i.i.i - %135 = load i8, ptr %121, align 1, !tbaa !794 - store i8 %135, ptr %133, align 1, !tbaa !794 +135: ; preds = %._crit_edge.i.i.i.i + %136 = load i8, ptr %122, align 1, !tbaa !794 + store i8 %136, ptr %134, align 1, !tbaa !794 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit -136: ; preds = %._crit_edge.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %133, ptr align 1 %121, i64 %123, i1 false) +137: ; preds = %._crit_edge.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %134, ptr align 1 %122, i64 %124, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit: ; preds = %._crit_edge.i.i.i.i, %134, %136 - %137 = load i64, ptr %6, align 8, !tbaa !820 - %138 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %137, ptr %138, align 8, !tbaa !861 - %139 = load ptr, ptr %0, align 8, !tbaa !862 - %140 = getelementptr inbounds nuw i8, ptr %139, i64 %137 - store i8 0, ptr %140, align 1, !tbaa !794 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit: ; preds = %._crit_edge.i.i.i.i, %135, %137 + %138 = load i64, ptr %6, align 8, !tbaa !820 + %139 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %138, ptr %139, align 8, !tbaa !861 + %140 = load ptr, ptr %0, align 8, !tbaa !862 + %141 = getelementptr inbounds nuw i8, ptr %140, i64 %138 + store i8 0, ptr %141, align 1, !tbaa !794 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #30 - br label %141 + br label %142 -141: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit, %34 +142: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN4llvm9StringRefEvEERKT_RKS3_.exit, %35 call void @_ZN4llvm11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #30 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) #30 - %142 = load ptr, ptr %7, align 8, !tbaa !1758 - %143 = icmp eq ptr %142, %11 - br i1 %143, label %_ZN4llvm11SmallVectorIcLj128EED2Ev.exit, label %144 + %143 = load ptr, ptr %7, align 8, !tbaa !1758 + %144 = icmp eq ptr %143, %11 + br i1 %144, label %_ZN4llvm11SmallVectorIcLj128EED2Ev.exit, label %145 -144: ; preds = %141 - call void @free(ptr noundef %142) #30 +145: ; preds = %142 + call void @free(ptr noundef %143) #30 br label %_ZN4llvm11SmallVectorIcLj128EED2Ev.exit -_ZN4llvm11SmallVectorIcLj128EED2Ev.exit: ; preds = %141, %144 +_ZN4llvm11SmallVectorIcLj128EED2Ev.exit: ; preds = %142, %145 call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %7) #30 ret void } diff --git a/bench/node/optimized/libnode.Protocol.ll b/bench/node/optimized/libnode.Protocol.ll index aac0f288ca4..4e2805fc8f5 100644 --- a/bench/node/optimized/libnode.Protocol.ll +++ b/bench/node/optimized/libnode.Protocol.ll @@ -19442,15 +19442,15 @@ while.cond.outer: ; preds = %while.cond.outer.pr while.cond: ; preds = %while.cond.outer, %while.body %ii.2 = phi i64 [ %inc, %while.body ], [ %ii.2.ph, %while.cond.outer ] %num_bytes_left.1 = phi i32 [ %dec, %while.body ], [ %num_bytes_left.1.ph, %while.cond.outer ] - %cmp71 = icmp sgt i32 %num_bytes_left.1, 0 - br i1 %cmp71, label %while.body, label %while.end + %lftr.wideiv = icmp sgt i32 %num_bytes_left.1, 0 + br i1 %lftr.wideiv, label %while.body, label %while.end while.body: ; preds = %while.cond %inc = add i64 %ii.2, 1 %arrayidx.i133 = getelementptr inbounds i8, ptr %chars.coerce0, i64 %inc - %37 = load i8, ptr %arrayidx.i133, align 1 + %40 = load i8, ptr %arrayidx.i133, align 1 %dec = add nsw i32 %num_bytes_left.1, -1 - %conv73 = zext i8 %37 to i32 + %conv73 = zext i8 %40 to i32 %and74 = and i32 %conv73, 192 %cmp75.not = icmp eq i32 %and74, 128 br i1 %cmp75.not, label %if.end77, label %while.cond, !llvm.loop !370 @@ -19462,8 +19462,8 @@ if.end77: ; preds = %while.body br label %while.cond.outer, !llvm.loop !370 while.end: ; preds = %while.cond - %38 = add i32 %codepoint.1.ph, -1114112 - %or.cond1 = icmp ult i32 %38, -1113985 + %41 = add i32 %codepoint.1.ph, -1114112 + %or.cond1 = icmp ult i32 %41, -1113985 br i1 %or.cond1, label %for.inc, label %if.end85 if.end85: ; preds = %while.end @@ -19473,48 +19473,48 @@ if.end85: ; preds = %while.end if.then87: ; preds = %if.end85 %this.val41 = load ptr, ptr %out_, align 8 %_M_finish.i.i134 = getelementptr inbounds nuw i8, ptr %this.val41, i64 8 - %39 = load ptr, ptr %_M_finish.i.i134, align 8 - %40 = load ptr, ptr %this.val41, align 8 - %sub.ptr.lhs.cast.i.i.i137 = ptrtoint ptr %39 to i64 - %sub.ptr.rhs.cast.i.i.i138 = ptrtoint ptr %40 to i64 + %42 = load ptr, ptr %_M_finish.i.i134, align 8 + %43 = load ptr, ptr %this.val41, align 8 + %sub.ptr.lhs.cast.i.i.i137 = ptrtoint ptr %42 to i64 + %sub.ptr.rhs.cast.i.i.i138 = ptrtoint ptr %43 to i64 %sub.ptr.sub.i.i.i139 = sub i64 %sub.ptr.lhs.cast.i.i.i137, %sub.ptr.rhs.cast.i.i.i138 - %add.ptr.i.i.i140 = getelementptr inbounds i8, ptr %40, i64 %sub.ptr.sub.i.i.i139 + %add.ptr.i.i.i140 = getelementptr inbounds i8, ptr %43, i64 %sub.ptr.sub.i.i.i139 tail call void @_ZNSt6vectorIhSaIhEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPhS1_EET_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %this.val41, ptr %add.ptr.i.i.i140, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) %conv88 = trunc nuw i32 %codepoint.1.ph to i16 - %41 = load ptr, ptr %out_, align 8 - tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv88, ptr noundef %41) + %44 = load ptr, ptr %out_, align 8 + tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv88, ptr noundef %44) br label %for.inc if.end90: ; preds = %if.end85 %sub = add nuw nsw i32 %codepoint.1.ph, 67043328 %this.val42 = load ptr, ptr %out_, align 8 %_M_finish.i.i141 = getelementptr inbounds nuw i8, ptr %this.val42, i64 8 - %42 = load ptr, ptr %_M_finish.i.i141, align 8 - %43 = load ptr, ptr %this.val42, align 8 - %sub.ptr.lhs.cast.i.i.i144 = ptrtoint ptr %42 to i64 - %sub.ptr.rhs.cast.i.i.i145 = ptrtoint ptr %43 to i64 + %45 = load ptr, ptr %_M_finish.i.i141, align 8 + %46 = load ptr, ptr %this.val42, align 8 + %sub.ptr.lhs.cast.i.i.i144 = ptrtoint ptr %45 to i64 + %sub.ptr.rhs.cast.i.i.i145 = ptrtoint ptr %46 to i64 %sub.ptr.sub.i.i.i146 = sub i64 %sub.ptr.lhs.cast.i.i.i144, %sub.ptr.rhs.cast.i.i.i145 - %add.ptr.i.i.i147 = getelementptr inbounds i8, ptr %43, i64 %sub.ptr.sub.i.i.i146 + %add.ptr.i.i.i147 = getelementptr inbounds i8, ptr %46, i64 %sub.ptr.sub.i.i.i146 tail call void @_ZNSt6vectorIhSaIhEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPhS1_EET_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %this.val42, ptr %add.ptr.i.i.i147, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) %shr = lshr i32 %sub, 10 - %44 = trunc i32 %shr to i16 - %conv92 = add nsw i16 %44, -10240 - %45 = load ptr, ptr %out_, align 8 - tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv92, ptr noundef %45) + %47 = trunc i32 %shr to i16 + %conv92 = add nsw i16 %47, -10240 + %48 = load ptr, ptr %out_, align 8 + tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv92, ptr noundef %48) %this.val43 = load ptr, ptr %out_, align 8 %_M_finish.i.i148 = getelementptr inbounds nuw i8, ptr %this.val43, i64 8 - %46 = load ptr, ptr %_M_finish.i.i148, align 8 - %47 = load ptr, ptr %this.val43, align 8 - %sub.ptr.lhs.cast.i.i.i151 = ptrtoint ptr %46 to i64 - %sub.ptr.rhs.cast.i.i.i152 = ptrtoint ptr %47 to i64 + %49 = load ptr, ptr %_M_finish.i.i148, align 8 + %50 = load ptr, ptr %this.val43, align 8 + %sub.ptr.lhs.cast.i.i.i151 = ptrtoint ptr %49 to i64 + %sub.ptr.rhs.cast.i.i.i152 = ptrtoint ptr %50 to i64 %sub.ptr.sub.i.i.i153 = sub i64 %sub.ptr.lhs.cast.i.i.i151, %sub.ptr.rhs.cast.i.i.i152 - %add.ptr.i.i.i154 = getelementptr inbounds i8, ptr %47, i64 %sub.ptr.sub.i.i.i153 + %add.ptr.i.i.i154 = getelementptr inbounds i8, ptr %50, i64 %sub.ptr.sub.i.i.i153 tail call void @_ZNSt6vectorIhSaIhEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPhS1_EET_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %this.val43, ptr %add.ptr.i.i.i154, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) - %48 = trunc i32 %codepoint.1.ph to i16 - %49 = and i16 %48, 1023 - %conv96 = or disjoint i16 %49, -9216 - %50 = load ptr, ptr %out_, align 8 - tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv96, ptr noundef %50) + %51 = trunc i32 %codepoint.1.ph to i16 + %52 = and i16 %51, 1023 + %conv96 = or disjoint i16 %52, -9216 + %53 = load ptr, ptr %out_, align 8 + tail call fastcc void @_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexISt6vectorIhSaIhEEEEvtPT_(i16 noundef zeroext %conv96, ptr noundef %53) br label %for.inc for.inc: ; preds = %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i120, %if.then.i.i.i97, %if.then6, %if.then13, %if.then21, %if.then29, %if.then39, %if.end90, %if.then25, %if.then17, %if.then9, %while.end, %if.end65, %if.else55, %if.then87 @@ -19526,23 +19526,23 @@ for.inc: ; preds = %_ZNSt6vectorIhSaIhE for.end: ; preds = %for.inc, %_ZN4node9inspector8protocol4json12_GLOBAL__N_111JSONEncoderISt6vectorIhSaIhEEE4EmitEc.exit %this.val46 = load ptr, ptr %out_, align 8 %_M_finish.i.i.i155 = getelementptr inbounds nuw i8, ptr %this.val46, i64 8 - %51 = load ptr, ptr %_M_finish.i.i.i155, align 8 + %54 = load ptr, ptr %_M_finish.i.i.i155, align 8 %_M_end_of_storage.i.i.i156 = getelementptr inbounds nuw i8, ptr %this.val46, i64 16 - %52 = load ptr, ptr %_M_end_of_storage.i.i.i156, align 8 - %cmp.not.i.i.i157 = icmp eq ptr %51, %52 + %55 = load ptr, ptr %_M_end_of_storage.i.i.i156, align 8 + %cmp.not.i.i.i157 = icmp eq ptr %54, %55 br i1 %cmp.not.i.i.i157, label %if.else.i.i.i160, label %if.then.i.i.i158 if.then.i.i.i158: ; preds = %for.end - store i8 34, ptr %51, align 1 - %53 = load ptr, ptr %_M_finish.i.i.i155, align 8 - %incdec.ptr.i.i.i159 = getelementptr inbounds nuw i8, ptr %53, i64 1 + store i8 34, ptr %54, align 1 + %56 = load ptr, ptr %_M_finish.i.i.i155, align 8 + %incdec.ptr.i.i.i159 = getelementptr inbounds nuw i8, ptr %56, i64 1 store ptr %incdec.ptr.i.i.i159, ptr %_M_finish.i.i.i155, align 8 br label %return if.else.i.i.i160: ; preds = %for.end - %54 = load ptr, ptr %this.val46, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i.i161 = ptrtoint ptr %51 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i.i162 = ptrtoint ptr %54 to i64 + %57 = load ptr, ptr %this.val46, align 8 + %sub.ptr.lhs.cast.i.i.i.i.i.i161 = ptrtoint ptr %54 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i162 = ptrtoint ptr %57 to i64 %sub.ptr.sub.i.i.i.i.i.i163 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i161, %sub.ptr.rhs.cast.i.i.i.i.i.i162 %cmp.i.i.i.i.i164 = icmp eq i64 %sub.ptr.sub.i.i.i.i.i.i163, 9223372036854775807 br i1 %cmp.i.i.i.i.i164, label %if.then.i.i.i.i.i184, label %_ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit.i.i.i.i165 @@ -19555,8 +19555,8 @@ _ZNKSt6vectorIhSaIhEE12_M_check_lenEmPKc.exit.i.i.i.i165: ; preds = %if.else.i.i %.sroa.speculated.i.i.i.i.i166 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i.i.i.i.i163, i64 1) %add.i.i.i.i.i167 = add i64 %.sroa.speculated.i.i.i.i.i166, %sub.ptr.sub.i.i.i.i.i.i163 %cmp7.i.i.i.i.i168 = icmp ult i64 %add.i.i.i.i.i167, %sub.ptr.sub.i.i.i.i.i.i163 - %55 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i.i167, i64 9223372036854775807) - %cond.i.i.i.i.i169 = select i1 %cmp7.i.i.i.i.i168, i64 9223372036854775807, i64 %55 + %58 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i.i167, i64 9223372036854775807) + %cond.i.i.i.i.i169 = select i1 %cmp7.i.i.i.i.i168, i64 9223372036854775807, i64 %58 %cmp.not.i.i.i.i.i170 = icmp eq i64 %cond.i.i.i.i.i169, 0 br i1 %cmp.not.i.i.i.i.i170, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173, label %cond.true.i.i.i.i.i171 @@ -19572,16 +19572,16 @@ _ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173: ; preds = %cond.true br i1 %cmp.i.i.i.i.i.i.i176, label %if.then.i.i.i.i.i.i.i183, label %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 if.then.i.i.i.i.i.i.i183: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %cond.i10.i.i.i.i174, ptr align 1 %54, i64 %sub.ptr.sub.i.i.i.i.i.i163, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %cond.i10.i.i.i.i174, ptr align 1 %57, i64 %sub.ptr.sub.i.i.i.i.i.i163, i1 false) br label %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 _ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177: ; preds = %if.then.i.i.i.i.i.i.i183, %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i.i173 %incdec.ptr.i.i.i.i178 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.i175, i64 1 - %tobool.not.i.i.i.i.i179 = icmp eq ptr %54, null + %tobool.not.i.i.i.i.i179 = icmp eq ptr %57, null br i1 %tobool.not.i.i.i.i.i179, label %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i181, label %if.then.i18.i.i.i.i180 if.then.i18.i.i.i.i180: ; preds = %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 - tail call void @_ZdlPv(ptr noundef nonnull %54) #28 + tail call void @_ZdlPv(ptr noundef nonnull %57) #28 br label %_ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i181 _ZNSt6vectorIhSaIhEE17_M_realloc_insertIJhEEEvN9__gnu_cxx17__normal_iteratorIPhS1_EEDpOT_.exit.i.i.i181: ; preds = %if.then.i18.i.i.i.i180, %_ZNSt6vectorIhSaIhEE11_S_relocateEPhS2_S2_RS0_.exit17.i.i.i.i177 @@ -22449,15 +22449,15 @@ while.cond.outer: ; preds = %while.cond.outer.pr while.cond: ; preds = %while.cond.outer, %while.body %ii.2 = phi i64 [ %inc, %while.body ], [ %ii.2.ph, %while.cond.outer ] %num_bytes_left.1 = phi i32 [ %dec, %while.body ], [ %num_bytes_left.1.ph, %while.cond.outer ] - %cmp71 = icmp sgt i32 %num_bytes_left.1, 0 - br i1 %cmp71, label %while.body, label %while.end + %lftr.wideiv = icmp sgt i32 %num_bytes_left.1, 0 + br i1 %lftr.wideiv, label %while.body, label %while.end while.body: ; preds = %while.cond %inc = add i64 %ii.2, 1 %arrayidx.i90 = getelementptr inbounds i8, ptr %chars.coerce0, i64 %inc - %15 = load i8, ptr %arrayidx.i90, align 1 + %18 = load i8, ptr %arrayidx.i90, align 1 %dec = add nsw i32 %num_bytes_left.1, -1 - %conv73 = zext i8 %15 to i32 + %conv73 = zext i8 %18 to i32 %and74 = and i32 %conv73, 192 %cmp75.not = icmp eq i32 %and74, 128 br i1 %cmp75.not, label %if.end77, label %while.cond, !llvm.loop !403 @@ -22469,8 +22469,8 @@ if.end77: ; preds = %while.body br label %while.cond.outer, !llvm.loop !403 while.end: ; preds = %while.cond - %16 = add i32 %codepoint.1.ph, -1114112 - %or.cond1 = icmp ult i32 %16, -1113985 + %19 = add i32 %codepoint.1.ph, -1114112 + %or.cond1 = icmp ult i32 %19, -1113985 br i1 %or.cond1, label %for.inc, label %if.end85 if.end85: ; preds = %while.end @@ -22483,7 +22483,7 @@ if.then87: ; preds = %if.end85 %call.i.i94 = tail call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val41) #27 %call7.i.i95 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_(ptr noundef nonnull align 8 dereferenceable(32) %this.val41, ptr %call.i91, ptr %call.i91, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) #27 %call9.i.i96 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val41) #27 - %17 = load ptr, ptr %out_, align 8 + %20 = load ptr, ptr %out_, align 8 br label %for.body.i98 for.body.i98: ; preds = %for.body.i98, %if.then87 @@ -22495,7 +22495,7 @@ for.body.i98: ; preds = %for.body.i98, %if.t %cond.i104 = select i1 %cmp1.i103, i32 48, i32 87 %add.i105 = add nuw nsw i32 %cond.i104, %and.i102 %conv2.i106 = trunc nuw nsw i32 %add.i105 to i8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %17, i8 noundef signext %conv2.i106) #27 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 noundef signext %conv2.i106) #27 %dec.i107 = add nsw i32 %ii.04.i99, -1 %cmp.not.i108 = icmp eq i32 %ii.04.i99, 0 br i1 %cmp.not.i108, label %for.inc, label %for.body.i98, !llvm.loop !402 @@ -22509,7 +22509,7 @@ if.end90: ; preds = %if.end85 %call9.i.i115 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val42) #27 %shr = lshr i32 %sub, 10 %conv92 = add nuw nsw i32 %shr, 55296 - %18 = load ptr, ptr %out_, align 8 + %21 = load ptr, ptr %out_, align 8 %conv.i116 = and i32 %conv92, 65535 br label %for.body.i117 @@ -22522,7 +22522,7 @@ for.body.i117: ; preds = %for.body.i117, %if. %cond.i123 = select i1 %cmp1.i122, i32 48, i32 87 %add.i124 = add nuw nsw i32 %cond.i123, %and.i121 %conv2.i125 = trunc nuw nsw i32 %add.i124 to i8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 noundef signext %conv2.i125) #27 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 noundef signext %conv2.i125) #27 %dec.i126 = add nsw i32 %ii.04.i118, -1 %cmp.not.i127 = icmp eq i32 %ii.04.i118, 0 br i1 %cmp.not.i127, label %_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvtPT_.exit128, label %for.body.i117, !llvm.loop !402 @@ -22533,9 +22533,9 @@ _ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexINSt7__cxx1112basic_strin %call.i.i132 = tail call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val43) #27 %call7.i.i133 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_(ptr noundef nonnull align 8 dereferenceable(32) %this.val43, ptr %call.i129, ptr %call.i129, ptr noundef nonnull @.str.78, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @.str.78, i64 2)) #27 %call9.i.i134 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %this.val43) #27 - %19 = and i32 %codepoint.1.ph, 1023 - %conv96 = or disjoint i32 %19, 56320 - %20 = load ptr, ptr %out_, align 8 + %22 = and i32 %codepoint.1.ph, 1023 + %conv96 = or disjoint i32 %22, 56320 + %23 = load ptr, ptr %out_, align 8 br label %for.body.i136 for.body.i136: ; preds = %for.body.i136, %_ZN4node9inspector8protocol4json12_GLOBAL__N_18PrintHexINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvtPT_.exit128 @@ -22547,7 +22547,7 @@ for.body.i136: ; preds = %for.body.i136, %_ZN %cond.i142 = select i1 %cmp1.i141, i32 48, i32 87 %add.i143 = add nuw nsw i32 %cond.i142, %and.i140 %conv2.i144 = trunc nuw nsw i32 %add.i143 to i8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 noundef signext %conv2.i144) #27 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %23, i8 noundef signext %conv2.i144) #27 %dec.i145 = add nsw i32 %ii.04.i137, -1 %cmp.not.i146 = icmp eq i32 %ii.04.i137, 0 br i1 %cmp.not.i146, label %for.inc, label %for.body.i136, !llvm.loop !402 diff --git a/bench/opencv/optimized/convexhull.ll b/bench/opencv/optimized/convexhull.ll index b01ed3e9b24..0c818e2f679 100644 --- a/bench/opencv/optimized/convexhull.ll +++ b/bench/opencv/optimized/convexhull.ll @@ -125,7 +125,7 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad 37: ; preds = %35, %33 %.pn = phi { ptr, i32 } [ %36, %35 ], [ %34, %33 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #12 - br label %181 + br label %185 38: ; preds = %23 %39 = landingpad { ptr, i32 } @@ -141,12 +141,12 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad 42: ; preds = %40, %38 %.pn40 = phi { ptr, i32 } [ %41, %40 ], [ %39, %38 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #12 - br label %180 + br label %184 43: ; preds = %.noexc59, %.noexc58, %.noexc, %27, %45 %44 = landingpad { ptr, i32 } cleanup - br label %180 + br label %184 45: ; preds = %26 invoke void @_ZN2cv3MatC1Eiii(ptr noundef nonnull align 8 dereferenceable(96) %8, i32 noundef 500, i32 noundef 500, i32 noundef 16) @@ -154,7 +154,7 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad 46: ; preds = %45 %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN2cv6theRNGEv() - to label %.preheader80 unwind label %139 + to label %.preheader80 unwind label %144 .preheader80: ; preds = %46 %48 = getelementptr inbounds nuw i8, ptr %8, i64 12 @@ -190,146 +190,146 @@ define hidden noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_ad %76 = add nuw i64 %74, %75 store i64 %76, ptr %47, align 8 %77 = trunc i64 %76 to i32 - %78 = urem i32 %77, 100 + %77 = urem i32 %77, 100 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, i8 0, i64 24, i1 false) br label %79 -79: ; preds = %71, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit - %.03681 = phi i32 [ 0, %71 ], [ %138, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit ] - %80 = load i32, ptr %48, align 4 - %81 = sdiv i32 %80, 4 - %82 = mul nsw i32 %80, 3 - %83 = sdiv i32 %82, 4 +79:; preds = %71, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit + %.neg = phi i32 [ 0, %71 ], [ %138, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit ] + %81 = load i32, ptr %48, align 4 + %82 = sdiv i32 %80, 4 + %.neg86 = mul nsw i32 %80, 3 + %83 = sdiv i32 %.neg86, 4 %84 = icmp eq i32 %81, %83 br i1 %84, label %_ZN2cv3RNG7uniformEii.exit, label %85 -85: ; preds = %79 - %86 = load i64, ptr %47, align 8 - %87 = and i64 %86, 4294967295 - %88 = mul nuw i64 %87, 4164903690 - %89 = lshr i64 %86, 32 - %90 = add nuw i64 %88, %89 - store i64 %90, ptr %47, align 8 +85:; preds = %79 + %85 = load i64, ptr %47, align 8 + %86 = and i64 %85, 4294967295 + %87 = mul nuw i64 %87, 4164903690 + %88 = lshr i64 %86, 32 + %89 = add nuw i64 %86, %88 + store i64 %89, ptr %47, align 8 %91 = trunc i64 %90 to i32 %92 = sub nsw i32 %83, %81 - %93 = urem i32 %91, %92 - %94 = add i32 %93, %81 + %91 = urem i32 %91, %92 + %92 = add i32 %91, %82 br label %_ZN2cv3RNG7uniformEii.exit _ZN2cv3RNG7uniformEii.exit: ; preds = %79, %85 - %95 = phi i32 [ %94, %85 ], [ %81, %79 ] - %96 = load i32, ptr %49, align 8 - %97 = sdiv i32 %96, 4 - %98 = mul nsw i32 %96, 3 - %99 = sdiv i32 %98, 4 - %100 = icmp eq i32 %97, %99 - br i1 %100, label %_ZN2cv3RNG7uniformEii.exit61, label %101 - -101: ; preds = %_ZN2cv3RNG7uniformEii.exit - %102 = load i64, ptr %47, align 8 - %103 = and i64 %102, 4294967295 - %104 = mul nuw i64 %103, 4164903690 - %105 = lshr i64 %102, 32 - %106 = add nuw i64 %104, %105 - store i64 %106, ptr %47, align 8 - %107 = trunc i64 %106 to i32 - %108 = sub nsw i32 %99, %97 - %109 = urem i32 %107, %108 - %110 = add i32 %109, %97 + %100 = phi i32 [ %94, %85 ], [ %81, %79 ] + %101 = load i32, ptr %49, align 8 + %102 = sdiv i32 %101, 4 + %103 = mul nsw i32 %101, 3 + %104 = sdiv i32 %103, 4 + %105 = icmp eq i32 %102, %104 + br i1 %105, label %_ZN2cv3RNG7uniformEii.exit61, label %106 + +106: ; preds = %_ZN2cv3RNG7uniformEii.exit + %107 = load i64, ptr %47, align 8 + %108 = and i64 %107, 4294967295 + %109 = mul nuw i64 %108, 4164903690 + %110 = lshr i64 %107, 32 + %111 = add nuw i64 %109, %110 + store i64 %111, ptr %47, align 8 + %112 = trunc i64 %111 to i32 + %113 = sub nsw i32 %104, %102 + %114 = urem i32 %112, %113 + %115 = add i32 %114, %102 br label %_ZN2cv3RNG7uniformEii.exit61 -_ZN2cv3RNG7uniformEii.exit61: ; preds = %_ZN2cv3RNG7uniformEii.exit, %101 - %111 = phi i32 [ %110, %101 ], [ %97, %_ZN2cv3RNG7uniformEii.exit ] - %112 = load ptr, ptr %50, align 8 - %113 = load ptr, ptr %51, align 8 - %.not.i = icmp eq ptr %112, %113 - br i1 %.not.i, label %117, label %114 +_ZN2cv3RNG7uniformEii.exit61: ; preds = %_ZN2cv3RNG7uniformEii.exit, %106 + %116 = phi i32 [ %115, %106 ], [ %102, %_ZN2cv3RNG7uniformEii.exit ] + %117 = load ptr, ptr %50, align 8 + %118 = load ptr, ptr %51, align 8 + %.not.i = icmp eq ptr %117, %118 + br i1 %.not.i, label %122, label %119 -114: ; preds = %_ZN2cv3RNG7uniformEii.exit61 - %.sroa.4.0.insert.ext = zext i32 %111 to i64 +119: ; preds = %_ZN2cv3RNG7uniformEii.exit61 + %.sroa.4.0.insert.ext = zext i32 %116 to i64 %.sroa.4.0.insert.shift = shl nuw i64 %.sroa.4.0.insert.ext, 32 - %.sroa.0.0.insert.ext = zext i32 %95 to i64 + %.sroa.0.0.insert.ext = zext i32 %100 to i64 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.4.0.insert.shift, %.sroa.0.0.insert.ext - store i64 %.sroa.0.0.insert.insert, ptr %112, align 4 - %115 = load ptr, ptr %50, align 8 - %116 = getelementptr inbounds nuw i8, ptr %115, i64 8 - store ptr %116, ptr %50, align 8 + store i64 %.sroa.0.0.insert.insert, ptr %117, align 4 + %120 = load ptr, ptr %50, align 8 + %121 = getelementptr inbounds nuw i8, ptr %120, i64 8 + store ptr %121, ptr %50, align 8 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit -117: ; preds = %_ZN2cv3RNG7uniformEii.exit61 - %118 = load ptr, ptr %9, align 8 - %119 = ptrtoint ptr %112 to i64 - %120 = ptrtoint ptr %118 to i64 - %121 = sub i64 %119, %120 - %122 = icmp eq i64 %121, 9223372036854775800 - br i1 %122, label %123, label %_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i +122: ; preds = %_ZN2cv3RNG7uniformEii.exit61 + %123 = load ptr, ptr %9, align 8 + %124 = ptrtoint ptr %117 to i64 + %125 = ptrtoint ptr %123 to i64 + %126 = sub i64 %124, %125 + %127 = icmp eq i64 %126, 9223372036854775800 + br i1 %127, label %128, label %_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i -123: ; preds = %117 +128: ; preds = %122 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.5) #13 to label %.noexc62 unwind label %.loopexit.split-lp -.noexc62: ; preds = %123 +.noexc62: ; preds = %128 unreachable -_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %117 - %124 = ashr exact i64 %121, 3 - %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %124, i64 1) - %125 = add nsw i64 %.sroa.speculated.i.i.i, %124 - %126 = icmp ult i64 %125, %124 - %127 = call i64 @llvm.umin.i64(i64 %125, i64 1152921504606846975) - %128 = select i1 %126, i64 1152921504606846975, i64 %127 - %.not.i.i.i = icmp ne i64 %128, 0 +_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %122 + %129 = ashr exact i64 %126, 3 + %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %129, i64 1) + %130 = add nsw i64 %.sroa.speculated.i.i.i, %129 + %131 = icmp ult i64 %130, %129 + %132 = call i64 @llvm.umin.i64(i64 %130, i64 1152921504606846975) + %133 = select i1 %131, i64 1152921504606846975, i64 %132 + %.not.i.i.i = icmp ne i64 %133, 0 call void @llvm.assume(i1 %.not.i.i.i) - %129 = shl nuw nsw i64 %128, 3 - %130 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %129) #14 + %134 = shl nuw nsw i64 %133, 3 + %135 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %134) #14 to label %.noexc63 unwind label %.loopexit .noexc63: ; preds = %_ZNKSt6vectorIN2cv6Point_IiEESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %131 = getelementptr inbounds i8, ptr %130, i64 %121 - %.sroa.4.0.insert.ext76 = zext i32 %111 to i64 + %136 = getelementptr inbounds i8, ptr %135, i64 %126 + %.sroa.4.0.insert.ext76 = zext i32 %116 to i64 %.sroa.4.0.insert.shift77 = shl nuw i64 %.sroa.4.0.insert.ext76, 32 - %.sroa.0.0.insert.ext72 = zext i32 %95 to i64 + %.sroa.0.0.insert.ext72 = zext i32 %100 to i64 %.sroa.0.0.insert.insert74 = or disjoint i64 %.sroa.4.0.insert.shift77, %.sroa.0.0.insert.ext72 - store i64 %.sroa.0.0.insert.insert74, ptr %131, align 4 - %.not10.i.i.i.i.i.i = icmp eq ptr %118, %112 + store i64 %.sroa.0.0.insert.insert74, ptr %136, align 4 + %.not10.i.i.i.i.i.i = icmp eq ptr %123, %117 br i1 %.not10.i.i.i.i.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i, label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %.noexc63, %.lr.ph.i.i.i.i.i.i - %.012.i.i.i.i.i.i = phi ptr [ %134, %.lr.ph.i.i.i.i.i.i ], [ %130, %.noexc63 ] - %.0911.i.i.i.i.i.i = phi ptr [ %133, %.lr.ph.i.i.i.i.i.i ], [ %118, %.noexc63 ] + %.012.i.i.i.i.i.i = phi ptr [ %139, %.lr.ph.i.i.i.i.i.i ], [ %135, %.noexc63 ] + %.0911.i.i.i.i.i.i = phi ptr [ %138, %.lr.ph.i.i.i.i.i.i ], [ %123, %.noexc63 ] call void @llvm.experimental.noalias.scope.decl(metadata !5) call void @llvm.experimental.noalias.scope.decl(metadata !8) - %132 = load i64, ptr %.0911.i.i.i.i.i.i, align 4, !alias.scope !8, !noalias !5 - store i64 %132, ptr %.012.i.i.i.i.i.i, align 4, !alias.scope !5, !noalias !8 - %133 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i.i.i, i64 8 - %134 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 8 - %.not.i.i.i.i.i.i = icmp eq ptr %133, %112 + %137 = load i64, ptr %.0911.i.i.i.i.i.i, align 4, !alias.scope !8, !noalias !5 + store i64 %137, ptr %.012.i.i.i.i.i.i, align 4, !alias.scope !5, !noalias !8 + %138 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i.i.i, i64 8 + %139 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i.i.i, i64 8 + %.not.i.i.i.i.i.i = icmp eq ptr %138, %117 br i1 %.not.i.i.i.i.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !10 _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %.noexc63 - %.0.lcssa.i.i.i.i.i.i = phi ptr [ %130, %.noexc63 ], [ %134, %.lr.ph.i.i.i.i.i.i ] - %135 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.i, i64 8 - %.not.i23.i.i = icmp eq ptr %118, null - br i1 %.not.i23.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %136 + %.0.lcssa.i.i.i.i.i.i = phi ptr [ %135, %.noexc63 ], [ %139, %.lr.ph.i.i.i.i.i.i ] + %140 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.i, i64 8 + %.not.i23.i.i = icmp eq ptr %123, null + br i1 %.not.i23.i.i, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %141 -136: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i - call void @_ZdlPv(ptr noundef nonnull %118) #15 +141: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i + call void @_ZdlPv(ptr noundef nonnull %123) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %136, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i - store ptr %130, ptr %9, align 8 - store ptr %135, ptr %50, align 8 - %137 = getelementptr inbounds nuw %"class.cv::Point_", ptr %130, i64 %128 - store ptr %137, ptr %51, align 8 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %141, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit22.i.i + store ptr %135, ptr %9, align 8 + store ptr %140, ptr %50, align 8 + %142 = getelementptr inbounds nuw %"class.cv::Point_", ptr %135, i64 %133 + store ptr %142, ptr %51, align 8 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %114 - %138 = add nuw i32 %.03681, 1 - %.not.not = icmp samesign ult i32 %.03681, %78 - br i1 %.not.not, label %79, label %141, !llvm.loop !12 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %119 + %143 = add nuw i32 %.03681, 1 + %exitcond.not = icmp samesign ult i32 %.03681, %78 + br i1 %exitcond.not, label %79, label %141, !llvm.loop !12 -139: ; preds = %46 - %140 = landingpad { ptr, i32 } +144: ; preds = %46 + %145 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70 @@ -338,12 +338,12 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect cleanup br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 -.loopexit.split-lp: ; preds = %123 +.loopexit.split-lp: ; preds = %128 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 -141: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit +146: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false) store i32 0, ptr %52, align 8 store i32 0, ptr %53, align 4 @@ -353,52 +353,52 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect store i32 -2113732596, ptr %12, align 8 store ptr %10, ptr %55, align 8 invoke void @_ZN2cv10convexHullERKNS_11_InputArrayERKNS_12_OutputArrayEbb(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %12, i1 noundef zeroext true, i1 noundef zeroext true) - to label %142 unwind label %150 + to label %147 unwind label %154 -142: ; preds = %141 +147: ; preds = %146 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 32, i1 false) - %143 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSERKNS_7Scalar_IdEE(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(32) %13) - to label %.preheader.preheader unwind label %148 + %148 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSERKNS_7Scalar_IdEE(ptr noundef nonnull align 8 dereferenceable(96) %8, ptr noundef nonnull align 8 dereferenceable(32) %13) + to label %.preheader.preheader unwind label %152 -.preheader.preheader: ; preds = %142 - %144 = zext nneg i32 %78 to i64 +.preheader.preheader: ; preds = %147 + %wide.trip.count = zext nneg i32 %78 to i64 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %147 - %indvars.iv = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next, %147 ] +.preheader: ; preds = %.preheader.preheader, %151 + %indvars.iv = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next, %151 ] store i64 0, ptr %58, align 8 store i32 50397184, ptr %14, align 8 store ptr %8, ptr %57, align 8 - %145 = load ptr, ptr %9, align 8 - %146 = getelementptr inbounds nuw %"class.cv::Point_", ptr %145, i64 %indvars.iv - %.sroa.0.0.copyload = load i64, ptr %146, align 4 + %149 = load ptr, ptr %9, align 8 + %150 = getelementptr inbounds nuw %"class.cv::Point_", ptr %149, i64 %indvars.iv + %.sroa.0.0.copyload = load i64, ptr %150, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, i8 0, i64 16, i1 false) store double 2.550000e+02, ptr %59, align 8 store double 0.000000e+00, ptr %60, align 8 invoke void @_ZN2cv6circleERKNS_17_InputOutputArrayENS_6Point_IiEEiRKNS_7Scalar_IdEEiii(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 %.sroa.0.0.copyload, i32 noundef 3, ptr noundef nonnull align 8 dereferenceable(32) %15, i32 noundef -1, i32 noundef 16, i32 noundef 0) - to label %147 unwind label %152 + to label %151 unwind label %156 -147: ; preds = %.preheader +151: ; preds = %.preheader %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not44.not = icmp samesign ult i64 %indvars.iv, %144 - br i1 %.not44.not, label %.preheader, label %154, !llvm.loop !13 + %exitcond84.not = icmp samesign ult i64 %indvars.iv, %wide.trip.count + br i1 %exitcond84.not, label %.preheader, label %154, !llvm.loop !13 -148: ; preds = %157, %142 - %149 = landingpad { ptr, i32 } +152: ; preds = %161, %147 + %153 = landingpad { ptr, i32 } cleanup - br label %174 + br label %178 -150: ; preds = %141 - %151 = landingpad { ptr, i32 } +154: ; preds = %146 + %155 = landingpad { ptr, i32 } cleanup - br label %174 + br label %178 -152: ; preds = %.preheader - %153 = landingpad { ptr, i32 } +156: ; preds = %.preheader + %157 = landingpad { ptr, i32 } cleanup - br label %174 + br label %178 -154: ; preds = %147 +158: ; preds = %151 store i64 0, ptr %62, align 8 store i32 50397184, ptr %16, align 8 store ptr %8, ptr %61, align 8 @@ -410,114 +410,114 @@ _ZNSt6vectorIN2cv6Point_IiEESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt6vect store double 2.550000e+02, ptr %66, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %67, i8 0, i64 16, i1 false) invoke void @_ZN2cv9polylinesERKNS_17_InputOutputArrayERKNS_11_InputArrayEbRKNS_7Scalar_IdEEiii(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %17, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(32) %18, i32 noundef 1, i32 noundef 16, i32 noundef 0) - to label %155 unwind label %167 + to label %159 unwind label %171 -155: ; preds = %154 +159: ; preds = %158 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %20) - to label %156 unwind label %169 + to label %160 unwind label %173 -156: ; preds = %155 +160: ; preds = %159 store i32 0, ptr %68, align 8 store i32 0, ptr %69, align 4 store i32 16842752, ptr %21, align 8 store ptr %8, ptr %70, align 8 invoke void @_ZN2cv6imshowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayE(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(24) %21) - to label %157 unwind label %171 + to label %161 unwind label %175 -157: ; preds = %156 +161: ; preds = %160 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12 - %158 = invoke noundef i32 @_ZN2cv7waitKeyEi(i32 noundef 0) - to label %159 unwind label %148 - -159: ; preds = %157 - %sext.mask = and i32 %158, 255 - %160 = icmp eq i32 %sext.mask, 27 - %161 = and i32 %158, 223 - %162 = icmp eq i32 %161, 81 - %or.cond5 = or i1 %160, %162 - %163 = load ptr, ptr %10, align 8 - %.not.i.i.i64 = icmp eq ptr %163, null - br i1 %.not.i.i.i64, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, label %164 - -164: ; preds = %159 - call void @_ZdlPv(ptr noundef nonnull %163) #15 + %162 = invoke noundef i32 @_ZN2cv7waitKeyEi(i32 noundef 0) + to label %163 unwind label %152 + +163: ; preds = %161 + %sext.mask = and i32 %162, 255 + %164 = icmp eq i32 %sext.mask, 27 + %165 = and i32 %162, 223 + %166 = icmp eq i32 %165, 81 + %or.cond5 = or i1 %164, %166 + %167 = load ptr, ptr %10, align 8 + %.not.i.i.i64 = icmp eq ptr %167, null + br i1 %.not.i.i.i64, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, label %168 + +168: ; preds = %163 + call void @_ZdlPv(ptr noundef nonnull %167) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit: ; preds = %159, %164 - %165 = load ptr, ptr %9, align 8 - %.not.i.i.i65 = icmp eq ptr %165, null - br i1 %.not.i.i.i65, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66, label %166 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit: ; preds = %163, %168 + %169 = load ptr, ptr %9, align 8 + %.not.i.i.i65 = icmp eq ptr %169, null + br i1 %.not.i.i.i65, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66, label %170 -166: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %165) #15 +170: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit + call void @_ZdlPv(ptr noundef nonnull %169) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66 -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, %166 - br i1 %or.cond5, label %179, label %71 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit, %170 + br i1 %or.cond5, label %183, label %71 -167: ; preds = %154 - %168 = landingpad { ptr, i32 } +171: ; preds = %158 + %172 = landingpad { ptr, i32 } cleanup - br label %174 + br label %178 -169: ; preds = %155 - %170 = landingpad { ptr, i32 } +173: ; preds = %159 + %174 = landingpad { ptr, i32 } cleanup - br label %173 + br label %177 -171: ; preds = %156 - %172 = landingpad { ptr, i32 } +175: ; preds = %160 + %176 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12 - br label %173 + br label %177 -173: ; preds = %171, %169 - %.pn47.pn = phi { ptr, i32 } [ %172, %171 ], [ %170, %169 ] +177: ; preds = %175, %173 + %.pn47.pn = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12 - br label %174 + br label %178 -174: ; preds = %167, %150, %173, %152, %148 - %.pn50 = phi { ptr, i32 } [ %153, %152 ], [ %149, %148 ], [ %.pn47.pn, %173 ], [ %151, %150 ], [ %168, %167 ] - %175 = load ptr, ptr %10, align 8 - %.not.i.i.i67 = icmp eq ptr %175, null - br i1 %.not.i.i.i67, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, label %176 +178: ; preds = %171, %154, %177, %156, %152 + %.pn50 = phi { ptr, i32 } [ %157, %156 ], [ %153, %152 ], [ %.pn47.pn, %177 ], [ %155, %154 ], [ %172, %171 ] + %179 = load ptr, ptr %10, align 8 + %.not.i.i.i67 = icmp eq ptr %179, null + br i1 %.not.i.i.i67, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, label %180 -176: ; preds = %174 - call void @_ZdlPv(ptr noundef nonnull %175) #15 +180: ; preds = %178 + call void @_ZdlPv(ptr noundef nonnull %179) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68: ; preds = %.loopexit, %.loopexit.split-lp, %176, %174 - %.pn52 = phi { ptr, i32 } [ %.pn50, %174 ], [ %.pn50, %176 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %177 = load ptr, ptr %9, align 8 - %.not.i.i.i69 = icmp eq ptr %177, null - br i1 %.not.i.i.i69, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, label %178 +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68: ; preds = %.loopexit, %.loopexit.split-lp, %180, %178 + %.pn52 = phi { ptr, i32 } [ %.pn50, %178 ], [ %.pn50, %180 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %181 = load ptr, ptr %9, align 8 + %.not.i.i.i69 = icmp eq ptr %181, null + br i1 %.not.i.i.i69, label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, label %182 -178: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 - call void @_ZdlPv(ptr noundef nonnull %177) #15 +182: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 + call void @_ZdlPv(ptr noundef nonnull %181) #15 br label %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70 -179: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66 +183: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit66 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #12 br label %_ZL4helpPPc.exit -_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70: ; preds = %178, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, %139 - %.pn52.pn = phi { ptr, i32 } [ %140, %139 ], [ %.pn52, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 ], [ %.pn52, %178 ] +_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70: ; preds = %182, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68, %144 + %.pn52.pn = phi { ptr, i32 } [ %145, %144 ], [ %.pn52, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit68 ], [ %.pn52, %182 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %8) #12 - br label %180 + br label %184 -_ZL4helpPPc.exit: ; preds = %.noexc59, %179 +_ZL4helpPPc.exit: ; preds = %.noexc59, %183 call void @_ZN2cv17CommandLineParserD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #12 ret i32 0 -180: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, %43, %42 +184: ; preds = %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70, %43, %42 %.pn55 = phi { ptr, i32 } [ %44, %43 ], [ %.pn52.pn, %_ZNSt6vectorIN2cv6Point_IiEESaIS2_EED2Ev.exit70 ], [ %.pn40, %42 ] call void @_ZN2cv17CommandLineParserD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #12 - br label %181 + br label %185 -181: ; preds = %180, %37 - %.pn55.pn = phi { ptr, i32 } [ %.pn55, %180 ], [ %.pn, %37 ] +185: ; preds = %184, %37 + %.pn55.pn = phi { ptr, i32 } [ %.pn55, %184 ], [ %.pn, %37 ] resume { ptr, i32 } %.pn55.pn } diff --git a/bench/opencv/optimized/qrcode_encoder.ll b/bench/opencv/optimized/qrcode_encoder.ll index 2131b25cdc4..a977f5907e1 100644 --- a/bench/opencv/optimized/qrcode_encoder.ll +++ b/bench/opencv/optimized/qrcode_encoder.ll @@ -1927,39 +1927,39 @@ _ZNSt6vectorIhSaIhEEC2ERKS1_.exit: ; preds = %3, %17 %22 = and i64 %.fr, 2147483647 %23 = zext nneg i32 %20 to i64 %wide.trip.count = and i64 %.fr, 2147483647 - %24 = getelementptr i8, ptr %10, i64 %22 + %26 = getelementptr i8, ptr %10, i64 %22 br label %.lr.ph21.split.us .lr.ph21.split.us: ; preds = %.lr.ph21.split.us.preheader, %..loopexit_crit_edge.us %indvars.iv25 = phi i64 [ 0, %.lr.ph21.split.us.preheader ], [ %indvars.iv.next26, %..loopexit_crit_edge.us ] - %25 = xor i64 %indvars.iv25, -1 - %26 = add i64 %6, %25 - %sext = shl i64 %26, 32 - %27 = ashr exact i64 %sext, 32 - %28 = getelementptr inbounds i8, ptr %19, i64 %27 - %29 = load i8, ptr %28, align 1 - %.not28.us = icmp eq i8 %29, 0 + %27 = xor i64 %indvars.iv25, -1 + %28 = add i64 %6, %27 + %sext = shl i64 %28, 32 + %29 = ashr exact i64 %sext, 32 + %30 = getelementptr inbounds i8, ptr %19, i64 %29 + %31 = load i8, ptr %30, align 1 + %.not28.us = icmp eq i8 %31, 0 br i1 %.not28.us, label %..loopexit_crit_edge.us, label %.preheader.us -30: ; preds = %.preheader.us, %48 - %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %48 ] - %31 = xor i64 %indvars.iv, -1 - %32 = getelementptr i8, ptr %24, i64 %31 - %33 = load i8, ptr %32, align 1 - %.not29.us = icmp eq i8 %33, 0 - br i1 %.not29.us, label %48, label %_ZN2cvL5gfMulEhh.exit.us +32: ; preds = %.preheader.us, %50 + %indvars.iv = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next, %50 ] + %33 = xor i64 %indvars.iv, -1 + %34 = getelementptr i8, ptr %26, i64 %33 + %35 = load i8, ptr %34, align 1 + %.not29.us = icmp eq i8 %35, 0 + br i1 %.not29.us, label %50, label %_ZN2cvL5gfMulEhh.exit.us -_ZN2cvL5gfMulEhh.exit.us: ; preds = %30 - %34 = zext i8 %33 to i64 - %35 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %34 - %36 = load i8, ptr %35, align 1 +_ZN2cvL5gfMulEhh.exit.us: ; preds = %32 + %36 = zext i8 %35 to i64 + %37 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %36 + %38 = load i8, ptr %37, align 1 %37 = zext i8 %36 to i16 %38 = load i8, ptr %50, align 1 %39 = zext i8 %38 to i16 - %.lhs.trunc.i.us = add nuw nsw i16 %39, %37 - %40 = urem i16 %.lhs.trunc.i.us, 255 - %41 = zext nneg i16 %40 to i64 - %42 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_expE, i64 0, i64 %41 + %40 = add nuw nsw i16 %39, %37 + %41 = urem i16 %40, 255 + %.lhs.trunc.i.us = zext nneg i16 %41 to i64 + %42 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_expE, i64 0, i64 %.lhs.trunc.i.us %43 = load i8, ptr %42, align 1 %44 = sub nsw i64 %27, %indvars.iv %45 = getelementptr inbounds i8, ptr %19, i64 %44 @@ -1968,84 +1968,84 @@ _ZN2cvL5gfMulEhh.exit.us: ; preds = %30 store i8 %47, ptr %45, align 1 br label %48 -48: ; preds = %_ZN2cvL5gfMulEhh.exit.us, %30 +50: ; preds = %_ZN2cvL5gfMulEhh.exit.us, %32 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %30, !llvm.loop !12 + br i1 %exitcond.not, label %..loopexit_crit_edge.us, label %32, !llvm.loop !12 -..loopexit_crit_edge.us: ; preds = %48, %.lr.ph21.split.us +..loopexit_crit_edge.us: ; preds = %50, %.lr.ph21.split.us %indvars.iv.next26 = add nuw nsw i64 %indvars.iv25, 1 - %.not.us.not = icmp samesign ult i64 %indvars.iv25, %23 - br i1 %.not.us.not, label %.lr.ph21.split.us, label %._crit_edge, !llvm.loop !13 + %exitcond29.not = icmp samesign ult i64 %indvars.iv25, %23 + br i1 %exitcond29.not, label %.lr.ph21.split.us, label %._crit_edge, !llvm.loop !13 .preheader.us: ; preds = %.lr.ph21.split.us - %49 = zext i8 %29 to i64 - %50 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %49 - br label %30 + %51 = zext i8 %31 to i64 + %52 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL6gf_logE, i64 0, i64 %51 + br label %32 ._crit_edge: ; preds = %..loopexit_crit_edge.us, %_ZNSt6vectorIhSaIhEEC2ERKS1_.exit - %51 = sext i32 %1 to i64 - %52 = icmp slt i32 %1, 0 - br i1 %52, label %53, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i + %53 = sext i32 %1 to i64 + %54 = icmp slt i32 %1, 0 + br i1 %54, label %55, label %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i -53: ; preds = %._crit_edge +55: ; preds = %._crit_edge invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.28) #27 to label %.noexc.i unwind label %.body -.noexc.i: ; preds = %53 +.noexc.i: ; preds = %55 unreachable _ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %._crit_edge %.not.i.i.i = icmp eq i32 %1, 0 - br i1 %.not.i.i.i, label %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit, label %54 + br i1 %.not.i.i.i, label %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit, label %56 -54: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i - %55 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %51) #28 +56: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i + %57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %53) #28 to label %.noexc5.i unwind label %.body -.noexc5.i: ; preds = %54 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %55, ptr align 1 %19, i64 %51, i1 false) +.noexc5.i: ; preds = %56 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %57, ptr align 1 %19, i64 %53, i1 false) br label %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit _ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i, %.noexc5.i - %.sroa.01.0 = phi ptr [ %55, %.noexc5.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i ] - %.sroa.8.0 = getelementptr inbounds nuw i8, ptr %.sroa.01.0, i64 %51 - %56 = load ptr, ptr %2, align 8 - %57 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %58 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %.sroa.01.0 = phi ptr [ %57, %.noexc5.i ], [ null, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i.i ] + %.sroa.8.0 = getelementptr inbounds nuw i8, ptr %.sroa.01.0, i64 %53 + %58 = load ptr, ptr %2, align 8 + %59 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %60 = getelementptr inbounds nuw i8, ptr %2, i64 16 store ptr %.sroa.01.0, ptr %2, align 8 - store ptr %.sroa.8.0, ptr %57, align 8 - store ptr %.sroa.8.0, ptr %58, align 8 - %.not.i.i.i.i.i = icmp eq ptr %56, null - br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIhSaIhEED2Ev.exit, label %59 + store ptr %.sroa.8.0, ptr %59, align 8 + store ptr %.sroa.8.0, ptr %60, align 8 + %.not.i.i.i.i.i = icmp eq ptr %58, null + br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIhSaIhEED2Ev.exit, label %61 -59: ; preds = %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit - tail call void @_ZdlPv(ptr noundef nonnull %56) #29 +61: ; preds = %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit + tail call void @_ZdlPv(ptr noundef nonnull %58) #29 br label %_ZNSt6vectorIhSaIhEED2Ev.exit -_ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %59, %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit +_ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %61, %_ZNSt6vectorIhSaIhEEC2IN9__gnu_cxx17__normal_iteratorIPhS1_EEvEET_S7_RKS0_.exit %.not.i.i.i32 = icmp eq ptr %19, null - br i1 %.not.i.i.i32, label %_ZNSt6vectorIhSaIhEED2Ev.exit34, label %60 + br i1 %.not.i.i.i32, label %_ZNSt6vectorIhSaIhEED2Ev.exit34, label %62 -60: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit +62: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit tail call void @_ZdlPv(ptr noundef nonnull %19) #29 br label %_ZNSt6vectorIhSaIhEED2Ev.exit34 -_ZNSt6vectorIhSaIhEED2Ev.exit34: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit, %60 +_ZNSt6vectorIhSaIhEED2Ev.exit34: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit, %62 ret void -.body: ; preds = %54, %53 - %61 = landingpad { ptr, i32 } +.body: ; preds = %56, %55 + %63 = landingpad { ptr, i32 } cleanup %.not.i.i.i35 = icmp eq ptr %19, null - br i1 %.not.i.i.i35, label %_ZNSt6vectorIhSaIhEED2Ev.exit37, label %62 + br i1 %.not.i.i.i35, label %_ZNSt6vectorIhSaIhEED2Ev.exit37, label %64 -62: ; preds = %.body +64: ; preds = %.body tail call void @_ZdlPv(ptr noundef nonnull %19) #29 br label %_ZNSt6vectorIhSaIhEED2Ev.exit37 -_ZNSt6vectorIhSaIhEED2Ev.exit37: ; preds = %.body, %62 - resume { ptr, i32 } %61 +_ZNSt6vectorIhSaIhEED2Ev.exit37: ; preds = %.body, %64 + resume { ptr, i32 } %63 } ; Function Attrs: mustprogress uwtable diff --git a/bench/openjdk/optimized/mlib_c_ImageCopy.ll b/bench/openjdk/optimized/mlib_c_ImageCopy.ll index 00cd09457e8..b6b3dd736cb 100644 --- a/bench/openjdk/optimized/mlib_c_ImageCopy.ll +++ b/bench/openjdk/optimized/mlib_c_ImageCopy.ll @@ -318,7 +318,7 @@ define hidden void @mlib_ImageCopy_na(ptr noundef %0, ptr noundef %1, i32 nounde ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define hidden void @mlib_ImageCopy_bit_al(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #2 { %5 = icmp slt i32 %2, 1 - br i1 %5, label %87, label %6 + br i1 %5, label %91, label %6 6: ; preds = %4 %7 = sub nsw i32 8, %3 @@ -381,61 +381,61 @@ define hidden void @mlib_ImageCopy_bit_al(ptr noundef %0, ptr noundef %1, i32 no %40 = xor i64 %.lcssa, %39 %41 = and i64 %40, 7 %42 = icmp eq i64 %41, 0 - br i1 %42, label %.preheader, label %48 + br i1 %42, label %.preheader, label %51 .preheader: ; preds = %._crit_edge %43 = add nsw i32 %26, -8 %.not98120 = icmp sgt i32 %.092.lcssa, %43 - br i1 %.not98120, label %.loopexit, label %.lr.ph123 + br i1 %.not98120, label %.loopexit, label %.lr.ph123.preheader -.lr.ph123: ; preds = %.preheader, %.lr.ph123 - %indvars.iv146 = phi i64 [ %indvars.iv.next147, %.lr.ph123 ], [ 0, %.preheader ] - %.193121 = phi i32 [ %47, %.lr.ph123 ], [ %.092.lcssa, %.preheader ] - %44 = getelementptr inbounds nuw double, ptr %.0.lcssa, i64 %indvars.iv146 - %45 = load double, ptr %44, align 8 +.lr.ph123.preheader: ; preds = %.preheader, %.lr.ph123 + %44 = phi i64 [ %indvars.iv.next147, %.lr.ph123 ], [ 0, %.preheader ] + %45 = phi i32 [ %47, %.lr.ph123 ], [ %.092.lcssa, %.preheader ] + %46 = getelementptr inbounds nuw double, ptr %.0.lcssa, i64 %44 + %wide.trip.count149 = load double, ptr %46, align 8 %46 = getelementptr inbounds nuw double, ptr %.087.lcssa, i64 %indvars.iv146 store double %45, ptr %46, align 8 %47 = add nuw nsw i32 %.193121, 8 %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 - %.not98 = icmp sgt i32 %47, %43 - br i1 %.not98, label %.loopexit.loopexit, label %.lr.ph123, !llvm.loop !16 - -48: ; preds = %._crit_edge - %49 = and i64 %39, 7 - %50 = sub nsw i64 0, %49 - %51 = getelementptr inbounds i8, ptr %.0.lcssa, i64 %50 - %52 = add nsw i32 %26, -8 - %.not97112 = icmp sgt i32 %.092.lcssa, %52 + %exitcond150 = icmp sgt i32 %47, %43 + br i1 %exitcond150, label %.loopexit, label %.lr.ph123, !llvm.loop !16 + +51: ; preds = %._crit_edge + %52 = and i64 %39, 7 + %53 = sub nsw i64 0, %52 + %54 = getelementptr inbounds i8, ptr %.0.lcssa, i64 %53 + %55 = add nsw i32 %26, -8 + %.not97112 = icmp sgt i32 %.092.lcssa, %55 br i1 %.not97112, label %.loopexit, label %.lr.ph117 -.lr.ph117: ; preds = %48 - %53 = load i64, ptr %51, align 8 - %54 = trunc i64 %39 to i32 - %55 = shl i32 %54, 3 - %56 = and i32 %55, 56 - %57 = sub nuw nsw i32 64, %56 - %58 = zext nneg i32 %56 to i64 - %59 = zext nneg i32 %57 to i64 +.lr.ph117: ; preds = %51 + %56 = load i64, ptr %54, align 8 + %57 = trunc i64 %39 to i32 + %58 = shl i32 %57, 3 + %59 = and i32 %58, 56 + %60 = sub nuw nsw i32 64, %59 + %61 = zext nneg i32 %59 to i64 + %62 = zext nneg i32 %60 to i64 br label %60 -60: ; preds = %.lr.ph117, %60 - %indvars.iv = phi i64 [ 0, %.lr.ph117 ], [ %indvars.iv.next, %60 ] +60:; preds = %.lr.ph117, %60 + %wide.trip.count = phi i64 [ 0, %.lr.ph117 ], [ %indvars.iv.next, %60 ] %.086115 = phi i64 [ %53, %.lr.ph117 ], [ %62, %60 ] %.3113 = phi i32 [ %.092.lcssa, %.lr.ph117 ], [ %67, %60 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %61 = getelementptr inbounds nuw i64, ptr %51, i64 %indvars.iv.next - %62 = load i64, ptr %61, align 8 - %63 = shl i64 %.086115, %58 - %64 = lshr i64 %62, %59 - %65 = or i64 %64, %63 - %66 = getelementptr inbounds nuw i64, ptr %.087.lcssa, i64 %indvars.iv - store i64 %65, ptr %66, align 8 - %67 = add nuw nsw i32 %.3113, 8 - %.not97 = icmp sgt i32 %67, %52 - br i1 %.not97, label %.loopexit.loopexit134, label %60, !llvm.loop !17 - -.loopexit.loopexit: ; preds = %.lr.ph123 - %68 = trunc nuw nsw i64 %indvars.iv.next147 to i32 + %67 = getelementptr inbounds nuw i64, ptr %54, i64 %indvars.iv.next + %68 = load i64, ptr %67, align 8 + %69 = shl i64 %.086115, %61 + %70 = lshr i64 %68, %62 + %71 = or i64 %70, %69 + %72 = getelementptr inbounds nuw i64, ptr %.087.lcssa, i64 %indvars.iv + store i64 %71, ptr %72, align 8 + %73 = add nuw nsw i32 %.3113, 8 + %exitcond = icmp sgt i32 %67, %52 + br i1 %exitcond, label %.loopexit.loopexit134, label %60, !llvm.loop !17 + +.loopexit: ; preds = %.lr.ph123.preheader + %.294 = trunc nuw nsw i64 %indvars.iv.next147 to i32 br label %.loopexit .loopexit.loopexit134: ; preds = %60 @@ -449,52 +449,52 @@ define hidden void @mlib_ImageCopy_bit_al(ptr noundef %0, ptr noundef %1, i32 no %.pn = sext i32 %.pn.in to i64 %.1 = getelementptr inbounds i8, ptr %.0.lcssa, i64 %.pn %.188 = getelementptr inbounds i8, ptr %.087.lcssa, i64 %.pn - %70 = icmp slt i32 %.294, %26 - br i1 %70, label %.lr.ph130, label %._crit_edge131 + %74 = icmp slt i32 %.294, %26 + br i1 %74, label %.lr.ph130, label %._crit_edge131 .lr.ph130: ; preds = %.loopexit, %.lr.ph130 - %.2128 = phi ptr [ %71, %.lr.ph130 ], [ %.1, %.loopexit ] - %.289127 = phi ptr [ %73, %.lr.ph130 ], [ %.188, %.loopexit ] - %.4126 = phi i32 [ %74, %.lr.ph130 ], [ %.294, %.loopexit ] - %71 = getelementptr inbounds nuw i8, ptr %.2128, i64 1 - %72 = load i8, ptr %.2128, align 1 - %73 = getelementptr inbounds nuw i8, ptr %.289127, i64 1 - store i8 %72, ptr %.289127, align 1 - %74 = add nuw nsw i32 %.4126, 1 - %exitcond.not = icmp eq i32 %74, %26 - br i1 %exitcond.not, label %._crit_edge131, label %.lr.ph130, !llvm.loop !18 + %.2128 = phi ptr [ %75, %.lr.ph130 ], [ %.1, %.loopexit ] + %.289127 = phi ptr [ %77, %.lr.ph130 ], [ %.188, %.loopexit ] + %.4126 = phi i32 [ %78, %.lr.ph130 ], [ %.294, %.loopexit ] + %75 = getelementptr inbounds nuw i8, ptr %.2128, i64 1 + %76 = load i8, ptr %.2128, align 1 + %77 = getelementptr inbounds nuw i8, ptr %.289127, i64 1 + store i8 %76, ptr %.289127, align 1 + %78 = add nuw nsw i32 %.4126, 1 + %exitcond151.not = icmp eq i32 %78, %26 + br i1 %exitcond151.not, label %._crit_edge131, label %.lr.ph130, !llvm.loop !18 ._crit_edge131: ; preds = %.lr.ph130, %.loopexit - %.289.lcssa = phi ptr [ %.188, %.loopexit ], [ %73, %.lr.ph130 ] - %.2.lcssa = phi ptr [ %.1, %.loopexit ], [ %71, %.lr.ph130 ] - %75 = and i32 %25, 7 - %.not100 = icmp eq i32 %75, 0 - br i1 %.not100, label %87, label %76 - -76: ; preds = %._crit_edge131 - %77 = sub nuw nsw i32 8, %75 - %78 = shl nuw nsw i32 255, %77 - %79 = and i32 %78, 254 + %.289.lcssa = phi ptr [ %.188, %.loopexit ], [ %77, %.lr.ph130 ] + %.2.lcssa = phi ptr [ %.1, %.loopexit ], [ %75, %.lr.ph130 ] + %79 = and i32 %25, 7 + %.not100 = icmp eq i32 %79, 0 + br i1 %.not100, label %91, label %80 + +80: ; preds = %._crit_edge131 + %81 = sub nuw nsw i32 8, %79 + %82 = shl nuw nsw i32 255, %81 + %83 = and i32 %82, 254 br label %.sink.split -.sink.split: ; preds = %8, %76 - %.sink162 = phi i32 [ %79, %76 ], [ %12, %8 ] - %.2.lcssa.sink = phi ptr [ %.2.lcssa, %76 ], [ %0, %8 ] - %.sink159 = phi i32 [ %78, %76 ], [ %12, %8 ] - %.289.lcssa.sink = phi ptr [ %.289.lcssa, %76 ], [ %1, %8 ] +.sink.split: ; preds = %8, %80 + %.sink166 = phi i32 [ %83, %80 ], [ %12, %8 ] + %.2.lcssa.sink = phi ptr [ %.2.lcssa, %80 ], [ %0, %8 ] + %.sink163 = phi i32 [ %82, %80 ], [ %12, %8 ] + %.289.lcssa.sink = phi ptr [ %.289.lcssa, %80 ], [ %1, %8 ] %.sink.in = load i8, ptr %.289.lcssa.sink, align 1 %.sink = zext i8 %.sink.in to i32 - %80 = xor i32 %.sink162, -1 - %81 = and i32 %.sink, %80 - %82 = load i8, ptr %.2.lcssa.sink, align 1 - %83 = zext i8 %82 to i32 - %84 = and i32 %.sink159, %83 - %85 = or i32 %84, %81 - %86 = trunc nuw i32 %85 to i8 - store i8 %86, ptr %.289.lcssa.sink, align 1 - br label %87 - -87: ; preds = %.sink.split, %4, %._crit_edge131 + %84 = xor i32 %.sink166, -1 + %85 = and i32 %.sink, %84 + %86 = load i8, ptr %.2.lcssa.sink, align 1 + %87 = zext i8 %86 to i32 + %88 = and i32 %.sink163, %87 + %89 = or i32 %88, %85 + %90 = trunc nuw i32 %89 to i8 + store i8 %90, ptr %.289.lcssa.sink, align 1 + br label %91 + +91: ; preds = %.sink.split, %4, %._crit_edge131 ret void } diff --git a/bench/openjdk/optimized/sharedRuntimeTrig.ll b/bench/openjdk/optimized/sharedRuntimeTrig.ll index e5617b9f6e2..22f15784f5a 100644 --- a/bench/openjdk/optimized/sharedRuntimeTrig.ll +++ b/bench/openjdk/optimized/sharedRuntimeTrig.ll @@ -588,8 +588,8 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br i1 %exitcond.not.i, label %.preheader18.i, label %.lr.ph.i, !llvm.loop !11 .preheader16.i: ; preds = %._crit_edge.us.i, %.preheader17.preheader.i - %wide.trip.count128.i.pre-phi = phi i64 [ %.pre152, %.preheader17.preheader.i ], [ %wide.trip.count101.i, %._crit_edge.us.i ] - %.not269.not31161.i = phi i1 [ false, %.preheader17.preheader.i ], [ true, %._crit_edge.us.i ] + %wide.trip.count130.i.pre-phi = phi i64 [ %.pre152, %.preheader17.preheader.i ], [ %wide.trip.count101.i, %._crit_edge.us.i ] + %.not269.not31163.i = phi i1 [ false, %.preheader17.preheader.i ], [ true, %._crit_edge.us.i ] %154 = icmp sgt i32 %.neg262.i, 24 %155 = icmp eq i32 %127, 0 %156 = sub nsw i32 48, %.neg262.i @@ -616,25 +616,25 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 .lr.ph39.i: ; preds = %.lr.ph39.i, %.lr.ph39.preheader.i %indvars.iv109.i = phi i64 [ 0, %.lr.ph39.preheader.i ], [ %indvars.iv.next110.i, %.lr.ph39.i ] %indvars.iv107.i = phi i64 [ %162, %.lr.ph39.preheader.i ], [ %indvars.iv.next108.i, %.lr.ph39.i ] - %.022638.i = phi double [ %164, %.lr.ph39.preheader.i ], [ %174, %.lr.ph39.i ] - %165 = fmul double %.022638.i, 0x3E70000000000000 - %166 = fptosi double %165 to i32 - %167 = sitofp i32 %166 to double - %168 = fmul double %167, 0x4170000000000000 - %169 = fsub double %.022638.i, %168 - %170 = fptosi double %169 to i32 - %171 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv109.i - store i32 %170, ptr %171, align 4 + %.022638.i = phi double [ %164, %.lr.ph39.preheader.i ], [ %175, %.lr.ph39.i ] + %166 = fmul double %.022638.i, 0x3E70000000000000 + %167 = fptosi double %166 to i32 + %168 = sitofp i32 %167 to double + %169 = fmul double %168, 0x4170000000000000 + %170 = fsub double %.022638.i, %169 + %171 = fptosi double %170 to i32 + %172 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv109.i + store i32 %171, ptr %172, align 4 %indvars.iv.next108.i = add nsw i64 %indvars.iv107.i, -1 - %172 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next108.i - %173 = load double, ptr %172, align 8 - %174 = fadd double %173, %167 + %173 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next108.i + %174 = load double, ptr %173, align 8 + %175 = fadd double %174, %168 %indvars.iv.next110.i = add nuw nsw i64 %indvars.iv109.i, 1 - %175 = icmp samesign ugt i64 %indvars.iv107.i, 1 - br i1 %175, label %.lr.ph39.i, label %._crit_edge.i, !llvm.loop !13 + %exitcond115.not.i = icmp samesign ugt i64 %indvars.iv107.i, 1 + br i1 %exitcond115.not.i, label %.lr.ph39.i, label %._crit_edge.i, !llvm.loop !13 ._crit_edge.i: ; preds = %.lr.ph39.i - %176 = bitcast double %174 to i64 + %176 = bitcast double %175 to i64 %.sroa.0.4.extract.shift.i.i.i = lshr i64 %176, 32 %.sroa.0.4.extract.trunc.i.i.i = trunc nuw i64 %.sroa.0.4.extract.shift.i.i.i to i32 %177 = lshr i32 %.sroa.0.4.extract.trunc.i.i.i, 20 @@ -652,7 +652,7 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br i1 %182, label %_ZL7scalbnAdi.exit.i, label %183 183: ; preds = %179 - %184 = fmul double %174, 0x4350000000000000 + %184 = fmul double %175, 0x4350000000000000 %185 = bitcast double %184 to i64 %.sroa.0.4.extract.shift.i22.i.i = lshr i64 %185, 32 %.sroa.0.4.extract.trunc.i23.i.i = trunc nuw i64 %.sroa.0.4.extract.shift.i22.i.i to i32 @@ -662,13 +662,13 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br label %.thread.i.i 189: ; preds = %._crit_edge.i - %190 = fadd double %174, %174 + %190 = fadd double %175, %175 br label %_ZL7scalbnAdi.exit.i .thread.i.i: ; preds = %183, %._crit_edge.i %.01844.i.i = phi i32 [ %.sroa.0.4.extract.trunc.i23.i.i, %183 ], [ %.sroa.0.4.extract.trunc.i.i.i, %._crit_edge.i ] %.01943.i.i = phi i32 [ %188, %183 ], [ %178, %._crit_edge.i ] - %.03842.i.i = phi double [ %184, %183 ], [ %174, %._crit_edge.i ] + %.03842.i.i = phi double [ %184, %183 ], [ %175, %._crit_edge.i ] %191 = add nsw i32 %.01943.i.i, %127 %192 = icmp sgt i32 %191, 2046 br i1 %192, label %193, label %196 @@ -718,7 +718,7 @@ define internal fastcc noundef i32 @_ZL18__ieee754_rem_pio2dPd(double noundef %0 br label %_ZL7scalbnAdi.exit.i _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %193, %189, %179 - %.0.i.i = phi double [ %190, %189 ], [ %195, %193 ], [ %203, %198 ], [ %208, %206 ], [ %216, %209 ], [ %174, %179 ] + %.0.i.i = phi double [ %190, %189 ], [ %195, %193 ], [ %203, %198 ], [ %208, %206 ], [ %216, %209 ], [ %175, %179 ] %217 = fmul double %.0.i.i, 1.250000e-01 %218 = tail call double @llvm.floor.f64(double %217) %219 = fmul double %218, 8.000000e+00 @@ -766,13 +766,13 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 %.02285.i = phi i32 [ %.0228.i, %243 ], [ 2, %241 ] %.02493.i = phi i32 [ %.0249.i, %243 ], [ %221, %241 ] %umax.i = tail call i32 @llvm.umax.i32(i32 %.0231.i, i32 1) - %wide.trip.count117.i = zext i32 %umax.i to i64 + %wide.trip.count119.i = zext i32 %umax.i to i64 br label %245 245: ; preds = %251, %.thread.i - %indvars.iv114.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next115.i, %251 ] + %indvars.iv116.i = phi i64 [ 0, %.thread.i ], [ %indvars.iv.next117.i, %251 ] %.025140.i = phi i32 [ 0, %.thread.i ], [ %.1252.i, %251 ] - %246 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv114.i + %246 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv116.i %247 = load i32, ptr %246, align 4 %248 = icmp eq i32 %.025140.i, 0 br i1 %248, label %249, label %.sink.split.i @@ -782,17 +782,17 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 br i1 %.not268.i, label %251, label %.sink.split.i .sink.split.i: ; preds = %249, %245 - %.sink178.i = phi i32 [ 16777216, %249 ], [ 16777215, %245 ] - %250 = sub nsw i32 %.sink178.i, %247 + %.sink180.i = phi i32 [ 16777216, %249 ], [ 16777215, %245 ] + %250 = sub nsw i32 %.sink180.i, %247 store i32 %250, ptr %246, align 4 br label %251 251: ; preds = %.sink.split.i, %249 %.not263.i = phi i1 [ true, %249 ], [ false, %.sink.split.i ] %.1252.i = phi i32 [ 0, %249 ], [ 1, %.sink.split.i ] - %indvars.iv.next115.i = add nuw nsw i64 %indvars.iv114.i, 1 - %exitcond118.not.i = icmp eq i64 %indvars.iv.next115.i, %wide.trip.count117.i - br i1 %exitcond118.not.i, label %252, label %245, !llvm.loop !14 + %indvars.iv.next117.i = add nuw nsw i64 %indvars.iv116.i, 1 + %exitcond120.not.i = icmp eq i64 %indvars.iv.next117.i, %wide.trip.count119.i + br i1 %exitcond120.not.i, label %252, label %245, !llvm.loop !14 252: ; preds = %251 %253 = add nsw i32 %.02493.i, 1 @@ -800,24 +800,24 @@ _ZL7scalbnAdi.exit.i: ; preds = %209, %206, %198, %1 254: ; preds = %252 switch i32 %.neg262.i, label %261 [ - i32 25, label %.sink.split179.i + i32 25, label %.sink.split181.i i32 26, label %255 ] 255: ; preds = %254 - br label %.sink.split179.i + br label %.sink.split181.i -.sink.split179.i: ; preds = %255, %254 - %.sink182.i = phi i32 [ 4194303, %255 ], [ 8388607, %254 ] +.sink.split181.i: ; preds = %255, %254 + %.sink184.i = phi i32 [ 4194303, %255 ], [ 8388607, %254 ] %256 = add nsw i32 %.0231.i, -1 %257 = sext i32 %256 to i64 %258 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %257 %259 = load i32, ptr %258, align 4 - %260 = and i32 %259, %.sink182.i + %260 = and i32 %259, %.sink184.i store i32 %260, ptr %258, align 4 br label %261 -261: ; preds = %.sink.split179.i, %254, %252 +261: ; preds = %.sink.split181.i, %254, %252 %262 = icmp eq i32 %.02285.i, 2 br i1 %262, label %263, label %.thread6.i @@ -844,13 +844,13 @@ _ZL7scalbnAdi.exit285.i: ; preds = %263 br label %.preheader14.i .lr.ph44.i: ; preds = %.preheader15.i, %.lr.ph44.i - %indvars.iv119.i = phi i64 [ %indvars.iv.next120.i, %.lr.ph44.i ], [ %162, %.preheader15.i ] + %indvars.iv121.i = phi i64 [ %indvars.iv.next122.i, %.lr.ph44.i ], [ %162, %.preheader15.i ] %.323943.i = phi i32 [ %270, %.lr.ph44.i ], [ 0, %.preheader15.i ] - %indvars.iv.next120.i = add nsw i64 %indvars.iv119.i, -1 - %268 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next120.i + %indvars.iv.next122.i = add nsw i64 %indvars.iv121.i, -1 + %268 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next122.i %269 = load i32, ptr %268, align 4 %270 = or i32 %269, %.323943.i - %271 = icmp sgt i64 %indvars.iv119.i, 5 + %271 = icmp sgt i64 %indvars.iv121.i, 5 br i1 %271, label %.lr.ph44.i, label %._crit_edge45.i, !llvm.loop !15 ._crit_edge45.i: ; preds = %.lr.ph44.i @@ -862,61 +862,61 @@ _ZL7scalbnAdi.exit285.i: ; preds = %263 br label %296 .preheader14.i: ; preds = %.preheader14.i.preheader, %.preheader14.i - %indvars.iv122.i = phi i64 [ %indvars.iv.next123.i, %.preheader14.i ], [ 1, %.preheader14.i.preheader ] - %274 = sub nsw i64 4, %indvars.iv122.i + %indvars.iv124.i = phi i64 [ %indvars.iv.next125.i, %.preheader14.i ], [ 1, %.preheader14.i.preheader ] + %274 = sub nsw i64 4, %indvars.iv124.i %275 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %274 %276 = load i32, ptr %275, align 4 %277 = icmp eq i32 %276, 0 - %indvars.iv.next123.i = add nuw nsw i64 %indvars.iv122.i, 1 + %indvars.iv.next125.i = add nuw nsw i64 %indvars.iv124.i, 1 br i1 %277, label %.preheader14.i, label %.preheader12.i, !llvm.loop !16 .preheader12.i: ; preds = %.preheader14.i - %278 = trunc nuw nsw i64 %indvars.iv122.i to i32 + %278 = trunc nuw nsw i64 %indvars.iv124.i to i32 %279 = add nuw nsw i32 %.0231.i, %278 %280 = sext i32 %.0231.i to i64 br label %281 281: ; preds = %._crit_edge52.i, %.preheader12.i - %indvars.iv130.i = phi i64 [ %280, %.preheader12.i ], [ %indvars.iv.next131.i, %._crit_edge52.i ] - %indvars.iv.next131.i = add nuw nsw i64 %indvars.iv130.i, 1 - %gep.i = getelementptr i32, ptr %invariant.gep.i, i64 %indvars.iv.next131.i + %indvars.iv132.i = phi i64 [ %280, %.preheader12.i ], [ %indvars.iv.next133.i, %._crit_edge52.i ] + %indvars.iv.next133.i = add nuw nsw i64 %indvars.iv132.i, 1 + %gep.i = getelementptr i32, ptr %invariant.gep.i, i64 %indvars.iv.next133.i %282 = load i32, ptr %gep.i, align 4 %283 = sitofp i32 %282 to double - %284 = add i64 %indvars.iv149, %indvars.iv130.i + %284 = add i64 %indvars.iv149, %indvars.iv132.i %sext153 = shl i64 %284, 32 %285 = ashr exact i64 %sext153, 32 %286 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %285 store double %283, ptr %286, align 8 - br i1 %.not269.not31161.i, label %.lr.ph51.i, label %._crit_edge52.i + br i1 %.not269.not31163.i, label %.lr.ph51.i, label %._crit_edge52.i .lr.ph51.i: ; preds = %281, %.lr.ph51.i - %indvars.iv125.i = phi i64 [ %indvars.iv.next126.i, %.lr.ph51.i ], [ 0, %281 ] + %indvars.iv127.i = phi i64 [ %indvars.iv.next128.i, %.lr.ph51.i ], [ 0, %281 ] %.149.i = phi double [ %293, %.lr.ph51.i ], [ 0.000000e+00, %281 ] - %287 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv125.i + %287 = getelementptr inbounds nuw double, ptr %7, i64 %indvars.iv127.i %288 = load double, ptr %287, align 8 - %289 = sub nsw i64 %285, %indvars.iv125.i + %289 = sub nsw i64 %285, %indvars.iv127.i %290 = getelementptr inbounds [20 x double], ptr %4, i64 0, i64 %289 %291 = load double, ptr %290, align 8 %292 = fmul double %288, %291 %293 = fadd double %.149.i, %292 - %indvars.iv.next126.i = add nuw nsw i64 %indvars.iv125.i, 1 - %exitcond129.not.i = icmp eq i64 %indvars.iv.next126.i, %wide.trip.count128.i.pre-phi - br i1 %exitcond129.not.i, label %._crit_edge52.i, label %.lr.ph51.i, !llvm.loop !17 + %indvars.iv.next128.i = add nuw nsw i64 %indvars.iv127.i, 1 + %exitcond131.not.i = icmp eq i64 %indvars.iv.next128.i, %wide.trip.count130.i.pre-phi + br i1 %exitcond131.not.i, label %._crit_edge52.i, label %.lr.ph51.i, !llvm.loop !17 ._crit_edge52.i: ; preds = %.lr.ph51.i, %281 %.1.lcssa.i = phi double [ 0.000000e+00, %281 ], [ %293, %.lr.ph51.i ] - %294 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next131.i + %294 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv.next133.i store double %.1.lcssa.i, ptr %294, align 8 - %295 = trunc nsw i64 %indvars.iv.next131.i to i32 + %295 = trunc nsw i64 %indvars.iv.next133.i to i32 %.not266.not.i = icmp samesign ugt i32 %279, %295 br i1 %.not266.not.i, label %281, label %.loopexit13.loopexit.i, !llvm.loop !12 296: ; preds = %296, %.preheader11.i - %indvars.iv135.i = phi i64 [ %273, %.preheader11.i ], [ %indvars.iv.next136.i, %296 ] + %indvars.iv137.i = phi i64 [ %273, %.preheader11.i ], [ %indvars.iv.next138.i, %296 ] %.0229.in.i = phi i32 [ %127, %.preheader11.i ], [ %.0229.i, %296 ] %.0229.i = add nsw i32 %.0229.in.i, -24 - %indvars.iv.next136.i = add nsw i64 %indvars.iv135.i, -1 - %297 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next136.i + %indvars.iv.next138.i = add nsw i64 %indvars.iv137.i, -1 + %297 = getelementptr inbounds [20 x i32], ptr %3, i64 0, i64 %indvars.iv.next138.i %298 = load i32, ptr %297, align 4 %299 = icmp eq i32 %298, 0 br i1 %299, label %296, label %.loopexit.loopexit.i, !llvm.loop !18 @@ -1032,7 +1032,7 @@ _ZL7scalbnAdi.exit304.i: ; preds = %333, %330, %322, %3 br label %.loopexit.i .loopexit.loopexit.i: ; preds = %296 - %356 = trunc nsw i64 %indvars.iv.next136.i to i32 + %356 = trunc nsw i64 %indvars.iv.next138.i to i32 br label %.loopexit.i .loopexit.i: ; preds = %.loopexit.loopexit.i, %353, %342 @@ -1082,59 +1082,59 @@ _ZL7scalbnAdi.exit318.i: ; preds = %366, %364, %361, %. br label %.lr.ph59.i .lr.ph59.i: ; preds = %.lr.ph59.i, %.lr.ph59.preheader.i - %indvars.iv138.i = phi i64 [ %374, %.lr.ph59.preheader.i ], [ %indvars.iv.next139.i, %.lr.ph59.i ] + %indvars.iv140.i = phi i64 [ %374, %.lr.ph59.preheader.i ], [ %indvars.iv.next141.i, %.lr.ph59.i ] %.258.i = phi double [ %.0.i313.i, %.lr.ph59.preheader.i ], [ %380, %.lr.ph59.i ] - %375 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv138.i + %375 = getelementptr inbounds nuw [20 x i32], ptr %3, i64 0, i64 %indvars.iv140.i %376 = load i32, ptr %375, align 4 %377 = sitofp i32 %376 to double %378 = fmul double %.258.i, %377 - %379 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv138.i + %379 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %indvars.iv140.i store double %378, ptr %379, align 8 %380 = fmul double %.258.i, 0x3E70000000000000 - %indvars.iv.next139.i = add nsw i64 %indvars.iv138.i, -1 - %.not.i = icmp eq i64 %indvars.iv138.i, 0 + %indvars.iv.next141.i = add nsw i64 %indvars.iv140.i, -1 + %.not.i = icmp eq i64 %indvars.iv140.i, 0 br i1 %.not.i, label %.lr.ph63.preheader.i, label %.lr.ph59.i, !llvm.loop !19 .lr.ph63.preheader.i: ; preds = %.lr.ph59.i, %.critedge.i - %indvars.iv148.i = phi i64 [ %indvars.iv.next149.i, %.critedge.i ], [ %374, %.lr.ph59.i ] - %indvars.iv144.i = phi i32 [ %indvars.iv.next145.i, %.critedge.i ], [ 0, %.lr.ph59.i ] - %umin.i = tail call i32 @llvm.umin.i32(i32 %indvars.iv144.i, i32 4) + %indvars.iv150.i = phi i64 [ %indvars.iv.next151.i, %.critedge.i ], [ %374, %.lr.ph59.i ] + %indvars.iv146.i = phi i32 [ %indvars.iv.next147.i, %.critedge.i ], [ 0, %.lr.ph59.i ] + %umin.i = tail call i32 @llvm.umin.i32(i32 %indvars.iv146.i, i32 4) %381 = add nuw nsw i32 %umin.i, 1 - %wide.trip.count146.i = zext nneg i32 %381 to i64 + %wide.trip.count148.i = zext nneg i32 %381 to i64 br label %.lr.ph63.i .lr.ph63.i: ; preds = %.lr.ph63.i, %.lr.ph63.preheader.i - %indvars.iv141.i = phi i64 [ 0, %.lr.ph63.preheader.i ], [ %indvars.iv.next142.i, %.lr.ph63.i ] + %indvars.iv143.i = phi i64 [ 0, %.lr.ph63.preheader.i ], [ %indvars.iv.next144.i, %.lr.ph63.i ] %.362.i = phi double [ 0.000000e+00, %.lr.ph63.preheader.i ], [ %388, %.lr.ph63.i ] - %382 = getelementptr inbounds nuw [8 x double], ptr @_ZL4PIo2, i64 0, i64 %indvars.iv141.i + %382 = getelementptr inbounds nuw [8 x double], ptr @_ZL4PIo2, i64 0, i64 %indvars.iv143.i %383 = load double, ptr %382, align 8 - %384 = add nuw nsw i64 %indvars.iv141.i, %indvars.iv148.i + %384 = add nuw nsw i64 %indvars.iv143.i, %indvars.iv150.i %385 = getelementptr inbounds nuw [20 x double], ptr %6, i64 0, i64 %384 %386 = load double, ptr %385, align 8 %387 = fmul double %383, %386 %388 = fadd double %.362.i, %387 - %indvars.iv.next142.i = add nuw nsw i64 %indvars.iv141.i, 1 - %exitcond147.i = icmp eq i64 %indvars.iv.next142.i, %wide.trip.count146.i - br i1 %exitcond147.i, label %.critedge.i, label %.lr.ph63.i, !llvm.loop !20 + %indvars.iv.next144.i = add nuw nsw i64 %indvars.iv143.i, 1 + %exitcond149.i = icmp eq i64 %indvars.iv.next144.i, %wide.trip.count148.i + br i1 %exitcond149.i, label %.critedge.i, label %.lr.ph63.i, !llvm.loop !20 .critedge.i: ; preds = %.lr.ph63.i - %389 = sub nuw nsw i64 %374, %indvars.iv148.i + %389 = sub nuw nsw i64 %374, %indvars.iv150.i %390 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %389 store double %388, ptr %390, align 8 - %indvars.iv.next149.i = add nsw i64 %indvars.iv148.i, -1 - %indvars.iv.next145.i = add nuw i32 %indvars.iv144.i, 1 - %exitcond151.not.i = icmp eq i32 %indvars.iv144.i, %.2233.i - br i1 %exitcond151.not.i, label %.lr.ph69.i, label %.lr.ph63.preheader.i, !llvm.loop !21 + %indvars.iv.next151.i = add nsw i64 %indvars.iv150.i, -1 + %indvars.iv.next147.i = add nuw i32 %indvars.iv146.i, 1 + %exitcond153.not.i = icmp eq i32 %indvars.iv146.i, %.2233.i + br i1 %exitcond153.not.i, label %.lr.ph69.i, label %.lr.ph63.preheader.i, !llvm.loop !21 .lr.ph69.i: ; preds = %.critedge.i, %.lr.ph69.i - %indvars.iv152.i = phi i64 [ %indvars.iv.next153.i, %.lr.ph69.i ], [ %374, %.critedge.i ] + %indvars.iv154.i = phi i64 [ %indvars.iv.next155.i, %.lr.ph69.i ], [ %374, %.critedge.i ] %.568.i = phi double [ %393, %.lr.ph69.i ], [ 0.000000e+00, %.critedge.i ] - %391 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv152.i + %391 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv154.i %392 = load double, ptr %391, align 8 %393 = fadd double %.568.i, %392 - %indvars.iv.next153.i = add nsw i64 %indvars.iv152.i, -1 - %.not184.i = icmp eq i64 %indvars.iv152.i, 0 - br i1 %.not184.i, label %._crit_edge70.i, label %.lr.ph69.i, !llvm.loop !22 + %indvars.iv.next155.i = add nsw i64 %indvars.iv154.i, -1 + %.not186.i = icmp eq i64 %indvars.iv154.i, 0 + br i1 %.not186.i, label %._crit_edge70.i, label %.lr.ph69.i, !llvm.loop !22 ._crit_edge70.i: ; preds = %.lr.ph69.i %.pre = load double, ptr %5, align 16 @@ -1148,18 +1148,18 @@ _ZL7scalbnAdi.exit318.i: ; preds = %366, %364, %361, %. .lr.ph76.preheader.i: ; preds = %._crit_edge70.i %398 = add nuw i32 %.2233.i, 1 - %wide.trip.count158.i = zext i32 %398 to i64 + %wide.trip.count160.i = zext i32 %398 to i64 br label %.lr.ph76.i .lr.ph76.i: ; preds = %.lr.ph76.i, %.lr.ph76.preheader.i - %indvars.iv155.i = phi i64 [ 1, %.lr.ph76.preheader.i ], [ %indvars.iv.next156.i, %.lr.ph76.i ] + %indvars.iv157.i = phi i64 [ 1, %.lr.ph76.preheader.i ], [ %indvars.iv.next158.i, %.lr.ph76.i ] %.674.i = phi double [ %397, %.lr.ph76.preheader.i ], [ %401, %.lr.ph76.i ] - %399 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv155.i + %399 = getelementptr inbounds nuw [20 x double], ptr %5, i64 0, i64 %indvars.iv157.i %400 = load double, ptr %399, align 8 %401 = fadd double %.674.i, %400 - %indvars.iv.next156.i = add nuw nsw i64 %indvars.iv155.i, 1 - %exitcond159.not.i = icmp eq i64 %indvars.iv.next156.i, %wide.trip.count158.i - br i1 %exitcond159.not.i, label %_ZL17__kernel_rem_pio2PdS_iiiPKi.exit, label %.lr.ph76.i, !llvm.loop !23 + %indvars.iv.next158.i = add nuw nsw i64 %indvars.iv157.i, 1 + %exitcond161.not.i = icmp eq i64 %indvars.iv.next158.i, %wide.trip.count160.i + br i1 %exitcond161.not.i, label %_ZL17__kernel_rem_pio2PdS_iiiPKi.exit, label %.lr.ph76.i, !llvm.loop !23 _ZL17__kernel_rem_pio2PdS_iiiPKi.exit: ; preds = %.lr.ph76.i, %._crit_edge70.i.thread, %._crit_edge70.i %402 = phi double [ %396, %._crit_edge70.i ], [ %373, %._crit_edge70.i.thread ], [ %396, %.lr.ph76.i ] diff --git a/bench/openssl/optimized/libssl-lib-s3_enc.ll b/bench/openssl/optimized/libssl-lib-s3_enc.ll index f19f5a91c0e..32cda81f83f 100644 --- a/bench/openssl/optimized/libssl-lib-s3_enc.ll +++ b/bench/openssl/optimized/libssl-lib-s3_enc.ll @@ -37,15 +37,15 @@ if.end: ; preds = %entry %2 = load ptr, ptr %new_compression, align 8 %key_block = getelementptr inbounds nuw i8, ptr %s, i64 752 %3 = load ptr, ptr %key_block, align 8 - %call = tail call i32 @EVP_MD_get_size(ptr noundef nonnull %1) #7 + %call = tail call i32 @EVP_MD_get_size(ptr noundef nonnull %1) #8 %cmp12 = icmp slt i32 %call, 0 br i1 %cmp12, label %err.sink.split, label %if.end15 if.end15: ; preds = %if.end %conv16 = zext nneg i32 %call to i64 - %call17 = tail call i32 @EVP_CIPHER_get_key_length(ptr noundef %0) #7 + %call17 = tail call i32 @EVP_CIPHER_get_key_length(ptr noundef %0) #8 %conv18 = sext i32 %call17 to i64 - %call19 = tail call i32 @EVP_CIPHER_get_iv_length(ptr noundef %0) #7 + %call19 = tail call i32 @EVP_CIPHER_get_iv_length(ptr noundef %0) #8 %conv20 = sext i32 %call19 to i64 switch i32 %which, label %if.else [ i32 33, label %if.then25 @@ -82,15 +82,15 @@ if.end40: ; preds = %if.else, %if.then25 if.end46: ; preds = %if.end40 %key.0 = getelementptr inbounds i8, ptr %3, i64 %add.pn %iv.0 = getelementptr inbounds i8, ptr %3, i64 %add28.pn - %call47 = tail call i32 @ssl_set_new_record_layer(ptr noundef nonnull %s, i32 noundef 768, i32 noundef %cond, i32 noundef 3, ptr noundef null, i64 noundef 0, ptr noundef %key.0, i64 noundef %conv18, ptr noundef %iv.0, i64 noundef %conv20, ptr noundef %mac_secret.0, i64 noundef %conv16, ptr noundef %0, i64 noundef 0, i32 noundef 0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef null) #7 + %call47 = tail call i32 @ssl_set_new_record_layer(ptr noundef nonnull %s, i32 noundef 768, i32 noundef %cond, i32 noundef 3, ptr noundef null, i64 noundef 0, ptr noundef %key.0, i64 noundef %conv18, ptr noundef %iv.0, i64 noundef %conv20, ptr noundef %mac_secret.0, i64 noundef %conv16, ptr noundef %0, i64 noundef 0, i32 noundef 0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef null) #8 %tobool48.not = icmp eq i32 %call47, 0 br i1 %tobool48.not, label %err, label %return err.sink.split: ; preds = %if.end40, %if.end, %entry %.sink = phi i32 [ 107, %entry ], [ 117, %if.end ], [ 142, %if.end40 ] - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink, ptr noundef nonnull @__func__.ssl3_change_cipher_state) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink, ptr noundef nonnull @__func__.ssl3_change_cipher_state) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %err err: ; preds = %err.sink.split, %if.end46 @@ -133,54 +133,54 @@ if.end: ; preds = %entry %1 = load ptr, ptr %ctx, align 8 %session = getelementptr inbounds nuw i8, ptr %s, i64 2176 %2 = load ptr, ptr %session, align 8 - %call = call i32 @ssl_cipher_get_evp(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %c, ptr noundef nonnull %hash, ptr noundef null, ptr noundef null, ptr noundef nonnull %comp, i32 noundef 0) #7 + %call = call i32 @ssl_cipher_get_evp(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %c, ptr noundef nonnull %hash, ptr noundef null, ptr noundef null, ptr noundef nonnull %comp, i32 noundef 0) #8 %tobool.not = icmp eq i32 %call, 0 br i1 %tobool.not, label %if.then1, label %if.end2 if.then1: ; preds = %if.end - call void @ossl_statem_send_fatal(ptr noundef nonnull %s, i32 noundef 80) #7 + call void @ossl_statem_send_fatal(ptr noundef nonnull %s, i32 noundef 80) #8 br label %return if.end2: ; preds = %if.end %new_sym_enc = getelementptr inbounds nuw i8, ptr %s, i64 760 %3 = load ptr, ptr %new_sym_enc, align 8 - call void @ssl_evp_cipher_free(ptr noundef %3) #7 + call void @ssl_evp_cipher_free(ptr noundef %3) #8 %4 = load ptr, ptr %c, align 8 store ptr %4, ptr %new_sym_enc, align 8 %new_hash = getelementptr inbounds nuw i8, ptr %s, i64 768 %5 = load ptr, ptr %new_hash, align 8 - call void @ssl_evp_md_free(ptr noundef %5) #7 + call void @ssl_evp_md_free(ptr noundef %5) #8 %6 = load ptr, ptr %hash, align 8 store ptr %6, ptr %new_hash, align 8 %7 = load ptr, ptr %comp, align 8 %new_compression = getelementptr inbounds nuw i8, ptr %s, i64 792 store ptr %7, ptr %new_compression, align 8 - %call15 = call i32 @EVP_MD_get_size(ptr noundef %6) #7 + %call15 = call i32 @EVP_MD_get_size(ptr noundef %6) #8 %cmp16 = icmp slt i32 %call15, 0 br i1 %cmp16, label %return, label %if.end18 if.end18: ; preds = %if.end2 %8 = load ptr, ptr %c, align 8 - %call19 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %8) #7 + %call19 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %8) #8 %add = add nsw i32 %call19, %call15 %9 = load ptr, ptr %c, align 8 - %call20 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %9) #7 + %call20 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %9) #8 %add21 = add nsw i32 %add, %call20 %mul = shl nsw i32 %add21, 1 %key_block.i = getelementptr inbounds nuw i8, ptr %s, i64 752 %10 = load ptr, ptr %key_block.i, align 8 %11 = load i64, ptr %key_block_length, align 8 - call void @CRYPTO_clear_free(ptr noundef %10, i64 noundef %11, ptr noundef nonnull @.str, i32 noundef 214) #7 + call void @CRYPTO_clear_free(ptr noundef %10, i64 noundef %11, ptr noundef nonnull @.str, i32 noundef 214) #8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %key_block_length, i8 0, i64 16, i1 false) %conv = sext i32 %mul to i64 - %call22 = call noalias ptr @CRYPTO_malloc(i64 noundef %conv, ptr noundef nonnull @.str, i32 noundef 198) #7 + %call22 = call noalias ptr @CRYPTO_malloc(i64 noundef %conv, ptr noundef nonnull @.str, i32 noundef 198) #8 %cmp23 = icmp eq ptr %call22, null br i1 %cmp23, label %if.then25, label %if.end26 if.then25: ; preds = %if.end18 - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 199, ptr noundef nonnull @__func__.ssl3_setup_key_block) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524303, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 199, ptr noundef nonnull @__func__.ssl3_setup_key_block) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524303, ptr noundef null) #8 br label %return if.end26: ; preds = %if.end18 @@ -192,12 +192,12 @@ if.end26: ; preds = %if.end18 %13 = load ptr, ptr %12, align 8 %propq.i = getelementptr inbounds nuw i8, ptr %12, i64 1096 %14 = load ptr, ptr %propq.i, align 8 - %call.i = call ptr @ssl_evp_md_fetch(ptr noundef %13, i32 noundef 4, ptr noundef %14) #7 + %call.i = call ptr @ssl_evp_md_fetch(ptr noundef %13, i32 noundef 4, ptr noundef %14) #8 %15 = load ptr, ptr %12, align 8 %16 = load ptr, ptr %propq.i, align 8 - %call3.i = call ptr @ssl_evp_md_fetch(ptr noundef %15, i32 noundef 64, ptr noundef %16) #7 - %call4.i = call ptr @EVP_MD_CTX_new() #7 - %call5.i = call ptr @EVP_MD_CTX_new() #7 + %call3.i = call ptr @ssl_evp_md_fetch(ptr noundef %15, i32 noundef 64, ptr noundef %16) #8 + %call4.i = call ptr @EVP_MD_CTX_new() #8 + %call5.i = call ptr @EVP_MD_CTX_new() #8 %cmp.i = icmp eq ptr %call.i, null %cmp6.i = icmp eq ptr %call3.i, null %or.cond.i = select i1 %cmp.i, i1 true, i1 %cmp6.i @@ -218,9 +218,9 @@ for.body.lr.ph.i: ; preds = %for.cond.preheader. br label %for.body.i if.then.i: ; preds = %if.end26 - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 38, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 38, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 br label %ssl3_generate_key_block.exit for.body.i: ; preds = %if.end74.i, %for.body.lr.ph.i @@ -233,70 +233,70 @@ for.body.i: ; preds = %if.end74.i, %for.bo br i1 %exitcond.i, label %if.then14.i, label %if.end15.i if.then14.i: ; preds = %for.body.i - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 45, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 45, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %ssl3_generate_key_block.exit if.end15.i: ; preds = %for.body.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %buf.i, i8 %c.046.i, i64 %indvars.iv.next.i, i1 false) %inc18.i = add nuw nsw i8 %c.046.i, 1 - %call19.i = call i32 @EVP_DigestInit_ex(ptr noundef %call5.i, ptr noundef %call3.i, ptr noundef null) #7 + %call19.i = call i32 @EVP_DigestInit_ex(ptr noundef %call5.i, ptr noundef %call3.i, ptr noundef null) #8 %tobool.not.i = icmp eq i32 %call19.i, 0 br i1 %tobool.not.i, label %if.then58.i, label %lor.lhs.false20.i lor.lhs.false20.i: ; preds = %if.end15.i - %call23.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %buf.i, i64 noundef %indvars.iv.next.i) #7 + %call23.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %buf.i, i64 noundef %indvars.iv.next.i) #8 %tobool24.not.i = icmp eq i32 %call23.i, 0 br i1 %tobool24.not.i, label %if.then58.i, label %lor.lhs.false25.i lor.lhs.false25.i: ; preds = %lor.lhs.false20.i - %18 = load ptr, ptr %session, align 8 - %master_key.i = getelementptr inbounds nuw i8, ptr %18, i64 80 - %master_key_length.i = getelementptr inbounds nuw i8, ptr %18, i64 8 - %19 = load i64, ptr %master_key_length.i, align 8 - %call28.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %master_key.i, i64 noundef %19) #7 + %20 = load ptr, ptr %session, align 8 + %master_key.i = getelementptr inbounds nuw i8, ptr %20, i64 80 + %master_key_length.i = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = load i64, ptr %master_key_length.i, align 8 + %call28.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %master_key.i, i64 noundef %21) #8 %tobool29.not.i = icmp eq i32 %call28.i, 0 br i1 %tobool29.not.i, label %if.then58.i, label %lor.lhs.false30.i lor.lhs.false30.i: ; preds = %lor.lhs.false25.i - %call32.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %server_random.i, i64 noundef 32) #7 + %call32.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %server_random.i, i64 noundef 32) #8 %tobool33.not.i = icmp eq i32 %call32.i, 0 br i1 %tobool33.not.i, label %if.then58.i, label %lor.lhs.false34.i lor.lhs.false34.i: ; preds = %lor.lhs.false30.i - %call37.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %client_random.i, i64 noundef 32) #7 + %call37.i = call i32 @EVP_DigestUpdate(ptr noundef %call5.i, ptr noundef nonnull %client_random.i, i64 noundef 32) #8 %tobool38.not.i = icmp eq i32 %call37.i, 0 br i1 %tobool38.not.i, label %if.then58.i, label %lor.lhs.false39.i lor.lhs.false39.i: ; preds = %lor.lhs.false34.i - %call41.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call5.i, ptr noundef nonnull %smd.i, ptr noundef null) #7 + %call41.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call5.i, ptr noundef nonnull %smd.i, ptr noundef null) #8 %tobool42.not.i = icmp eq i32 %call41.i, 0 br i1 %tobool42.not.i, label %if.then58.i, label %lor.lhs.false43.i lor.lhs.false43.i: ; preds = %lor.lhs.false39.i - %call44.i = call i32 @EVP_DigestInit_ex(ptr noundef %call4.i, ptr noundef %call.i, ptr noundef null) #7 + %call44.i = call i32 @EVP_DigestInit_ex(ptr noundef %call4.i, ptr noundef %call.i, ptr noundef null) #8 %tobool45.not.i = icmp eq i32 %call44.i, 0 br i1 %tobool45.not.i, label %if.then58.i, label %lor.lhs.false46.i lor.lhs.false46.i: ; preds = %lor.lhs.false43.i - %20 = load ptr, ptr %session, align 8 - %master_key48.i = getelementptr inbounds nuw i8, ptr %20, i64 80 - %master_key_length51.i = getelementptr inbounds nuw i8, ptr %20, i64 8 - %21 = load i64, ptr %master_key_length51.i, align 8 - %call52.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %master_key48.i, i64 noundef %21) #7 + %22 = load ptr, ptr %session, align 8 + %master_key48.i = getelementptr inbounds nuw i8, ptr %22, i64 80 + %master_key_length51.i = getelementptr inbounds nuw i8, ptr %22, i64 8 + %23 = load i64, ptr %master_key_length51.i, align 8 + %call52.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %master_key48.i, i64 noundef %23) #8 %tobool53.not.i = icmp eq i32 %call52.i, 0 br i1 %tobool53.not.i, label %if.then58.i, label %lor.lhs.false54.i lor.lhs.false54.i: ; preds = %lor.lhs.false46.i - %call56.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %smd.i, i64 noundef 20) #7 + %call56.i = call i32 @EVP_DigestUpdate(ptr noundef %call4.i, ptr noundef nonnull %smd.i, i64 noundef 20) #8 %tobool57.not.i = icmp eq i32 %call56.i, 0 br i1 %tobool57.not.i, label %if.then58.i, label %if.end59.i if.then58.i: ; preds = %lor.lhs.false54.i, %lor.lhs.false46.i, %lor.lhs.false43.i, %lor.lhs.false39.i, %lor.lhs.false34.i, %lor.lhs.false30.i, %lor.lhs.false25.i, %lor.lhs.false20.i, %if.end15.i - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 62, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 62, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %ssl3_generate_key_block.exit if.end59.i: ; preds = %lor.lhs.false54.i @@ -305,49 +305,49 @@ if.end59.i: ; preds = %lor.lhs.false54.i br i1 %cmp60.i, label %if.then62.i, label %if.else.i if.then62.i: ; preds = %if.end59.i - %call64.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %smd.i, ptr noundef null) #7 + %call64.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %smd.i, ptr noundef null) #8 %tobool65.not.i = icmp eq i32 %call64.i, 0 br i1 %tobool65.not.i, label %if.then66.i, label %if.end67.i if.then66.i: ; preds = %if.then62.i - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 67, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 67, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %ssl3_generate_key_block.exit if.end67.i: ; preds = %if.then62.i - %22 = trunc nuw nsw i64 %indvars.iv50.i to i32 - %sub.i = sub i32 %mul, %22 + %24 = trunc nuw nsw i64 %indvars.iv50.i to i32 + %sub.i = sub i32 %mul, %24 %conv69.i = zext i32 %sub.i to i64 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %km.addr.049.i, ptr nonnull align 16 %smd.i, i64 %conv69.i, i1 false) br label %if.end74.i if.else.i: ; preds = %if.end59.i - %call70.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %km.addr.049.i, ptr noundef null) #7 + %call70.i = call i32 @EVP_DigestFinal_ex(ptr noundef %call4.i, ptr noundef nonnull %km.addr.049.i, ptr noundef null) #8 %tobool71.not.i = icmp eq i32 %call70.i, 0 br i1 %tobool71.not.i, label %if.then72.i, label %if.end74.i if.then72.i: ; preds = %if.else.i - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 73, ptr noundef nonnull @__func__.ssl3_generate_key_block) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 73, ptr noundef nonnull @__func__.ssl3_generate_key_block) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %ssl3_generate_key_block.exit if.end74.i: ; preds = %if.else.i, %if.end67.i %add.ptr.i = getelementptr inbounds nuw i8, ptr %km.addr.049.i, i64 16 - %cmp11.i = icmp samesign ult i64 %indvars.iv.next51.i, %17 - br i1 %cmp11.i, label %for.body.i, label %for.end.i, !llvm.loop !4 + %exitcond.not = icmp samesign ult i64 %indvars.iv.next51.i, %17 + br i1 %exitcond.not, label %for.body.i, label %for.end.i, !llvm.loop !4 for.end.i: ; preds = %if.end74.i, %for.cond.preheader.i - call void @OPENSSL_cleanse(ptr noundef nonnull %smd.i, i64 noundef 20) #7 + call void @OPENSSL_cleanse(ptr noundef nonnull %smd.i, i64 noundef 20) #8 br label %ssl3_generate_key_block.exit ssl3_generate_key_block.exit: ; preds = %if.then.i, %if.then14.i, %if.then58.i, %if.then66.i, %if.then72.i, %for.end.i %ret.0.i = phi i32 [ 0, %if.then.i ], [ 0, %if.then14.i ], [ 0, %if.then66.i ], [ 0, %if.then72.i ], [ 0, %if.then58.i ], [ 1, %for.end.i ] - call void @EVP_MD_CTX_free(ptr noundef %call4.i) #7 - call void @EVP_MD_CTX_free(ptr noundef %call5.i) #7 - call void @ssl_evp_md_free(ptr noundef %call.i) #7 - call void @ssl_evp_md_free(ptr noundef %call3.i) #7 + call void @EVP_MD_CTX_free(ptr noundef %call4.i) #8 + call void @EVP_MD_CTX_free(ptr noundef %call5.i) #8 + call void @ssl_evp_md_free(ptr noundef %call.i) #8 + call void @ssl_evp_md_free(ptr noundef %call3.i) #8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %buf.i) call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %smd.i) br label %return @@ -372,7 +372,7 @@ entry: %0 = load ptr, ptr %key_block, align 8 %key_block_length = getelementptr inbounds nuw i8, ptr %s, i64 744 %1 = load i64, ptr %key_block_length, align 8 - tail call void @CRYPTO_clear_free(ptr noundef %0, i64 noundef %1, ptr noundef nonnull @.str, i32 noundef 214) #7 + tail call void @CRYPTO_clear_free(ptr noundef %0, i64 noundef %1, ptr noundef nonnull @.str, i32 noundef 214) #8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %key_block_length, i8 0, i64 16, i1 false) ret void } @@ -384,28 +384,28 @@ declare void @CRYPTO_clear_free(ptr noundef, i64 noundef, ptr noundef, i32 nound ; Function Attrs: nounwind uwtable define range(i32 0, 2) i32 @ssl3_init_finished_mac(ptr noundef %s) local_unnamed_addr #0 { entry: - %call = tail call ptr @BIO_s_mem() #7 - %call1 = tail call ptr @BIO_new(ptr noundef %call) #7 + %call = tail call ptr @BIO_s_mem() #8 + %call1 = tail call ptr @BIO_new(ptr noundef %call) #8 %cmp = icmp eq ptr %call1, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 224, ptr noundef nonnull @__func__.ssl3_init_finished_mac) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524320, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 224, ptr noundef nonnull @__func__.ssl3_init_finished_mac) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524320, ptr noundef null) #8 br label %return if.end: ; preds = %entry %handshake_buffer.i = getelementptr inbounds nuw i8, ptr %s, i64 352 %0 = load ptr, ptr %handshake_buffer.i, align 8 - %call.i = tail call i32 @BIO_free(ptr noundef %0) #7 + %call.i = tail call i32 @BIO_free(ptr noundef %0) #8 store ptr null, ptr %handshake_buffer.i, align 8 %handshake_dgst.i = getelementptr inbounds nuw i8, ptr %s, i64 360 %1 = load ptr, ptr %handshake_dgst.i, align 8 - tail call void @EVP_MD_CTX_free(ptr noundef %1) #7 + tail call void @EVP_MD_CTX_free(ptr noundef %1) #8 store ptr null, ptr %handshake_dgst.i, align 8 store ptr %call1, ptr %handshake_buffer.i, align 8 - %call4 = tail call i64 @BIO_ctrl(ptr noundef nonnull %call1, i32 noundef 9, i64 noundef 1, ptr noundef null) #7 + %call4 = tail call i64 @BIO_ctrl(ptr noundef nonnull %call1, i32 noundef 9, i64 noundef 1, ptr noundef null) #8 br label %return return: ; preds = %if.end, %if.then @@ -422,11 +422,11 @@ define void @ssl3_free_digest_list(ptr noundef captures(none) %s) local_unnamed_ entry: %handshake_buffer = getelementptr inbounds nuw i8, ptr %s, i64 352 %0 = load ptr, ptr %handshake_buffer, align 8 - %call = tail call i32 @BIO_free(ptr noundef %0) #7 + %call = tail call i32 @BIO_free(ptr noundef %0) #8 store ptr null, ptr %handshake_buffer, align 8 %handshake_dgst = getelementptr inbounds nuw i8, ptr %s, i64 360 %1 = load ptr, ptr %handshake_dgst, align 8 - tail call void @EVP_MD_CTX_free(ptr noundef %1) #7 + tail call void @EVP_MD_CTX_free(ptr noundef %1) #8 store ptr null, ptr %handshake_dgst, align 8 ret void } @@ -453,23 +453,23 @@ if.end: ; preds = %if.then %handshake_buffer = getelementptr inbounds nuw i8, ptr %s, i64 352 %1 = load ptr, ptr %handshake_buffer, align 8 %conv = trunc nuw nsw i64 %len to i32 - %call = tail call i32 @BIO_write(ptr noundef %1, ptr noundef %buf, i32 noundef %conv) #7 + %call = tail call i32 @BIO_write(ptr noundef %1, ptr noundef %buf, i32 noundef %conv) #8 %cmp4 = icmp sgt i32 %call, 0 %cmp7.not = icmp eq i32 %call, %conv %or.cond = and i1 %cmp4, %cmp7.not br i1 %or.cond, label %return, label %return.sink.split if.else: ; preds = %entry - %call13 = tail call i32 @EVP_DigestUpdate(ptr noundef nonnull %0, ptr noundef %buf, i64 noundef %len) #7 + %call13 = tail call i32 @EVP_DigestUpdate(ptr noundef nonnull %0, ptr noundef %buf, i64 noundef %len) #8 %tobool.not = icmp eq i32 %call13, 0 br i1 %tobool.not, label %return.sink.split, label %return return.sink.split: ; preds = %if.else, %if.end, %if.then %.sink12 = phi i32 [ 253, %if.then ], [ 258, %if.end ], [ 264, %if.else ] %.sink = phi i32 [ 237, %if.then ], [ 786691, %if.end ], [ 786691, %if.else ] - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink12, ptr noundef nonnull @__func__.ssl3_finish_mac) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef %.sink, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink12, ptr noundef nonnull @__func__.ssl3_finish_mac) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef %.sink, ptr noundef null) #8 br label %return return: ; preds = %return.sink.split, %if.else, %if.end @@ -493,56 +493,56 @@ entry: if.then: ; preds = %entry %handshake_buffer = getelementptr inbounds nuw i8, ptr %s, i64 352 %1 = load ptr, ptr %handshake_buffer, align 8 - %call = call i64 @BIO_ctrl(ptr noundef %1, i32 noundef 3, i64 noundef 0, ptr noundef nonnull %hdata) #7 + %call = call i64 @BIO_ctrl(ptr noundef %1, i32 noundef 3, i64 noundef 0, ptr noundef nonnull %hdata) #8 %cmp2 = icmp slt i64 %call, 1 br i1 %cmp2, label %if.then3, label %if.end if.then3: ; preds = %if.then - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 280, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 332, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 280, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 332, ptr noundef null) #8 br label %return if.end: ; preds = %if.then - %call4 = call ptr @EVP_MD_CTX_new() #7 + %call4 = call ptr @EVP_MD_CTX_new() #8 store ptr %call4, ptr %handshake_dgst, align 8 %cmp9 = icmp eq ptr %call4, null br i1 %cmp9, label %if.then10, label %if.end11 if.then10: ; preds = %if.end - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 286, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 286, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 br label %return if.end11: ; preds = %if.end - %call12 = call ptr @ssl_handshake_md(ptr noundef nonnull %s) #7 + %call12 = call ptr @ssl_handshake_md(ptr noundef nonnull %s) #8 %cmp13 = icmp eq ptr %call12, null br i1 %cmp13, label %if.then14, label %if.end15 if.then14: ; preds = %if.end11 - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 293, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 297, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 293, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 297, ptr noundef null) #8 br label %return if.end15: ; preds = %if.end11 %2 = load ptr, ptr %handshake_dgst, align 8 - %call18 = call i32 @EVP_DigestInit_ex(ptr noundef %2, ptr noundef nonnull %call12, ptr noundef null) #7 + %call18 = call i32 @EVP_DigestInit_ex(ptr noundef %2, ptr noundef nonnull %call12, ptr noundef null) #8 %tobool.not = icmp eq i32 %call18, 0 br i1 %tobool.not, label %if.then23, label %lor.lhs.false lor.lhs.false: ; preds = %if.end15 %3 = load ptr, ptr %handshake_dgst, align 8 %4 = load ptr, ptr %hdata, align 8 - %call21 = call i32 @EVP_DigestUpdate(ptr noundef %3, ptr noundef %4, i64 noundef %call) #7 + %call21 = call i32 @EVP_DigestUpdate(ptr noundef %3, ptr noundef %4, i64 noundef %call) #8 %tobool22.not = icmp eq i32 %call21, 0 br i1 %tobool22.not, label %if.then23, label %if.end25 if.then23: ; preds = %lor.lhs.false, %if.end15 - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 298, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 298, ptr noundef nonnull @__func__.ssl3_digest_cached_records) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %return if.end25: ; preds = %lor.lhs.false, %entry @@ -552,7 +552,7 @@ if.end25: ; preds = %lor.lhs.false, %ent if.then27: ; preds = %if.end25 %handshake_buffer29 = getelementptr inbounds nuw i8, ptr %s, i64 352 %5 = load ptr, ptr %handshake_buffer29, align 8 - %call30 = call i32 @BIO_free(ptr noundef %5) #7 + %call30 = call i32 @BIO_free(ptr noundef %5) #8 store ptr null, ptr %handshake_buffer29, align 8 br label %return @@ -575,10 +575,10 @@ entry: %master_key = getelementptr inbounds nuw i8, ptr %session, i64 80 %master_key_length = getelementptr inbounds nuw i8, ptr %session, i64 8 %0 = load i64, ptr %master_key_length, align 8 - call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key, i64 noundef %0) #7 + call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key, i64 noundef %0) #8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %params, ptr noundef nonnull align 8 dereferenceable(40) %tmp, i64 40, i1 false) %arrayidx3 = getelementptr inbounds nuw i8, ptr %params, i64 40 - call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp4) #7 + call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp4) #8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %arrayidx3, ptr noundef nonnull align 8 dereferenceable(40) %tmp4, i64 40, i1 false) ret void } @@ -602,50 +602,50 @@ entry: if.end: ; preds = %entry %handshake_dgst = getelementptr inbounds nuw i8, ptr %s, i64 360 %0 = load ptr, ptr %handshake_dgst, align 8 - %call1 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef %0) #7 - %call2 = tail call i32 @EVP_MD_get_type(ptr noundef %call1) #7 + %call1 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef %0) #8 + %call2 = tail call i32 @EVP_MD_get_type(ptr noundef %call1) #8 %cmp.not = icmp eq i32 %call2, 114 br i1 %cmp.not, label %if.end4, label %if.then3 if.then3: ; preds = %if.end - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 332, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 324, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 332, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 324, ptr noundef null) #8 br label %return if.end4: ; preds = %if.end - %call5 = tail call ptr @EVP_MD_CTX_new() #7 + %call5 = tail call ptr @EVP_MD_CTX_new() #8 %cmp6 = icmp eq ptr %call5, null br i1 %cmp6, label %if.then7, label %if.end8 if.then7: ; preds = %if.end4 - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 338, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 338, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 br label %return if.end8: ; preds = %if.end4 %1 = load ptr, ptr %handshake_dgst, align 8 - %call11 = tail call i32 @EVP_MD_CTX_copy_ex(ptr noundef nonnull %call5, ptr noundef %1) #7 + %call11 = tail call i32 @EVP_MD_CTX_copy_ex(ptr noundef nonnull %call5, ptr noundef %1) #8 %tobool12.not = icmp eq i32 %call11, 0 br i1 %tobool12.not, label %if.then13, label %if.end14 if.then13: ; preds = %if.end8 - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 342, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 342, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %err if.end14: ; preds = %if.end8 - %call15 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef nonnull %call5) #7 - %call16 = tail call i32 @EVP_MD_get_size(ptr noundef %call15) #7 + %call15 = tail call ptr @EVP_MD_CTX_get0_md(ptr noundef nonnull %call5) #8 + %call16 = tail call i32 @EVP_MD_get_size(ptr noundef %call15) #8 %cmp17 = icmp slt i32 %call16, 0 br i1 %cmp17, label %if.then18, label %if.end19 if.then18: ; preds = %if.end14 - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 349, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 349, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %err if.end19: ; preds = %if.end14 @@ -659,34 +659,34 @@ if.then21: ; preds = %if.end19 %master_key.i = getelementptr inbounds nuw i8, ptr %2, i64 80 %master_key_length.i = getelementptr inbounds nuw i8, ptr %2, i64 8 %3 = load i64, ptr %master_key_length.i, align 8 - call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp.i, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key.i, i64 noundef %3) #7 + call void @OSSL_PARAM_construct_octet_string(ptr nonnull sret(%struct.ossl_param_st) align 8 %tmp.i, ptr noundef nonnull @.str.1, ptr noundef nonnull %master_key.i, i64 noundef %3) #8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %digest_cmd_params, ptr noundef nonnull align 8 dereferenceable(40) %tmp.i, i64 40, i1 false) %arrayidx3.i = getelementptr inbounds nuw i8, ptr %digest_cmd_params, i64 40 - call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %arrayidx3.i) #7 + call void @OSSL_PARAM_construct_end(ptr nonnull sret(%struct.ossl_param_st) align 8 %arrayidx3.i) #8 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %tmp.i) - %call22 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call5, ptr noundef nonnull %sender, i64 noundef %len) #7 + %call22 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call5, ptr noundef nonnull %sender, i64 noundef %len) #8 %cmp23 = icmp slt i32 %call22, 1 br i1 %cmp23, label %if.then30, label %lor.lhs.false lor.lhs.false: ; preds = %if.then21 - %call25 = call i32 @EVP_MD_CTX_set_params(ptr noundef nonnull %call5, ptr noundef nonnull %digest_cmd_params) #7 + %call25 = call i32 @EVP_MD_CTX_set_params(ptr noundef nonnull %call5, ptr noundef nonnull %digest_cmd_params) #8 %cmp26 = icmp slt i32 %call25, 1 br i1 %cmp26, label %if.then30, label %lor.lhs.false27 lor.lhs.false27: ; preds = %lor.lhs.false - %call28 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call5, ptr noundef %p, ptr noundef null) #7 + %call28 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call5, ptr noundef %p, ptr noundef null) #8 %cmp29 = icmp slt i32 %call28, 1 br i1 %cmp29, label %if.then30, label %err if.then30: ; preds = %lor.lhs.false27, %lor.lhs.false, %if.then21 - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 362, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 362, ptr noundef nonnull @__func__.ssl3_final_finish_mac) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %err err: ; preds = %if.end19, %if.then30, %lor.lhs.false27, %if.then18, %if.then13 %ret.0 = phi i32 [ 0, %if.then18 ], [ 0, %if.then30 ], [ %call16, %lor.lhs.false27 ], [ %call16, %if.end19 ], [ 0, %if.then13 ] - call void @EVP_MD_CTX_free(ptr noundef nonnull %call5) #7 + call void @EVP_MD_CTX_free(ptr noundef nonnull %call5) #8 %conv = zext nneg i32 %ret.0 to i64 br label %return @@ -710,7 +710,7 @@ define range(i32 0, 2) i32 @ssl3_generate_master_secret(ptr noundef %s, ptr noun entry: %buf = alloca [64 x i8], align 16 %n = alloca i32, align 4 - %call = tail call ptr @EVP_MD_CTX_new() #7 + %call = tail call ptr @EVP_MD_CTX_new() #8 %cmp = icmp eq ptr %call, null br i1 %cmp, label %if.then, label %for.cond.preheader @@ -721,9 +721,9 @@ for.cond.preheader: ; preds = %entry br label %for.body if.then: ; preds = %entry - tail call void @ERR_new() #7 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 395, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #7 - tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #7 + tail call void @ERR_new() #8 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 395, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #8 + tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 80, i32 noundef 524294, ptr noundef null) #8 br label %return for.body: ; preds = %for.cond.preheader, %if.end43 @@ -733,35 +733,35 @@ for.body: ; preds = %for.cond.preheader, %0 = load ptr, ptr %ctx2, align 8 %sha1 = getelementptr inbounds nuw i8, ptr %0, i64 264 %1 = load ptr, ptr %sha1, align 8 - %call3 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %1, ptr noundef null) #7 + %call3 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %1, ptr noundef null) #8 %cmp4 = icmp slt i32 %call3, 1 br i1 %cmp4, label %if.then42, label %lor.lhs.false lor.lhs.false: ; preds = %for.body %arrayidx = getelementptr inbounds nuw [3 x ptr], ptr @ssl3_generate_master_secret.salt, i64 0, i64 %indvars.iv %2 = load ptr, ptr %arrayidx, align 8 - %call7 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #8 - %call8 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %2, i64 noundef %call7) #7 + %call7 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #9 + %call8 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %2, i64 noundef %call7) #8 %cmp9 = icmp slt i32 %call8, 1 br i1 %cmp9, label %if.then42, label %lor.lhs.false10 lor.lhs.false10: ; preds = %lor.lhs.false - %call11 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #7 + %call11 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #8 %cmp12 = icmp slt i32 %call11, 1 br i1 %cmp12, label %if.then42, label %lor.lhs.false13 lor.lhs.false13: ; preds = %lor.lhs.false10 - %call15 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %client_random, i64 noundef 32) #7 + %call15 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %client_random, i64 noundef 32) #8 %cmp16 = icmp slt i32 %call15, 1 br i1 %cmp16, label %if.then42, label %lor.lhs.false17 lor.lhs.false17: ; preds = %lor.lhs.false13 - %call20 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %server_random, i64 noundef 32) #7 + %call20 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %server_random, i64 noundef 32) #8 %cmp21 = icmp slt i32 %call20, 1 br i1 %cmp21, label %if.then42, label %lor.lhs.false22 lor.lhs.false22: ; preds = %lor.lhs.false17 - %call23 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef nonnull %buf, ptr noundef nonnull %n) #7 + %call23 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef nonnull %buf, ptr noundef nonnull %n) #8 %cmp24 = icmp slt i32 %call23, 1 br i1 %cmp24, label %if.then42, label %lor.lhs.false25 @@ -769,31 +769,31 @@ lor.lhs.false25: ; preds = %lor.lhs.false22 %3 = load ptr, ptr %ctx2, align 8 %md5 = getelementptr inbounds nuw i8, ptr %3, i64 256 %4 = load ptr, ptr %md5, align 8 - %call28 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %4, ptr noundef null) #7 + %call28 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %call, ptr noundef %4, ptr noundef null) #8 %cmp29 = icmp slt i32 %call28, 1 br i1 %cmp29, label %if.then42, label %lor.lhs.false30 lor.lhs.false30: ; preds = %lor.lhs.false25 - %call31 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #7 + %call31 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef %p, i64 noundef %len) #8 %cmp32 = icmp slt i32 %call31, 1 br i1 %cmp32, label %if.then42, label %lor.lhs.false33 lor.lhs.false33: ; preds = %lor.lhs.false30 %5 = load i32, ptr %n, align 4 %conv = zext i32 %5 to i64 - %call35 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %buf, i64 noundef %conv) #7 + %call35 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %call, ptr noundef nonnull %buf, i64 noundef %conv) #8 %cmp36 = icmp slt i32 %call35, 1 br i1 %cmp36, label %if.then42, label %lor.lhs.false38 lor.lhs.false38: ; preds = %lor.lhs.false33 - %call39 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef %out.addr.029, ptr noundef nonnull %n) #7 + %call39 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %call, ptr noundef %out.addr.029, ptr noundef nonnull %n) #8 %cmp40 = icmp slt i32 %call39, 1 br i1 %cmp40, label %if.then42, label %if.end43 if.then42: ; preds = %lor.lhs.false38, %lor.lhs.false33, %lor.lhs.false30, %lor.lhs.false25, %lor.lhs.false22, %lor.lhs.false17, %lor.lhs.false13, %lor.lhs.false10, %lor.lhs.false, %for.body - call void @ERR_new() #7 - call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 412, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #7 - call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #7 + call void @ERR_new() #8 + call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 412, ptr noundef nonnull @__func__.ssl3_generate_master_secret) #8 + call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef nonnull %s, i32 noundef 80, i32 noundef 786691, ptr noundef null) #8 br label %for.end if.end43: ; preds = %lor.lhs.false38 @@ -809,8 +809,8 @@ for.end: ; preds = %if.end43, %if.then4 %ret_secret_size.028 = phi i64 [ %ret_secret_size.031, %if.then42 ], [ %add, %if.end43 ] %cmp126 = phi i1 [ true, %if.then42 ], [ false, %if.end43 ] %ret.0 = phi i32 [ 0, %if.then42 ], [ 1, %if.end43 ] - call void @EVP_MD_CTX_free(ptr noundef nonnull %call) #7 - call void @OPENSSL_cleanse(ptr noundef nonnull %buf, i64 noundef 64) #7 + call void @EVP_MD_CTX_free(ptr noundef nonnull %call) #8 + call void @OPENSSL_cleanse(ptr noundef nonnull %buf, i64 noundef 64) #8 br i1 %cmp126, label %return, label %if.then46 if.then46: ; preds = %for.end diff --git a/bench/openusd/optimized/openexr-c.ll b/bench/openusd/optimized/openexr-c.ll index f23f5c28088..7f42fd9cb4a 100644 --- a/bench/openusd/optimized/openexr-c.ll +++ b/bench/openusd/optimized/openexr-c.ll @@ -23917,7 +23917,7 @@ define internal fastcc i32 @internal_exr_apply_rle(ptr noundef captures(none) %0 %5 = getelementptr inbounds nuw i8, ptr %0, i64 192 %6 = tail call fastcc i32 @internal_encode_alloc_buffer(ptr noundef %0, i32 noundef 3, ptr noundef nonnull %4, ptr noundef nonnull %5, i64 noundef %3) %.not = icmp eq i32 %6, 0 - br i1 %.not, label %7, label %80 + br i1 %.not, label %7, label %81 7: ; preds = %1 %8 = load ptr, ptr %4, align 8 @@ -24025,19 +24025,19 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ br i1 %49, label %52, label %.preheader.i .preheader.i: ; preds = %.critedge.i, %.preheader71.i - %.158.lcssa102.i = phi ptr [ %.158.lcssa.i, %.critedge.i ], [ %.15872.i, %.preheader71.i ] - %.0.lcssa101.i = phi i8 [ %.0.lcssa.i, %.critedge.i ], [ 0, %.preheader71.i ] - %50 = icmp ult ptr %.158.lcssa102.i, %37 + %.158.lcssa104.i = phi ptr [ %.158.lcssa.i, %.critedge.i ], [ %.15872.i, %.preheader71.i ] + %.0.lcssa103.i = phi i8 [ %.0.lcssa.i, %.critedge.i ], [ 0, %.preheader71.i ] + %50 = icmp ult ptr %.158.lcssa104.i, %37 br i1 %50, label %.lr.ph83.i.preheader, label %.critedge2.i .lr.ph83.i.preheader: ; preds = %.preheader.i - %.182.i44 = add nuw nsw i8 %.0.lcssa101.i, 1 - %51 = getelementptr inbounds nuw i8, ptr %.158.lcssa102.i, i64 1 + %.182.i44 = add nuw nsw i8 %.0.lcssa103.i, 1 + %51 = getelementptr inbounds nuw i8, ptr %.158.lcssa104.i, i64 1 %.not.i27.not45 = icmp ult ptr %51, %37 br i1 %.not.i27.not45, label %.lr.ph.preheader, label %.thread .lr.ph.preheader: ; preds = %.lr.ph83.i.preheader - %.pre = load i8, ptr %.158.lcssa102.i, align 1 + %.pre = load i8, ptr %.158.lcssa104.i, align 1 br label %.lr.ph 52: ; preds = %.critedge.i @@ -24050,11 +24050,11 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ br label %.loopexit.i .thread: ; preds = %.lr.ph83.i.backedge, %.lr.ph83.i.preheader - %.36080.i.lcssa = phi ptr [ %.158.lcssa102.i, %.lr.ph83.i.preheader ], [ %58, %.lr.ph83.i.backedge ] + %.36080.i.lcssa = phi ptr [ %.158.lcssa104.i, %.lr.ph83.i.preheader ], [ %58, %.lr.ph83.i.backedge ] %.182.i.lcssa = phi i8 [ %.182.i44, %.lr.ph83.i.preheader ], [ %.182.i, %.lr.ph83.i.backedge ] %.lcssa = phi ptr [ %51, %.lr.ph83.i.preheader ], [ %66, %.lr.ph83.i.backedge ] %.old6.not.i29 = icmp eq i8 %.182.i.lcssa, 127 - %.36080.mux105.i31 = select i1 %.old6.not.i29, ptr %.36080.i.lcssa, ptr %.lcssa + %.36080.mux107.i31 = select i1 %.old6.not.i29, ptr %.36080.i.lcssa, ptr %.lcssa %.mux.i32 = tail call i8 @llvm.smin.i8(i8 %.182.i.lcssa, i8 126) br label %.critedge2.i @@ -24062,8 +24062,8 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ %57 = phi i8 [ %59, %.lr.ph83.i.backedge ], [ %.pre, %.lr.ph.preheader ] %58 = phi ptr [ %66, %.lr.ph83.i.backedge ], [ %51, %.lr.ph.preheader ] %.182.i48 = phi i8 [ %.182.i, %.lr.ph83.i.backedge ], [ %.182.i44, %.lr.ph.preheader ] - %.36080.i47 = phi ptr [ %58, %.lr.ph83.i.backedge ], [ %.158.lcssa102.i, %.lr.ph.preheader ] - %.1.in81.i46 = phi i8 [ %.182.i48, %.lr.ph83.i.backedge ], [ %.0.lcssa101.i, %.lr.ph.preheader ] + %.36080.i47 = phi ptr [ %58, %.lr.ph83.i.backedge ], [ %.158.lcssa104.i, %.lr.ph.preheader ] + %.1.in81.i46 = phi i8 [ %.182.i48, %.lr.ph83.i.backedge ], [ %.0.lcssa103.i, %.lr.ph.preheader ] %59 = load i8, ptr %58, align 1 %.not68.i = icmp eq i8 %57, %59 br i1 %.not68.i, label %60, label %67 @@ -24077,8 +24077,8 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ %63 = load i8, ptr %61, align 1 %64 = icmp eq i8 %57, %63 %65 = icmp eq i8 %.182.i48, 127 - %or.cond7.not108.i = select i1 %64, i1 true, i1 %65 - br i1 %or.cond7.not108.i, label %.critedge2.i, label %.lr.ph83.i.backedge + %or.cond7.not110.i = select i1 %64, i1 true, i1 %65 + br i1 %or.cond7.not110.i, label %.critedge2.i, label %.lr.ph83.i.backedge .lr.ph83.i.backedge: ; preds = %62, %67 %.182.i = add nuw nsw i8 %.182.i48, 1 @@ -24091,25 +24091,25 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ br i1 %.old6.not.i, label %.critedge2.i, label %.lr.ph83.i.backedge .critedge2.i: ; preds = %62, %67, %.thread, %.preheader.i - %.360.lcssa.i = phi ptr [ %.158.lcssa102.i, %.preheader.i ], [ %.36080.mux105.i31, %.thread ], [ %.36080.i47, %67 ], [ %.36080.i47, %62 ] - %.1.in.lcssa.i = phi i8 [ %.0.lcssa101.i, %.preheader.i ], [ %.mux.i32, %.thread ], [ %.1.in81.i46, %62 ], [ 126, %67 ] + %.360.lcssa.i = phi ptr [ %.158.lcssa104.i, %.preheader.i ], [ %.36080.mux107.i31, %.thread ], [ %.36080.i47, %67 ], [ %.36080.i47, %62 ] + %.1.in.lcssa.i = phi i8 [ %.0.lcssa103.i, %.preheader.i ], [ %.mux.i32, %.thread ], [ %.1.in81.i46, %62 ], [ 126, %67 ] %68 = xor i8 %.1.in.lcssa.i, -1 %69 = getelementptr inbounds i8, ptr %33, i64 %.055.i store i8 %68, ptr %69, align 1 %.392.i = add i64 %.055.i, 1 %70 = icmp ult ptr %.061.i, %.360.lcssa.i - br i1 %70, label %.lr.ph95.i, label %.loopexit.i + br i1 %70, label %.lr.ph95.preheader.i, label %.loopexit.i -.lr.ph95.i: ; preds = %.critedge2.i, %.lr.ph95.i - %.394.i = phi i64 [ %.3.i, %.lr.ph95.i ], [ %.392.i, %.critedge2.i ] - %.26393.i = phi ptr [ %71, %.lr.ph95.i ], [ %.061.i, %.critedge2.i ] - %71 = getelementptr inbounds nuw i8, ptr %.26393.i, i64 1 +.lr.ph95.preheader.i: ; preds = %.critedge2.i, %.lr.ph95.i + %.360.lcssa99.i = phi i64 [ %.3.i, %.lr.ph95.i ], [ %.392.i, %.critedge2.i ] + %71 = phi ptr [ %71, %.lr.ph95.i ], [ %.061.i, %.critedge2.i ] + %72 = getelementptr inbounds nuw i8, ptr %71, i64 1 %72 = load i8, ptr %.26393.i, align 1 %73 = getelementptr inbounds i8, ptr %33, i64 %.394.i store i8 %72, ptr %73, align 1 %.3.i = add i64 %.394.i, 1 - %74 = icmp ult ptr %71, %.360.lcssa.i - br i1 %74, label %.lr.ph95.i, label %.loopexit.i, !llvm.loop !122 + %exitcond.not.i = icmp ult ptr %71, %.360.lcssa.i + br i1 %exitcond.not.i, label %.lr.ph95.i, label %.loopexit.i, !llvm.loop !122 .loopexit.i: ; preds = %.lr.ph95.i, %.critedge2.i, %52 %.162.i = phi ptr [ %.158.lcssa.i, %52 ], [ %.061.i, %.critedge2.i ], [ %71, %.lr.ph95.i ] @@ -24121,22 +24121,22 @@ reorder_and_predict.exit: ; preds = %.lr.ph39.i, %7, %._ internal_rle_compress.exit: ; preds = %38, %.loopexit.i %.156.i = phi i64 [ %.2.i, %.loopexit.i ], [ %.055.i, %38 ] %.not26 = icmp ult i64 %.156.i, %3 - br i1 %.not26, label %78, label %75 + br i1 %.not26, label %79, label %76 -75: ; preds = %internal_rle_compress.exit - %76 = load ptr, ptr %32, align 8 - %77 = load ptr, ptr %9, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %76, ptr align 1 %77, i64 %3, i1 false) - br label %78 +76: ; preds = %internal_rle_compress.exit + %77 = load ptr, ptr %32, align 8 + %78 = load ptr, ptr %9, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr align 1 %78, i64 %3, i1 false) + br label %79 -78: ; preds = %75, %internal_rle_compress.exit - %.022 = phi i64 [ %3, %75 ], [ %.156.i, %internal_rle_compress.exit ] - %79 = getelementptr inbounds nuw i8, ptr %0, i64 168 - store i64 %.022, ptr %79, align 8 - br label %80 +79: ; preds = %76, %internal_rle_compress.exit + %.022 = phi i64 [ %3, %76 ], [ %.156.i, %internal_rle_compress.exit ] + %80 = getelementptr inbounds nuw i8, ptr %0, i64 168 + store i64 %.022, ptr %80, align 8 + br label %81 -80: ; preds = %1, %78 - %.0 = phi i32 [ 0, %78 ], [ %6, %1 ] +81: ; preds = %1, %79 + %.0 = phi i32 [ 0, %79 ], [ %6, %1 ] ret i32 %.0 } @@ -25385,7 +25385,7 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures %.pn = phi ptr [ %2, %4 ], [ %.259, %.loopexit ] %.055 = phi i64 [ 0, %4 ], [ %.2, %.loopexit ] %7 = icmp ult ptr %.061, %5 - br i1 %7, label %.preheader71, label %42 + br i1 %7, label %.preheader71, label %43 .preheader71: ; preds = %6 %.15872 = getelementptr inbounds nuw i8, ptr %.pn, i64 1 @@ -25418,9 +25418,9 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures br i1 %17, label %19, label %.preheader .preheader: ; preds = %.preheader71, %.critedge - %.158.lcssa102 = phi ptr [ %.158.lcssa, %.critedge ], [ %.15872, %.preheader71 ] - %.0.lcssa101 = phi i8 [ %.0.lcssa, %.critedge ], [ 0, %.preheader71 ] - %18 = icmp ult ptr %.158.lcssa102, %5 + %.158.lcssa104 = phi ptr [ %.158.lcssa, %.critedge ], [ %.15872, %.preheader71 ] + %.0.lcssa103 = phi i8 [ %.0.lcssa, %.critedge ], [ 0, %.preheader71 ] + %18 = icmp ult ptr %.158.lcssa104, %5 br i1 %18, label %.lr.ph83, label %.critedge2 19: ; preds = %.critedge @@ -25433,8 +25433,8 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures br label %.loopexit .lr.ph83: ; preds = %.preheader, %.lr.ph83.backedge - %.1.in81 = phi i8 [ %.182, %.lr.ph83.backedge ], [ %.0.lcssa101, %.preheader ] - %.36080 = phi ptr [ %24, %.lr.ph83.backedge ], [ %.158.lcssa102, %.preheader ] + %.1.in81 = phi i8 [ %.182, %.lr.ph83.backedge ], [ %.0.lcssa103, %.preheader ] + %.36080 = phi ptr [ %24, %.lr.ph83.backedge ], [ %.158.lcssa104, %.preheader ] %.182 = add nuw nsw i8 %.1.in81, 1 %24 = getelementptr inbounds nuw i8, ptr %.36080, i64 1 %.not = icmp uge ptr %24, %5 @@ -25455,51 +25455,51 @@ define internal fastcc i64 @internal_rle_compress(ptr noundef writeonly captures %31 = load i8, ptr %29, align 1 %32 = icmp eq i8 %26, %31 %33 = icmp eq i8 %.182, 127 - %or.cond7.not108 = select i1 %32, i1 true, i1 %33 - br i1 %or.cond7.not108, label %.critedge2, label %.lr.ph83.backedge + %or.cond7.not110 = select i1 %32, i1 true, i1 %33 + br i1 %or.cond7.not110, label %.critedge2, label %.lr.ph83.backedge .lr.ph83.backedge: ; preds = %30, %34 br label %.lr.ph83 34: ; preds = %28, %25, %.lr.ph83 %.old6.not = icmp eq i8 %.182, 127 - %brmerge104 = or i1 %.old6.not, %.not - br i1 %brmerge104, label %.critedge2.loopexit.split.loop.exit, label %.lr.ph83.backedge + %brmerge106 = or i1 %.old6.not, %.not + br i1 %brmerge106, label %.critedge2.loopexit.split.loop.exit, label %.lr.ph83.backedge .critedge2.loopexit.split.loop.exit: ; preds = %34 - %.36080.mux105.le = select i1 %.old6.not, ptr %.36080, ptr %24 + %.36080.mux107.le = select i1 %.old6.not, ptr %.36080, ptr %24 %.mux.le = tail call i8 @llvm.smin.i8(i8 %.182, i8 126) br label %.critedge2 .critedge2: ; preds = %.critedge2.loopexit.split.loop.exit, %30, %.preheader - %.360.lcssa = phi ptr [ %.158.lcssa102, %.preheader ], [ %.36080.mux105.le, %.critedge2.loopexit.split.loop.exit ], [ %.36080, %30 ] - %.1.in.lcssa = phi i8 [ %.0.lcssa101, %.preheader ], [ %.mux.le, %.critedge2.loopexit.split.loop.exit ], [ %.1.in81, %30 ] + %.360.lcssa = phi ptr [ %.158.lcssa104, %.preheader ], [ %.36080.mux107.le, %.critedge2.loopexit.split.loop.exit ], [ %.36080, %30 ] + %.1.in.lcssa = phi i8 [ %.0.lcssa103, %.preheader ], [ %.mux.le, %.critedge2.loopexit.split.loop.exit ], [ %.1.in81, %30 ] %35 = xor i8 %.1.in.lcssa, -1 %36 = getelementptr inbounds i8, ptr %0, i64 %.055 store i8 %35, ptr %36, align 1 %.392 = add i64 %.055, 1 %37 = icmp ult ptr %.061, %.360.lcssa - br i1 %37, label %.lr.ph95, label %.loopexit + br i1 %37, label %.lr.ph95.preheader, label %.loopexit -.lr.ph95: ; preds = %.critedge2, %.lr.ph95 - %.394 = phi i64 [ %.3, %.lr.ph95 ], [ %.392, %.critedge2 ] - %.26393 = phi ptr [ %38, %.lr.ph95 ], [ %.061, %.critedge2 ] - %38 = getelementptr inbounds nuw i8, ptr %.26393, i64 1 +.lr.ph95.preheader: ; preds = %.critedge2, %.lr.ph95 + %.360.lcssa99 = phi i64 [ %.3, %.lr.ph95 ], [ %.392, %.critedge2 ] + %38 = phi ptr [ %39, %.lr.ph95 ], [ %.061, %.critedge2 ] + %39 = getelementptr inbounds nuw i8, ptr %38, i64 1 %39 = load i8, ptr %.26393, align 1 %40 = getelementptr inbounds i8, ptr %0, i64 %.394 store i8 %39, ptr %40, align 1 %.3 = add i64 %.394, 1 - %41 = icmp ult ptr %38, %.360.lcssa - br i1 %41, label %.lr.ph95, label %.loopexit, !llvm.loop !122 + %exitcond.not = icmp ult ptr %38, %.360.lcssa + br i1 %exitcond.not, label %.lr.ph95, label %.loopexit, !llvm.loop !122 .loopexit: ; preds = %.lr.ph95, %.critedge2, %19 %.162 = phi ptr [ %.158.lcssa, %19 ], [ %.061, %.critedge2 ], [ %38, %.lr.ph95 ] %.259 = phi ptr [ %.158.lcssa, %19 ], [ %.360.lcssa, %.critedge2 ], [ %.360.lcssa, %.lr.ph95 ] %.2 = phi i64 [ %22, %19 ], [ %.392, %.critedge2 ], [ %.3, %.lr.ph95 ] %.not70 = icmp ult i64 %.2, %1 - br i1 %.not70, label %6, label %42, !llvm.loop !123 + br i1 %.not70, label %6, label %43, !llvm.loop !123 -42: ; preds = %.loopexit, %6 +43: ; preds = %.loopexit, %6 %.156 = phi i64 [ %.2, %.loopexit ], [ %.055, %6 ] ret i64 %.156 } diff --git a/bench/protobuf/optimized/padding_optimizer.ll b/bench/protobuf/optimized/padding_optimizer.ll index 0bdb4f49882..82144d7023a 100644 --- a/bench/protobuf/optimized/padding_optimizer.ll +++ b/bench/protobuf/optimized/padding_optimizer.ll @@ -686,8 +686,8 @@ for.inc: ; preds = %for.inc.sink.split, br i1 %cmp, label %invoke.cont, label %for.cond87.preheader, !llvm.loop !4 for.cond91.preheader: ; preds = %for.cond87.preheader, %for.end183 - %indvars.iv635 = phi i64 [ 0, %for.cond87.preheader ], [ %indvars.iv.next636, %for.end183 ] - %arrayidx94 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_1, i64 0, i64 %indvars.iv635 + %indvars.iv645 = phi i64 [ 0, %for.cond87.preheader ], [ %indvars.iv.next646, %for.end183 ] + %arrayidx94 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_1, i64 0, i64 %indvars.iv645 %29 = getelementptr i8, ptr %arrayidx94, i64 8 %arrayidx94.val549 = load ptr, ptr %arrayidx94, align 8 %arrayidx94.val62550 = load ptr, ptr %29, align 8 @@ -695,7 +695,7 @@ for.cond91.preheader: ; preds = %for.cond87.preheade br i1 %cmp96555.not, label %for.end122, label %for.body97.lr.ph for.body97.lr.ph: ; preds = %for.cond91.preheader - %arrayidx118 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv635 + %arrayidx118 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv645 br label %for.body97 for.body97: ; preds = %for.body97.lr.ph, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154 @@ -712,48 +712,48 @@ for.body97: ; preds = %for.body97.lr.ph, % br i1 %cmp105533, label %for.body107.lr.ph, label %for.end116 for.body107.lr.ph: ; preds = %for.body97 - %invariant.umin = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div.i144, i64 %indvars.iv.next624) + %30 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div.i144, i64 %indvars.iv.next624) br label %for.body107 for.body107: ; preds = %for.body107.lr.ph, %for.inc114 %indvars.iv625 = phi i64 [ %indvars.iv623, %for.body107.lr.ph ], [ %indvars.iv.next626, %for.inc114 ] - %30 = phi ptr [ null, %for.body107.lr.ph ], [ %37, %for.inc114 ] + %32 = phi ptr [ null, %for.body107.lr.ph ], [ %39, %for.inc114 ] %cond.i47.i542 = phi ptr [ null, %for.body107.lr.ph ], [ %cond.i47.i541, %for.inc114 ] - %31 = phi ptr [ null, %for.body107.lr.ph ], [ %38, %for.inc114 ] + %33 = phi ptr [ null, %for.body107.lr.ph ], [ %40, %for.inc114 ] %div.i530534 = phi double [ 0.000000e+00, %for.body107.lr.ph ], [ %div.i529, %for.inc114 ] %add.ptr.i145 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx94.val63, i64 %indvars.iv625 %fields_.i146 = getelementptr inbounds nuw i8, ptr %add.ptr.i145, i64 8 - %32 = load ptr, ptr %fields_.i146, align 8 + %34 = load ptr, ptr %fields_.i146, align 8 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i145, i64 16 - %33 = load ptr, ptr %_M_finish.i.i.i, align 8 - %cmp.i.i.i = icmp eq ptr %32, %33 + %35 = load ptr, ptr %_M_finish.i.i.i, align 8 + %cmp.i.i.i = icmp eq ptr %34, %35 br i1 %cmp.i.i.i, label %for.inc114, label %if.then.i if.then.i: ; preds = %for.body107 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %31 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %33 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %cond.i47.i542 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 3 %conv.i = uitofp i64 %sub.ptr.div.i.i to double - %34 = load double, ptr %add.ptr.i145, align 8 - %sub.ptr.lhs.cast.i7.i = ptrtoint ptr %33 to i64 - %sub.ptr.rhs.cast.i8.i = ptrtoint ptr %32 to i64 + %36 = load double, ptr %add.ptr.i145, align 8 + %sub.ptr.lhs.cast.i7.i = ptrtoint ptr %35 to i64 + %sub.ptr.rhs.cast.i8.i = ptrtoint ptr %34 to i64 %sub.ptr.sub.i9.i = sub i64 %sub.ptr.lhs.cast.i7.i, %sub.ptr.rhs.cast.i8.i %sub.ptr.div.i10.i = ashr exact i64 %sub.ptr.sub.i9.i, 3 %conv7.i = uitofp i64 %sub.ptr.div.i10.i to double - %mul8.i = fmul double %34, %conv7.i - %35 = tail call double @llvm.fmuladd.f64(double %div.i530534, double %conv.i, double %mul8.i) + %mul8.i = fmul double %36, %conv7.i + %37 = tail call double @llvm.fmuladd.f64(double %div.i530534, double %conv.i, double %mul8.i) %add.i = add nsw i64 %sub.ptr.div.i.i, %sub.ptr.div.i10.i %conv13.i = uitofp i64 %add.i to double - %div.i = fdiv double %35, %conv13.i - %sub.ptr.lhs.cast.i301 = ptrtoint ptr %30 to i64 + %div.i = fdiv double %37, %conv13.i + %sub.ptr.lhs.cast.i301 = ptrtoint ptr %32 to i64 %sub.ptr.sub.i303 = sub i64 %sub.ptr.lhs.cast.i301, %sub.ptr.lhs.cast.i.i %cmp.not.i = icmp ult i64 %sub.ptr.sub.i303, %sub.ptr.sub.i9.i br i1 %cmp.not.i, label %if.else68.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i: ; preds = %if.then.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %31, ptr align 8 %32, i64 %sub.ptr.sub.i9.i, i1 false) - %add.ptr50.i = getelementptr inbounds i8, ptr %31, i64 %sub.ptr.sub.i9.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %33, ptr align 8 %34, i64 %sub.ptr.sub.i9.i, i1 false) + %add.ptr50.i = getelementptr inbounds i8, ptr %33, i64 %sub.ptr.sub.i9.i br label %for.inc114 if.else68.i: ; preds = %if.then.i @@ -772,8 +772,8 @@ _ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.e %.sroa.speculated.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i10.i) %add.i.i = add nsw i64 %.sroa.speculated.i.i, %sub.ptr.div.i.i %cmp7.i.i = icmp ult i64 %add.i.i, %sub.ptr.div.i.i - %36 = tail call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) - %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %36 + %38 = tail call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) + %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %38 %cmp.not.i.i = icmp eq i64 %cond.i.i, 0 br i1 %cmp.not.i.i, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i, label %cond.true.i.i @@ -784,7 +784,7 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorIPKN6g _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i %cond.i47.i = phi ptr [ null, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i ], [ %call5.i.i.i.i315, %cond.true.i.i ] - %tobool.not.i.i.i.i.i.i.i.i.i51.i = icmp eq ptr %31, %cond.i47.i542 + %tobool.not.i.i.i.i.i.i.i.i.i51.i = icmp eq ptr %33, %cond.i47.i542 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51.i, label %invoke.cont83.i, label %if.then.i.i.i.i.i.i.i.i.i52.i if.then.i.i.i.i.i.i.i.i.i52.i: ; preds = %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i @@ -793,7 +793,7 @@ if.then.i.i.i.i.i.i.i.i.i52.i: ; preds = %_ZNSt12_Vector_base invoke.cont83.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i52.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i %add.ptr.i.i.i.i.i.i.i.i.i53.i = getelementptr inbounds i8, ptr %cond.i47.i, i64 %sub.ptr.sub.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i, ptr align 8 %32, i64 %sub.ptr.sub.i9.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i, ptr align 8 %34, i64 %sub.ptr.sub.i9.i, i1 false) %add.ptr.i.i.i.i.i.i.i.i59.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i53.i, i64 %sub.ptr.sub.i9.i %tobool.not.i.i312 = icmp eq ptr %cond.i47.i542, null br i1 %tobool.not.i.i312, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i, label %if.then.i68.i @@ -807,13 +807,13 @@ _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocate br label %for.inc114 for.inc114: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i, %for.body107, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i - %37 = phi ptr [ %30, %for.body107 ], [ %add.ptr105.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %30, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] + %39 = phi ptr [ %32, %for.body107 ], [ %add.ptr105.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %32, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] %cond.i47.i541 = phi ptr [ %cond.i47.i542, %for.body107 ], [ %cond.i47.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %cond.i47.i542, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] - %38 = phi ptr [ %31, %for.body107 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %add.ptr50.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] + %40 = phi ptr [ %33, %for.body107 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %add.ptr50.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] %div.i529 = phi double [ %div.i530534, %for.body107 ], [ %div.i, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i ], [ %div.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i ] %indvars.iv.next626 = add nuw i64 %indvars.iv625, 1 - %39 = icmp ult i64 %indvars.iv.next626, %invariant.umin - br i1 %39, label %for.body107, label %for.cond100.for.end116_crit_edge, !llvm.loop !6 + %exitcond.not = icmp ult i64 %indvars.iv.next626, %30 + br i1 %exitcond.not, label %for.body107, label %for.cond100.for.end116_crit_edge, !llvm.loop !6 lpad112.loopexit: ; preds = %cond.true.i.i %lpad.loopexit497 = landingpad { ptr, i32 } @@ -841,9 +841,9 @@ if.then.i.i.i.i150: ; preds = %lpad112 br label %ehcleanup for.cond100.for.end116_crit_edge: ; preds = %for.inc114 - store ptr %38, ptr %_M_finish.i.i147, align 8 + store ptr %40, ptr %_M_finish.i.i147, align 8 store ptr %cond.i47.i541, ptr %fields_2.i, align 8 - store ptr %37, ptr %_M_end_of_storage.i, align 8 + store ptr %39, ptr %_M_end_of_storage.i, align 8 br label %for.end116 for.end116: ; preds = %for.cond100.for.end116_crit_edge, %for.body97 @@ -872,76 +872,76 @@ _ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154: ; preds br i1 %cmp96, label %for.body97, label %for.end122, !llvm.loop !7 for.end122: ; preds = %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit154, %for.cond91.preheader - %arrayidx124 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv635 + %arrayidx124 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_4, i64 0, i64 %indvars.iv645 %arrayidx124.val72 = load ptr, ptr %arrayidx124, align 8 - %40 = getelementptr i8, ptr %arrayidx124, i64 8 - %arrayidx124.val = load ptr, ptr %40, align 8 + %41 = getelementptr i8, ptr %arrayidx124, i64 8 + %arrayidx124.val = load ptr, ptr %41, align 8 tail call fastcc void @_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEEEvT_SD_(ptr %arrayidx124.val72, ptr %arrayidx124.val) %cmp140587.not = icmp eq ptr %arrayidx124.val, %arrayidx124.val72 br i1 %cmp140587.not, label %for.end183, label %for.body141.lr.ph for.body141.lr.ph: ; preds = %for.end122 - %cmp171 = icmp eq i64 %indvars.iv635, 5 - %arrayidx179 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv635 + %cmp171 = icmp eq i64 %indvars.iv645, 5 + %arrayidx179 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv645 %. = select i1 %cmp171, double -1.000000e+00, double 0x41BFFFFFFF000000 br label %for.body141 for.body141: ; preds = %for.body141.lr.ph, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 %arrayidx124.val68 = phi ptr [ %arrayidx124.val, %for.body141.lr.ph ], [ %arrayidx124.val66, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] %arrayidx124.val67 = phi ptr [ %arrayidx124.val72, %for.body141.lr.ph ], [ %arrayidx124.val65, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] - %indvars.iv629 = phi i64 [ 0, %for.body141.lr.ph ], [ %indvars.iv.next630, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] + %indvars.iv641 = phi i64 [ 0, %for.body141.lr.ph ], [ %indvars.iv.next634, %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) %sub.ptr.lhs.cast.i159 = ptrtoint ptr %arrayidx124.val68 to i64 %sub.ptr.rhs.cast.i160 = ptrtoint ptr %arrayidx124.val67 to i64 %sub.ptr.sub.i161 = sub i64 %sub.ptr.lhs.cast.i159, %sub.ptr.rhs.cast.i160 %sub.ptr.div.i162 = ashr exact i64 %sub.ptr.sub.i161, 5 - %indvars.iv.next630 = add i64 %indvars.iv629, 2 + %indvars.iv.next634 = add i64 %indvars.iv629, 2 %cmp150562 = icmp ugt i64 %sub.ptr.div.i162, %indvars.iv629 br i1 %cmp150562, label %for.body155.lr.ph, label %for.end164 for.body155.lr.ph: ; preds = %for.body141 - %invariant.umin670 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div.i162, i64 %indvars.iv.next630) + %42 = tail call i64 @llvm.umin.i64(i64 %sub.ptr.div.i162, i64 %indvars.iv.next630) br label %for.body155 for.body155: ; preds = %for.body155.lr.ph, %for.inc162 - %indvars.iv631 = phi i64 [ %indvars.iv629, %for.body155.lr.ph ], [ %indvars.iv.next632, %for.inc162 ] - %41 = phi ptr [ null, %for.body155.lr.ph ], [ %48, %for.inc162 ] + %indvars.iv635 = phi i64 [ %indvars.iv629, %for.body155.lr.ph ], [ %indvars.iv.next636, %for.inc162 ] + %45 = phi ptr [ null, %for.body155.lr.ph ], [ %52, %for.inc162 ] %cond.i47.i383574 = phi ptr [ null, %for.body155.lr.ph ], [ %cond.i47.i383573, %for.inc162 ] - %42 = phi ptr [ null, %for.body155.lr.ph ], [ %49, %for.inc162 ] + %46 = phi ptr [ null, %for.body155.lr.ph ], [ %53, %for.inc162 ] %div.i183559563 = phi double [ 0.000000e+00, %for.body155.lr.ph ], [ %div.i183558, %for.inc162 ] - %add.ptr.i163 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx124.val67, i64 %indvars.iv631 + %add.ptr.i163 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx124.val67, i64 %indvars.iv635 %fields_.i164 = getelementptr inbounds nuw i8, ptr %add.ptr.i163, i64 8 - %43 = load ptr, ptr %fields_.i164, align 8 + %47 = load ptr, ptr %fields_.i164, align 8 %_M_finish.i.i.i165 = getelementptr inbounds nuw i8, ptr %add.ptr.i163, i64 16 - %44 = load ptr, ptr %_M_finish.i.i.i165, align 8 - %cmp.i.i.i166 = icmp eq ptr %43, %44 + %48 = load ptr, ptr %_M_finish.i.i.i165, align 8 + %cmp.i.i.i166 = icmp eq ptr %47, %48 br i1 %cmp.i.i.i166, label %for.inc162, label %if.then.i317 if.then.i317: ; preds = %for.body155 - %sub.ptr.lhs.cast.i.i170 = ptrtoint ptr %42 to i64 + %sub.ptr.lhs.cast.i.i170 = ptrtoint ptr %46 to i64 %sub.ptr.rhs.cast.i.i171 = ptrtoint ptr %cond.i47.i383574 to i64 %sub.ptr.sub.i.i172 = sub i64 %sub.ptr.lhs.cast.i.i170, %sub.ptr.rhs.cast.i.i171 %sub.ptr.div.i.i173 = ashr exact i64 %sub.ptr.sub.i.i172, 3 %conv.i174 = uitofp i64 %sub.ptr.div.i.i173 to double - %45 = load double, ptr %add.ptr.i163, align 8 - %sub.ptr.lhs.cast.i7.i175 = ptrtoint ptr %44 to i64 - %sub.ptr.rhs.cast.i8.i176 = ptrtoint ptr %43 to i64 + %49 = load double, ptr %add.ptr.i163, align 8 + %sub.ptr.lhs.cast.i7.i175 = ptrtoint ptr %48 to i64 + %sub.ptr.rhs.cast.i8.i176 = ptrtoint ptr %47 to i64 %sub.ptr.sub.i9.i177 = sub i64 %sub.ptr.lhs.cast.i7.i175, %sub.ptr.rhs.cast.i8.i176 %sub.ptr.div.i10.i178 = ashr exact i64 %sub.ptr.sub.i9.i177, 3 %conv7.i179 = uitofp i64 %sub.ptr.div.i10.i178 to double - %mul8.i180 = fmul double %45, %conv7.i179 - %46 = tail call double @llvm.fmuladd.f64(double %div.i183559563, double %conv.i174, double %mul8.i180) + %mul8.i180 = fmul double %49, %conv7.i179 + %50 = tail call double @llvm.fmuladd.f64(double %div.i183559563, double %conv.i174, double %mul8.i180) %add.i181 = add nsw i64 %sub.ptr.div.i.i173, %sub.ptr.div.i10.i178 %conv13.i182 = uitofp i64 %add.i181 to double - %div.i183 = fdiv double %46, %conv13.i182 - %sub.ptr.lhs.cast.i324 = ptrtoint ptr %41 to i64 + %div.i183 = fdiv double %50, %conv13.i182 + %sub.ptr.lhs.cast.i324 = ptrtoint ptr %45 to i64 %sub.ptr.sub.i326 = sub i64 %sub.ptr.lhs.cast.i324, %sub.ptr.lhs.cast.i.i170 %cmp.not.i327 = icmp ult i64 %sub.ptr.sub.i326, %sub.ptr.sub.i9.i177 br i1 %cmp.not.i327, label %if.else68.i368, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345: ; preds = %if.then.i317 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %42, ptr align 8 %43, i64 %sub.ptr.sub.i9.i177, i1 false) - %add.ptr50.i347 = getelementptr inbounds i8, ptr %42, i64 %sub.ptr.sub.i9.i177 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %46, ptr align 8 %47, i64 %sub.ptr.sub.i9.i177, i1 false) + %add.ptr50.i347 = getelementptr inbounds i8, ptr %46, i64 %sub.ptr.sub.i9.i177 br label %for.inc162 if.else68.i368: ; preds = %if.then.i317 @@ -960,8 +960,8 @@ _ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.e %.sroa.speculated.i.i375 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i173, i64 %sub.ptr.div.i10.i178) %add.i.i376 = add nsw i64 %.sroa.speculated.i.i375, %sub.ptr.div.i.i173 %cmp7.i.i377 = icmp ult i64 %add.i.i376, %sub.ptr.div.i.i173 - %47 = tail call i64 @llvm.umin.i64(i64 %add.i.i376, i64 1152921504606846975) - %cond.i.i378 = select i1 %cmp7.i.i377, i64 1152921504606846975, i64 %47 + %51 = tail call i64 @llvm.umin.i64(i64 %add.i.i376, i64 1152921504606846975) + %cond.i.i378 = select i1 %cmp7.i.i377, i64 1152921504606846975, i64 %51 %cmp.not.i.i379 = icmp eq i64 %cond.i.i378, 0 br i1 %cmp.not.i.i379, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382, label %cond.true.i.i380 @@ -972,7 +972,7 @@ cond.true.i.i380: ; preds = %_ZNKSt6vectorIPKN6g _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382: ; preds = %cond.true.i.i380, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i374 %cond.i47.i383 = phi ptr [ null, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i374 ], [ %call5.i.i.i.i402, %cond.true.i.i380 ] - %tobool.not.i.i.i.i.i.i.i.i.i51.i385 = icmp eq ptr %42, %cond.i47.i383574 + %tobool.not.i.i.i.i.i.i.i.i.i51.i385 = icmp eq ptr %46, %cond.i47.i383574 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51.i385, label %invoke.cont83.i387, label %if.then.i.i.i.i.i.i.i.i.i52.i386 if.then.i.i.i.i.i.i.i.i.i52.i386: ; preds = %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382 @@ -981,7 +981,7 @@ if.then.i.i.i.i.i.i.i.i.i52.i386: ; preds = %_ZNSt12_Vector_base invoke.cont83.i387: ; preds = %if.then.i.i.i.i.i.i.i.i.i52.i386, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i382 %add.ptr.i.i.i.i.i.i.i.i.i53.i388 = getelementptr inbounds i8, ptr %cond.i47.i383, i64 %sub.ptr.sub.i.i172 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i388, ptr align 8 %43, i64 %sub.ptr.sub.i9.i177, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i388, ptr align 8 %47, i64 %sub.ptr.sub.i9.i177, i1 false) %add.ptr.i.i.i.i.i.i.i.i59.i389 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i53.i388, i64 %sub.ptr.sub.i9.i177 %tobool.not.i.i395 = icmp eq ptr %cond.i47.i383574, null br i1 %tobool.not.i.i395, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397, label %if.then.i68.i396 @@ -995,13 +995,13 @@ _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocate br label %for.inc162 for.inc162: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345, %for.body155, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 - %48 = phi ptr [ %41, %for.body155 ], [ %add.ptr105.i398, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %41, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] + %52 = phi ptr [ %45, %for.body155 ], [ %add.ptr105.i398, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %45, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] %cond.i47.i383573 = phi ptr [ %cond.i47.i383574, %for.body155 ], [ %cond.i47.i383, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %cond.i47.i383574, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] - %49 = phi ptr [ %42, %for.body155 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i389, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %add.ptr50.i347, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] + %53 = phi ptr [ %46, %for.body155 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i389, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %add.ptr50.i347, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] %div.i183558 = phi double [ %div.i183559563, %for.body155 ], [ %div.i183, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i397 ], [ %div.i183, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i345 ] - %indvars.iv.next632 = add nuw i64 %indvars.iv631, 1 - %50 = icmp ult i64 %indvars.iv.next632, %invariant.umin670 - br i1 %50, label %for.body155, label %for.cond145.for.end164_crit_edge, !llvm.loop !8 + %indvars.iv.next636 = add nuw i64 %indvars.iv635, 1 + %exitcond643.not = icmp ult i64 %indvars.iv.next636, %42 + br i1 %exitcond643.not, label %for.body155, label %for.cond145.for.end164_crit_edge, !llvm.loop !8 lpad160.loopexit: ; preds = %cond.true.i.i380 %lpad.loopexit494 = landingpad { ptr, i32 } @@ -1029,9 +1029,9 @@ if.then.i.i.i.i188: ; preds = %lpad160 br label %ehcleanup for.cond145.for.end164_crit_edge: ; preds = %for.inc162 - store ptr %49, ptr %_M_finish.i.i169, align 8 + store ptr %53, ptr %_M_finish.i.i169, align 8 store ptr %cond.i47.i383573, ptr %fields_2.i168, align 8 - store ptr %48, ptr %_M_end_of_storage.i322, align 8 + store ptr %52, ptr %_M_end_of_storage.i322, align 8 br label %for.end164 for.end164: ; preds = %for.cond145.for.end164_crit_edge, %for.body141 @@ -1054,46 +1054,46 @@ if.then.i.i.i.i195: ; preds = %invoke.cont180 _ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196: ; preds = %invoke.cont180, %if.then.i.i.i.i195 %arrayidx124.val65 = load ptr, ptr %arrayidx124, align 8 - %arrayidx124.val66 = load ptr, ptr %40, align 8 + %arrayidx124.val66 = load ptr, ptr %41, align 8 %sub.ptr.lhs.cast.i155 = ptrtoint ptr %arrayidx124.val66 to i64 %sub.ptr.rhs.cast.i156 = ptrtoint ptr %arrayidx124.val65 to i64 %sub.ptr.sub.i157 = sub i64 %sub.ptr.lhs.cast.i155, %sub.ptr.rhs.cast.i156 %sub.ptr.div.i158 = ashr exact i64 %sub.ptr.sub.i157, 5 - %cmp140 = icmp ugt i64 %sub.ptr.div.i158, %indvars.iv.next630 + %cmp140 = icmp ugt i64 %sub.ptr.div.i158, %indvars.iv.next634 br i1 %cmp140, label %for.body141, label %for.end183, !llvm.loop !9 for.end183: ; preds = %_ZN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupD2Ev.exit196, %for.end122 - %arrayidx186 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv635 + %arrayidx186 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv645 %arrayidx186.val73 = load ptr, ptr %arrayidx186, align 8 - %51 = getelementptr i8, ptr %arrayidx186, i64 8 - %arrayidx186.val = load ptr, ptr %51, align 8 + %54 = getelementptr i8, ptr %arrayidx186, i64 8 + %arrayidx186.val = load ptr, ptr %54, align 8 tail call fastcc void @_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEEEvT_SD_(ptr %arrayidx186.val73, ptr %arrayidx186.val) - %indvars.iv.next636 = add nuw nsw i64 %indvars.iv635, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next636, 6 - br i1 %exitcond.not, label %for.end199, label %for.cond91.preheader, !llvm.loop !10 + %indvars.iv.next646 = add nuw nsw i64 %indvars.iv645, 1 + %exitcond648.not = icmp eq i64 %indvars.iv.next646, 6 + br i1 %exitcond648.not, label %for.end199, label %for.cond91.preheader, !llvm.loop !10 for.end199: ; preds = %for.end183 - %52 = load ptr, ptr %fields, align 8 - %53 = load ptr, ptr %_M_finish.i.i, align 8 - %tobool.not.i.i198 = icmp eq ptr %53, %52 + %55 = load ptr, ptr %fields, align 8 + %56 = load ptr, ptr %_M_finish.i.i, align 8 + %tobool.not.i.i198 = icmp eq ptr %56, %55 br i1 %tobool.not.i.i198, label %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit, label %invoke.cont.i.i invoke.cont.i.i: ; preds = %for.end199 - store ptr %52, ptr %_M_finish.i.i, align 8 + store ptr %55, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit _ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit: ; preds = %for.end199, %invoke.cont.i.i - %54 = phi ptr [ %53, %for.end199 ], [ %52, %invoke.cont.i.i ] + %57 = phi ptr [ %56, %for.end199 ], [ %55, %invoke.cont.i.i ] %_M_end_of_storage.i410 = getelementptr inbounds nuw i8, ptr %fields, i64 16 br label %for.cond205.preheader for.cond205.preheader: ; preds = %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit, %for.inc243 - %55 = phi ptr [ %54, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %64, %for.inc243 ] - %indvars.iv642 = phi i64 [ 0, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %indvars.iv.next643, %for.inc243 ] - %arrayidx208 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv642 + %58 = phi ptr [ %57, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %67, %for.inc243 ] + %indvars.iv653 = phi i64 [ 0, %_ZNSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE5clearEv.exit ], [ %indvars.iv.next654, %for.inc243 ] + %arrayidx208 = getelementptr inbounds nuw [6 x %"class.std::vector.14"], ptr %aligned_to_8, i64 0, i64 %indvars.iv653 %arrayidx208.val = load ptr, ptr %arrayidx208, align 8 - %56 = getelementptr i8, ptr %arrayidx208, i64 8 - %arrayidx208.val71 = load ptr, ptr %56, align 8 + %59 = getelementptr i8, ptr %arrayidx208, i64 8 + %arrayidx208.val71 = load ptr, ptr %59, align 8 %cmp210591.not = icmp eq ptr %arrayidx208.val71, %arrayidx208.val br i1 %cmp210591.not, label %for.inc243, label %for.body211.preheader @@ -1106,32 +1106,32 @@ for.body211.preheader: ; preds = %for.cond205.prehead br label %for.body211 for.body211: ; preds = %for.body211.preheader, %invoke.cont237 - %57 = phi ptr [ %55, %for.body211.preheader ], [ %63, %invoke.cont237 ] - %indvars.iv638 = phi i64 [ 0, %for.body211.preheader ], [ %indvars.iv.next639, %invoke.cont237 ] - %fields_.i205 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx208.val, i64 %indvars.iv638, i32 1 - %58 = load ptr, ptr %fields_.i205, align 8 + %60 = phi ptr [ %58, %for.body211.preheader ], [ %66, %invoke.cont237 ] + %indvars.iv649 = phi i64 [ 0, %for.body211.preheader ], [ %indvars.iv.next650, %invoke.cont237 ] + %fields_.i205 = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %arrayidx208.val, i64 %indvars.iv649, i32 1 + %61 = load ptr, ptr %fields_.i205, align 8 %_M_finish.i208 = getelementptr inbounds nuw i8, ptr %fields_.i205, i64 8 - %59 = load ptr, ptr %_M_finish.i208, align 8 - %60 = load ptr, ptr %fields, align 8 - %sub.ptr.lhs.cast.i.i209 = ptrtoint ptr %57 to i64 - %sub.ptr.rhs.cast.i.i210 = ptrtoint ptr %60 to i64 + %62 = load ptr, ptr %_M_finish.i208, align 8 + %63 = load ptr, ptr %fields, align 8 + %sub.ptr.lhs.cast.i.i209 = ptrtoint ptr %60 to i64 + %sub.ptr.rhs.cast.i.i210 = ptrtoint ptr %63 to i64 %sub.ptr.sub.i.i211 = sub i64 %sub.ptr.lhs.cast.i.i209, %sub.ptr.rhs.cast.i.i210 - %cmp.i.not.i404 = icmp eq ptr %58, %59 + %cmp.i.not.i404 = icmp eq ptr %61, %62 br i1 %cmp.i.not.i404, label %invoke.cont237, label %if.then.i405 if.then.i405: ; preds = %for.body211 - %sub.ptr.lhs.cast.i.i.i.i406 = ptrtoint ptr %59 to i64 - %sub.ptr.rhs.cast.i.i.i.i407 = ptrtoint ptr %58 to i64 + %sub.ptr.lhs.cast.i.i.i.i406 = ptrtoint ptr %62 to i64 + %sub.ptr.rhs.cast.i.i.i.i407 = ptrtoint ptr %61 to i64 %sub.ptr.sub.i.i.i.i408 = sub i64 %sub.ptr.lhs.cast.i.i.i.i406, %sub.ptr.rhs.cast.i.i.i.i407 %sub.ptr.div.i.i.i.i409 = ashr exact i64 %sub.ptr.sub.i.i.i.i408, 3 - %61 = load ptr, ptr %_M_end_of_storage.i410, align 8 - %sub.ptr.lhs.cast.i412 = ptrtoint ptr %61 to i64 + %64 = load ptr, ptr %_M_end_of_storage.i410, align 8 + %sub.ptr.lhs.cast.i412 = ptrtoint ptr %64 to i64 %sub.ptr.sub.i414 = sub i64 %sub.ptr.lhs.cast.i412, %sub.ptr.lhs.cast.i.i209 %cmp.not.i415 = icmp ult i64 %sub.ptr.sub.i414, %sub.ptr.sub.i.i.i.i408 br i1 %cmp.not.i415, label %if.else68.i456, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433 _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433: ; preds = %if.then.i405 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %57, ptr align 8 %58, i64 %sub.ptr.sub.i.i.i.i408, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %60, ptr align 8 %61, i64 %sub.ptr.sub.i.i.i.i408, i1 false) %.pre.i432 = load ptr, ptr %_M_finish.i.i, align 8 %add.ptr50.i435 = getelementptr inbounds i8, ptr %.pre.i432, i64 %sub.ptr.sub.i.i.i.i408 store ptr %add.ptr50.i435, ptr %_M_finish.i.i, align 8 @@ -1154,8 +1154,8 @@ _ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.e %.sroa.speculated.i.i463 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i459, i64 %sub.ptr.div.i.i.i.i409) %add.i.i464 = add nsw i64 %.sroa.speculated.i.i463, %sub.ptr.div.i.i.i459 %cmp7.i.i465 = icmp ult i64 %add.i.i464, %sub.ptr.div.i.i.i459 - %62 = tail call i64 @llvm.umin.i64(i64 %add.i.i464, i64 1152921504606846975) - %cond.i.i466 = select i1 %cmp7.i.i465, i64 1152921504606846975, i64 %62 + %65 = tail call i64 @llvm.umin.i64(i64 %add.i.i464, i64 1152921504606846975) + %cond.i.i466 = select i1 %cmp7.i.i465, i64 1152921504606846975, i64 %65 %cmp.not.i.i467 = icmp eq i64 %cond.i.i466, 0 br i1 %cmp.not.i.i467, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470, label %cond.true.i.i468 @@ -1166,22 +1166,22 @@ cond.true.i.i468: ; preds = %_ZNKSt6vectorIPKN6g _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470: ; preds = %cond.true.i.i468, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i462 %cond.i47.i471 = phi ptr [ null, %_ZNKSt6vectorIPKN6google8protobuf15FieldDescriptorESaIS4_EE12_M_check_lenEmPKc.exit.i462 ], [ %call5.i.i.i.i490, %cond.true.i.i468 ] - %tobool.not.i.i.i.i.i.i.i.i.i51.i473 = icmp eq ptr %57, %60 + %tobool.not.i.i.i.i.i.i.i.i.i51.i473 = icmp eq ptr %60, %63 br i1 %tobool.not.i.i.i.i.i.i.i.i.i51.i473, label %invoke.cont83.i475, label %if.then.i.i.i.i.i.i.i.i.i52.i474 if.then.i.i.i.i.i.i.i.i.i52.i474: ; preds = %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i47.i471, ptr align 8 %60, i64 %sub.ptr.sub.i.i211, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i47.i471, ptr align 8 %63, i64 %sub.ptr.sub.i.i211, i1 false) br label %invoke.cont83.i475 invoke.cont83.i475: ; preds = %if.then.i.i.i.i.i.i.i.i.i52.i474, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE11_M_allocateEm.exit.i470 %add.ptr.i.i.i.i.i.i.i.i.i53.i476 = getelementptr inbounds i8, ptr %cond.i47.i471, i64 %sub.ptr.sub.i.i211 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i476, ptr align 8 %58, i64 %sub.ptr.sub.i.i.i.i408, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i.i.i.i53.i476, ptr align 8 %61, i64 %sub.ptr.sub.i.i.i.i408, i1 false) %add.ptr.i.i.i.i.i.i.i.i59.i477 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i53.i476, i64 %sub.ptr.sub.i.i.i.i408 - %tobool.not.i.i483 = icmp eq ptr %60, null + %tobool.not.i.i483 = icmp eq ptr %63, null br i1 %tobool.not.i.i483, label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485, label %if.then.i68.i484 if.then.i68.i484: ; preds = %invoke.cont83.i475 - tail call void @_ZdlPv(ptr noundef nonnull %60) #26 + tail call void @_ZdlPv(ptr noundef nonnull %63) #26 br label %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485: ; preds = %if.then.i68.i484, %invoke.cont83.i475 @@ -1192,30 +1192,30 @@ _ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocate br label %invoke.cont237 invoke.cont237: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433, %for.body211, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 - %63 = phi ptr [ %add.ptr50.i435, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433 ], [ %57, %for.body211 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i477, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 ] - %indvars.iv.next639 = add nuw i64 %indvars.iv638, 1 - %exitcond641.not = icmp eq i64 %indvars.iv.next639, %umax - br i1 %exitcond641.not, label %for.inc243, label %for.body211, !llvm.loop !11 + %66 = phi ptr [ %add.ptr50.i435, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEEPS6_S6_ET0_T_SF_SE_RSaIT1_E.exit.i433 ], [ %60, %for.body211 ], [ %add.ptr.i.i.i.i.i.i.i.i59.i477, %_ZNSt12_Vector_baseIPKN6google8protobuf15FieldDescriptorESaIS4_EE13_M_deallocateEPS4_m.exit.i485 ] + %indvars.iv.next650 = add nuw i64 %indvars.iv649, 1 + %exitcond652.not = icmp eq i64 %indvars.iv.next650, %umax + br i1 %exitcond652.not, label %for.inc243, label %for.body211, !llvm.loop !11 for.inc243: ; preds = %invoke.cont237, %for.cond205.preheader - %64 = phi ptr [ %55, %for.cond205.preheader ], [ %63, %invoke.cont237 ] - %indvars.iv.next643 = add nuw nsw i64 %indvars.iv642, 1 - %exitcond645.not = icmp eq i64 %indvars.iv.next643, 6 - br i1 %exitcond645.not, label %arraydestroy.body, label %for.cond205.preheader, !llvm.loop !12 + %67 = phi ptr [ %58, %for.cond205.preheader ], [ %66, %invoke.cont237 ] + %indvars.iv.next654 = add nuw nsw i64 %indvars.iv653, 1 + %exitcond656.not = icmp eq i64 %indvars.iv.next654, 6 + br i1 %exitcond656.not, label %arraydestroy.body, label %for.cond205.preheader, !llvm.loop !12 arraydestroy.body: ; preds = %for.inc243, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit ], [ %arrayctor.end9, %for.inc243 ] %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -24 - %65 = load ptr, ptr %arraydestroy.element, align 8 + %68 = load ptr, ptr %arraydestroy.element, align 8 %_M_finish.i213 = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %66 = load ptr, ptr %_M_finish.i213, align 8 - %cmp.not3.i.i.i.i = icmp eq ptr %65, %66 + %69 = load ptr, ptr %_M_finish.i213, align 8 + %cmp.not3.i.i.i.i = icmp eq ptr %68, %69 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %arraydestroy.body, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i - %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ], [ %65, %arraydestroy.body ] - %67 = getelementptr i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %__first.addr.0.val.i.i.i.i = load ptr, ptr %67, align 8 + %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ], [ %68, %arraydestroy.body ] + %70 = getelementptr i8, ptr %__first.addr.04.i.i.i.i, i64 8 + %__first.addr.0.val.i.i.i.i = load ptr, ptr %70, align 8 %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %__first.addr.0.val.i.i.i.i, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i @@ -1225,7 +1225,7 @@ if.then.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i, i64 32 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %66 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %69 br i1 %cmp.not.i.i.i.i, label %invoke.contthread-pre-split.i, label %for.body.i.i.i.i, !llvm.loop !13 invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i @@ -1233,7 +1233,7 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i invoke.cont.i: ; preds = %invoke.contthread-pre-split.i, %arraydestroy.body - %this.val.i = phi ptr [ %this.val.pr.i, %invoke.contthread-pre-split.i ], [ %65, %arraydestroy.body ] + %this.val.i = phi ptr [ %this.val.pr.i, %invoke.contthread-pre-split.i ], [ %68, %arraydestroy.body ] %tobool.not.i.i.i = icmp eq ptr %this.val.i, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit, label %if.then.i.i.i214 @@ -1248,16 +1248,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body255: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231 %arraydestroy.elementPast256 = phi ptr [ %arraydestroy.element257, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231 ], [ %arrayctor.end2, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit ] %arraydestroy.element257 = getelementptr inbounds i8, ptr %arraydestroy.elementPast256, i64 -24 - %68 = load ptr, ptr %arraydestroy.element257, align 8 + %71 = load ptr, ptr %arraydestroy.element257, align 8 %_M_finish.i215 = getelementptr inbounds i8, ptr %arraydestroy.elementPast256, i64 -16 - %69 = load ptr, ptr %_M_finish.i215, align 8 - %cmp.not3.i.i.i.i216 = icmp eq ptr %68, %69 + %72 = load ptr, ptr %_M_finish.i215, align 8 + %cmp.not3.i.i.i.i216 = icmp eq ptr %71, %72 br i1 %cmp.not3.i.i.i.i216, label %invoke.cont.i227, label %for.body.i.i.i.i217 for.body.i.i.i.i217: ; preds = %arraydestroy.body255, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 - %__first.addr.04.i.i.i.i218 = phi ptr [ %incdec.ptr.i.i.i.i223, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 ], [ %68, %arraydestroy.body255 ] - %70 = getelementptr i8, ptr %__first.addr.04.i.i.i.i218, i64 8 - %__first.addr.0.val.i.i.i.i219 = load ptr, ptr %70, align 8 + %__first.addr.04.i.i.i.i218 = phi ptr [ %incdec.ptr.i.i.i.i223, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 ], [ %71, %arraydestroy.body255 ] + %73 = getelementptr i8, ptr %__first.addr.04.i.i.i.i218, i64 8 + %__first.addr.0.val.i.i.i.i219 = load ptr, ptr %73, align 8 %tobool.not.i.i.i.i.i.i.i.i.i220 = icmp eq ptr %__first.addr.0.val.i.i.i.i219, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i220, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222, label %if.then.i.i.i.i.i.i.i.i.i221 @@ -1267,7 +1267,7 @@ if.then.i.i.i.i.i.i.i.i.i221: ; preds = %for.body.i.i.i.i217 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222: ; preds = %if.then.i.i.i.i.i.i.i.i.i221, %for.body.i.i.i.i217 %incdec.ptr.i.i.i.i223 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i218, i64 32 - %cmp.not.i.i.i.i224 = icmp eq ptr %incdec.ptr.i.i.i.i223, %69 + %cmp.not.i.i.i.i224 = icmp eq ptr %incdec.ptr.i.i.i.i223, %72 br i1 %cmp.not.i.i.i.i224, label %invoke.contthread-pre-split.i225, label %for.body.i.i.i.i217, !llvm.loop !13 invoke.contthread-pre-split.i225: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i222 @@ -1275,7 +1275,7 @@ invoke.contthread-pre-split.i225: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i227 invoke.cont.i227: ; preds = %invoke.contthread-pre-split.i225, %arraydestroy.body255 - %this.val.i228 = phi ptr [ %this.val.pr.i226, %invoke.contthread-pre-split.i225 ], [ %68, %arraydestroy.body255 ] + %this.val.i228 = phi ptr [ %this.val.pr.i226, %invoke.contthread-pre-split.i225 ], [ %71, %arraydestroy.body255 ] %tobool.not.i.i.i229 = icmp eq ptr %this.val.i228, null br i1 %tobool.not.i.i.i229, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231, label %if.then.i.i.i230 @@ -1290,16 +1290,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body268: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit248 %arraydestroy.elementPast269 = phi ptr [ %arraydestroy.element270, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit248 ], [ %arrayctor.end, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit231 ] %arraydestroy.element270 = getelementptr inbounds i8, ptr %arraydestroy.elementPast269, i64 -24 - %71 = load ptr, ptr %arraydestroy.element270, align 8 + %74 = load ptr, ptr %arraydestroy.element270, align 8 %_M_finish.i232 = getelementptr inbounds i8, ptr %arraydestroy.elementPast269, i64 -16 - %72 = load ptr, ptr %_M_finish.i232, align 8 - %cmp.not3.i.i.i.i233 = icmp eq ptr %71, %72 + %75 = load ptr, ptr %_M_finish.i232, align 8 + %cmp.not3.i.i.i.i233 = icmp eq ptr %74, %75 br i1 %cmp.not3.i.i.i.i233, label %invoke.cont.i244, label %for.body.i.i.i.i234 for.body.i.i.i.i234: ; preds = %arraydestroy.body268, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 - %__first.addr.04.i.i.i.i235 = phi ptr [ %incdec.ptr.i.i.i.i240, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 ], [ %71, %arraydestroy.body268 ] - %73 = getelementptr i8, ptr %__first.addr.04.i.i.i.i235, i64 8 - %__first.addr.0.val.i.i.i.i236 = load ptr, ptr %73, align 8 + %__first.addr.04.i.i.i.i235 = phi ptr [ %incdec.ptr.i.i.i.i240, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 ], [ %74, %arraydestroy.body268 ] + %76 = getelementptr i8, ptr %__first.addr.04.i.i.i.i235, i64 8 + %__first.addr.0.val.i.i.i.i236 = load ptr, ptr %76, align 8 %tobool.not.i.i.i.i.i.i.i.i.i237 = icmp eq ptr %__first.addr.0.val.i.i.i.i236, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i237, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239, label %if.then.i.i.i.i.i.i.i.i.i238 @@ -1309,7 +1309,7 @@ if.then.i.i.i.i.i.i.i.i.i238: ; preds = %for.body.i.i.i.i234 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239: ; preds = %if.then.i.i.i.i.i.i.i.i.i238, %for.body.i.i.i.i234 %incdec.ptr.i.i.i.i240 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i235, i64 32 - %cmp.not.i.i.i.i241 = icmp eq ptr %incdec.ptr.i.i.i.i240, %72 + %cmp.not.i.i.i.i241 = icmp eq ptr %incdec.ptr.i.i.i.i240, %75 br i1 %cmp.not.i.i.i.i241, label %invoke.contthread-pre-split.i242, label %for.body.i.i.i.i234, !llvm.loop !13 invoke.contthread-pre-split.i242: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i239 @@ -1317,7 +1317,7 @@ invoke.contthread-pre-split.i242: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i244 invoke.cont.i244: ; preds = %invoke.contthread-pre-split.i242, %arraydestroy.body268 - %this.val.i245 = phi ptr [ %this.val.pr.i243, %invoke.contthread-pre-split.i242 ], [ %71, %arraydestroy.body268 ] + %this.val.i245 = phi ptr [ %this.val.pr.i243, %invoke.contthread-pre-split.i242 ], [ %74, %arraydestroy.body268 ] %tobool.not.i.i.i246 = icmp eq ptr %this.val.i245, null br i1 %tobool.not.i.i.i246, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit248, label %if.then.i.i.i247 @@ -1339,16 +1339,16 @@ ehcleanup: ; preds = %lpad.loopexit, %lpa arraydestroy.body249: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265, %ehcleanup %arraydestroy.elementPast250 = phi ptr [ %arrayctor.end9, %ehcleanup ], [ %arraydestroy.element251, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265 ] %arraydestroy.element251 = getelementptr inbounds i8, ptr %arraydestroy.elementPast250, i64 -24 - %74 = load ptr, ptr %arraydestroy.element251, align 8 + %77 = load ptr, ptr %arraydestroy.element251, align 8 %_M_finish.i249 = getelementptr inbounds i8, ptr %arraydestroy.elementPast250, i64 -16 - %75 = load ptr, ptr %_M_finish.i249, align 8 - %cmp.not3.i.i.i.i250 = icmp eq ptr %74, %75 + %78 = load ptr, ptr %_M_finish.i249, align 8 + %cmp.not3.i.i.i.i250 = icmp eq ptr %77, %78 br i1 %cmp.not3.i.i.i.i250, label %invoke.cont.i261, label %for.body.i.i.i.i251 for.body.i.i.i.i251: ; preds = %arraydestroy.body249, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 - %__first.addr.04.i.i.i.i252 = phi ptr [ %incdec.ptr.i.i.i.i257, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 ], [ %74, %arraydestroy.body249 ] - %76 = getelementptr i8, ptr %__first.addr.04.i.i.i.i252, i64 8 - %__first.addr.0.val.i.i.i.i253 = load ptr, ptr %76, align 8 + %__first.addr.04.i.i.i.i252 = phi ptr [ %incdec.ptr.i.i.i.i257, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 ], [ %77, %arraydestroy.body249 ] + %79 = getelementptr i8, ptr %__first.addr.04.i.i.i.i252, i64 8 + %__first.addr.0.val.i.i.i.i253 = load ptr, ptr %79, align 8 %tobool.not.i.i.i.i.i.i.i.i.i254 = icmp eq ptr %__first.addr.0.val.i.i.i.i253, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i254, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256, label %if.then.i.i.i.i.i.i.i.i.i255 @@ -1358,7 +1358,7 @@ if.then.i.i.i.i.i.i.i.i.i255: ; preds = %for.body.i.i.i.i251 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256: ; preds = %if.then.i.i.i.i.i.i.i.i.i255, %for.body.i.i.i.i251 %incdec.ptr.i.i.i.i257 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i252, i64 32 - %cmp.not.i.i.i.i258 = icmp eq ptr %incdec.ptr.i.i.i.i257, %75 + %cmp.not.i.i.i.i258 = icmp eq ptr %incdec.ptr.i.i.i.i257, %78 br i1 %cmp.not.i.i.i.i258, label %invoke.contthread-pre-split.i259, label %for.body.i.i.i.i251, !llvm.loop !13 invoke.contthread-pre-split.i259: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i256 @@ -1366,7 +1366,7 @@ invoke.contthread-pre-split.i259: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i261 invoke.cont.i261: ; preds = %invoke.contthread-pre-split.i259, %arraydestroy.body249 - %this.val.i262 = phi ptr [ %this.val.pr.i260, %invoke.contthread-pre-split.i259 ], [ %74, %arraydestroy.body249 ] + %this.val.i262 = phi ptr [ %this.val.pr.i260, %invoke.contthread-pre-split.i259 ], [ %77, %arraydestroy.body249 ] %tobool.not.i.i.i263 = icmp eq ptr %this.val.i262, null br i1 %tobool.not.i.i.i263, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265, label %if.then.i.i.i264 @@ -1381,16 +1381,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body262: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282 %arraydestroy.elementPast263 = phi ptr [ %arraydestroy.element264, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282 ], [ %arrayctor.end2, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit265 ] %arraydestroy.element264 = getelementptr inbounds i8, ptr %arraydestroy.elementPast263, i64 -24 - %77 = load ptr, ptr %arraydestroy.element264, align 8 + %80 = load ptr, ptr %arraydestroy.element264, align 8 %_M_finish.i266 = getelementptr inbounds i8, ptr %arraydestroy.elementPast263, i64 -16 - %78 = load ptr, ptr %_M_finish.i266, align 8 - %cmp.not3.i.i.i.i267 = icmp eq ptr %77, %78 + %81 = load ptr, ptr %_M_finish.i266, align 8 + %cmp.not3.i.i.i.i267 = icmp eq ptr %80, %81 br i1 %cmp.not3.i.i.i.i267, label %invoke.cont.i278, label %for.body.i.i.i.i268 for.body.i.i.i.i268: ; preds = %arraydestroy.body262, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 - %__first.addr.04.i.i.i.i269 = phi ptr [ %incdec.ptr.i.i.i.i274, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 ], [ %77, %arraydestroy.body262 ] - %79 = getelementptr i8, ptr %__first.addr.04.i.i.i.i269, i64 8 - %__first.addr.0.val.i.i.i.i270 = load ptr, ptr %79, align 8 + %__first.addr.04.i.i.i.i269 = phi ptr [ %incdec.ptr.i.i.i.i274, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 ], [ %80, %arraydestroy.body262 ] + %82 = getelementptr i8, ptr %__first.addr.04.i.i.i.i269, i64 8 + %__first.addr.0.val.i.i.i.i270 = load ptr, ptr %82, align 8 %tobool.not.i.i.i.i.i.i.i.i.i271 = icmp eq ptr %__first.addr.0.val.i.i.i.i270, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i271, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273, label %if.then.i.i.i.i.i.i.i.i.i272 @@ -1400,7 +1400,7 @@ if.then.i.i.i.i.i.i.i.i.i272: ; preds = %for.body.i.i.i.i268 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273: ; preds = %if.then.i.i.i.i.i.i.i.i.i272, %for.body.i.i.i.i268 %incdec.ptr.i.i.i.i274 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i269, i64 32 - %cmp.not.i.i.i.i275 = icmp eq ptr %incdec.ptr.i.i.i.i274, %78 + %cmp.not.i.i.i.i275 = icmp eq ptr %incdec.ptr.i.i.i.i274, %81 br i1 %cmp.not.i.i.i.i275, label %invoke.contthread-pre-split.i276, label %for.body.i.i.i.i268, !llvm.loop !13 invoke.contthread-pre-split.i276: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i273 @@ -1408,7 +1408,7 @@ invoke.contthread-pre-split.i276: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i278 invoke.cont.i278: ; preds = %invoke.contthread-pre-split.i276, %arraydestroy.body262 - %this.val.i279 = phi ptr [ %this.val.pr.i277, %invoke.contthread-pre-split.i276 ], [ %77, %arraydestroy.body262 ] + %this.val.i279 = phi ptr [ %this.val.pr.i277, %invoke.contthread-pre-split.i276 ], [ %80, %arraydestroy.body262 ] %tobool.not.i.i.i280 = icmp eq ptr %this.val.i279, null br i1 %tobool.not.i.i.i280, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282, label %if.then.i.i.i281 @@ -1423,16 +1423,16 @@ _ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2 arraydestroy.body275: ; preds = %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit299 %arraydestroy.elementPast276 = phi ptr [ %arraydestroy.element277, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit299 ], [ %arrayctor.end, %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit282 ] %arraydestroy.element277 = getelementptr inbounds i8, ptr %arraydestroy.elementPast276, i64 -24 - %80 = load ptr, ptr %arraydestroy.element277, align 8 + %83 = load ptr, ptr %arraydestroy.element277, align 8 %_M_finish.i283 = getelementptr inbounds i8, ptr %arraydestroy.elementPast276, i64 -16 - %81 = load ptr, ptr %_M_finish.i283, align 8 - %cmp.not3.i.i.i.i284 = icmp eq ptr %80, %81 + %84 = load ptr, ptr %_M_finish.i283, align 8 + %cmp.not3.i.i.i.i284 = icmp eq ptr %83, %84 br i1 %cmp.not3.i.i.i.i284, label %invoke.cont.i295, label %for.body.i.i.i.i285 for.body.i.i.i.i285: ; preds = %arraydestroy.body275, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 - %__first.addr.04.i.i.i.i286 = phi ptr [ %incdec.ptr.i.i.i.i291, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 ], [ %80, %arraydestroy.body275 ] - %82 = getelementptr i8, ptr %__first.addr.04.i.i.i.i286, i64 8 - %__first.addr.0.val.i.i.i.i287 = load ptr, ptr %82, align 8 + %__first.addr.04.i.i.i.i286 = phi ptr [ %incdec.ptr.i.i.i.i291, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 ], [ %83, %arraydestroy.body275 ] + %85 = getelementptr i8, ptr %__first.addr.04.i.i.i.i286, i64 8 + %__first.addr.0.val.i.i.i.i287 = load ptr, ptr %85, align 8 %tobool.not.i.i.i.i.i.i.i.i.i288 = icmp eq ptr %__first.addr.0.val.i.i.i.i287, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i288, label %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290, label %if.then.i.i.i.i.i.i.i.i.i289 @@ -1442,7 +1442,7 @@ if.then.i.i.i.i.i.i.i.i.i289: ; preds = %for.body.i.i.i.i285 _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290: ; preds = %if.then.i.i.i.i.i.i.i.i.i289, %for.body.i.i.i.i285 %incdec.ptr.i.i.i.i291 = getelementptr inbounds nuw i8, ptr %__first.addr.04.i.i.i.i286, i64 32 - %cmp.not.i.i.i.i292 = icmp eq ptr %incdec.ptr.i.i.i.i291, %81 + %cmp.not.i.i.i.i292 = icmp eq ptr %incdec.ptr.i.i.i.i291, %84 br i1 %cmp.not.i.i.i.i292, label %invoke.contthread-pre-split.i293, label %for.body.i.i.i.i285, !llvm.loop !13 invoke.contthread-pre-split.i293: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i290 @@ -1450,7 +1450,7 @@ invoke.contthread-pre-split.i293: ; preds = %_ZSt8_DestroyIN6goo br label %invoke.cont.i295 invoke.cont.i295: ; preds = %invoke.contthread-pre-split.i293, %arraydestroy.body275 - %this.val.i296 = phi ptr [ %this.val.pr.i294, %invoke.contthread-pre-split.i293 ], [ %80, %arraydestroy.body275 ] + %this.val.i296 = phi ptr [ %this.val.pr.i294, %invoke.contthread-pre-split.i293 ], [ %83, %arraydestroy.body275 ] %tobool.not.i.i.i297 = icmp eq ptr %this.val.i296, null br i1 %tobool.not.i.i.i297, label %_ZNSt6vectorIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESaIS5_EED2Ev.exit299, label %if.then.i.i.i298 diff --git a/bench/qemu/optimized/block_qed-table.ll b/bench/qemu/optimized/block_qed-table.ll index 10529197a51..4d472090bf5 100644 --- a/bench/qemu/optimized/block_qed-table.ll +++ b/bench/qemu/optimized/block_qed-table.ll @@ -239,13 +239,13 @@ for.body.preheader: ; preds = %trace_qed_write_tab for.body: ; preds = %for.body.preheader, %for.body %indvars.iv = phi i64 [ %8, %for.body.preheader ], [ %indvars.iv.next, %for.body ] %arrayidx = getelementptr [0 x i64], ptr %table, i64 0, i64 %indvars.iv - %11 = load i64, ptr %arrayidx, align 8 - %12 = sub nuw nsw i64 %indvars.iv, %9 - %arrayidx9 = getelementptr [0 x i64], ptr %call, i64 0, i64 %12 - store i64 %11, ptr %arrayidx9, align 8 + %13 = load i64, ptr %arrayidx, align 8 + %14 = sub nuw nsw i64 %indvars.iv, %9 + %arrayidx9 = getelementptr [0 x i64], ptr %call, i64 0, i64 %14 + store i64 %13, ptr %arrayidx9, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %cmp = icmp samesign ult i64 %indvars.iv.next, %10 - br i1 %cmp, label %for.body, label %for.end, !llvm.loop !5 + %lftr.wideiv = icmp samesign ult i64 %indvars.iv.next, %10 + br i1 %lftr.wideiv, label %for.body, label %for.end, !llvm.loop !5 for.end: ; preds = %for.body, %trace_qed_write_table.exit.for.end_crit_edge %conv10.pre-phi = phi i64 [ %.pre, %trace_qed_write_table.exit.for.end_crit_edge ], [ %9, %for.body ] @@ -253,50 +253,50 @@ for.end: ; preds = %for.body, %trace_qe %add12 = add i64 %mul11, %offset %table_lock = getelementptr inbounds nuw i8, ptr %s, i64 72 tail call void @qemu_co_mutex_unlock(ptr noundef nonnull %table_lock) #6 - %13 = load ptr, ptr %s, align 8 - %file = getelementptr inbounds nuw i8, ptr %13, i64 16840 - %14 = load ptr, ptr %file, align 8 + %15 = load ptr, ptr %s, align 8 + %file = getelementptr inbounds nuw i8, ptr %15, i64 16840 + %16 = load ptr, ptr %file, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %qiov.i) - %15 = getelementptr inbounds nuw i8, ptr %qiov.i, i64 16 + %17 = getelementptr inbounds nuw i8, ptr %qiov.i, i64 16 %local_iov.i = getelementptr inbounds nuw i8, ptr %qiov.i, i64 24 store ptr %local_iov.i, ptr %qiov.i, align 8 %niov.i = getelementptr inbounds nuw i8, ptr %qiov.i, i64 8 store i32 1, ptr %niov.i, align 8 - store i32 -1, ptr %15, align 8 + store i32 -1, ptr %17, align 8 store ptr %call, ptr %local_iov.i, align 8 %iov_len.i = getelementptr inbounds nuw i8, ptr %qiov.i, i64 32 store i64 %mul, ptr %iov_len.i, align 8 call void @assert_bdrv_graph_readable() #6 - %call.i = call i32 @bdrv_co_pwritev(ptr noundef %14, i64 noundef %add12, i64 noundef %mul, ptr noundef nonnull %qiov.i, i32 noundef 0) #6 + %call.i = call i32 @bdrv_co_pwritev(ptr noundef %16, i64 noundef %add12, i64 noundef %mul, ptr noundef nonnull %qiov.i, i32 noundef 0) #6 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %qiov.i) call void @qemu_co_mutex_lock(ptr noundef nonnull %table_lock) #6 %conv17 = zext i1 %flush to i32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %_now.i.i30) - %16 = load i32, ptr @trace_events_enabled_count, align 4 - %tobool.i.i31 = icmp ne i32 %16, 0 - %17 = load i16, ptr @_TRACE_QED_WRITE_TABLE_CB_DSTATE, align 2 - %tobool4.i.i32 = icmp ne i16 %17, 0 + %18 = load i32, ptr @trace_events_enabled_count, align 4 + %tobool.i.i31 = icmp ne i32 %18, 0 + %19 = load i16, ptr @_TRACE_QED_WRITE_TABLE_CB_DSTATE, align 2 + %tobool4.i.i32 = icmp ne i16 %19, 0 %or.cond.i.i33 = select i1 %tobool.i.i31, i1 %tobool4.i.i32, i1 false br i1 %or.cond.i.i33, label %land.lhs.true5.i.i34, label %trace_qed_write_table_cb.exit land.lhs.true5.i.i34: ; preds = %for.end - %18 = load i32, ptr @qemu_loglevel, align 4 - %and.i.i.i35 = and i32 %18, 32768 + %20 = load i32, ptr @qemu_loglevel, align 4 + %and.i.i.i35 = and i32 %20, 32768 %cmp.i.not.i.i36 = icmp eq i32 %and.i.i.i35, 0 br i1 %cmp.i.not.i.i36, label %trace_qed_write_table_cb.exit, label %if.then.i.i37 if.then.i.i37: ; preds = %land.lhs.true5.i.i34 - %19 = load i8, ptr @message_with_timestamp, align 1 - %tobool7.i.i38 = trunc i8 %19 to i1 + %21 = load i8, ptr @message_with_timestamp, align 1 + %tobool7.i.i38 = trunc i8 %21 to i1 br i1 %tobool7.i.i38, label %if.then8.i.i40, label %if.else.i.i39 if.then8.i.i40: ; preds = %if.then.i.i37 %call9.i.i41 = call i32 @gettimeofday(ptr noundef nonnull %_now.i.i30, ptr noundef null) #6 %call10.i.i42 = call i32 @qemu_get_thread_id() #6 - %20 = load i64, ptr %_now.i.i30, align 8 + %22 = load i64, ptr %_now.i.i30, align 8 %tv_usec.i.i43 = getelementptr inbounds nuw i8, ptr %_now.i.i30, i64 8 - %21 = load i64, ptr %tv_usec.i.i43, align 8 - call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.8, i32 noundef %call10.i.i42, i64 noundef %20, i64 noundef %21, ptr noundef nonnull %s, ptr noundef %table, i32 noundef range(i32 0, 2) %conv17, i32 noundef %call.i) #6 + %23 = load i64, ptr %tv_usec.i.i43, align 8 + call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.8, i32 noundef %call10.i.i42, i64 noundef %22, i64 noundef %23, ptr noundef nonnull %s, ptr noundef %table, i32 noundef range(i32 0, 2) %conv17, i32 noundef %call.i) #6 br label %trace_qed_write_table_cb.exit if.else.i.i39: ; preds = %if.then.i.i37 @@ -312,8 +312,8 @@ if.end: ; preds = %trace_qed_write_tab br i1 %flush, label %if.then21, label %if.end28 if.then21: ; preds = %if.end - %22 = load ptr, ptr %s, align 8 - %call23 = call i32 @bdrv_co_flush(ptr noundef %22) #6 + %24 = load ptr, ptr %s, align 8 + %call23 = call i32 @bdrv_co_flush(ptr noundef %24) #6 %cmp24 = icmp slt i32 %call23, 0 br i1 %cmp24, label %out, label %if.end28 diff --git a/bench/qemu/optimized/hw_riscv_numa.ll b/bench/qemu/optimized/hw_riscv_numa.ll index 35e5e549024..8ae50613b2b 100644 --- a/bench/qemu/optimized/hw_riscv_numa.ll +++ b/bench/qemu/optimized/hw_riscv_numa.ll @@ -371,16 +371,16 @@ if.end3: ; preds = %if.end3.lr.ph, %if. %indvars.iv = phi i64 [ 0, %if.end3.lr.ph ], [ %indvars.iv.next, %if.end3 ] %mem_offset.013 = phi i64 [ 0, %if.end3.lr.ph ], [ %add, %if.end3 ] %arrayidx = getelementptr [128 x %struct.NodeInfo], ptr %nodes, i64 0, i64 %indvars.iv - %4 = load i64, ptr %arrayidx, align 8 - %add = add i64 %4, %mem_offset.013 + %6 = load i64, ptr %arrayidx, align 8 + %add = add i64 %6, %mem_offset.013 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %cmp = icmp samesign uge i64 %indvars.iv.next, %3 + %exitcond = icmp samesign uge i64 %indvars.iv.next, %3 %cmp1 = icmp eq i64 %indvars.iv.next, %2 %or.cond = or i1 %cmp1, %cmp br i1 %or.cond, label %for.end.loopexit, label %if.end3, !llvm.loop !9 for.end.loopexit: ; preds = %if.end3 - %5 = select i1 %cmp1, i64 %add, i64 0 + %cmp1 = select i1 %cmp1, i64 %add, i64 0 br label %return return: ; preds = %for.cond.preheader, %for.end.loopexit, %entry, %numa_enabled.exit diff --git a/bench/qemu/optimized/qemu-io-cmds.ll b/bench/qemu/optimized/qemu-io-cmds.ll index 546a01fc81a..44443a3eef7 100644 --- a/bench/qemu/optimized/qemu-io-cmds.ll +++ b/bench/qemu/optimized/qemu-io-cmds.ll @@ -1587,10 +1587,10 @@ declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immar define internal fastcc void @dump_buffer(ptr noundef readonly captures(none) %buffer, i64 noundef %offset, i64 noundef %len) unnamed_addr #6 { entry: %cmp25.not = icmp eq i64 %len, 0 - br i1 %cmp25.not, label %for.end33, label %for.body + br i1 %cmp25.not, label %for.end33, label %for.body.preheader -for.body: ; preds = %entry, %for.end29 - %p.027 = phi ptr [ %incdec.ptr, %for.end29 ], [ %buffer, %entry ] +for.body.preheader: ; preds = %entry, %for.end29 + %0 = phi ptr [ %incdec.ptr, %for.end29 ], [ %buffer, %entry ] %i.026 = phi i64 [ %add32, %for.end29 ], [ 0, %entry ] %add = add i64 %i.026, %offset %call = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i64 noundef %add) @@ -1599,8 +1599,8 @@ for.body: ; preds = %entry, %for.end29 for.body6: ; preds = %for.body, %for.body6 %indvars.iv = phi i64 [ 0, %for.body ], [ %indvars.iv.next, %for.body6 ] %p.121 = phi ptr [ %p.027, %for.body ], [ %incdec.ptr, %for.body6 ] - %0 = load i8, ptr %p.121, align 1 - %conv7 = zext i8 %0 to i32 + %1 = load i8, ptr %p.121, align 1 + %conv7 = zext i8 %1 to i32 %call8 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.35, i32 noundef %conv7) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %incdec.ptr = getelementptr i8, ptr %p.121, i64 1 @@ -1618,19 +1618,19 @@ for.body19.lr.ph: ; preds = %for.body6 for.body19: ; preds = %for.body19.lr.ph, %for.body19 %indvars.iv29 = phi i64 [ 0, %for.body19.lr.ph ], [ %indvars.iv.next30, %for.body19 ] %s.024 = phi ptr [ %p.027, %for.body19.lr.ph ], [ %incdec.ptr28, %for.body19 ] - %1 = load ptr, ptr %call20, align 8 - %2 = load i8, ptr %s.024, align 1 - %idxprom = zext i8 %2 to i64 - %arrayidx = getelementptr i16, ptr %1, i64 %idxprom - %3 = load i16, ptr %arrayidx, align 2 - %4 = and i16 %3, 8 - %tobool.not = icmp eq i16 %4, 0 - %conv21 = zext i8 %2 to i32 + %2 = load ptr, ptr %call20, align 8 + %3 = load i8, ptr %s.024, align 1 + %idxprom = zext i8 %3 to i64 + %arrayidx = getelementptr i16, ptr %2, i64 %idxprom + %4 = load i16, ptr %arrayidx, align 2 + %5 = and i16 %4, 8 + %tobool.not = icmp eq i16 %5, 0 + %conv21 = zext i8 %3 to i32 %conv21.sink = select i1 %tobool.not, i32 46, i32 %conv21 %putchar18 = tail call i32 @putchar(i32 %conv21.sink) %indvars.iv.next30 = add nuw nsw i64 %indvars.iv29, 1 %incdec.ptr28 = getelementptr i8, ptr %s.024, i64 1 - %cmp11 = icmp samesign ult i64 %indvars.iv29, 15 + %exitcond.not = icmp samesign ult i64 %indvars.iv29, 15 %add15 = or disjoint i64 %i.026, %indvars.iv.next30 %cmp16 = icmp ult i64 %add15, %len %or.cond19 = select i1 %cmp11, i1 %cmp16, i1 false diff --git a/bench/qemu/optimized/sdhci-cmd.ll b/bench/qemu/optimized/sdhci-cmd.ll index a3ba9486513..1c97d43b2e4 100644 --- a/bench/qemu/optimized/sdhci-cmd.ll +++ b/bench/qemu/optimized/sdhci-cmd.ll @@ -72,9 +72,9 @@ while.body6.i: ; preds = %if.end13.i, %while. if.end13.i: ; preds = %while.body6.i %shr.i = lshr i32 %msg_frag.016.i, 8 - %dec.i = add nsw i32 %size.017.i, -1 - %cmp4.i = icmp sgt i32 %size.017.i, 1 - br i1 %cmp4.i, label %while.body6.i, label %while.cond.loopexit.i, !llvm.loop !7 + %lftr.wideiv = add nsw i32 %size.017.i, -1 + %exitcond = icmp sgt i32 %size.017.i, 1 + br i1 %exitcond, label %while.body6.i, label %while.cond.loopexit.i, !llvm.loop !7 read_fifo.exit: ; preds = %while.cond.loopexit.i, %while.body6.i, %entry %retval.0.i = phi i64 [ 0, %entry ], [ %inc.i, %while.body6.i ], [ %index.1.lcssa.i, %while.cond.loopexit.i ] diff --git a/bench/quantlib/optimized/date.ll b/bench/quantlib/optimized/date.ll index 074ea2a5bea..7f98c3f7bc1 100644 --- a/bench/quantlib/optimized/date.ll +++ b/bench/quantlib/optimized/date.ll @@ -10659,7 +10659,7 @@ entry: %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 376 %1 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !71 %cmp.i.i = icmp eq ptr %0, %1 - %.pre143.pre144.pre147.pre150 = load ptr, ptr %a_format, align 8, !tbaa !8 + %.pre155.pre156.pre159.pre162 = load ptr, ptr %a_format, align 8, !tbaa !8 br i1 %cmp.i.i, label %if.end, label %if.then if.then: ; preds = %entry @@ -10677,27 +10677,27 @@ if.then: ; preds = %entry store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE19long_weekday_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i, align 8 %_M_string_length.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %a_format, i64 8 %5 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pre143.pre144.pre147.pre150, i64 %5 + %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pre155.pre156.pre159.pre162, i64 %5 %cmp.i.not28.i.i.i = icmp samesign eq i64 %5, 0 br i1 %cmp.i.not28.i.i.i, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i, label %for.body13.preheader.i.i.i for.body13.preheader.i.i.i: ; preds = %if.then, %for.inc29.critedge.i.i.i - %OuterIt.sroa.0.029.i.i.i = phi ptr [ %incdec.ptr.i11.i.i.i, %for.inc29.critedge.i.i.i ], [ %.pre143.pre144.pre147.pre150, %if.then ] + %indvars.iv.in = phi ptr [ %incdec.ptr.i11.i.i.i, %for.inc29.critedge.i.i.i ], [ %.pre143.pre144.pre147.pre150, %if.then ] br label %for.body13.i.i.i for.body13.i.i.i: ; preds = %for.inc.i.i.i, %for.body13.preheader.i.i.i %SubstrIt.024.i.i.i.idx = phi i64 [ %SubstrIt.024.i.i.i.add, %for.inc.i.i.i ], [ 0, %for.body13.preheader.i.i.i ] %InnerIt.sroa.0.023.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %for.inc.i.i.i ], [ %OuterIt.sroa.0.029.i.i.i, %for.body13.preheader.i.i.i ] %SubstrIt.024.i.i.i.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE19long_weekday_formatE, i64 %SubstrIt.024.i.i.i.idx - %6 = load i8, ptr %InnerIt.sroa.0.023.i.i.i, align 1, !tbaa !13 - %7 = load i8, ptr %SubstrIt.024.i.i.i.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i = icmp eq i8 %6, %7 + %7 = load i8, ptr %InnerIt.sroa.0.023.i.i.i, align 1, !tbaa !13 + %8 = load i8, ptr %SubstrIt.024.i.i.i.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i = icmp eq i8 %7, %8 br i1 %cmp.i8.i.i.i, label %for.inc.i.i.i, label %for.end.i.i.i for.inc.i.i.i: ; preds = %for.body13.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i, i64 1 %SubstrIt.024.i.i.i.add = add nuw nsw i64 %SubstrIt.024.i.i.i.idx, 1 - %cmp.i7.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.i.i + %exitcond = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.i.i %cmp.not.i.i.i = icmp eq i64 %SubstrIt.024.i.i.i.add, 2 %or.cond.i.i.i = select i1 %cmp.i7.i.i.i, i1 true, i1 %cmp.not.i.i.i br i1 %or.cond.i.i.i, label %for.end.i.i.i, label %for.body13.i.i.i, !llvm.loop !100 @@ -10727,60 +10727,60 @@ if.then.i.i.i: ; preds = %_ZNK5boost9algorith %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i, align 8 tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i, ptr %3, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i, ptr %OuterIt.sroa.0.029.i.i.i, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i) - %.pre143.pre144.pre147.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 + %.pre155.pre156.pre159.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i, %if.then.i.i.i - %.pre143.pre144.pre147.pre = phi ptr [ %.pre143.pre144.pre147.pre150, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i ], [ %.pre143.pre144.pre147.pre150, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i ], [ %.pre143.pre144.pre147.pre.pre, %if.then.i.i.i ] + %.pre155.pre156.pre159.pre = phi ptr [ %.pre155.pre156.pre159.pre162, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i ], [ %.pre155.pre156.pre159.pre162, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i ], [ %.pre155.pre156.pre159.pre.pre, %if.then.i.i.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i) br label %if.end if.end: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit, %entry - %.pre143.pre144.pre147 = phi ptr [ %.pre143.pre144.pre147.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit ], [ %.pre143.pre144.pre147.pre150, %entry ] + %.pre155.pre156.pre159 = phi ptr [ %.pre155.pre156.pre159.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit ], [ %.pre155.pre156.pre159.pre162, %entry ] %m_weekday_short_names = getelementptr inbounds nuw i8, ptr %this, i64 344 - %8 = load ptr, ptr %m_weekday_short_names, align 8, !tbaa !71 + %9 = load ptr, ptr %m_weekday_short_names, align 8, !tbaa !71 %_M_finish.i.i7 = getelementptr inbounds nuw i8, ptr %this, i64 352 - %9 = load ptr, ptr %_M_finish.i.i7, align 8, !tbaa !71 - %cmp.i.i8 = icmp eq ptr %8, %9 + %10 = load ptr, ptr %_M_finish.i.i7, align 8, !tbaa !71 + %cmp.i.i8 = icmp eq ptr %9, %10 br i1 %cmp.i.i8, label %if.end10, label %if.then5 if.then5: ; preds = %if.end %tm_wday7 = getelementptr inbounds nuw i8, ptr %tm_value, i64 24 - %10 = load i32, ptr %tm_wday7, align 8, !tbaa !99 - %conv8 = sext i32 %10 to i64 - %add.ptr.i9 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %8, i64 %conv8 - %11 = load ptr, ptr %add.ptr.i9, align 8, !tbaa !8 + %11 = load i32, ptr %tm_wday7, align 8, !tbaa !99 + %conv8 = sext i32 %11 to i64 + %add.ptr.i9 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %9, i64 %conv8 + %12 = load ptr, ptr %add.ptr.i9, align 8, !tbaa !8 %_M_string_length.i.i.i.i.i.i.i.i.i.i.i14 = getelementptr inbounds nuw i8, ptr %add.ptr.i9, i64 8 - %12 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i14, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i.i.i.i.i.i15 = getelementptr inbounds nuw i8, ptr %11, i64 %12 + %13 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i14, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i.i.i.i.i.i15 = getelementptr inbounds nuw i8, ptr %12, i64 %13 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp1.i11) store ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE20short_weekday_formatE, ptr %agg.tmp1.i11, align 8 %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i16 = getelementptr inbounds nuw i8, ptr %agg.tmp1.i11, i64 8 store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE20short_weekday_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i16, align 8 %_M_string_length.i.i.i.i.i.i17 = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %13 = load i64, ptr %_M_string_length.i.i.i.i.i.i17, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i18 = getelementptr inbounds nuw i8, ptr %.pre143.pre144.pre147, i64 %13 - %cmp.i.not28.i.i.i19 = icmp samesign eq i64 %13, 0 + %14 = load i64, ptr %_M_string_length.i.i.i.i.i.i17, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i18 = getelementptr inbounds nuw i8, ptr %.pre155.pre156.pre159, i64 %14 + %cmp.i.not28.i.i.i19 = icmp samesign eq i64 %14, 0 br i1 %cmp.i.not28.i.i.i19, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35, label %for.body13.preheader.i.i.i22 for.body13.preheader.i.i.i22: ; preds = %if.then5, %for.inc29.critedge.i.i.i32 - %OuterIt.sroa.0.029.i.i.i23 = phi ptr [ %incdec.ptr.i11.i.i.i33, %for.inc29.critedge.i.i.i32 ], [ %.pre143.pre144.pre147, %if.then5 ] + %indvars.iv143.in = phi ptr [ %incdec.ptr.i11.i.i.i33, %for.inc29.critedge.i.i.i32 ], [ %.pre143.pre144.pre147, %if.then5 ] br label %for.body13.i.i.i24 for.body13.i.i.i24: ; preds = %for.inc.i.i.i40, %for.body13.preheader.i.i.i22 %SubstrIt.024.i.i.i25.idx = phi i64 [ %SubstrIt.024.i.i.i25.add, %for.inc.i.i.i40 ], [ 0, %for.body13.preheader.i.i.i22 ] %InnerIt.sroa.0.023.i.i.i26 = phi ptr [ %incdec.ptr.i.i.i.i41, %for.inc.i.i.i40 ], [ %OuterIt.sroa.0.029.i.i.i23, %for.body13.preheader.i.i.i22 ] %SubstrIt.024.i.i.i25.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE20short_weekday_formatE, i64 %SubstrIt.024.i.i.i25.idx - %14 = load i8, ptr %InnerIt.sroa.0.023.i.i.i26, align 1, !tbaa !13 - %15 = load i8, ptr %SubstrIt.024.i.i.i25.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i27 = icmp eq i8 %14, %15 + %16 = load i8, ptr %InnerIt.sroa.0.023.i.i.i26, align 1, !tbaa !13 + %17 = load i8, ptr %SubstrIt.024.i.i.i25.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i27 = icmp eq i8 %16, %17 br i1 %cmp.i8.i.i.i27, label %for.inc.i.i.i40, label %for.end.i.i.i28 for.inc.i.i.i40: ; preds = %for.body13.i.i.i24 %incdec.ptr.i.i.i.i41 = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i26, i64 1 %SubstrIt.024.i.i.i25.add = add nuw nsw i64 %SubstrIt.024.i.i.i25.idx, 1 - %cmp.i7.i.i.i43 = icmp eq ptr %incdec.ptr.i.i.i.i41, %add.ptr.i.i.i.i.i18 + %exitcond146 = icmp eq ptr %incdec.ptr.i.i.i.i41, %add.ptr.i.i.i.i.i18 %cmp.not.i.i.i44 = icmp eq i64 %SubstrIt.024.i.i.i25.add, 2 %or.cond.i.i.i45 = select i1 %cmp.i7.i.i.i43, i1 true, i1 %cmp.not.i.i.i44 br i1 %or.cond.i.i.i45, label %for.end.i.i.i28, label %for.body13.i.i.i24, !llvm.loop !100 @@ -10806,64 +10806,64 @@ _ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__n br i1 %cmp.i.i.i.not.i.i.i37, label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46, label %if.then.i.i.i38 if.then.i.i.i38: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36 - store ptr %11, ptr %agg.tmp3.i.i.i10, align 8 + store ptr %12, ptr %agg.tmp3.i.i.i10, align 8 %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i39 = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i10, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i15, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i39, align 8 - tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i11, ptr %11, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i15, ptr %OuterIt.sroa.0.029.i.i.i23, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i29, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i10) - %.pre143.pre144.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 + tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i11, ptr %12, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i15, ptr %OuterIt.sroa.0.029.i.i.i23, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i29, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i10) + %.pre155.pre156.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46 _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36, %if.then.i.i.i38 - %.pre143.pre144.pre = phi ptr [ %.pre143.pre144.pre147, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35 ], [ %.pre143.pre144.pre147, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36 ], [ %.pre143.pre144.pre.pre, %if.then.i.i.i38 ] + %.pre155.pre156.pre = phi ptr [ %.pre155.pre156.pre159, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i35 ], [ %.pre155.pre156.pre159, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i36 ], [ %.pre155.pre156.pre.pre, %if.then.i.i.i38 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i10) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i11) br label %if.end10 if.end10: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46, %if.end - %.pre143.pre144 = phi ptr [ %.pre143.pre144.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46 ], [ %.pre143.pre144.pre147, %if.end ] + %.pre155.pre156 = phi ptr [ %.pre155.pre156.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit46 ], [ %.pre155.pre156.pre159, %if.end ] %m_month_long_names = getelementptr inbounds nuw i8, ptr %this, i64 320 - %16 = load ptr, ptr %m_month_long_names, align 8, !tbaa !71 + %18 = load ptr, ptr %m_month_long_names, align 8, !tbaa !71 %_M_finish.i.i47 = getelementptr inbounds nuw i8, ptr %this, i64 328 - %17 = load ptr, ptr %_M_finish.i.i47, align 8, !tbaa !71 - %cmp.i.i48 = icmp eq ptr %16, %17 + %19 = load ptr, ptr %_M_finish.i.i47, align 8, !tbaa !71 + %cmp.i.i48 = icmp eq ptr %18, %19 br i1 %cmp.i.i48, label %if.end16, label %if.then12 if.then12: ; preds = %if.end10 %tm_mon = getelementptr inbounds nuw i8, ptr %tm_value, i64 16 - %18 = load i32, ptr %tm_mon, align 8, !tbaa !36 - %conv14 = sext i32 %18 to i64 - %add.ptr.i49 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %16, i64 %conv14 - %19 = load ptr, ptr %add.ptr.i49, align 8, !tbaa !8 + %20 = load i32, ptr %tm_mon, align 8, !tbaa !36 + %conv14 = sext i32 %20 to i64 + %add.ptr.i49 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %18, i64 %conv14 + %21 = load ptr, ptr %add.ptr.i49, align 8, !tbaa !8 %_M_string_length.i.i.i.i.i.i.i.i.i.i.i54 = getelementptr inbounds nuw i8, ptr %add.ptr.i49, i64 8 - %20 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i54, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i.i.i.i.i.i55 = getelementptr inbounds nuw i8, ptr %19, i64 %20 + %22 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i54, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i.i.i.i.i.i55 = getelementptr inbounds nuw i8, ptr %21, i64 %22 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp1.i51) store ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE17long_month_formatE, ptr %agg.tmp1.i51, align 8 %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i56 = getelementptr inbounds nuw i8, ptr %agg.tmp1.i51, i64 8 store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE17long_month_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i56, align 8 %_M_string_length.i.i.i.i.i.i57 = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %21 = load i64, ptr %_M_string_length.i.i.i.i.i.i57, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i58 = getelementptr inbounds nuw i8, ptr %.pre143.pre144, i64 %21 - %cmp.i.not28.i.i.i59 = icmp samesign eq i64 %21, 0 + %23 = load i64, ptr %_M_string_length.i.i.i.i.i.i57, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i58 = getelementptr inbounds nuw i8, ptr %.pre155.pre156, i64 %23 + %cmp.i.not28.i.i.i59 = icmp samesign eq i64 %23, 0 br i1 %cmp.i.not28.i.i.i59, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75, label %for.body13.preheader.i.i.i62 for.body13.preheader.i.i.i62: ; preds = %if.then12, %for.inc29.critedge.i.i.i72 - %OuterIt.sroa.0.029.i.i.i63 = phi ptr [ %incdec.ptr.i11.i.i.i73, %for.inc29.critedge.i.i.i72 ], [ %.pre143.pre144, %if.then12 ] + %indvars.iv147.in = phi ptr [ %incdec.ptr.i11.i.i.i73, %for.inc29.critedge.i.i.i72 ], [ %.pre143.pre144, %if.then12 ] br label %for.body13.i.i.i64 for.body13.i.i.i64: ; preds = %for.inc.i.i.i80, %for.body13.preheader.i.i.i62 %SubstrIt.024.i.i.i65.idx = phi i64 [ %SubstrIt.024.i.i.i65.add, %for.inc.i.i.i80 ], [ 0, %for.body13.preheader.i.i.i62 ] %InnerIt.sroa.0.023.i.i.i66 = phi ptr [ %incdec.ptr.i.i.i.i81, %for.inc.i.i.i80 ], [ %OuterIt.sroa.0.029.i.i.i63, %for.body13.preheader.i.i.i62 ] %SubstrIt.024.i.i.i65.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE17long_month_formatE, i64 %SubstrIt.024.i.i.i65.idx - %22 = load i8, ptr %InnerIt.sroa.0.023.i.i.i66, align 1, !tbaa !13 - %23 = load i8, ptr %SubstrIt.024.i.i.i65.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i67 = icmp eq i8 %22, %23 + %25 = load i8, ptr %InnerIt.sroa.0.023.i.i.i66, align 1, !tbaa !13 + %26 = load i8, ptr %SubstrIt.024.i.i.i65.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i67 = icmp eq i8 %25, %26 br i1 %cmp.i8.i.i.i67, label %for.inc.i.i.i80, label %for.end.i.i.i68 for.inc.i.i.i80: ; preds = %for.body13.i.i.i64 %incdec.ptr.i.i.i.i81 = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i66, i64 1 %SubstrIt.024.i.i.i65.add = add nuw nsw i64 %SubstrIt.024.i.i.i65.idx, 1 - %cmp.i7.i.i.i83 = icmp eq ptr %incdec.ptr.i.i.i.i81, %add.ptr.i.i.i.i.i58 + %exitcond150 = icmp eq ptr %incdec.ptr.i.i.i.i81, %add.ptr.i.i.i.i.i58 %cmp.not.i.i.i84 = icmp eq i64 %SubstrIt.024.i.i.i65.add, 2 %or.cond.i.i.i85 = select i1 %cmp.i7.i.i.i83, i1 true, i1 %cmp.not.i.i.i84 br i1 %or.cond.i.i.i85, label %for.end.i.i.i68, label %for.body13.i.i.i64, !llvm.loop !100 @@ -10889,64 +10889,64 @@ _ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__n br i1 %cmp.i.i.i.not.i.i.i77, label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86, label %if.then.i.i.i78 if.then.i.i.i78: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76 - store ptr %19, ptr %agg.tmp3.i.i.i50, align 8 + store ptr %21, ptr %agg.tmp3.i.i.i50, align 8 %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i79 = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i50, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i55, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i79, align 8 - tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i51, ptr %19, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i55, ptr %OuterIt.sroa.0.029.i.i.i63, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i69, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i50) - %.pre143.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 + tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i51, ptr %21, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i55, ptr %OuterIt.sroa.0.029.i.i.i63, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i69, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i50) + %.pre155.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86 _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76, %if.then.i.i.i78 - %.pre143.pre = phi ptr [ %.pre143.pre144, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75 ], [ %.pre143.pre144, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76 ], [ %.pre143.pre.pre, %if.then.i.i.i78 ] + %.pre155.pre = phi ptr [ %.pre155.pre156, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i75 ], [ %.pre155.pre156, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i76 ], [ %.pre155.pre.pre, %if.then.i.i.i78 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i50) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i51) br label %if.end16 if.end16: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86, %if.end10 - %.pre143 = phi ptr [ %.pre143.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86 ], [ %.pre143.pre144, %if.end10 ] + %.pre155 = phi ptr [ %.pre155.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit86 ], [ %.pre155.pre156, %if.end10 ] %m_month_short_names = getelementptr inbounds nuw i8, ptr %this, i64 296 - %24 = load ptr, ptr %m_month_short_names, align 8, !tbaa !71 + %27 = load ptr, ptr %m_month_short_names, align 8, !tbaa !71 %_M_finish.i.i87 = getelementptr inbounds nuw i8, ptr %this, i64 304 - %25 = load ptr, ptr %_M_finish.i.i87, align 8, !tbaa !71 - %cmp.i.i88 = icmp eq ptr %24, %25 + %28 = load ptr, ptr %_M_finish.i.i87, align 8, !tbaa !71 + %cmp.i.i88 = icmp eq ptr %27, %28 br i1 %cmp.i.i88, label %if.end23, label %if.then18 if.then18: ; preds = %if.end16 %tm_mon20 = getelementptr inbounds nuw i8, ptr %tm_value, i64 16 - %26 = load i32, ptr %tm_mon20, align 8, !tbaa !36 - %conv21 = sext i32 %26 to i64 - %add.ptr.i89 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %24, i64 %conv21 - %27 = load ptr, ptr %add.ptr.i89, align 8, !tbaa !8 + %29 = load i32, ptr %tm_mon20, align 8, !tbaa !36 + %conv21 = sext i32 %29 to i64 + %add.ptr.i89 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %27, i64 %conv21 + %30 = load ptr, ptr %add.ptr.i89, align 8, !tbaa !8 %_M_string_length.i.i.i.i.i.i.i.i.i.i.i94 = getelementptr inbounds nuw i8, ptr %add.ptr.i89, i64 8 - %28 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i94, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i.i.i.i.i.i95 = getelementptr inbounds nuw i8, ptr %27, i64 %28 + %31 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i94, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i.i.i.i.i.i95 = getelementptr inbounds nuw i8, ptr %30, i64 %31 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp1.i91) store ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE18short_month_formatE, ptr %agg.tmp1.i91, align 8 %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i96 = getelementptr inbounds nuw i8, ptr %agg.tmp1.i91, i64 8 store ptr getelementptr inbounds nuw (i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE18short_month_formatE, i64 2), ptr %agg.tmp.sroa.2.0.agg.tmp1.sroa_idx.i96, align 8 %_M_string_length.i.i.i.i.i.i97 = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %29 = load i64, ptr %_M_string_length.i.i.i.i.i.i97, align 8, !tbaa !12 - %add.ptr.i.i.i.i.i98 = getelementptr inbounds nuw i8, ptr %.pre143, i64 %29 - %cmp.i.not28.i.i.i99 = icmp samesign eq i64 %29, 0 + %32 = load i64, ptr %_M_string_length.i.i.i.i.i.i97, align 8, !tbaa !12 + %add.ptr.i.i.i.i.i98 = getelementptr inbounds nuw i8, ptr %.pre155, i64 %32 + %cmp.i.not28.i.i.i99 = icmp samesign eq i64 %32, 0 br i1 %cmp.i.not28.i.i.i99, label %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115, label %for.body13.preheader.i.i.i102 for.body13.preheader.i.i.i102: ; preds = %if.then18, %for.inc29.critedge.i.i.i112 - %OuterIt.sroa.0.029.i.i.i103 = phi ptr [ %incdec.ptr.i11.i.i.i113, %for.inc29.critedge.i.i.i112 ], [ %.pre143, %if.then18 ] + %indvars.iv151.in = phi ptr [ %incdec.ptr.i11.i.i.i113, %for.inc29.critedge.i.i.i112 ], [ %.pre143, %if.then18 ] br label %for.body13.i.i.i104 for.body13.i.i.i104: ; preds = %for.inc.i.i.i120, %for.body13.preheader.i.i.i102 %SubstrIt.024.i.i.i105.idx = phi i64 [ %SubstrIt.024.i.i.i105.add, %for.inc.i.i.i120 ], [ 0, %for.body13.preheader.i.i.i102 ] %InnerIt.sroa.0.023.i.i.i106 = phi ptr [ %incdec.ptr.i.i.i.i121, %for.inc.i.i.i120 ], [ %OuterIt.sroa.0.029.i.i.i103, %for.body13.preheader.i.i.i102 ] %SubstrIt.024.i.i.i105.ptr.ptr = getelementptr inbounds nuw i8, ptr @_ZN5boost9date_time10date_facetINS_9gregorian4dateEcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE18short_month_formatE, i64 %SubstrIt.024.i.i.i105.idx - %30 = load i8, ptr %InnerIt.sroa.0.023.i.i.i106, align 1, !tbaa !13 - %31 = load i8, ptr %SubstrIt.024.i.i.i105.ptr.ptr, align 1, !tbaa !13 - %cmp.i8.i.i.i107 = icmp eq i8 %30, %31 + %34 = load i8, ptr %InnerIt.sroa.0.023.i.i.i106, align 1, !tbaa !13 + %35 = load i8, ptr %SubstrIt.024.i.i.i105.ptr.ptr, align 1, !tbaa !13 + %cmp.i8.i.i.i107 = icmp eq i8 %34, %35 br i1 %cmp.i8.i.i.i107, label %for.inc.i.i.i120, label %for.end.i.i.i108 for.inc.i.i.i120: ; preds = %for.body13.i.i.i104 %incdec.ptr.i.i.i.i121 = getelementptr inbounds nuw i8, ptr %InnerIt.sroa.0.023.i.i.i106, i64 1 %SubstrIt.024.i.i.i105.add = add nuw nsw i64 %SubstrIt.024.i.i.i105.idx, 1 - %cmp.i7.i.i.i123 = icmp eq ptr %incdec.ptr.i.i.i.i121, %add.ptr.i.i.i.i.i98 + %exitcond154 = icmp eq ptr %incdec.ptr.i.i.i.i121, %add.ptr.i.i.i.i.i98 %cmp.not.i.i.i124 = icmp eq i64 %SubstrIt.024.i.i.i105.add, 2 %or.cond.i.i.i125 = select i1 %cmp.i7.i.i.i123, i1 true, i1 %cmp.not.i.i.i124 br i1 %or.cond.i.i.i125, label %for.end.i.i.i108, label %for.body13.i.i.i104, !llvm.loop !100 @@ -10972,21 +10972,21 @@ _ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__n br i1 %cmp.i.i.i.not.i.i.i117, label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126, label %if.then.i.i.i118 if.then.i.i.i118: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116 - store ptr %27, ptr %agg.tmp3.i.i.i90, align 8 + store ptr %30, ptr %agg.tmp3.i.i.i90, align 8 %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i119 = getelementptr inbounds nuw i8, ptr %agg.tmp3.i.i.i90, i64 8 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i95, ptr %Formatter.sroa.3.0.agg.tmp3.sroa_idx.i.i.i119, align 8 - tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i91, ptr %27, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i95, ptr %OuterIt.sroa.0.029.i.i.i103, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i109, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i90) + tail call void @_ZN5boost9algorithm6detail21find_format_all_impl2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_13first_finderFIPKcNS0_8is_equalEEENS1_13const_formatFINS_14iterator_rangeIN9__gnu_cxx17__normal_iteratorISB_S8_EEEEEENSF_INSH_IPcS8_EEEESJ_EEvRT_T0_T1_T2_T3_(ptr noundef nonnull align 8 dereferenceable(32) %a_format, ptr noundef nonnull byval(%"struct.boost::algorithm::detail::first_finderF") align 8 %agg.tmp1.i91, ptr %30, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i95, ptr %OuterIt.sroa.0.029.i.i.i103, ptr nonnull %InnerIt.sroa.0.0.lcssa.ph.i.i.i109, ptr noundef nonnull byval(%"class.boost::iterator_range") align 8 %agg.tmp3.i.i.i90) %.pre.pre = load ptr, ptr %a_format, align 8, !tbaa !8 br label %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126 _ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126: ; preds = %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116, %if.then.i.i.i118 - %.pre = phi ptr [ %.pre143, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115 ], [ %.pre143, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116 ], [ %.pre.pre, %if.then.i.i.i118 ] + %.pre = phi ptr [ %.pre155, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.thread.i.i115 ], [ %.pre155, %_ZNK5boost9algorithm6detail13first_finderFIPKcNS0_8is_equalEEclIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEENS_14iterator_rangeIT_EESJ_SJ_.exit.i.i116 ], [ %.pre.pre, %if.then.i.i.i118 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %agg.tmp3.i.i.i90) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp1.i91) br label %if.end23 if.end23: ; preds = %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126, %if.end16 - %32 = phi ptr [ %.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126 ], [ %.pre143, %if.end16 ] + %36 = phi ptr [ %.pre, %_ZN5boost9algorithm11replace_allINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA3_cS7_EEvRT_RKT0_RKT1_.exit126 ], [ %.pre155, %if.end16 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp) #29 %_M_ios_locale.i = getelementptr inbounds nuw i8, ptr %a_ios, i64 208 call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %_M_ios_locale.i) #29 @@ -10995,9 +10995,9 @@ if.end23: ; preds = %_ZN5boost9algorithm invoke.cont: ; preds = %if.end23 %_M_string_length.i = getelementptr inbounds nuw i8, ptr %a_format, i64 8 - %33 = load i64, ptr %_M_string_length.i, align 8, !tbaa !12 - %add.ptr = getelementptr inbounds nuw i8, ptr %32, i64 %33 - %call28 = invoke { ptr, i8 } @_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_(ptr noundef nonnull align 8 dereferenceable(12) %call25, ptr %next.coerce0, i8 %next.coerce1, ptr noundef nonnull align 8 dereferenceable(216) %a_ios, i8 noundef signext %fill_char, ptr noundef nonnull %tm_value, ptr noundef %32, ptr noundef %add.ptr) + %37 = load i64, ptr %_M_string_length.i, align 8, !tbaa !12 + %add.ptr = getelementptr inbounds nuw i8, ptr %36, i64 %37 + %call28 = invoke { ptr, i8 } @_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_(ptr noundef nonnull align 8 dereferenceable(12) %call25, ptr %next.coerce0, i8 %next.coerce1, ptr noundef nonnull align 8 dereferenceable(216) %a_ios, i8 noundef signext %fill_char, ptr noundef nonnull %tm_value, ptr noundef %36, ptr noundef %add.ptr) to label %invoke.cont27 unwind label %lpad invoke.cont27: ; preds = %invoke.cont @@ -11006,11 +11006,11 @@ invoke.cont27: ; preds = %invoke.cont ret { ptr, i8 } %call28 lpad: ; preds = %invoke.cont, %if.end23 - %34 = landingpad { ptr, i32 } + %38 = landingpad { ptr, i32 } cleanup call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp) #29 - resume { ptr, i32 } %34 + resume { ptr, i32 } %38 } ; Function Attrs: mustprogress uwtable diff --git a/bench/raylib/optimized/rcore.ll b/bench/raylib/optimized/rcore.ll index f743821f1e9..6e09650e10d 100644 --- a/bench/raylib/optimized/rcore.ll +++ b/bench/raylib/optimized/rcore.ll @@ -21034,119 +21034,119 @@ define void @rlLoadRenderBatch(ptr dead_on_unwind noalias writable writeonly sre %smax = tail call i32 @llvm.smax.i32(i32 %9, i32 1) %smax110 = tail call i32 @llvm.smax.i32(i32 %12, i32 1) %smax116 = tail call i32 @llvm.smax.i32(i32 %15, i32 1) - %wide.trip.count125 = zext nneg i32 %1 to i64 + %smax122 = zext nneg i32 %1 to i64 %wide.trip.count = zext nneg i32 %smax to i64 %wide.trip.count111 = zext nneg i32 %smax110 to i64 %wide.trip.count117 = zext nneg i32 %smax116 to i64 - br label %21 + br label %23 -21: ; preds = %.lr.ph99, %._crit_edge - %indvars.iv122 = phi i64 [ 0, %.lr.ph99 ], [ %indvars.iv.next123, %._crit_edge ] - %22 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122 - store i32 %2, ptr %22, align 8 - %23 = tail call noalias ptr @malloc(i64 noundef %11) #56 - %24 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 1 +23: ; preds = %.lr.ph99, %._crit_edge + %indvars.iv124 = phi i64 [ 0, %.lr.ph99 ], [ %indvars.iv.next125, %._crit_edge ] + %24 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124 + store i32 %2, ptr %24, align 8 + %25 = tail call noalias ptr @malloc(i64 noundef %11) #56 + %26 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 1 store ptr %23, ptr %24, align 8 %25 = tail call noalias ptr @malloc(i64 noundef %14) #56 %26 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 2 store ptr %25, ptr %26, align 8 %27 = tail call noalias ptr @malloc(i64 noundef %16) #56 - %28 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 3 + %28 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 3 store ptr %27, ptr %28, align 8 %29 = tail call noalias ptr @malloc(i64 noundef %19) #56 - %30 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv122, i32 4 + %30 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv124, i32 4 store ptr %29, ptr %30, align 8 br i1 %20, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %21, %.lr.ph - %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %21 ] - %31 = load ptr, ptr %24, align 8 - %32 = getelementptr inbounds nuw float, ptr %31, i64 %indvars.iv - store float 0.000000e+00, ptr %32, align 4 +.lr.ph: ; preds = %23, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %23 ] + %33 = load ptr, ptr %26, align 8 + %34 = getelementptr inbounds nuw float, ptr %33, i64 %indvars.iv + store float 0.000000e+00, ptr %34, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.lr.ph91, label %.lr.ph .lr.ph91: ; preds = %.lr.ph, %.lr.ph91 %indvars.iv107 = phi i64 [ %indvars.iv.next108, %.lr.ph91 ], [ 0, %.lr.ph ] - %33 = load ptr, ptr %26, align 8 - %34 = getelementptr inbounds nuw float, ptr %33, i64 %indvars.iv107 - store float 0.000000e+00, ptr %34, align 4 + %35 = load ptr, ptr %26, align 8 + %36 = getelementptr inbounds nuw float, ptr %35, i64 %indvars.iv107 + store float 0.000000e+00, ptr %36, align 4 %indvars.iv.next108 = add nuw nsw i64 %indvars.iv107, 1 %exitcond112.not = icmp eq i64 %indvars.iv.next108, %wide.trip.count111 br i1 %exitcond112.not, label %.lr.ph93, label %.lr.ph91 .lr.ph93: ; preds = %.lr.ph91, %.lr.ph93 %indvars.iv113 = phi i64 [ %indvars.iv.next114, %.lr.ph93 ], [ 0, %.lr.ph91 ] - %35 = load ptr, ptr %28, align 8 - %36 = getelementptr inbounds nuw i8, ptr %35, i64 %indvars.iv113 - store i8 0, ptr %36, align 1 + %37 = load ptr, ptr %28, align 8 + %38 = getelementptr inbounds nuw i8, ptr %37, i64 %indvars.iv113 + store i8 0, ptr %38, align 1 %indvars.iv.next114 = add nuw nsw i64 %indvars.iv113, 1 %exitcond118.not = icmp eq i64 %indvars.iv.next114, %wide.trip.count117 br i1 %exitcond118.not, label %.lr.ph96, label %.lr.ph93 .lr.ph96: ; preds = %.lr.ph93, %.lr.ph96 %indvars.iv119 = phi i64 [ %indvars.iv.next120, %.lr.ph96 ], [ 0, %.lr.ph93 ] - %.08194 = phi i32 [ %58, %.lr.ph96 ], [ 0, %.lr.ph93 ] - %37 = shl nsw i32 %.08194, 2 - %38 = load ptr, ptr %30, align 8 - %39 = getelementptr inbounds nuw i32, ptr %38, i64 %indvars.iv119 - store i32 %37, ptr %39, align 4 - %40 = or disjoint i32 %37, 1 - %41 = load ptr, ptr %30, align 8 - %42 = or disjoint i64 %indvars.iv119, 1 - %43 = getelementptr inbounds nuw i32, ptr %41, i64 %42 - store i32 %40, ptr %43, align 4 - %44 = or disjoint i32 %37, 2 - %45 = load ptr, ptr %30, align 8 - %46 = getelementptr inbounds nuw i32, ptr %45, i64 %indvars.iv119 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 - store i32 %44, ptr %47, align 4 - %48 = load ptr, ptr %30, align 8 - %49 = getelementptr inbounds nuw i32, ptr %48, i64 %indvars.iv119 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 12 - store i32 %37, ptr %50, align 4 - %51 = load ptr, ptr %30, align 8 - %52 = getelementptr inbounds nuw i32, ptr %51, i64 %indvars.iv119 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 16 - store i32 %44, ptr %53, align 4 - %54 = or disjoint i32 %37, 3 - %55 = load ptr, ptr %30, align 8 - %56 = getelementptr inbounds nuw i32, ptr %55, i64 %indvars.iv119 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 20 - store i32 %54, ptr %57, align 4 - %58 = add nuw nsw i32 %.08194, 1 + %.08194 = phi i32 [ %60, %.lr.ph96 ], [ 0, %.lr.ph93 ] + %39 = shl nsw i32 %.08194, 2 + %40 = load ptr, ptr %30, align 8 + %41 = getelementptr inbounds nuw i32, ptr %40, i64 %indvars.iv119 + store i32 %39, ptr %41, align 4 + %42 = or disjoint i32 %39, 1 + %43 = load ptr, ptr %30, align 8 + %44 = or disjoint i64 %indvars.iv119, 1 + %45 = getelementptr inbounds nuw i32, ptr %43, i64 %44 + store i32 %42, ptr %45, align 4 + %46 = or disjoint i32 %39, 2 + %47 = load ptr, ptr %30, align 8 + %48 = getelementptr inbounds nuw i32, ptr %47, i64 %indvars.iv119 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 8 + store i32 %46, ptr %49, align 4 + %50 = load ptr, ptr %30, align 8 + %51 = getelementptr inbounds nuw i32, ptr %50, i64 %indvars.iv119 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 12 + store i32 %39, ptr %52, align 4 + %53 = load ptr, ptr %30, align 8 + %54 = getelementptr inbounds nuw i32, ptr %53, i64 %indvars.iv119 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 16 + store i32 %46, ptr %55, align 4 + %56 = or disjoint i32 %39, 3 + %57 = load ptr, ptr %30, align 8 + %58 = getelementptr inbounds nuw i32, ptr %57, i64 %indvars.iv119 + %59 = getelementptr inbounds nuw i8, ptr %58, i64 20 + store i32 %56, ptr %59, align 4 + %60 = add nuw nsw i32 %.08194, 1 %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 6 - %59 = icmp slt i64 %indvars.iv.next120, %18 - br i1 %59, label %.lr.ph96, label %._crit_edge + %exitcond123.not = icmp slt i64 %indvars.iv.next120, %18 + br i1 %exitcond123.not, label %.lr.ph96, label %._crit_edge -._crit_edge: ; preds = %.lr.ph96, %21 +._crit_edge: ; preds = %.lr.ph96, %23 store i32 0, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 40), align 8 - %indvars.iv.next123 = add nuw nsw i64 %indvars.iv122, 1 - %exitcond126.not = icmp eq i64 %indvars.iv.next123, %wide.trip.count125 - br i1 %exitcond126.not, label %._crit_edge100, label %21 + %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1 + %exitcond128.not = icmp eq i64 %indvars.iv.next125, %wide.trip.count125 + br i1 %exitcond128.not, label %._crit_edge100, label %23 ._crit_edge100: ; preds = %._crit_edge tail call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.38) #54 - %60 = mul nsw i32 %2, 12 - %61 = sext i32 %60 to i64 - %62 = shl nsw i64 %61, 2 - %63 = shl nsw i32 %2, 3 - %64 = sext i32 %63 to i64 - %65 = shl nsw i64 %64, 2 - %66 = shl nsw i32 %2, 4 - %67 = sext i32 %66 to i64 - %68 = mul nsw i32 %2, 6 - %69 = sext i32 %68 to i64 - %70 = shl nsw i64 %69, 2 - %wide.trip.count130 = zext nneg i32 %1 to i64 - br label %71 + %61 = mul nsw i32 %2, 12 + %62 = sext i32 %61 to i64 + %63 = shl nsw i64 %62, 2 + %64 = shl nsw i32 %2, 3 + %65 = sext i32 %64 to i64 + %66 = shl nsw i64 %65, 2 + %67 = shl nsw i32 %2, 4 + %68 = sext i32 %67 to i64 + %69 = mul nsw i32 %2, 6 + %70 = sext i32 %69 to i64 + %71 = shl nsw i64 %70, 2 + %wide.trip.count132 = zext nneg i32 %1 to i64 + br label %72 -71: ; preds = %._crit_edge100, %79 - %indvars.iv127 = phi i64 [ 0, %._crit_edge100 ], [ %indvars.iv.next128, %79 ] - %72 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 - %73 = trunc i8 %72 to i1 - br i1 %73, label %74, label %79 +72: ; preds = %._crit_edge100, %79 + %indvars.iv129 = phi i64 [ 0, %._crit_edge100 ], [ %indvars.iv.next128, %79 ] + %73 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 + %74 = trunc i8 %73 to i1 + br i1 %74, label %74, label %79 74: ; preds = %71 %75 = load ptr, ptr @glad_glGenVertexArrays, align 8 @@ -21157,13 +21157,13 @@ define void @rlLoadRenderBatch(ptr dead_on_unwind noalias writable writeonly sre tail call void %77(i32 noundef %78) #54 br label %79 -79: ; preds = %74, %71 - %80 = load ptr, ptr @glad_glGenBuffers, align 8 - %81 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 6 - tail call void %80(i32 noundef 1, ptr noundef nonnull %81) #54 - %82 = load ptr, ptr @glad_glBindBuffer, align 8 - %83 = load i32, ptr %81, align 4 - tail call void %82(i32 noundef 34962, i32 noundef %83) #54 +75: ; preds = %74, %72 + %76 = load ptr, ptr @glad_glGenBuffers, align 8 + %77 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv129, i32 6 + tail call void %80(i32 noundef 1, ptr noundef nonnull %77) #54 + %78 = load ptr, ptr @glad_glBindBuffer, align 8 + %79 = load i32, ptr %77, align 4 + tail call void %82(i32 noundef 34962, i32 noundef %79) #54 %84 = load ptr, ptr @glad_glBufferData, align 8 %85 = getelementptr inbounds nuw %struct.rlVertexBuffer, ptr %6, i64 %indvars.iv127, i32 1 %86 = load ptr, ptr %85, align 8 @@ -21230,44 +21230,44 @@ define void @rlLoadRenderBatch(ptr dead_on_unwind noalias writable writeonly sre %exitcond131.not = icmp eq i64 %indvars.iv.next128, %wide.trip.count130 br i1 %exitcond131.not, label %._crit_edge104, label %71 -._crit_edge104: ; preds = %79, %._crit_edge100.thread +80: ; preds = %75, %._crit_edge100.thread tail call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.39) #54 - %130 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 - %131 = trunc i8 %130 to i1 - br i1 %131, label %132, label %134 + %131 = load i8, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2696), align 8 + %132 = trunc i8 %131 to i1 + br i1 %132, label %133, label %135 -132: ; preds = %._crit_edge104 - %133 = load ptr, ptr @glad_glBindVertexArray, align 8 +133: ; preds = %._crit_edge104 + %134 = load ptr, ptr @glad_glBindVertexArray, align 8 tail call void %133(i32 noundef 0) #54 - br label %134 - -134: ; preds = %132, %._crit_edge104 - %135 = tail call noalias dereferenceable_or_null(4096) ptr @malloc(i64 noundef 4096) #56 - %136 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %135, ptr %136, align 8 - %137 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2328), align 8 - br label %138 - -138: ; preds = %134, %138 - %indvars.iv132 = phi i64 [ 0, %134 ], [ %indvars.iv.next133, %138 ] - %139 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132 - store i32 7, ptr %139, align 4 - %140 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132, i32 1 + br label %135 + +135: ; preds = %133, %._crit_edge104 + %136 = tail call noalias dereferenceable_or_null(4096) ptr @malloc(i64 noundef 4096) #56 + %137 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %136, ptr %137, align 8 + %138 = load i32, ptr getelementptr inbounds nuw (i8, ptr @RLGL, i64 2328), align 8 + br label %139 + +139: ; preds = %135, %139 + %indvars.iv134 = phi i64 [ 0, %135 ], [ %indvars.iv.next133, %139 ] + %140 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134 + store i32 7, ptr %140, align 4 + %141 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134, i32 1 store i32 0, ptr %140, align 4 %141 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132, i32 2 store i32 0, ptr %141, align 4 - %142 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %135, i64 %indvars.iv132, i32 3 + %142 = getelementptr inbounds nuw %struct.rlDrawCall, ptr %136, i64 %indvars.iv134, i32 3 store i32 %137, ptr %142, align 4 - %indvars.iv.next133 = add nuw nsw i64 %indvars.iv132, 1 - %exitcond135.not = icmp eq i64 %indvars.iv.next133, 256 + %143 = add nuw nsw i64 %indvars.iv134, 1 + %exitcond135.not = icmp eq i64 %143, 256 br i1 %exitcond135.not, label %143, label %138 -143: ; preds = %138 +143:; preds = %139 store i32 %1, ptr %0, align 8 - %144 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 1, ptr %144, align 8 - %145 = getelementptr inbounds nuw i8, ptr %0, i64 28 - store float -1.000000e+00, ptr %145, align 4 + %145 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 1, ptr %145, align 8 + %146 = getelementptr inbounds nuw i8, ptr %0, i64 28 + store float -1.000000e+00, ptr %146, align 4 ret void } diff --git a/bench/raylib/optimized/rtext.ll b/bench/raylib/optimized/rtext.ll index ec83e22e34f..5750d2b674b 100644 --- a/bench/raylib/optimized/rtext.ll +++ b/bench/raylib/optimized/rtext.ll @@ -1000,11 +1000,11 @@ LoadFontEx.exit: ; preds = %38, %41 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %29, i64 48, i1 false) - br label %234 + br label %235 42: ; preds = %34 %43 = tail call zeroext i1 @IsFileExtension(ptr noundef %1, ptr noundef nonnull @.str.3) #41 - br i1 %43, label %44, label %222 + br i1 %43, label %44, label %223 44: ; preds = %42 tail call void @llvm.experimental.noalias.scope.decl(metadata !7) @@ -1217,8 +1217,8 @@ GetLine.exit134.i: ; preds = %99, %.split.loop.ex call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %112, i64 24, i1 false), !noalias !7 br label %.loopexit.i -.lr.ph162.i: ; preds = %109, %140 - %indvars.iv193.i = phi i64 [ %indvars.iv.next194.i, %140 ], [ 0, %109 ] +.lr.ph162.i: ; preds = %109, %141 + %indvars.iv193.i = phi i64 [ %indvars.iv.next194.i, %141 ], [ 0, %109 ] %114 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv193.i %115 = call ptr @GetDirectoryPath(ptr noundef %1) #41, !noalias !7 %116 = getelementptr inbounds nuw [8 x [129 x i8]], ptr %12, i64 0, i64 %indvars.iv193.i @@ -1228,7 +1228,7 @@ GetLine.exit134.i: ; preds = %99, %.split.loop.ex %118 = getelementptr inbounds nuw i8, ptr %114, i64 20 %119 = load i32, ptr %118, align 4, !noalias !7 %120 = icmp eq i32 %119, 1 - br i1 %120, label %121, label %140 + br i1 %120, label %121, label %141 121: ; preds = %.lr.ph162.i %122 = getelementptr inbounds nuw i8, ptr %114, i64 8 @@ -1244,235 +1244,235 @@ GetLine.exit134.i: ; preds = %99, %.split.loop.ex .lr.ph.i: ; preds = %121 %130 = shl nuw nsw i32 %126, 1 %131 = load ptr, ptr %114, align 8, !noalias !7 - %132 = zext nneg i32 %130 to i64 + %smax.i = zext nneg i32 %130 to i64 br label %133 -133: ; preds = %133, %.lr.ph.i - %indvars.iv188.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next189.i, %133 ] - %indvars.iv186.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next187.i, %133 ] - %134 = getelementptr inbounds nuw i8, ptr %128, i64 %indvars.iv186.i - store i8 -1, ptr %134, align 1, !noalias !7 - %135 = getelementptr inbounds nuw i8, ptr %131, i64 %indvars.iv188.i - %136 = load i8, ptr %135, align 1, !noalias !7 - %137 = or disjoint i64 %indvars.iv186.i, 1 - %138 = getelementptr inbounds nuw i8, ptr %128, i64 %137 - store i8 %136, ptr %138, align 1, !noalias !7 +135: ; preds = %135, %.lr.ph.i + %indvars.iv188.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next189.i, %135 ] + %indvars.iv186.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next187.i, %135 ] + %136 = getelementptr inbounds nuw i8, ptr %128, i64 %indvars.iv186.i + store i8 -1, ptr %136, align 1, !noalias !7 + %137 = getelementptr inbounds nuw i8, ptr %131, i64 %indvars.iv188.i + %138 = load i8, ptr %137, align 1, !noalias !7 + %139 = or disjoint i64 %indvars.iv186.i, 1 + %140 = getelementptr inbounds nuw i8, ptr %128, i64 %139 + store i8 %138, ptr %140, align 1, !noalias !7 %indvars.iv.next187.i = add nuw nsw i64 %indvars.iv186.i, 2 %indvars.iv.next189.i = add nuw nsw i64 %indvars.iv188.i, 1 - %139 = icmp samesign ult i64 %indvars.iv.next187.i, %132 - br i1 %139, label %133, label %._crit_edge.i + %exitcond.not.i = icmp samesign ult i64 %indvars.iv.next187.i, %smax.i + br i1 %exitcond.not.i, label %133, label %._crit_edge.i -._crit_edge.i: ; preds = %133, %121 +._crit_edge.i: ; preds = %135, %121 call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %14) #41, !noalias !7 store ptr %128, ptr %114, align 8, !noalias !7 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %114, i64 16 store i32 1, ptr %.sroa.6.0..sroa_idx.i, align 8, !noalias !7 store i32 2, ptr %118, align 4, !noalias !7 - br label %140 + br label %141 -140: ; preds = %._crit_edge.i, %.lr.ph162.i +141: ; preds = %._crit_edge.i, %.lr.ph162.i %indvars.iv.next194.i = add nuw nsw i64 %indvars.iv193.i, 1 - %141 = load i32, ptr %11, align 4, !noalias !7 - %142 = sext i32 %141 to i64 - %143 = icmp slt i64 %indvars.iv.next194.i, %142 - br i1 %143, label %.lr.ph162.i, label %._crit_edge163.i + %142 = load i32, ptr %11, align 4, !noalias !7 + %143 = sext i32 %142 to i64 + %144 = icmp slt i64 %indvars.iv.next194.i, %143 + br i1 %144, label %.lr.ph162.i, label %._crit_edge163.i -._crit_edge163.i: ; preds = %140 +._crit_edge163.i: ; preds = %141 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %112, i64 24, i1 false), !noalias !7 - %144 = icmp sgt i32 %141, 1 - br i1 %144, label %.lr.ph167.i, label %.loopexit.i + %145 = icmp sgt i32 %142, 1 + br i1 %145, label %.lr.ph167.i, label %.loopexit.i .lr.ph167.i: ; preds = %._crit_edge163.i, %.lr.ph167.i %indvars.iv196.i = phi i64 [ %indvars.iv.next197.i, %.lr.ph167.i ], [ 1, %._crit_edge163.i ] - %145 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv196.i - call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %145) #41, !noalias !7 + %146 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv196.i + call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %146) #41, !noalias !7 %indvars.iv.next197.i = add nuw nsw i64 %indvars.iv196.i, 1 %.pr.i = load i32, ptr %11, align 4, !noalias !7 - %146 = sext i32 %.pr.i to i64 - %147 = icmp slt i64 %indvars.iv.next197.i, %146 - br i1 %147, label %.lr.ph167.i, label %._crit_edge168.i + %147 = sext i32 %.pr.i to i64 + %148 = icmp slt i64 %indvars.iv.next197.i, %147 + br i1 %148, label %.lr.ph167.i, label %._crit_edge168.i ._crit_edge168.i: ; preds = %.lr.ph167.i - %148 = icmp sgt i32 %.pr.i, 1 - br i1 %148, label %149, label %.loopexit.i - -149: ; preds = %._crit_edge168.i - %150 = load i32, ptr %9, align 4, !noalias !7 - %151 = load i32, ptr %10, align 4, !noalias !7 - %152 = mul nsw i32 %151, %.pr.i - call void @ImageResizeCanvas(ptr noundef nonnull %15, i32 noundef %150, i32 noundef %152, i32 noundef 0, i32 noundef 0, i32 -16777216) #41, !noalias !7 - %153 = load i32, ptr %11, align 4, !noalias !7 - %154 = icmp sgt i32 %153, 1 - br i1 %154, label %.lr.ph172.i, label %.loopexit.i - -.lr.ph172.i: ; preds = %149, %.lr.ph172.i - %indvars.iv199.i = phi i64 [ %indvars.iv.next200.i, %.lr.ph172.i ], [ 1, %149 ] - %155 = load i32, ptr %9, align 4, !noalias !7 - %156 = sitofp i32 %155 to float - %.sroa.319.8.vec.insert.i = insertelement <2 x float> poison, float %156, i64 0 - %157 = load i32, ptr %10, align 4, !noalias !7 - %158 = sitofp i32 %157 to float - %.sroa.319.12.vec.insert.i = insertelement <2 x float> %.sroa.319.8.vec.insert.i, float %158, i64 1 - %159 = trunc nuw nsw i64 %indvars.iv199.i to i32 - %160 = uitofp nneg i32 %159 to float - %161 = fmul float %160, %158 - %.sroa.013.4.vec.insert.i = insertelement <2 x float> , float %161, i64 1 - %162 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv199.i - call void @ImageDraw(ptr noundef nonnull %15, ptr noundef nonnull byval(%struct.Image) align 8 %162, <2 x float> zeroinitializer, <2 x float> %.sroa.319.12.vec.insert.i, <2 x float> %.sroa.013.4.vec.insert.i, <2 x float> %.sroa.319.12.vec.insert.i, i32 -1) #41, !noalias !7 + %149 = icmp sgt i32 %.pr.i, 1 + br i1 %149, label %150, label %.loopexit.i + +150: ; preds = %._crit_edge168.i + %151 = load i32, ptr %9, align 4, !noalias !7 + %152 = load i32, ptr %10, align 4, !noalias !7 + %153 = mul nsw i32 %152, %.pr.i + call void @ImageResizeCanvas(ptr noundef nonnull %15, i32 noundef %151, i32 noundef %153, i32 noundef 0, i32 noundef 0, i32 -16777216) #41, !noalias !7 + %154 = load i32, ptr %11, align 4, !noalias !7 + %155 = icmp sgt i32 %154, 1 + br i1 %155, label %.lr.ph172.i, label %.loopexit.i + +.lr.ph172.i: ; preds = %150, %.lr.ph172.i + %indvars.iv199.i = phi i64 [ %indvars.iv.next200.i, %.lr.ph172.i ], [ 1, %150 ] + %156 = load i32, ptr %9, align 4, !noalias !7 + %157 = sitofp i32 %156 to float + %.sroa.319.8.vec.insert.i = insertelement <2 x float> poison, float %157, i64 0 + %158 = load i32, ptr %10, align 4, !noalias !7 + %159 = sitofp i32 %158 to float + %.sroa.319.12.vec.insert.i = insertelement <2 x float> %.sroa.319.8.vec.insert.i, float %159, i64 1 + %160 = trunc nuw nsw i64 %indvars.iv199.i to i32 + %161 = uitofp nneg i32 %160 to float + %162 = fmul float %161, %159 + %.sroa.013.4.vec.insert.i = insertelement <2 x float> , float %162, i64 1 + %163 = getelementptr inbounds nuw %struct.Image, ptr %112, i64 %indvars.iv199.i + call void @ImageDraw(ptr noundef nonnull %15, ptr noundef nonnull byval(%struct.Image) align 8 %163, <2 x float> zeroinitializer, <2 x float> %.sroa.319.12.vec.insert.i, <2 x float> %.sroa.013.4.vec.insert.i, <2 x float> %.sroa.319.12.vec.insert.i, i32 -1) #41, !noalias !7 %indvars.iv.next200.i = add nuw nsw i64 %indvars.iv199.i, 1 - %163 = load i32, ptr %11, align 4, !noalias !7 - %164 = sext i32 %163 to i64 - %165 = icmp slt i64 %indvars.iv.next200.i, %164 - br i1 %165, label %.lr.ph172.i, label %.loopexit.i + %164 = load i32, ptr %11, align 4, !noalias !7 + %165 = sext i32 %164 to i64 + %166 = icmp slt i64 %indvars.iv.next200.i, %165 + br i1 %166, label %.lr.ph172.i, label %.loopexit.i -.loopexit.i: ; preds = %.lr.ph172.i, %149, %._crit_edge168.i, %._crit_edge163.i, %._crit_edge163.thread.i +.loopexit.i: ; preds = %.lr.ph172.i, %150, %._crit_edge168.i, %._crit_edge163.i, %._crit_edge163.thread.i call void @free(ptr noundef nonnull %112) #41, !noalias !7 call void @LoadTextureFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Texture) align 4 %16, ptr noundef nonnull byval(%struct.Image) align 8 %15) #41, !noalias !7 %.sroa.6.12.copyload = load i32, ptr %16, align 4 %.sroa.8.12..sroa_idx = getelementptr inbounds nuw i8, ptr %16, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.8.12..sroa_idx, i64 16, i1 false) - %166 = load i32, ptr %7, align 4, !noalias !7 - %167 = load i32, ptr %8, align 4, !noalias !7 - %168 = sext i32 %167 to i64 - %169 = mul nsw i64 %168, 40 - %170 = call noalias ptr @malloc(i64 noundef %169) #43 - %171 = shl nsw i64 %168, 4 - %172 = call noalias ptr @malloc(i64 noundef %171) #43 - %173 = icmp sgt i32 %167, 0 - br i1 %173, label %.lr.ph176.i, label %._crit_edge177.i - -.lr.ph176.i: ; preds = %.loopexit.i, %213 - %indvars.iv202.i = phi i64 [ %indvars.iv.next203.i, %213 ], [ 0, %.loopexit.i ] - %.pn174.i = phi ptr [ %184, %213 ], [ %106, %.loopexit.i ] + %167 = load i32, ptr %7, align 4, !noalias !7 + %168 = load i32, ptr %8, align 4, !noalias !7 + %169 = sext i32 %168 to i64 + %170 = mul nsw i64 %169, 40 + %171 = call noalias ptr @malloc(i64 noundef %170) #43 + %172 = shl nsw i64 %169, 4 + %173 = call noalias ptr @malloc(i64 noundef %172) #43 + %174 = icmp sgt i32 %168, 0 + br i1 %174, label %.lr.ph176.i, label %._crit_edge177.i + +.lr.ph176.i: ; preds = %.loopexit.i, %214 + %indvars.iv202.i = phi i64 [ %indvars.iv.next203.i, %214 ], [ 0, %.loopexit.i ] + %.pn174.i = phi ptr [ %185, %214 ], [ %106, %.loopexit.i ] %.1.i = getelementptr i8, ptr %.pn174.i, i64 1 - br label %174 + br label %175 -174: ; preds = %178, %.lr.ph176.i - %indvars.iv.i135.i = phi i64 [ 0, %.lr.ph176.i ], [ %indvars.iv.next.i136.i, %178 ] - %175 = getelementptr inbounds nuw i8, ptr %.1.i, i64 %indvars.iv.i135.i - %176 = load i8, ptr %175, align 1, !noalias !7 - %177 = icmp eq i8 %176, 10 - br i1 %177, label %.split.loop.exit.i139.i, label %178 +175: ; preds = %179, %.lr.ph176.i + %indvars.iv.i135.i = phi i64 [ 0, %.lr.ph176.i ], [ %indvars.iv.next.i136.i, %179 ] + %176 = getelementptr inbounds nuw i8, ptr %.1.i, i64 %indvars.iv.i135.i + %177 = load i8, ptr %176, align 1, !noalias !7 + %178 = icmp eq i8 %177, 10 + br i1 %178, label %.split.loop.exit.i139.i, label %179 -178: ; preds = %174 +179: ; preds = %175 %indvars.iv.next.i136.i = add nuw nsw i64 %indvars.iv.i135.i, 1 %exitcond.not.i137.i = icmp eq i64 %indvars.iv.next.i136.i, 255 - br i1 %exitcond.not.i137.i, label %GetLine.exit140.i, label %174 + br i1 %exitcond.not.i137.i, label %GetLine.exit140.i, label %175 -.split.loop.exit.i139.i: ; preds = %174 - %179 = trunc nuw nsw i64 %indvars.iv.i135.i to i32 +.split.loop.exit.i139.i: ; preds = %175 + %180 = trunc nuw nsw i64 %indvars.iv.i135.i to i32 br label %GetLine.exit140.i -GetLine.exit140.i: ; preds = %178, %.split.loop.exit.i139.i - %.0.lcssa.i138.i = phi i32 [ %179, %.split.loop.exit.i139.i ], [ 255, %178 ] - %180 = zext nneg i32 %.0.lcssa.i138.i to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull readonly align 1 %.1.i, i64 %180, i1 false), !noalias !7 - %181 = getelementptr inbounds nuw i8, ptr %6, i64 %180 - store i8 0, ptr %181, align 1, !noalias !7 - %182 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.80, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25) #41, !noalias !7 - %183 = sext i32 %.0.lcssa.i138.i to i64 - %184 = getelementptr i8, ptr %.1.i, i64 %183 - %185 = icmp eq i32 %182, 9 - br i1 %185, label %186, label %212 - -186: ; preds = %GetLine.exit140.i - %187 = getelementptr inbounds nuw %struct.Rectangle, ptr %172, i64 %indvars.iv202.i - %188 = load i32, ptr %18, align 4, !noalias !7 - %189 = sitofp i32 %188 to float - %190 = load i32, ptr %19, align 4, !noalias !7 - %191 = sitofp i32 %190 to float - %192 = load i32, ptr %10, align 4, !noalias !7 - %193 = sitofp i32 %192 to float - %194 = load i32, ptr %25, align 4, !noalias !7 - %195 = sitofp i32 %194 to float - %196 = call float @llvm.fmuladd.f32(float %193, float %195, float %191) - %197 = load i32, ptr %20, align 4, !noalias !7 - %198 = sitofp i32 %197 to float - %199 = load i32, ptr %21, align 4, !noalias !7 - %200 = sitofp i32 %199 to float - store float %189, ptr %187, align 4, !noalias !7 - %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %187, i64 4 - store float %196, ptr %.sroa.2.0..sroa_idx.i, align 4, !noalias !7 - %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %187, i64 8 - store float %198, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %187, i64 12 - store float %200, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !7 - %201 = load i32, ptr %17, align 4, !noalias !7 - %202 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i - store i32 %201, ptr %202, align 8, !noalias !7 - %203 = load i32, ptr %22, align 4, !noalias !7 - %204 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 1 - store i32 %203, ptr %204, align 4, !noalias !7 - %205 = load i32, ptr %23, align 4, !noalias !7 - %206 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 2 - store i32 %205, ptr %206, align 8, !noalias !7 - %207 = load i32, ptr %24, align 4, !noalias !7 - %208 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 3 - store i32 %207, ptr %208, align 4, !noalias !7 - %209 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv202.i, i32 4 - %210 = load <2 x float>, ptr %187, align 4, !noalias !7 - %211 = load <2 x float>, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 - call void @ImageFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Image) align 8 %26, ptr noundef nonnull byval(%struct.Image) align 8 %15, <2 x float> %210, <2 x float> %211) #41, !noalias !7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %209, ptr noundef nonnull align 8 dereferenceable(24) %26, i64 24, i1 false), !noalias !7 - br label %213 - -212: ; preds = %GetLine.exit140.i +GetLine.exit140.i: ; preds = %179, %.split.loop.exit.i139.i + %.0.lcssa.i138.i = phi i32 [ %180, %.split.loop.exit.i139.i ], [ 255, %179 ] + %181 = zext nneg i32 %.0.lcssa.i138.i to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %6, ptr nonnull readonly align 1 %.1.i, i64 %181, i1 false), !noalias !7 + %182 = getelementptr inbounds nuw i8, ptr %6, i64 %181 + store i8 0, ptr %182, align 1, !noalias !7 + %183 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %6, ptr noundef nonnull @.str.80, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %25) #41, !noalias !7 + %184 = sext i32 %.0.lcssa.i138.i to i64 + %185 = getelementptr i8, ptr %.1.i, i64 %184 + %186 = icmp eq i32 %183, 9 + br i1 %186, label %187, label %213 + +187: ; preds = %GetLine.exit140.i + %188 = getelementptr inbounds nuw %struct.Rectangle, ptr %173, i64 %indvars.iv202.i + %189 = load i32, ptr %18, align 4, !noalias !7 + %190 = sitofp i32 %189 to float + %191 = load i32, ptr %19, align 4, !noalias !7 + %192 = sitofp i32 %191 to float + %193 = load i32, ptr %10, align 4, !noalias !7 + %194 = sitofp i32 %193 to float + %195 = load i32, ptr %25, align 4, !noalias !7 + %196 = sitofp i32 %195 to float + %197 = call float @llvm.fmuladd.f32(float %194, float %196, float %192) + %198 = load i32, ptr %20, align 4, !noalias !7 + %199 = sitofp i32 %198 to float + %200 = load i32, ptr %21, align 4, !noalias !7 + %201 = sitofp i32 %200 to float + store float %190, ptr %188, align 4, !noalias !7 + %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %188, i64 4 + store float %197, ptr %.sroa.2.0..sroa_idx.i, align 4, !noalias !7 + %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %188, i64 8 + store float %199, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %188, i64 12 + store float %201, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !7 + %202 = load i32, ptr %17, align 4, !noalias !7 + %203 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i + store i32 %202, ptr %203, align 8, !noalias !7 + %204 = load i32, ptr %22, align 4, !noalias !7 + %205 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 1 + store i32 %204, ptr %205, align 4, !noalias !7 + %206 = load i32, ptr %23, align 4, !noalias !7 + %207 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 2 + store i32 %206, ptr %207, align 8, !noalias !7 + %208 = load i32, ptr %24, align 4, !noalias !7 + %209 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 3 + store i32 %208, ptr %209, align 4, !noalias !7 + %210 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv202.i, i32 4 + %211 = load <2 x float>, ptr %188, align 4, !noalias !7 + %212 = load <2 x float>, ptr %.sroa.3.0..sroa_idx.i, align 4, !noalias !7 + call void @ImageFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Image) align 8 %26, ptr noundef nonnull byval(%struct.Image) align 8 %15, <2 x float> %211, <2 x float> %212) #41, !noalias !7 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %210, ptr noundef nonnull align 8 dereferenceable(24) %26, i64 24, i1 false), !noalias !7 + br label %214 + +213: ; preds = %GetLine.exit140.i call void (i32, ptr, ...) @TraceLog(i32 noundef 4, ptr noundef nonnull @.str.81, ptr noundef %1) #41, !noalias !7 - br label %213 + br label %214 -213: ; preds = %212, %186 +214: ; preds = %213, %187 %indvars.iv.next203.i = add nuw nsw i64 %indvars.iv202.i, 1 - %214 = load i32, ptr %8, align 4, !noalias !7 - %215 = sext i32 %214 to i64 - %216 = icmp slt i64 %indvars.iv.next203.i, %215 - br i1 %216, label %.lr.ph176.i, label %._crit_edge177.i + %215 = load i32, ptr %8, align 4, !noalias !7 + %216 = sext i32 %215 to i64 + %217 = icmp slt i64 %indvars.iv.next203.i, %216 + br i1 %217, label %.lr.ph176.i, label %._crit_edge177.i -._crit_edge177.i: ; preds = %213, %.loopexit.i +._crit_edge177.i: ; preds = %214, %.loopexit.i call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %15) #41, !noalias !7 call void @UnloadFileText(ptr noundef nonnull %45) #41, !noalias !7 - %217 = icmp eq i32 %.sroa.6.12.copyload, 0 - br i1 %217, label %218, label %221 + %218 = icmp eq i32 %.sroa.6.12.copyload, 0 + br i1 %218, label %219, label %222 -218: ; preds = %._crit_edge177.i +219: ; preds = %._crit_edge177.i call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %5), !noalias !7 %.sroa.1.0.copyload.i.i = load i32, ptr getelementptr inbounds nuw (i8, ptr @defaultFont, i64 12), align 4, !noalias !7 %.not.i.i = icmp eq i32 %.sroa.1.0.copyload.i.i, 0 - br i1 %.not.i.i, label %UnloadFont.exit.i, label %219 + br i1 %.not.i.i, label %UnloadFont.exit.i, label %220 -219: ; preds = %218 - %.not.i.i.i = icmp eq ptr %170, null +220: ; preds = %219 + %.not.i.i.i = icmp eq ptr %171, null br i1 %.not.i.i.i, label %UnloadFontData.exit.i.i, label %.preheader.i.i.i -.preheader.i.i.i: ; preds = %219 - br i1 %173, label %.lr.ph.preheader.i.i.i, label %._crit_edge.i.i.i +.preheader.i.i.i: ; preds = %220 + br i1 %174, label %.lr.ph.preheader.i.i.i, label %._crit_edge.i.i.i .lr.ph.preheader.i.i.i: ; preds = %.preheader.i.i.i - %wide.trip.count.i.i.i = zext nneg i32 %167 to i64 + %wide.trip.count.i.i.i = zext nneg i32 %168 to i64 br label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.preheader.i.i.i %indvars.iv.i.i.i = phi i64 [ 0, %.lr.ph.preheader.i.i.i ], [ %indvars.iv.next.i.i.i, %.lr.ph.i.i.i ] - %220 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %170, i64 %indvars.iv.i.i.i, i32 4 - call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %220) #41, !noalias !7 + %221 = getelementptr inbounds nuw %struct.GlyphInfo, ptr %171, i64 %indvars.iv.i.i.i, i32 4 + call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %221) #41, !noalias !7 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, %wide.trip.count.i.i.i br i1 %exitcond.not.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph.i.i.i ._crit_edge.i.i.i: ; preds = %.lr.ph.i.i.i, %.preheader.i.i.i - call void @free(ptr noundef nonnull %170) #41, !noalias !7 + call void @free(ptr noundef nonnull %171) #41, !noalias !7 br label %UnloadFontData.exit.i.i -UnloadFontData.exit.i.i: ; preds = %._crit_edge.i.i.i, %219 +UnloadFontData.exit.i.i: ; preds = %._crit_edge.i.i.i, %220 store i32 0, ptr %5, align 8, !noalias !7 %.sroa.6.12..sroa_idx.i = getelementptr inbounds nuw i8, ptr %5, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6.12..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.8, i64 16, i1 false) call void @UnloadTexture(ptr noundef nonnull byval(%struct.Texture) align 8 %5) #41, !noalias !7 - call void @free(ptr noundef %172) #41, !noalias !7 + call void @free(ptr noundef %173) #41, !noalias !7 %.sroa.6.0.copyload14.pre = load i32, ptr getelementptr inbounds nuw (i8, ptr @defaultFont, i64 12), align 4 br label %UnloadFont.exit.i -UnloadFont.exit.i: ; preds = %UnloadFontData.exit.i.i, %218 - %.sroa.6.0.copyload14 = phi i32 [ %.sroa.6.0.copyload14.pre, %UnloadFontData.exit.i.i ], [ 0, %218 ] +UnloadFont.exit.i: ; preds = %UnloadFontData.exit.i.i, %219 + %.sroa.6.0.copyload14 = phi i32 [ %.sroa.6.0.copyload14.pre, %UnloadFontData.exit.i.i ], [ 0, %219 ] call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %5), !noalias !7 %.sroa.0.0.copyload11 = load i32, ptr @defaultFont, align 8 %.sroa.4.0.copyload12 = load i32, ptr getelementptr inbounds nuw (i8, ptr @defaultFont, i64 4), align 4 @@ -1483,17 +1483,17 @@ UnloadFont.exit.i: ; preds = %UnloadFontData.exit call void (i32, ptr, ...) @TraceLog(i32 noundef 4, ptr noundef nonnull @.str.82, ptr noundef %1) #41, !noalias !7 br label %LoadBMFont.exit -221: ; preds = %._crit_edge177.i - call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.83, ptr noundef %1, i32 noundef %167) #41, !noalias !7 +222: ; preds = %._crit_edge177.i + call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.83, ptr noundef %1, i32 noundef %168) #41, !noalias !7 br label %LoadBMFont.exit -LoadBMFont.exit: ; preds = %44, %70, %88, %108, %UnloadFont.exit.i, %221 - %.sroa.0.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.0.0.copyload11, %UnloadFont.exit.i ], [ %166, %221 ] - %.sroa.4.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.4.0.copyload12, %UnloadFont.exit.i ], [ %167, %221 ] - %.sroa.5.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.5.0.copyload13, %UnloadFont.exit.i ], [ 0, %221 ] - %.sroa.6.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.6.0.copyload14, %UnloadFont.exit.i ], [ %.sroa.6.12.copyload, %221 ] - %.sroa.9.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.9.0.copyload15, %UnloadFont.exit.i ], [ %172, %221 ] - %.sroa.10.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.10.0.copyload16, %UnloadFont.exit.i ], [ %170, %221 ] +LoadBMFont.exit: ; preds = %44, %70, %88, %108, %UnloadFont.exit.i, %222 + %.sroa.0.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.0.0.copyload11, %UnloadFont.exit.i ], [ %167, %222 ] + %.sroa.4.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.4.0.copyload12, %UnloadFont.exit.i ], [ %168, %222 ] + %.sroa.5.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.5.0.copyload13, %UnloadFont.exit.i ], [ 0, %222 ] + %.sroa.6.0 = phi i32 [ 0, %44 ], [ 0, %70 ], [ 0, %88 ], [ 0, %108 ], [ %.sroa.6.0.copyload14, %UnloadFont.exit.i ], [ %.sroa.6.12.copyload, %222 ] + %.sroa.9.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.9.0.copyload15, %UnloadFont.exit.i ], [ %173, %222 ] + %.sroa.10.0 = phi ptr [ null, %44 ], [ null, %70 ], [ null, %88 ], [ null, %108 ], [ %.sroa.10.0.copyload16, %UnloadFont.exit.i ], [ %171, %222 ] call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) @@ -1528,70 +1528,70 @@ LoadBMFont.exit: ; preds = %44, %70, %88, %108, store ptr %.sroa.9.0, ptr %.sroa.9.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 store ptr %.sroa.10.0, ptr %.sroa.10.0..sroa_idx, align 8 - br label %234 + br label %235 -222: ; preds = %42 - %223 = tail call zeroext i1 @IsFileExtension(ptr noundef %1, ptr noundef nonnull @.str.4) #41 - br i1 %223, label %224, label %230 +223: ; preds = %42 + %224 = tail call zeroext i1 @IsFileExtension(ptr noundef %1, ptr noundef nonnull @.str.4) #41 + br i1 %224, label %225, label %231 -224: ; preds = %222 +225: ; preds = %223 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) store i32 0, ptr %3, align 4, !noalias !10 - %225 = call ptr @LoadFileData(ptr noundef %1, ptr noundef nonnull %3) #41, !noalias !10 - %.not.i9 = icmp eq ptr %225, null - br i1 %.not.i9, label %229, label %226 - -226: ; preds = %224 - %227 = call ptr @GetFileExtension(ptr noundef %1) #41, !noalias !10 - %228 = load i32, ptr %3, align 4, !noalias !10 - call void @LoadFontFromMemory(ptr dead_on_unwind nonnull writable sret(%struct.Font) align 8 %4, ptr noundef %227, ptr noundef nonnull %225, i32 noundef %228, i32 noundef 32, ptr noundef null, i32 noundef 95), !noalias !10 + %226 = call ptr @LoadFileData(ptr noundef %1, ptr noundef nonnull %3) #41, !noalias !10 + %.not.i9 = icmp eq ptr %226, null + br i1 %.not.i9, label %230, label %227 + +227: ; preds = %225 + %228 = call ptr @GetFileExtension(ptr noundef %1) #41, !noalias !10 + %229 = load i32, ptr %3, align 4, !noalias !10 + call void @LoadFontFromMemory(ptr dead_on_unwind nonnull writable sret(%struct.Font) align 8 %4, ptr noundef %228, ptr noundef nonnull %226, i32 noundef %229, i32 noundef 32, ptr noundef null, i32 noundef 95), !noalias !10 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) %4, i64 48, i1 false) - call void @UnloadFileData(ptr noundef nonnull %225) #41, !noalias !10 + call void @UnloadFileData(ptr noundef nonnull %226) #41, !noalias !10 br label %LoadFontEx.exit10 -229: ; preds = %224 +230: ; preds = %225 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) @defaultFont, i64 48, i1 false) br label %LoadFontEx.exit10 -LoadFontEx.exit10: ; preds = %226, %229 +LoadFontEx.exit10: ; preds = %227, %230 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %30, i64 48, i1 false) - br label %234 + br label %235 -230: ; preds = %222 +231: ; preds = %223 call void @LoadImage(ptr dead_on_unwind nonnull writable sret(%struct.Image) align 8 %31, ptr noundef %1) #41 - %231 = load ptr, ptr %31, align 8 - %.not = icmp eq ptr %231, null - br i1 %.not, label %233, label %232 + %232 = load ptr, ptr %31, align 8 + %.not = icmp eq ptr %232, null + br i1 %.not, label %234, label %233 -232: ; preds = %230 +233: ; preds = %231 call void @LoadFontFromImage(ptr dead_on_unwind nonnull writable sret(%struct.Font) align 8 %0, ptr noundef nonnull byval(%struct.Image) align 8 %31, i32 -65281, i32 noundef 32) - br label %233 + br label %234 -233: ; preds = %232, %230 +234: ; preds = %233, %231 call void @UnloadImage(ptr noundef nonnull byval(%struct.Image) align 8 %31) #41 - br label %234 + br label %235 -234: ; preds = %LoadBMFont.exit, %233, %LoadFontEx.exit10, %LoadFontEx.exit - %235 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %236 = load i32, ptr %235, align 4 - %237 = icmp eq i32 %236, 0 - br i1 %237, label %238, label %239 +235: ; preds = %LoadBMFont.exit, %234, %LoadFontEx.exit10, %LoadFontEx.exit + %236 = getelementptr inbounds nuw i8, ptr %0, i64 12 + %237 = load i32, ptr %236, align 4 + %238 = icmp eq i32 %237, 0 + br i1 %238, label %239, label %240 -238: ; preds = %234 +239: ; preds = %235 call void (i32, ptr, ...) @TraceLog(i32 noundef 4, ptr noundef nonnull @.str.5, ptr noundef %1) #41 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) @defaultFont, i64 48, i1 false) - br label %240 + br label %241 -239: ; preds = %234 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %32, ptr noundef nonnull align 4 dereferenceable(20) %235, i64 20, i1 false) +240: ; preds = %235 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %32, ptr noundef nonnull align 4 dereferenceable(20) %236, i64 20, i1 false) call void @SetTextureFilter(ptr noundef nonnull byval(%struct.Texture) align 8 %32, i32 noundef 0) #41 call void (i32, ptr, ...) @TraceLog(i32 noundef 3, ptr noundef nonnull @.str.6, i32 noundef 32, i32 noundef 95) #41 - br label %240 + br label %241 -240: ; preds = %239, %238 +241: ; preds = %240, %239 ret void } diff --git a/bench/recastnavigation/optimized/RecastMeshDetail.ll b/bench/recastnavigation/optimized/RecastMeshDetail.ll index 1b5fb2dd2a7..e2b5df7c9eb 100644 --- a/bench/recastnavigation/optimized/RecastMeshDetail.ll +++ b/bench/recastnavigation/optimized/RecastMeshDetail.ll @@ -234,7 +234,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 106: ; preds = %99 %107 = mul nsw i32 %58, 3 - br label %.invoke1068 + br label %.invoke1067 .loopexit: ; preds = %.lr.ph172.i.i, %2135, %_ZN10rcIntArrayixEi.exit127._crit_edge.i.i, %.noexc436, %2160, %_ZN10rcIntArrayixEi.exit129.i.i, %2174, %_ZN10rcIntArrayixEi.exit131.i.i, %2188, %_ZN10rcIntArrayixEi.exit133.i.i, %2202, %2215, %.noexc556, %2223, %.noexc558, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552 %lpad.loopexit = landingpad { ptr, i32 } @@ -316,8 +316,8 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke1068, %.invoke, %213, %202, %190, %._crit_edge896 - %.sroa.0720.3.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph = phi ptr [ %184, %213 ], [ %184, %202 ], [ %184, %190 ], [ null, %._crit_edge896 ], [ %184, %.invoke ], [ null, %.invoke1068 ] +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke1067, %.invoke, %213, %202, %190, %._crit_edge896 + %.sroa.0720.3.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph.ph = phi ptr [ %184, %213 ], [ %184, %202 ], [ %184, %190 ], [ null, %._crit_edge896 ], [ %184, %.invoke ], [ null, %.invoke1067 ] %lpad.loopexit.split-lp857 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -470,9 +470,9 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 186: ; preds = %185 %187 = mul nsw i32 %.0260.lcssa, %.0269.lcssa - br label %.invoke1068 + br label %.invoke1067 -.invoke1068: ; preds = %106, %186 +.invoke1067: ; preds = %106, %186 %188 = phi ptr [ @.str.4, %186 ], [ @.str.3, %106 ] %189 = phi i32 [ %187, %186 ], [ %107, %106 ] invoke void (ptr, i32, ptr, ...) @_ZN9rcContext3logE13rcLogCategoryPKcz(ptr noundef nonnull align 8 dereferenceable(10) %0, i32 noundef 3, ptr noundef nonnull %188, i32 noundef %189) @@ -578,11 +578,11 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 br label %.invoke 252: ; preds = %.lr.ph924, %._crit_edge920 - %indvars.iv1010 = phi i64 [ 0, %.lr.ph924 ], [ %indvars.iv.next1011, %._crit_edge920 ] + %indvars.iv1009 = phi i64 [ 0, %.lr.ph924 ], [ %indvars.iv.next1010, %._crit_edge920 ] %.0263922 = phi i32 [ %205, %.lr.ph924 ], [ %.1264, %._crit_edge920 ] %.0266921 = phi i32 [ %204, %.lr.ph924 ], [ %.1267, %._crit_edge920 ] %253 = load ptr, ptr %221, align 8 - %254 = trunc nuw nsw i64 %indvars.iv1010 to i32 + %254 = trunc nuw nsw i64 %indvars.iv1009 to i32 %255 = mul i32 %222, %254 %256 = sext i32 %255 to i64 %257 = getelementptr inbounds i16, ptr %253, i64 %256 @@ -603,8 +603,8 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 %265 = load i16, ptr %264, align 2 %266 = uitofp i16 %265 to float %267 = fmul float %60, %266 - %.idx1029 = mul nuw nsw i64 %indvars.iv960, 12 - %268 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1029 + %.idx1028 = mul nuw nsw i64 %indvars.iv960, 12 + %268 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1028 store float %267, ptr %268, align 4 %269 = getelementptr inbounds nuw i8, ptr %264, i64 2 %270 = load i16, ptr %269, align 2 @@ -628,7 +628,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 ._crit_edge904: ; preds = %261, %._crit_edge904.loopexit.split.loop.exit, %252 %.0259.lcssa = phi i32 [ 0, %252 ], [ %indvars964.le, %._crit_edge904.loopexit.split.loop.exit ], [ %58, %261 ] - %279 = shl nsw i64 %indvars.iv1010, 2 + %279 = shl nsw i64 %indvars.iv1009, 2 %280 = getelementptr inbounds nuw i32, ptr %78, i64 %279 %281 = load i32, ptr %280, align 4 %282 = or disjoint i64 %279, 2 @@ -644,7 +644,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 %292 = sub i32 %291, %284 %293 = load ptr, ptr %1, align 8 %294 = load ptr, ptr %224, align 8 - %295 = getelementptr inbounds nuw i16, ptr %294, i64 %indvars.iv1010 + %295 = getelementptr inbounds nuw i16, ptr %294, i64 %indvars.iv1009 %296 = load i16, ptr %295, align 2 store i64 0, ptr %34, align 8 %297 = sext i32 %288 to i64 @@ -801,7 +801,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 .noexc629: ; preds = %.noexc628 %.not.i.i621 = icmp eq ptr %380, null - %.pre1014 = load ptr, ptr %228, align 8 + %.pre1013 = load ptr, ptr %228, align 8 br i1 %.not.i.i621, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622, label %381 381: ; preds = %.noexc629 @@ -812,7 +812,7 @@ _ZN13rcScopedTimerC2EP9rcContext12rcTimerLabel.exit: ; preds = %41, %45 .lr.ph.i.i.i623: ; preds = %381, %.lr.ph.i.i.i623 %.07.i.i.i624 = phi i64 [ %387, %.lr.ph.i.i.i623 ], [ 0, %381 ] %384 = getelementptr inbounds nuw i32, ptr %380, i64 %.07.i.i.i624 - %385 = getelementptr inbounds nuw i32, ptr %.pre1014, i64 %.07.i.i.i624 + %385 = getelementptr inbounds nuw i32, ptr %.pre1013, i64 %.07.i.i.i624 %386 = load i32, ptr %385, align 4 store i32 %386, ptr %384, align 4 %387 = add nuw nsw i64 %.07.i.i.i624, 1 @@ -824,7 +824,7 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit: ; br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit, %381, %.noexc629 - %388 = phi ptr [ %.pre, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit ], [ %.pre1014, %381 ], [ %.pre1014, %.noexc629 ] + %388 = phi ptr [ %.pre, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i622.loopexit ], [ %.pre1013, %381 ], [ %.pre1013, %.noexc629 ] invoke void @_Z6rcFreePv(ptr noundef %388) to label %.noexc630 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -1912,7 +1912,7 @@ _ZN10rcIntArrayixEi.exit150.i: ; preds = %.noexc342, %.noexc3 .noexc470: ; preds = %.noexc469 %.not.i.i466 = icmp eq ptr %822, null - %.pre1016 = load ptr, ptr %228, align 8 + %.pre1015 = load ptr, ptr %228, align 8 br i1 %.not.i.i466, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i, label %823 823: ; preds = %.noexc470 @@ -1923,7 +1923,7 @@ _ZN10rcIntArrayixEi.exit150.i: ; preds = %.noexc342, %.noexc3 .lr.ph.i.i.i: ; preds = %823, %.lr.ph.i.i.i %.07.i.i.i = phi i64 [ %829, %.lr.ph.i.i.i ], [ 0, %823 ] %826 = getelementptr inbounds nuw i32, ptr %822, i64 %.07.i.i.i - %827 = getelementptr inbounds nuw i32, ptr %.pre1016, i64 %.07.i.i.i + %827 = getelementptr inbounds nuw i32, ptr %.pre1015, i64 %.07.i.i.i %828 = load i32, ptr %827, align 4 store i32 %828, ptr %826, align 4 %829 = add nuw nsw i64 %.07.i.i.i, 1 @@ -1931,11 +1931,11 @@ _ZN10rcIntArrayixEi.exit150.i: ; preds = %.noexc342, %.noexc3 br i1 %exitcond.not.i.i.i, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit, label %.lr.ph.i.i.i, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit: ; preds = %.lr.ph.i.i.i - %.pre1015 = load ptr, ptr %228, align 8 + %.pre1014 = load ptr, ptr %228, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit, %823, %.noexc470 - %830 = phi ptr [ %.pre1015, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit ], [ %.pre1016, %823 ], [ %.pre1016, %.noexc470 ] + %830 = phi ptr [ %.pre1014, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i.loopexit ], [ %.pre1015, %823 ], [ %.pre1015, %.noexc470 ] invoke void @_Z6rcFreePv(ptr noundef %830) to label %.noexc471 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -2304,12 +2304,12 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, to label %.noexc381 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc381: ; preds = %_ZL13polyMinExtentPKfi.exit.i - %brmerge567.i = or i1 %231, %937 - br i1 %brmerge567.i, label %._crit_edge.i594, label %.lr.ph442.i + %brmerge569.i = or i1 %231, %937 + br i1 %brmerge569.i, label %._crit_edge.i594, label %.lr.ph442.i .lr.ph442.i: ; preds = %.noexc381 %993 = add nsw i32 %.0259.lcssa, -1 - %wide.trip.count533.i = zext nneg i32 %.0259.lcssa to i64 + %wide.trip.count535.i = zext nneg i32 %.0259.lcssa to i64 %994 = load float, ptr %232, align 8 %995 = add nsw i32 %288, -1 %996 = add nsw i32 %292, -1 @@ -2317,13 +2317,13 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, 997: ; preds = %.loopexit401.i, %.lr.ph442.i %.0798 = phi i32 [ %.0259.lcssa, %.lr.ph442.i ], [ %.1799, %.loopexit401.i ] - %indvars.iv530.i = phi i64 [ 0, %.lr.ph442.i ], [ %indvars.iv.next531.i, %.loopexit401.i ] + %indvars.iv532.i = phi i64 [ 0, %.lr.ph442.i ], [ %indvars.iv.next533.i, %.loopexit401.i ] %.1440.i = phi i32 [ 0, %.lr.ph442.i ], [ %.4.i, %.loopexit401.i ] %.0234438.i = phi i32 [ %993, %.lr.ph442.i ], [ %1238, %.loopexit401.i ] %998 = mul nsw i32 %.0234438.i, 3 %999 = sext i32 %998 to i64 %1000 = getelementptr inbounds float, ptr %98, i64 %999 - %.idx.i = mul nuw nsw i64 %indvars.iv530.i, 12 + %.idx.i = mul nuw nsw i64 %indvars.iv532.i, 12 %1001 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx.i %1002 = load float, ptr %1000, align 4 %1003 = load float, ptr %1001, align 4 @@ -2384,8 +2384,8 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, .lr.ph414.i: ; preds = %1017 %1040 = uitofp nneg i32 %spec.select.i to float - %narrow = add nuw i32 %spec.select.i, 1 - %1041 = zext i32 %narrow to i64 + %smin.i = add nuw i32 %spec.select.i, 1 + %reass.sub = zext i32 %smin.i to i64 br label %1042 1042: ; preds = %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i, %.lr.ph414.i @@ -2420,8 +2420,8 @@ _ZL13polyMinExtentPKfi.exit.i: ; preds = %._crit_edge.us.i.i, %1068 = sext i32 %1067 to i64 %1069 = getelementptr inbounds i16, ptr %184, i64 %1068 %1070 = load i16, ptr %1069, align 2 - %.not1030 = icmp eq i16 %1070, -1 - br i1 %.not1030, label %.lr.ph.i.i361, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i + %.not1029 = icmp eq i16 %1070, -1 + br i1 %.not1029, label %.lr.ph.i.i361, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i .lr.ph.i.i361: ; preds = %1042 %1071 = call float @llvm.fmuladd.f32(float %1025, float %1045, float %1024) @@ -2524,8 +2524,8 @@ _ZL9getHeightffffffiRK13rcHeightPatch.exit.i: ; preds = %1112, %1096, %1042 %1116 = fmul float %994, %1115 store float %1116, ptr %1049, align 4 %indvars.iv.next503.i = add nuw nsw i64 %indvars.iv502.i, 1 - %exitcond975.not = icmp eq i64 %indvars.iv.next503.i, %1041 - br i1 %exitcond975.not, label %._crit_edge415.i, label %1042, !llvm.loop !26 + %exitcond506.not.i = icmp eq i64 %indvars.iv.next503.i, %reass.sub + br i1 %exitcond506.not.i, label %._crit_edge415.i, label %1042, !llvm.loop !26 ._crit_edge415.i: ; preds = %_ZL9getHeightffffffiRK13rcHeightPatch.exit.i, %1017 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(128) %20, i8 0, i64 128, i1 false) @@ -2575,10 +2575,10 @@ _ZL9getHeightffffffiRK13rcHeightPatch.exit.i: ; preds = %1112, %1096, %1042 br label %1151 1151: ; preds = %_ZL13distancePtSegPKfS0_S0_.exit.i, %.lr.ph421.i - %indvars.iv505.i = phi i64 [ %1150, %.lr.ph421.i ], [ %indvars.iv.next506.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] + %indvars.iv507.i = phi i64 [ %1150, %.lr.ph421.i ], [ %indvars.iv.next508.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] %.0245418.i = phi i32 [ -1, %.lr.ph421.i ], [ %.1246.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] %.0247417.i = phi float [ 0.000000e+00, %.lr.ph421.i ], [ %.1248.i, %_ZL13distancePtSegPKfS0_S0_.exit.i ] - %1152 = mul nsw i64 %indvars.iv505.i, 3 + %1152 = mul nsw i64 %indvars.iv507.i, 3 %1153 = getelementptr inbounds [99 x float], ptr %18, i64 0, i64 %1152 %1154 = load float, ptr %1153, align 4 %1155 = fsub float %1154, %1133 @@ -2616,12 +2616,12 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 %1178 = call noundef float @llvm.fmuladd.f32(float %1175, float %1175, float %1177) %1179 = fcmp ogt float %1178, %.0247417.i %.1248.i = select i1 %1179, float %1178, float %.0247417.i - %1180 = trunc nsw i64 %indvars.iv505.i to i32 + %1180 = trunc nsw i64 %indvars.iv507.i to i32 %.1246.i = select i1 %1179, i32 %1180, i32 %.0245418.i - %indvars.iv.next506.i = add nsw i64 %indvars.iv505.i, 1 - %lftr.wideiv.i = trunc i64 %indvars.iv.next506.i to i32 - %exitcond508.not.i = icmp eq i32 %1124, %lftr.wideiv.i - br i1 %exitcond508.not.i, label %._crit_edge422.i, label %1151, !llvm.loop !27 + %indvars.iv.next508.i = add nsw i64 %indvars.iv507.i, 1 + %lftr.wideiv.i = trunc i64 %indvars.iv.next508.i to i32 + %exitcond510.not.i = icmp eq i32 %1124, %lftr.wideiv.i + br i1 %exitcond510.not.i, label %._crit_edge422.i, label %1151, !llvm.loop !27 ._crit_edge422.i: ; preds = %_ZL13distancePtSegPKfS0_S0_.exit.i %.not259.i = icmp ne i32 %.1246.i, -1 @@ -2638,13 +2638,13 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 br label %.lr.ph425.i .lr.ph425.i: ; preds = %.lr.ph425.i, %.lr.ph425.preheader.i - %indvars.iv511.i = phi i64 [ %1183, %.lr.ph425.preheader.i ], [ %indvars.iv.next512.i, %.lr.ph425.i ] - %indvars.iv.next512.i = add nsw i64 %indvars.iv511.i, -1 - %1184 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv.next512.i + %indvars.iv513.i = phi i64 [ %1183, %.lr.ph425.preheader.i ], [ %indvars.iv.next514.i, %.lr.ph425.i ] + %indvars.iv.next514.i = add nsw i64 %indvars.iv513.i, -1 + %1184 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv.next514.i %1185 = load i32, ptr %1184, align 4 - %1186 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv511.i + %1186 = getelementptr inbounds [32 x i32], ptr %20, i64 0, i64 %indvars.iv513.i store i32 %1185, ptr %1186, align 4 - %1187 = icmp sgt i64 %indvars.iv.next512.i, %1118 + %1187 = icmp sgt i64 %indvars.iv.next514.i, %1118 br i1 %1187, label %.lr.ph425.i, label %._crit_edge426.i, !llvm.loop !28 ._crit_edge426.i: ; preds = %.lr.ph425.i, %.preheader400.i @@ -2672,7 +2672,7 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 .lr.ph431.preheader.i: ; preds = %.preheader402.i %1196 = sext i32 %1192 to i64 - %wide.trip.count521.i = zext nneg i32 %1189 to i64 + %wide.trip.count523.i = zext nneg i32 %1189 to i64 %1197 = sext i32 %.0798 to i64 br label %.lr.ph431.i @@ -2687,12 +2687,12 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 br label %.lr.ph436.i .lr.ph436.i: ; preds = %.lr.ph436.i, %.lr.ph436.preheader.i - %indvars.iv979 = phi i64 [ %indvars.iv.next980, %.lr.ph436.i ], [ %1202, %.lr.ph436.preheader.i ] - %indvars.iv525.i = phi i64 [ %indvars.iv.next526.i, %.lr.ph436.i ], [ %1201, %.lr.ph436.preheader.i ] - %indvars.iv523.i = phi i64 [ %indvars.iv.next524.i, %.lr.ph436.i ], [ %1200, %.lr.ph436.preheader.i ] - %.idx1032 = mul nsw i64 %indvars.iv979, 12 - %1203 = getelementptr inbounds i8, ptr %36, i64 %.idx1032 - %1204 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv525.i + %indvars.iv978 = phi i64 [ %indvars.iv.next979, %.lr.ph436.i ], [ %1202, %.lr.ph436.preheader.i ] + %indvars.iv527.i = phi i64 [ %indvars.iv.next528.i, %.lr.ph436.i ], [ %1201, %.lr.ph436.preheader.i ] + %indvars.iv525.i = phi i64 [ %indvars.iv.next526.i, %.lr.ph436.i ], [ %1200, %.lr.ph436.preheader.i ] + %.idx1031 = mul nsw i64 %indvars.iv978, 12 + %1203 = getelementptr inbounds i8, ptr %36, i64 %.idx1031 + %1204 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv527.i %1205 = load i32, ptr %1204, align 4 %1206 = mul nsw i32 %1205, 3 %1207 = sext i32 %1206 to i64 @@ -2707,22 +2707,22 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 %1214 = load float, ptr %1213, align 4 %1215 = getelementptr inbounds nuw i8, ptr %1203, i64 8 store float %1214, ptr %1215, align 4 - %indvars.iv.next524.i = add nsw i64 %indvars.iv523.i, 1 - %1216 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv523.i - %1217 = trunc nsw i64 %indvars.iv979 to i32 + %indvars.iv.next526.i = add nsw i64 %indvars.iv525.i, 1 + %1216 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv525.i + %1217 = trunc nsw i64 %indvars.iv978 to i32 store i32 %1217, ptr %1216, align 4 - %indvars.iv.next980 = add nsw i64 %indvars.iv979, 1 - %indvars.iv.next526.i = add nsw i64 %indvars.iv525.i, -1 - %1218 = icmp samesign ugt i64 %indvars.iv525.i, 1 + %indvars.iv.next979 = add nsw i64 %indvars.iv978, 1 + %indvars.iv.next528.i = add nsw i64 %indvars.iv527.i, -1 + %1218 = icmp samesign ugt i64 %indvars.iv527.i, 1 br i1 %1218, label %.lr.ph436.i, label %.loopexit401.loopexit.i, !llvm.loop !30 .lr.ph431.i: ; preds = %.lr.ph431.i, %.lr.ph431.preheader.i - %indvars.iv976 = phi i64 [ %indvars.iv.next977, %.lr.ph431.i ], [ %1197, %.lr.ph431.preheader.i ] - %indvars.iv516.i = phi i64 [ %indvars.iv.next517.i, %.lr.ph431.i ], [ 1, %.lr.ph431.preheader.i ] - %indvars.iv514.i = phi i64 [ %indvars.iv.next515.i, %.lr.ph431.i ], [ %1196, %.lr.ph431.preheader.i ] - %.idx1031 = mul nsw i64 %indvars.iv976, 12 - %1219 = getelementptr inbounds i8, ptr %36, i64 %.idx1031 - %1220 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv516.i + %indvars.iv975 = phi i64 [ %indvars.iv.next976, %.lr.ph431.i ], [ %1197, %.lr.ph431.preheader.i ] + %indvars.iv518.i = phi i64 [ %indvars.iv.next519.i, %.lr.ph431.i ], [ 1, %.lr.ph431.preheader.i ] + %indvars.iv516.i = phi i64 [ %indvars.iv.next517.i, %.lr.ph431.i ], [ %1196, %.lr.ph431.preheader.i ] + %.idx1030 = mul nsw i64 %indvars.iv975, 12 + %1219 = getelementptr inbounds i8, ptr %36, i64 %.idx1030 + %1220 = getelementptr inbounds nuw [32 x i32], ptr %20, i64 0, i64 %indvars.iv518.i %1221 = load i32, ptr %1220, align 4 %1222 = mul nsw i32 %1221, 3 %1223 = sext i32 %1222 to i64 @@ -2737,32 +2737,32 @@ _ZL13distancePtSegPKfS0_S0_.exit.i: ; preds = %1169, %1167, %1151 %1230 = load float, ptr %1229, align 4 %1231 = getelementptr inbounds nuw i8, ptr %1219, i64 8 store float %1230, ptr %1231, align 4 - %indvars.iv.next515.i = add nsw i64 %indvars.iv514.i, 1 - %1232 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv514.i - %1233 = trunc nsw i64 %indvars.iv976 to i32 + %indvars.iv.next517.i = add nsw i64 %indvars.iv516.i, 1 + %1232 = getelementptr inbounds [127 x i32], ptr %19, i64 0, i64 %indvars.iv516.i + %1233 = trunc nsw i64 %indvars.iv975 to i32 store i32 %1233, ptr %1232, align 4 - %indvars.iv.next977 = add nsw i64 %indvars.iv976, 1 - %indvars.iv.next517.i = add nuw nsw i64 %indvars.iv516.i, 1 - %exitcond522.not.i = icmp eq i64 %indvars.iv.next517.i, %wide.trip.count521.i - br i1 %exitcond522.not.i, label %.loopexit401.loopexit487.i, label %.lr.ph431.i, !llvm.loop !31 + %indvars.iv.next976 = add nsw i64 %indvars.iv975, 1 + %indvars.iv.next519.i = add nuw nsw i64 %indvars.iv518.i, 1 + %exitcond524.not.i = icmp eq i64 %indvars.iv.next519.i, %wide.trip.count523.i + br i1 %exitcond524.not.i, label %.loopexit401.loopexit487.i, label %.lr.ph431.i, !llvm.loop !31 .loopexit401.loopexit.i: ; preds = %.lr.ph436.i - %1234 = trunc nsw i64 %indvars.iv.next980 to i32 - %1235 = trunc nsw i64 %indvars.iv.next524.i to i32 + %1234 = trunc nsw i64 %indvars.iv.next979 to i32 + %1235 = trunc nsw i64 %indvars.iv.next526.i to i32 br label %.loopexit401.i .loopexit401.loopexit487.i: ; preds = %.lr.ph431.i - %1236 = trunc nsw i64 %indvars.iv.next977 to i32 - %1237 = trunc nsw i64 %indvars.iv.next515.i to i32 + %1236 = trunc nsw i64 %indvars.iv.next976 to i32 + %1237 = trunc nsw i64 %indvars.iv.next517.i to i32 br label %.loopexit401.i .loopexit401.i: ; preds = %.loopexit401.loopexit487.i, %.loopexit401.loopexit.i, %1198, %.preheader402.i %.1799 = phi i32 [ %1234, %.loopexit401.loopexit.i ], [ %.0798, %1198 ], [ %1236, %.loopexit401.loopexit487.i ], [ %.0798, %.preheader402.i ] %.4.i = phi i32 [ %1235, %.loopexit401.loopexit.i ], [ %1192, %1198 ], [ %1237, %.loopexit401.loopexit487.i ], [ %1192, %.preheader402.i ] - %indvars.iv.next531.i = add nuw nsw i64 %indvars.iv530.i, 1 - %1238 = trunc nuw nsw i64 %indvars.iv530.i to i32 - %exitcond534.not.i = icmp eq i64 %indvars.iv.next531.i, %wide.trip.count533.i - br i1 %exitcond534.not.i, label %.loopexit404.i, label %997, !llvm.loop !32 + %indvars.iv.next533.i = add nuw nsw i64 %indvars.iv532.i, 1 + %1238 = trunc nuw nsw i64 %indvars.iv532.i to i32 + %exitcond536.not.i = icmp eq i64 %indvars.iv.next533.i, %wide.trip.count535.i + br i1 %exitcond536.not.i, label %.loopexit404.i, label %997, !llvm.loop !32 .loopexit404.i: ; preds = %.loopexit401.i %1239 = add nsw i32 %.4.i, -1 @@ -3300,19 +3300,19 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i637: ; preds = % br i1 %1472, label %.lr.ph452.preheader.i, label %._crit_edge453.i .lr.ph452.preheader.i: ; preds = %1468 - %wide.trip.count538.i = zext nneg i32 %.0259.lcssa to i64 + %wide.trip.count540.i = zext nneg i32 %.0259.lcssa to i64 br label %.lr.ph452.i .lr.ph452.i: ; preds = %.lr.ph452.i, %.lr.ph452.preheader.i - %indvars.iv535.i = phi i64 [ 1, %.lr.ph452.preheader.i ], [ %indvars.iv.next536.i, %.lr.ph452.i ] + %indvars.iv537.i = phi i64 [ 1, %.lr.ph452.preheader.i ], [ %indvars.iv.next538.i, %.lr.ph452.i ] %.sroa.8376.0449.i = phi float [ %1471, %.lr.ph452.preheader.i ], [ %1484, %.lr.ph452.i ] %.sroa.4374.0448.i = phi float [ %1470, %.lr.ph452.preheader.i ], [ %1480, %.lr.ph452.i ] %.sroa.0372.0447.i = phi float [ %1469, %.lr.ph452.preheader.i ], [ %1476, %.lr.ph452.i ] %.sroa.8.0446.i = phi float [ %1471, %.lr.ph452.preheader.i ], [ %1490, %.lr.ph452.i ] %.sroa.0368.0445.i = phi float [ %1469, %.lr.ph452.preheader.i ], [ %1486, %.lr.ph452.i ] %.sroa.4.0444.i = phi float [ %1470, %.lr.ph452.preheader.i ], [ %1488, %.lr.ph452.i ] - %.idx548.i = mul nuw nsw i64 %indvars.iv535.i, 12 - %1473 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx548.i + %.idx550.i = mul nuw nsw i64 %indvars.iv537.i, 12 + %1473 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx550.i %1474 = load float, ptr %1473, align 4 %1475 = fcmp olt float %.sroa.0372.0447.i, %1474 %1476 = select i1 %1475, float %.sroa.0372.0447.i, float %1474 @@ -3330,9 +3330,9 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i637: ; preds = % %1488 = select i1 %1487, float %.sroa.4.0444.i, float %1478 %1489 = fcmp ogt float %.sroa.8.0446.i, %1482 %1490 = select i1 %1489, float %.sroa.8.0446.i, float %1482 - %indvars.iv.next536.i = add nuw nsw i64 %indvars.iv535.i, 1 - %exitcond539.not.i = icmp eq i64 %indvars.iv.next536.i, %wide.trip.count538.i - br i1 %exitcond539.not.i, label %._crit_edge453.i, label %.lr.ph452.i, !llvm.loop !35 + %indvars.iv.next538.i = add nuw nsw i64 %indvars.iv537.i, 1 + %exitcond541.not.i = icmp eq i64 %indvars.iv.next538.i, %wide.trip.count540.i + br i1 %exitcond541.not.i, label %._crit_edge453.i, label %.lr.ph452.i, !llvm.loop !35 ._crit_edge453.i: ; preds = %.lr.ph452.i, %1468 %.sroa.4.0.lcssa.i = phi float [ %1470, %1468 ], [ %1488, %.lr.ph452.i ] @@ -3573,8 +3573,8 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit.us.i: ; preds = %1600, % %1613 = sext i32 %1612 to i64 %1614 = getelementptr inbounds i16, ptr %184, i64 %1613 %1615 = load i16, ptr %1614, align 2 - %.not1033 = icmp eq i16 %1615, -1 - br i1 %.not1033, label %.lr.ph.i274.us.i, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit297.us.i + %.not1032 = icmp eq i16 %1615, -1 + br i1 %.not1032, label %.lr.ph.i274.us.i, label %_ZL9getHeightffffffiRK13rcHeightPatch.exit297.us.i .lr.ph.i274.us.i: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit.us.i, %1654 %.1100.i275.us.i = phi i16 [ %.2.i286.us.i, %1654 ], [ -1, %_ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit.us.i ] @@ -3919,13 +3919,13 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i353.us.i: ; pred _ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit359.us.i: ; preds = %1747, %.noexc404, %_ZL10distToPolyiPKfS0_.exit.us.i %1751 = add i32 %.0232460.us.i, 1 - %exitcond540.not.i = icmp eq i32 %1751, %1496 - br i1 %exitcond540.not.i, label %._crit_edge463.us.i, label %1520, !llvm.loop !37 + %exitcond542.not.i = icmp eq i32 %1751, %1496 + br i1 %exitcond542.not.i, label %._crit_edge463.us.i, label %1520, !llvm.loop !37 ._crit_edge463.us.i: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit359.us.i %1752 = add i32 %.0233464.us.i, 1 - %exitcond541.not.i = icmp eq i32 %1752, %1502 - br i1 %exitcond541.not.i, label %._crit_edge465.i, label %.preheader399.us.i, !llvm.loop !38 + %exitcond543.not.i = icmp eq i32 %1752, %1502 + br i1 %exitcond543.not.i, label %._crit_edge465.i, label %.preheader399.us.i, !llvm.loop !38 ._crit_edge465.i: ; preds = %._crit_edge463.us.i %.pre.i365 = load i64, ptr %35, align 8 @@ -3938,23 +3938,23 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE9push_backERKi.exit359.us.i: ; preds = %1747 .preheader.lr.ph.i: ; preds = %._crit_edge465.i %wide.trip.count.i313.i = zext nneg i32 %.0223.i804 to i64 - %wide.trip.count545.i = zext nneg i32 %1754 to i64 + %wide.trip.count547.i = zext nneg i32 %1754 to i64 %1757 = sext i32 %.2800803 to i64 br label %.lr.ph472.preheader.i .lr.ph472.preheader.i: ; preds = %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i, %.preheader.lr.ph.i - %indvars.iv982 = phi i64 [ %indvars.iv.next983, %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i ], [ %1757, %.preheader.lr.ph.i ] + %indvars.iv981 = phi i64 [ %indvars.iv.next982, %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i ], [ %1757, %.preheader.lr.ph.i ] %.0230480.i = phi i32 [ %2238, %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i ], [ 0, %.preheader.lr.ph.i ] br label %.lr.ph472.i .lr.ph472.i: ; preds = %1884, %.lr.ph472.preheader.i - %indvars.iv542.i = phi i64 [ 0, %.lr.ph472.preheader.i ], [ %indvars.iv.next543.i, %1884 ] + %indvars.iv544.i = phi i64 [ 0, %.lr.ph472.preheader.i ], [ %indvars.iv.next545.i, %1884 ] %.0226470.i = phi i32 [ -1, %.lr.ph472.preheader.i ], [ %.1227.i, %1884 ] %.0228469.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.1229.i, %1884 ] %.sroa.5.1468.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.sroa.5.2.i, %1884 ] %.sroa.3364.1467.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.sroa.3364.2.i, %1884 ] %.sroa.0363.1466.i = phi float [ 0.000000e+00, %.lr.ph472.preheader.i ], [ %.sroa.0363.2.i, %1884 ] - %1758 = shl nsw i64 %indvars.iv542.i, 2 + %1758 = shl nsw i64 %indvars.iv544.i, 2 %1759 = invoke noundef ptr @_Z21rcAssertFailGetCustomv() to label %.noexc405 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -3980,7 +3980,7 @@ _ZN10rcIntArrayixEi.exit.i366: ; preds = %1763, %.noexc405 1768: ; preds = %_ZN10rcIntArrayixEi.exit.i366 %1769 = load i32, ptr %1765, align 4 %1770 = sitofp i32 %1769 to float - %1771 = trunc nuw nsw i64 %indvars.iv542.i to i32 + %1771 = trunc nuw nsw i64 %indvars.iv544.i to i32 %1772 = mul i32 %1771, 45891 %1773 = and i32 %1772, 65535 %1774 = uitofp nneg i32 %1773 to float @@ -4020,11 +4020,11 @@ _ZN10rcIntArrayixEi.exit.i366: ; preds = %1763, %.noexc405 to label %.noexc408 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit .noexc408: ; preds = %1800 - %.pre547.i = load i64, ptr %33, align 8 + %.pre549.i = load i64, ptr %33, align 8 br label %_ZN10rcIntArrayixEi.exit299.i _ZN10rcIntArrayixEi.exit299.i: ; preds = %.noexc408, %.noexc407 - %1801 = phi i64 [ %1798, %.noexc407 ], [ %.pre547.i, %.noexc408 ] + %1801 = phi i64 [ %1798, %.noexc407 ], [ %.pre549.i, %.noexc408 ] %1802 = load ptr, ptr %240, align 8 %1803 = trunc i64 %1801 to i32 %1804 = icmp sgt i32 %1803, 3 @@ -4142,9 +4142,9 @@ _ZL13distToTriMeshPKfS0_iPKii.exit.i: ; preds = %_ZL9distPtTriPKfS0_ %.sroa.5.2.i = phi float [ %1795, %1883 ], [ %.sroa.5.1468.i, %_ZL13distToTriMeshPKfS0_iPKii.exit.i ], [ %.sroa.5.1468.i, %_ZN10rcIntArrayixEi.exit.i366 ] %.1229.i = phi float [ %..021.i.i, %1883 ], [ %.0228469.i, %_ZL13distToTriMeshPKfS0_iPKii.exit.i ], [ %.0228469.i, %_ZN10rcIntArrayixEi.exit.i366 ] %.1227.i = phi i32 [ %1771, %1883 ], [ %.0226470.i, %_ZL13distToTriMeshPKfS0_iPKii.exit.i ], [ %.0226470.i, %_ZN10rcIntArrayixEi.exit.i366 ] - %indvars.iv.next543.i = add nuw nsw i64 %indvars.iv542.i, 1 - %exitcond546.not.i = icmp eq i64 %indvars.iv.next543.i, %wide.trip.count545.i - br i1 %exitcond546.not.i, label %._crit_edge473.i, label %.lr.ph472.i, !llvm.loop !40 + %indvars.iv.next545.i = add nuw nsw i64 %indvars.iv544.i, 1 + %exitcond548.not.i = icmp eq i64 %indvars.iv.next545.i, %wide.trip.count547.i + br i1 %exitcond548.not.i, label %._crit_edge473.i, label %.lr.ph472.i, !llvm.loop !40 ._crit_edge473.i: ; preds = %1884 %1885 = fcmp ole float %.1229.i, %4 @@ -4178,28 +4178,28 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex %1898 = load ptr, ptr %245, align 8 %1899 = getelementptr inbounds i32, ptr %1898, i64 %1890 store i32 1, ptr %1899, align 4 - %.idx1034 = mul nsw i64 %indvars.iv982, 12 - %1900 = getelementptr inbounds i8, ptr %36, i64 %.idx1034 + %.idx1033 = mul nsw i64 %indvars.iv981, 12 + %1900 = getelementptr inbounds i8, ptr %36, i64 %.idx1033 store float %.sroa.0363.2.i, ptr %1900, align 4 %1901 = getelementptr inbounds nuw i8, ptr %1900, i64 4 store float %.sroa.3364.2.i, ptr %1901, align 4 %1902 = getelementptr inbounds nuw i8, ptr %1900, i64 8 store float %.sroa.5.2.i, ptr %1902, align 4 - %indvars.iv.next983 = add nsw i64 %indvars.iv982, 1 - %indvars = trunc i64 %indvars.iv.next983 to i32 + %indvars.iv.next982 = add nsw i64 %indvars.iv981, 1 + %indvars = trunc i64 %indvars.iv.next982 to i32 store i64 0, ptr %32, align 8 store i64 0, ptr %33, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) store i32 0, ptr %16, align 4 - %1903 = mul nsw i64 %indvars.iv.next983, 10 + %1903 = mul nsw i64 %indvars.iv.next982, 10 %1904 = mul nsw i32 %indvars, 10 - %1905 = mul nsw i64 %indvars.iv.next983, 40 - %1906 = icmp slt i64 %indvars.iv982, -1 + %1905 = mul nsw i64 %indvars.iv.next982, 40 + %1906 = icmp slt i64 %indvars.iv981, -1 br i1 %1906, label %.sink.split.i579, label %1907 1907: ; preds = %_ZN10rcIntArrayixEi.exit309.i - %.not809 = icmp eq i64 %indvars.iv.next983, 0 + %.not809 = icmp eq i64 %indvars.iv.next982, 0 br i1 %.not809, label %.noexc411, label %1908 1908: ; preds = %1907 @@ -4237,7 +4237,7 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex .noexc591: ; preds = %.noexc590 %.not.i.i583 = icmp eq ptr %1920, null - %.pre1018 = load ptr, ptr %246, align 8 + %.pre1017 = load ptr, ptr %246, align 8 br i1 %.not.i.i583, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584, label %1921 1921: ; preds = %.noexc591 @@ -4248,7 +4248,7 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex .lr.ph.i.i.i585: ; preds = %1921, %.lr.ph.i.i.i585 %.07.i.i.i586 = phi i64 [ %1927, %.lr.ph.i.i.i585 ], [ 0, %1921 ] %1924 = getelementptr inbounds nuw i32, ptr %1920, i64 %.07.i.i.i586 - %1925 = getelementptr inbounds nuw i32, ptr %.pre1018, i64 %.07.i.i.i586 + %1925 = getelementptr inbounds nuw i32, ptr %.pre1017, i64 %.07.i.i.i586 %1926 = load i32, ptr %1925, align 4 store i32 %1926, ptr %1924, align 4 %1927 = add nuw nsw i64 %.07.i.i.i586, 1 @@ -4256,11 +4256,11 @@ _ZN10rcIntArrayixEi.exit309.i: ; preds = %1897, %1893, %.noex br i1 %exitcond.not.i.i.i587, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit, label %.lr.ph.i.i.i585, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit: ; preds = %.lr.ph.i.i.i585 - %.pre1017 = load ptr, ptr %246, align 8 + %.pre1016 = load ptr, ptr %246, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit, %1921, %.noexc591 - %1928 = phi ptr [ %.pre1017, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit ], [ %.pre1018, %1921 ], [ %.pre1018, %.noexc591 ] + %1928 = phi ptr [ %.pre1016, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i584.loopexit ], [ %.pre1017, %1921 ], [ %.pre1017, %.noexc591 ] invoke void @_Z6rcFreePv(ptr noundef %1928) to label %.noexc592 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -4530,7 +4530,7 @@ _ZN10rcIntArrayixEi.exit117.i.i: ; preds = %2006, %.noexc422 .noexc575: ; preds = %.noexc574 %.not.i.i567 = icmp eq ptr %2031, null - %.pre1020 = load ptr, ptr %240, align 8 + %.pre1019 = load ptr, ptr %240, align 8 br i1 %.not.i.i567, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568, label %2032 2032: ; preds = %.noexc575 @@ -4541,7 +4541,7 @@ _ZN10rcIntArrayixEi.exit117.i.i: ; preds = %2006, %.noexc422 .lr.ph.i.i.i569: ; preds = %2032, %.lr.ph.i.i.i569 %.07.i.i.i570 = phi i64 [ %2038, %.lr.ph.i.i.i569 ], [ 0, %2032 ] %2035 = getelementptr inbounds nuw i32, ptr %2031, i64 %.07.i.i.i570 - %2036 = getelementptr inbounds nuw i32, ptr %.pre1020, i64 %.07.i.i.i570 + %2036 = getelementptr inbounds nuw i32, ptr %.pre1019, i64 %.07.i.i.i570 %2037 = load i32, ptr %2036, align 4 store i32 %2037, ptr %2035, align 4 %2038 = add nuw nsw i64 %.07.i.i.i570, 1 @@ -4549,11 +4549,11 @@ _ZN10rcIntArrayixEi.exit117.i.i: ; preds = %2006, %.noexc422 br i1 %exitcond.not.i.i.i571, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit, label %.lr.ph.i.i.i569, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit: ; preds = %.lr.ph.i.i.i569 - %.pre1019 = load ptr, ptr %240, align 8 + %.pre1018 = load ptr, ptr %240, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit, %2032, %.noexc575 - %2039 = phi ptr [ %.pre1019, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit ], [ %.pre1020, %2032 ], [ %.pre1020, %.noexc575 ] + %2039 = phi ptr [ %.pre1018, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i568.loopexit ], [ %.pre1019, %2032 ], [ %.pre1019, %.noexc575 ] invoke void @_Z6rcFreePv(ptr noundef %2039) to label %.noexc576 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -4798,10 +4798,10 @@ _ZN10rcIntArrayixEi.exit127.i.i: ; preds = %2135, %2131, %.noex %2143 = getelementptr inbounds nuw i8, ptr %2137, i64 8 %2144 = load i32, ptr %2143, align 4 %2145 = icmp eq i32 %2144, -1 - br i1 %2145, label %_ZN10rcIntArrayixEi.exit127._crit_edge.i.i, label %._crit_edge1023 + br i1 %2145, label %_ZN10rcIntArrayixEi.exit127._crit_edge.i.i, label %._crit_edge1022 -._crit_edge1023: ; preds = %2142 - %.pre1024 = load i64, ptr %33, align 8 +._crit_edge1022: ; preds = %2142 + %.pre1023 = load i64, ptr %33, align 8 %2146 = add nsw i32 %.0100171.i.i, 1 br label %.noexc445 @@ -4972,7 +4972,7 @@ _ZN10rcIntArrayixEi.exit135.i.i: ; preds = %2202, %2197, %.noex .noexc559: ; preds = %.noexc558 %.not.i.i551 = icmp eq ptr %2225, null - %.pre1022 = load ptr, ptr %240, align 8 + %.pre1021 = load ptr, ptr %240, align 8 br i1 %.not.i.i551, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552, label %2226 2226: ; preds = %.noexc559 @@ -4983,7 +4983,7 @@ _ZN10rcIntArrayixEi.exit135.i.i: ; preds = %2202, %2197, %.noex .lr.ph.i.i.i553: ; preds = %2226, %.lr.ph.i.i.i553 %.07.i.i.i554 = phi i64 [ %2232, %.lr.ph.i.i.i553 ], [ 0, %2226 ] %2229 = getelementptr inbounds nuw i32, ptr %2225, i64 %.07.i.i.i554 - %2230 = getelementptr inbounds nuw i32, ptr %.pre1022, i64 %.07.i.i.i554 + %2230 = getelementptr inbounds nuw i32, ptr %.pre1021, i64 %.07.i.i.i554 %2231 = load i32, ptr %2230, align 4 store i32 %2231, ptr %2229, align 4 %2232 = add nuw nsw i64 %.07.i.i.i554, 1 @@ -4991,11 +4991,11 @@ _ZN10rcIntArrayixEi.exit135.i.i: ; preds = %2202, %2197, %.noex br i1 %exitcond.not.i.i.i555, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit, label %.lr.ph.i.i.i553, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit: ; preds = %.lr.ph.i.i.i553 - %.pre1021 = load ptr, ptr %240, align 8 + %.pre1020 = load ptr, ptr %240, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit, %2226, %.noexc559 - %2233 = phi ptr [ %.pre1021, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit ], [ %.pre1022, %2226 ], [ %.pre1022, %.noexc559 ] + %2233 = phi ptr [ %.pre1020, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552.loopexit ], [ %.pre1021, %2226 ], [ %.pre1021, %.noexc559 ] invoke void @_Z6rcFreePv(ptr noundef %2233) to label %.noexc560 unwind label %.loopexit @@ -5008,9 +5008,9 @@ _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i552: ; preds = % store i64 %2209, ptr %33, align 8 br label %.noexc445 -.noexc445: ; preds = %2211, %.sink.split.i547, %._crit_edge1023 - %2234 = phi i64 [ %.pre1024, %._crit_edge1023 ], [ %2209, %.sink.split.i547 ], [ %2207, %2211 ] - %.1.i311.i = phi i32 [ %2146, %._crit_edge1023 ], [ %.0100171.i.i, %.sink.split.i547 ], [ %.0100171.i.i, %2211 ] +.noexc445: ; preds = %2211, %.sink.split.i547, %._crit_edge1022 + %2234 = phi i64 [ %.pre1023, %._crit_edge1022 ], [ %2209, %.sink.split.i547 ], [ %2207, %2211 ] + %.1.i311.i = phi i32 [ %2146, %._crit_edge1022 ], [ %.0100171.i.i, %.sink.split.i547 ], [ %.0100171.i.i, %2211 ] %2235 = trunc i64 %2234 to i32 %2236 = sdiv i32 %2235, 4 %2237 = icmp slt i32 %.1.i311.i, %2236 @@ -5021,12 +5021,12 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) %2238 = add nuw nsw i32 %.0230480.i, 1 %2239 = icmp sge i32 %2238, %1754 - %2240 = icmp sgt i64 %indvars.iv982, 125 + %2240 = icmp sgt i64 %indvars.iv981, 125 %or.cond261.i = select i1 %2239, i1 true, i1 %2240 br i1 %or.cond261.i, label %.loopexit.i363, label %.lr.ph472.preheader.i, !llvm.loop !47 .loopexit.i363.loopexit.split.loop.exit: ; preds = %._crit_edge473.i - %2241 = trunc nsw i64 %indvars.iv982 to i32 + %2241 = trunc nsw i64 %indvars.iv981 to i32 br label %.loopexit.i363 .loopexit.i363: ; preds = %_ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i, %.loopexit.i363.loopexit.split.loop.exit, %._crit_edge465.i, %.preheader399.lr.ph.i, %._crit_edge453.i, %1467 @@ -5074,7 +5074,7 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 .noexc543: ; preds = %.noexc542 %.not.i.i535 = icmp eq ptr %2259, null - %.pre1026 = load ptr, ptr %240, align 8 + %.pre1025 = load ptr, ptr %240, align 8 br i1 %.not.i.i535, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536, label %2260 2260: ; preds = %.noexc543 @@ -5085,7 +5085,7 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 .lr.ph.i.i.i537: ; preds = %2260, %.lr.ph.i.i.i537 %.07.i.i.i538 = phi i64 [ %2266, %.lr.ph.i.i.i537 ], [ 0, %2260 ] %2263 = getelementptr inbounds nuw i32, ptr %2259, i64 %.07.i.i.i538 - %2264 = getelementptr inbounds nuw i32, ptr %.pre1026, i64 %.07.i.i.i538 + %2264 = getelementptr inbounds nuw i32, ptr %.pre1025, i64 %.07.i.i.i538 %2265 = load i32, ptr %2264, align 4 store i32 %2265, ptr %2263, align 4 %2266 = add nuw nsw i64 %.07.i.i.i538, 1 @@ -5093,11 +5093,11 @@ _ZL12delaunayHullP9rcContextiPKfiPKiR10rcIntArrayS6_.exit.i: ; preds = %.noexc44 br i1 %exitcond.not.i.i.i539, label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit, label %.lr.ph.i.i.i537, !llvm.loop !9 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit: ; preds = %.lr.ph.i.i.i537 - %.pre1025 = load ptr, ptr %240, align 8 + %.pre1024 = load ptr, ptr %240, align 8 br label %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536 _ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536: ; preds = %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit, %2260, %.noexc543 - %2267 = phi ptr [ %.pre1025, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit ], [ %.pre1026, %2260 ], [ %.pre1026, %.noexc543 ] + %2267 = phi ptr [ %.pre1024, %_ZN12rcVectorBaseIiL11rcAllocHint1EE17allocate_and_copyEl.exit.i536.loopexit ], [ %.pre1025, %2260 ], [ %.pre1025, %.noexc543 ] invoke void @_Z6rcFreePv(ptr noundef %2267) to label %.noexc544 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -5129,19 +5129,19 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2271 = load float, ptr %232, align 8 %2272 = fadd float %2270, %2271 %2273 = load float, ptr %249, align 8 - %wide.trip.count989 = zext nneg i32 %.7 to i64 + %wide.trip.count988 = zext nneg i32 %.7 to i64 br label %2274 .preheader843: ; preds = %2274, %_ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchPfRiR10rcIntArraySC_SC_.exit br i1 %937, label %._crit_edge912, label %.lr.ph911.preheader .lr.ph911.preheader: ; preds = %.preheader843 - %wide.trip.count995 = zext i32 %.0259.lcssa to i64 + %wide.trip.count994 = zext i32 %.0259.lcssa to i64 br label %.lr.ph911 2274: ; preds = %.lr.ph909, %2274 - %indvars.iv985 = phi i64 [ 0, %.lr.ph909 ], [ %indvars.iv.next986, %2274 ] - %2275 = mul nuw nsw i64 %indvars.iv985, 3 + %indvars.iv984 = phi i64 [ 0, %.lr.ph909 ], [ %indvars.iv.next985, %2274 ] + %2275 = mul nuw nsw i64 %indvars.iv984, 3 %2276 = getelementptr inbounds nuw [768 x float], ptr %36, i64 0, i64 %2275 %2277 = load float, ptr %2276, align 4 %2278 = fadd float %2269, %2277 @@ -5156,15 +5156,15 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2285 = load float, ptr %2284, align 4 %2286 = fadd float %2273, %2285 store float %2286, ptr %2284, align 4 - %indvars.iv.next986 = add nuw nsw i64 %indvars.iv985, 1 - %exitcond990.not = icmp eq i64 %indvars.iv.next986, %wide.trip.count989 - br i1 %exitcond990.not, label %.preheader843, label %2274, !llvm.loop !48 + %indvars.iv.next985 = add nuw nsw i64 %indvars.iv984, 1 + %exitcond989.not = icmp eq i64 %indvars.iv.next985, %wide.trip.count988 + br i1 %exitcond989.not, label %.preheader843, label %2274, !llvm.loop !48 .lr.ph911: ; preds = %.lr.ph911.preheader, %.lr.ph911 - %indvars.iv991 = phi i64 [ 0, %.lr.ph911.preheader ], [ %indvars.iv.next992, %.lr.ph911 ] + %indvars.iv990 = phi i64 [ 0, %.lr.ph911.preheader ], [ %indvars.iv.next991, %.lr.ph911 ] %2287 = load float, ptr %63, align 8 - %.idx1035 = mul nuw nsw i64 %indvars.iv991, 12 - %2288 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1035 + %.idx1034 = mul nuw nsw i64 %indvars.iv990, 12 + %2288 = getelementptr inbounds nuw i8, ptr %98, i64 %.idx1034 %2289 = load float, ptr %2288, align 4 %2290 = fadd float %2287, %2289 store float %2290, ptr %2288, align 4 @@ -5178,9 +5178,9 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2297 = load float, ptr %2296, align 4 %2298 = fadd float %2295, %2297 store float %2298, ptr %2296, align 4 - %indvars.iv.next992 = add nuw nsw i64 %indvars.iv991, 1 - %exitcond996.not = icmp eq i64 %indvars.iv.next992, %wide.trip.count995 - br i1 %exitcond996.not, label %._crit_edge912, label %.lr.ph911, !llvm.loop !49 + %indvars.iv.next991 = add nuw nsw i64 %indvars.iv990, 1 + %exitcond995.not = icmp eq i64 %indvars.iv.next991, %wide.trip.count994 + br i1 %exitcond995.not, label %._crit_edge912, label %.lr.ph911, !llvm.loop !49 ._crit_edge912: ; preds = %.lr.ph911, %.preheader843 %2299 = load i64, ptr %33, align 8 @@ -5249,14 +5249,14 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP br i1 %2268, label %.lr.ph915.preheader, label %._crit_edge916 .lr.ph915.preheader: ; preds = %2334 - %wide.trip.count1001 = zext nneg i32 %.7 to i64 - %.pre1027 = load i32, ptr %193, align 4 + %wide.trip.count1000 = zext nneg i32 %.7 to i64 + %.pre1026 = load i32, ptr %193, align 4 br label %.lr.ph915 .lr.ph915: ; preds = %.lr.ph915.preheader, %.lr.ph915 - %2335 = phi i32 [ %.pre1027, %.lr.ph915.preheader ], [ %2362, %.lr.ph915 ] - %indvars.iv997 = phi i64 [ 0, %.lr.ph915.preheader ], [ %indvars.iv.next998, %.lr.ph915 ] - %2336 = mul nuw nsw i64 %indvars.iv997, 3 + %2335 = phi i32 [ %.pre1026, %.lr.ph915.preheader ], [ %2362, %.lr.ph915 ] + %indvars.iv996 = phi i64 [ 0, %.lr.ph915.preheader ], [ %indvars.iv.next997, %.lr.ph915 ] + %2336 = mul nuw nsw i64 %indvars.iv996, 3 %2337 = getelementptr inbounds nuw [768 x float], ptr %36, i64 0, i64 %2336 %2338 = load float, ptr %2337, align 4 %2339 = load ptr, ptr %210, align 8 @@ -5287,9 +5287,9 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2361 = load i32, ptr %193, align 4 %2362 = add nsw i32 %2361, 1 store i32 %2362, ptr %193, align 4 - %indvars.iv.next998 = add nuw nsw i64 %indvars.iv997, 1 - %exitcond1002.not = icmp eq i64 %indvars.iv.next998, %wide.trip.count1001 - br i1 %exitcond1002.not, label %._crit_edge916, label %.lr.ph915, !llvm.loop !50 + %indvars.iv.next997 = add nuw nsw i64 %indvars.iv996, 1 + %exitcond1001.not = icmp eq i64 %indvars.iv.next997, %wide.trip.count1000 + br i1 %exitcond1001.not, label %._crit_edge916, label %.lr.ph915, !llvm.loop !50 ._crit_edge916: ; preds = %.lr.ph915, %2334 %2363 = load i32, ptr %194, align 8 @@ -5348,12 +5348,12 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP br i1 %2388, label %.lr.ph919.preheader, label %._crit_edge920 .lr.ph919.preheader: ; preds = %2387 - %wide.trip.count1008 = zext nneg i32 %2301 to i64 + %wide.trip.count1007 = zext nneg i32 %2301 to i64 br label %.lr.ph919 .lr.ph919: ; preds = %.lr.ph919.preheader, %2395 - %indvars.iv1004 = phi i64 [ 0, %.lr.ph919.preheader ], [ %indvars.iv.next1005, %2395 ] - %2389 = shl nsw i64 %indvars.iv1004, 2 + %indvars.iv1003 = phi i64 [ 0, %.lr.ph919.preheader ], [ %indvars.iv.next1004, %2395 ] + %2389 = shl nsw i64 %indvars.iv1003, 2 %2390 = invoke noundef ptr @_Z21rcAssertFailGetCustomv() to label %.noexc450 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit @@ -5412,20 +5412,20 @@ _ZL15buildPolyDetailP9rcContextPKfiffiRK20rcCompactHeightfieldRK13rcHeightPatchP %2432 = load i32, ptr %194, align 8 %2433 = add nsw i32 %2432, 1 store i32 %2433, ptr %194, align 8 - %indvars.iv.next1005 = add nuw nsw i64 %indvars.iv1004, 1 - %exitcond1009.not = icmp eq i64 %indvars.iv.next1005, %wide.trip.count1008 - br i1 %exitcond1009.not, label %._crit_edge920, label %.lr.ph919, !llvm.loop !51 + %indvars.iv.next1004 = add nuw nsw i64 %indvars.iv1003, 1 + %exitcond1008.not = icmp eq i64 %indvars.iv.next1004, %wide.trip.count1007 + br i1 %exitcond1008.not, label %._crit_edge920, label %.lr.ph919, !llvm.loop !51 ._crit_edge920: ; preds = %2395, %2387 - %indvars.iv.next1011 = add nuw nsw i64 %indvars.iv1010, 1 + %indvars.iv.next1010 = add nuw nsw i64 %indvars.iv1009, 1 %2434 = load i32, ptr %53, align 4 %2435 = sext i32 %2434 to i64 - %2436 = icmp slt i64 %indvars.iv.next1011, %2435 + %2436 = icmp slt i64 %indvars.iv.next1010, %2435 br i1 %2436, label %252, label %.loopexit855, !llvm.loop !52 -.loopexit855: ; preds = %._crit_edge920, %.invoke1068, %.invoke, %.preheader854 - %.sroa.0720.4 = phi ptr [ %184, %.preheader854 ], [ %184, %.invoke ], [ null, %.invoke1068 ], [ %184, %._crit_edge920 ] - %.2 = phi i1 [ true, %.preheader854 ], [ false, %.invoke ], [ false, %.invoke1068 ], [ true, %._crit_edge920 ] +.loopexit855: ; preds = %._crit_edge920, %.invoke1067, %.invoke, %.preheader854 + %.sroa.0720.4 = phi ptr [ %184, %.preheader854 ], [ %184, %.invoke ], [ null, %.invoke1067 ], [ %184, %._crit_edge920 ] + %.2 = phi i1 [ true, %.preheader854 ], [ false, %.invoke ], [ false, %.invoke1067 ], [ true, %._crit_edge920 ] invoke void @_Z6rcFreePv(ptr noundef %98) to label %_ZN14rcScopedDeleteIfED2Ev.exit452 unwind label %2437 diff --git a/bench/ruby/optimized/transcode.ll b/bench/ruby/optimized/transcode.ll index a5b0b8581c3..5c4c296862a 100644 --- a/bench/ruby/optimized/transcode.ll +++ b/bench/ruby/optimized/transcode.ll @@ -8071,9 +8071,9 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c i32 29, label %542 ], !llvm.loop !141 -.loopexit: ; preds = %75, %817, %792, %989, %936, %1165, %1108, %6, %651, %99, %641, %511, %382, %286, %222 - %.01129 = phi ptr [ %10, %6 ], [ %.201149, %651 ], [ %.191148, %641 ], [ %.151144, %511 ], [ %.111140, %382 ], [ %.81137, %286 ], [ %.61135, %222 ], [ %.31132, %99 ], [ %.291158, %1108 ], [ %.301159, %1165 ], [ %.261155, %936 ], [ %.271156, %989 ], [ %.221151, %792 ], [ %.231152, %817 ], [ %.21131, %75 ] - %.01093 = phi ptr [ %11, %6 ], [ %.201113, %651 ], [ %648, %641 ], [ %516, %511 ], [ %387, %382 ], [ %291, %286 ], [ %227, %222 ], [ %.31096, %99 ], [ %1113, %1108 ], [ %.301123, %1165 ], [ %939, %936 ], [ %.271120, %989 ], [ %797, %792 ], [ %.231116, %817 ], [ %.21095, %75 ] +.loopexit: ; preds = %74, %817, %792, %989, %936, %1165, %1108, %6, %651, %99, %641, %511, %382, %286, %222 + %.01129 = phi ptr [ %10, %6 ], [ %.201149, %651 ], [ %.191148, %641 ], [ %.151144, %511 ], [ %.111140, %382 ], [ %.81137, %286 ], [ %.61135, %222 ], [ %.31132, %99 ], [ %.291158, %1108 ], [ %.301159, %1165 ], [ %.261155, %936 ], [ %.271156, %989 ], [ %.221151, %792 ], [ %.231152, %817 ], [ %.21131, %74 ] + %.01093 = phi ptr [ %11, %6 ], [ %.201113, %651 ], [ %648, %641 ], [ %516, %511 ], [ %387, %382 ], [ %291, %286 ], [ %227, %222 ], [ %.31096, %99 ], [ %1113, %1108 ], [ %.301123, %1165 ], [ %939, %936 ], [ %.271120, %989 ], [ %797, %792 ], [ %.231116, %817 ], [ %.21095, %74 ] %14 = getelementptr inbounds nuw i8, ptr %4, i64 40 store i64 0, ptr %14, align 8 %15 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -8117,11 +8117,11 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c %28 = getelementptr inbounds nuw i8, ptr %4, i64 32 store i8 %27, ptr %28, align 8 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %4, i64 16 - %.pre1324 = load i32, ptr %.phi.trans.insert, align 8 + %.pre1326 = load i32, ptr %.phi.trans.insert, align 8 br label %29 29: ; preds = %189, %26 - %30 = phi i32 [ %.pre1324, %26 ], [ %194, %189 ] + %30 = phi i32 [ %.pre1326, %26 ], [ %194, %189 ] %31 = phi i8 [ %27, %26 ], [ %190, %189 ] %.01091.pn = phi ptr [ %.01091, %26 ], [ %.51134, %189 ] %.21095 = phi ptr [ %.11094, %26 ], [ %.51098, %189 ] @@ -8174,18 +8174,18 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c %68 = getelementptr inbounds nuw i8, ptr %4, i64 40 %69 = getelementptr inbounds nuw i8, ptr %4, i64 56 %.not.i.i = icmp eq ptr %.21131, %.1 - %70 = ptrtoint ptr %.21131 to i64 - %71 = sub i64 %70, %67 - %72 = getelementptr inbounds nuw i8, ptr %7, i64 104 - %73 = getelementptr inbounds nuw i8, ptr %4, i64 88 - %74 = getelementptr inbounds nuw i8, ptr %7, i64 96 - br label %75 + %69 = ptrtoint ptr %.21131 to i64 + %70 = sub i64 %69, %67 + %71 = getelementptr inbounds nuw i8, ptr %7, i64 104 + %72 = getelementptr inbounds nuw i8, ptr %4, i64 88 + %73 = getelementptr inbounds nuw i8, ptr %7, i64 96 + br label %74 -75: ; preds = %.backedge, %64 - %76 = phi i64 [ %storemerge, %.backedge ], [ %.sink, %64 ] - %77 = and i64 %76, 31 - switch i64 %77, label %1261 [ - i64 1, label %78 +74: ; preds = %.backedge, %64 + %75 = phi i64 [ %storemerge, %.backedge ], [ %.sink, %64 ] + %76 = and i64 %75, 31 + switch i64 %76, label %1261 [ + i64 1, label %77 i64 0, label %145 i64 4, label %145 i64 8, label %145 @@ -8210,54 +8210,54 @@ define internal fastcc range(i32 0, 7) i32 @transcode_restartable0(ptr noundef c i64 9, label %1300 ] -78: ; preds = %75 - %79 = getelementptr inbounds nuw i8, ptr %4, i64 64 - store i64 0, ptr %79, align 8 - %80 = icmp ult ptr %.1, %.21131 - br i1 %80, label %.lr.ph, label %._crit_edge +77: ; preds = %74 + %78 = getelementptr inbounds nuw i8, ptr %4, i64 64 + store i64 0, ptr %78, align 8 + %79 = icmp ult ptr %.1, %.21131 + br i1 %79, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %78 - %81 = getelementptr inbounds nuw i8, ptr %4, i64 80 +.lr.ph: ; preds = %77 + %80 = getelementptr inbounds nuw i8, ptr %4, i64 80 br label %82 -82: ; preds = %.lr.ph, %91 +82:; preds = %.lr.ph, %91 %.010921321 = phi ptr [ %.1, %.lr.ph ], [ %83, %91 ] %83 = getelementptr i8, ptr %.010921321, i64 1 %84 = load i8, ptr %.010921321, align 1 - %85 = load ptr, ptr %4, align 8 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 64 - %87 = load i32, ptr %86, align 8 - %88 = icmp slt i32 %87, 9 - br i1 %88, label %91, label %89 + %.010921321 = load ptr, ptr %4, align 8 + %84 = getelementptr inbounds nuw i8, ptr %.010921321, i64 64 + %85 = load i32, ptr %86, align 8 + %86 = icmp slt i32 %87, 9 + br i1 %86, label %91, label %89 -89: ; preds = %82 +89:; preds = %82 %90 = load ptr, ptr %81, align 8 br label %91 -91: ; preds = %82, %89 +91:; preds = %82, %89 %92 = phi ptr [ %90, %89 ], [ %81, %82 ] %93 = load i64, ptr %79, align 8 %94 = add i64 %93, 1 store i64 %94, ptr %79, align 8 - %95 = getelementptr i8, ptr %92, i64 %93 - store i8 %84, ptr %95, align 1 + %94 = getelementptr i8, ptr %92, i64 %93 + store i8 %84, ptr %94, align 1 %96 = icmp ult ptr %83, %.21131 br i1 %96, label %82, label %._crit_edge.loopexit, !llvm.loop !142 -._crit_edge.loopexit: ; preds = %91 +._crit_edge.loopexit:; preds = %91 %.pre1346 = load i64, ptr %79, align 8 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %78 - %97 = phi i64 [ %.pre1346, %._crit_edge.loopexit ], [ 0, %78 ] +._crit_edge: ; preds = %._crit_edge.loopexit, %77 + %97 = phi i64 [ %.pre1346, %._crit_edge.loopexit ], [ 0, %77 ] %98 = getelementptr inbounds nuw i8, ptr %4, i64 72 store i64 %97, ptr %98, align 8 - store i64 0, ptr %79, align 8 + store i64 0, ptr %78, align 8 br label %99 99: ; preds = %137, %._crit_edge - %100 = phi i64 [ %97, %._crit_edge ], [ %.pre1350, %137 ] - %101 = phi i64 [ 0, %._crit_edge ], [ %.pre1348, %137 ] + %100 = phi i64 [ %97, %._crit_edge ], [ %.pre1352, %137 ] + %101 = phi i64 [ 0, %._crit_edge ], [ %.pre1350, %137 ] %.31132 = phi ptr [ %.21131, %._crit_edge ], [ %.41133, %137 ] %.31096 = phi ptr [ %.21095, %._crit_edge ], [ %144, %137 ] %.2 = phi ptr [ %.1, %._crit_edge ], [ %.3, %137 ] @@ -8333,12 +8333,12 @@ rbimpl_size_mul_or_raise.exit: ; preds = %113, %119 %143 = load i8, ptr %142, align 1 %144 = getelementptr i8, ptr %.41097, i64 1 store i8 %143, ptr %.41097, align 1 - %.pre1348 = load i64, ptr %139, align 8 - %.phi.trans.insert1349 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1350 = load i64, ptr %.phi.trans.insert1349, align 8 + %.pre1350 = load i64, ptr %139, align 8 + %.phi.trans.insert1351 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1352 = load i64, ptr %.phi.trans.insert1351, align 8 br label %99, !llvm.loop !143 -145: ; preds = %75, %75, %75, %75, %75, %75, %75, %75 +145: ; preds = %74, %74, %74, %74, %74, %74, %74, %74 %146 = and i32 %5, 262144 %.not1226 = icmp eq i32 %146, 0 br i1 %.not1226, label %164, label %147 @@ -8350,7 +8350,7 @@ rbimpl_size_mul_or_raise.exit: ; preds = %113, %119 149: ; preds = %147 store i32 25, ptr %12, align 4 - %150 = icmp sgt i64 %71, 0 + %150 = icmp sgt i64 %70, 0 br i1 %150, label %151, label %161 151: ; preds = %149 @@ -8368,14 +8368,14 @@ rbimpl_size_mul_or_raise.exit1236: ; preds = %151, %156 %158 = phi ptr [ %157, %156 ], [ %69, %151 ] %159 = load i64, ptr %68, align 8 %160 = getelementptr i8, ptr %158, i64 %159 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %160, ptr align 1 %.1, i64 %71, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %160, ptr align 1 %.1, i64 %70, i1 false) br label %161 161: ; preds = %rbimpl_size_mul_or_raise.exit1236, %149 store ptr %.21131, ptr %0, align 8 store ptr %.21095, ptr %1, align 8 %162 = load i64, ptr %68, align 8 - %163 = add i64 %162, %71 + %163 = add i64 %162, %70 store i64 %163, ptr %68, align 8 br label %1428 @@ -8442,10 +8442,10 @@ rbimpl_size_mul_or_raise.exit1237: ; preds = %172, %178 store i32 %194, ptr %195, align 8 br label %29 -.loopexit1313: ; preds = %75, %221 - %.61135 = phi ptr [ %10, %221 ], [ %.21131, %75 ] - %.61099 = phi ptr [ %11, %221 ], [ %.21095, %75 ] - %.5 = phi ptr [ %10, %221 ], [ %.1, %75 ] +.loopexit1313: ; preds = %74, %221 + %.61135 = phi ptr [ %10, %221 ], [ %.21131, %74 ] + %.61099 = phi ptr [ %11, %221 ], [ %.21095, %74 ] + %.5 = phi ptr [ %10, %221 ], [ %.1, %74 ] %196 = ptrtoint ptr %3 to i64 %197 = ptrtoint ptr %.61099 to i64 %198 = sub i64 %196, %197 @@ -8501,10 +8501,10 @@ rbimpl_size_mul_or_raise.exit1238: ; preds = %205, %211 store i8 %226, ptr %.61099, align 1 br label %.loopexit -.loopexit1314: ; preds = %75, %253 - %.71136 = phi ptr [ %10, %253 ], [ %.21131, %75 ] - %.71100 = phi ptr [ %11, %253 ], [ %.21095, %75 ] - %.6 = phi ptr [ %10, %253 ], [ %.1, %75 ] +.loopexit1314: ; preds = %74, %253 + %.71136 = phi ptr [ %10, %253 ], [ %.21131, %74 ] + %.71100 = phi ptr [ %11, %253 ], [ %.21095, %74 ] + %.6 = phi ptr [ %10, %253 ], [ %.1, %74 ] %228 = ptrtoint ptr %3 to i64 %229 = ptrtoint ptr %.71100 to i64 %230 = sub i64 %228, %229 @@ -8561,7 +8561,7 @@ rbimpl_size_mul_or_raise.exit1239: ; preds = %237, %243 br label %260 260: ; preds = %285, %254 - %.pre-phi = phi i64 [ %.pre1351, %285 ], [ %228, %254 ] + %.pre-phi = phi i64 [ %.pre1353, %285 ], [ %228, %254 ] %.81137 = phi ptr [ %10, %285 ], [ %.71136, %254 ] %.81101 = phi ptr [ %11, %285 ], [ %259, %254 ] %.7 = phi ptr [ %10, %285 ], [ %.6, %254 ] @@ -8608,7 +8608,7 @@ rbimpl_size_mul_or_raise.exit1240: ; preds = %269, %275 br label %1428 285: ; preds = %6 - %.pre1351 = ptrtoint ptr %3 to i64 + %.pre1353 = ptrtoint ptr %3 to i64 br label %260, !llvm.loop !147 286: ; preds = %260 @@ -8620,10 +8620,10 @@ rbimpl_size_mul_or_raise.exit1240: ; preds = %269, %275 store i8 %290, ptr %.81101, align 1 br label %.loopexit -.loopexit1315: ; preds = %75, %317 - %.91138 = phi ptr [ %10, %317 ], [ %.21131, %75 ] - %.91102 = phi ptr [ %11, %317 ], [ %.21095, %75 ] - %.8 = phi ptr [ %10, %317 ], [ %.1, %75 ] +.loopexit1315: ; preds = %74, %317 + %.91138 = phi ptr [ %10, %317 ], [ %.21131, %74 ] + %.91102 = phi ptr [ %11, %317 ], [ %.21095, %74 ] + %.8 = phi ptr [ %10, %317 ], [ %.1, %74 ] %292 = ptrtoint ptr %3 to i64 %293 = ptrtoint ptr %.91102 to i64 %294 = sub i64 %292, %293 @@ -8680,12 +8680,12 @@ rbimpl_size_mul_or_raise.exit1241: ; preds = %301, %307 br label %324 324: ; preds = %349, %318 - %.pre-phi1353 = phi i64 [ %.pre1352, %349 ], [ %292, %318 ] + %.pre-phi1355 = phi i64 [ %.pre1354, %349 ], [ %292, %318 ] %.101139 = phi ptr [ %10, %349 ], [ %.91138, %318 ] %.101103 = phi ptr [ %11, %349 ], [ %323, %318 ] %.9 = phi ptr [ %10, %349 ], [ %.8, %318 ] %325 = ptrtoint ptr %.101103 to i64 - %326 = sub i64 %.pre-phi1353, %325 + %326 = sub i64 %.pre-phi1355, %325 %327 = icmp slt i64 %326, 1 br i1 %327, label %328, label %350 @@ -8727,7 +8727,7 @@ rbimpl_size_mul_or_raise.exit1242: ; preds = %333, %339 br label %1428 349: ; preds = %6 - %.pre1352 = ptrtoint ptr %3 to i64 + %.pre1354 = ptrtoint ptr %3 to i64 br label %324, !llvm.loop !149 350: ; preds = %324 @@ -8740,12 +8740,12 @@ rbimpl_size_mul_or_raise.exit1242: ; preds = %333, %339 br label %356 356: ; preds = %381, %350 - %.pre-phi1355 = phi i64 [ %.pre1354, %381 ], [ %.pre-phi1353, %350 ] + %.pre-phi1357 = phi i64 [ %.pre1356, %381 ], [ %.pre-phi1355, %350 ] %.111140 = phi ptr [ %10, %381 ], [ %.101139, %350 ] %.111104 = phi ptr [ %11, %381 ], [ %355, %350 ] %.10 = phi ptr [ %10, %381 ], [ %.9, %350 ] %357 = ptrtoint ptr %.111104 to i64 - %358 = sub i64 %.pre-phi1355, %357 + %358 = sub i64 %.pre-phi1357, %357 %359 = icmp slt i64 %358, 1 br i1 %359, label %360, label %382 @@ -8787,7 +8787,7 @@ rbimpl_size_mul_or_raise.exit1243: ; preds = %365, %371 br label %1428 381: ; preds = %6 - %.pre1354 = ptrtoint ptr %3 to i64 + %.pre1356 = ptrtoint ptr %3 to i64 br label %356, !llvm.loop !150 382: ; preds = %356 @@ -8799,10 +8799,10 @@ rbimpl_size_mul_or_raise.exit1243: ; preds = %365, %371 store i8 %386, ptr %.111104, align 1 br label %.loopexit -.loopexit1316: ; preds = %75, %413 - %.121141 = phi ptr [ %10, %413 ], [ %.21131, %75 ] - %.121105 = phi ptr [ %11, %413 ], [ %.21095, %75 ] - %.11 = phi ptr [ %10, %413 ], [ %.1, %75 ] +.loopexit1316: ; preds = %74, %413 + %.121141 = phi ptr [ %10, %413 ], [ %.21131, %74 ] + %.121105 = phi ptr [ %11, %413 ], [ %.21095, %74 ] + %.11 = phi ptr [ %10, %413 ], [ %.1, %74 ] %388 = ptrtoint ptr %3 to i64 %389 = ptrtoint ptr %.121105 to i64 %390 = sub i64 %388, %389 @@ -8860,12 +8860,12 @@ rbimpl_size_mul_or_raise.exit1244: ; preds = %397, %403 br label %421 421: ; preds = %446, %414 - %.pre-phi1357 = phi i64 [ %.pre1356, %446 ], [ %388, %414 ] + %.pre-phi1359 = phi i64 [ %.pre1358, %446 ], [ %388, %414 ] %.131142 = phi ptr [ %10, %446 ], [ %.121141, %414 ] %.131106 = phi ptr [ %11, %446 ], [ %420, %414 ] %.12 = phi ptr [ %10, %446 ], [ %.11, %414 ] %422 = ptrtoint ptr %.131106 to i64 - %423 = sub i64 %.pre-phi1357, %422 + %423 = sub i64 %.pre-phi1359, %422 %424 = icmp slt i64 %423, 1 br i1 %424, label %425, label %447 @@ -8907,7 +8907,7 @@ rbimpl_size_mul_or_raise.exit1245: ; preds = %430, %436 br label %1428 446: ; preds = %6 - %.pre1356 = ptrtoint ptr %3 to i64 + %.pre1358 = ptrtoint ptr %3 to i64 br label %421, !llvm.loop !152 447: ; preds = %421 @@ -8920,12 +8920,12 @@ rbimpl_size_mul_or_raise.exit1245: ; preds = %430, %436 br label %453 453: ; preds = %478, %447 - %.pre-phi1359 = phi i64 [ %.pre1358, %478 ], [ %.pre-phi1357, %447 ] + %.pre-phi1361 = phi i64 [ %.pre1360, %478 ], [ %.pre-phi1359, %447 ] %.141143 = phi ptr [ %10, %478 ], [ %.131142, %447 ] %.141107 = phi ptr [ %11, %478 ], [ %452, %447 ] %.13 = phi ptr [ %10, %478 ], [ %.12, %447 ] %454 = ptrtoint ptr %.141107 to i64 - %455 = sub i64 %.pre-phi1359, %454 + %455 = sub i64 %.pre-phi1361, %454 %456 = icmp slt i64 %455, 1 br i1 %456, label %457, label %479 @@ -8967,7 +8967,7 @@ rbimpl_size_mul_or_raise.exit1246: ; preds = %462, %468 br label %1428 478: ; preds = %6 - %.pre1358 = ptrtoint ptr %3 to i64 + %.pre1360 = ptrtoint ptr %3 to i64 br label %453, !llvm.loop !153 479: ; preds = %453 @@ -8980,12 +8980,12 @@ rbimpl_size_mul_or_raise.exit1246: ; preds = %462, %468 br label %485 485: ; preds = %510, %479 - %.pre-phi1361 = phi i64 [ %.pre1360, %510 ], [ %.pre-phi1359, %479 ] + %.pre-phi1363 = phi i64 [ %.pre1362, %510 ], [ %.pre-phi1361, %479 ] %.151144 = phi ptr [ %10, %510 ], [ %.141143, %479 ] %.151108 = phi ptr [ %11, %510 ], [ %484, %479 ] %.14 = phi ptr [ %10, %510 ], [ %.13, %479 ] %486 = ptrtoint ptr %.151108 to i64 - %487 = sub i64 %.pre-phi1361, %486 + %487 = sub i64 %.pre-phi1363, %486 %488 = icmp slt i64 %487, 1 br i1 %488, label %489, label %511 @@ -9027,7 +9027,7 @@ rbimpl_size_mul_or_raise.exit1247: ; preds = %494, %500 br label %1428 510: ; preds = %6 - %.pre1360 = ptrtoint ptr %3 to i64 + %.pre1362 = ptrtoint ptr %3 to i64 br label %485, !llvm.loop !154 511: ; preds = %485 @@ -9039,10 +9039,10 @@ rbimpl_size_mul_or_raise.exit1247: ; preds = %494, %500 store i8 %515, ptr %.151108, align 1 br label %.loopexit -.loopexit1317: ; preds = %75, %542 - %.161145 = phi ptr [ %10, %542 ], [ %.21131, %75 ] - %.161109 = phi ptr [ %11, %542 ], [ %.21095, %75 ] - %.15 = phi ptr [ %10, %542 ], [ %.1, %75 ] +.loopexit1317: ; preds = %74, %542 + %.161145 = phi ptr [ %10, %542 ], [ %.21131, %74 ] + %.161109 = phi ptr [ %11, %542 ], [ %.21095, %74 ] + %.15 = phi ptr [ %10, %542 ], [ %.1, %74 ] %517 = ptrtoint ptr %3 to i64 %518 = ptrtoint ptr %.161109 to i64 %519 = sub i64 %517, %518 @@ -9099,12 +9099,12 @@ rbimpl_size_mul_or_raise.exit1248: ; preds = %526, %532 br label %549 549: ; preds = %574, %543 - %.pre-phi1363 = phi i64 [ %.pre1362, %574 ], [ %517, %543 ] + %.pre-phi1365 = phi i64 [ %.pre1364, %574 ], [ %517, %543 ] %.171146 = phi ptr [ %10, %574 ], [ %.161145, %543 ] %.171110 = phi ptr [ %11, %574 ], [ %548, %543 ] %.16 = phi ptr [ %10, %574 ], [ %.15, %543 ] %550 = ptrtoint ptr %.171110 to i64 - %551 = sub i64 %.pre-phi1363, %550 + %551 = sub i64 %.pre-phi1365, %550 %552 = icmp slt i64 %551, 1 br i1 %552, label %553, label %575 @@ -9146,7 +9146,7 @@ rbimpl_size_mul_or_raise.exit1249: ; preds = %558, %564 br label %1428 574: ; preds = %6 - %.pre1362 = ptrtoint ptr %3 to i64 + %.pre1364 = ptrtoint ptr %3 to i64 br label %549, !llvm.loop !156 575: ; preds = %549 @@ -9161,12 +9161,12 @@ rbimpl_size_mul_or_raise.exit1249: ; preds = %558, %564 br label %583 583: ; preds = %608, %575 - %.pre-phi1365 = phi i64 [ %.pre1364, %608 ], [ %.pre-phi1363, %575 ] + %.pre-phi1367 = phi i64 [ %.pre1366, %608 ], [ %.pre-phi1365, %575 ] %.181147 = phi ptr [ %10, %608 ], [ %.171146, %575 ] %.181111 = phi ptr [ %11, %608 ], [ %582, %575 ] %.17 = phi ptr [ %10, %608 ], [ %.16, %575 ] %584 = ptrtoint ptr %.181111 to i64 - %585 = sub i64 %.pre-phi1365, %584 + %585 = sub i64 %.pre-phi1367, %584 %586 = icmp slt i64 %585, 1 br i1 %586, label %587, label %609 @@ -9208,7 +9208,7 @@ rbimpl_size_mul_or_raise.exit1250: ; preds = %592, %598 br label %1428 608: ; preds = %6 - %.pre1364 = ptrtoint ptr %3 to i64 + %.pre1366 = ptrtoint ptr %3 to i64 br label %583, !llvm.loop !157 609: ; preds = %583 @@ -9221,12 +9221,12 @@ rbimpl_size_mul_or_raise.exit1250: ; preds = %592, %598 br label %615 615: ; preds = %640, %609 - %.pre-phi1367 = phi i64 [ %.pre1366, %640 ], [ %.pre-phi1365, %609 ] + %.pre-phi1369 = phi i64 [ %.pre1368, %640 ], [ %.pre-phi1367, %609 ] %.191148 = phi ptr [ %10, %640 ], [ %.181147, %609 ] %.191112 = phi ptr [ %11, %640 ], [ %614, %609 ] %.18 = phi ptr [ %10, %640 ], [ %.17, %609 ] %616 = ptrtoint ptr %.191112 to i64 - %617 = sub i64 %.pre-phi1367, %616 + %617 = sub i64 %.pre-phi1369, %616 %618 = icmp slt i64 %617, 1 br i1 %618, label %619, label %641 @@ -9268,7 +9268,7 @@ rbimpl_size_mul_or_raise.exit1251: ; preds = %624, %630 br label %1428 640: ; preds = %6 - %.pre1366 = ptrtoint ptr %3 to i64 + %.pre1368 = ptrtoint ptr %3 to i64 br label %615, !llvm.loop !158 641: ; preds = %615 @@ -9282,13 +9282,13 @@ rbimpl_size_mul_or_raise.exit1251: ; preds = %624, %630 store i8 %647, ptr %.191112, align 1 br label %.loopexit -649: ; preds = %75 +649: ; preds = %74 %650 = getelementptr inbounds nuw i8, ptr %4, i64 36 store i32 0, ptr %650, align 4 br label %651 651: ; preds = %689, %649 - %652 = phi i64 [ %76, %649 ], [ %.pre1345, %689 ] + %652 = phi i64 [ %75, %649 ], [ %.pre1347, %689 ] %653 = phi i32 [ 0, %649 ], [ %704, %689 ] %.201149 = phi ptr [ %.21131, %649 ], [ %.211150, %689 ] %.201113 = phi ptr [ %.21095, %649 ], [ %702, %689 ] @@ -9371,11 +9371,11 @@ rbimpl_size_mul_or_raise.exit1252: ; preds = %672, %678 %703 = load i32, ptr %696, align 4 %704 = add i32 %703, 1 store i32 %704, ptr %696, align 4 - %.pre1345 = load i64, ptr %692, align 8 + %.pre1347 = load i64, ptr %692, align 8 br label %651, !llvm.loop !160 -705: ; preds = %75 - %706 = load ptr, ptr %74, align 8 +705: ; preds = %74 + %706 = load ptr, ptr %73, align 8 %707 = load ptr, ptr %4, align 8 %708 = getelementptr inbounds nuw i8, ptr %707, i64 72 %709 = load i64, ptr %708, align 8 @@ -9383,20 +9383,20 @@ rbimpl_size_mul_or_raise.exit1252: ; preds = %672, %678 br i1 %710, label %713, label %711 711: ; preds = %705 - %712 = load ptr, ptr %73, align 8 + %712 = load ptr, ptr %72, align 8 br label %713 713: ; preds = %705, %711 - %714 = phi ptr [ %712, %711 ], [ %73, %705 ] - %715 = tail call i64 %706(ptr noundef %714, i64 noundef %76) #21 + %714 = phi ptr [ %712, %711 ], [ %72, %705 ] + %715 = tail call i64 %706(ptr noundef %714, i64 noundef %75) #21 br label %.backedge .backedge: ; preds = %713, %749 %storemerge = phi i64 [ %751, %749 ], [ %715, %713 ] store i64 %storemerge, ptr %66, align 8 - br label %75 + br label %74 -716: ; preds = %75 +716: ; preds = %74 %717 = load ptr, ptr %0, align 8 %718 = ptrtoint ptr %717 to i64 %719 = sub i64 %67, %718 @@ -9421,7 +9421,7 @@ rbimpl_size_mul_or_raise.exit.i: ; preds = %727, %722 730: ; preds = %rbimpl_size_mul_or_raise.exit.i %731 = getelementptr i8, ptr %729, i64 %720 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %731, ptr readonly align 1 %.1, i64 %71, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %731, ptr readonly align 1 %.1, i64 %70, i1 false) %.pre.i = load ptr, ptr %4, align 8 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %.pre.i, i64 60 %.pre21.i = load i32, ptr %.phi.trans.insert.i, align 4 @@ -9440,33 +9440,33 @@ ruby_nonempty_memcpy.exit.i: ; preds = %730, %rbimpl_size_m 737: ; preds = %716 %738 = sub i64 0, %720 %739 = getelementptr i8, ptr %.1, i64 %738 - %.pre1343 = load ptr, ptr %4, align 8 + %.pre1345 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit transcode_char_start.exit: ; preds = %ruby_nonempty_memcpy.exit.i, %735, %737 - %740 = phi ptr [ %.pre1343, %737 ], [ %732, %735 ], [ %732, %ruby_nonempty_memcpy.exit.i ] + %740 = phi ptr [ %.pre1345, %737 ], [ %732, %735 ], [ %732, %ruby_nonempty_memcpy.exit.i ] %.0.i = phi ptr [ %739, %737 ], [ %736, %735 ], [ %69, %ruby_nonempty_memcpy.exit.i ] %741 = load i64, ptr %68, align 8 - %742 = add i64 %71, %741 - %743 = load ptr, ptr %72, align 8 + %742 = add i64 %70, %741 + %743 = load ptr, ptr %71, align 8 %744 = getelementptr inbounds nuw i8, ptr %740, i64 72 %745 = load i64, ptr %744, align 8 %746 = icmp ult i64 %745, 9 br i1 %746, label %749, label %747 747: ; preds = %transcode_char_start.exit - %748 = load ptr, ptr %73, align 8 + %748 = load ptr, ptr %72, align 8 br label %749 749: ; preds = %transcode_char_start.exit, %747 - %750 = phi ptr [ %748, %747 ], [ %73, %transcode_char_start.exit ] + %750 = phi ptr [ %748, %747 ], [ %72, %transcode_char_start.exit ] %751 = tail call i64 %743(ptr noundef %750, ptr noundef %.0.i, i64 noundef %742) #21 br label %.backedge -.loopexit1318: ; preds = %75, %777 - %.221151 = phi ptr [ %10, %777 ], [ %.21131, %75 ] - %.221115 = phi ptr [ %11, %777 ], [ %.21095, %75 ] - %.21 = phi ptr [ %10, %777 ], [ %.1, %75 ] +.loopexit1318: ; preds = %74, %777 + %.221151 = phi ptr [ %10, %777 ], [ %.21131, %74 ] + %.221115 = phi ptr [ %11, %777 ], [ %.21095, %74 ] + %.21 = phi ptr [ %10, %777 ], [ %.1, %74 ] %752 = ptrtoint ptr %3 to i64 %753 = ptrtoint ptr %.221115 to i64 %754 = sub i64 %752, %753 @@ -9575,8 +9575,8 @@ rbimpl_size_mul_or_raise.exit1253: ; preds = %761, %767 br label %817 817: ; preds = %856, %812 - %818 = phi i64 [ %814, %812 ], [ %.pre1342, %856 ] - %819 = phi i64 [ 0, %812 ], [ %.pre1340, %856 ] + %818 = phi i64 [ %814, %812 ], [ %.pre1344, %856 ] + %819 = phi i64 [ 0, %812 ], [ %.pre1342, %856 ] %.231152 = phi ptr [ %.221151, %812 ], [ %.241153, %856 ] %.231116 = phi ptr [ %.221115, %812 ], [ %863, %856 ] %.22 = phi ptr [ %.21, %812 ], [ %.23, %856 ] @@ -9655,15 +9655,15 @@ rbimpl_size_mul_or_raise.exit1254: ; preds = %831, %837 %862 = load i8, ptr %861, align 1 %863 = getelementptr i8, ptr %.241117, i64 1 store i8 %862, ptr %.241117, align 1 - %.pre1340 = load i64, ptr %858, align 8 - %.phi.trans.insert1341 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1342 = load i64, ptr %.phi.trans.insert1341, align 8 + %.pre1342 = load i64, ptr %858, align 8 + %.phi.trans.insert1343 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1344 = load i64, ptr %.phi.trans.insert1343, align 8 br label %817, !llvm.loop !163 -.loopexit1319: ; preds = %75, %889 - %.261155 = phi ptr [ %10, %889 ], [ %.21131, %75 ] - %.261119 = phi ptr [ %11, %889 ], [ %.21095, %75 ] - %.24 = phi ptr [ %10, %889 ], [ %.1, %75 ] +.loopexit1319: ; preds = %74, %889 + %.261155 = phi ptr [ %10, %889 ], [ %.21131, %74 ] + %.261119 = phi ptr [ %11, %889 ], [ %.21095, %74 ] + %.24 = phi ptr [ %10, %889 ], [ %.1, %74 ] %864 = ptrtoint ptr %3 to i64 %865 = ptrtoint ptr %.261119 to i64 %866 = sub i64 %864, %865 @@ -9767,11 +9767,11 @@ ruby_nonempty_memcpy.exit.i1262: ; preds = %911, %rbimpl_size_m 920: ; preds = %901 %921 = sub i64 0, %899 %922 = getelementptr i8, ptr %.24, i64 %921 - %.pre1333 = load ptr, ptr %4, align 8 + %.pre1335 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1263 transcode_char_start.exit1263: ; preds = %ruby_nonempty_memcpy.exit.i1262, %918, %920 - %923 = phi ptr [ %.pre1333, %920 ], [ %915, %918 ], [ %915, %ruby_nonempty_memcpy.exit.i1262 ] + %923 = phi ptr [ %.pre1335, %920 ], [ %915, %918 ], [ %915, %ruby_nonempty_memcpy.exit.i1262 ] %.0.i1256 = phi ptr [ %922, %920 ], [ %919, %918 ], [ %907, %ruby_nonempty_memcpy.exit.i1262 ] %924 = load i64, ptr %898, align 8 %925 = ptrtoint ptr %.261155 to i64 @@ -9838,11 +9838,11 @@ ruby_nonempty_memcpy.exit.i1270: ; preds = %950, %rbimpl_size_m 959: ; preds = %940 %960 = sub i64 0, %899 %961 = getelementptr i8, ptr %.24, i64 %960 - %.pre1334 = load ptr, ptr %4, align 8 + %.pre1336 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1271 transcode_char_start.exit1271: ; preds = %ruby_nonempty_memcpy.exit.i1270, %957, %959 - %962 = phi ptr [ %.pre1334, %959 ], [ %954, %957 ], [ %954, %ruby_nonempty_memcpy.exit.i1270 ] + %962 = phi ptr [ %.pre1336, %959 ], [ %954, %957 ], [ %954, %ruby_nonempty_memcpy.exit.i1270 ] %.0.i1264 = phi ptr [ %961, %959 ], [ %958, %957 ], [ %946, %ruby_nonempty_memcpy.exit.i1270 ] %963 = load i64, ptr %898, align 8 %964 = ptrtoint ptr %.261155 to i64 @@ -9884,8 +9884,8 @@ transcode_char_start.exit1271: ; preds = %ruby_nonempty_memcp br label %989 989: ; preds = %1028, %984 - %990 = phi i64 [ %986, %984 ], [ %.pre1338, %1028 ] - %991 = phi i64 [ 0, %984 ], [ %.pre1336, %1028 ] + %990 = phi i64 [ %986, %984 ], [ %.pre1340, %1028 ] + %991 = phi i64 [ 0, %984 ], [ %.pre1338, %1028 ] %.271156 = phi ptr [ %.261155, %984 ], [ %.281157, %1028 ] %.271120 = phi ptr [ %.261119, %984 ], [ %1035, %1028 ] %.25 = phi ptr [ %.24, %984 ], [ %.26, %1028 ] @@ -9964,15 +9964,15 @@ rbimpl_size_mul_or_raise.exit1272: ; preds = %1003, %1009 %1034 = load i8, ptr %1033, align 1 %1035 = getelementptr i8, ptr %.281121, i64 1 store i8 %1034, ptr %.281121, align 1 - %.pre1336 = load i64, ptr %1030, align 8 - %.phi.trans.insert1337 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1338 = load i64, ptr %.phi.trans.insert1337, align 8 + %.pre1338 = load i64, ptr %1030, align 8 + %.phi.trans.insert1339 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1340 = load i64, ptr %.phi.trans.insert1339, align 8 br label %989, !llvm.loop !166 -.loopexit1320: ; preds = %75, %1061 - %.291158 = phi ptr [ %10, %1061 ], [ %.21131, %75 ] - %.291122 = phi ptr [ %11, %1061 ], [ %.21095, %75 ] - %.27 = phi ptr [ %10, %1061 ], [ %.1, %75 ] +.loopexit1320: ; preds = %74, %1061 + %.291158 = phi ptr [ %10, %1061 ], [ %.21131, %74 ] + %.291122 = phi ptr [ %11, %1061 ], [ %.21095, %74 ] + %.27 = phi ptr [ %10, %1061 ], [ %.1, %74 ] %1036 = ptrtoint ptr %3 to i64 %1037 = ptrtoint ptr %.291122 to i64 %1038 = sub i64 %1036, %1037 @@ -10076,11 +10076,11 @@ ruby_nonempty_memcpy.exit.i1280: ; preds = %1083, %rbimpl_size_ 1092: ; preds = %1073 %1093 = sub i64 0, %1071 %1094 = getelementptr i8, ptr %.27, i64 %1093 - %.pre1327 = load ptr, ptr %4, align 8 + %.pre1329 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1281 transcode_char_start.exit1281: ; preds = %ruby_nonempty_memcpy.exit.i1280, %1090, %1092 - %1095 = phi ptr [ %.pre1327, %1092 ], [ %1087, %1090 ], [ %1087, %ruby_nonempty_memcpy.exit.i1280 ] + %1095 = phi ptr [ %.pre1329, %1092 ], [ %1087, %1090 ], [ %1087, %ruby_nonempty_memcpy.exit.i1280 ] %.0.i1274 = phi ptr [ %1094, %1092 ], [ %1091, %1090 ], [ %1079, %ruby_nonempty_memcpy.exit.i1280 ] %1096 = load i64, ptr %1070, align 8 %1097 = ptrtoint ptr %.291158 to i64 @@ -10149,11 +10149,11 @@ ruby_nonempty_memcpy.exit.i1288: ; preds = %1124, %rbimpl_size_ 1133: ; preds = %1114 %1134 = sub i64 0, %1071 %1135 = getelementptr i8, ptr %.27, i64 %1134 - %.pre1328 = load ptr, ptr %4, align 8 + %.pre1330 = load ptr, ptr %4, align 8 br label %transcode_char_start.exit1289 transcode_char_start.exit1289: ; preds = %ruby_nonempty_memcpy.exit.i1288, %1131, %1133 - %1136 = phi ptr [ %.pre1328, %1133 ], [ %1128, %1131 ], [ %1128, %ruby_nonempty_memcpy.exit.i1288 ] + %1136 = phi ptr [ %.pre1330, %1133 ], [ %1128, %1131 ], [ %1128, %ruby_nonempty_memcpy.exit.i1288 ] %.0.i1282 = phi ptr [ %1135, %1133 ], [ %1132, %1131 ], [ %1120, %ruby_nonempty_memcpy.exit.i1288 ] %1137 = load i64, ptr %1070, align 8 %1138 = ptrtoint ptr %.291158 to i64 @@ -10197,8 +10197,8 @@ transcode_char_start.exit1289: ; preds = %ruby_nonempty_memcp br label %1165 1165: ; preds = %1204, %1160 - %1166 = phi i64 [ %1162, %1160 ], [ %.pre1332, %1204 ] - %1167 = phi i64 [ 0, %1160 ], [ %.pre1330, %1204 ] + %1166 = phi i64 [ %1162, %1160 ], [ %.pre1334, %1204 ] + %1167 = phi i64 [ 0, %1160 ], [ %.pre1332, %1204 ] %.301159 = phi ptr [ %.291158, %1160 ], [ %.311160, %1204 ] %.301123 = phi ptr [ %.291122, %1160 ], [ %1211, %1204 ] %.28 = phi ptr [ %.27, %1160 ], [ %.29, %1204 ] @@ -10277,14 +10277,14 @@ rbimpl_size_mul_or_raise.exit1290: ; preds = %1179, %1185 %1210 = load i8, ptr %1209, align 1 %1211 = getelementptr i8, ptr %.311124, i64 1 store i8 %1210, ptr %.311124, align 1 - %.pre1330 = load i64, ptr %1206, align 8 - %.phi.trans.insert1331 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1332 = load i64, ptr %.phi.trans.insert1331, align 8 + %.pre1332 = load i64, ptr %1206, align 8 + %.phi.trans.insert1333 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1334 = load i64, ptr %.phi.trans.insert1333, align 8 br label %1165, !llvm.loop !169 -1212: ; preds = %75 +1212: ; preds = %74 %1213 = load i64, ptr %68, align 8 - %1214 = add i64 %1213, %71 + %1214 = add i64 %1213, %70 %.fr1217 = freeze i64 %1214 %1215 = sext i32 %9 to i64 %.not1216 = icmp sgt i64 %.fr1217, %1215 @@ -10304,7 +10304,7 @@ rbimpl_size_mul_or_raise.exit1290: ; preds = %1179, %1185 1221: ; preds = %1219 store i32 26, ptr %12, align 4 - %1222 = icmp sgt i64 %71, 0 + %1222 = icmp sgt i64 %70, 0 br i1 %1222, label %1223, label %1232 1223: ; preds = %1221 @@ -10321,14 +10321,14 @@ rbimpl_size_mul_or_raise.exit1290: ; preds = %1179, %1185 rbimpl_size_mul_or_raise.exit1291: ; preds = %1223, %1228 %1230 = phi ptr [ %1229, %1228 ], [ %69, %1223 ] %1231 = getelementptr i8, ptr %1230, i64 %1213 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1231, ptr align 1 %.1, i64 %71, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1231, ptr align 1 %.1, i64 %70, i1 false) br label %1232 1232: ; preds = %rbimpl_size_mul_or_raise.exit1291, %1221 store ptr %.21131, ptr %0, align 8 store ptr %.21095, ptr %1, align 8 %1233 = load i64, ptr %68, align 8 - %1234 = add i64 %1233, %71 + %1234 = add i64 %1233, %70 store i64 %1234, ptr %68, align 8 br label %1428 @@ -10337,20 +10337,20 @@ rbimpl_size_mul_or_raise.exit1291: ; preds = %1223, %1228 %.30 = phi ptr [ %.1, %1219 ], [ %.1, %1216 ], [ %10, %6 ], [ %10, %1253 ] %1236 = and i32 %5, 131072 %.not1220 = icmp ne i32 %1236, 0 - %.phi.trans.insert1325 = getelementptr inbounds nuw i8, ptr %4, i64 40 - %.pre1326 = load i64, ptr %.phi.trans.insert1325, align 8 - %.pre1373 = ptrtoint ptr %2 to i64 - %.pre1375 = ptrtoint ptr %.30 to i64 - %.pre1377 = sub i64 %.pre1373, %.pre1375 - %.pre1379 = add i64 %.pre1377, %.pre1326 - %.pre1381 = sext i32 %9 to i64 - %1237 = icmp slt i64 %.pre1379, %.pre1381 - %or.cond1398 = select i1 %.not1220, i1 %1237, i1 false - br i1 %or.cond1398, label %1238, label %.critedge + %.phi.trans.insert1327 = getelementptr inbounds nuw i8, ptr %4, i64 40 + %.pre1328 = load i64, ptr %.phi.trans.insert1327, align 8 + %.pre1375 = ptrtoint ptr %2 to i64 + %.pre1377 = ptrtoint ptr %.30 to i64 + %.pre1379 = sub i64 %.pre1375, %.pre1377 + %.pre1381 = add i64 %.pre1379, %.pre1328 + %.pre1383 = sext i32 %9 to i64 + %1237 = icmp slt i64 %.pre1381, %.pre1383 + %or.cond1400 = select i1 %.not1220, i1 %1237, i1 false + br i1 %or.cond1400, label %1238, label %.critedge 1238: ; preds = %1235 store i32 8, ptr %12, align 4 - %1239 = icmp sgt i64 %.pre1377, 0 + %1239 = icmp sgt i64 %.pre1379, 0 br i1 %1239, label %1240, label %1250 1240: ; preds = %1238 @@ -10367,27 +10367,27 @@ rbimpl_size_mul_or_raise.exit1291: ; preds = %1223, %1228 rbimpl_size_mul_or_raise.exit1292: ; preds = %1240, %1246 %1248 = phi ptr [ %1247, %1246 ], [ %1245, %1240 ] - %1249 = getelementptr i8, ptr %1248, i64 %.pre1326 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1249, ptr align 1 %.30, i64 %.pre1377, i1 false) + %1249 = getelementptr i8, ptr %1248, i64 %.pre1328 + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1249, ptr align 1 %.30, i64 %.pre1379, i1 false) br label %1250 1250: ; preds = %rbimpl_size_mul_or_raise.exit1292, %1238 store ptr %2, ptr %0, align 8 store ptr %.321125, ptr %1, align 8 - %1251 = load i64, ptr %.phi.trans.insert1325, align 8 - %1252 = add i64 %1251, %.pre1377 - store i64 %1252, ptr %.phi.trans.insert1325, align 8 + %1251 = load i64, ptr %.phi.trans.insert1327, align 8 + %1252 = add i64 %1251, %.pre1379 + store i64 %1252, ptr %.phi.trans.insert1327, align 8 br label %1428 1253: ; preds = %6 br label %1235, !llvm.loop !170 .critedge: ; preds = %1235 - %.not1221 = icmp sgt i64 %.pre1379, %.pre1381 + %.not1221 = icmp sgt i64 %.pre1381, %.pre1383 br i1 %.not1221, label %1254, label %1263 1254: ; preds = %.critedge - %1255 = sub i64 %.pre1381, %.pre1326 + %1255 = sub i64 %.pre1383, %.pre1328 %1256 = getelementptr i8, ptr %.30, i64 %1255 br label %1263 @@ -10397,20 +10397,20 @@ rbimpl_size_mul_or_raise.exit1292: ; preds = %1240, %1246 %1260 = add nsw i64 %1259, 1 br label %1263 -1261: ; preds = %75 +1261: ; preds = %74 %1262 = load i64, ptr @rb_eRuntimeError, align 8 tail call void (i64, ptr, ...) @rb_raise(i64 noundef %1262, ptr noundef nonnull @.str.79) #22 unreachable 1263: ; preds = %.critedge, %1254, %1257 - %.pre-phi1372 = phi i64 [ %.pre1377, %.critedge ], [ %1255, %1254 ], [ %71, %1257 ] - %1264 = phi i64 [ %.pre1326, %.critedge ], [ %.pre1326, %1254 ], [ %1213, %1257 ] + %.pre-phi1374 = phi i64 [ %.pre1379, %.critedge ], [ %1255, %1254 ], [ %70, %1257 ] + %1264 = phi i64 [ %.pre1328, %.critedge ], [ %.pre1328, %1254 ], [ %1213, %1257 ] %.321161 = phi ptr [ %2, %.critedge ], [ %1256, %1254 ], [ %.21131, %1257 ] %.331126 = phi ptr [ %.321125, %.critedge ], [ %.321125, %1254 ], [ %.21095, %1257 ] %.31 = phi ptr [ %.30, %.critedge ], [ %.30, %1254 ], [ %.1, %1257 ] %.01090 = phi i64 [ 0, %.critedge ], [ 0, %1254 ], [ %1260, %1257 ] store i32 1, ptr %12, align 4 - %1265 = icmp sgt i64 %.pre-phi1372, 0 + %1265 = icmp sgt i64 %.pre-phi1374, 0 br i1 %1265, label %1266, label %1276 1266: ; preds = %1263 @@ -10428,7 +10428,7 @@ rbimpl_size_mul_or_raise.exit1292: ; preds = %1240, %1246 rbimpl_size_mul_or_raise.exit1293: ; preds = %1266, %1272 %1274 = phi ptr [ %1273, %1272 ], [ %1271, %1266 ] %1275 = getelementptr i8, ptr %1274, i64 %1264 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1275, ptr align 1 %.31, i64 %.pre-phi1372, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1275, ptr align 1 %.31, i64 %.pre-phi1374, i1 false) br label %1276 1276: ; preds = %rbimpl_size_mul_or_raise.exit1293, %1263 @@ -10436,7 +10436,7 @@ rbimpl_size_mul_or_raise.exit1293: ; preds = %1266, %1272 store ptr %.331126, ptr %1, align 8 %1277 = getelementptr inbounds nuw i8, ptr %4, i64 40 %1278 = load i64, ptr %1277, align 8 - %1279 = add i64 %1278, %.pre-phi1372 + %1279 = add i64 %1278, %.pre-phi1374 store i64 %1279, ptr %1277, align 8 %.not1222 = icmp eq i64 %.01090, 0 br i1 %.not1222, label %1428, label %1280 @@ -10481,9 +10481,9 @@ rbimpl_size_mul_or_raise.exit1294: ; preds = %1284, %1290 store i64 %1299, ptr %1297, align 8 br label %1428 -1300: ; preds = %75 +1300: ; preds = %74 store i32 2, ptr %12, align 4 - %1301 = icmp sgt i64 %71, 0 + %1301 = icmp sgt i64 %70, 0 br i1 %1301, label %1302, label %1312 1302: ; preds = %1300 @@ -10501,14 +10501,14 @@ rbimpl_size_mul_or_raise.exit1295: ; preds = %1302, %1307 %1309 = phi ptr [ %1308, %1307 ], [ %69, %1302 ] %1310 = load i64, ptr %68, align 8 %1311 = getelementptr i8, ptr %1309, i64 %1310 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1311, ptr align 1 %.1, i64 %71, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %1311, ptr align 1 %.1, i64 %70, i1 false) br label %1312 1312: ; preds = %rbimpl_size_mul_or_raise.exit1295, %1300 store ptr %.21131, ptr %0, align 8 store ptr %.21095, ptr %1, align 8 %1313 = load i64, ptr %68, align 8 - %1314 = add i64 %1313, %71 + %1314 = add i64 %1313, %70 store i64 %1314, ptr %68, align 8 br label %1428 @@ -10594,7 +10594,7 @@ rbimpl_size_mul_or_raise.exit1295: ; preds = %1302, %1307 br label %1360 1360: ; preds = %1399, %1355 - %1361 = phi i64 [ %1357, %1355 ], [ %.pre1323, %1399 ] + %1361 = phi i64 [ %1357, %1355 ], [ %.pre1325, %1399 ] %1362 = phi i64 [ 0, %1355 ], [ %.pre, %1399 ] %.341163 = phi ptr [ %.32, %1355 ], [ %.351164, %1399 ] %.351128 = phi ptr [ %.341127, %1355 ], [ %1406, %1399 ] @@ -10675,8 +10675,8 @@ rbimpl_size_mul_or_raise.exit1296: ; preds = %1374, %1380 %1406 = getelementptr i8, ptr %.36, i64 1 store i8 %1405, ptr %.36, align 1 %.pre = load i64, ptr %1401, align 8 - %.phi.trans.insert1322 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %.pre1323 = load i64, ptr %.phi.trans.insert1322, align 8 + %.phi.trans.insert1324 = getelementptr inbounds nuw i8, ptr %4, i64 72 + %.pre1325 = load i64, ptr %.phi.trans.insert1324, align 8 br label %1360, !llvm.loop !173 1407: ; preds = %6, %1339, %1360, %1315 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 5712109fd94..9c4f5e3fee4 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -360104,7 +360104,7 @@ sqlite3_stricmp.exit289.thread.i: ; preds = %467 br label %parseModifier.exit.thread82 .preheader.i290.i: ; preds = %.preheader.i290.i.preheader, %504 - %492 = phi i8 [ %.pre477.i, %504 ], [ %356, %.preheader.i290.i.preheader ] + %492 = phi i8 [ %.pre480.i, %504 ], [ %356, %.preheader.i290.i.preheader ] %.013.i.i291.i = phi ptr [ %506, %504 ], [ @.str.1188, %.preheader.i290.i.preheader ] %.0.i.i292.i = phi ptr [ %505, %504 ], [ %.0.i.i54, %.preheader.i290.i.preheader ] %493 = load i8, ptr %.013.i.i291.i, align 1 @@ -360128,7 +360128,7 @@ sqlite3_stricmp.exit289.thread.i: ; preds = %467 504: ; preds = %497, %495 %505 = getelementptr inbounds nuw i8, ptr %.0.i.i292.i, i64 1 %506 = getelementptr inbounds nuw i8, ptr %.013.i.i291.i, i64 1 - %.pre477.i = load i8, ptr %505, align 1 + %.pre480.i = load i8, ptr %505, align 1 br label %.preheader.i290.i sqlite3_stricmp.exit295.thread.i: ; preds = %495 @@ -360165,7 +360165,7 @@ sqlite3_stricmp.exit295.thread.i: ; preds = %495 br i1 %.not.i296.i, label %519, label %.computeJD.exit_crit_edge.i .computeJD.exit_crit_edge.i: ; preds = %517 - %.pre478.i = load i64, ptr %6, align 8 + %.pre481.i = load i64, ptr %6, align 8 br label %computeJD.exit.i 519: ; preds = %517 @@ -360256,7 +360256,7 @@ sqlite3_stricmp.exit295.thread.i: ; preds = %495 br label %computeJD.exit.i computeJD.exit.i: ; preds = %563, %550, %529, %528, %.computeJD.exit_crit_edge.i - %568 = phi i64 [ %.pre478.i, %.computeJD.exit_crit_edge.i ], [ 0, %528 ], [ %548, %529 ], [ %561, %550 ], [ %567, %563 ] + %568 = phi i64 [ %.pre481.i, %.computeJD.exit_crit_edge.i ], [ 0, %528 ], [ %548, %529 ], [ %561, %550 ], [ %567, %563 ] %569 = sub nsw i64 %568, %513 %.not241.i = icmp ne i64 %569, 0 %570 = add nuw nsw i32 %.0211.i, 1 @@ -360294,8 +360294,8 @@ computeJD.exit.i: ; preds = %563, %550, %529, %5 br i1 %581, label %582, label %split.i.i 582: ; preds = %.lr.ph434.i - %exitcond471.not.i = icmp eq i64 %.023.i432.idx.i, 7 - br i1 %exitcond471.not.i, label %sqlite3_strnicmp.exit.thread.i, label %.lr.ph.ithread-pre-split.i, !llvm.loop !65 + %exitcond474.not.i = icmp eq i64 %.023.i432.idx.i, 7 + br i1 %exitcond474.not.i, label %sqlite3_strnicmp.exit.thread.i, label %.lr.ph.ithread-pre-split.i, !llvm.loop !65 split.i.i: ; preds = %.lr.ph434.i %.023.i432.ptr.i.le = getelementptr inbounds nuw i8, ptr @.str.1189, i64 %.023.i432.idx.i @@ -360303,11 +360303,11 @@ split.i.i: ; preds = %.lr.ph434.i br label %sqlite3_strnicmp.exit.i sqlite3_strnicmp.exit.loopexit.i: ; preds = %.lr.ph.ithread-pre-split.i - %.ptr479.i = getelementptr inbounds nuw i8, ptr @.str.1189, i64 %.023.i432.add.i + %.ptr482.i = getelementptr inbounds nuw i8, ptr @.str.1189, i64 %.023.i432.add.i br label %sqlite3_strnicmp.exit.i sqlite3_strnicmp.exit.i: ; preds = %sqlite3_strnicmp.exit.loopexit.i, %split.i.i, %.lr.ph.i.preheader.i - %.023.i408.i = phi ptr [ %.023.i432.ptr.i.le, %split.i.i ], [ @.str.1189, %.lr.ph.i.preheader.i ], [ %.ptr479.i, %sqlite3_strnicmp.exit.loopexit.i ] + %.023.i408.i = phi ptr [ %.023.i432.ptr.i.le, %split.i.i ], [ @.str.1189, %.lr.ph.i.preheader.i ], [ %.ptr482.i, %sqlite3_strnicmp.exit.loopexit.i ] %584 = phi i32 [ %583, %split.i.i ], [ 0, %.lr.ph.i.preheader.i ], [ 0, %sqlite3_strnicmp.exit.loopexit.i ] %585 = load i8, ptr %.023.i408.i, align 1 %586 = zext i8 %585 to i64 @@ -360382,8 +360382,8 @@ sqlite3_strnicmp.exit.thread.i: ; preds = %582, %sqlite3_strni br i1 %625, label %626, label %split.i307.i 626: ; preds = %.lr.ph.i - %exitcond470.not.i = icmp eq i64 %.023.i304428.idx.i, 8 - br i1 %exitcond470.not.i, label %sqlite3_strnicmp.exit310.thread.i, label %.lr.ph.i302thread-pre-split.i, !llvm.loop !65 + %exitcond473.not.i = icmp eq i64 %.023.i304428.idx.i, 8 + br i1 %exitcond473.not.i, label %sqlite3_strnicmp.exit310.thread.i, label %.lr.ph.i302thread-pre-split.i, !llvm.loop !65 split.i307.i: ; preds = %.lr.ph.i %.023.i304428.ptr.i.le = getelementptr inbounds nuw i8, ptr @.str.1190, i64 %.023.i304428.idx.i @@ -360406,7 +360406,7 @@ sqlite3_strnicmp.exit310.i: ; preds = %sqlite3_strnicmp.ex br i1 %.not234.i, label %sqlite3_strnicmp.exit310.thread.i, label %.preheader.i311.i .preheader.i311.i: ; preds = %sqlite3_strnicmp.exit310.i, %646 - %634 = phi i8 [ %.pre475.i, %646 ], [ %356, %sqlite3_strnicmp.exit310.i ] + %634 = phi i8 [ %.pre478.i, %646 ], [ %356, %sqlite3_strnicmp.exit310.i ] %.013.i.i312.i = phi ptr [ %648, %646 ], [ @.str.1180, %sqlite3_strnicmp.exit310.i ] %.0.i.i313.i = phi ptr [ %647, %646 ], [ %.0.i.i54, %sqlite3_strnicmp.exit310.i ] %635 = load i8, ptr %.013.i.i312.i, align 1 @@ -360430,11 +360430,11 @@ sqlite3_strnicmp.exit310.i: ; preds = %sqlite3_strnicmp.ex 646: ; preds = %639, %637 %647 = getelementptr inbounds nuw i8, ptr %.0.i.i313.i, i64 1 %648 = getelementptr inbounds nuw i8, ptr %.013.i.i312.i, i64 1 - %.pre475.i = load i8, ptr %647, align 1 + %.pre478.i = load i8, ptr %647, align 1 br label %.preheader.i311.i .preheader.i317.i: ; preds = %639, %661 - %649 = phi i8 [ %.pre476.i, %661 ], [ %356, %639 ] + %649 = phi i8 [ %.pre479.i, %661 ], [ %356, %639 ] %.013.i.i318.i = phi ptr [ %663, %661 ], [ @.str.1181, %639 ] %.0.i.i319.i = phi ptr [ %662, %661 ], [ %.0.i.i54, %639 ] %650 = load i8, ptr %.013.i.i318.i, align 1 @@ -360458,7 +360458,7 @@ sqlite3_strnicmp.exit310.i: ; preds = %sqlite3_strnicmp.ex 661: ; preds = %654, %652 %662 = getelementptr inbounds nuw i8, ptr %.0.i.i319.i, i64 1 %663 = getelementptr inbounds nuw i8, ptr %.013.i.i318.i, i64 1 - %.pre476.i = load i8, ptr %662, align 1 + %.pre479.i = load i8, ptr %662, align 1 br label %.preheader.i317.i sqlite3_stricmp.exit316.thread.i: ; preds = %637, %652 @@ -360894,7 +360894,7 @@ computeFloor.exit.i: ; preds = %847, %844, %835, %8 br i1 %.not.i343.i, label %878, label %.computeJD.exit359_crit_edge.i .computeJD.exit359_crit_edge.i: ; preds = %876 - %.pre474.i = load i64, ptr %12, align 8 + %.pre477.i = load i64, ptr %12, align 8 br label %computeJD.exit359.i 878: ; preds = %876 @@ -360973,7 +360973,7 @@ computeFloor.exit.i: ; preds = %847, %844, %835, %8 br label %computeJD.exit359.i computeJD.exit359.i: ; preds = %921, %908, %887, %.thread.i346.i, %880, %.computeJD.exit359_crit_edge.i - %926 = phi i64 [ %.pre474.i, %.computeJD.exit359_crit_edge.i ], [ %906, %887 ], [ %919, %908 ], [ %925, %921 ], [ 0, %.thread.i346.i ], [ 0, %880 ] + %926 = phi i64 [ %.pre477.i, %.computeJD.exit359_crit_edge.i ], [ %906, %887 ], [ %919, %908 ], [ %925, %921 ], [ 0, %.thread.i346.i ], [ 0, %880 ] %.fr233.i = freeze i64 %926 %927 = add i64 %.fr233.i, -43200000 %928 = srem i64 %927, 86400000 @@ -361028,53 +361028,53 @@ computeJD.exit359.i: ; preds = %921, %908, %887, %. store i8 0, ptr %293, align 4 br label %958 -958: ; preds = %1045, %947 +958:; preds = %1045, %947 %indvars.iv467.i = phi i64 [ 0, %947 ], [ %indvars.iv.next468.i, %1045 ] %959 = getelementptr inbounds nuw [6 x %struct.anon.40], ptr @aXformType, i64 0, i64 %indvars.iv467.i - %960 = load i8, ptr %959, align 16 - %961 = zext i8 %960 to i32 - %962 = icmp eq i32 %spec.select252.i, %961 - br i1 %962, label %.lr.ph.i363.i, label %1045 + %indvars.iv469.i = load i8, ptr %959, align 16 + %indvars.iv467.i = zext i8 %indvars.iv469.i to i32 + %961 = icmp eq i32 %spec.select252.i, %indvars.iv467.i + br i1 %961, label %.lr.ph.i363.i, label %1045 -.lr.ph.i363.i: ; preds = %958, %974 +.lr.ph.i363.i:; preds = %958, %974 %.in.i364.i = phi i32 [ %963, %974 ], [ %spec.select252.i, %958 ] %.023.i365.i = phi ptr [ %975, %974 ], [ %.2.i, %958 ] %.01422.i366.pn.i = phi ptr [ %.01422.i366.i, %974 ], [ %959, %958 ] %.01422.i366.i = getelementptr inbounds nuw i8, ptr %.01422.i366.pn.i, i64 1 - %963 = add nsw i32 %.in.i364.i, -1 - %964 = load i8, ptr %.01422.i366.i, align 1 + %965 = add nsw i32 %.in.i364.i, -1 + %.not.i367.i = load i8, ptr %.01422.i366.i, align 1 %.not.i367.i = icmp eq i8 %964, 0 br i1 %.not.i367.i, label %sqlite3_strnicmp.exit370.loopexit.i, label %965 -965: ; preds = %.lr.ph.i363.i - %966 = zext i8 %964 to i64 - %967 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %966 - %968 = load i8, ptr %967, align 1 - %969 = load i8, ptr %.023.i365.i, align 1 - %970 = zext i8 %969 to i64 - %971 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %970 - %972 = load i8, ptr %971, align 1 - %973 = icmp eq i8 %968, %972 +965:; preds = %.lr.ph.i363.i + %968 = zext i8 %.not.i367.i to i64 + %969 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %968 + %970 = load i8, ptr %967, align 1 + %971 = load i8, ptr %.023.i365.i, align 1 + %972 = zext i8 %971 to i64 + %973 = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %972 + %974 = load i8, ptr %973, align 1 + %973 = icmp eq i8 %970, %972 br i1 %973, label %974, label %split.i368.i -974: ; preds = %965 - %975 = getelementptr inbounds nuw i8, ptr %.023.i365.i, i64 1 +974: ; preds = %965 + %exitcond.not.i = getelementptr inbounds nuw i8, ptr %.023.i365.i, i64 1 %976 = icmp samesign ugt i32 %.in.i364.i, 1 br i1 %976, label %.lr.ph.i363.i, label %sqlite3_strnicmp.exit370.thread.i, !llvm.loop !65 -split.i368.i: ; preds = %965 +split.i368.i:; preds = %965 %977 = zext i8 %968 to i32 br label %sqlite3_strnicmp.exit370.i sqlite3_strnicmp.exit370.loopexit.i: ; preds = %.lr.ph.i363.i %.pre.i = load i8, ptr %.023.i365.i, align 1 %.phi.trans.insert.i = zext i8 %.pre.i to i64 - %.phi.trans.insert472.i = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert.i - %.pre473.i = load i8, ptr %.phi.trans.insert472.i, align 1 + %.phi.trans.insert475.i = getelementptr inbounds nuw [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert.i + %.pre476.i = load i8, ptr %.phi.trans.insert475.i, align 1 br label %sqlite3_strnicmp.exit370.i sqlite3_strnicmp.exit370.i: ; preds = %sqlite3_strnicmp.exit370.loopexit.i, %split.i368.i - %978 = phi i8 [ %972, %split.i368.i ], [ %.pre473.i, %sqlite3_strnicmp.exit370.loopexit.i ] + %978 = phi i8 [ %972, %split.i368.i ], [ %.pre476.i, %sqlite3_strnicmp.exit370.loopexit.i ] %979 = phi i32 [ %977, %split.i368.i ], [ 0, %sqlite3_strnicmp.exit370.loopexit.i ] %980 = zext i8 %978 to i32 %981 = icmp eq i32 %979, %980 @@ -361137,7 +361137,7 @@ sqlite3_strnicmp.exit370.thread.i: ; preds = %974, %sqlite3_strni .sink.split.i: ; preds = %1006, %1001 %1010 = phi i32 [ %1009, %1006 ], [ %1004, %1001 ] - %.sink513.i = phi i32 [ %1007, %1006 ], [ %992, %1001 ] + %.sink516.i = phi i32 [ %1007, %1006 ], [ %992, %1001 ] %1011 = load i32, ptr %292, align 8 %1012 = icmp slt i32 %1011, 29 br i1 %1012, label %computeFloor.exit, label %1013 @@ -361185,7 +361185,7 @@ computeFloor.exit: ; preds = %.sink.split.i, %101 %.sink.i = phi i8 [ %1029, %1027 ], [ %1032, %1030 ], [ %1020, %1018 ], [ 0, %.sink.split.i ], [ 0, %1013 ] store i8 %.sink.i, ptr %293, align 4 store i8 0, ptr %289, align 8 - %1033 = sitofp i32 %.sink513.i to double + %1033 = sitofp i32 %.sink516.i to double %1034 = fsub double %955, %1033 br label %1035 @@ -361204,8 +361204,8 @@ computeFloor.exit: ; preds = %.sink.split.i, %101 br label %.loopexit.i 1045: ; preds = %sqlite3_strnicmp.exit370.thread.i, %sqlite3_strnicmp.exit370.i, %958 - %indvars.iv.next468.i = add nuw nsw i64 %indvars.iv467.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next468.i, 6 + %indvars.iv.next470.i = add nuw nsw i64 %indvars.iv467.i, 1 + %scevgep468.i = icmp eq i64 %indvars.iv.next468.i, 6 br i1 %exitcond.not.i, label %.loopexit.i, label %958, !llvm.loop !1370 .loopexit.i: ; preds = %1045, %1035 diff --git a/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll b/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll index 09f4eb52a25..7397ee6da4e 100644 --- a/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll +++ b/bench/tls-rs/optimized/2xhpv4vf07do7r8g.ll @@ -5335,7 +5335,7 @@ define internal fastcc void @_ZN6rustls6crypto9aws_lc_rs4quic19HeaderProtectionK store <5 x i8> %.sroa.0.0.vec.extract.i.i, ptr %14, align 8 %25 = getelementptr inbounds nuw i8, ptr %14, i64 1 %26 = icmp ugt i64 %6, 4 - br i1 %26, label %39, label %31 + br i1 %26, label %40, label %31 _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: ; preds = %8 %27 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h881b5322e8400d52E"(i64 noundef 24, i1 noundef zeroext false), !noalias !1299 @@ -5351,7 +5351,7 @@ _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: store ptr %29, ptr %.sroa.329.sroa.3.0..sroa.329.0..sroa_idx.sroa_idx, align 8 %.sroa.329.sroa.4.0..sroa.329.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 24, ptr %.sroa.329.sroa.4.0..sroa.329.0..sroa_idx.sroa_idx, align 8 - br label %53 + br label %51 31: ; preds = %24 %32 = extractelement <16 x i8> %.sroa.0.0.i.i, i64 0 @@ -5368,29 +5368,29 @@ _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: %36 = select i1 %7, i8 %32, i8 0 %.031 = xor i8 %36, %33 %37 = and i8 %.031, 3 - %narrow = add nuw nsw i8 %37, 1 - %38 = zext nneg i8 %narrow to i64 + %38 = add nuw nsw i8 %37, 1 + %39 = zext nneg i8 %38 to i64 br label %.lr.ph -39: ; preds = %24 - %40 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h881b5322e8400d52E"(i64 noundef 22, i1 noundef zeroext false), !noalias !1307 - %41 = extractvalue { i64, ptr } %40, 0 - %42 = extractvalue { i64, ptr } %40, 1 - %43 = icmp ne ptr %42, null - call void @llvm.assume(i1 %43) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(22) %42, ptr noundef nonnull align 1 dereferenceable(22) @anon.ef2cb31d04e324dd9619959f34c788f4.80, i64 22, i1 false) +40: ; preds = %24 + %41 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h881b5322e8400d52E"(i64 noundef 22, i1 noundef zeroext false), !noalias !1307 + %42 = extractvalue { i64, ptr } %41, 0 + %43 = extractvalue { i64, ptr } %41, 1 + %44 = icmp ne ptr %43, null + call void @llvm.assume(i1 %44) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(22) %43, ptr noundef nonnull align 1 dereferenceable(22) @anon.ef2cb31d04e324dd9619959f34c788f4.80, i64 22, i1 false) store i8 12, ptr %0, align 8 %.sroa.48.sroa.3.0..sroa.48.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %41, ptr %.sroa.48.sroa.3.0..sroa.48.0..sroa_idx.sroa_idx, align 8 + store i64 %42, ptr %.sroa.48.sroa.3.0..sroa.48.0..sroa_idx.sroa_idx, align 8 %.sroa.48.sroa.4.0..sroa.48.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %42, ptr %.sroa.48.sroa.4.0..sroa.48.0..sroa_idx.sroa_idx, align 8 + store ptr %43, ptr %.sroa.48.sroa.4.0..sroa.48.0..sroa_idx.sroa_idx, align 8 %.sroa.48.sroa.5.0..sroa.48.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 22, ptr %.sroa.48.sroa.5.0..sroa.48.0..sroa_idx.sroa_idx, align 8 - br label %53 + br label %51 .thread65: ; preds = %.lr.ph, %31 store i8 20, ptr %0, align 8 - br label %53 + br label %51 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.sroa.14.075 = phi i64 [ %44, %.lr.ph ], [ %38, %.lr.ph.preheader ] @@ -5403,12 +5403,12 @@ _ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit: %49 = load i8, ptr %46, align 1, !noundef !14 %50 = xor i8 %49, %48 store i8 %50, ptr %46, align 1 - %51 = icmp ne i64 %44, 0 + %exitcond.not = icmp ne i64 %44, 0 %52 = icmp ult i64 %45, %6 %or.cond = select i1 %51, i1 %52, i1 false br i1 %or.cond, label %.lr.ph, label %.thread65 -53: ; preds = %_ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit, %39, %.thread65 +51: ; preds = %_ZN9aws_lc_rs4aead4quic19HeaderProtectionKey8new_mask17h408478ba2bbbe363E.exit, %40, %.thread65 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %14) ret void } diff --git a/bench/wireshark/optimized/packet-ieee80211.ll b/bench/wireshark/optimized/packet-ieee80211.ll index a05064ece62..210733008cf 100644 --- a/bench/wireshark/optimized/packet-ieee80211.ll +++ b/bench/wireshark/optimized/packet-ieee80211.ll @@ -37597,10 +37597,10 @@ define internal range(i32 3, 2) i32 @dissect_wfa_wnm_non_pref_chan(ptr noundef % .lr.ph: ; preds = %11, %.lr.ph %.029 = phi i32 [ %16, %.lr.ph ], [ 1, %11 ] - %.025.in28 = phi i32 [ %.025, %.lr.ph ], [ %5, %11 ] - %.025 = add nsw i32 %.025.in28, -1 - %14 = load i32, ptr @hf_ieee80211_wfa_ie_mbo_non_pref_chan_chan, align 4 - %15 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %14, ptr noundef %0, i32 noundef %.029, i32 noundef 1, i32 noundef 0) #22 + %15 = phi i32 [ %16, %.lr.ph ], [ %5, %11 ] + %16 = add nsw i32 %exitcond.not, -1 + %17 = load i32, ptr @hf_ieee80211_wfa_ie_mbo_non_pref_chan_chan, align 4 + %exitcond.not = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %17, ptr noundef %0, i32 noundef %.029, i32 noundef 1, i32 noundef 0) #22 %16 = add nuw nsw i32 %.029, 1 %17 = icmp samesign ugt i32 %.025.in28, 4 br i1 %17, label %.lr.ph, label %._crit_edge, !llvm.loop !161 diff --git a/bench/wireshark/optimized/packet-sctp.ll b/bench/wireshark/optimized/packet-sctp.ll index 71e35a9e9ee..b1be82d4849 100644 --- a/bench/wireshark/optimized/packet-sctp.ll +++ b/bench/wireshark/optimized/packet-sctp.ll @@ -8459,49 +8459,49 @@ define internal fastcc void @sctp_ack_block(ptr noundef readonly captures(none) %61 = icmp eq ptr %60, null br i1 %61, label %.loopexit, label %.preheader.split -.preheader.splitthread-pre-split: ; preds = %sctp_ack.exit - %62 = add nuw i32 %.089, 1 - %.pr = load ptr, ptr %8, align 8 +.preheader.split.preheader: ; preds = %sctp_ack.exit + %62 = add nuw i32 %65, 1 + %63 = load ptr, ptr %8, align 8 br label %.preheader.split -.preheader.split: ; preds = %.preheader, %.preheader.splitthread-pre-split - %63 = phi ptr [ %.pr, %.preheader.splitthread-pre-split ], [ %60, %.preheader ] - %.089 = phi i32 [ %62, %.preheader.splitthread-pre-split ], [ 0, %.preheader ] +.preheader.split: ; preds = %.preheader, %.preheader.split.preheader + %.089 = phi ptr [ %.089, %.preheader.split.preheader ], [ %60, %.preheader ] + %65 = phi i32 [ %62, %.preheader.split.preheader ], [ 0, %.preheader ] %.not.i = icmp eq ptr %63, null - br i1 %.not.i, label %sctp_ack.exit, label %64 - -64: ; preds = %.preheader.split - %65 = add i32 %.089, %.059 - %66 = load i32, ptr %14, align 4 - %67 = getelementptr inbounds nuw i8, ptr %63, i64 24 - %68 = load ptr, ptr %67, align 8 - %69 = tail call ptr @wmem_tree_lookup32(ptr noundef %68, i32 noundef %65) #17 - %.not30.i = icmp eq ptr %69, null - br i1 %.not30.i, label %sctp_ack.exit, label %70 - -70: ; preds = %64 - %71 = getelementptr inbounds nuw i8, ptr %69, i64 32 - %72 = load i32, ptr %71, align 8 - %.not31.i = icmp eq i32 %72, 0 + br i1 %.not.i, label %sctp_ack.exit, label %66 + +66: ; preds = %.preheader.split + %67 = add i32 %.089, %.059 + %68 = load i32, ptr %14, align 4 + %69 = getelementptr inbounds nuw i8, ptr %63, i64 24 + %70 = load ptr, ptr %69, align 8 + %71 = tail call ptr @wmem_tree_lookup32(ptr noundef %70, i32 noundef %67) #17 + %.not30.i = icmp eq ptr %71, null + br i1 %.not30.i, label %sctp_ack.exit, label %72 + +72: ; preds = %66 + %73 = getelementptr inbounds nuw i8, ptr %71, i64 32 + %74 = load i32, ptr %73, align 8 + %.not31.i = icmp eq i32 %74, 0 br i1 %.not31.i, label %73, label %87 -73: ; preds = %70 +.preheader.i: ; preds = %70 store i32 %66, ptr %71, align 8 - %74 = getelementptr inbounds nuw i8, ptr %69, i64 40 + %81 = getelementptr inbounds nuw i8, ptr %69, i64 40 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull readonly align 8 dereferenceable(16) %59, i64 16, i1 false) - %75 = load ptr, ptr %8, align 8 - %76 = getelementptr inbounds nuw i8, ptr %75, i64 32 + %.not33.i = load ptr, ptr %8, align 8 + %76 = getelementptr inbounds nuw i8, ptr %.not33.i, i64 32 %77 = load ptr, ptr %76, align 8 %78 = tail call ptr @wmem_tree_lookup32(ptr noundef %77, i32 noundef %66) #17 - %.not32.i = icmp eq ptr %78, null - br i1 %.not32.i, label %83, label %.preheader.i + %84 = icmp eq ptr %78, null + br i1 %84, label %83, label %.preheader.i .preheader.i: ; preds = %73, %.preheader.i %.0.i = phi ptr [ %80, %.preheader.i ], [ %78, %73 ] - %79 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 - %80 = load ptr, ptr %79, align 8 - %.not33.i = icmp eq ptr %80, null - br i1 %.not33.i, label %81, label %.preheader.i, !llvm.loop !50 + %86 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 + %87 = load ptr, ptr %86, align 8 + %88 = icmp eq ptr %87, null + br i1 %88, label %81, label %.preheader.i, !llvm.loop !50 81: ; preds = %.preheader.i %82 = getelementptr inbounds nuw i8, ptr %.0.i, i64 72 @@ -8522,12 +8522,12 @@ define internal fastcc void @sctp_ack_block(ptr noundef readonly captures(none) 90: ; preds = %87 %.val.i = load i32, ptr %14, align 4 - tail call fastcc void @ack_tree(ptr noundef %69, ptr noundef %3, ptr noundef %2, i32 %.val.i) + tail call fastcc void @ack_tree(ptr noundef %71, ptr noundef %3, ptr noundef %2, i32 %.val.i) br label %sctp_ack.exit -sctp_ack.exit: ; preds = %.preheader.split, %64, %87, %90 - %.not79.not = icmp ult i32 %.089, %50 - br i1 %.not79.not, label %.preheader.splitthread-pre-split, label %.loopexit, !llvm.loop !51 +sctp_ack.exit: ; preds = %.preheader.split, %66, %87, %90 + %93 = icmp ult i32 %.089, %50 + br i1 %93, label %.preheader.split.preheader, label %.loopexit, !llvm.loop !51 .loopexit: ; preds = %39, %sctp_ack.exit, %.preheader, %42, %49, %6, %7, %10, %57 ret void diff --git a/bench/wireshark/optimized/packet-ssh.ll b/bench/wireshark/optimized/packet-ssh.ll index d0e059a9df1..6c25e23b2d0 100644 --- a/bench/wireshark/optimized/packet-ssh.ll +++ b/bench/wireshark/optimized/packet-ssh.ll @@ -6074,75 +6074,75 @@ define internal fastcc void @ssh_print_data(ptr noundef %0, ptr noundef readonly .lr.ph43: ; preds = %5 %8 = load ptr, ptr @g_ascii_table, align 8 - br label %9 + br label %10 -9: ; preds = %.lr.ph43, %._crit_edge40 - %.041 = phi i64 [ 0, %.lr.ph43 ], [ %48, %._crit_edge40 ] - %10 = load ptr, ptr @ssh_debug_file, align 8 - %11 = trunc nuw i64 %.041 to i32 - %12 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10, ptr noundef nonnull @.str.482, i32 noundef %11) #21 +10: ; preds = %.lr.ph43, %._crit_edge40 + %indvars.iv = phi i64 [ 0, %.lr.ph43 ], [ %48, %._crit_edge40 ] + %.041 = load ptr, ptr @ssh_debug_file, align 8 + %umin = trunc nuw i64 %indvars.iv to i32 + %11 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10, ptr noundef nonnull @.str.482, i32 noundef %11) #21 br label %13 -.preheader: ; preds = %13 +.preheader:; preds = %13 br i1 %21, label %.lr.ph, label %.lr.ph39.preheader -13: ; preds = %9, %13 +13:; preds = %9, %13 %.02834 = phi i64 [ 0, %9 ], [ %20, %13 ] - %.02933 = phi i64 [ %.041, %9 ], [ %19, %13 ] - %14 = load ptr, ptr @ssh_debug_file, align 8 - %15 = getelementptr i8, ptr %1, i64 %.02933 - %16 = load i8, ptr %15, align 1 - %17 = zext i8 %16 to i32 - %18 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %14, ptr noundef nonnull @.str.483, i32 noundef %17) #21 - %19 = add nuw nsw i64 %.02933, 1 - %20 = add nuw nsw i64 %.02834, 1 - %21 = icmp samesign ult i64 %.02834, 15 - %22 = icmp samesign ult i64 %19, %2 - %23 = select i1 %21, i1 %22, i1 false + %.02933 = phi i64 [ %.041, %9 ], [ %110, %13 ] + %.02834 = load ptr, ptr @ssh_debug_file, align 8 + %.02933 = getelementptr i8, ptr %1, i64 %.02933 + %15 = load i8, ptr %15, align 1 + %16 = zext i8 %.02933 to i32 + %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.02834, ptr noundef nonnull @.str.483, i32 noundef %17) #21 + %18 = add nuw nsw i64 %.02933, 1 + %19 = add nuw nsw i64 %.02834, 1 + %20 = icmp samesign ult i64 %.02834, 15 + %21 = icmp samesign ult i64 %110, %2 + %22 = select i1 %21, i1 %22, i1 false br i1 %23, label %13, label %.preheader, !llvm.loop !22 .lr.ph: ; preds = %.preheader, %.lr.ph - %.135 = phi i64 [ %26, %.lr.ph ], [ %20, %.preheader ] - %24 = load ptr, ptr @ssh_debug_file, align 8 - %25 = tail call i64 @fwrite(ptr nonnull @.str.484, i64 3, i64 1, ptr %24) - %26 = add nuw nsw i64 %.135, 1 - %27 = icmp samesign ult i64 %.135, 15 - br i1 %27, label %.lr.ph, label %.lr.ph39.preheader, !llvm.loop !23 + %.135 = phi i64 [ %27, %.lr.ph ], [ %20, %.preheader ] + %25 = load ptr, ptr @ssh_debug_file, align 8 + %26 = tail call i64 @fwrite(ptr nonnull @.str.484, i64 3, i64 1, ptr %25) + %27 = add nuw nsw i64 %.135, 1 + %28 = icmp samesign ult i64 %.135, 15 + br i1 %28, label %.lr.ph, label %.lr.ph39.preheader, !llvm.loop !23 .lr.ph39.preheader: ; preds = %.lr.ph, %.preheader - %28 = load ptr, ptr @ssh_debug_file, align 8 - %29 = tail call i32 @fputc(i32 noundef 32, ptr noundef %28) + %29 = load ptr, ptr @ssh_debug_file, align 8 + %210 = tail call i32 @fputc(i32 noundef 32, ptr noundef %29) br label %.lr.ph39 .lr.ph39: ; preds = %.lr.ph39.preheader, %.lr.ph39 - %.237 = phi i64 [ %43, %.lr.ph39 ], [ 0, %.lr.ph39.preheader ] - %.13036 = phi i64 [ %42, %.lr.ph39 ], [ %.041, %.lr.ph39.preheader ] - %30 = getelementptr i8, ptr %1, i64 %.13036 - %31 = load i8, ptr %30, align 1 - %32 = zext i8 %31 to i64 - %33 = getelementptr i16, ptr %8, i64 %32 - %34 = load i16, ptr %33, align 2 - %35 = and i16 %34, 64 - %36 = icmp eq i16 %35, 0 - %37 = icmp eq i8 %31, 9 - %or.cond = or i1 %37, %36 - %38 = zext i8 %31 to i32 - %39 = select i1 %or.cond, i32 46, i32 %38 - %40 = load ptr, ptr @ssh_debug_file, align 8 - %41 = tail call i32 @fputc(i32 noundef %39, ptr noundef %40) - %42 = add nuw nsw i64 %.13036, 1 - %43 = add nuw nsw i64 %.237, 1 - %44 = icmp samesign ult i64 %.237, 15 + %.237 = phi i64 [ %44, %.lr.ph39 ], [ 0, %.lr.ph39.preheader ] + %.13036 = phi i64 [ %43, %.lr.ph39 ], [ %.041, %.lr.ph39.preheader ] + %31 = getelementptr i8, ptr %1, i64 %.13036 + %32 = load i8, ptr %31, align 1 + %33 = zext i8 %32 to i64 + %34 = getelementptr i16, ptr %8, i64 %33 + %35 = load i16, ptr %34, align 2 + %36 = and i16 %35, 64 + %37 = icmp eq i16 %36, 0 + %38 = icmp eq i8 %32, 9 + %or.cond = or i1 %38, %37 + %39 = zext i8 %32 to i32 + %310 = select i1 %or.cond, i32 46, i32 %39 + %41 = load ptr, ptr @ssh_debug_file, align 8 + %42 = tail call i32 @fputc(i32 noundef %310, ptr noundef %41) + %43 = add nuw nsw i64 %.13036, 1 + %44 = add nuw nsw i64 %.237, 1 + %exitcond.not = icmp samesign ult i64 %.237, 15 %45 = icmp samesign ult i64 %42, %2 %46 = select i1 %44, i1 %45, i1 false br i1 %46, label %.lr.ph39, label %._crit_edge40, !llvm.loop !24 ._crit_edge40: ; preds = %.lr.ph39 - %47 = load ptr, ptr @ssh_debug_file, align 8 - %fputc = tail call i32 @fputc(i32 10, ptr %47) - %48 = add nuw nsw i64 %.041, 16 - %49 = icmp samesign ult i64 %48, %2 - br i1 %49, label %9, label %.loopexit, !llvm.loop !25 + %45 = load ptr, ptr @ssh_debug_file, align 8 + %fputc = tail call i32 @fputc(i32 10, ptr %45) + %46 = add nuw nsw i64 %.041, 16 + %47 = icmp samesign ult i64 %46, %2 + br i1 %49, label %10, label %.loopexit, !llvm.loop !25 .loopexit: ; preds = %._crit_edge40, %5, %3 ret void diff --git a/bench/wireshark/optimized/packet-tls-utils.ll b/bench/wireshark/optimized/packet-tls-utils.ll index 1590bba6a74..57bc6bd986b 100644 --- a/bench/wireshark/optimized/packet-tls-utils.ll +++ b/bench/wireshark/optimized/packet-tls-utils.ll @@ -4104,85 +4104,85 @@ define hidden void @ssl_print_data(ptr noundef %0, ptr noundef readonly captures .lr.ph47: ; preds = %5 %8 = load ptr, ptr @g_ascii_table, align 8 - br label %9 + br label %10 -9: ; preds = %.lr.ph47, %._crit_edge44 - %.045 = phi i64 [ 0, %.lr.ph47 ], [ %52, %._crit_edge44 ] - %10 = load ptr, ptr @ssl_debug_file, align 8 - %11 = tail call i64 @fwrite(ptr nonnull @.str.688, i64 2, i64 1, ptr %10) +10: ; preds = %.lr.ph47, %._crit_edge44 + %indvars.iv = phi i64 [ 0, %.lr.ph47 ], [ %52, %._crit_edge44 ] + %.045 = load ptr, ptr @ssl_debug_file, align 8 + %umin = tail call i64 @fwrite(ptr nonnull @.str.688, i64 2, i64 1, ptr %indvars.iv) br label %12 -.preheader34: ; preds = %12 - br i1 %20, label %.lr.ph, label %.lr.ph41.preheader - -12: ; preds = %9, %12 - %.02936 = phi i64 [ 0, %9 ], [ %19, %12 ] - %.03035 = phi i64 [ %.045, %9 ], [ %18, %12 ] - %13 = load ptr, ptr @ssl_debug_file, align 8 - %14 = getelementptr i8, ptr %1, i64 %.03035 - %15 = load i8, ptr %14, align 1 - %16 = zext i8 %15 to i32 - %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %13, ptr noundef nonnull @.str.689, i32 noundef %16) #23 - %18 = add nuw i64 %.03035, 1 - %19 = add nuw nsw i64 %.02936, 1 - %20 = icmp samesign ult i64 %.02936, 15 - %21 = icmp ult i64 %18, %2 - %22 = select i1 %20, i1 %21, i1 false - br i1 %22, label %12, label %.preheader34, !llvm.loop !10 +.preheader34: ; preds = %14 + br i1 %22, label %.lr.ph, label %.lr.ph41.preheader + +14: ; preds = %10, %14 + %.02936 = phi i64 [ 0, %10 ], [ %21, %14 ] + %.03035 = phi i64 [ %.045, %10 ], [ %20, %14 ] + %15 = load ptr, ptr @ssl_debug_file, align 8 + %16 = getelementptr i8, ptr %1, i64 %.03035 + %17 = load i8, ptr %16, align 1 + %18 = zext i8 %17 to i32 + %19 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.689, i32 noundef %18) #23 + %20 = add nuw i64 %.03035, 1 + %21 = add nuw nsw i64 %.02936, 1 + %22 = icmp samesign ult i64 %.02936, 15 + %23 = icmp ult i64 %20, %2 + %24 = select i1 %22, i1 %23, i1 false + br i1 %24, label %14, label %.preheader34, !llvm.loop !10 .lr.ph: ; preds = %.preheader34, %.lr.ph - %.137 = phi i64 [ %25, %.lr.ph ], [ %19, %.preheader34 ] - %23 = load ptr, ptr @ssl_debug_file, align 8 - %24 = tail call i64 @fwrite(ptr nonnull @.str.690, i64 3, i64 1, ptr %23) - %25 = add nuw nsw i64 %.137, 1 - %26 = icmp samesign ult i64 %.137, 15 - br i1 %26, label %.lr.ph, label %.lr.ph41.preheader, !llvm.loop !11 + %.137 = phi i64 [ %27, %.lr.ph ], [ %21, %.preheader34 ] + %25 = load ptr, ptr @ssl_debug_file, align 8 + %26 = tail call i64 @fwrite(ptr nonnull @.str.690, i64 3, i64 1, ptr %25) + %27 = add nuw nsw i64 %.137, 1 + %28 = icmp samesign ult i64 %.137, 15 + br i1 %28, label %.lr.ph, label %.lr.ph41.preheader, !llvm.loop !11 .lr.ph41.preheader: ; preds = %.lr.ph, %.preheader34 - %27 = load ptr, ptr @ssl_debug_file, align 8 - %28 = tail call i32 @fputc(i32 noundef 124, ptr noundef %27) + %29 = load ptr, ptr @ssl_debug_file, align 8 + %30 = tail call i32 @fputc(i32 noundef 124, ptr noundef %29) br label %.lr.ph41 .preheader: ; preds = %.lr.ph41 - %29 = icmp samesign ult i64 %.239, 15 - br i1 %29, label %.lr.ph43, label %._crit_edge44 + %210 = icmp samesign ult i64 %.239, 15 + br i1 %.not51, label %.lr.ph43, label %._crit_edge44 .lr.ph41: ; preds = %.lr.ph41.preheader, %.lr.ph41 - %.239 = phi i64 [ %43, %.lr.ph41 ], [ 0, %.lr.ph41.preheader ] - %.13138 = phi i64 [ %42, %.lr.ph41 ], [ %.045, %.lr.ph41.preheader ] - %30 = getelementptr i8, ptr %1, i64 %.13138 - %31 = load i8, ptr %30, align 1 - %32 = zext i8 %31 to i64 - %33 = getelementptr i16, ptr %8, i64 %32 - %34 = load i16, ptr %33, align 2 - %35 = and i16 %34, 64 - %36 = icmp eq i16 %35, 0 - %37 = icmp eq i8 %31, 9 - %or.cond = or i1 %37, %36 - %38 = zext i8 %31 to i32 - %39 = select i1 %or.cond, i32 46, i32 %38 - %40 = load ptr, ptr @ssl_debug_file, align 8 - %41 = tail call i32 @fputc(i32 noundef %39, ptr noundef %40) - %42 = add nuw i64 %.13138, 1 - %43 = add nuw nsw i64 %.239, 1 - %44 = icmp samesign ult i64 %.239, 15 + %.239 = phi i64 [ %44, %.lr.ph41 ], [ 0, %.lr.ph41.preheader ] + %.13138 = phi i64 [ %43, %.lr.ph41 ], [ %.045, %.lr.ph41.preheader ] + %31 = getelementptr i8, ptr %1, i64 %.13138 + %32 = load i8, ptr %31, align 1 + %33 = zext i8 %32 to i64 + %34 = getelementptr i16, ptr %8, i64 %33 + %35 = load i16, ptr %34, align 2 + %36 = and i16 %35, 64 + %37 = icmp eq i16 %36, 0 + %38 = icmp eq i8 %32, 9 + %or.cond = or i1 %38, %37 + %39 = zext i8 %32 to i32 + %310 = select i1 %or.cond, i32 46, i32 %39 + %41 = load ptr, ptr @ssl_debug_file, align 8 + %42 = tail call i32 @fputc(i32 noundef %310, ptr noundef %41) + %43 = add nuw i64 %.13138, 1 + %44 = add nuw nsw i64 %.239, 1 + %exitcond.not = icmp samesign ult i64 %.239, 15 %45 = icmp ult i64 %42, %2 %46 = select i1 %44, i1 %45, i1 false br i1 %46, label %.lr.ph41, label %.preheader, !llvm.loop !12 .lr.ph43: ; preds = %.preheader, %.lr.ph43 - %.342 = phi i64 [ %49, %.lr.ph43 ], [ %43, %.preheader ] - %47 = load ptr, ptr @ssl_debug_file, align 8 - %48 = tail call i32 @fputc(i32 noundef 32, ptr noundef %47) - %49 = add nuw nsw i64 %.342, 1 - %exitcond.not = icmp eq i64 %49, 16 - br i1 %exitcond.not, label %._crit_edge44, label %.lr.ph43, !llvm.loop !13 + %.342 = phi i64 [ %47, %.lr.ph43 ], [ %43, %.preheader ] + %45 = load ptr, ptr @ssl_debug_file, align 8 + %46 = tail call i32 @fputc(i32 noundef 32, ptr noundef %45) + %47 = add nuw nsw i64 %.342, 1 + %exitcond50.not = icmp eq i64 %47, 16 + br i1 %exitcond50.not, label %._crit_edge44, label %.lr.ph43, !llvm.loop !13 ._crit_edge44: ; preds = %.lr.ph43, %.preheader - %50 = load ptr, ptr @ssl_debug_file, align 8 - %51 = tail call i64 @fwrite(ptr nonnull @.str.691, i64 2, i64 1, ptr %50) - %52 = add i64 %.045, 16 - %53 = icmp ult i64 %52, %2 + %48 = load ptr, ptr @ssl_debug_file, align 8 + %49 = tail call i64 @fwrite(ptr nonnull @.str.691, i64 2, i64 1, ptr %48) + %50 = add i64 %.045, 16 + %51 = icmp ult i64 %50, %2 br i1 %53, label %9, label %.loopexit, !llvm.loop !14 .loopexit: ; preds = %._crit_edge44, %5, %3 diff --git a/bench/wolfssl/optimized/chacha.ll b/bench/wolfssl/optimized/chacha.ll index f7951d0a794..889b7a76e28 100644 --- a/bench/wolfssl/optimized/chacha.ll +++ b/bench/wolfssl/optimized/chacha.ll @@ -263,14 +263,14 @@ while.body.i: ; preds = %xorbufout.exit91.i, %bytes.addr.1156.i = phi i32 [ %bytes.addr.0.i, %while.body.lr.ph.i ], [ %sub31.i, %xorbufout.exit91.i ] %c.addr.1153.i = phi ptr [ %c.addr.0.i, %while.body.lr.ph.i ], [ %add.ptr32.i, %xorbufout.exit91.i ] call fastcc void @wc_Chacha_wordtobyte(ptr noundef %tmp.i, ptr noundef nonnull %ctx) - %15 = load i32, ptr %arrayidx25.i, align 4 - %add26.i = add i32 %15, 1 + %17 = load i32, ptr %arrayidx25.i, align 4 + %add26.i = add i32 %17, 1 store i32 %add26.i, ptr %arrayidx25.i, align 4 - %16 = ptrtoint ptr %c.addr.1153.i to i64 - %17 = ptrtoint ptr %m.addr.1157.i to i64 - %18 = or i64 %16, %17 - %19 = and i64 %18, 7 - %or.cond.i37.i = icmp eq i64 %19, 0 + %18 = ptrtoint ptr %c.addr.1153.i to i64 + %19 = ptrtoint ptr %m.addr.1157.i to i64 + %20 = or i64 %18, %19 + %21 = and i64 %20, 7 + %or.cond.i37.i = icmp eq i64 %21, 0 br i1 %or.cond.i37.i, label %while.cond.preheader.i52.i, label %for.body.preheader.i38.i while.cond.preheader.i52.i: ; preds = %while.body.i @@ -282,15 +282,15 @@ while.body.i54.i: ; preds = %while.cond.preheade %o.129.i57.i = phi ptr [ %incdec.ptr11.i62.i, %while.body.i54.i ], [ %c.addr.1153.i, %while.cond.preheader.i52.i ] %count.addr.128.i58.i = phi i32 [ %dec.i63.i, %while.body.i54.i ], [ 64, %while.cond.preheader.i52.i ] %incdec.ptr.i59.i = getelementptr inbounds nuw i8, ptr %b.130.i56.i, i64 1 - %20 = load i8, ptr %b.130.i56.i, align 1 + %22 = load i8, ptr %b.130.i56.i, align 1 %incdec.ptr8.i60.i = getelementptr inbounds nuw i8, ptr %m.131.i55.i, i64 1 - %21 = load i8, ptr %m.131.i55.i, align 1 - %xor22.i61.i = xor i8 %21, %20 + %23 = load i8, ptr %m.131.i55.i, align 1 + %xor22.i61.i = xor i8 %23, %22 %incdec.ptr11.i62.i = getelementptr inbounds nuw i8, ptr %o.129.i57.i, i64 1 store i8 %xor22.i61.i, ptr %o.129.i57.i, align 1 %dec.i63.i = add nsw i32 %count.addr.128.i58.i, -1 - %22 = ptrtoint ptr %incdec.ptr.i59.i to i64 - %rem5.i64.i = and i64 %22, 7 + %exitcond = ptrtoint ptr %incdec.ptr.i59.i to i64 + %rem5.i64.i = and i64 %exitcond, 7 %cmp6.i65.not.i = icmp eq i64 %rem5.i64.i, 0 br i1 %cmp6.i65.not.i, label %while.end.i67.i, label %while.body.i54.i, !llvm.loop !4 @@ -313,10 +313,10 @@ for.body.i.i74.i: ; preds = %for.body.i.i74.i, % %tpm.sroa.0.0.i77.i = phi ptr [ %incdec.ptr1.i.i80.i, %for.body.i.i74.i ], [ %m.1.lcssa.i71177.i, %for.body.i.i74.preheader.i ] %i.03.i.i78.i = phi i32 [ %inc.i.i83.i, %for.body.i.i74.i ], [ 0, %for.body.i.i74.preheader.i ] %incdec.ptr.i.i79.i = getelementptr inbounds nuw i8, ptr %tpb.sroa.0.0.i76.i, i64 8 - %23 = load i64, ptr %tpb.sroa.0.0.i76.i, align 8 + %24 = load i64, ptr %tpb.sroa.0.0.i76.i, align 8 %incdec.ptr1.i.i80.i = getelementptr inbounds nuw i8, ptr %tpm.sroa.0.0.i77.i, i64 8 - %24 = load i64, ptr %tpm.sroa.0.0.i77.i, align 8 - %xor.i.i81.i = xor i64 %24, %23 + %25 = load i64, ptr %tpm.sroa.0.0.i77.i, align 8 + %xor.i.i81.i = xor i64 %25, %24 %incdec.ptr2.i.i82.i = getelementptr inbounds nuw i8, ptr %tpo.sroa.0.0.i75.i, i64 8 store i64 %xor.i.i81.i, ptr %tpo.sroa.0.0.i75.i, align 8 %inc.i.i83.i = add nuw nsw i32 %i.03.i.i78.i, 1 @@ -343,10 +343,10 @@ for.body.preheader.i38.i: ; preds = %if.end.i85.i, %whil for.body.i44.i: ; preds = %for.body.i44.i, %for.body.preheader.i38.i %indvars.iv.i45.i = phi i64 [ 0, %for.body.preheader.i38.i ], [ %indvars.iv.next.i50.i, %for.body.i44.i ] %arrayidx.i46.i = getelementptr inbounds nuw i8, ptr %b.045.i40.i, i64 %indvars.iv.i45.i - %25 = load i8, ptr %arrayidx.i46.i, align 1 + %26 = load i8, ptr %arrayidx.i46.i, align 1 %arrayidx17.i47.i = getelementptr inbounds nuw i8, ptr %m.046.i39.i, i64 %indvars.iv.i45.i - %26 = load i8, ptr %arrayidx17.i47.i, align 1 - %xor1921.i48.i = xor i8 %26, %25 + %27 = load i8, ptr %arrayidx17.i47.i, align 1 + %xor1921.i48.i = xor i8 %27, %26 %arrayidx22.i49.i = getelementptr inbounds nuw i8, ptr %o.044.i41.i, i64 %indvars.iv.i45.i store i8 %xor1921.i48.i, ptr %arrayidx22.i49.i, align 1 %indvars.iv.next.i50.i = add nuw nsw i64 %indvars.iv.i45.i, 1 @@ -369,15 +369,15 @@ while.end.i: ; preds = %xorbufout.exit91.i, if.then34.i: ; preds = %while.end.i call fastcc void @wc_Chacha_wordtobyte(ptr noundef %tmp.i, ptr noundef nonnull %ctx) - %27 = ptrtoint ptr %c.addr.1.lcssa.i to i64 - %28 = ptrtoint ptr %m.addr.1.lcssa.i to i64 - %29 = or i64 %28, %27 - %30 = and i64 %29, 7 - %or.cond.i97.i = icmp eq i64 %30, 0 + %28 = ptrtoint ptr %c.addr.1.lcssa.i to i64 + %29 = ptrtoint ptr %m.addr.1.lcssa.i to i64 + %30 = or i64 %29, %28 + %31 = and i64 %30, 7 + %or.cond.i97.i = icmp eq i64 %31, 0 br i1 %or.cond.i97.i, label %while.cond.preheader.i112.i, label %for.body.preheader.i98.i while.cond.preheader.i112.i: ; preds = %if.then34.i - %rem.i92.i = and i64 %27, 7 + %rem.i92.i = and i64 %28, 7 %cmp627.not.i113.i = icmp eq i64 %rem.i92.i, 0 br i1 %cmp627.not.i113.i, label %while.end.i127.i, label %while.body.i114.i @@ -387,19 +387,19 @@ while.body.i114.i: ; preds = %while.cond.preheade %o.129.i117.i = phi ptr [ %incdec.ptr11.i122.i, %while.body.i114.i ], [ %c.addr.1.lcssa.i, %while.cond.preheader.i112.i ] %count.addr.128.i118.i = phi i32 [ %dec.i123.i, %while.body.i114.i ], [ %bytes.addr.1.lcssa.i, %while.cond.preheader.i112.i ] %incdec.ptr.i119.i = getelementptr inbounds nuw i8, ptr %b.130.i116.i, i64 1 - %31 = load i8, ptr %b.130.i116.i, align 1 + %32 = load i8, ptr %b.130.i116.i, align 1 %incdec.ptr8.i120.i = getelementptr inbounds nuw i8, ptr %m.131.i115.i, i64 1 - %32 = load i8, ptr %m.131.i115.i, align 1 - %xor22.i121.i = xor i8 %32, %31 + %33 = load i8, ptr %m.131.i115.i, align 1 + %xor22.i121.i = xor i8 %33, %32 %incdec.ptr11.i122.i = getelementptr inbounds nuw i8, ptr %o.129.i117.i, i64 1 store i8 %xor22.i121.i, ptr %o.129.i117.i, align 1 %dec.i123.i = add i32 %count.addr.128.i118.i, -1 - %33 = ptrtoint ptr %incdec.ptr.i119.i to i64 - %rem5.i124.i = and i64 %33, 7 + %34 = ptrtoint ptr %incdec.ptr.i119.i to i64 + %rem5.i124.i = and i64 %34, 7 %cmp6.i125.i = icmp ne i64 %rem5.i124.i, 0 %cmp7.i126.i = icmp ne i32 %dec.i123.i, 0 - %34 = select i1 %cmp6.i125.i, i1 %cmp7.i126.i, i1 false - br i1 %34, label %while.body.i114.i, label %while.end.i127.i, !llvm.loop !4 + %35 = select i1 %cmp6.i125.i, i1 %cmp7.i126.i, i1 false + br i1 %35, label %while.body.i114.i, label %while.end.i127.i, !llvm.loop !4 while.end.i127.i: ; preds = %while.body.i114.i, %while.cond.preheader.i112.i %count.addr.1.lcssa.i128.i = phi i32 [ %bytes.addr.1.lcssa.i, %while.cond.preheader.i112.i ], [ %dec.i123.i, %while.body.i114.i ] @@ -416,10 +416,10 @@ for.body.i.i134.i: ; preds = %while.end.i127.i, % %tpm.sroa.0.0.i137.i = phi ptr [ %incdec.ptr1.i.i140.i, %for.body.i.i134.i ], [ %m.1.lcssa.i131.i, %while.end.i127.i ] %i.03.i.i138.i = phi i32 [ %inc.i.i143.i, %for.body.i.i134.i ], [ 0, %while.end.i127.i ] %incdec.ptr.i.i139.i = getelementptr inbounds nuw i8, ptr %tpb.sroa.0.0.i136.i, i64 8 - %35 = load i64, ptr %tpb.sroa.0.0.i136.i, align 8 + %36 = load i64, ptr %tpb.sroa.0.0.i136.i, align 8 %incdec.ptr1.i.i140.i = getelementptr inbounds nuw i8, ptr %tpm.sroa.0.0.i137.i, i64 8 - %36 = load i64, ptr %tpm.sroa.0.0.i137.i, align 8 - %xor.i.i141.i = xor i64 %36, %35 + %37 = load i64, ptr %tpm.sroa.0.0.i137.i, align 8 + %xor.i.i141.i = xor i64 %37, %36 %incdec.ptr2.i.i142.i = getelementptr inbounds nuw i8, ptr %tpo.sroa.0.0.i135.i, i64 8 store i64 %xor.i.i141.i, ptr %tpo.sroa.0.0.i135.i, align 8 %inc.i.i143.i = add nuw nsw i32 %i.03.i.i138.i, 1 @@ -445,10 +445,10 @@ for.body.preheader.i98.i: ; preds = %if.end.i145.i, %if. for.body.i104.i: ; preds = %for.body.i104.i, %for.body.preheader.i98.i %indvars.iv.i105.i = phi i64 [ 0, %for.body.preheader.i98.i ], [ %indvars.iv.next.i110.i, %for.body.i104.i ] %arrayidx.i106.i = getelementptr inbounds nuw i8, ptr %b.045.i100.i, i64 %indvars.iv.i105.i - %37 = load i8, ptr %arrayidx.i106.i, align 1 + %38 = load i8, ptr %arrayidx.i106.i, align 1 %arrayidx17.i107.i = getelementptr inbounds nuw i8, ptr %m.046.i99.i, i64 %indvars.iv.i105.i - %38 = load i8, ptr %arrayidx17.i107.i, align 1 - %xor1921.i108.i = xor i8 %38, %37 + %39 = load i8, ptr %arrayidx17.i107.i, align 1 + %xor1921.i108.i = xor i8 %39, %38 %arrayidx22.i109.i = getelementptr inbounds nuw i8, ptr %o.044.i101.i, i64 %indvars.iv.i105.i store i8 %xor1921.i108.i, ptr %arrayidx22.i109.i, align 1 %indvars.iv.next.i110.i = add nuw nsw i64 %indvars.iv.i105.i, 1