From bf8064060f1e5f57ce0200ac5251abe4bd7a394d Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Wed, 2 Oct 2024 22:41:03 +0800 Subject: [PATCH 1/2] pre-commit: PR110836 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..a58601dd1f7 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/110836 # Please rebase manually # git fetch origin From ed4d2873ac7cd5e96e22a114236f665fefa8f408 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:09:19 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/clamav/optimized/others_common.c.ll | 307 +++++++------ .../hermes/optimized/BytecodeGenerator.cpp.ll | 83 ++-- bench/hwloc/optimized/traversal.ll | 279 ++++++------ bench/icu/optimized/simpletz.ll | 15 +- bench/icu/optimized/utf_impl.ll | 4 +- bench/linux/optimized/mincore.ll | 197 ++++----- bench/llvm/optimized/AArch64AsmParser.cpp.ll | 7 +- bench/llvm/optimized/Instructions.cpp.ll | 117 ++--- bench/lua/optimized/lcode.ll | 256 +++++------ bench/meshlab/optimized/plylib.cpp.ll | 100 ++--- bench/openjdk/optimized/awt_ImagingLib.ll | 304 ++++++------- bench/openspiel/optimized/chess_board.cc.ll | 193 ++++---- bench/openspiel/optimized/dark_chess.cc.ll | 390 ++++++++--------- bench/openusd/optimized/write.c.ll | 11 +- bench/regex-rs/optimized/33whcn8n29l9c6ys.ll | 413 +++++++++--------- 15 files changed, 1329 insertions(+), 1347 deletions(-) diff --git a/bench/clamav/optimized/others_common.c.ll b/bench/clamav/optimized/others_common.c.ll index 75d774e2fe6..6718920d9c3 100644 --- a/bench/clamav/optimized/others_common.c.ll +++ b/bench/clamav/optimized/others_common.c.ll @@ -348,34 +348,33 @@ declare void @perror(ptr nocapture noundef readonly) local_unnamed_addr #6 ; Function Attrs: nounwind uwtable define noalias noundef ptr @cli_max_calloc(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 { - %3 = add i64 %1, -1073741825 - %4 = icmp ult i64 %3, -1073741824 - %5 = add i64 %0, -1073741825 - %6 = icmp ult i64 %5, -1073741824 - %or.cond5 = or i1 %6, %4 - br i1 %or.cond5, label %10, label %7 + %3 = sub i64 1073741824, %0 + %4 = sub i64 1073741824, %1 + %5 = or i64 %4, %3 + %or.cond5.not = icmp ult i64 %5, 1073741824 + br i1 %or.cond5.not, label %6, label %9 -7: ; preds = %2 - %8 = mul nuw nsw i64 %1, %0 - %9 = icmp ugt i64 %8, 1073741824 - br i1 %9, label %10, label %11 +6: ; preds = %2 + %7 = mul nuw nsw i64 %1, %0 + %8 = icmp ugt i64 %7, 1073741824 + br i1 %8, label %9, label %10 -10: ; preds = %7, %2 +9: ; preds = %6, %2 tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.7, i64 noundef %1, i32 noundef 1073741824) - br label %14 + br label %13 -11: ; preds = %7 - %12 = tail call noalias ptr @calloc(i64 noundef %0, i64 noundef %1) #26 - %.not = icmp eq ptr %12, null - br i1 %.not, label %13, label %14 +10: ; preds = %6 + %11 = tail call noalias ptr @calloc(i64 noundef %0, i64 noundef %1) #26 + %.not = icmp eq ptr %11, null + br i1 %.not, label %12, label %13 -13: ; preds = %11 +12: ; preds = %10 tail call void @perror(ptr noundef nonnull @.str.8) #25 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i64 noundef %8) - br label %14 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i64 noundef %7) + br label %13 -14: ; preds = %11, %13, %10 - %.0 = phi ptr [ null, %10 ], [ null, %13 ], [ %12, %11 ] +13: ; preds = %10, %12, %9 + %.0 = phi ptr [ null, %9 ], [ null, %12 ], [ %11, %10 ] ret ptr %.0 } @@ -1713,158 +1712,158 @@ define noalias noundef ptr @cli_genfname(ptr noundef %0) local_unnamed_addr #0 { %5 = alloca [48 x i8], align 16 store ptr null, ptr %4, align 8 %.not = icmp eq ptr %0, null - br i1 %.not, label %.thread45, label %6 + br i1 %.not, label %.thread.thread, label %6 6: ; preds = %1 %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #23 %.not34 = icmp eq i64 %7, 0 - br i1 %.not34, label %.thread45, label %8 + br i1 %.not34, label %.thread.thread, label %8 8: ; preds = %6 %9 = call ptr @cli_sanitize_filepath(ptr noundef nonnull %0, i64 noundef %7, ptr noundef nonnull %4) %.pr = load ptr, ptr %4, align 8 %.not35 = icmp eq ptr %.pr, null - br i1 %.not35, label %.thread45, label %10 + br i1 %.not35, label %.thread.thread, label %.thread -10: ; preds = %8 - %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.pr) #23 - %12 = add nsw i64 %11, 12 - %13 = add i64 %11, -1073741813 - %14 = icmp ult i64 %13, -1073741824 - br i1 %14, label %15, label %.thread45 +.thread: ; preds = %8 + %10 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.pr) #23 + %11 = add i64 %10, 12 + %12 = add i64 %10, -1073741813 + %or.cond = icmp ult i64 %12, -1073741824 + br i1 %or.cond, label %13, label %.thread.thread -15: ; preds = %10 +13: ; preds = %.thread call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.7, i64 noundef 1, i32 noundef 1073741824) - br label %18 + br label %16 -.thread45: ; preds = %1, %6, %8, %10 - %.053 = phi i64 [ %12, %10 ], [ 60, %8 ], [ 60, %6 ], [ 60, %1 ] - %.0274350 = phi ptr [ %9, %10 ], [ %9, %8 ], [ null, %6 ], [ null, %1 ] - %16 = call noalias ptr @calloc(i64 noundef %.053, i64 noundef 1) #26 - %.not.i = icmp eq ptr %16, null - br i1 %.not.i, label %17, label %cli_max_calloc.exit +.thread.thread: ; preds = %1, %6, %8, %.thread + %.053 = phi i64 [ %11, %.thread ], [ 60, %8 ], [ 60, %6 ], [ 60, %1 ] + %.0274351 = phi ptr [ %9, %.thread ], [ %9, %8 ], [ null, %6 ], [ null, %1 ] + %14 = call noalias ptr @calloc(i64 noundef %.053, i64 noundef 1) #26 + %.not.i = icmp eq ptr %14, null + br i1 %.not.i, label %15, label %cli_max_calloc.exit -17: ; preds = %.thread45 +15: ; preds = %.thread.thread call void @perror(ptr noundef nonnull @.str.8) #25 call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i64 noundef %.053) - br label %18 + br label %16 -18: ; preds = %15, %17 - %.0274348.ph = phi ptr [ %.0274350, %17 ], [ %9, %15 ] +16: ; preds = %13, %15 + %.0274352 = phi ptr [ %9, %13 ], [ %.0274351, %15 ] call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.34) - %.not37 = icmp eq ptr %.0274348.ph, null - br i1 %.not37, label %59, label %19 + %.not37 = icmp eq ptr %.0274352, null + br i1 %.not37, label %57, label %17 -19: ; preds = %18 - call void @free(ptr noundef nonnull %.0274348.ph) #22 - br label %59 +17: ; preds = %16 + call void @free(ptr noundef nonnull %.0274352) #22 + br label %57 -cli_max_calloc.exit: ; preds = %.thread45 - %20 = call i32 @pthread_mutex_lock(ptr noundef nonnull @cli_gentemp_mutex) #22 +cli_max_calloc.exit: ; preds = %.thread.thread + %18 = call i32 @pthread_mutex_lock(ptr noundef nonnull @cli_gentemp_mutex) #22 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %5, ptr noundef nonnull align 16 dereferenceable(16) @name_salt, i64 16, i1 false) - %21 = getelementptr inbounds i8, ptr %3, i64 8 - br label %22 + %19 = getelementptr inbounds i8, ptr %3, i64 8 + br label %20 -22: ; preds = %cli_max_calloc.exit, %cli_rndnum.exit +20: ; preds = %cli_max_calloc.exit, %cli_rndnum.exit %indvars.iv = phi i64 [ 16, %cli_max_calloc.exit ], [ %indvars.iv.next, %cli_rndnum.exit ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) %.b1.i = load i1, ptr @rand_seeded, align 1 - br i1 %.b1.i, label %cli_rndnum.exit, label %23 - -23: ; preds = %22 - %24 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #22 - %25 = load i64, ptr %21, align 8 - %26 = call i64 @clock() #22 - %27 = add nsw i64 %26, %25 - %28 = call i32 @rand() #22 - %29 = trunc i64 %27 to i32 - %30 = add i32 %28, %29 - call void @srand(i32 noundef %30) #22 + br i1 %.b1.i, label %cli_rndnum.exit, label %21 + +21: ; preds = %20 + %22 = call i32 @gettimeofday(ptr noundef nonnull %3, ptr noundef null) #22 + %23 = load i64, ptr %19, align 8 + %24 = call i64 @clock() #22 + %25 = add nsw i64 %24, %23 + %26 = call i32 @rand() #22 + %27 = trunc i64 %25 to i32 + %28 = add i32 %26, %27 + call void @srand(i32 noundef %28) #22 store i1 true, ptr @rand_seeded, align 1 br label %cli_rndnum.exit -cli_rndnum.exit: ; preds = %22, %23 - %31 = call i32 @rand() #22 - %32 = sitofp i32 %31 to double - %33 = fmul double %32, 0x3E00000000000000 - %34 = fmul double %33, 2.550000e+02 - %35 = fptoui double %34 to i32 +cli_rndnum.exit: ; preds = %20, %21 + %29 = call i32 @rand() #22 + %30 = sitofp i32 %29 to double + %31 = fmul double %30, 0x3E00000000000000 + %32 = fmul double %31, 2.550000e+02 + %33 = fptoui double %32 to i32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %36 = trunc i32 %35 to i8 - %37 = add i8 %36, 1 - %38 = getelementptr inbounds [48 x i8], ptr %5, i64 0, i64 %indvars.iv - store i8 %37, ptr %38, align 1 + %34 = trunc i32 %33 to i8 + %35 = add i8 %34, 1 + %36 = getelementptr inbounds [48 x i8], ptr %5, i64 0, i64 %indvars.iv + store i8 %35, ptr %36, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 48 - br i1 %exitcond.not, label %39, label %22 + br i1 %exitcond.not, label %37, label %20 -39: ; preds = %cli_rndnum.exit +37: ; preds = %cli_rndnum.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %2, i8 0, i64 16, i1 false) - %40 = call ptr @cl_hash_data(ptr noundef nonnull @.str.59, ptr noundef nonnull %5, i64 noundef 48, ptr noundef nonnull %2, ptr noundef null) #22 + %38 = call ptr @cl_hash_data(ptr noundef nonnull @.str.59, ptr noundef nonnull %5, i64 noundef 48, ptr noundef nonnull %2, ptr noundef null) #22 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) @name_salt, ptr noundef nonnull align 16 dereferenceable(16) %2, i64 16, i1 false) - %41 = call noalias dereferenceable_or_null(33) ptr @calloc(i64 noundef 33, i64 noundef 1) #26 - %.not.i.i = icmp eq ptr %41, null + %39 = call noalias dereferenceable_or_null(33) ptr @calloc(i64 noundef 33, i64 noundef 1) #26 + %.not.i.i = icmp eq ptr %39, null br i1 %.not.i.i, label %cli_md5buff.exit.thread, label %cli_max_calloc.exit.i -cli_md5buff.exit.thread: ; preds = %39 +cli_md5buff.exit.thread: ; preds = %37 call void @perror(ptr noundef nonnull @.str.8) #25 call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i64 noundef 33) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) - %42 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @cli_gentemp_mutex) #22 - call void @free(ptr noundef %16) #22 - %.not40 = icmp eq ptr %.0274350, null - br i1 %.not40, label %51, label %50 - -cli_max_calloc.exit.i: ; preds = %39, %cli_max_calloc.exit.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %cli_max_calloc.exit.i ], [ 0, %39 ] - %.0113.i = phi ptr [ %47, %cli_max_calloc.exit.i ], [ %41, %39 ] - %43 = getelementptr inbounds [16 x i8], ptr %2, i64 0, i64 %indvars.iv.i - %44 = load i8, ptr %43, align 1 - %45 = zext i8 %44 to i32 - %46 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %.0113.i, ptr noundef nonnull dereferenceable(1) @.str.60, i32 noundef %45) #22 - %47 = getelementptr inbounds i8, ptr %.0113.i, i64 2 + %40 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @cli_gentemp_mutex) #22 + call void @free(ptr noundef %14) #22 + %.not40 = icmp eq ptr %.0274351, null + br i1 %.not40, label %49, label %48 + +cli_max_calloc.exit.i: ; preds = %37, %cli_max_calloc.exit.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %cli_max_calloc.exit.i ], [ 0, %37 ] + %.0113.i = phi ptr [ %45, %cli_max_calloc.exit.i ], [ %39, %37 ] + %41 = getelementptr inbounds [16 x i8], ptr %2, i64 0, i64 %indvars.iv.i + %42 = load i8, ptr %41, align 1 + %43 = zext i8 %42 to i32 + %44 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %.0113.i, ptr noundef nonnull dereferenceable(1) @.str.60, i32 noundef %43) #22 + %45 = getelementptr inbounds i8, ptr %.0113.i, i64 2 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 br i1 %exitcond.not.i, label %cli_md5buff.exit, label %cli_max_calloc.exit.i cli_md5buff.exit: ; preds = %cli_max_calloc.exit.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) - %48 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @cli_gentemp_mutex) #22 - %49 = load ptr, ptr %4, align 8 - %.not38 = icmp eq ptr %49, null - br i1 %.not38, label %54, label %52 + %46 = call i32 @pthread_mutex_unlock(ptr noundef nonnull @cli_gentemp_mutex) #22 + %47 = load ptr, ptr %4, align 8 + %.not38 = icmp eq ptr %47, null + br i1 %.not38, label %52, label %50 -50: ; preds = %cli_md5buff.exit.thread - call void @free(ptr noundef nonnull %.0274350) #22 - br label %51 +48: ; preds = %cli_md5buff.exit.thread + call void @free(ptr noundef nonnull %.0274351) #22 + br label %49 -51: ; preds = %50, %cli_md5buff.exit.thread +49: ; preds = %48, %cli_md5buff.exit.thread call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.35) - br label %59 + br label %57 -52: ; preds = %cli_md5buff.exit - %53 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %16, i64 noundef %.053, ptr noundef nonnull @.str.36, ptr noundef nonnull %49, i32 noundef 10, ptr noundef nonnull %41) #22 - br label %56 +50: ; preds = %cli_md5buff.exit + %51 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %14, i64 noundef %.053, ptr noundef nonnull @.str.36, ptr noundef nonnull %47, i32 noundef 10, ptr noundef nonnull %39) #22 + br label %54 -54: ; preds = %cli_md5buff.exit - %55 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %16, i64 noundef %.053, ptr noundef nonnull @.str.37, ptr noundef nonnull %41) #22 - br label %56 +52: ; preds = %cli_md5buff.exit + %53 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %14, i64 noundef %.053, ptr noundef nonnull @.str.37, ptr noundef nonnull %39) #22 + br label %54 -56: ; preds = %54, %52 - %.not39 = icmp eq ptr %.0274350, null - br i1 %.not39, label %58, label %57 +54: ; preds = %52, %50 + %.not39 = icmp eq ptr %.0274351, null + br i1 %.not39, label %56, label %55 -57: ; preds = %56 - call void @free(ptr noundef nonnull %.0274350) #22 - br label %58 +55: ; preds = %54 + call void @free(ptr noundef nonnull %.0274351) #22 + br label %56 -58: ; preds = %57, %56 - call void @free(ptr noundef nonnull %41) #22 - br label %59 +56: ; preds = %55, %54 + call void @free(ptr noundef nonnull %39) #22 + br label %57 -59: ; preds = %18, %19, %58, %51 - %.026 = phi ptr [ null, %51 ], [ %16, %58 ], [ null, %19 ], [ null, %18 ] +57: ; preds = %16, %17, %56, %49 + %.026 = phi ptr [ null, %49 ], [ %14, %56 ], [ null, %17 ], [ null, %16 ] ret ptr %.026 } @@ -1889,7 +1888,7 @@ define noalias noundef ptr @cli_newfilepath(ptr noundef %0, ptr noundef %1) loca 8: ; preds = %5 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.38, ptr noundef nonnull %6) - br label %22 + br label %21 9: ; preds = %5 %10 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #23 @@ -1897,33 +1896,33 @@ define noalias noundef ptr @cli_newfilepath(ptr noundef %0, ptr noundef %1) loca %12 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #23 %13 = add i64 %11, %12 %14 = add i64 %13, 1 - %15 = icmp ugt i64 %13, 1073741823 - br i1 %15, label %16, label %17 + %or.cond = icmp ugt i64 %13, 1073741823 + br i1 %or.cond, label %15, label %16 -16: ; preds = %9 +15: ; preds = %9 tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.7, i64 noundef 1, i32 noundef 1073741824) - br label %20 + br label %19 -17: ; preds = %9 - %18 = tail call noalias ptr @calloc(i64 noundef %14, i64 noundef 1) #26 - %.not.i = icmp eq ptr %18, null - br i1 %.not.i, label %19, label %cli_max_calloc.exit +16: ; preds = %9 + %17 = tail call noalias ptr @calloc(i64 noundef %14, i64 noundef 1) #26 + %.not.i = icmp eq ptr %17, null + br i1 %.not.i, label %18, label %cli_max_calloc.exit -19: ; preds = %17 +18: ; preds = %16 tail call void @perror(ptr noundef nonnull @.str.8) #25 tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i64 noundef %14) - br label %20 + br label %19 -20: ; preds = %16, %19 +19: ; preds = %15, %18 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.39, ptr noundef nonnull %6) - br label %22 + br label %21 -cli_max_calloc.exit: ; preds = %17 - %21 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %18, i64 noundef %14, ptr noundef nonnull @.str.40, ptr noundef nonnull %6, ptr noundef nonnull %1) #22 - br label %22 +cli_max_calloc.exit: ; preds = %16 + %20 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %17, i64 noundef %14, ptr noundef nonnull @.str.40, ptr noundef nonnull %6, ptr noundef nonnull %1) #22 + br label %21 -22: ; preds = %cli_max_calloc.exit, %20, %8 - %.0 = phi ptr [ null, %8 ], [ null, %20 ], [ %18, %cli_max_calloc.exit ] +21: ; preds = %cli_max_calloc.exit, %19, %8 + %.0 = phi ptr [ null, %8 ], [ null, %19 ], [ %17, %cli_max_calloc.exit ] ret ptr %.0 } @@ -1991,7 +1990,7 @@ define noalias noundef ptr @cli_gentemp_with_prefix(ptr noundef %0, ptr noundef 8: ; preds = %5 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.44, ptr noundef nonnull %6) - br label %22 + br label %21 9: ; preds = %5 %10 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %6) #23 @@ -1999,35 +1998,35 @@ define noalias noundef ptr @cli_gentemp_with_prefix(ptr noundef %0, ptr noundef %12 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #23 %13 = add i64 %11, %12 %14 = add i64 %13, 1 - %15 = icmp ugt i64 %13, 1073741823 - br i1 %15, label %16, label %17 + %or.cond = icmp ugt i64 %13, 1073741823 + br i1 %or.cond, label %15, label %16 -16: ; preds = %9 +15: ; preds = %9 tail call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.7, i64 noundef 1, i32 noundef 1073741824) - br label %20 + br label %19 -17: ; preds = %9 - %18 = tail call noalias ptr @calloc(i64 noundef %14, i64 noundef 1) #26 - %.not.i = icmp eq ptr %18, null - br i1 %.not.i, label %19, label %cli_max_calloc.exit +16: ; preds = %9 + %17 = tail call noalias ptr @calloc(i64 noundef %14, i64 noundef 1) #26 + %.not.i = icmp eq ptr %17, null + br i1 %.not.i, label %18, label %cli_max_calloc.exit -19: ; preds = %17 +18: ; preds = %16 tail call void @perror(ptr noundef nonnull @.str.8) #25 tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i64 noundef %14) - br label %20 + br label %19 -20: ; preds = %16, %19 +19: ; preds = %15, %18 tail call void @free(ptr noundef nonnull %7) #22 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.44, ptr noundef nonnull %6) - br label %22 + br label %21 -cli_max_calloc.exit: ; preds = %17 - %21 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %18, i64 noundef %14, ptr noundef nonnull @.str.40, ptr noundef nonnull %6, ptr noundef nonnull %7) #22 +cli_max_calloc.exit: ; preds = %16 + %20 = tail call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %17, i64 noundef %14, ptr noundef nonnull @.str.40, ptr noundef nonnull %6, ptr noundef nonnull %7) #22 tail call void @free(ptr noundef nonnull %7) #22 - br label %22 + br label %21 -22: ; preds = %cli_max_calloc.exit, %20, %8 - %.0 = phi ptr [ %18, %cli_max_calloc.exit ], [ null, %20 ], [ null, %8 ] +21: ; preds = %cli_max_calloc.exit, %19, %8 + %.0 = phi ptr [ %17, %cli_max_calloc.exit ], [ null, %19 ], [ null, %8 ] ret ptr %.0 } diff --git a/bench/hermes/optimized/BytecodeGenerator.cpp.ll b/bench/hermes/optimized/BytecodeGenerator.cpp.ll index 7563b8891e5..f665202fc00 100644 --- a/bench/hermes/optimized/BytecodeGenerator.cpp.ll +++ b/bench/hermes/optimized/BytecodeGenerator.cpp.ll @@ -4385,10 +4385,9 @@ _ZN6hermes3hbc25BytecodeFunctionGenerator25patchDebugSourceLocationsERKN4llvh8De %agg.tmp128.sroa.0.0.insert.insert = or disjoint i64 %agg.tmp128.sroa.2.0.insert.shift, %agg.tmp128.sroa.0.0.insert.ext store i64 %agg.tmp128.sroa.0.0.insert.insert, ptr %debugOffsets_.i.i.i, align 8 store i32 %call126, ptr %textifiedCallees.i.i.i.i, align 8 - %205 = and i32 %call123, %call119 - %.not = icmp eq i32 %205, -1 + %.not.i = icmp eq i64 %agg.tmp128.sroa.0.0.insert.insert, -1 %bf.load.i = load i8, ptr %header.sroa.10.0.header_.i.i.sroa_idx.i, align 2 - %bf.shl.i248 = select i1 %.not, i8 0, i8 16 + %bf.shl.i248 = select i1 %.not.i, i8 0, i8 16 %bf.clear.i = and i8 %bf.load.i, -17 %bf.set.i = or disjoint i8 %bf.clear.i, %bf.shl.i248 store i8 %bf.set.i, ptr %header.sroa.10.0.header_.i.i.sroa_idx.i, align 2 @@ -4396,47 +4395,47 @@ _ZN6hermes3hbc25BytecodeFunctionGenerator25patchDebugSourceLocationsERKN4llvh8De if.end129: ; preds = %if.end.if.end129_crit_edge, %_ZN6hermes3hbc25BytecodeFunctionGenerator25patchDebugSourceLocationsERKN4llvh8DenseMapIjjNS2_12DenseMapInfoIjEENS2_6detail12DenseMapPairIjjEEEE.exit %.pre-phi = phi i32 [ %.pre318, %if.end.if.end129_crit_edge ], [ %199, %_ZN6hermes3hbc25BytecodeFunctionGenerator25patchDebugSourceLocationsERKN4llvh8DenseMapIjjNS2_12DenseMapInfoIjEENS2_6detail12DenseMapPairIjjEEEE.exit ] - %206 = load ptr, ptr %agg.result, align 8 - %207 = ptrtoint ptr %call.i.i to i64 - store i64 %207, ptr %agg.tmp131, align 8 - call void @_ZN6hermes3hbc14BytecodeModule11setFunctionEjSt10unique_ptrINS0_16BytecodeFunctionESt14default_deleteIS3_EE(ptr noundef nonnull align 8 dereferenceable(513) %206, i32 noundef %.pre-phi, ptr noundef nonnull %agg.tmp131) #20 - %208 = load ptr, ptr %agg.tmp131, align 8 - %cmp.not.i249 = icmp eq ptr %208, null + %205 = load ptr, ptr %agg.result, align 8 + %206 = ptrtoint ptr %call.i.i to i64 + store i64 %206, ptr %agg.tmp131, align 8 + call void @_ZN6hermes3hbc14BytecodeModule11setFunctionEjSt10unique_ptrINS0_16BytecodeFunctionESt14default_deleteIS3_EE(ptr noundef nonnull align 8 dereferenceable(513) %205, i32 noundef %.pre-phi, ptr noundef nonnull %agg.tmp131) #20 + %207 = load ptr, ptr %agg.tmp131, align 8 + %cmp.not.i249 = icmp eq ptr %207, null br i1 %cmp.not.i249, label %_ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.exit269, label %delete.notnull.i.i delete.notnull.i.i: ; preds = %if.end129 - %lazyCompilationData_.i.i.i250 = getelementptr inbounds i8, ptr %208, i64 96 - %209 = load ptr, ptr %lazyCompilationData_.i.i.i250, align 8 - %cmp.not.i.i.i.i251 = icmp eq ptr %209, null + %lazyCompilationData_.i.i.i250 = getelementptr inbounds i8, ptr %207, i64 96 + %208 = load ptr, ptr %lazyCompilationData_.i.i.i250, align 8 + %cmp.not.i.i.i.i251 = icmp eq ptr %208, null br i1 %cmp.not.i.i.i.i251, label %_ZNSt10unique_ptrIN6hermes3hbc19LazyCompilationDataESt14default_deleteIS2_EED2Ev.exit.i.i.i, label %_ZNKSt14default_deleteIN6hermes3hbc19LazyCompilationDataEEclEPS2_.exit.i.i.i.i _ZNKSt14default_deleteIN6hermes3hbc19LazyCompilationDataEEclEPS2_.exit.i.i.i.i: ; preds = %delete.notnull.i.i - call void @_ZN6hermes3hbc19LazyCompilationDataD2Ev(ptr noundef nonnull align 8 dereferenceable(79) %209) #20 - call void @_ZdlPv(ptr noundef nonnull %209) #19 + call void @_ZN6hermes3hbc19LazyCompilationDataD2Ev(ptr noundef nonnull align 8 dereferenceable(79) %208) #20 + call void @_ZdlPv(ptr noundef nonnull %208) #19 br label %_ZNSt10unique_ptrIN6hermes3hbc19LazyCompilationDataESt14default_deleteIS2_EED2Ev.exit.i.i.i _ZNSt10unique_ptrIN6hermes3hbc19LazyCompilationDataESt14default_deleteIS2_EED2Ev.exit.i.i.i: ; preds = %_ZNKSt14default_deleteIN6hermes3hbc19LazyCompilationDataEEclEPS2_.exit.i.i.i.i, %delete.notnull.i.i store ptr null, ptr %lazyCompilationData_.i.i.i250, align 8 - %exceptions_.i.i.i252 = getelementptr inbounds i8, ptr %208, i64 72 - %210 = load ptr, ptr %exceptions_.i.i.i252, align 8 - %tobool.not.i.i.i.i.i.i = icmp eq ptr %210, null + %exceptions_.i.i.i252 = getelementptr inbounds i8, ptr %207, i64 72 + %209 = load ptr, ptr %exceptions_.i.i.i252, align 8 + %tobool.not.i.i.i.i.i.i = icmp eq ptr %209, null br i1 %tobool.not.i.i.i.i.i.i, label %_ZNSt6vectorIN6hermes3hbc23HBCExceptionHandlerInfoESaIS2_EED2Ev.exit.i.i.i, label %if.then.i.i.i.i.i.i253 if.then.i.i.i.i.i.i253: ; preds = %_ZNSt10unique_ptrIN6hermes3hbc19LazyCompilationDataESt14default_deleteIS2_EED2Ev.exit.i.i.i - call void @_ZdlPv(ptr noundef nonnull %210) #19 + call void @_ZdlPv(ptr noundef nonnull %209) #19 br label %_ZNSt6vectorIN6hermes3hbc23HBCExceptionHandlerInfoESaIS2_EED2Ev.exit.i.i.i _ZNSt6vectorIN6hermes3hbc23HBCExceptionHandlerInfoESaIS2_EED2Ev.exit.i.i.i: ; preds = %if.then.i.i.i.i.i.i253, %_ZNSt10unique_ptrIN6hermes3hbc19LazyCompilationDataESt14default_deleteIS2_EED2Ev.exit.i.i.i - %211 = load ptr, ptr %208, align 8 - %tobool.not.i.i.i1.i.i.i = icmp eq ptr %211, null + %210 = load ptr, ptr %207, align 8 + %tobool.not.i.i.i1.i.i.i = icmp eq ptr %210, null br i1 %tobool.not.i.i.i1.i.i.i, label %_ZNKSt14default_deleteIN6hermes3hbc16BytecodeFunctionEEclEPS2_.exit.i, label %if.then.i.i.i2.i.i.i if.then.i.i.i2.i.i.i: ; preds = %_ZNSt6vectorIN6hermes3hbc23HBCExceptionHandlerInfoESaIS2_EED2Ev.exit.i.i.i - call void @_ZdlPv(ptr noundef nonnull %211) #19 + call void @_ZdlPv(ptr noundef nonnull %210) #19 br label %_ZNKSt14default_deleteIN6hermes3hbc16BytecodeFunctionEEclEPS2_.exit.i _ZNKSt14default_deleteIN6hermes3hbc16BytecodeFunctionEEclEPS2_.exit.i: ; preds = %if.then.i.i.i2.i.i.i, %_ZNSt6vectorIN6hermes3hbc23HBCExceptionHandlerInfoESaIS2_EED2Ev.exit.i.i.i - call void @_ZdlPv(ptr noundef nonnull %208) #19 + call void @_ZdlPv(ptr noundef nonnull %207) #19 br label %_ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.exit269 _ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.exit269: ; preds = %_ZNKSt14default_deleteIN6hermes3hbc16BytecodeFunctionEEclEPS2_.exit.i, %if.end129 @@ -4446,66 +4445,66 @@ _ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.ex br i1 %exitcond315.not, label %for.end134, label %for.body, !llvm.loop !212 for.end134: ; preds = %_ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.exit269, %cond.end - %212 = phi ptr [ %call11, %cond.end ], [ %206, %_ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.exit269 ] + %211 = phi ptr [ %call11, %cond.end ], [ %205, %_ZNSt10unique_ptrIN6hermes3hbc16BytecodeFunctionESt14default_deleteIS2_EED2Ev.exit269 ] call void @_ZN6hermes3hbc18DebugInfoGenerator17serializeWithMoveEv(ptr nonnull sret(%"class.hermes::hbc::DebugInfo") align 8 %agg.tmp136, ptr noundef nonnull align 8 dereferenceable(216) %debugInfoGen) #20 - %debugInfo_.i270 = getelementptr inbounds i8, ptr %212, i64 224 + %debugInfo_.i270 = getelementptr inbounds i8, ptr %211, i64 224 %call.i271 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN6hermes3hbc9DebugInfoaSEOS1_(ptr noundef nonnull align 8 dereferenceable(136) %debugInfo_.i270, ptr noundef nonnull align 8 dereferenceable(136) %agg.tmp136) %data_.i = getelementptr inbounds i8, ptr %agg.tmp136, i64 96 - %213 = load ptr, ptr %data_.i, align 8 - %tobool.not.i.i.i.i.i272 = icmp eq ptr %213, null + %212 = load ptr, ptr %data_.i, align 8 + %tobool.not.i.i.i.i.i272 = icmp eq ptr %212, null br i1 %tobool.not.i.i.i.i.i272, label %_ZN6hermes3hbc12StreamVectorIhED2Ev.exit.i, label %if.then.i.i.i.i.i273 if.then.i.i.i.i.i273: ; preds = %for.end134 - call void @_ZdlPv(ptr noundef nonnull %213) #19 + call void @_ZdlPv(ptr noundef nonnull %212) #19 br label %_ZN6hermes3hbc12StreamVectorIhED2Ev.exit.i _ZN6hermes3hbc12StreamVectorIhED2Ev.exit.i: ; preds = %if.then.i.i.i.i.i273, %for.end134 %files_.i = getelementptr inbounds i8, ptr %agg.tmp136, i64 48 - %214 = load ptr, ptr %files_.i, align 8 + %213 = load ptr, ptr %files_.i, align 8 %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp136, i64 64 - %cmp.i.i.i.i274 = icmp eq ptr %214, %add.ptr.i.i.i.i.i + %cmp.i.i.i.i274 = icmp eq ptr %213, %add.ptr.i.i.i.i.i br i1 %cmp.i.i.i.i274, label %_ZN4llvh11SmallVectorIN6hermes3hbc15DebugFileRegionELj1EED2Ev.exit.i, label %if.then.i.i.i275 if.then.i.i.i275: ; preds = %_ZN6hermes3hbc12StreamVectorIhED2Ev.exit.i - call void @free(ptr noundef %214) #20 + call void @free(ptr noundef %213) #20 br label %_ZN4llvh11SmallVectorIN6hermes3hbc15DebugFileRegionELj1EED2Ev.exit.i _ZN4llvh11SmallVectorIN6hermes3hbc15DebugFileRegionELj1EED2Ev.exit.i: ; preds = %if.then.i.i.i275, %_ZN6hermes3hbc12StreamVectorIhED2Ev.exit.i %filenameStorage_.i = getelementptr inbounds i8, ptr %agg.tmp136, i64 24 - %215 = load ptr, ptr %filenameStorage_.i, align 8 - %tobool.not.i.i.i.i276 = icmp eq ptr %215, null + %214 = load ptr, ptr %filenameStorage_.i, align 8 + %tobool.not.i.i.i.i276 = icmp eq ptr %214, null br i1 %tobool.not.i.i.i.i276, label %_ZNSt6vectorIhSaIhEED2Ev.exit.i, label %if.then.i.i.i.i277 if.then.i.i.i.i277: ; preds = %_ZN4llvh11SmallVectorIN6hermes3hbc15DebugFileRegionELj1EED2Ev.exit.i - call void @_ZdlPv(ptr noundef nonnull %215) #19 + call void @_ZdlPv(ptr noundef nonnull %214) #19 br label %_ZNSt6vectorIhSaIhEED2Ev.exit.i _ZNSt6vectorIhSaIhEED2Ev.exit.i: ; preds = %if.then.i.i.i.i277, %_ZN4llvh11SmallVectorIN6hermes3hbc15DebugFileRegionELj1EED2Ev.exit.i - %216 = load ptr, ptr %agg.tmp136, align 8 - %tobool.not.i.i.i1.i = icmp eq ptr %216, null + %215 = load ptr, ptr %agg.tmp136, align 8 + %tobool.not.i.i.i1.i = icmp eq ptr %215, null br i1 %tobool.not.i.i.i1.i, label %_ZN6hermes3hbc9DebugInfoD2Ev.exit, label %if.then.i.i.i2.i if.then.i.i.i2.i: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit.i - call void @_ZdlPv(ptr noundef nonnull %216) #19 + call void @_ZdlPv(ptr noundef nonnull %215) #19 br label %_ZN6hermes3hbc9DebugInfoD2Ev.exit _ZN6hermes3hbc9DebugInfoD2Ev.exit: ; preds = %_ZNSt6vectorIhSaIhEED2Ev.exit.i, %if.then.i.i.i2.i call void @_ZN6hermes3hbc18DebugInfoGeneratorD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %debugInfoGen) #20 - %217 = load ptr, ptr %hashes, align 8 - %tobool.not.i.i.i278 = icmp eq ptr %217, null + %216 = load ptr, ptr %hashes, align 8 + %tobool.not.i.i.i278 = icmp eq ptr %216, null br i1 %tobool.not.i.i.i278, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %if.then.i.i.i279 if.then.i.i.i279: ; preds = %_ZN6hermes3hbc9DebugInfoD2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %217) #19 + call void @_ZdlPv(ptr noundef nonnull %216) #19 br label %_ZNSt6vectorIjSaIjEED2Ev.exit _ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %_ZN6hermes3hbc9DebugInfoD2Ev.exit, %if.then.i.i.i279 - %218 = load ptr, ptr %kinds, align 8 - %tobool.not.i.i.i280 = icmp eq ptr %218, null + %217 = load ptr, ptr %kinds, align 8 + %tobool.not.i.i.i280 = icmp eq ptr %217, null br i1 %tobool.not.i.i.i280, label %_ZNSt6vectorIN6hermes10StringKind5EntryESaIS2_EED2Ev.exit, label %if.then.i.i.i281 if.then.i.i.i281: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %218) #19 + call void @_ZdlPv(ptr noundef nonnull %217) #19 br label %_ZNSt6vectorIN6hermes10StringKind5EntryESaIS2_EED2Ev.exit _ZNSt6vectorIN6hermes10StringKind5EntryESaIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %if.then.i.i.i281 diff --git a/bench/hwloc/optimized/traversal.ll b/bench/hwloc/optimized/traversal.ll index 65bd46e16b8..65528da8f97 100644 --- a/bench/hwloc/optimized/traversal.ll +++ b/bench/hwloc/optimized/traversal.ll @@ -2594,75 +2594,72 @@ hwloc_get_type_depth.exit.i.backedge: ; preds = %66, %69, %60, %63, br i1 %74, label %.loopexit.sink.split, label %75 75: ; preds = %72 - %switch = icmp eq i32 %73, -3 - %76 = add i32 %2, -17 - %or.cond = icmp ult i32 %76, -2 - %or.cond104 = or i1 %or.cond, %switch - br i1 %or.cond104, label %.loopexit.sink.split, label %.preheader + %76 = sub nuw nsw i32 16, %8 + %77 = sub i32 16, %2 + %78 = or i32 %76, %77 + %or.cond104.not = icmp ult i32 %78, 2 + br i1 %or.cond104.not, label %.preheader, label %.loopexit.sink.split .preheader: ; preds = %75 - %77 = icmp eq i32 %8, 16 - br i1 %77, label %.lr.ph, label %._crit_edge + %79 = icmp eq i32 %8, 16 + br i1 %79, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %.preheader, %.lr.ph - %.057126 = phi ptr [ %79, %.lr.ph ], [ %1, %.preheader ] - %78 = getelementptr inbounds i8, ptr %.057126, i64 72 - %79 = load ptr, ptr %78, align 8 - %80 = load i32, ptr %79, align 8 - %81 = icmp eq i32 %80, 16 - br i1 %81, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !23 - -._crit_edge.loopexit: ; preds = %.lr.ph - %82 = icmp eq i32 %80, 15 - br label %._crit_edge - -._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader - %.057.lcssa = phi ptr [ %1, %.preheader ], [ %79, %._crit_edge.loopexit ] - %.lcssa = phi i1 [ true, %.preheader ], [ %82, %._crit_edge.loopexit ] - %83 = icmp eq i32 %2, 15 - br i1 %83, label %84, label %98 - -84: ; preds = %._crit_edge - br i1 %.lcssa, label %85, label %.loopexit.sink.split + %.057126 = phi ptr [ %81, %.lr.ph ], [ %1, %.preheader ] + %80 = getelementptr inbounds i8, ptr %.057126, i64 72 + %81 = load ptr, ptr %80, align 8 + %82 = load i32, ptr %81, align 8 + %83 = icmp eq i32 %82, 16 + br i1 %83, label %.lr.ph, label %._crit_edge, !llvm.loop !23 + +._crit_edge: ; preds = %.lr.ph, %.preheader + %.057.lcssa = phi ptr [ %1, %.preheader ], [ %81, %.lr.ph ] + %.lcssa = phi i32 [ %8, %.preheader ], [ %82, %.lr.ph ] + %84 = icmp eq i32 %2, 15 + br i1 %84, label %85, label %99 + +85: ; preds = %._crit_edge + %.not86 = icmp eq i32 %.lcssa, 15 + br i1 %.not86, label %86, label %.loopexit.sink.split -85: ; preds = %84 +86: ; preds = %85 %.not87 = icmp eq ptr %3, null - br i1 %.not87, label %91, label %86 + br i1 %.not87, label %92, label %87 -86: ; preds = %85 - %87 = getelementptr inbounds i8, ptr %.057.lcssa, i64 8 - %88 = load ptr, ptr %87, align 8 - %.not88 = icmp eq ptr %88, null - br i1 %.not88, label %.loopexit.sink.split, label %89 +87: ; preds = %86 + %88 = getelementptr inbounds i8, ptr %.057.lcssa, i64 8 + %89 = load ptr, ptr %88, align 8 + %.not88 = icmp eq ptr %89, null + br i1 %.not88, label %.loopexit.sink.split, label %90 -89: ; preds = %86 - %90 = tail call i32 @strcasecmp(ptr noundef nonnull %3, ptr noundef nonnull %88) #18 - %.not89 = icmp eq i32 %90, 0 - br i1 %.not89, label %91, label %.loopexit.sink.split +90: ; preds = %87 + %91 = tail call i32 @strcasecmp(ptr noundef nonnull %3, ptr noundef nonnull %89) #18 + %.not89 = icmp eq i32 %91, 0 + br i1 %.not89, label %92, label %.loopexit.sink.split -91: ; preds = %89, %85 +92: ; preds = %90, %86 %.not90 = icmp eq ptr %4, null - br i1 %.not90, label %.loopexit, label %92 - -92: ; preds = %91 - %93 = getelementptr inbounds i8, ptr %.057.lcssa, i64 24 - %94 = load ptr, ptr %93, align 8 - %.not91 = icmp eq ptr %94, null - br i1 %.not91, label %.loopexit.sink.split, label %95 - -95: ; preds = %92 - %96 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #18 - %97 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %4, ptr noundef nonnull readonly %94, i64 noundef %96) #18 - %.not92 = icmp eq i32 %97, 0 + br i1 %.not90, label %.loopexit, label %93 + +93: ; preds = %92 + %94 = getelementptr inbounds i8, ptr %.057.lcssa, i64 24 + %95 = load ptr, ptr %94, align 8 + %.not91 = icmp eq ptr %95, null + br i1 %.not91, label %.loopexit.sink.split, label %96 + +96: ; preds = %93 + %97 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #18 + %98 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %4, ptr noundef nonnull readonly %95, i64 noundef %97) #18 + %.not92 = icmp eq i32 %98, 0 br i1 %.not92, label %.loopexit, label %.loopexit.sink.split -98: ; preds = %._crit_edge - %99 = getelementptr inbounds i8, ptr %.057.lcssa, i64 160 - %.0128 = load ptr, ptr %99, align 8 +99: ; preds = %._crit_edge + %100 = getelementptr inbounds i8, ptr %.057.lcssa, i64 160 + %.0128 = load ptr, ptr %100, align 8 %.not78129 = icmp eq ptr %.0128, null br i1 %.not78129, label %.loopexit.sink.split, label %.lr.ph132 -.lr.ph132: ; preds = %98 +.lr.ph132: ; preds = %99 %.not80 = icmp eq ptr %3, null %.not83 = icmp eq ptr %4, null br i1 %.not83, label %.lr.ph132.split.us, label %.lr.ph132.split @@ -2670,111 +2667,111 @@ hwloc_get_type_depth.exit.i.backedge: ; preds = %66, %69, %60, %63, .lr.ph132.split.us: ; preds = %.lr.ph132 br i1 %.not80, label %.lr.ph132.split.us.split.us, label %.lr.ph132.split.us.split -.lr.ph132.split.us.split.us: ; preds = %.lr.ph132.split.us, %101 - %.0130.us.us = phi ptr [ %.0.us.us, %101 ], [ %.0128, %.lr.ph132.split.us ] - %100 = load i32, ptr %.0130.us.us, align 8 - %.not79.us.us = icmp eq i32 %100, 16 - br i1 %.not79.us.us, label %.loopexit, label %101 +.lr.ph132.split.us.split.us: ; preds = %.lr.ph132.split.us, %102 + %.0130.us.us = phi ptr [ %.0.us.us, %102 ], [ %.0128, %.lr.ph132.split.us ] + %101 = load i32, ptr %.0130.us.us, align 8 + %.not79.us.us = icmp eq i32 %101, 16 + br i1 %.not79.us.us, label %.loopexit, label %102 -101: ; preds = %.lr.ph132.split.us.split.us - %102 = getelementptr inbounds i8, ptr %.0130.us.us, i64 88 - %.0.us.us = load ptr, ptr %102, align 8 +102: ; preds = %.lr.ph132.split.us.split.us + %103 = getelementptr inbounds i8, ptr %.0130.us.us, i64 88 + %.0.us.us = load ptr, ptr %103, align 8 %.not78.us.us = icmp eq ptr %.0.us.us, null br i1 %.not78.us.us, label %.loopexit.sink.split, label %.lr.ph132.split.us.split.us, !llvm.loop !24 -.lr.ph132.split.us.split: ; preds = %.lr.ph132.split.us, %109 - %.0130.us = phi ptr [ %.0.us, %109 ], [ %.0128, %.lr.ph132.split.us ] - %103 = load i32, ptr %.0130.us, align 8 - %.not79.us = icmp eq i32 %103, 16 - br i1 %.not79.us, label %104, label %109 - -104: ; preds = %.lr.ph132.split.us.split - %105 = getelementptr inbounds i8, ptr %.0130.us, i64 8 - %106 = load ptr, ptr %105, align 8 - %.not81.us = icmp eq ptr %106, null - br i1 %.not81.us, label %109, label %107 - -107: ; preds = %104 - %108 = tail call i32 @strcasecmp(ptr noundef nonnull %3, ptr noundef nonnull %106) #18 - %.not82.us = icmp eq i32 %108, 0 - br i1 %.not82.us, label %.loopexit, label %109 - -109: ; preds = %107, %104, %.lr.ph132.split.us.split - %110 = getelementptr inbounds i8, ptr %.0130.us, i64 88 - %.0.us = load ptr, ptr %110, align 8 +.lr.ph132.split.us.split: ; preds = %.lr.ph132.split.us, %110 + %.0130.us = phi ptr [ %.0.us, %110 ], [ %.0128, %.lr.ph132.split.us ] + %104 = load i32, ptr %.0130.us, align 8 + %.not79.us = icmp eq i32 %104, 16 + br i1 %.not79.us, label %105, label %110 + +105: ; preds = %.lr.ph132.split.us.split + %106 = getelementptr inbounds i8, ptr %.0130.us, i64 8 + %107 = load ptr, ptr %106, align 8 + %.not81.us = icmp eq ptr %107, null + br i1 %.not81.us, label %110, label %108 + +108: ; preds = %105 + %109 = tail call i32 @strcasecmp(ptr noundef nonnull %3, ptr noundef nonnull %107) #18 + %.not82.us = icmp eq i32 %109, 0 + br i1 %.not82.us, label %.loopexit, label %110 + +110: ; preds = %108, %105, %.lr.ph132.split.us.split + %111 = getelementptr inbounds i8, ptr %.0130.us, i64 88 + %.0.us = load ptr, ptr %111, align 8 %.not78.us = icmp eq ptr %.0.us, null br i1 %.not78.us, label %.loopexit.sink.split, label %.lr.ph132.split.us.split, !llvm.loop !24 .lr.ph132.split: ; preds = %.lr.ph132 br i1 %.not80, label %.lr.ph132.split.split.us, label %.lr.ph132.split.split -.lr.ph132.split.split.us: ; preds = %.lr.ph132.split, %118 - %.0130.us135 = phi ptr [ %.0.us137, %118 ], [ %.0128, %.lr.ph132.split ] - %111 = load i32, ptr %.0130.us135, align 8 - %.not79.us136 = icmp eq i32 %111, 16 - br i1 %.not79.us136, label %112, label %118 - -112: ; preds = %.lr.ph132.split.split.us - %113 = getelementptr inbounds i8, ptr %.0130.us135, i64 24 - %114 = load ptr, ptr %113, align 8 - %.not84.us = icmp eq ptr %114, null - br i1 %.not84.us, label %118, label %115 - -115: ; preds = %112 - %116 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #18 - %117 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %4, ptr noundef nonnull readonly %114, i64 noundef %116) #18 - %.not85.us = icmp eq i32 %117, 0 - br i1 %.not85.us, label %.loopexit, label %118 - -118: ; preds = %115, %112, %.lr.ph132.split.split.us - %119 = getelementptr inbounds i8, ptr %.0130.us135, i64 88 - %.0.us137 = load ptr, ptr %119, align 8 +.lr.ph132.split.split.us: ; preds = %.lr.ph132.split, %119 + %.0130.us135 = phi ptr [ %.0.us137, %119 ], [ %.0128, %.lr.ph132.split ] + %112 = load i32, ptr %.0130.us135, align 8 + %.not79.us136 = icmp eq i32 %112, 16 + br i1 %.not79.us136, label %113, label %119 + +113: ; preds = %.lr.ph132.split.split.us + %114 = getelementptr inbounds i8, ptr %.0130.us135, i64 24 + %115 = load ptr, ptr %114, align 8 + %.not84.us = icmp eq ptr %115, null + br i1 %.not84.us, label %119, label %116 + +116: ; preds = %113 + %117 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #18 + %118 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %4, ptr noundef nonnull readonly %115, i64 noundef %117) #18 + %.not85.us = icmp eq i32 %118, 0 + br i1 %.not85.us, label %.loopexit, label %119 + +119: ; preds = %116, %113, %.lr.ph132.split.split.us + %120 = getelementptr inbounds i8, ptr %.0130.us135, i64 88 + %.0.us137 = load ptr, ptr %120, align 8 %.not78.us138 = icmp eq ptr %.0.us137, null br i1 %.not78.us138, label %.loopexit.sink.split, label %.lr.ph132.split.split.us, !llvm.loop !24 -.lr.ph132.split.split: ; preds = %.lr.ph132.split, %132 - %.0130 = phi ptr [ %.0, %132 ], [ %.0128, %.lr.ph132.split ] - %120 = load i32, ptr %.0130, align 8 - %.not79 = icmp eq i32 %120, 16 - br i1 %.not79, label %121, label %132 - -121: ; preds = %.lr.ph132.split.split - %122 = getelementptr inbounds i8, ptr %.0130, i64 8 - %123 = load ptr, ptr %122, align 8 - %.not81 = icmp eq ptr %123, null - br i1 %.not81, label %132, label %124 - -124: ; preds = %121 - %125 = tail call i32 @strcasecmp(ptr noundef nonnull %3, ptr noundef nonnull %123) #18 - %.not82 = icmp eq i32 %125, 0 - br i1 %.not82, label %126, label %132 - -126: ; preds = %124 - %127 = getelementptr inbounds i8, ptr %.0130, i64 24 - %128 = load ptr, ptr %127, align 8 - %.not84 = icmp eq ptr %128, null - br i1 %.not84, label %132, label %129 - -129: ; preds = %126 - %130 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #18 - %131 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %4, ptr noundef nonnull readonly %128, i64 noundef %130) #18 - %.not85 = icmp eq i32 %131, 0 - br i1 %.not85, label %.loopexit, label %132 - -132: ; preds = %126, %129, %121, %124, %.lr.ph132.split.split - %133 = getelementptr inbounds i8, ptr %.0130, i64 88 - %.0 = load ptr, ptr %133, align 8 +.lr.ph132.split.split: ; preds = %.lr.ph132.split, %133 + %.0130 = phi ptr [ %.0, %133 ], [ %.0128, %.lr.ph132.split ] + %121 = load i32, ptr %.0130, align 8 + %.not79 = icmp eq i32 %121, 16 + br i1 %.not79, label %122, label %133 + +122: ; preds = %.lr.ph132.split.split + %123 = getelementptr inbounds i8, ptr %.0130, i64 8 + %124 = load ptr, ptr %123, align 8 + %.not81 = icmp eq ptr %124, null + br i1 %.not81, label %133, label %125 + +125: ; preds = %122 + %126 = tail call i32 @strcasecmp(ptr noundef nonnull %3, ptr noundef nonnull %124) #18 + %.not82 = icmp eq i32 %126, 0 + br i1 %.not82, label %127, label %133 + +127: ; preds = %125 + %128 = getelementptr inbounds i8, ptr %.0130, i64 24 + %129 = load ptr, ptr %128, align 8 + %.not84 = icmp eq ptr %129, null + br i1 %.not84, label %133, label %130 + +130: ; preds = %127 + %131 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #18 + %132 = tail call i32 @strncasecmp(ptr noundef nonnull readonly %4, ptr noundef nonnull readonly %129, i64 noundef %131) #18 + %.not85 = icmp eq i32 %132, 0 + br i1 %.not85, label %.loopexit, label %133 + +133: ; preds = %127, %130, %122, %125, %.lr.ph132.split.split + %134 = getelementptr inbounds i8, ptr %.0130, i64 88 + %.0 = load ptr, ptr %134, align 8 %.not78 = icmp eq ptr %.0, null br i1 %.not78, label %.loopexit.sink.split, label %.lr.ph132.split.split, !llvm.loop !24 -.loopexit.sink.split: ; preds = %37, %34, %35, %44, %hwloc_get_next_obj_by_type.exit, %132, %118, %109, %101, %72, %98, %92, %95, %86, %89, %84, %75, %hwloc_get_type_depth.exit.i.lr.ph, %15, %6 - %.sink = phi i32 [ 22, %6 ], [ 22, %15 ], [ 2, %hwloc_get_type_depth.exit.i.lr.ph ], [ 22, %75 ], [ 2, %84 ], [ 2, %89 ], [ 2, %86 ], [ 2, %95 ], [ 2, %92 ], [ 2, %98 ], [ 22, %72 ], [ 2, %101 ], [ 2, %109 ], [ 2, %118 ], [ 2, %132 ], [ 2, %hwloc_get_next_obj_by_type.exit ], [ 2, %44 ], [ 2, %35 ], [ 2, %34 ], [ 2, %37 ] - %134 = tail call ptr @__errno_location() #20 - store i32 %.sink, ptr %134, align 4 +.loopexit.sink.split: ; preds = %37, %34, %35, %44, %hwloc_get_next_obj_by_type.exit, %133, %119, %110, %102, %72, %99, %93, %96, %87, %90, %85, %75, %hwloc_get_type_depth.exit.i.lr.ph, %15, %6 + %.sink = phi i32 [ 22, %6 ], [ 22, %15 ], [ 2, %hwloc_get_type_depth.exit.i.lr.ph ], [ 22, %75 ], [ 2, %85 ], [ 2, %90 ], [ 2, %87 ], [ 2, %96 ], [ 2, %93 ], [ 2, %99 ], [ 22, %72 ], [ 2, %102 ], [ 2, %110 ], [ 2, %119 ], [ 2, %133 ], [ 2, %hwloc_get_next_obj_by_type.exit ], [ 2, %44 ], [ 2, %35 ], [ 2, %34 ], [ 2, %37 ] + %135 = tail call ptr @__errno_location() #20 + store i32 %.sink, ptr %135, align 4 br label %.loopexit -.loopexit: ; preds = %65, %69, %129, %115, %107, %.lr.ph132.split.us.split.us, %.loopexit.sink.split, %91, %95 - %.059 = phi ptr [ %.057.lcssa, %95 ], [ %.057.lcssa, %91 ], [ null, %.loopexit.sink.split ], [ %.0130.us.us, %.lr.ph132.split.us.split.us ], [ %.0130.us, %107 ], [ %.0130.us135, %115 ], [ %.0130, %129 ], [ %.0.i, %69 ], [ %.0.i, %65 ] +.loopexit: ; preds = %65, %69, %130, %116, %108, %.lr.ph132.split.us.split.us, %.loopexit.sink.split, %92, %96 + %.059 = phi ptr [ %.057.lcssa, %96 ], [ %.057.lcssa, %92 ], [ null, %.loopexit.sink.split ], [ %.0130.us.us, %.lr.ph132.split.us.split.us ], [ %.0130.us, %108 ], [ %.0130.us135, %116 ], [ %.0130, %130 ], [ %.0.i, %69 ], [ %.0.i, %65 ] ret ptr %.059 } diff --git a/bench/icu/optimized/simpletz.ll b/bench/icu/optimized/simpletz.ll index acbeb24e442..9399614a8c8 100644 --- a/bench/icu/optimized/simpletz.ll +++ b/bench/icu/optimized/simpletz.ll @@ -1899,12 +1899,11 @@ lor.lhs.false9: ; preds = %if.end %or.cond5 = or i1 %3, %cmp10 %4 = icmp ugt i32 %millis, 86399999 %or.cond7 = or i1 %4, %or.cond5 - %5 = add i32 %monthLength, -32 - %6 = icmp ult i32 %5, -4 - %or.cond9 = or i1 %6, %or.cond7 - %7 = add i32 %prevMonthLength, -32 - %8 = icmp ult i32 %7, -4 - %or.cond11 = or i1 %8, %or.cond9 + %5 = sub i32 31, %monthLength + %6 = sub i32 31, %prevMonthLength + %7 = or i32 %6, %5 + %8 = icmp ugt i32 %7, 3 + %or.cond11 = or i1 %or.cond7, %8 br i1 %or.cond11, label %if.then29, label %if.end30 if.then29: ; preds = %if.end, %lor.lhs.false9 @@ -1933,8 +1932,8 @@ if.end38: ; preds = %lor.lhs.false32 %13 = load i8, ptr %endMonth, align 8 %cmp41 = icmp sgt i8 %12, %13 %conv43 = trunc nuw nsw i32 %month to i8 - %conv44 = trunc nuw i32 %monthLength to i8 - %conv45 = trunc nuw i32 %prevMonthLength to i8 + %conv44 = trunc i32 %monthLength to i8 + %conv45 = trunc i32 %prevMonthLength to i8 %conv46 = trunc i32 %day to i8 %startTimeMode = getelementptr inbounds i8, ptr %this, i64 80 %14 = load i32, ptr %startTimeMode, align 8 diff --git a/bench/icu/optimized/utf_impl.ll b/bench/icu/optimized/utf_impl.ll index 7135fbd5a8c..3800d4029d5 100644 --- a/bench/icu/optimized/utf_impl.ll +++ b/bench/icu/optimized/utf_impl.ll @@ -413,8 +413,8 @@ return: ; preds = %if.then72, %do.end, define i32 @utf8_prevCharSafeBody_75(ptr nocapture noundef readonly %s, i32 noundef %start, ptr nocapture noundef %pi, i32 noundef %c, i8 noundef signext %strict) local_unnamed_addr #0 { entry: %0 = load i32, ptr %pi, align 4 - %1 = trunc i32 %c to i8 - %cmp = icmp slt i8 %1, -64 + %1 = and i32 %c, 192 + %cmp = icmp eq i32 %1, 128 %cmp2 = icmp sgt i32 %0, %start %or.cond86 = select i1 %cmp, i1 %cmp2, i1 false br i1 %or.cond86, label %if.then, label %if.end186 diff --git a/bench/linux/optimized/mincore.ll b/bench/linux/optimized/mincore.ll index b3c6d8ec0f3..8c46432e4af 100644 --- a/bench/linux/optimized/mincore.ll +++ b/bench/linux/optimized/mincore.ll @@ -312,33 +312,29 @@ define internal noundef i32 @mincore_pte_range(ptr noundef %0, i64 noundef %1, i 20: ; preds = %4 %21 = getelementptr inbounds i8, ptr %3, i64 32 store i32 2, ptr %21, align 8 - br label %94 + br label %95 22: ; preds = %.preheader, %__mincore_unmapped_range.exit - %23 = phi ptr [ %84, %__mincore_unmapped_range.exit ], [ %10, %.preheader ] - %24 = phi ptr [ %85, %__mincore_unmapped_range.exit ], [ %14, %.preheader ] - %25 = phi i64 [ %86, %__mincore_unmapped_range.exit ], [ %1, %.preheader ] + %23 = phi ptr [ %85, %__mincore_unmapped_range.exit ], [ %10, %.preheader ] + %24 = phi ptr [ %86, %__mincore_unmapped_range.exit ], [ %14, %.preheader ] + %25 = phi i64 [ %87, %__mincore_unmapped_range.exit ], [ %1, %.preheader ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %26 = load volatile i64, ptr %24, align 8 store volatile i64 %26, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %27 = and i64 %26, -97 - %28 = icmp eq i64 %27, 0 - br i1 %28, label %.critedge, label %29 + %28 = icmp ne i64 %27, 0 + %29 = and i64 %26, -576460752303423231 + %30 = icmp ne i64 %29, -576460752303423488 + %31 = and i1 %28, %30 + br i1 %31, label %58, label %32 -29: ; preds = %22 - %30 = and i64 %26, 257 - %31 = icmp ne i64 %30, 0 - %32 = icmp ult i64 %26, -576460752303423488 - %.not5 = or i1 %32, %31 - br i1 %.not5, label %58, label %.critedge - -.critedge: ; preds = %22, %29 +32: ; preds = %22 %33 = load ptr, ptr %18, align 8 %34 = icmp eq ptr %33, null br i1 %34, label %__mincore_unmapped_range.exit, label %35, !llvm.loop !17 -35: ; preds = %.critedge +35: ; preds = %32 %36 = load i64, ptr %8, align 8 %37 = sub i64 %25, %36 %38 = lshr i64 %37, 12 @@ -373,73 +369,74 @@ define internal noundef i32 @mincore_pte_range(ptr noundef %0, i64 noundef %1, i 57: ; preds = %50 br label %__mincore_unmapped_range.exit.sink.split, !llvm.loop !18 -58: ; preds = %29 - %59 = icmp eq i64 %30, 0 - %60 = icmp ult i64 %26, -2305843009213693952 - %or.cond = and i1 %59, %60 - br i1 %or.cond, label %61, label %__mincore_unmapped_range.exit - -61: ; preds = %58 - %62 = lshr i64 %26, 59 - %63 = xor i64 %26, -1 - %64 = lshr i64 %63, 9 - %65 = and i64 %64, 1125899906842623 - %66 = getelementptr [0 x ptr], ptr @swapper_spaces, i64 0, i64 %62 - %67 = load ptr, ptr %66, align 8 - %68 = lshr i64 %65, 14 - %69 = getelementptr %struct.address_space, ptr %67, i64 %68 - %70 = call ptr @filemap_get_incore_folio(ptr noundef %69, i64 noundef %65) #7 - %71 = icmp ugt ptr %70, inttoptr (i64 -4096 to ptr) - br i1 %71, label %__mincore_unmapped_range.exit, label %72 - -72: ; preds = %61 - %73 = load volatile i64, ptr %70, align 8 - %74 = and i64 %73, 8 - %75 = icmp eq i64 %74, 0 - br i1 %75, label %77, label %76 - -76: ; preds = %72 +58: ; preds = %22 + %59 = and i64 %26, 257 + %60 = icmp eq i64 %59, 0 + %61 = icmp ult i64 %26, -2305843009213693952 + %or.cond = and i1 %60, %61 + br i1 %or.cond, label %62, label %__mincore_unmapped_range.exit + +62: ; preds = %58 + %63 = lshr i64 %26, 59 + %64 = xor i64 %26, -1 + %65 = lshr i64 %64, 9 + %66 = and i64 %65, 1125899906842623 + %67 = getelementptr [0 x ptr], ptr @swapper_spaces, i64 0, i64 %63 + %68 = load ptr, ptr %67, align 8 + %69 = lshr i64 %66, 14 + %70 = getelementptr %struct.address_space, ptr %68, i64 %69 + %71 = call ptr @filemap_get_incore_folio(ptr noundef %70, i64 noundef %66) #7 + %72 = icmp ugt ptr %71, inttoptr (i64 -4096 to ptr) + br i1 %72, label %__mincore_unmapped_range.exit, label %73 + +73: ; preds = %62 + %74 = load volatile i64, ptr %71, align 8 + %75 = and i64 %74, 8 + %76 = icmp eq i64 %75, 0 + br i1 %76, label %78, label %77 + +77: ; preds = %73 call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !19 - br label %77 - -77: ; preds = %76, %72 - %78 = lshr exact i64 %74, 3 - %79 = trunc nuw nsw i64 %78 to i8 - %80 = getelementptr inbounds i8, ptr %70, i64 52 - %81 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) %80, ptr elementtype(i32) %80) #7, !srcloc !20 - %82 = icmp ult i8 %81, 2 - call void @llvm.assume(i1 %82) - %83 = icmp eq i8 %81, 0 - br i1 %83, label %__mincore_unmapped_range.exit, label %__mincore_unmapped_range.exit.sink.split - -__mincore_unmapped_range.exit.sink.split: ; preds = %77, %57 - %.sink6 = phi ptr [ %43, %57 ], [ %70, %77 ] - %.sink.ph = phi i8 [ %52, %57 ], [ %79, %77 ] - call void @__folio_put(ptr noundef %.sink6) #7 + br label %78 + +78: ; preds = %77, %73 + %79 = lshr exact i64 %75, 3 + %80 = trunc nuw nsw i64 %79 to i8 + %81 = getelementptr inbounds i8, ptr %71, i64 52 + %82 = call i8 asm sideeffect ".pushsection .smp_locks,\22a\22\0A.balign 4\0A.long 671f - .\0A.popsection\0A671:\0A\09lock; decl $0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) %81, ptr elementtype(i32) %81) #7, !srcloc !20 + %83 = icmp ult i8 %82, 2 + call void @llvm.assume(i1 %83) + %84 = icmp eq i8 %82, 0 + br i1 %84, label %__mincore_unmapped_range.exit, label %__mincore_unmapped_range.exit.sink.split + +__mincore_unmapped_range.exit.sink.split: ; preds = %78, %57 + %.sink4 = phi ptr [ %43, %57 ], [ %71, %78 ] + %.sink.ph = phi i8 [ %52, %57 ], [ %80, %78 ] + call void @__folio_put(ptr noundef %.sink4) #7 br label %__mincore_unmapped_range.exit -__mincore_unmapped_range.exit: ; preds = %__mincore_unmapped_range.exit.sink.split, %61, %77, %58, %.critedge, %35, %50 - %.sink = phi i8 [ 0, %35 ], [ %52, %50 ], [ 0, %.critedge ], [ 1, %58 ], [ 0, %61 ], [ %79, %77 ], [ %.sink.ph, %__mincore_unmapped_range.exit.sink.split ] +__mincore_unmapped_range.exit: ; preds = %__mincore_unmapped_range.exit.sink.split, %62, %78, %58, %32, %35, %50 + %.sink = phi i8 [ 0, %35 ], [ %52, %50 ], [ 0, %32 ], [ 1, %58 ], [ 0, %62 ], [ %80, %78 ], [ %.sink.ph, %__mincore_unmapped_range.exit.sink.split ] store i8 %.sink, ptr %23, align 1 - %84 = getelementptr i8, ptr %23, i64 1 - %85 = getelementptr i8, ptr %24, i64 8 - %86 = add i64 %25, 4096 - %87 = icmp eq i64 %86, %2 - br i1 %87, label %.loopexit, label %22, !llvm.loop !21 + %85 = getelementptr i8, ptr %23, i64 1 + %86 = getelementptr i8, ptr %24, i64 8 + %87 = add i64 %25, 4096 + %88 = icmp eq i64 %87, %2 + br i1 %88, label %.loopexit, label %22, !llvm.loop !21 .loopexit: ; preds = %__mincore_unmapped_range.exit, %16 - %88 = load ptr, ptr %6, align 8 - call void @_raw_spin_unlock(ptr noundef %88) #7 + %89 = load ptr, ptr %6, align 8 + call void @_raw_spin_unlock(ptr noundef %89) #7 call void @__rcu_read_unlock() #7 - %89 = load ptr, ptr %9, align 8 - %90 = shl i64 %11, 20 - %91 = ashr i64 %90, 32 - %92 = getelementptr i8, ptr %89, i64 %91 - store ptr %92, ptr %9, align 8 - %93 = call i32 @__SCT__cond_resched() #7 - br label %94 - -94: ; preds = %.loopexit, %20 + %90 = load ptr, ptr %9, align 8 + %91 = shl i64 %11, 20 + %92 = ashr i64 %91, 32 + %93 = getelementptr i8, ptr %90, i64 %92 + store ptr %93, ptr %9, align 8 + %94 = call i32 @__SCT__cond_resched() #7 + br label %95 + +95: ; preds = %.loopexit, %20 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7 ret i32 0 } @@ -543,7 +540,7 @@ define internal noundef i32 @mincore_hugetlb(ptr noundef %0, i64 %1, i64 noundef %7 = getelementptr inbounds i8, ptr %4, i64 40 %8 = load ptr, ptr %7, align 8 %9 = icmp eq ptr %0, null - br i1 %9, label %20, label %10 + br i1 %9, label %18, label %10 10: ; preds = %5 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) @@ -552,34 +549,32 @@ define internal noundef i32 @mincore_hugetlb(ptr noundef %0, i64 %1, i64 noundef call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %12 = and i64 %11, -97 %13 = icmp eq i64 %12, 0 - br i1 %13, label %20, label %14 + br i1 %13, label %18, label %14 14: ; preds = %10 - %15 = and i64 %11, 257 - %16 = icmp ne i64 %15, 0 - %17 = icmp ult i64 %11, -576460752303423488 - %18 = or i1 %17, %16 - %19 = zext i1 %18 to i8 - br label %20 - -20: ; preds = %14, %10, %5 - %21 = phi i8 [ 0, %5 ], [ 0, %10 ], [ %19, %14 ] - %22 = icmp eq i64 %2, %3 - br i1 %22, label %29, label %23 - -23: ; preds = %20 + %15 = and i64 %11, -576460752303423231 + %16 = icmp ne i64 %15, -576460752303423488 + %17 = zext i1 %16 to i8 + br label %18 + +18: ; preds = %14, %10, %5 + %19 = phi i8 [ 0, %5 ], [ 0, %10 ], [ %17, %14 ] + %20 = icmp eq i64 %2, %3 + br i1 %20, label %27, label %21 + +21: ; preds = %18 %reass.sub = sub i64 %3, %2 - %24 = add i64 %reass.sub, -4096 - %25 = lshr i64 %24, 12 - %26 = add nuw nsw i64 %25, 1 - tail call void @llvm.memset.p0.i64(ptr noundef align 1 %8, i8 %21, i64 %26, i1 false) - %27 = getelementptr i8, ptr %8, i64 %25 - %28 = getelementptr i8, ptr %27, i64 1 - br label %29 - -29: ; preds = %23, %20 - %30 = phi ptr [ %8, %20 ], [ %28, %23 ] - store ptr %30, ptr %7, align 8 + %22 = add i64 %reass.sub, -4096 + %23 = lshr i64 %22, 12 + %24 = add nuw nsw i64 %23, 1 + tail call void @llvm.memset.p0.i64(ptr noundef align 1 %8, i8 %19, i64 %24, i1 false) + %25 = getelementptr i8, ptr %8, i64 %23 + %26 = getelementptr i8, ptr %25, i64 1 + br label %27 + +27: ; preds = %21, %18 + %28 = phi ptr [ %8, %18 ], [ %26, %21 ] + store ptr %28, ptr %7, align 8 ret i32 0 } diff --git a/bench/llvm/optimized/AArch64AsmParser.cpp.ll b/bench/llvm/optimized/AArch64AsmParser.cpp.ll index 33ad1f51f30..f7f2bc559de 100644 --- a/bench/llvm/optimized/AArch64AsmParser.cpp.ll +++ b/bench/llvm/optimized/AArch64AsmParser.cpp.ll @@ -18584,11 +18584,8 @@ _ZN4llvm12StringSwitchISt4pairIiiES2_E4CaseENS_13StringLiteralES2_.exit128: ; pr %.sink = phi ptr [ %5, %8 ], [ %5, %_ZN4llvmeqENS_9StringRefES0_.exit.i125 ], [ %5, %_ZN4llvmeqENS_9StringRefES0_.exit.i93 ], [ %5, %_ZN4llvmeqENS_9StringRefES0_.exit.i85 ], [ %5, %_ZN4llvm12StringSwitchISt4pairIiiES2_E4CaseENS_13StringLiteralES2_.exit120.thread ], [ %6, %_ZN4llvmeqENS_9StringRefES0_.exit.i175 ], [ %6, %28 ], [ %6, %_ZN4llvmeqENS_9StringRefES0_.exit.i167 ], [ %6, %_ZN4llvmeqENS_9StringRefES0_.exit.i159 ], [ %6, %_ZN4llvmeqENS_9StringRefES0_.exit.i151 ], [ %6, %_ZN4llvmeqENS_9StringRefES0_.exit.i143 ], [ %6, %_ZN4llvm12StringSwitchISt4pairIiiES2_E4CaseENS_13StringLiteralES2_.exit170 ] %.sroa.0384.0.in = phi i64 [ -1, %8 ], [ %27, %_ZN4llvmeqENS_9StringRefES0_.exit.i125 ], [ -1, %_ZN4llvmeqENS_9StringRefES0_.exit.i93 ], [ -1, %_ZN4llvmeqENS_9StringRefES0_.exit.i85 ], [ %.sroa.36.15.ph, %_ZN4llvm12StringSwitchISt4pairIiiES2_E4CaseENS_13StringLiteralES2_.exit120.thread ], [ %36, %_ZN4llvmeqENS_9StringRefES0_.exit.i175 ], [ %30, %28 ], [ 274877906944, %_ZN4llvmeqENS_9StringRefES0_.exit.i167 ], [ 137438953472, %_ZN4llvmeqENS_9StringRefES0_.exit.i159 ], [ 68719476736, %_ZN4llvmeqENS_9StringRefES0_.exit.i151 ], [ 34359738368, %_ZN4llvmeqENS_9StringRefES0_.exit.i143 ], [ -1, %_ZN4llvm12StringSwitchISt4pairIiiES2_E4CaseENS_13StringLiteralES2_.exit170 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #25 - %37 = and i64 %.sroa.0384.0.in, 4294967295 - %38 = icmp ne i64 %37, 4294967295 - %39 = icmp ult i64 %.sroa.0384.0.in, -4294967296 - %.not557 = or i1 %39, %38 - %.sroa.2387.0 = zext i1 %.not557 to i8 + %37 = icmp ne i64 %.sroa.0384.0.in, -1 + %.sroa.2387.0 = zext i1 %37 to i8 %.fca.0.insert = insertvalue { i64, i8 } poison, i64 %.sroa.0384.0.in, 0 %.fca.1.insert = insertvalue { i64, i8 } %.fca.0.insert, i8 %.sroa.2387.0, 1 ret { i64, i8 } %.fca.1.insert diff --git a/bench/llvm/optimized/Instructions.cpp.ll b/bench/llvm/optimized/Instructions.cpp.ll index 0823205f6d4..caed5ddae5c 100644 --- a/bench/llvm/optimized/Instructions.cpp.ll +++ b/bench/llvm/optimized/Instructions.cpp.ll @@ -16933,7 +16933,7 @@ define dso_local noundef zeroext i1 @_ZN4llvm8CastInst11castIsValidENS_11Instruc i32 47, label %142 i32 48, label %156 i32 49, label %170 - i32 50, label %208 + i32 50, label %209 ] 29: ; preds = %28 @@ -17441,84 +17441,85 @@ _ZNK4llvm4Type13getScalarTypeEv.exit180: ; preds = %_ZNK4llvm4Type13get br i1 %.not38, label %196, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129 196: ; preds = %191 - %brmerge = or i1 %spec.select.i.i.i.i.i.i.i.i, %spec.select.i.i.i.i.i.i.i.i49 - br i1 %brmerge, label %200, label %197 - -197: ; preds = %196 - %198 = icmp eq i32 %.sroa.0223.0.extract.trunc, %.sroa.0200.0.extract.trunc - %199 = icmp eq i64 %.sroa.13.0.extract.shift293, %.sroa.13235.0.extract.shift292 - %spec.select297 = and i1 %198, %199 + %197 = and i32 %16, %15 + %brmerge.not = icmp ugt i32 %197, -3 + br i1 %brmerge.not, label %198, label %201 + +198: ; preds = %196 + %199 = icmp eq i32 %.sroa.0223.0.extract.trunc, %.sroa.0200.0.extract.trunc + %200 = icmp eq i64 %.sroa.13.0.extract.shift293, %.sroa.13235.0.extract.shift292 + %spec.select297 = and i1 %199, %200 br label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129 -200: ; preds = %196 - br i1 %spec.select.i.i.i.i.i.i.i.i, label %204, label %201 +201: ; preds = %196 + br i1 %spec.select.i.i.i.i.i.i.i.i, label %205, label %202 -201: ; preds = %200 - %202 = icmp eq i32 %.sroa.0223.0.extract.trunc, 1 - %203 = icmp ult i64 %storemerge.in, 4294967296 - %spec.select287 = and i1 %202, %203 +202: ; preds = %201 + %203 = icmp eq i32 %.sroa.0223.0.extract.trunc, 1 + %204 = icmp ult i64 %storemerge.in, 4294967296 + %spec.select287 = and i1 %203, %204 br label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129 -204: ; preds = %200 - br i1 %spec.select.i.i.i.i.i.i.i.i49, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129, label %205 +205: ; preds = %201 + br i1 %spec.select.i.i.i.i.i.i.i.i49, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129, label %206 -205: ; preds = %204 - %206 = icmp eq i32 %.sroa.0200.0.extract.trunc, 1 - %207 = icmp ult i64 %storemerge33.in, 4294967296 - %spec.select288 = and i1 %206, %207 +206: ; preds = %205 + %207 = icmp eq i32 %.sroa.0200.0.extract.trunc, 1 + %208 = icmp ult i64 %storemerge33.in, 4294967296 + %spec.select288 = and i1 %207, %208 br label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129 -208: ; preds = %28 - br i1 %spec.select.i.i.i.i.i.i.i.i, label %_ZNK4llvm4Type13getScalarTypeEv.exit187, label %209 +209: ; preds = %28 + br i1 %spec.select.i.i.i.i.i.i.i.i, label %_ZNK4llvm4Type13getScalarTypeEv.exit187, label %210 -209: ; preds = %208 - %210 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %211 = load ptr, ptr %210, align 8 +210: ; preds = %209 + %211 = getelementptr inbounds nuw i8, ptr %1, i64 16 %212 = load ptr, ptr %211, align 8 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %212, i64 8 + %213 = load ptr, ptr %212, align 8 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %213, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 - %213 = icmp eq ptr %212, null + %214 = icmp eq ptr %213, null br label %_ZNK4llvm4Type13getScalarTypeEv.exit187 -_ZNK4llvm4Type13getScalarTypeEv.exit187: ; preds = %208, %209 - %214 = phi i32 [ %.pre, %209 ], [ %5, %208 ] - %.0.i186 = phi i1 [ %213, %209 ], [ false, %208 ] - %215 = and i32 %214, 255 - %216 = icmp ne i32 %215, 14 - %.not = or i1 %.0.i186, %216 - br i1 %.not, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129, label %217 +_ZNK4llvm4Type13getScalarTypeEv.exit187: ; preds = %209, %210 + %215 = phi i32 [ %.pre, %210 ], [ %5, %209 ] + %.0.i186 = phi i1 [ %214, %210 ], [ false, %209 ] + %216 = and i32 %215, 255 + %217 = icmp ne i32 %216, 14 + %.not = or i1 %.0.i186, %217 + br i1 %.not, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129, label %218 -217: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit187 - br i1 %spec.select.i.i.i.i.i.i.i.i49, label %_ZNK4llvm4Type13getScalarTypeEv.exit191, label %218 +218: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit187 + br i1 %spec.select.i.i.i.i.i.i.i.i49, label %_ZNK4llvm4Type13getScalarTypeEv.exit191, label %219 -218: ; preds = %217 - %219 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %220 = load ptr, ptr %219, align 8 +219: ; preds = %218 + %220 = getelementptr inbounds nuw i8, ptr %2, i64 16 %221 = load ptr, ptr %220, align 8 - %.phi.trans.insert299 = getelementptr inbounds nuw i8, ptr %221, i64 8 + %222 = load ptr, ptr %221, align 8 + %.phi.trans.insert299 = getelementptr inbounds nuw i8, ptr %222, i64 8 %.pre300 = load i32, ptr %.phi.trans.insert299, align 8 - %222 = icmp eq ptr %221, null + %223 = icmp eq ptr %222, null br label %_ZNK4llvm4Type13getScalarTypeEv.exit191 -_ZNK4llvm4Type13getScalarTypeEv.exit191: ; preds = %217, %218 - %223 = phi i32 [ %.pre300, %218 ], [ %9, %217 ] - %.0.i190 = phi i1 [ %222, %218 ], [ false, %217 ] - %224 = and i32 %223, 255 - %225 = icmp ne i32 %224, 14 - %.not34 = or i1 %.0.i190, %225 - br i1 %.not34, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129, label %226 - -226: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit191 - %.unshifted = xor i32 %223, %214 - %227 = icmp ugt i32 %.unshifted, 255 - %228 = icmp eq i32 %.sroa.0223.0.extract.trunc, %.sroa.0200.0.extract.trunc - %229 = icmp eq i64 %.sroa.13.0.extract.shift293, %.sroa.13235.0.extract.shift292 - %230 = and i1 %228, %229 - %spec.select298 = select i1 %227, i1 %230, i1 false +_ZNK4llvm4Type13getScalarTypeEv.exit191: ; preds = %218, %219 + %224 = phi i32 [ %.pre300, %219 ], [ %9, %218 ] + %.0.i190 = phi i1 [ %223, %219 ], [ false, %218 ] + %225 = and i32 %224, 255 + %226 = icmp ne i32 %225, 14 + %.not34 = or i1 %.0.i190, %226 + br i1 %.not34, label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129, label %227 + +227: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit191 + %.unshifted = xor i32 %224, %215 + %228 = icmp ugt i32 %.unshifted, 255 + %229 = icmp eq i32 %.sroa.0223.0.extract.trunc, %.sroa.0200.0.extract.trunc + %230 = icmp eq i64 %.sroa.13.0.extract.shift293, %.sroa.13235.0.extract.shift292 + %231 = and i1 %229, %230 + %spec.select298 = select i1 %228, i1 %231, i1 false br label %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129 -_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129: ; preds = %226, %197, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit144, %205, %201, %7, %7, %3, %3, %156, %142, %187, %183, %125, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128.thread, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112.thread, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95.thread, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit84, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit71, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit, %_ZNK4llvm4Type13getScalarTypeEv.exit191, %_ZNK4llvm4Type13getScalarTypeEv.exit187, %204, %191, %_ZNK4llvm4Type13getScalarTypeEv.exit180, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit168, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit175, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit159, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit137, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit120, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit104, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit77, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit83, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit64, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit70, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit58, %28, %11 - %.0 = phi i1 [ false, %11 ], [ false, %7 ], [ false, %3 ], [ false, %28 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit58 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit ], [ %spec.select, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit70 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit64 ], [ %spec.select39, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit71 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit83 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit77 ], [ %spec.select40, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit84 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit ], [ %spec.select41, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95.thread ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit104 ], [ %spec.select42, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112.thread ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit120 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit137 ], [ false, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit ], [ %155, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit159 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit168 ], [ %169, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit175 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit180 ], [ false, %191 ], [ true, %204 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit187 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit191 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128.thread ], [ %126, %125 ], [ false, %183 ], [ %190, %187 ], [ false, %142 ], [ false, %156 ], [ false, %3 ], [ false, %7 ], [ %spec.select287, %201 ], [ %spec.select288, %205 ], [ %spec.select296, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit144 ], [ %spec.select297, %197 ], [ %spec.select298, %226 ] +_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit129: ; preds = %227, %198, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit144, %206, %202, %7, %7, %3, %3, %156, %142, %187, %183, %125, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128.thread, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112.thread, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95.thread, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit84, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit71, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit, %_ZNK4llvm4Type13getScalarTypeEv.exit191, %_ZNK4llvm4Type13getScalarTypeEv.exit187, %205, %191, %_ZNK4llvm4Type13getScalarTypeEv.exit180, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit168, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit175, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit159, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit137, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit120, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit104, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit77, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit83, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit64, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit70, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit58, %28, %11 + %.0 = phi i1 [ false, %11 ], [ false, %7 ], [ false, %3 ], [ false, %28 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit58 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit ], [ %spec.select, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit70 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit64 ], [ %spec.select39, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit71 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit83 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit77 ], [ %spec.select40, %_ZNK4llvm7details23FixedOrScalableQuantityINS_12ElementCountEjEeqERKS3_.exit84 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit ], [ %spec.select41, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit95.thread ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit104 ], [ %spec.select42, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit112.thread ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit120 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit137 ], [ false, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit ], [ %155, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit159 ], [ false, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit168 ], [ %169, %_ZNK4llvm4Type18isPtrOrPtrVectorTyEv.exit175 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit180 ], [ false, %191 ], [ true, %205 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit187 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit191 ], [ false, %_ZNK4llvm4Type16isFPOrFPVectorTyEv.exit128.thread ], [ %126, %125 ], [ false, %183 ], [ %190, %187 ], [ false, %142 ], [ false, %156 ], [ false, %3 ], [ false, %7 ], [ %spec.select287, %202 ], [ %spec.select288, %206 ], [ %spec.select296, %_ZNK4llvm4Type18isIntOrIntVectorTyEv.exit144 ], [ %spec.select297, %198 ], [ %spec.select298, %227 ] ret i1 %.0 } diff --git a/bench/lua/optimized/lcode.ll b/bench/lua/optimized/lcode.ll index 69f3e65b0f8..a3f57865c8f 100644 --- a/bench/lua/optimized/lcode.ll +++ b/bench/lua/optimized/lcode.ll @@ -3237,26 +3237,28 @@ isKint.exit.i: ; preds = %sw.bb6 if.else.i128: ; preds = %isKint.exit.i %u.i129 = getelementptr inbounds i8, ptr %e2, i64 8 %46 = load i64, ptr %u.i129, align 8 - %47 = add i64 %46, -128 - %or.cond.i = icmp ult i64 %47, -255 - br i1 %or.cond.i, label %sw.bb11, label %finishbinexpneg.exit + %47 = sub i64 128, %46 + %48 = sub i64 127, %46 + %49 = or i64 %47, %48 + %or.cond.not.i = icmp ult i64 %49, 256 + br i1 %or.cond.not.i, label %finishbinexpneg.exit, label %sw.bb11 finishbinexpneg.exit: ; preds = %if.else.i128 %conv.i130 = trunc i64 %46 to i32 - %add.i = sub nsw i32 127, %conv.i130 + %add.i = sub i32 127, %conv.i130 tail call fastcc void @finishbinexpval(ptr noundef %fs, ptr noundef %e1, ptr noundef nonnull readonly %e2, i32 noundef 21, i32 noundef %add.i, i32 noundef 0, i32 noundef %line, i32 noundef 47, i32 noundef 7) - %48 = load ptr, ptr %fs, align 8 - %code.i = getelementptr inbounds i8, ptr %48, i64 64 - %49 = load ptr, ptr %code.i, align 8 + %50 = load ptr, ptr %fs, align 8 + %code.i = getelementptr inbounds i8, ptr %50, i64 64 + %51 = load ptr, ptr %code.i, align 8 %pc.i = getelementptr inbounds i8, ptr %fs, i64 32 - %50 = load i32, ptr %pc.i, align 8 - %51 = sext i32 %50 to i64 - %52 = getelementptr i32, ptr %49, i64 %51 - %arrayidx.i = getelementptr i8, ptr %52, i64 -4 - %53 = load i32, ptr %arrayidx.i, align 4 - %and.i131 = and i32 %53, -16711681 - %add9.i = shl nsw i32 %conv.i130, 16 - %shl.i132 = add nsw i32 %add9.i, 8323072 + %52 = load i32, ptr %pc.i, align 8 + %53 = sext i32 %52 to i64 + %54 = getelementptr i32, ptr %51, i64 %53 + %arrayidx.i = getelementptr i8, ptr %54, i64 -4 + %55 = load i32, ptr %arrayidx.i, align 4 + %and.i131 = and i32 %55, -16711681 + %add9.i = shl i32 %conv.i130, 16 + %shl.i132 = add i32 %add9.i, 8323072 %and10.i = and i32 %shl.i132, 16711680 %or.i133 = or disjoint i32 %and.i131, %and10.i store i32 %or.i133, ptr %arrayidx.i, align 4 @@ -3267,8 +3269,8 @@ sw.bb11: ; preds = %sw.bb6, %if.else.i1 br label %sw.epilog sw.bb12: ; preds = %if.end, %if.end, %if.end - %54 = load i32, ptr %e1, align 8 - %cmp.not.i = icmp eq i32 %54, 6 + %56 = load i32, ptr %e1, align 8 + %cmp.not.i = icmp eq i32 %56, 6 br i1 %cmp.not.i, label %if.then.i143, label %if.end.i135 if.then.i143: ; preds = %sw.bb12 @@ -3281,8 +3283,8 @@ if.then.i143: ; preds = %sw.bb12 if.end.i135: ; preds = %if.then.i143, %sw.bb12 %flip.0.i136 = phi i32 [ 1, %if.then.i143 ], [ 0, %sw.bb12 ] - %55 = load i32, ptr %e2, align 8 - %cmp2.i = icmp eq i32 %55, 6 + %57 = load i32, ptr %e2, align 8 + %cmp2.i = icmp eq i32 %57, 6 br i1 %cmp2.i, label %land.lhs.true.i139, label %if.else.i137 land.lhs.true.i139: ; preds = %if.end.i135 @@ -3293,9 +3295,9 @@ land.lhs.true.i139: ; preds = %if.end.i135 if.then3.i140: ; preds = %land.lhs.true.i139 %add.i.i.i141 = add nuw nsw i32 %opr, 6 %u.i.i142 = getelementptr inbounds i8, ptr %e2, i64 8 - %56 = load i32, ptr %u.i.i142, align 8 + %58 = load i32, ptr %u.i.i142, align 8 %add.i3.i.i = add nuw nsw i32 %opr, 22 - tail call fastcc void @finishbinexpval(ptr noundef %fs, ptr noundef nonnull %e1, ptr noundef nonnull readonly %e2, i32 noundef %add.i3.i.i, i32 noundef %56, i32 noundef %flip.0.i136, i32 noundef %line, i32 noundef 48, i32 noundef %add.i.i.i141) + tail call fastcc void @finishbinexpval(ptr noundef %fs, ptr noundef nonnull %e1, ptr noundef nonnull readonly %e2, i32 noundef %add.i3.i.i, i32 noundef %58, i32 noundef %flip.0.i136, i32 noundef %line, i32 noundef 48, i32 noundef %add.i.i.i141) br label %sw.epilog if.else.i137: ; preds = %land.lhs.true.i139, %if.end.i135 @@ -3317,23 +3319,23 @@ codebinNoK.exit.i: ; preds = %if.then.i.i138, %if br label %sw.epilog sw.bb13: ; preds = %if.end - %57 = load i32, ptr %e1, align 8 - %cmp.i.i144 = icmp eq i32 %57, 6 + %59 = load i32, ptr %e1, align 8 + %cmp.i.i144 = icmp eq i32 %59, 6 br i1 %cmp.i.i144, label %isKint.exit.i145, label %if.else isKint.exit.i145: ; preds = %sw.bb13 %t.i.i146 = getelementptr inbounds i8, ptr %e1, i64 16 - %58 = load i32, ptr %t.i.i146, align 8 + %60 = load i32, ptr %t.i.i146, align 8 %f.i.i147 = getelementptr inbounds i8, ptr %e1, i64 20 - %59 = load i32, ptr %f.i.i147, align 4 - %cmp1.not.i.not.i148 = icmp eq i32 %58, %59 + %61 = load i32, ptr %f.i.i147, align 4 + %cmp1.not.i.not.i148 = icmp eq i32 %60, %61 br i1 %cmp1.not.i.not.i148, label %isSCint.exit, label %if.else isSCint.exit: ; preds = %isKint.exit.i145 %u.i149 = getelementptr inbounds i8, ptr %e1, i64 8 - %60 = load i64, ptr %u.i149, align 8 - %61 = add i64 %60, -129 - %cmp.i2.i = icmp ult i64 %61, -256 + %62 = load i64, ptr %u.i149, align 8 + %63 = add i64 %62, -129 + %cmp.i2.i = icmp ult i64 %63, -256 br i1 %cmp.i2.i, label %if.else, label %if.then16 if.then16: ; preds = %isSCint.exit @@ -3343,8 +3345,8 @@ if.then16: ; preds = %isSCint.exit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %e2, ptr noundef nonnull align 8 dereferenceable(24) %temp.i, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %temp.i) %u.i152 = getelementptr inbounds i8, ptr %e2, i64 8 - %62 = load i64, ptr %u.i152, align 8 - %conv.i153 = trunc i64 %62 to i32 + %64 = load i64, ptr %u.i152, align 8 + %conv.i153 = trunc i64 %64 to i32 %add.i154 = add nsw i32 %conv.i153, 127 tail call fastcc void @finishbinexpval(ptr noundef %fs, ptr noundef nonnull %e1, ptr noundef readonly %e2, i32 noundef 33, i32 noundef %add.i154, i32 noundef 1, i32 noundef %line, i32 noundef 47, i32 noundef 16) br label %sw.epilog @@ -3359,27 +3361,27 @@ if.else20: ; preds = %if.else br label %sw.epilog sw.bb23: ; preds = %if.end - %63 = load i32, ptr %e2, align 8 - %cmp.i.i155 = icmp eq i32 %63, 6 + %65 = load i32, ptr %e2, align 8 + %cmp.i.i155 = icmp eq i32 %65, 6 br i1 %cmp.i.i155, label %isKint.exit.i157, label %if.else27 isKint.exit.i157: ; preds = %sw.bb23 %t.i.i158 = getelementptr inbounds i8, ptr %e2, i64 16 - %64 = load i32, ptr %t.i.i158, align 8 + %66 = load i32, ptr %t.i.i158, align 8 %f.i.i159 = getelementptr inbounds i8, ptr %e2, i64 20 - %65 = load i32, ptr %f.i.i159, align 4 - %cmp1.not.i.not.i160 = icmp eq i32 %64, %65 + %67 = load i32, ptr %f.i.i159, align 4 + %cmp1.not.i.not.i160 = icmp eq i32 %66, %67 br i1 %cmp1.not.i.not.i160, label %isSCint.exit166, label %if.else27 isSCint.exit166: ; preds = %isKint.exit.i157 %u.i162 = getelementptr inbounds i8, ptr %e2, i64 8 - %66 = load i64, ptr %u.i162, align 8 - %67 = add i64 %66, -129 - %cmp.i2.i164 = icmp ult i64 %67, -256 + %68 = load i64, ptr %u.i162, align 8 + %69 = add i64 %68, -129 + %cmp.i2.i164 = icmp ult i64 %69, -256 br i1 %cmp.i2.i164, label %if.else27, label %if.then26 if.then26: ; preds = %isSCint.exit166 - %conv.i168 = trunc i64 %66 to i32 + %conv.i168 = trunc i64 %68 to i32 %add.i169 = add nsw i32 %conv.i168, 127 tail call fastcc void @finishbinexpval(ptr noundef %fs, ptr noundef %e1, ptr noundef nonnull readonly %e2, i32 noundef 32, i32 noundef %add.i169, i32 noundef 0, i32 noundef %line, i32 noundef 47, i32 noundef 17) br label %sw.epilog @@ -3389,8 +3391,8 @@ if.else27: ; preds = %sw.bb23, %isKint.ex br label %sw.epilog sw.bb29: ; preds = %if.end, %if.end - %68 = load i32, ptr %e1, align 8 - %cmp.not.i171 = icmp eq i32 %68, 8 + %70 = load i32, ptr %e1, align 8 + %cmp.not.i171 = icmp eq i32 %70, 8 br i1 %cmp.not.i171, label %if.end.i173, label %if.then.i172 if.then.i172: ; preds = %sw.bb29 @@ -3404,42 +3406,42 @@ if.then.i172: ; preds = %sw.bb29 if.end.i173: ; preds = %if.then.i172, %sw.bb29 %call.i174 = tail call i32 @luaK_exp2anyreg(ptr noundef %fs, ptr noundef nonnull %e1) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %i.i.i) - %69 = load i32, ptr %e2, align 8 - switch i32 %69, label %if.else.i178 [ + %71 = load i32, ptr %e2, align 8 + switch i32 %71, label %if.else.i178 [ i32 6, label %if.then.i.i188 i32 5, label %land.lhs.true.i.i ] if.then.i.i188: ; preds = %if.end.i173 %u.i.i189 = getelementptr inbounds i8, ptr %e2, i64 8 - %70 = load i64, ptr %u.i.i189, align 8 - store i64 %70, ptr %i.i.i, align 8 + %72 = load i64, ptr %u.i.i189, align 8 + store i64 %72, ptr %i.i.i, align 8 br label %if.end6.i.i land.lhs.true.i.i: ; preds = %if.end.i173 %u3.i.i = getelementptr inbounds i8, ptr %e2, i64 8 - %71 = load double, ptr %u3.i.i, align 8 - %call.i.i175 = call i32 @luaV_flttointeger(double noundef %71, ptr noundef nonnull %i.i.i, i32 noundef 0) #13 + %73 = load double, ptr %u3.i.i, align 8 + %call.i.i175 = call i32 @luaV_flttointeger(double noundef %73, ptr noundef nonnull %i.i.i, i32 noundef 0) #13 %tobool.not.i.i = icmp eq i32 %call.i.i175, 0 br i1 %tobool.not.i.i, label %if.else.i178, label %if.end6.i.i if.end6.i.i: ; preds = %land.lhs.true.i.i, %if.then.i.i188 %isfloat.0.i = phi i32 [ 0, %if.then.i.i188 ], [ 1, %land.lhs.true.i.i ] %t.i.i176 = getelementptr inbounds i8, ptr %e2, i64 16 - %72 = load i32, ptr %t.i.i176, align 8 + %74 = load i32, ptr %t.i.i176, align 8 %f.i.i177 = getelementptr inbounds i8, ptr %e2, i64 20 - %73 = load i32, ptr %f.i.i177, align 4 - %cmp7.not.i.i = icmp eq i32 %72, %73 + %75 = load i32, ptr %f.i.i177, align 4 + %cmp7.not.i.i = icmp eq i32 %74, %75 br i1 %cmp7.not.i.i, label %land.lhs.true8.i.i, label %if.else.i178 land.lhs.true8.i.i: ; preds = %if.end6.i.i - %74 = load i64, ptr %i.i.i, align 8 - %75 = add i64 %74, -129 - %cmp.i.i.i184 = icmp ult i64 %75, -256 + %76 = load i64, ptr %i.i.i, align 8 + %77 = add i64 %76, -129 + %cmp.i.i.i184 = icmp ult i64 %77, -256 br i1 %cmp.i.i.i184, label %if.else.i178, label %if.then2.i185 if.then2.i185: ; preds = %land.lhs.true8.i.i - %conv.i.i186 = trunc i64 %74 to i32 + %conv.i.i186 = trunc i64 %76 to i32 %add.i.i187 = add nsw i32 %conv.i.i186, 127 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %i.i.i) br label %if.end9.i @@ -3453,7 +3455,7 @@ if.else.i178: ; preds = %land.lhs.true8.i.i, if.then5.i: ; preds = %if.else.i178 %u.i179 = getelementptr inbounds i8, ptr %e2, i64 8 - %76 = load i32, ptr %u.i179, align 8 + %78 = load i32, ptr %u.i179, align 8 br label %if.end9.i if.else6.i183: ; preds = %if.else.i178 @@ -3463,30 +3465,30 @@ if.else6.i183: ; preds = %if.else.i178 if.end9.i: ; preds = %if.else6.i183, %if.then5.i, %if.then2.i185 %isfloat.125.i = phi i32 [ %isfloat.0.i, %if.then2.i185 ], [ %isfloat.1.ph.i, %if.then5.i ], [ %isfloat.1.ph.i, %if.else6.i183 ] - %r2.0.i = phi i32 [ %add.i.i187, %if.then2.i185 ], [ %76, %if.then5.i ], [ %call7.i, %if.else6.i183 ] + %r2.0.i = phi i32 [ %add.i.i187, %if.then2.i185 ], [ %78, %if.then5.i ], [ %call7.i, %if.else6.i183 ] %op.0.i = phi i32 [ 61, %if.then2.i185 ], [ 60, %if.then5.i ], [ 57, %if.else6.i183 ] - %77 = load i32, ptr %e1, align 8 - %cmp.i.i180 = icmp eq i32 %77, 8 + %79 = load i32, ptr %e1, align 8 + %cmp.i.i180 = icmp eq i32 %79, 8 br i1 %cmp.i.i180, label %cond.true.i.i, label %cond.end.i.i cond.true.i.i: ; preds = %if.end9.i %u.i19.i = getelementptr inbounds i8, ptr %e1, i64 8 - %78 = load i32, ptr %u.i19.i, align 8 + %80 = load i32, ptr %u.i19.i, align 8 br label %cond.end.i.i cond.end.i.i: ; preds = %cond.true.i.i, %if.end9.i - %cond.i.i = phi i32 [ %78, %cond.true.i.i ], [ -1, %if.end9.i ] - %79 = load i32, ptr %e2, align 8 - %cmp2.i.i = icmp eq i32 %79, 8 + %cond.i.i = phi i32 [ %80, %cond.true.i.i ], [ -1, %if.end9.i ] + %81 = load i32, ptr %e2, align 8 + %cmp2.i.i = icmp eq i32 %81, 8 br i1 %cmp2.i.i, label %cond.true3.i.i, label %cond.end6.i.i cond.true3.i.i: ; preds = %cond.end.i.i %u4.i.i = getelementptr inbounds i8, ptr %e2, i64 8 - %80 = load i32, ptr %u4.i.i, align 8 + %82 = load i32, ptr %u4.i.i, align 8 br label %cond.end6.i.i cond.end6.i.i: ; preds = %cond.true3.i.i, %cond.end.i.i - %cond7.i.i = phi i32 [ %80, %cond.true3.i.i ], [ -1, %cond.end.i.i ] + %cond7.i.i = phi i32 [ %82, %cond.true3.i.i ], [ -1, %cond.end.i.i ] %cmp.i.i18.i = icmp sgt i32 %cond.i.i, %cond7.i.i %call.i.i.i.i = call i32 @luaY_nvarstack(ptr noundef %fs) #13 br i1 %cmp.i.i18.i, label %if.then.i.i.i182, label %if.else.i.i.i @@ -3497,8 +3499,8 @@ if.then.i.i.i182: ; preds = %cond.end6.i.i if.then.i.i.i.i: ; preds = %if.then.i.i.i182 %freereg.i.i.i.i = getelementptr inbounds i8, ptr %fs, i64 68 - %81 = load i8, ptr %freereg.i.i.i.i, align 4 - %dec.i.i.i.i = add i8 %81, -1 + %83 = load i8, ptr %freereg.i.i.i.i, align 4 + %dec.i.i.i.i = add i8 %83, -1 store i8 %dec.i.i.i.i, ptr %freereg.i.i.i.i, align 4 br label %freereg.exit.i.i.i @@ -3513,8 +3515,8 @@ if.else.i.i.i: ; preds = %cond.end6.i.i if.then.i16.i.i.i: ; preds = %if.else.i.i.i %freereg.i17.i.i.i = getelementptr inbounds i8, ptr %fs, i64 68 - %82 = load i8, ptr %freereg.i17.i.i.i, align 4 - %dec.i18.i.i.i = add i8 %82, -1 + %84 = load i8, ptr %freereg.i17.i.i.i, align 4 + %dec.i18.i.i.i = add i8 %84, -1 store i8 %dec.i18.i.i.i, ptr %freereg.i17.i.i.i, align 4 br label %freereg.exit19.i.i.i @@ -3525,8 +3527,8 @@ freereg.exit19.i.i.i: ; preds = %if.then.i16.i.i.i, if.end.sink.split.i.i.i: ; preds = %freereg.exit19.i.i.i, %freereg.exit.i.i.i %freereg.i23.i.i.i = getelementptr inbounds i8, ptr %fs, i64 68 - %83 = load i8, ptr %freereg.i23.i.i.i, align 4 - %dec.i24.i.i.i = add i8 %83, -1 + %85 = load i8, ptr %freereg.i23.i.i.i, align 4 + %dec.i24.i.i.i = add i8 %85, -1 store i8 %dec.i24.i.i.i, ptr %freereg.i23.i.i.i, align 4 br label %codeeq.exit @@ -3559,42 +3561,42 @@ sw.bb30: ; preds = %if.end, %if.end sw.bb32: ; preds = %sw.bb30, %if.end, %if.end %opr.addr.0 = phi i32 [ %opr, %if.end ], [ %opr, %if.end ], [ %add31, %sw.bb30 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %i.i.i191) - %84 = load i32, ptr %e2, align 8 - switch i32 %84, label %if.else.i200 [ + %86 = load i32, ptr %e2, align 8 + switch i32 %86, label %if.else.i200 [ i32 6, label %if.then.i.i247 i32 5, label %land.lhs.true.i.i192 ] if.then.i.i247: ; preds = %sw.bb32 %u.i.i248 = getelementptr inbounds i8, ptr %e2, i64 8 - %85 = load i64, ptr %u.i.i248, align 8 - store i64 %85, ptr %i.i.i191, align 8 + %87 = load i64, ptr %u.i.i248, align 8 + store i64 %87, ptr %i.i.i191, align 8 br label %if.end6.i.i196 land.lhs.true.i.i192: ; preds = %sw.bb32 %u3.i.i193 = getelementptr inbounds i8, ptr %e2, i64 8 - %86 = load double, ptr %u3.i.i193, align 8 - %call.i.i194 = call i32 @luaV_flttointeger(double noundef %86, ptr noundef nonnull %i.i.i191, i32 noundef 0) #13 + %88 = load double, ptr %u3.i.i193, align 8 + %call.i.i194 = call i32 @luaV_flttointeger(double noundef %88, ptr noundef nonnull %i.i.i191, i32 noundef 0) #13 %tobool.not.i.i195 = icmp eq i32 %call.i.i194, 0 br i1 %tobool.not.i.i195, label %if.else.i200, label %if.end6.i.i196 if.end6.i.i196: ; preds = %land.lhs.true.i.i192, %if.then.i.i247 %isfloat.1.i = phi i32 [ 0, %if.then.i.i247 ], [ 1, %land.lhs.true.i.i192 ] %t.i.i197 = getelementptr inbounds i8, ptr %e2, i64 16 - %87 = load i32, ptr %t.i.i197, align 8 + %89 = load i32, ptr %t.i.i197, align 8 %f.i.i198 = getelementptr inbounds i8, ptr %e2, i64 20 - %88 = load i32, ptr %f.i.i198, align 4 - %cmp7.not.i.i199 = icmp eq i32 %87, %88 + %90 = load i32, ptr %f.i.i198, align 4 + %cmp7.not.i.i199 = icmp eq i32 %89, %90 br i1 %cmp7.not.i.i199, label %land.lhs.true8.i.i242, label %if.else.i200 land.lhs.true8.i.i242: ; preds = %if.end6.i.i196 - %89 = load i64, ptr %i.i.i191, align 8 - %90 = add i64 %89, -129 - %cmp.i.i.i243 = icmp ult i64 %90, -256 + %91 = load i64, ptr %i.i.i191, align 8 + %92 = add i64 %91, -129 + %cmp.i.i.i243 = icmp ult i64 %92, -256 br i1 %cmp.i.i.i243, label %if.else.i200, label %if.then.i244 if.then.i244: ; preds = %land.lhs.true8.i.i242 - %conv.i.i245 = trunc i64 %89 to i32 + %conv.i.i245 = trunc i64 %91 to i32 %add.i.i246 = add nsw i32 %conv.i.i245, 127 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %i.i.i191) %call1.i = call i32 @luaK_exp2anyreg(ptr noundef %fs, ptr noundef %e1) @@ -3604,42 +3606,42 @@ if.else.i200: ; preds = %land.lhs.true8.i.i2 %isfloat.2.ph.i = phi i32 [ %isfloat.1.i, %if.end6.i.i196 ], [ %isfloat.1.i, %land.lhs.true8.i.i242 ], [ 0, %land.lhs.true.i.i192 ], [ 0, %sw.bb32 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %i.i.i191) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %i.i17.i) - %91 = load i32, ptr %e1, align 8 - switch i32 %91, label %if.else8.i [ + %93 = load i32, ptr %e1, align 8 + switch i32 %93, label %if.else8.i [ i32 6, label %if.then.i33.i i32 5, label %land.lhs.true.i18.i ] if.then.i33.i: ; preds = %if.else.i200 %u.i34.i = getelementptr inbounds i8, ptr %e1, i64 8 - %92 = load i64, ptr %u.i34.i, align 8 - store i64 %92, ptr %i.i17.i, align 8 + %94 = load i64, ptr %u.i34.i, align 8 + store i64 %94, ptr %i.i17.i, align 8 br label %if.end6.i23.i land.lhs.true.i18.i: ; preds = %if.else.i200 %u3.i19.i = getelementptr inbounds i8, ptr %e1, i64 8 - %93 = load double, ptr %u3.i19.i, align 8 - %call.i20.i = call i32 @luaV_flttointeger(double noundef %93, ptr noundef nonnull %i.i17.i, i32 noundef 0) #13 + %95 = load double, ptr %u3.i19.i, align 8 + %call.i20.i = call i32 @luaV_flttointeger(double noundef %95, ptr noundef nonnull %i.i17.i, i32 noundef 0) #13 %tobool.not.i21.i = icmp eq i32 %call.i20.i, 0 br i1 %tobool.not.i21.i, label %if.else8.i, label %if.end6.i23.i if.end6.i23.i: ; preds = %land.lhs.true.i18.i, %if.then.i33.i %isfloat.3.i = phi i32 [ %isfloat.2.ph.i, %if.then.i33.i ], [ 1, %land.lhs.true.i18.i ] %t.i24.i = getelementptr inbounds i8, ptr %e1, i64 16 - %94 = load i32, ptr %t.i24.i, align 8 + %96 = load i32, ptr %t.i24.i, align 8 %f.i25.i = getelementptr inbounds i8, ptr %e1, i64 20 - %95 = load i32, ptr %f.i25.i, align 4 - %cmp7.not.i26.i = icmp eq i32 %94, %95 + %97 = load i32, ptr %f.i25.i, align 4 + %cmp7.not.i26.i = icmp eq i32 %96, %97 br i1 %cmp7.not.i26.i, label %land.lhs.true8.i28.i, label %if.else8.i land.lhs.true8.i28.i: ; preds = %if.end6.i23.i - %96 = load i64, ptr %i.i17.i, align 8 - %97 = add i64 %96, -129 - %cmp.i.i29.i = icmp ult i64 %97, -256 + %98 = load i64, ptr %i.i17.i, align 8 + %99 = add i64 %98, -129 + %cmp.i.i29.i = icmp ult i64 %99, -256 br i1 %cmp.i.i29.i, label %if.else8.i, label %if.then5.i241 if.then5.i241: ; preds = %land.lhs.true8.i28.i - %conv.i31.i = trunc i64 %96 to i32 + %conv.i31.i = trunc i64 %98 to i32 %add.i32.i = add nsw i32 %conv.i31.i, 127 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %i.i17.i) %call6.i = call i32 @luaK_exp2anyreg(ptr noundef %fs, ptr noundef nonnull %e2) @@ -3657,28 +3659,28 @@ if.end12.i: ; preds = %if.else8.i, %if.the %isfloat.0.i201 = phi i32 [ %isfloat.3.i, %if.then5.i241 ], [ %isfloat.4.ph.i, %if.else8.i ], [ %isfloat.1.i, %if.then.i244 ] %r1.0.i = phi i32 [ %call6.i, %if.then5.i241 ], [ %call9.i, %if.else8.i ], [ %call1.i, %if.then.i244 ] %r2.0.i202 = phi i32 [ %add.i32.i, %if.then5.i241 ], [ %call10.i, %if.else8.i ], [ %add.i.i246, %if.then.i244 ] - %98 = load i32, ptr %e1, align 8 - %cmp.i.i203 = icmp eq i32 %98, 8 + %100 = load i32, ptr %e1, align 8 + %cmp.i.i203 = icmp eq i32 %100, 8 br i1 %cmp.i.i203, label %cond.true.i.i240, label %cond.end.i.i204 cond.true.i.i240: ; preds = %if.end12.i %u.i41.i = getelementptr inbounds i8, ptr %e1, i64 8 - %99 = load i32, ptr %u.i41.i, align 8 + %101 = load i32, ptr %u.i41.i, align 8 br label %cond.end.i.i204 cond.end.i.i204: ; preds = %cond.true.i.i240, %if.end12.i - %cond.i.i205 = phi i32 [ %99, %cond.true.i.i240 ], [ -1, %if.end12.i ] - %100 = load i32, ptr %e2, align 8 - %cmp2.i.i206 = icmp eq i32 %100, 8 + %cond.i.i205 = phi i32 [ %101, %cond.true.i.i240 ], [ -1, %if.end12.i ] + %102 = load i32, ptr %e2, align 8 + %cmp2.i.i206 = icmp eq i32 %102, 8 br i1 %cmp2.i.i206, label %cond.true3.i.i238, label %cond.end6.i.i207 cond.true3.i.i238: ; preds = %cond.end.i.i204 %u4.i.i239 = getelementptr inbounds i8, ptr %e2, i64 8 - %101 = load i32, ptr %u4.i.i239, align 8 + %103 = load i32, ptr %u4.i.i239, align 8 br label %cond.end6.i.i207 cond.end6.i.i207: ; preds = %cond.true3.i.i238, %cond.end.i.i204 - %cond7.i.i208 = phi i32 [ %101, %cond.true3.i.i238 ], [ -1, %cond.end.i.i204 ] + %cond7.i.i208 = phi i32 [ %103, %cond.true3.i.i238 ], [ -1, %cond.end.i.i204 ] %cmp.i.i40.i = icmp sgt i32 %cond.i.i205, %cond7.i.i208 %call.i.i.i.i209 = call i32 @luaY_nvarstack(ptr noundef %fs) #13 br i1 %cmp.i.i40.i, label %if.then.i.i.i230, label %if.else.i.i.i210 @@ -3689,8 +3691,8 @@ if.then.i.i.i230: ; preds = %cond.end6.i.i207 if.then.i.i.i.i232: ; preds = %if.then.i.i.i230 %freereg.i.i.i.i233 = getelementptr inbounds i8, ptr %fs, i64 68 - %102 = load i8, ptr %freereg.i.i.i.i233, align 4 - %dec.i.i.i.i234 = add i8 %102, -1 + %104 = load i8, ptr %freereg.i.i.i.i233, align 4 + %dec.i.i.i.i234 = add i8 %104, -1 store i8 %dec.i.i.i.i234, ptr %freereg.i.i.i.i233, align 4 br label %freereg.exit.i.i.i235 @@ -3705,8 +3707,8 @@ if.else.i.i.i210: ; preds = %cond.end6.i.i207 if.then.i16.i.i.i212: ; preds = %if.else.i.i.i210 %freereg.i17.i.i.i213 = getelementptr inbounds i8, ptr %fs, i64 68 - %103 = load i8, ptr %freereg.i17.i.i.i213, align 4 - %dec.i18.i.i.i214 = add i8 %103, -1 + %105 = load i8, ptr %freereg.i17.i.i.i213, align 4 + %dec.i18.i.i.i214 = add i8 %105, -1 store i8 %dec.i18.i.i.i214, ptr %freereg.i17.i.i.i213, align 4 br label %freereg.exit19.i.i.i215 @@ -3717,8 +3719,8 @@ freereg.exit19.i.i.i215: ; preds = %if.then.i16.i.i.i21 if.end.sink.split.i.i.i218: ; preds = %freereg.exit19.i.i.i215, %freereg.exit.i.i.i235 %freereg.i23.i.i.i219 = getelementptr inbounds i8, ptr %fs, i64 68 - %104 = load i8, ptr %freereg.i23.i.i.i219, align 4 - %dec.i24.i.i.i220 = add i8 %104, -1 + %106 = load i8, ptr %freereg.i23.i.i.i219, align 4 + %dec.i24.i.i.i220 = add i8 %106, -1 store i8 %dec.i24.i.i.i220, ptr %freereg.i23.i.i.i219, align 4 br label %codeorder.exit @@ -3760,26 +3762,28 @@ isKint.exit: ; preds = %entry if.else: ; preds = %isKint.exit %u = getelementptr inbounds i8, ptr %e2, i64 8 %3 = load i64, ptr %u, align 8 - %4 = add i64 %3, -128 - %or.cond = icmp ult i64 %4, -255 - br i1 %or.cond, label %return, label %if.else6 + %4 = sub i64 128, %3 + %5 = sub i64 127, %3 + %6 = or i64 %4, %5 + %or.cond.not = icmp ult i64 %6, 256 + br i1 %or.cond.not, label %if.else6, label %return if.else6: ; preds = %if.else %conv = trunc i64 %3 to i32 - %add = sub nsw i32 127, %conv + %add = sub i32 127, %conv tail call fastcc void @finishbinexpval(ptr noundef %fs, ptr noundef %e1, ptr noundef nonnull %e2, i32 noundef %op, i32 noundef %add, i32 noundef 0, i32 noundef %line, i32 noundef 47, i32 noundef %event) - %5 = load ptr, ptr %fs, align 8 - %code = getelementptr inbounds i8, ptr %5, i64 64 - %6 = load ptr, ptr %code, align 8 + %7 = load ptr, ptr %fs, align 8 + %code = getelementptr inbounds i8, ptr %7, i64 64 + %8 = load ptr, ptr %code, align 8 %pc = getelementptr inbounds i8, ptr %fs, i64 32 - %7 = load i32, ptr %pc, align 8 - %8 = sext i32 %7 to i64 - %9 = getelementptr i32, ptr %6, i64 %8 - %arrayidx = getelementptr i8, ptr %9, i64 -4 - %10 = load i32, ptr %arrayidx, align 4 - %and = and i32 %10, -16711681 - %add9 = shl nsw i32 %conv, 16 - %shl = add nsw i32 %add9, 8323072 + %9 = load i32, ptr %pc, align 8 + %10 = sext i32 %9 to i64 + %11 = getelementptr i32, ptr %8, i64 %10 + %arrayidx = getelementptr i8, ptr %11, i64 -4 + %12 = load i32, ptr %arrayidx, align 4 + %and = and i32 %12, -16711681 + %add9 = shl i32 %conv, 16 + %shl = add i32 %add9, 8323072 %and10 = and i32 %shl, 16711680 %or = or disjoint i32 %and, %and10 store i32 %or, ptr %arrayidx, align 4 diff --git a/bench/meshlab/optimized/plylib.cpp.ll b/bench/meshlab/optimized/plylib.cpp.ll index e6ae2c1cee7..7917701cd52 100644 --- a/bench/meshlab/optimized/plylib.cpp.ll +++ b/bench/meshlab/optimized/plylib.cpp.ll @@ -536,24 +536,22 @@ define noundef range(i32 0, 13) i32 @_ZN3vcg3ply10PlyElement9AddToReadEPKciimiii br i1 %.not.i, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %.lr.ph.i, !llvm.loop !19 _ZN3vcg3ply10PlyElement8FindPropEPKc.exit: ; preds = %.lr.ph.i - %20 = add i32 %2, -9 - %or.cond = icmp ult i32 %20, -8 - %21 = add i32 %3, -9 - %22 = icmp ult i32 %21, -8 - %or.cond5 = or i1 %or.cond, %22 - br i1 %or.cond5, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %23 + %20 = sub i32 8, %2 + %21 = sub i32 8, %3 + %22 = or i32 %21, %20 + %or.cond5.not = icmp ult i32 %22, 8 + br i1 %or.cond5.not, label %23, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread 23: ; preds = %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit %24 = icmp ne i32 %5, 0 br i1 %24, label %25, label %29 25: ; preds = %23 - %26 = add i32 %7, -9 - %or.cond7 = icmp ult i32 %26, -8 - %27 = add i32 %8, -9 - %28 = icmp ult i32 %27, -8 - %or.cond11 = or i1 %or.cond7, %28 - br i1 %or.cond11, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %29 + %26 = sub i32 8, %7 + %27 = sub i32 8, %8 + %28 = or i32 %27, %26 + %or.cond11.not = icmp ult i32 %28, 8 + br i1 %or.cond11.not, label %29, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread 29: ; preds = %25, %23 %30 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 36 @@ -577,52 +575,54 @@ _ZN3vcg3ply10PlyElement8FindPropEPKc.exit: ; preds = %.lr.ph.i br i1 %.not56, label %39, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread 39: ; preds = %36 - %40 = zext nneg i32 %2 to i64 - %41 = getelementptr inbounds [9 x [9 x i8]], ptr @_ZN3vcg3plyL9CrossTypeE, i64 0, i64 %40, i64 %40 - %42 = load i8, ptr %41, align 1 - %.not57 = icmp eq i8 %42, 0 - br i1 %.not57, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %46 + %40 = sext i32 %2 to i64 + %41 = zext nneg i32 %2 to i64 + %42 = getelementptr inbounds [9 x [9 x i8]], ptr @_ZN3vcg3plyL9CrossTypeE, i64 0, i64 %40, i64 %41 + %43 = load i8, ptr %42, align 1 + %.not57 = icmp eq i8 %43, 0 + br i1 %.not57, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %48 .thread: ; preds = %35 - %43 = zext nneg i32 %2 to i64 - %44 = getelementptr inbounds [9 x [9 x i8]], ptr @_ZN3vcg3plyL9CrossTypeE, i64 0, i64 %43, i64 %43 - %45 = load i8, ptr %44, align 1 - %.not5760 = icmp eq i8 %45, 0 + %44 = sext i32 %2 to i64 + %45 = zext nneg i32 %2 to i64 + %46 = getelementptr inbounds [9 x [9 x i8]], ptr @_ZN3vcg3plyL9CrossTypeE, i64 0, i64 %44, i64 %45 + %47 = load i8, ptr %46, align 1 + %.not5760 = icmp eq i8 %47, 0 br i1 %.not5760, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %.thread61 -46: ; preds = %39 - %47 = sext i32 %7 to i64 - %48 = getelementptr inbounds [9 x [9 x i8]], ptr @_ZN3vcg3plyL9CrossTypeE, i64 0, i64 %47, i64 %47 - %49 = load i8, ptr %48, align 1 - %.not58 = icmp eq i8 %49, 0 +48: ; preds = %39 + %49 = sext i32 %7 to i64 + %50 = getelementptr inbounds [9 x [9 x i8]], ptr @_ZN3vcg3plyL9CrossTypeE, i64 0, i64 %49, i64 %49 + %51 = load i8, ptr %50, align 1 + %.not58 = icmp eq i8 %51, 0 br i1 %.not58, label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread, label %.thread61 -.thread61: ; preds = %.thread, %46 - %50 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 44 - store i32 1, ptr %50, align 4 - %51 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 112 - store i32 %2, ptr %51, align 8 - %52 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 116 - store i32 %3, ptr %52, align 4 - %53 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 120 - store i64 %4, ptr %53, align 8 - %54 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 128 - %55 = zext i1 %24 to i8 - store i8 %55, ptr %54, align 8 - %56 = icmp ne i32 %6, 0 - %57 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 129 - %58 = zext i1 %56 to i8 - store i8 %58, ptr %57, align 1 - %59 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 132 - store i32 %7, ptr %59, align 4 - %60 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 136 - store i32 %8, ptr %60, align 8 - %61 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 144 - store i64 %9, ptr %61, align 8 +.thread61: ; preds = %.thread, %48 + %52 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 44 + store i32 1, ptr %52, align 4 + %53 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 112 + store i32 %2, ptr %53, align 8 + %54 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 116 + store i32 %3, ptr %54, align 4 + %55 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 120 + store i64 %4, ptr %55, align 8 + %56 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 128 + %57 = zext i1 %24 to i8 + store i8 %57, ptr %56, align 8 + %58 = icmp ne i32 %6, 0 + %59 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 129 + %60 = zext i1 %58 to i8 + store i8 %60, ptr %59, align 1 + %61 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 132 + store i32 %7, ptr %61, align 4 + %62 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 136 + store i32 %8, ptr %62, align 8 + %63 = getelementptr inbounds i8, ptr %.sroa.03.08.i, i64 144 + store i64 %9, ptr %63, align 8 br label %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread -_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread: ; preds = %17, %10, %.thread, %39, %46, %29, %32, %36, %25, %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit, %.thread61 - %.0 = phi i32 [ 0, %.thread61 ], [ 10, %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit ], [ 10, %25 ], [ 11, %36 ], [ 11, %32 ], [ 11, %29 ], [ 12, %46 ], [ 12, %39 ], [ 12, %.thread ], [ 9, %10 ], [ 9, %17 ] +_ZN3vcg3ply10PlyElement8FindPropEPKc.exit.thread: ; preds = %17, %10, %.thread, %39, %48, %29, %32, %36, %25, %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit, %.thread61 + %.0 = phi i32 [ 0, %.thread61 ], [ 10, %_ZN3vcg3ply10PlyElement8FindPropEPKc.exit ], [ 10, %25 ], [ 11, %36 ], [ 11, %32 ], [ 11, %29 ], [ 12, %48 ], [ 12, %39 ], [ 12, %.thread ], [ 9, %10 ], [ 9, %17 ] ret i32 %.0 } diff --git a/bench/openjdk/optimized/awt_ImagingLib.ll b/bench/openjdk/optimized/awt_ImagingLib.ll index 9186d78143e..07a7d92bec6 100644 --- a/bench/openjdk/optimized/awt_ImagingLib.ll +++ b/bench/openjdk/optimized/awt_ImagingLib.ll @@ -6077,11 +6077,11 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n %15 = load ptr, ptr %14, align 8 %16 = tail call i32 %15(ptr noundef nonnull %0, i32 noundef 64) #14 %17 = icmp slt i32 %16, 0 - br i1 %17, label %186, label %18 + br i1 %17, label %184, label %18 18: ; preds = %5 %.b = load i1, ptr @s_nomlib, align 4 - br i1 %.b, label %186, label %19 + br i1 %.b, label %184, label %19 19: ; preds = %18 %.b152 = load i1, ptr @s_timeIt, align 4 @@ -6099,7 +6099,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n 25: ; preds = %22 tail call void @JNU_ThrowOutOfMemoryError(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #14 - br label %186 + br label %184 26: ; preds = %22 %27 = tail call noalias dereferenceable_or_null(496) ptr @calloc(i64 noundef 1, i64 noundef 496) #15 @@ -6109,7 +6109,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n 29: ; preds = %26 tail call void @JNU_ThrowOutOfMemoryError(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #14 tail call void @free(ptr noundef nonnull %23) #14 - br label %186 + br label %184 30: ; preds = %26 %31 = tail call i32 @awt_parseRaster(ptr noundef nonnull %0, ptr noundef %2, ptr noundef nonnull %23) #14 @@ -6119,7 +6119,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n 33: ; preds = %30 tail call void @free(ptr noundef nonnull %23) #14 tail call void @free(ptr noundef nonnull %27) #14 - br label %186 + br label %184 34: ; preds = %30 %35 = tail call i32 @awt_parseRaster(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %27) #14 @@ -6129,7 +6129,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n 37: ; preds = %34 tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @free(ptr noundef nonnull %27) #14 - br label %186 + br label %184 38: ; preds = %34 %39 = load ptr, ptr %0, align 8 @@ -6143,8 +6143,8 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n %spec.select = tail call i32 @llvm.smin.i32(i32 %42, i32 %44) %47 = add i32 %44, -1 %or.cond = icmp ult i32 %47, 4 - %48 = add i32 %46, -1 - %49 = add i32 %spec.select, -1 + %48 = sub i32 4, %46 + %49 = sub i32 4, %spec.select %50 = or i32 %48, %49 %51 = icmp ult i32 %50, 4 %or.cond9.not162 = select i1 %or.cond, i1 %51, i1 false @@ -6161,7 +6161,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n 53: ; preds = %52, %38 tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 - br label %186 + br label %184 54: ; preds = %52 %55 = call fastcc i32 @allocateRasterArray(ptr noundef nonnull %0, ptr noundef %23, ptr noundef %6, ptr noundef %8, i32 noundef 1) @@ -6171,7 +6171,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n 57: ; preds = %54 tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 - br label %186 + br label %184 58: ; preds = %54 %59 = call fastcc i32 @allocateRasterArray(ptr noundef nonnull %0, ptr noundef %27, ptr noundef %7, ptr noundef %9, i32 noundef 0) @@ -6205,7 +6205,7 @@ define i32 @Java_sun_awt_image_ImagingLib_lookupByteRaster(ptr noundef %0, ptr n freeDataArray.exit: ; preds = %68, %69 tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 - br label %186 + br label %184 73: ; preds = %58 %74 = load ptr, ptr %6, align 8 @@ -6227,46 +6227,46 @@ freeDataArray.exit: ; preds = %68, %69 tail call fastcc void @freeDataArray(ptr noundef nonnull %0, ptr noundef %82, ptr noundef nonnull %74, ptr noundef %83, ptr noundef %85, ptr noundef nonnull %77, ptr noundef %86) tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 - br label %186 + br label %184 87: ; preds = %73 %88 = icmp slt i32 %44, %76 - br i1 %88, label %.preheader168, label %.loopexit + br i1 %88, label %.preheader166, label %.loopexit -.preheader168: ; preds = %87, %.preheader168 - %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader168 ], [ 0, %87 ] +.preheader166: ; preds = %87, %.preheader166 + %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader166 ], [ 0, %87 ] %89 = trunc i64 %indvars.iv to i8 %90 = getelementptr inbounds [256 x i8], ptr %12, i64 0, i64 %indvars.iv store i8 %89, ptr %90, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 256 - br i1 %exitcond.not, label %.loopexit, label %.preheader168, !llvm.loop !95 + br i1 %exitcond.not, label %.loopexit, label %.preheader166, !llvm.loop !95 -.loopexit: ; preds = %.preheader168, %87 +.loopexit: ; preds = %.preheader166, %87 %91 = icmp sgt i32 %spec.select, 0 - br i1 %91, label %.lr.ph.preheader, label %.preheader166 + br i1 %91, label %.lr.ph.preheader, label %.preheader164 .lr.ph.preheader: ; preds = %.loopexit %wide.trip.count = zext nneg i32 %spec.select to i64 br label %.lr.ph 92: ; preds = %100 - %indvars.iv.next193 = add nuw nsw i64 %indvars.iv192, 1 - %exitcond195.not = icmp eq i64 %indvars.iv.next193, %wide.trip.count - br i1 %exitcond195.not, label %.lr.ph174.preheader, label %.lr.ph, !llvm.loop !96 + %indvars.iv.next191 = add nuw nsw i64 %indvars.iv190, 1 + %exitcond193.not = icmp eq i64 %indvars.iv.next191, %wide.trip.count + br i1 %exitcond193.not, label %.lr.ph172.preheader, label %.lr.ph, !llvm.loop !96 -.lr.ph174.preheader: ; preds = %92 - %wide.trip.count199 = zext nneg i32 %spec.select to i64 - br label %.lr.ph174 +.lr.ph172.preheader: ; preds = %92 + %wide.trip.count197 = zext nneg i32 %spec.select to i64 + br label %.lr.ph172 .lr.ph: ; preds = %.lr.ph.preheader, %92 - %indvars.iv192 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next193, %92 ] + %indvars.iv190 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next191, %92 ] %93 = load ptr, ptr %0, align 8 %94 = getelementptr inbounds i8, ptr %93, i64 1384 %95 = load ptr, ptr %94, align 8 - %96 = trunc nuw nsw i64 %indvars.iv192 to i32 + %96 = trunc nuw nsw i64 %indvars.iv190 to i32 %97 = tail call ptr %95(ptr noundef nonnull %0, ptr noundef %4, i32 noundef %96) #14 - %98 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv192 + %98 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv190 store ptr %97, ptr %98, align 8 %99 = getelementptr inbounds i8, ptr %98, i64 16 store ptr null, ptr %99, align 8 @@ -6297,25 +6297,25 @@ freeDataArray.exit: ; preds = %68, %69 tail call fastcc void @freeDataArray(ptr noundef nonnull %0, ptr noundef %109, ptr noundef %74, ptr noundef %110, ptr noundef %112, ptr noundef %77, ptr noundef %113) tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 - br label %186 + br label %184 -.preheader166: ; preds = %139, %.loopexit +.preheader164: ; preds = %139, %.loopexit %114 = icmp slt i32 %42, %44 - br i1 %114, label %.lr.ph176, label %.preheader165 + br i1 %114, label %.lr.ph174, label %.preheader163 -.lr.ph176: ; preds = %.preheader166 +.lr.ph174: ; preds = %.preheader164 %115 = getelementptr inbounds i8, ptr %10, i64 16 %116 = load ptr, ptr %115, align 16 - %117 = zext i32 %spec.select to i64 + %117 = sext i32 %42 to i64 br label %144 -.lr.ph174: ; preds = %.lr.ph174.preheader, %139 - %indvars.iv215 = phi i32 [ 0, %.lr.ph174.preheader ], [ %indvars.iv.next216, %139 ] - %indvars.iv196 = phi i64 [ 0, %.lr.ph174.preheader ], [ %indvars.iv.next197, %139 ] +.lr.ph172: ; preds = %.lr.ph172.preheader, %139 + %indvars.iv213 = phi i32 [ 0, %.lr.ph172.preheader ], [ %indvars.iv.next214, %139 ] + %indvars.iv194 = phi i64 [ 0, %.lr.ph172.preheader ], [ %indvars.iv.next195, %139 ] %118 = load ptr, ptr %0, align 8 %119 = getelementptr inbounds i8, ptr %118, i64 1776 %120 = load ptr, ptr %119, align 8 - %121 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv196 + %121 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv194 %122 = load ptr, ptr %121, align 8 %123 = tail call ptr %120(ptr noundef nonnull %0, ptr noundef %122, ptr noundef null) #14 %124 = getelementptr inbounds i8, ptr %121, i64 16 @@ -6323,29 +6323,29 @@ freeDataArray.exit: ; preds = %68, %69 %125 = icmp eq ptr %123, null br i1 %125, label %.preheader, label %139 -.preheader: ; preds = %.lr.ph174 - %.not186 = icmp eq i64 %indvars.iv196, 0 - br i1 %.not186, label %._crit_edge185, label %.lr.ph184.preheader +.preheader: ; preds = %.lr.ph172 + %.not184 = icmp eq i64 %indvars.iv194, 0 + br i1 %.not184, label %._crit_edge183, label %.lr.ph182.preheader -.lr.ph184.preheader: ; preds = %.preheader - %wide.trip.count218 = zext nneg i32 %indvars.iv215 to i64 - br label %.lr.ph184 +.lr.ph182.preheader: ; preds = %.preheader + %wide.trip.count216 = zext nneg i32 %indvars.iv213 to i64 + br label %.lr.ph182 -.lr.ph184: ; preds = %.lr.ph184.preheader, %.lr.ph184 - %indvars.iv212 = phi i64 [ 0, %.lr.ph184.preheader ], [ %indvars.iv.next213, %.lr.ph184 ] +.lr.ph182: ; preds = %.lr.ph182.preheader, %.lr.ph182 + %indvars.iv210 = phi i64 [ 0, %.lr.ph182.preheader ], [ %indvars.iv.next211, %.lr.ph182 ] %126 = load ptr, ptr %0, align 8 %127 = getelementptr inbounds i8, ptr %126, i64 1784 %128 = load ptr, ptr %127, align 8 - %129 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv212 + %129 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv210 %130 = load ptr, ptr %129, align 8 %131 = getelementptr inbounds i8, ptr %129, i64 16 %132 = load ptr, ptr %131, align 8 tail call void %128(ptr noundef nonnull %0, ptr noundef %130, ptr noundef %132, i32 noundef 2) #14 - %indvars.iv.next213 = add nuw nsw i64 %indvars.iv212, 1 - %exitcond219.not = icmp eq i64 %indvars.iv.next213, %wide.trip.count218 - br i1 %exitcond219.not, label %._crit_edge185, label %.lr.ph184, !llvm.loop !97 + %indvars.iv.next211 = add nuw nsw i64 %indvars.iv210, 1 + %exitcond217.not = icmp eq i64 %indvars.iv.next211, %wide.trip.count216 + br i1 %exitcond217.not, label %._crit_edge183, label %.lr.ph182, !llvm.loop !97 -._crit_edge185: ; preds = %.lr.ph184, %.preheader +._crit_edge183: ; preds = %.lr.ph182, %.preheader %133 = getelementptr inbounds i8, ptr %23, i64 8 %134 = load ptr, ptr %133, align 8 %135 = load ptr, ptr %8, align 8 @@ -6355,127 +6355,127 @@ freeDataArray.exit: ; preds = %68, %69 tail call fastcc void @freeDataArray(ptr noundef nonnull %0, ptr noundef %134, ptr noundef %74, ptr noundef %135, ptr noundef %137, ptr noundef %77, ptr noundef %138) tail call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 tail call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 - br label %186 + br label %184 -139: ; preds = %.lr.ph174 - %140 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %indvars.iv196 +139: ; preds = %.lr.ph172 + %140 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %indvars.iv194 store ptr %123, ptr %140, align 8 - %indvars.iv.next197 = add nuw nsw i64 %indvars.iv196, 1 - %exitcond200.not = icmp eq i64 %indvars.iv.next197, %wide.trip.count199 - %indvars.iv.next216 = add nuw nsw i32 %indvars.iv215, 1 - br i1 %exitcond200.not, label %.preheader166, label %.lr.ph174, !llvm.loop !98 + %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1 + %exitcond198.not = icmp eq i64 %indvars.iv.next195, %wide.trip.count197 + %indvars.iv.next214 = add nuw nsw i32 %indvars.iv213, 1 + br i1 %exitcond198.not, label %.preheader164, label %.lr.ph172, !llvm.loop !98 -.preheader165: ; preds = %144, %.preheader166 - %.3.lcssa = phi i32 [ %spec.select, %.preheader166 ], [ %146, %144 ] +.preheader163: ; preds = %144, %.preheader164 + %.3.lcssa = phi i32 [ %spec.select, %.preheader164 ], [ %44, %144 ] %141 = load i32, ptr %75, align 4 %142 = icmp slt i32 %.3.lcssa, %141 - br i1 %142, label %.lr.ph178.preheader, label %._crit_edge + br i1 %142, label %.lr.ph176.preheader, label %._crit_edge -.lr.ph178.preheader: ; preds = %.preheader165 +.lr.ph176.preheader: ; preds = %.preheader163 %143 = zext i32 %.3.lcssa to i64 - br label %.lr.ph178 + br label %.lr.ph176 -144: ; preds = %.lr.ph176, %144 - %indvars.iv201 = phi i64 [ %117, %.lr.ph176 ], [ %indvars.iv.next202, %144 ] - %145 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %indvars.iv201 +144: ; preds = %.lr.ph174, %144 + %indvars.iv199 = phi i64 [ %117, %.lr.ph174 ], [ %indvars.iv.next200, %144 ] + %145 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %indvars.iv199 store ptr %116, ptr %145, align 8 - %indvars.iv.next202 = add nuw nsw i64 %indvars.iv201, 1 - %146 = trunc nuw i64 %indvars.iv.next202 to i32 - %147 = icmp sgt i32 %44, %146 - br i1 %147, label %144, label %.preheader165, !llvm.loop !99 - -.lr.ph178: ; preds = %.lr.ph178.preheader, %.lr.ph178 - %indvars.iv204 = phi i64 [ %143, %.lr.ph178.preheader ], [ %indvars.iv.next205, %.lr.ph178 ] - %148 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %indvars.iv204 - store ptr %12, ptr %148, align 8 - %indvars.iv.next205 = add nuw nsw i64 %indvars.iv204, 1 - %149 = trunc nuw i64 %indvars.iv.next205 to i32 - %150 = icmp sgt i32 %141, %149 - br i1 %150, label %.lr.ph178, label %._crit_edge, !llvm.loop !100 - -._crit_edge: ; preds = %.lr.ph178, %.preheader165 - %151 = load i32, ptr %74, align 8 - %152 = icmp eq i32 %151, 2 - br i1 %152, label %153, label %160 - -153: ; preds = %._crit_edge - %154 = load i32, ptr %77, align 8 - %155 = icmp eq i32 %154, 1 - br i1 %155, label %156, label %163 - -156: ; preds = %153 - %157 = icmp sgt i32 %spec.select, 1 - br i1 %157, label %.lr.ph181.preheader, label %158 - -158: ; preds = %156 - %159 = call fastcc i32 @lookupShortData(ptr noundef nonnull %74, ptr noundef nonnull %77, ptr noundef %10) - br label %163 - -160: ; preds = %._crit_edge - %161 = load ptr, ptr getelementptr inbounds (i8, ptr @sMlibFns, i64 32), align 16 - %162 = call i32 (ptr, ptr, ptr, ...) %161(ptr noundef %77, ptr noundef nonnull %74, ptr noundef nonnull %11) #14 - %.not156 = icmp eq i32 %162, 0 + %indvars.iv.next200 = add nsw i64 %indvars.iv199, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next200 to i32 + %exitcond201.not = icmp eq i32 %44, %lftr.wideiv + br i1 %exitcond201.not, label %.preheader163, label %144, !llvm.loop !99 + +.lr.ph176: ; preds = %.lr.ph176.preheader, %.lr.ph176 + %indvars.iv202 = phi i64 [ %143, %.lr.ph176.preheader ], [ %indvars.iv.next203, %.lr.ph176 ] + %146 = getelementptr inbounds [4 x ptr], ptr %11, i64 0, i64 %indvars.iv202 + store ptr %12, ptr %146, align 8 + %indvars.iv.next203 = add nuw nsw i64 %indvars.iv202, 1 + %147 = trunc nuw i64 %indvars.iv.next203 to i32 + %148 = icmp sgt i32 %141, %147 + br i1 %148, label %.lr.ph176, label %._crit_edge, !llvm.loop !100 + +._crit_edge: ; preds = %.lr.ph176, %.preheader163 + %149 = load i32, ptr %74, align 8 + %150 = icmp eq i32 %149, 2 + br i1 %150, label %151, label %158 + +151: ; preds = %._crit_edge + %152 = load i32, ptr %77, align 8 + %153 = icmp eq i32 %152, 1 + br i1 %153, label %154, label %161 + +154: ; preds = %151 + %155 = icmp sgt i32 %spec.select, 1 + br i1 %155, label %.lr.ph179.preheader, label %156 + +156: ; preds = %154 + %157 = call fastcc i32 @lookupShortData(ptr noundef nonnull %74, ptr noundef nonnull %77, ptr noundef %10) + br label %161 + +158: ; preds = %._crit_edge + %159 = load ptr, ptr getelementptr inbounds (i8, ptr @sMlibFns, i64 32), align 16 + %160 = call i32 (ptr, ptr, ptr, ...) %159(ptr noundef %77, ptr noundef nonnull %74, ptr noundef nonnull %11) #14 + %.not156 = icmp eq i32 %160, 0 %spec.select160 = zext i1 %.not156 to i32 - br label %163 + br label %161 + +161: ; preds = %158, %151, %156 + %.0140 = phi i32 [ %157, %156 ], [ 1, %151 ], [ %spec.select160, %158 ] + br i1 %91, label %.lr.ph179.preheader, label %._crit_edge180 + +.lr.ph179.preheader: ; preds = %154, %161 + %.0140221 = phi i32 [ %.0140, %161 ], [ 0, %154 ] + %wide.trip.count208 = zext nneg i32 %spec.select to i64 + br label %.lr.ph179 + +.lr.ph179: ; preds = %.lr.ph179.preheader, %.lr.ph179 + %indvars.iv205 = phi i64 [ 0, %.lr.ph179.preheader ], [ %indvars.iv.next206, %.lr.ph179 ] + %162 = load ptr, ptr %0, align 8 + %163 = getelementptr inbounds i8, ptr %162, i64 1784 + %164 = load ptr, ptr %163, align 8 + %165 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv205 + %166 = load ptr, ptr %165, align 8 + %167 = getelementptr inbounds i8, ptr %165, i64 16 + %168 = load ptr, ptr %167, align 8 + call void %164(ptr noundef nonnull %0, ptr noundef %166, ptr noundef %168, i32 noundef 2) #14 + %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1 + %exitcond209.not = icmp eq i64 %indvars.iv.next206, %wide.trip.count208 + br i1 %exitcond209.not, label %._crit_edge180, label %.lr.ph179, !llvm.loop !101 -163: ; preds = %160, %153, %158 - %.0140 = phi i32 [ %159, %158 ], [ 1, %153 ], [ %spec.select160, %160 ] - br i1 %91, label %.lr.ph181.preheader, label %._crit_edge182 +._crit_edge180: ; preds = %.lr.ph179, %161 + %.0140220 = phi i32 [ %.0140, %161 ], [ %.0140221, %.lr.ph179 ] + %169 = load ptr, ptr %9, align 8 + %170 = icmp eq ptr %169, null + br i1 %170, label %171, label %176 -.lr.ph181.preheader: ; preds = %156, %163 - %.0140223 = phi i32 [ %.0140, %163 ], [ 0, %156 ] - %wide.trip.count210 = zext nneg i32 %spec.select to i64 - br label %.lr.ph181 +171: ; preds = %._crit_edge180 + %172 = call fastcc i32 @storeRasterArray(ptr noundef nonnull %0, ptr noundef %27, ptr noundef %77) + %173 = icmp slt i32 %172, 0 + br i1 %173, label %174, label %176 -.lr.ph181: ; preds = %.lr.ph181.preheader, %.lr.ph181 - %indvars.iv207 = phi i64 [ 0, %.lr.ph181.preheader ], [ %indvars.iv.next208, %.lr.ph181 ] - %164 = load ptr, ptr %0, align 8 - %165 = getelementptr inbounds i8, ptr %164, i64 1784 - %166 = load ptr, ptr %165, align 8 - %167 = getelementptr inbounds [4 x %struct.LookupArrayInfo], ptr %10, i64 0, i64 %indvars.iv207 - %168 = load ptr, ptr %167, align 8 - %169 = getelementptr inbounds i8, ptr %167, i64 16 - %170 = load ptr, ptr %169, align 8 - call void %166(ptr noundef nonnull %0, ptr noundef %168, ptr noundef %170, i32 noundef 2) #14 - %indvars.iv.next208 = add nuw nsw i64 %indvars.iv207, 1 - %exitcond211.not = icmp eq i64 %indvars.iv.next208, %wide.trip.count210 - br i1 %exitcond211.not, label %._crit_edge182, label %.lr.ph181, !llvm.loop !101 - -._crit_edge182: ; preds = %.lr.ph181, %163 - %.0140222 = phi i32 [ %.0140, %163 ], [ %.0140223, %.lr.ph181 ] - %171 = load ptr, ptr %9, align 8 - %172 = icmp eq ptr %171, null - br i1 %172, label %173, label %178 - -173: ; preds = %._crit_edge182 - %174 = call fastcc i32 @storeRasterArray(ptr noundef nonnull %0, ptr noundef %27, ptr noundef %77) - %175 = icmp slt i32 %174, 0 - br i1 %175, label %176, label %178 - -176: ; preds = %173 - %177 = call fastcc i32 @setPixelsFormMlibImage(ptr noundef nonnull %0, ptr noundef nonnull %27, ptr noundef %77) - br label %178 - -178: ; preds = %173, %176, %._crit_edge182 - %.1141 = phi i32 [ %177, %176 ], [ %.0140222, %173 ], [ %.0140222, %._crit_edge182 ] - %179 = getelementptr inbounds i8, ptr %23, i64 8 - %180 = load ptr, ptr %179, align 8 - %181 = load ptr, ptr %8, align 8 - %182 = getelementptr inbounds i8, ptr %27, i64 8 - %183 = load ptr, ptr %182, align 8 - call fastcc void @freeDataArray(ptr noundef nonnull %0, ptr noundef %180, ptr noundef nonnull %74, ptr noundef %181, ptr noundef %183, ptr noundef %77, ptr noundef %171) +174: ; preds = %171 + %175 = call fastcc i32 @setPixelsFormMlibImage(ptr noundef nonnull %0, ptr noundef nonnull %27, ptr noundef %77) + br label %176 + +176: ; preds = %171, %174, %._crit_edge180 + %.1141 = phi i32 [ %175, %174 ], [ %.0140220, %171 ], [ %.0140220, %._crit_edge180 ] + %177 = getelementptr inbounds i8, ptr %23, i64 8 + %178 = load ptr, ptr %177, align 8 + %179 = load ptr, ptr %8, align 8 + %180 = getelementptr inbounds i8, ptr %27, i64 8 + %181 = load ptr, ptr %180, align 8 + call fastcc void @freeDataArray(ptr noundef nonnull %0, ptr noundef %178, ptr noundef nonnull %74, ptr noundef %179, ptr noundef %181, ptr noundef %77, ptr noundef %169) call void @awt_freeParsedRaster(ptr noundef nonnull %23, i32 noundef 1) #14 call void @awt_freeParsedRaster(ptr noundef nonnull %27, i32 noundef 1) #14 %.b151 = load i1, ptr @s_timeIt, align 4 - br i1 %.b151, label %184, label %186 + br i1 %.b151, label %182, label %184 -184: ; preds = %178 - %185 = load ptr, ptr @stop_timer, align 8 - call void %185(i32 noundef 3600, i32 noundef 1) #14 - br label %186 +182: ; preds = %176 + %183 = load ptr, ptr @stop_timer, align 8 + call void %183(i32 noundef 3600, i32 noundef 1) #14 + br label %184 -186: ; preds = %178, %184, %18, %5, %._crit_edge185, %.thread, %80, %freeDataArray.exit, %57, %53, %37, %33, %29, %25 - %.0137 = phi i32 [ -1, %25 ], [ -1, %29 ], [ 0, %33 ], [ 0, %37 ], [ 0, %53 ], [ 0, %57 ], [ 0, %freeDataArray.exit ], [ 0, %80 ], [ 0, %.thread ], [ 0, %._crit_edge185 ], [ 0, %5 ], [ 0, %18 ], [ %.1141, %184 ], [ %.1141, %178 ] +184: ; preds = %176, %182, %18, %5, %._crit_edge183, %.thread, %80, %freeDataArray.exit, %57, %53, %37, %33, %29, %25 + %.0137 = phi i32 [ -1, %25 ], [ -1, %29 ], [ 0, %33 ], [ 0, %37 ], [ 0, %53 ], [ 0, %57 ], [ 0, %freeDataArray.exit ], [ 0, %80 ], [ 0, %.thread ], [ 0, %._crit_edge183 ], [ 0, %5 ], [ 0, %18 ], [ %.1141, %182 ], [ %.1141, %176 ] ret i32 %.0137 } diff --git a/bench/openspiel/optimized/chess_board.cc.ll b/bench/openspiel/optimized/chess_board.cc.ll index 8a512a19e5f..5e323edc762 100644 --- a/bench/openspiel/optimized/chess_board.cc.ll +++ b/bench/openspiel/optimized/chess_board.cc.ll @@ -11517,10 +11517,10 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 noundef signext %98) to label %101 unwind label %99 -99: ; preds = %169, %156, %180, %167, %137, %122, %120, %115, %113, %107, %105, %97, %95 +99: ; preds = %166, %153, %177, %164, %137, %122, %120, %115, %113, %107, %105, %97, %95 %100 = landingpad { ptr, i32 } cleanup - br label %193 + br label %190 101: ; preds = %90, %97 %102 = getelementptr inbounds i8, ptr %1, i64 154 @@ -11582,11 +11582,11 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI 126: ; preds = %124 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #33 %127 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %14) - to label %.noexc53 unwind label %183 + to label %.noexc53 unwind label %180 .noexc53: ; preds = %126 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef %127, ptr noundef nonnull align 1 dereferenceable(1) %15) - to label %.noexc54 unwind label %183 + to label %.noexc54 unwind label %180 .noexc54: ; preds = %.noexc53 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.69, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.69, i64 1)) @@ -11596,11 +11596,11 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI %128 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #33 - br label %187 + br label %184 129: ; preds = %124 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %12) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit unwind label %183 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit unwind label %180 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; preds = %.noexc54, %129 %130 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #33 @@ -11617,7 +11617,7 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI %134 = getelementptr inbounds nuw i8, ptr %13, i64 8 store i64 %131, ptr %134, align 8 invoke void @_ZN4absl7debian29StrAppendEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8AlphaNumE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(48) %13) - to label %135 unwind label %185 + to label %135 unwind label %182 135: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit55 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #33 @@ -11637,168 +11637,165 @@ _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsI 139: ; preds = %137 %140 = getelementptr inbounds nuw i8, ptr %1, i64 135 %.sroa.0.0.copyload.i = load i16, ptr %140, align 1 - %141 = and i16 %.sroa.0.0.copyload.i, 255 - %142 = icmp eq i16 %141, 255 - %143 = icmp ugt i16 %.sroa.0.0.copyload.i, -257 - %144 = and i1 %143, %142 - br i1 %144, label %145, label %148 + %141 = icmp eq i16 %.sroa.0.0.copyload.i, -1 + br i1 %141, label %142, label %145 -145: ; preds = %139 +142: ; preds = %139 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #33 - %146 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %18) - to label %.noexc57 unwind label %188 + %143 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %18) + to label %.noexc57 unwind label %185 -.noexc57: ; preds = %145 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef %146, ptr noundef nonnull align 1 dereferenceable(1) %19) - to label %.noexc58 unwind label %188 +.noexc57: ; preds = %142 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef %143, ptr noundef nonnull align 1 dereferenceable(1) %19) + to label %.noexc58 unwind label %185 .noexc58: ; preds = %.noexc57 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.69, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.69, i64 1)) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61 unwind label %.body59.thread .body59.thread: ; preds = %.noexc58 - %147 = landingpad { ptr, i32 } + %144 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #33 - br label %192 + br label %189 -148: ; preds = %139 +145: ; preds = %139 store i16 %.sroa.0.0.copyload.i, ptr %20, align 2 invoke void @_ZN10open_spiel12chess_common14SquareToStringB5cxx11ERKNS0_6SquareE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 1 dereferenceable(2) %20) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61 unwind label %188 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61 unwind label %185 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61: ; preds = %.noexc58, %148 - %149 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #33 - %150 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #33 - store ptr %149, ptr %17, align 8 - %151 = icmp sgt i64 %150, -1 - br i1 %151, label %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63, label %152 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61: ; preds = %.noexc58, %145 + %146 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #33 + %147 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #33 + store ptr %146, ptr %17, align 8 + %148 = icmp sgt i64 %147, -1 + br i1 %148, label %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63, label %149 -152: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61 +149: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61 call void @llvm.trap() unreachable _ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit61 - %153 = getelementptr inbounds nuw i8, ptr %17, i64 8 - store i64 %150, ptr %153, align 8 + %150 = getelementptr inbounds nuw i8, ptr %17, i64 8 + store i64 %147, ptr %150, align 8 invoke void @_ZN4absl7debian29StrAppendEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8AlphaNumE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(48) %17) - to label %154 unwind label %190 + to label %151 unwind label %187 -154: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63 +151: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #33 - br i1 %144, label %155, label %156 + br i1 %141, label %152, label %153 -155: ; preds = %154 +152: ; preds = %151 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #33 - br label %156 + br label %153 -156: ; preds = %155, %154 +153: ; preds = %152, %151 store ptr @.str.11, ptr %21, align 8 - %157 = getelementptr inbounds nuw i8, ptr %21, i64 8 - store i64 1, ptr %157, align 8 - %158 = getelementptr inbounds nuw i8, ptr %1, i64 140 - %159 = load i32, ptr %158, align 4 - %160 = getelementptr inbounds nuw i8, ptr %22, i64 16 - %161 = invoke noundef ptr @_ZN4absl7debian216numbers_internal15FastIntToBufferEiPc(i32 noundef %159, ptr noundef nonnull %160) + %154 = getelementptr inbounds nuw i8, ptr %21, i64 8 + store i64 1, ptr %154, align 8 + %155 = getelementptr inbounds nuw i8, ptr %1, i64 140 + %156 = load i32, ptr %155, align 4 + %157 = getelementptr inbounds nuw i8, ptr %22, i64 16 + %158 = invoke noundef ptr @_ZN4absl7debian216numbers_internal15FastIntToBufferEiPc(i32 noundef %156, ptr noundef nonnull %157) to label %.noexc65 unwind label %99 -.noexc65: ; preds = %156 - %162 = ptrtoint ptr %161 to i64 - %163 = ptrtoint ptr %160 to i64 - %164 = sub i64 %162, %163 - store ptr %160, ptr %22, align 8 - %165 = icmp sgt i64 %164, -1 - br i1 %165, label %167, label %166 +.noexc65: ; preds = %153 + %159 = ptrtoint ptr %158 to i64 + %160 = ptrtoint ptr %157 to i64 + %161 = sub i64 %159, %160 + store ptr %157, ptr %22, align 8 + %162 = icmp sgt i64 %161, -1 + br i1 %162, label %164, label %163 -166: ; preds = %.noexc65 +163: ; preds = %.noexc65 call void @llvm.trap() unreachable -167: ; preds = %.noexc65 - %168 = getelementptr inbounds nuw i8, ptr %22, i64 8 - store i64 %164, ptr %168, align 8 +164: ; preds = %.noexc65 + %165 = getelementptr inbounds nuw i8, ptr %22, i64 8 + store i64 %161, ptr %165, align 8 invoke void @_ZN4absl7debian29StrAppendEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8AlphaNumESA_(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 8 dereferenceable(48) %22) - to label %169 unwind label %99 + to label %166 unwind label %99 -169: ; preds = %167 +166: ; preds = %164 store ptr @.str.11, ptr %23, align 8 - %170 = getelementptr inbounds nuw i8, ptr %23, i64 8 - store i64 1, ptr %170, align 8 - %171 = getelementptr inbounds nuw i8, ptr %1, i64 144 - %172 = load i32, ptr %171, align 8 - %173 = getelementptr inbounds nuw i8, ptr %24, i64 16 - %174 = invoke noundef ptr @_ZN4absl7debian216numbers_internal15FastIntToBufferEiPc(i32 noundef %172, ptr noundef nonnull %173) + %167 = getelementptr inbounds nuw i8, ptr %23, i64 8 + store i64 1, ptr %167, align 8 + %168 = getelementptr inbounds nuw i8, ptr %1, i64 144 + %169 = load i32, ptr %168, align 8 + %170 = getelementptr inbounds nuw i8, ptr %24, i64 16 + %171 = invoke noundef ptr @_ZN4absl7debian216numbers_internal15FastIntToBufferEiPc(i32 noundef %169, ptr noundef nonnull %170) to label %.noexc68 unwind label %99 -.noexc68: ; preds = %169 - %175 = ptrtoint ptr %174 to i64 - %176 = ptrtoint ptr %173 to i64 - %177 = sub i64 %175, %176 - store ptr %173, ptr %24, align 8 - %178 = icmp sgt i64 %177, -1 - br i1 %178, label %180, label %179 +.noexc68: ; preds = %166 + %172 = ptrtoint ptr %171 to i64 + %173 = ptrtoint ptr %170 to i64 + %174 = sub i64 %172, %173 + store ptr %170, ptr %24, align 8 + %175 = icmp sgt i64 %174, -1 + br i1 %175, label %177, label %176 -179: ; preds = %.noexc68 +176: ; preds = %.noexc68 call void @llvm.trap() unreachable -180: ; preds = %.noexc68 - %181 = getelementptr inbounds nuw i8, ptr %24, i64 8 - store i64 %177, ptr %181, align 8 +177: ; preds = %.noexc68 + %178 = getelementptr inbounds nuw i8, ptr %24, i64 8 + store i64 %174, ptr %178, align 8 invoke void @_ZN4absl7debian29StrAppendEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_8AlphaNumESA_(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 8 dereferenceable(48) %24) - to label %182 unwind label %99 + to label %179 unwind label %99 -182: ; preds = %180 +179: ; preds = %177 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #33 ret void -183: ; preds = %.noexc53, %126, %129 - %184 = landingpad { ptr, i32 } +180: ; preds = %.noexc53, %126, %129 + %181 = landingpad { ptr, i32 } cleanup br label %.body -185: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit55 - %186 = landingpad { ptr, i32 } +182: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit55 + %183 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #33 br label %.body -.body: ; preds = %183, %185 - %.pn = phi { ptr, i32 } [ %186, %185 ], [ %184, %183 ] - br i1 %125, label %187, label %193 +.body: ; preds = %180, %182 + %.pn = phi { ptr, i32 } [ %183, %182 ], [ %181, %180 ] + br i1 %125, label %184, label %190 -187: ; preds = %.body.thread, %.body +184: ; preds = %.body.thread, %.body %.pn75 = phi { ptr, i32 } [ %128, %.body.thread ], [ %.pn, %.body ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #33 - br label %193 + br label %190 -188: ; preds = %.noexc57, %145, %148 - %189 = landingpad { ptr, i32 } +185: ; preds = %.noexc57, %142, %145 + %186 = landingpad { ptr, i32 } cleanup br label %.body59 -190: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63 - %191 = landingpad { ptr, i32 } +187: ; preds = %_ZN4absl7debian28AlphaNumC2ISaIcEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcET_EE.exit63 + %188 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #33 br label %.body59 -.body59: ; preds = %188, %190 - %.pn40 = phi { ptr, i32 } [ %191, %190 ], [ %189, %188 ] - br i1 %144, label %192, label %193 +.body59: ; preds = %185, %187 + %.pn40 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ] + br i1 %141, label %189, label %190 -192: ; preds = %.body59.thread, %.body59 - %.pn4077 = phi { ptr, i32 } [ %147, %.body59.thread ], [ %.pn40, %.body59 ] +189: ; preds = %.body59.thread, %.body59 + %.pn4077 = phi { ptr, i32 } [ %144, %.body59.thread ], [ %.pn40, %.body59 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #33 - br label %193 + br label %190 -193: ; preds = %.body59, %192, %.body, %187, %99 - %.pn42 = phi { ptr, i32 } [ %100, %99 ], [ %.pn4077, %192 ], [ %.pn40, %.body59 ], [ %.pn75, %187 ], [ %.pn, %.body ] +190: ; preds = %.body59, %189, %.body, %184, %99 + %.pn42 = phi { ptr, i32 } [ %100, %99 ], [ %.pn4077, %189 ], [ %.pn40, %.body59 ], [ %.pn75, %184 ], [ %.pn, %.body ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #33 br label %.loopexit.split-lp -.loopexit.split-lp: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %193, %65 - %.pn44 = phi { ptr, i32 } [ %66, %65 ], [ %.pn42, %193 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit78, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp79, %.loopexit.split-lp.loopexit.split-lp ] +.loopexit.split-lp: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %190, %65 + %.pn44 = phi { ptr, i32 } [ %66, %65 ], [ %.pn42, %190 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit78, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp79, %.loopexit.split-lp.loopexit.split-lp ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #33 resume { ptr, i32 } %.pn44 } diff --git a/bench/openspiel/optimized/dark_chess.cc.ll b/bench/openspiel/optimized/dark_chess.cc.ll index aa4d5e00fff..d4c9b69807f 100644 --- a/bench/openspiel/optimized/dark_chess.cc.ll +++ b/bench/openspiel/optimized/dark_chess.cc.ll @@ -2166,325 +2166,319 @@ define void @_ZNK10open_spiel10dark_chess14DarkChessState17MaybeFinalReturnsEv(p %20 = getelementptr inbounds nuw i8, ptr %8, i64 1 store i8 1, ptr %20, align 1 %21 = call i16 @_ZNK10open_spiel5chess10ChessBoard4findERKNS0_5PieceE(ptr noundef nonnull align 8 dereferenceable(168) %14, ptr noundef nonnull align 1 dereferenceable(2) %7) - %22 = and i16 %21, 255 - %23 = icmp eq i16 %22, 255 - %24 = icmp ugt i16 %21, -257 - %25 = and i1 %24, %23 - br i1 %25, label %26, label %55 - -26: ; preds = %2 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %28 = load i32, ptr %27, align 4 - %29 = sext i32 %28 to i64 - %30 = icmp slt i32 %28, 0 - br i1 %30, label %.noexc, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i + %22 = icmp eq i16 %21, -1 + br i1 %22, label %23, label %52 -.noexc: ; preds = %26 +23: ; preds = %2 + %24 = getelementptr inbounds nuw i8, ptr %1, i64 28 + %25 = load i32, ptr %24, align 4 + %26 = sext i32 %25 to i64 + %27 = icmp slt i32 %25, 0 + br i1 %27, label %.noexc, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i + +.noexc: ; preds = %23 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.29) #28 unreachable -_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %26 - %.not.i.i.i.i = icmp eq i32 %28, 0 +_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %23 + %.not.i.i.i.i = icmp eq i32 %25, 0 br i1 %.not.i.i.i.i, label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit, label %.noexc30 .noexc30: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i - %31 = shl nuw nsw i64 %29, 3 - %32 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %31) #30 - %33 = getelementptr double, ptr %32, i64 %29 - store double 0.000000e+00, ptr %32, align 8 - %34 = getelementptr i8, ptr %32, i64 8 - %35 = icmp eq i32 %28, 1 - br i1 %35, label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit, label %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i + %28 = shl nuw nsw i64 %26, 3 + %29 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %28) #30 + %30 = getelementptr double, ptr %29, i64 %26 + store double 0.000000e+00, ptr %29, align 8 + %31 = getelementptr i8, ptr %29, i64 8 + %32 = icmp eq i32 %25, 1 + br i1 %32, label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit, label %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i _ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc30 - %36 = add nsw i64 %31, -8 - call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 %36, i1 false) + %33 = add nsw i64 %28, -8 + call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 %33, i1 false) br label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit _ZNSt6vectorIdSaIdEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc30, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i - %.sroa.11156.0 = phi ptr [ %33, %.noexc30 ], [ %33, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ] - %.sroa.0150.0 = phi ptr [ %32, %.noexc30 ], [ %32, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ] - %.0.i.i.i.i.i = phi ptr [ %34, %.noexc30 ], [ %33, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ] + %.sroa.11156.0 = phi ptr [ %30, %.noexc30 ], [ %30, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ] + %.sroa.0150.0 = phi ptr [ %29, %.noexc30 ], [ %29, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ] + %.0.i.i.i.i.i = phi ptr [ %31, %.noexc30 ], [ %30, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) - switch i8 %16, label %38 [ + switch i8 %16, label %35 [ i8 0, label %_ZNSt6vectorIdSaIdEED2Ev.exit - i8 1, label %37 + i8 1, label %34 ] -37: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit +34: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit br label %_ZNSt6vectorIdSaIdEED2Ev.exit -38: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit +35: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #27 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %6) - to label %39 unwind label %41 + to label %36 unwind label %38 -39: ; preds = %38 +36: ; preds = %35 invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %5) #28 - to label %40 unwind label %43 + to label %37 unwind label %40 -40: ; preds = %39 +37: ; preds = %36 unreachable -41: ; preds = %38 - %42 = landingpad { ptr, i32 } +38: ; preds = %35 + %39 = landingpad { ptr, i32 } cleanup br label %.body -43: ; preds = %39 - %44 = landingpad { ptr, i32 } +40: ; preds = %36 + %41 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #27 br label %.body -.body: ; preds = %43, %41 - %.pn.i = phi { ptr, i32 } [ %44, %43 ], [ %42, %41 ] +.body: ; preds = %40, %38 + %.pn.i = phi { ptr, i32 } [ %41, %40 ], [ %39, %38 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #27 %.not.i.i.i36 = icmp eq ptr %.sroa.0150.0, null - br i1 %.not.i.i.i36, label %_ZNSt6vectorIdSaIdEED2Ev.exit37, label %51 + br i1 %.not.i.i.i36, label %_ZNSt6vectorIdSaIdEED2Ev.exit37, label %48 -_ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %37, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit - %.05.i = phi i64 [ 1, %37 ], [ 0, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit ] +_ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %34, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit + %.05.i = phi i64 [ 1, %34 ], [ 0, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) - %45 = getelementptr inbounds double, ptr %.sroa.0150.0, i64 %.05.i - store double -1.000000e+00, ptr %45, align 8 - %46 = zext i1 %17 to i64 - %47 = getelementptr inbounds double, ptr %.sroa.0150.0, i64 %46 - store double 1.000000e+00, ptr %47, align 8 + %42 = getelementptr inbounds double, ptr %.sroa.0150.0, i64 %.05.i + store double -1.000000e+00, ptr %42, align 8 + %43 = zext i1 %17 to i64 + %44 = getelementptr inbounds double, ptr %.sroa.0150.0, i64 %43 + store double 1.000000e+00, ptr %44, align 8 store i8 1, ptr %0, align 8 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0150.0, ptr %48, align 8 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %.0.i.i.i.i.i, ptr %49, align 8 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %.sroa.11156.0, ptr %50, align 8 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %.sroa.0150.0, ptr %45, align 8 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %.0.i.i.i.i.i, ptr %46, align 8 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %.sroa.11156.0, ptr %47, align 8 br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -51: ; preds = %.body - %52 = ptrtoint ptr %.sroa.11156.0 to i64 - %53 = ptrtoint ptr %.sroa.0150.0 to i64 - %54 = sub i64 %52, %53 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0150.0, i64 noundef %54) #31 +48: ; preds = %.body + %49 = ptrtoint ptr %.sroa.11156.0 to i64 + %50 = ptrtoint ptr %.sroa.0150.0 to i64 + %51 = sub i64 %49, %50 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0150.0, i64 noundef %51) #31 br label %_ZNSt6vectorIdSaIdEED2Ev.exit37 -55: ; preds = %2 - %56 = call i16 @_ZNK10open_spiel5chess10ChessBoard4findERKNS0_5PieceE(ptr noundef nonnull align 8 dereferenceable(168) %14, ptr noundef nonnull align 1 dereferenceable(2) %8) - %57 = and i16 %56, 255 - %58 = icmp eq i16 %57, 255 - %59 = icmp ugt i16 %56, -257 - %60 = and i1 %59, %58 - br i1 %60, label %61, label %90 - -61: ; preds = %55 - %62 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %63 = load i32, ptr %62, align 4 - %64 = sext i32 %63 to i64 - %65 = icmp slt i32 %63, 0 - br i1 %65, label %.noexc43, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 - -.noexc43: ; preds = %61 +52: ; preds = %2 + %53 = call i16 @_ZNK10open_spiel5chess10ChessBoard4findERKNS0_5PieceE(ptr noundef nonnull align 8 dereferenceable(168) %14, ptr noundef nonnull align 1 dereferenceable(2) %8) + %54 = icmp eq i16 %53, -1 + br i1 %54, label %55, label %84 + +55: ; preds = %52 + %56 = getelementptr inbounds nuw i8, ptr %1, i64 28 + %57 = load i32, ptr %56, align 4 + %58 = sext i32 %57 to i64 + %59 = icmp slt i32 %57, 0 + br i1 %59, label %.noexc43, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 + +.noexc43: ; preds = %55 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.29) #28 unreachable -_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38: ; preds = %61 - %.not.i.i.i.i39 = icmp eq i32 %63, 0 +_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38: ; preds = %55 + %.not.i.i.i.i39 = icmp eq i32 %57, 0 br i1 %.not.i.i.i.i39, label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45, label %.noexc44 .noexc44: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 - %66 = shl nuw nsw i64 %64, 3 - %67 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %66) #30 - %68 = getelementptr double, ptr %67, i64 %64 - store double 0.000000e+00, ptr %67, align 8 - %69 = getelementptr i8, ptr %67, i64 8 - %70 = icmp eq i32 %63, 1 - br i1 %70, label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45, label %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 + %60 = shl nuw nsw i64 %58, 3 + %61 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %60) #30 + %62 = getelementptr double, ptr %61, i64 %58 + store double 0.000000e+00, ptr %61, align 8 + %63 = getelementptr i8, ptr %61, i64 8 + %64 = icmp eq i32 %57, 1 + br i1 %64, label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45, label %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 _ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40: ; preds = %.noexc44 - %71 = add nsw i64 %66, -8 - call void @llvm.memset.p0.i64(ptr align 8 %69, i8 0, i64 %71, i1 false) + %65 = add nsw i64 %60, -8 + call void @llvm.memset.p0.i64(ptr align 8 %63, i8 0, i64 %65, i1 false) br label %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 _ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45: ; preds = %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40, %.noexc44, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 - %.sroa.11.0 = phi ptr [ %68, %.noexc44 ], [ %68, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 ] - %.sroa.0134.0 = phi ptr [ %67, %.noexc44 ], [ %67, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 ] - %.0.i.i.i.i.i41 = phi ptr [ %69, %.noexc44 ], [ %68, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 ] + %.sroa.11.0 = phi ptr [ %62, %.noexc44 ], [ %62, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 ] + %.sroa.0134.0 = phi ptr [ %61, %.noexc44 ], [ %61, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 ] + %.0.i.i.i.i.i41 = phi ptr [ %63, %.noexc44 ], [ %62, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i40 ], [ null, %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i38 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) - switch i8 %16, label %73 [ + switch i8 %16, label %67 [ i8 0, label %_ZNSt6vectorIdSaIdEED2Ev.exit57 - i8 1, label %72 + i8 1, label %66 ] -72: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 +66: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 br label %_ZNSt6vectorIdSaIdEED2Ev.exit57 -73: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 +67: ; preds = %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #27 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.26, ptr noundef nonnull align 1 dereferenceable(1) %4) - to label %74 unwind label %76 + to label %68 unwind label %70 -74: ; preds = %73 +68: ; preds = %67 invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %3) #28 - to label %75 unwind label %78 + to label %69 unwind label %72 -75: ; preds = %74 +69: ; preds = %68 unreachable -76: ; preds = %73 - %77 = landingpad { ptr, i32 } +70: ; preds = %67 + %71 = landingpad { ptr, i32 } cleanup br label %.body48 -78: ; preds = %74 - %79 = landingpad { ptr, i32 } +72: ; preds = %68 + %73 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #27 br label %.body48 -.body48: ; preds = %78, %76 - %.pn.i47 = phi { ptr, i32 } [ %79, %78 ], [ %77, %76 ] +.body48: ; preds = %72, %70 + %.pn.i47 = phi { ptr, i32 } [ %73, %72 ], [ %71, %70 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #27 %.not.i.i.i58 = icmp eq ptr %.sroa.0134.0, null - br i1 %.not.i.i.i58, label %_ZNSt6vectorIdSaIdEED2Ev.exit37, label %86 + br i1 %.not.i.i.i58, label %_ZNSt6vectorIdSaIdEED2Ev.exit37, label %80 -_ZNSt6vectorIdSaIdEED2Ev.exit57: ; preds = %72, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 - %.05.i46 = phi i64 [ 1, %72 ], [ 0, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 ] +_ZNSt6vectorIdSaIdEED2Ev.exit57: ; preds = %66, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 + %.05.i46 = phi i64 [ 1, %66 ], [ 0, %_ZNSt6vectorIdSaIdEEC2EmRKS0_.exit45 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) - %80 = getelementptr inbounds double, ptr %.sroa.0134.0, i64 %.05.i46 - store double 1.000000e+00, ptr %80, align 8 - %81 = zext i1 %17 to i64 - %82 = getelementptr inbounds double, ptr %.sroa.0134.0, i64 %81 - store double -1.000000e+00, ptr %82, align 8 + %74 = getelementptr inbounds double, ptr %.sroa.0134.0, i64 %.05.i46 + store double 1.000000e+00, ptr %74, align 8 + %75 = zext i1 %17 to i64 + %76 = getelementptr inbounds double, ptr %.sroa.0134.0, i64 %75 + store double -1.000000e+00, ptr %76, align 8 store i8 1, ptr %0, align 8 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0134.0, ptr %83, align 8 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %.0.i.i.i.i.i41, ptr %84, align 8 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %.sroa.11.0, ptr %85, align 8 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %.sroa.0134.0, ptr %77, align 8 + %78 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %.0.i.i.i.i.i41, ptr %78, align 8 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %.sroa.11.0, ptr %79, align 8 br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -86: ; preds = %.body48 - %87 = ptrtoint ptr %.sroa.11.0 to i64 - %88 = ptrtoint ptr %.sroa.0134.0 to i64 - %89 = sub i64 %87, %88 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0134.0, i64 noundef %89) #31 +80: ; preds = %.body48 + %81 = ptrtoint ptr %.sroa.11.0 to i64 + %82 = ptrtoint ptr %.sroa.0134.0 to i64 + %83 = sub i64 %81, %82 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0134.0, i64 noundef %83) #31 br label %_ZNSt6vectorIdSaIdEED2Ev.exit37 -90: ; preds = %55 - %91 = call noundef zeroext i1 @_ZNK10open_spiel5chess10ChessBoard21HasSufficientMaterialEv(ptr noundef nonnull align 8 dereferenceable(168) %14) - br i1 %91, label %97, label %_ZNSt6vectorIdSaIdEED2Ev.exit64 +84: ; preds = %52 + %85 = call noundef zeroext i1 @_ZNK10open_spiel5chess10ChessBoard21HasSufficientMaterialEv(ptr noundef nonnull align 8 dereferenceable(168) %14) + br i1 %85, label %91, label %_ZNSt6vectorIdSaIdEED2Ev.exit64 -_ZNSt6vectorIdSaIdEED2Ev.exit64: ; preds = %90 - %92 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #30 - %93 = getelementptr inbounds i8, ptr %92, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %92, i8 0, i64 16, i1 false) +_ZNSt6vectorIdSaIdEED2Ev.exit64: ; preds = %84 + %86 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #30 + %87 = getelementptr inbounds i8, ptr %86, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %86, i8 0, i64 16, i1 false) store i8 1, ptr %0, align 8 - %94 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %92, ptr %94, align 8 - %95 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %93, ptr %95, align 8 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %93, ptr %96, align 8 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %86, ptr %88, align 8 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %87, ptr %89, align 8 + %90 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %87, ptr %90, align 8 br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -97: ; preds = %90 - %98 = call noundef zeroext i1 @_ZNK10open_spiel10dark_chess14DarkChessState16IsRepetitionDrawEv(ptr noundef nonnull align 8 dereferenceable(496) %1) - br i1 %98, label %_ZNSt6vectorIdSaIdEED2Ev.exit75, label %104 +91: ; preds = %84 + %92 = call noundef zeroext i1 @_ZNK10open_spiel10dark_chess14DarkChessState16IsRepetitionDrawEv(ptr noundef nonnull align 8 dereferenceable(496) %1) + br i1 %92, label %_ZNSt6vectorIdSaIdEED2Ev.exit75, label %98 -_ZNSt6vectorIdSaIdEED2Ev.exit75: ; preds = %97 - %99 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #30 - %100 = getelementptr inbounds i8, ptr %99, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %99, i8 0, i64 16, i1 false) +_ZNSt6vectorIdSaIdEED2Ev.exit75: ; preds = %91 + %93 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #30 + %94 = getelementptr inbounds i8, ptr %93, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %93, i8 0, i64 16, i1 false) store i8 1, ptr %0, align 8 - %101 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %99, ptr %101, align 8 - %102 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %100, ptr %102, align 8 - %103 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %100, ptr %103, align 8 + %95 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %93, ptr %95, align 8 + %96 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %94, ptr %96, align 8 + %97 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %94, ptr %97, align 8 br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -104: ; preds = %97 +98: ; preds = %91 call void @_ZNK10open_spiel10dark_chess14DarkChessState25MaybeGenerateLegalActionsEv(ptr noundef nonnull align 8 dereferenceable(496) %1) - %105 = getelementptr inbounds nuw i8, ptr %1, i64 464 - %106 = load i8, ptr %105, align 8 - %107 = trunc i8 %106 to i1 - br i1 %107, label %_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit, label %108 + %99 = getelementptr inbounds nuw i8, ptr %1, i64 464 + %100 = load i8, ptr %99, align 8 + %101 = trunc i8 %100 to i1 + br i1 %101, label %_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit, label %102 -108: ; preds = %104 +102: ; preds = %98 store i32 563, ptr %10, align 4 call void @_ZN10open_spiel8internal11SpielStrCatIJRA140_KcRA2_S2_iRA13_S2_RA22_S2_S6_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 1 dereferenceable(140) @.str.11, ptr noundef nonnull align 1 dereferenceable(2) @.str.12, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 1 dereferenceable(13) @.str.13, ptr noundef nonnull align 1 dereferenceable(22) @.str.23, ptr noundef nonnull align 1 dereferenceable(2) @.str.15) invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %9) #28 - to label %109 unwind label %110 + to label %103 unwind label %104 -109: ; preds = %108 +103: ; preds = %102 unreachable -110: ; preds = %108 - %111 = landingpad { ptr, i32 } +104: ; preds = %102 + %105 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #27 br label %_ZNSt6vectorIdSaIdEED2Ev.exit37 -_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit: ; preds = %104 - %112 = getelementptr inbounds nuw i8, ptr %1, i64 472 - %113 = load ptr, ptr %112, align 8 - %114 = getelementptr inbounds nuw i8, ptr %1, i64 480 - %115 = load ptr, ptr %114, align 8 - %116 = icmp eq ptr %113, %115 - br i1 %116, label %_ZNSt6vectorIdSaIdEED2Ev.exit86, label %122 +_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit: ; preds = %98 + %106 = getelementptr inbounds nuw i8, ptr %1, i64 472 + %107 = load ptr, ptr %106, align 8 + %108 = getelementptr inbounds nuw i8, ptr %1, i64 480 + %109 = load ptr, ptr %108, align 8 + %110 = icmp eq ptr %107, %109 + br i1 %110, label %_ZNSt6vectorIdSaIdEED2Ev.exit86, label %116 _ZNSt6vectorIdSaIdEED2Ev.exit86: ; preds = %_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit - %117 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #30 - %118 = getelementptr inbounds i8, ptr %117, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %117, i8 0, i64 16, i1 false) + %111 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #30 + %112 = getelementptr inbounds i8, ptr %111, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %111, i8 0, i64 16, i1 false) store i8 1, ptr %0, align 8 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %117, ptr %119, align 8 - %120 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %118, ptr %120, align 8 - %121 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %118, ptr %121, align 8 + %113 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %111, ptr %113, align 8 + %114 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %112, ptr %114, align 8 + %115 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %112, ptr %115, align 8 br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -122: ; preds = %_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit - %123 = getelementptr inbounds nuw i8, ptr %1, i64 396 - %124 = load i32, ptr %123, align 4 - %125 = icmp sgt i32 %124, 99 - br i1 %125, label %126, label %135 +116: ; preds = %_ZN4absl7debian28optionalISt6vectorIlSaIlEEEptEv.exit + %117 = getelementptr inbounds nuw i8, ptr %1, i64 396 + %118 = load i32, ptr %117, align 4 + %119 = icmp sgt i32 %118, 99 + br i1 %119, label %120, label %129 -126: ; preds = %122 +120: ; preds = %116 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, i8 0, i64 16, i1 false) call void @_ZNSt6vectorIdSaIdEEC2ESt16initializer_listIdERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr nonnull %12, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %13) store i8 1, ptr %0, align 8 - %127 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %128 = load ptr, ptr %11, align 8 - store ptr %128, ptr %127, align 8 - %129 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %130 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %131 = load ptr, ptr %130, align 8 - store ptr %131, ptr %129, align 8 - %132 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %133 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %134 = load ptr, ptr %133, align 8 - store ptr %134, ptr %132, align 8 + %121 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %122 = load ptr, ptr %11, align 8 + store ptr %122, ptr %121, align 8 + %123 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %124 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %125 = load ptr, ptr %124, align 8 + store ptr %125, ptr %123, align 8 + %126 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %127 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %128 = load ptr, ptr %127, align 8 + store ptr %128, ptr %126, align 8 br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -135: ; preds = %122 +129: ; preds = %116 store i8 0, ptr %0, align 8 - %136 = getelementptr inbounds nuw i8, ptr %0, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %136, i8 0, i64 24, i1 false) + %130 = getelementptr inbounds nuw i8, ptr %0, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %130, i8 0, i64 24, i1 false) br label %_ZNSt6vectorIdSaIdEED2Ev.exit92 -_ZNSt6vectorIdSaIdEED2Ev.exit92: ; preds = %126, %135, %_ZNSt6vectorIdSaIdEED2Ev.exit86, %_ZNSt6vectorIdSaIdEED2Ev.exit75, %_ZNSt6vectorIdSaIdEED2Ev.exit64, %_ZNSt6vectorIdSaIdEED2Ev.exit57, %_ZNSt6vectorIdSaIdEED2Ev.exit +_ZNSt6vectorIdSaIdEED2Ev.exit92: ; preds = %120, %129, %_ZNSt6vectorIdSaIdEED2Ev.exit86, %_ZNSt6vectorIdSaIdEED2Ev.exit75, %_ZNSt6vectorIdSaIdEED2Ev.exit64, %_ZNSt6vectorIdSaIdEED2Ev.exit57, %_ZNSt6vectorIdSaIdEED2Ev.exit ret void -_ZNSt6vectorIdSaIdEED2Ev.exit37: ; preds = %86, %.body48, %51, %.body, %110 - %.pn28 = phi { ptr, i32 } [ %111, %110 ], [ %.pn.i, %.body ], [ %.pn.i, %51 ], [ %.pn.i47, %.body48 ], [ %.pn.i47, %86 ] +_ZNSt6vectorIdSaIdEED2Ev.exit37: ; preds = %80, %.body48, %48, %.body, %104 + %.pn28 = phi { ptr, i32 } [ %105, %104 ], [ %.pn.i, %.body ], [ %.pn.i, %48 ], [ %.pn.i47, %.body48 ], [ %.pn.i47, %80 ] resume { ptr, i32 } %.pn28 } diff --git a/bench/openusd/optimized/write.c.ll b/bench/openusd/optimized/write.c.ll index abf51be7404..f8abe206e46 100644 --- a/bench/openusd/optimized/write.c.ll +++ b/bench/openusd/optimized/write.c.ll @@ -1117,12 +1117,11 @@ avifValidateImageBasicProperties.exit.thread: ; preds = %312, %289, %27, %18 define hidden i32 @avifEncoderAddImageGrid(ptr noundef %0, i32 noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, i32 noundef %4) local_unnamed_addr #1 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 104 tail call void @avifDiagnosticsClearError(ptr noundef nonnull %6) #13 - %7 = add i32 %1, -257 - %or.cond = icmp ult i32 %7, -256 - %8 = add i32 %2, -257 - %9 = icmp ult i32 %8, -256 - %or.cond5 = or i1 %or.cond, %9 - br i1 %or.cond5, label %16, label %10 + %7 = sub i32 256, %1 + %8 = sub i32 256, %2 + %9 = or i32 %8, %7 + %or.cond5.not = icmp ult i32 %9, 256 + br i1 %or.cond5.not, label %10, label %16 10: ; preds = %5 %11 = getelementptr inbounds nuw i8, ptr %0, i64 28 diff --git a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll index 04dd7495299..3c60bcddf70 100644 --- a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll +++ b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll @@ -4452,8 +4452,8 @@ define noundef zeroext i1 @"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u %55 = load i64, ptr %54, align 8, !noundef !4 %56 = and i64 %55, 63 %57 = lshr i64 %53, %56 - %.not224 = icmp eq i64 %57, 0 - br i1 %.not224, label %._crit_edge, label %.lr.ph + %.not223 = icmp eq i64 %57, 0 + br i1 %.not223, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %51 %58 = getelementptr inbounds i8, ptr %0, i64 352 @@ -4530,7 +4530,7 @@ define noundef zeroext i1 @"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u %122 = getelementptr inbounds i8, ptr %33, i64 24 br label %128 -._crit_edge: ; preds = %259, %51 +._crit_edge: ; preds = %257, %51 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) store ptr @anon.451e762c733db03501c72f969938ebf7.70, ptr %32, align 8 %123 = getelementptr inbounds i8, ptr %32, i64 8 @@ -4545,10 +4545,10 @@ define noundef zeroext i1 @"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) br i1 %127, label %.loopexit, label %138 -128: ; preds = %.lr.ph, %259 - %.sroa.03.0218 = phi i64 [ 0, %.lr.ph ], [ %129, %259 ] - %129 = add nuw nsw i64 %.sroa.03.0218, 1 - %exitcond = icmp eq i64 %.sroa.03.0218, 2147483647 +128: ; preds = %.lr.ph, %257 + %.sroa.03.0217 = phi i64 [ 0, %.lr.ph ], [ %129, %257 ] + %129 = add nuw nsw i64 %.sroa.03.0217, 1 + %exitcond = icmp eq i64 %.sroa.03.0217, 2147483647 br i1 %exitcond, label %130, label %_ZN14regex_automata4util10primitives7StateID4must17h1a212146a295abf5E.exit 130: ; preds = %128 @@ -4560,7 +4560,7 @@ define noundef zeroext i1 @"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u _ZN14regex_automata4util10primitives7StateID4must17h1a212146a295abf5E.exit: ; preds = %128 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) call void @llvm.experimental.noalias.scope.decl(metadata !584) - %131 = shl i64 %.sroa.03.0218, %56 + %131 = shl i64 %.sroa.03.0217, %56 %132 = add i64 %59, %131 %133 = icmp ult i64 %132, %53 br i1 %133, label %_ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit, label %134, !prof !29 @@ -4573,7 +4573,7 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: %135 = getelementptr inbounds [0 x i64], ptr %.val.i, i64 0, i64 %132 %136 = load i64, ptr %135, align 8, !noalias !584, !noundef !4 store i64 %136, ptr %44, align 8 - %137 = icmp eq i64 %.sroa.03.0218, 0 + %137 = icmp eq i64 %.sroa.03.0217, 0 br i1 %137, label %195, label %194 138: ; preds = %._crit_edge @@ -4583,9 +4583,9 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: %142 = load i64, ptr %141, align 8, !noundef !4 %143 = getelementptr inbounds i32, ptr %140, i64 %142 %144 = icmp eq i64 %142, 0 - br i1 %144, label %._crit_edge223, label %.lr.ph222 + br i1 %144, label %._crit_edge222, label %.lr.ph221 -.lr.ph222: ; preds = %138 +.lr.ph221: ; preds = %138 %145 = getelementptr inbounds i8, ptr %27, i64 8 %146 = getelementptr inbounds i8, ptr %27, i64 16 %147 = getelementptr inbounds i8, ptr %27, i64 24 @@ -4600,7 +4600,7 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: %156 = getelementptr inbounds i8, ptr %31, i64 24 br label %163 -._crit_edge223: ; preds = %192, %138 +._crit_edge222: ; preds = %192, %138 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) @@ -4623,16 +4623,16 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) br i1 %162, label %.loopexit, label %168 -163: ; preds = %.lr.ph222, %192 - %.sroa.0.0220 = phi ptr [ %140, %.lr.ph222 ], [ %164, %192 ] - %.sroa.8.0219 = phi i64 [ 0, %.lr.ph222 ], [ %165, %192 ] - %164 = getelementptr inbounds i8, ptr %.sroa.0.0220, i64 4 - %165 = add nuw nsw i64 %.sroa.8.0219, 1 - %166 = load i32, ptr %.sroa.0.0220, align 4, !noundef !4 - %167 = icmp eq i64 %.sroa.8.0219, 0 +163: ; preds = %.lr.ph221, %192 + %.sroa.0.0219 = phi ptr [ %140, %.lr.ph221 ], [ %164, %192 ] + %.sroa.8.0218 = phi i64 [ 0, %.lr.ph221 ], [ %165, %192 ] + %164 = getelementptr inbounds i8, ptr %.sroa.0.0219, i64 4 + %165 = add nuw nsw i64 %.sroa.8.0218, 1 + %166 = load i32, ptr %.sroa.0.0219, align 4, !noundef !4 + %167 = icmp eq i64 %.sroa.8.0218, 0 br i1 %167, label %185, label %188 -168: ; preds = %._crit_edge223 +168: ; preds = %._crit_edge222 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %21) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) @@ -4674,8 +4674,8 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) br label %.loopexit -.loopexit: ; preds = %188, %185, %168, %._crit_edge223, %179, %._crit_edge, %2, %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread" - %.0 = phi i1 [ true, %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread" ], [ true, %2 ], [ true, %._crit_edge ], [ %184, %179 ], [ true, %._crit_edge223 ], [ true, %168 ], [ true, %185 ], [ true, %188 ] +.loopexit: ; preds = %188, %185, %168, %._crit_edge222, %179, %._crit_edge, %2, %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread" + %.0 = phi i1 [ true, %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread" ], [ true, %2 ], [ true, %._crit_edge ], [ %184, %179 ], [ true, %._crit_edge222 ], [ true, %168 ], [ true, %185 ], [ true, %188 ] ret i1 %.0 185: ; preds = %163 @@ -4701,7 +4701,7 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) - %189 = add nsw i64 %.sroa.8.0219, -1 + %189 = add nsw i64 %.sroa.8.0218, -1 store i64 %189, ptr %26, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) %190 = zext i32 %166 to i64 @@ -4724,7 +4724,7 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: 192: ; preds = %188, %185 %193 = icmp eq ptr %164, %143 - br i1 %193, label %._crit_edge223, label %163 + br i1 %193, label %._crit_edge222, label %163 194: ; preds = %_ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit %.not = icmp ugt i64 %136, -4398046511105 @@ -4767,7 +4767,7 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %40) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) - store i64 %.sroa.03.0218, ptr %38, align 8 + store i64 %.sroa.03.0217, ptr %38, align 8 store ptr %38, ptr %39, align 8 store ptr @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17h05610c046aa2fa7eE", ptr %73, align 8 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %37) @@ -4793,13 +4793,10 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: 203: ; preds = %201 %204 = load i64, ptr %44, align 8, !noundef !4 - %.not.i = icmp ugt i64 %204, -4398046511105 - %205 = and i64 %204, 4398046511103 - %206 = icmp eq i64 %205, 0 - %.0.i = and i1 %.not.i, %206 - br i1 %.0.i, label %209, label %207 + %.0.i = icmp eq i64 %204, -4398046511104 + br i1 %.0.i, label %207, label %205 -207: ; preds = %203 +205: ; preds = %203 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %36) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) store ptr %44, ptr %35, align 8 @@ -4809,140 +4806,140 @@ _ZN14regex_automata3dfa7onepass3DFA16pattern_epsilons17ha1e9bf4964a78840E.exit: store ptr null, ptr %81, align 8, !alias.scope !617, !noalias !620 store ptr %35, ptr %82, align 8, !alias.scope !617, !noalias !620 store i64 1, ptr %83, align 8, !alias.scope !617, !noalias !620 - %208 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %36) + %206 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %36) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %36) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) - br i1 %208, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %209 + br i1 %206, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %207 -209: ; preds = %207, %203 +207: ; preds = %205, %203 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %34) store ptr @anon.451e762c733db03501c72f969938ebf7.93, ptr %34, align 8 store i64 1, ptr %84, align 8 store ptr null, ptr %85, align 8 store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %86, align 8 store i64 0, ptr %87, align 8 - %210 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %34) + %208 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %34) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) - br i1 %210, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %211 + br i1 %208, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %209 -"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread": ; preds = %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit", %209, %199, %197, %195, %207, %201, %256, %247, %245, %251, %243 +"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread": ; preds = %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit", %207, %199, %197, %195, %205, %201, %254, %245, %243, %249, %241 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) br label %.loopexit -211: ; preds = %209 - %212 = add i64 %89, %131 - %213 = icmp ugt i64 %131, %212 - br i1 %213, label %216, label %214 +209: ; preds = %207 + %210 = add i64 %89, %131 + %211 = icmp ugt i64 %131, %210 + br i1 %211, label %214, label %212 -214: ; preds = %211 - %215 = icmp ugt i64 %212, %53 - br i1 %215, label %217, label %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i +212: ; preds = %209 + %213 = icmp ugt i64 %210, %53 + br i1 %213, label %215, label %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i -216: ; preds = %211 - call void @_ZN4core5slice5index22slice_index_order_fail17hcfcb08cd5efc8d4cE(i64 noundef %131, i64 noundef %212, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.61) #26, !noalias !623 +214: ; preds = %209 + call void @_ZN4core5slice5index22slice_index_order_fail17hcfcb08cd5efc8d4cE(i64 noundef %131, i64 noundef %210, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.61) #26, !noalias !623 unreachable -217: ; preds = %214 - call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %212, i64 noundef %53, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.61) #26, !noalias !623 +215: ; preds = %212 + call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %210, i64 noundef %53, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.451e762c733db03501c72f969938ebf7.61) #26, !noalias !623 unreachable -_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i: ; preds = %214 - %218 = getelementptr inbounds i64, ptr %.val.i, i64 %131 - %219 = getelementptr inbounds i64, ptr %218, i64 %89 - br label %220 +_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i: ; preds = %212 + %216 = getelementptr inbounds i64, ptr %.val.i, i64 %131 + %217 = getelementptr inbounds i64, ptr %216, i64 %89 + br label %218 -220: ; preds = %.backedge, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i +218: ; preds = %.backedge, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i %.sroa.13.0.i = phi i8 [ undef, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.13.3.i, %.backedge ] %.sroa.8.0.i = phi i8 [ undef, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.8.4.i, %.backedge ] %.sroa.0.0.i167 = phi i64 [ 0, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.0.1.i, %.backedge ] %.sroa.1858.0.i = phi i64 [ undef, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.1858.4.i, %.backedge ] - %.sroa.22.0.i = phi ptr [ %218, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.22.2.i, %.backedge ] + %.sroa.22.0.i = phi ptr [ %216, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.22.2.i, %.backedge ] %.sroa.28.0.i = phi i8 [ 0, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %.sroa.28.2.i, %.backedge ] - %.sroa.32.0.i = phi i64 [ 0, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %239, %.backedge ] - %221 = icmp eq ptr %.sroa.22.0.i, %219 - br i1 %221, label %._crit_edge70.i.i.i, label %.lr.ph.i.i.i + %.sroa.32.0.i = phi i64 [ 0, %_ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit.i ], [ %237, %.backedge ] + %219 = icmp eq ptr %.sroa.22.0.i, %217 + br i1 %219, label %._crit_edge70.i.i.i, label %.lr.ph.i.i.i -._crit_edge70.i.i.i: ; preds = %220 - %222 = icmp ne i64 %.sroa.0.0.i167, 1 +._crit_edge70.i.i.i: ; preds = %218 + %220 = icmp ne i64 %.sroa.0.0.i167, 1 br label %._crit_edge.i.i.i -.lr.ph.i.i.i: ; preds = %220 - %223 = trunc nuw i64 %.sroa.0.0.i167 to i1 - br label %224 +.lr.ph.i.i.i: ; preds = %218 + %221 = trunc nuw i64 %.sroa.0.0.i167 to i1 + br label %222 -224: ; preds = %.backedge.i.i.i, %.lr.ph.i.i.i +222: ; preds = %.backedge.i.i.i, %.lr.ph.i.i.i %.sroa.8.1.i = phi i8 [ %.sroa.8.0.i, %.lr.ph.i.i.i ], [ %.sroa.8.2.i, %.backedge.i.i.i ] %.sroa.1858.1.i = phi i64 [ %.sroa.1858.0.i, %.lr.ph.i.i.i ], [ %.sroa.1858.2.i, %.backedge.i.i.i ] - %225 = phi i64 [ %.sroa.1858.0.i, %.lr.ph.i.i.i ], [ %233, %.backedge.i.i.i ] - %226 = phi i8 [ %.sroa.13.0.i, %.lr.ph.i.i.i ], [ %228, %.backedge.i.i.i ] - %227 = phi i8 [ %.sroa.8.0.i, %.lr.ph.i.i.i ], [ %234, %.backedge.i.i.i ] - %228 = phi i8 [ %.sroa.28.0.i, %.lr.ph.i.i.i ], [ %231, %.backedge.i.i.i ] - %229 = phi ptr [ %.sroa.22.0.i, %.lr.ph.i.i.i ], [ %230, %.backedge.i.i.i ] - %trunc.i.i.i = phi i1 [ %223, %.lr.ph.i.i.i ], [ true, %.backedge.i.i.i ] - %230 = getelementptr inbounds i8, ptr %229, i64 8 - %231 = add i8 %228, 1 - %232 = load i64, ptr %229, align 8, !noalias !632, !noundef !4 - br i1 %trunc.i.i.i, label %236, label %.backedge.i.i.i + %223 = phi i64 [ %.sroa.1858.0.i, %.lr.ph.i.i.i ], [ %231, %.backedge.i.i.i ] + %224 = phi i8 [ %.sroa.13.0.i, %.lr.ph.i.i.i ], [ %226, %.backedge.i.i.i ] + %225 = phi i8 [ %.sroa.8.0.i, %.lr.ph.i.i.i ], [ %232, %.backedge.i.i.i ] + %226 = phi i8 [ %.sroa.28.0.i, %.lr.ph.i.i.i ], [ %229, %.backedge.i.i.i ] + %227 = phi ptr [ %.sroa.22.0.i, %.lr.ph.i.i.i ], [ %228, %.backedge.i.i.i ] + %trunc.i.i.i = phi i1 [ %221, %.lr.ph.i.i.i ], [ true, %.backedge.i.i.i ] + %228 = getelementptr inbounds i8, ptr %227, i64 8 + %229 = add i8 %226, 1 + %230 = load i64, ptr %227, align 8, !noalias !632, !noundef !4 + br i1 %trunc.i.i.i, label %234, label %.backedge.i.i.i ._crit_edge.i.i.i: ; preds = %.backedge.i.i.i, %._crit_edge70.i.i.i - %.sroa.13.2.i = phi i8 [ %.sroa.13.0.i, %._crit_edge70.i.i.i ], [ %228, %.backedge.i.i.i ] + %.sroa.13.2.i = phi i8 [ %.sroa.13.0.i, %._crit_edge70.i.i.i ], [ %226, %.backedge.i.i.i ] %.sroa.8.3.i = phi i8 [ %.sroa.8.0.i, %._crit_edge70.i.i.i ], [ %.sroa.8.2.i, %.backedge.i.i.i ] %.sroa.1858.3.i = phi i64 [ %.sroa.1858.0.i, %._crit_edge70.i.i.i ], [ %.sroa.1858.2.i, %.backedge.i.i.i ] - %.sroa.28.1.i = phi i8 [ %.sroa.28.0.i, %._crit_edge70.i.i.i ], [ %231, %.backedge.i.i.i ] - %.sroa.736.0.copyload.i.i.i = phi i64 [ %.sroa.1858.0.i, %._crit_edge70.i.i.i ], [ %233, %.backedge.i.i.i ] - %.sroa.534.0.copyload.i.i.i = phi i8 [ %.sroa.8.0.i, %._crit_edge70.i.i.i ], [ %234, %.backedge.i.i.i ] - %.sroa.033.0.copyload.i.i.i = phi i1 [ %222, %._crit_edge70.i.i.i ], [ false, %.backedge.i.i.i ] + %.sroa.28.1.i = phi i8 [ %.sroa.28.0.i, %._crit_edge70.i.i.i ], [ %229, %.backedge.i.i.i ] + %.sroa.736.0.copyload.i.i.i = phi i64 [ %.sroa.1858.0.i, %._crit_edge70.i.i.i ], [ %231, %.backedge.i.i.i ] + %.sroa.534.0.copyload.i.i.i = phi i8 [ %.sroa.8.0.i, %._crit_edge70.i.i.i ], [ %232, %.backedge.i.i.i ] + %.sroa.033.0.copyload.i.i.i = phi i1 [ %220, %._crit_edge70.i.i.i ], [ false, %.backedge.i.i.i ] %.not44.i.i.i = icmp ult i64 %.sroa.736.0.copyload.i.i.i, 8796093022208 %or.cond.i.i.i = select i1 %.sroa.033.0.copyload.i.i.i, i1 true, i1 %.not44.i.i.i br i1 %or.cond.i.i.i, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit", label %.loopexit.i -.backedge.i.i.i: ; preds = %238, %236, %224 - %.sroa.8.2.i = phi i8 [ %228, %238 ], [ %228, %224 ], [ %.sroa.8.1.i, %236 ] - %.sroa.1858.2.i = phi i64 [ %232, %238 ], [ %232, %224 ], [ %.sroa.1858.1.i, %236 ] - %233 = phi i64 [ %232, %238 ], [ %232, %224 ], [ %225, %236 ] - %234 = phi i8 [ %228, %238 ], [ %228, %224 ], [ %227, %236 ] - %235 = icmp eq ptr %230, %219 - br i1 %235, label %._crit_edge.i.i.i, label %224 +.backedge.i.i.i: ; preds = %236, %234, %222 + %.sroa.8.2.i = phi i8 [ %226, %236 ], [ %226, %222 ], [ %.sroa.8.1.i, %234 ] + %.sroa.1858.2.i = phi i64 [ %230, %236 ], [ %230, %222 ], [ %.sroa.1858.1.i, %234 ] + %231 = phi i64 [ %230, %236 ], [ %230, %222 ], [ %223, %234 ] + %232 = phi i8 [ %226, %236 ], [ %226, %222 ], [ %225, %234 ] + %233 = icmp eq ptr %228, %217 + br i1 %233, label %._crit_edge.i.i.i, label %222 -236: ; preds = %224 - %237 = icmp eq i64 %225, %232 - br i1 %237, label %.backedge.i.i.i, label %238 +234: ; preds = %222 + %235 = icmp eq i64 %223, %230 + br i1 %235, label %.backedge.i.i.i, label %236 -238: ; preds = %236 - %.not45.i.i.i = icmp ult i64 %225, 8796093022208 +236: ; preds = %234 + %.not45.i.i.i = icmp ult i64 %223, 8796093022208 br i1 %.not45.i.i.i, label %.backedge.i.i.i, label %.loopexit.i -.loopexit.i: ; preds = %238, %._crit_edge.i.i.i - %.sroa.13.3.i = phi i8 [ %.sroa.13.2.i, %._crit_edge.i.i.i ], [ %228, %238 ] - %.sroa.8.4.i = phi i8 [ %.sroa.8.3.i, %._crit_edge.i.i.i ], [ %228, %238 ] - %.sroa.0.1.i = phi i64 [ 0, %._crit_edge.i.i.i ], [ 1, %238 ] - %.sroa.1858.4.i = phi i64 [ %.sroa.1858.3.i, %._crit_edge.i.i.i ], [ %232, %238 ] - %.sroa.22.2.i = phi ptr [ %219, %._crit_edge.i.i.i ], [ %230, %238 ] - %.sroa.28.2.i = phi i8 [ %.sroa.28.1.i, %._crit_edge.i.i.i ], [ %231, %238 ] - %.sroa.116.0.ph.i.i = phi i64 [ %.sroa.736.0.copyload.i.i.i, %._crit_edge.i.i.i ], [ %225, %238 ] - %.sroa.9.0.ph.i.i = phi i8 [ %.sroa.13.2.i, %._crit_edge.i.i.i ], [ %226, %238 ] - %.sroa.65.0.ph.i.i = phi i8 [ %.sroa.534.0.copyload.i.i.i, %._crit_edge.i.i.i ], [ %227, %238 ] - %239 = add i64 %.sroa.32.0.i, 1 - %240 = lshr i64 %.sroa.116.0.ph.i.i, 43 - %.not.i168 = icmp eq i64 %.sroa.32.0.i, 0 - br i1 %.not.i168, label %241, label %243 - -241: ; preds = %243, %.loopexit.i - %242 = icmp eq i8 %.sroa.65.0.ph.i.i, %.sroa.9.0.ph.i.i - br i1 %242, label %247, label %245 - -243: ; preds = %.loopexit.i +.loopexit.i: ; preds = %236, %._crit_edge.i.i.i + %.sroa.13.3.i = phi i8 [ %.sroa.13.2.i, %._crit_edge.i.i.i ], [ %226, %236 ] + %.sroa.8.4.i = phi i8 [ %.sroa.8.3.i, %._crit_edge.i.i.i ], [ %226, %236 ] + %.sroa.0.1.i = phi i64 [ 0, %._crit_edge.i.i.i ], [ 1, %236 ] + %.sroa.1858.4.i = phi i64 [ %.sroa.1858.3.i, %._crit_edge.i.i.i ], [ %230, %236 ] + %.sroa.22.2.i = phi ptr [ %217, %._crit_edge.i.i.i ], [ %228, %236 ] + %.sroa.28.2.i = phi i8 [ %.sroa.28.1.i, %._crit_edge.i.i.i ], [ %229, %236 ] + %.sroa.116.0.ph.i.i = phi i64 [ %.sroa.736.0.copyload.i.i.i, %._crit_edge.i.i.i ], [ %223, %236 ] + %.sroa.9.0.ph.i.i = phi i8 [ %.sroa.13.2.i, %._crit_edge.i.i.i ], [ %224, %236 ] + %.sroa.65.0.ph.i.i = phi i8 [ %.sroa.534.0.copyload.i.i.i, %._crit_edge.i.i.i ], [ %225, %236 ] + %237 = add i64 %.sroa.32.0.i, 1 + %238 = lshr i64 %.sroa.116.0.ph.i.i, 43 + %.not.i = icmp eq i64 %.sroa.32.0.i, 0 + br i1 %.not.i, label %239, label %241 + +239: ; preds = %241, %.loopexit.i + %240 = icmp eq i8 %.sroa.65.0.ph.i.i, %.sroa.9.0.ph.i.i + br i1 %240, label %245, label %243 + +241: ; preds = %.loopexit.i call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16), !noalias !639 store ptr @anon.451e762c733db03501c72f969938ebf7.95, ptr %16, align 8, !noalias !639 store i64 1, ptr %90, align 8, !noalias !639 store ptr null, ptr %91, align 8, !noalias !639 store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %92, align 8, !noalias !639 store i64 0, ptr %93, align 8, !noalias !639 - %244 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %16), !noalias !640 + %242 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %16), !noalias !640 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16), !noalias !639 - br i1 %244, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %241 + br i1 %242, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %239 -245: ; preds = %241 +243: ; preds = %239 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11), !noalias !639 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10), !noalias !639 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9), !noalias !639 @@ -4950,7 +4947,7 @@ _ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8), !noalias !639 store i8 %.sroa.9.0.ph.i.i, ptr %8, align 1, !noalias !639 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !639 - store i64 %240, ptr %7, align 8, !noalias !639 + store i64 %238, ptr %7, align 8, !noalias !639 store ptr %9, ptr %10, align 8, !noalias !639 store ptr @"_ZN76_$LT$regex_automata..util..escape..DebugByte$u20$as$u20$core..fmt..Debug$GT$3fmt17hd0c05c922a507f9eE", ptr %94, align 8, !noalias !639 store ptr %8, ptr %95, align 8, !noalias !639 @@ -4962,21 +4959,21 @@ _ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit store ptr null, ptr %100, align 8, !alias.scope !641, !noalias !644 store ptr %10, ptr %101, align 8, !alias.scope !641, !noalias !644 store i64 3, ptr %102, align 8, !alias.scope !641, !noalias !644 - %246 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %11), !noalias !640 + %244 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %11), !noalias !640 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11), !noalias !639 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !639 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8), !noalias !639 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9), !noalias !639 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10), !noalias !639 - br i1 %246, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %249 + br i1 %244, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %247 -247: ; preds = %241 +245: ; preds = %239 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15), !noalias !639 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14), !noalias !639 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13), !noalias !639 store i8 %.sroa.9.0.ph.i.i, ptr %13, align 1, !noalias !639 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12), !noalias !639 - store i64 %240, ptr %12, align 8, !noalias !639 + store i64 %238, ptr %12, align 8, !noalias !639 store ptr %13, ptr %14, align 8, !noalias !639 store ptr @"_ZN76_$LT$regex_automata..util..escape..DebugByte$u20$as$u20$core..fmt..Debug$GT$3fmt17hd0c05c922a507f9eE", ptr %103, align 8, !noalias !639 store ptr %12, ptr %104, align 8, !noalias !639 @@ -4986,39 +4983,39 @@ _ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit store ptr null, ptr %107, align 8, !alias.scope !647, !noalias !650 store ptr %14, ptr %108, align 8, !alias.scope !647, !noalias !650 store i64 2, ptr %109, align 8, !alias.scope !647, !noalias !650 - %248 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %15), !noalias !640 + %246 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %15), !noalias !640 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15), !noalias !639 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12), !noalias !639 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13), !noalias !639 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14), !noalias !639 - br i1 %248, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %249 + br i1 %246, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %247 -249: ; preds = %247, %245 - %250 = and i64 %.sroa.116.0.ph.i.i, 4398046511104 - %.not83.i = icmp eq i64 %250, 0 - br i1 %.not83.i, label %253, label %251 +247: ; preds = %245, %243 + %248 = and i64 %.sroa.116.0.ph.i.i, 4398046511104 + %.not83.i = icmp eq i64 %248, 0 + br i1 %.not83.i, label %251, label %249 -251: ; preds = %249 +249: ; preds = %247 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !639 store ptr @anon.451e762c733db03501c72f969938ebf7.101, ptr %6, align 8, !noalias !639 store i64 1, ptr %110, align 8, !noalias !639 store ptr null, ptr %111, align 8, !noalias !639 store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %112, align 8, !noalias !639 store i64 0, ptr %113, align 8, !noalias !639 - %252 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6), !noalias !640 + %250 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6), !noalias !640 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !639 - br i1 %252, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %253 + br i1 %250, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %251 -253: ; preds = %251, %249 - %254 = and i64 %.sroa.116.0.ph.i.i, 4398046511103 - %255 = icmp eq i64 %254, 0 - br i1 %255, label %.backedge, label %256 +251: ; preds = %249, %247 + %252 = and i64 %.sroa.116.0.ph.i.i, 4398046511103 + %253 = icmp eq i64 %252, 0 + br i1 %253, label %.backedge, label %254 -256: ; preds = %253 +254: ; preds = %251 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !639 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !639 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !639 - store i64 %254, ptr %3, align 8, !noalias !639 + store i64 %252, ptr %3, align 8, !noalias !639 store ptr %3, ptr %4, align 8, !noalias !639 store ptr @"_ZN75_$LT$regex_automata..dfa..onepass..Epsilons$u20$as$u20$core..fmt..Debug$GT$3fmt17hb7e0d2caa19c7cd6E", ptr %114, align 8, !noalias !639 store ptr @anon.451e762c733db03501c72f969938ebf7.91, ptr %5, align 8, !alias.scope !653, !noalias !656 @@ -5026,14 +5023,14 @@ _ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit store ptr null, ptr %116, align 8, !alias.scope !653, !noalias !656 store ptr %4, ptr %117, align 8, !alias.scope !653, !noalias !656 store i64 1, ptr %118, align 8, !alias.scope !653, !noalias !656 - %257 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5), !noalias !640 + %255 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5), !noalias !640 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5), !noalias !639 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !639 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !639 - br i1 %257, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %.backedge + br i1 %255, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %.backedge -.backedge: ; preds = %256, %253 - br label %220 +.backedge: ; preds = %254, %251 + br label %218 "_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit": ; preds = %._crit_edge.i.i.i call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %33) @@ -5042,14 +5039,14 @@ _ZN14regex_automata3dfa7onepass3DFA18sparse_transitions17h19be505e9343be78E.exit store ptr null, ptr %120, align 8 store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %121, align 8 store i64 0, ptr %122, align 8 - %258 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %33) + %256 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %33) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %33) - br i1 %258, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %259 + br i1 %256, label %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit.thread", label %257 -259: ; preds = %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit" +257: ; preds = %"_ZN70_$LT$regex_automata..dfa..onepass..DFA$u20$as$u20$core..fmt..Debug$GT$3fmt23debug_state_transitions17h50f54175d885717bE.exit" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) - %exitcond269.not = icmp eq i64 %129, %57 - br i1 %exitcond269.not, label %._crit_edge, label %128 + %exitcond268.not = icmp eq i64 %129, %57 + br i1 %exitcond268.not, label %._crit_edge, label %128 } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable @@ -5464,100 +5461,104 @@ define noundef zeroext i1 @"_ZN82_$LT$regex_automata..dfa..onepass..PatternEpsil %9 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, i64 } }, align 8 %10 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, i64 } }, align 8 %11 = load i64, ptr %0, align 8, !noundef !4 - %.not.i = icmp ugt i64 %11, -4398046511105 - %12 = and i64 %11, 4398046511103 - %13 = icmp eq i64 %12, 0 - %.0.i = and i1 %.not.i, %13 - br i1 %.0.i, label %16, label %14 + %.0.i = icmp eq i64 %11, -4398046511104 + br i1 %.0.i, label %14, label %12 -14: ; preds = %2 - %15 = lshr i64 %11, 42 - %.not = icmp eq i64 %15, 4194303 - br i1 %.not, label %.thread, label %22 +12: ; preds = %2 + %13 = lshr i64 %11, 42 + %.not = icmp eq i64 %13, 4194303 + br i1 %.not, label %.thread, label %20 -16: ; preds = %2 +14: ; preds = %2 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) store ptr @anon.451e762c733db03501c72f969938ebf7.111, ptr %10, align 8 - %17 = getelementptr inbounds i8, ptr %10, i64 8 - store i64 1, ptr %17, align 8 - %18 = getelementptr inbounds i8, ptr %10, i64 32 - store ptr null, ptr %18, align 8 - %19 = getelementptr inbounds i8, ptr %10, i64 16 - store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %19, align 8 - %20 = getelementptr inbounds i8, ptr %10, i64 24 - store i64 0, ptr %20, align 8 - %21 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %10) + %15 = getelementptr inbounds i8, ptr %10, i64 8 + store i64 1, ptr %15, align 8 + %16 = getelementptr inbounds i8, ptr %10, i64 32 + store ptr null, ptr %16, align 8 + %17 = getelementptr inbounds i8, ptr %10, i64 16 + store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %17, align 8 + %18 = getelementptr inbounds i8, ptr %10, i64 24 + store i64 0, ptr %18, align 8 + %19 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %10) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) - br label %29 + br label %32 -22: ; preds = %14 +20: ; preds = %12 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) - store i64 %15, ptr %7, align 8 + store i64 %13, ptr %7, align 8 store ptr %7, ptr %8, align 8 - %23 = getelementptr inbounds i8, ptr %8, i64 8 - store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h54d4af2b1bb3d966E", ptr %23, align 8 + %21 = getelementptr inbounds i8, ptr %8, i64 8 + store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h54d4af2b1bb3d966E", ptr %21, align 8 store ptr @anon.451e762c733db03501c72f969938ebf7.88, ptr %9, align 8, !alias.scope !724, !noalias !727 - %24 = getelementptr inbounds i8, ptr %9, i64 8 - store i64 1, ptr %24, align 8, !alias.scope !724, !noalias !727 - %25 = getelementptr inbounds i8, ptr %9, i64 32 - store ptr null, ptr %25, align 8, !alias.scope !724, !noalias !727 - %26 = getelementptr inbounds i8, ptr %9, i64 16 - store ptr %8, ptr %26, align 8, !alias.scope !724, !noalias !727 - %27 = getelementptr inbounds i8, ptr %9, i64 24 - store i64 1, ptr %27, align 8, !alias.scope !724, !noalias !727 - %28 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %9) + %22 = getelementptr inbounds i8, ptr %9, i64 8 + store i64 1, ptr %22, align 8, !alias.scope !724, !noalias !727 + %23 = getelementptr inbounds i8, ptr %9, i64 32 + store ptr null, ptr %23, align 8, !alias.scope !724, !noalias !727 + %24 = getelementptr inbounds i8, ptr %9, i64 16 + store ptr %8, ptr %24, align 8, !alias.scope !724, !noalias !727 + %25 = getelementptr inbounds i8, ptr %9, i64 24 + store i64 1, ptr %25, align 8, !alias.scope !724, !noalias !727 + %26 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %9) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) - %brmerge = or i1 %28, %13 - br i1 %brmerge, label %29, label %30 + br i1 %26, label %32, label %27 -.thread: ; preds = %14 - br i1 %13, label %29, label %.thread29 +27: ; preds = %20 + %28 = and i64 %11, 4398046511103 + %29 = icmp eq i64 %28, 0 + br i1 %29, label %32, label %33 -29: ; preds = %22, %.thread29, %.thread, %30, %16 - %.0 = phi i1 [ %21, %16 ], [ true, %30 ], [ false, %.thread ], [ %28, %22 ], [ %41, %.thread29 ] +.thread: ; preds = %12 + %30 = and i64 %11, 4398046511103 + %31 = icmp eq i64 %30, 0 + br i1 %31, label %32, label %.thread29 + +32: ; preds = %.thread29, %20, %.thread, %33, %27, %14 + %.0 = phi i1 [ %19, %14 ], [ true, %33 ], [ false, %27 ], [ false, %.thread ], [ true, %20 ], [ %45, %.thread29 ] ret i1 %.0 -30: ; preds = %22 +33: ; preds = %27 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) store ptr @anon.451e762c733db03501c72f969938ebf7.109, ptr %6, align 8 - %31 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 1, ptr %31, align 8 - %32 = getelementptr inbounds i8, ptr %6, i64 32 - store ptr null, ptr %32, align 8 - %33 = getelementptr inbounds i8, ptr %6, i64 16 - store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %33, align 8 - %34 = getelementptr inbounds i8, ptr %6, i64 24 - store i64 0, ptr %34, align 8 - %35 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6) + %34 = getelementptr inbounds i8, ptr %6, i64 8 + store i64 1, ptr %34, align 8 + %35 = getelementptr inbounds i8, ptr %6, i64 32 + store ptr null, ptr %35, align 8 + %36 = getelementptr inbounds i8, ptr %6, i64 16 + store ptr @anon.451e762c733db03501c72f969938ebf7.5, ptr %36, align 8 + %37 = getelementptr inbounds i8, ptr %6, i64 24 + store i64 0, ptr %37, align 8 + %38 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) - br i1 %35, label %29, label %.thread29 + br i1 %38, label %32, label %.thread29 -.thread29: ; preds = %.thread, %30 +.thread29: ; preds = %.thread, %33 + %39 = phi i64 [ %28, %33 ], [ %30, %.thread ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - store i64 %12, ptr %3, align 8 + store i64 %39, ptr %3, align 8 store ptr %3, ptr %4, align 8 - %36 = getelementptr inbounds i8, ptr %4, i64 8 - store ptr @"_ZN75_$LT$regex_automata..dfa..onepass..Epsilons$u20$as$u20$core..fmt..Debug$GT$3fmt17hb7e0d2caa19c7cd6E", ptr %36, align 8 + %40 = getelementptr inbounds i8, ptr %4, i64 8 + store ptr @"_ZN75_$LT$regex_automata..dfa..onepass..Epsilons$u20$as$u20$core..fmt..Debug$GT$3fmt17hb7e0d2caa19c7cd6E", ptr %40, align 8 store ptr @anon.451e762c733db03501c72f969938ebf7.88, ptr %5, align 8, !alias.scope !730, !noalias !733 - %37 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 1, ptr %37, align 8, !alias.scope !730, !noalias !733 - %38 = getelementptr inbounds i8, ptr %5, i64 32 - store ptr null, ptr %38, align 8, !alias.scope !730, !noalias !733 - %39 = getelementptr inbounds i8, ptr %5, i64 16 - store ptr %4, ptr %39, align 8, !alias.scope !730, !noalias !733 - %40 = getelementptr inbounds i8, ptr %5, i64 24 - store i64 1, ptr %40, align 8, !alias.scope !730, !noalias !733 - %41 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5) + %41 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 1, ptr %41, align 8, !alias.scope !730, !noalias !733 + %42 = getelementptr inbounds i8, ptr %5, i64 32 + store ptr null, ptr %42, align 8, !alias.scope !730, !noalias !733 + %43 = getelementptr inbounds i8, ptr %5, i64 16 + store ptr %4, ptr %43, align 8, !alias.scope !730, !noalias !733 + %44 = getelementptr inbounds i8, ptr %5, i64 24 + store i64 1, ptr %44, align 8, !alias.scope !730, !noalias !733 + %45 = call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - br label %29 + br label %32 } ; Function Attrs: nonlazybind uwtable