From df874ca07c440221d609db413a46bfb712ea1c3e Mon Sep 17 00:00:00 2001 From: Camsyn <65994555+Camsyn@users.noreply.github.com> Date: Sat, 1 Nov 2025 20:03:14 +0800 Subject: [PATCH 1/3] pre-commit: PR165976 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..49f3f58187c 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/165976 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From 95a6c85ea2cc09ea1d75608cd9419518caefcf35 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 12:31:10 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/extraUtilFile.ll | 130 +++++---- bench/abc/optimized/mapperTime.ll | 35 +-- bench/abc/optimized/mvcApi.ll | 60 ++-- .../optimized/cordz_functions_test.ll | 4 +- bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll | 120 ++++---- bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll | 36 +-- bench/arrow/optimized/stats.ll | 194 +++++++------ bench/assimp/optimized/FBXUtil.ll | 2 +- bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll | 16 +- bench/base64-rs/optimized/r7oyewqnuirpg2o.ll | 54 ++-- bench/bdwgc/optimized/cordxtra.ll | 84 +++--- bench/box2d/optimized/window.ll | 172 ++++++------ bench/chibicc/optimized/codegen.ll | 190 +++++++------ bench/clamav/optimized/regex_pcre.ll | 162 +++++------ bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll | 50 ++-- .../archive_write_add_filter_bzip2.ll | 201 +++++++------- .../optimized/3z39203exqv32wuh.ll | 6 +- bench/csmith/optimized/StatementContinue.ll | 40 +-- bench/darktable/optimized/OrfDecoder.ll | 192 +++++++------ bench/darktable/optimized/TableLookUp.ll | 117 ++++---- .../prediction_scheme_encoder_factory.ll | 7 +- bench/eastl/optimized/EACallback.ll | 163 +++++------ bench/entt/optimized/delegate.ll | 8 +- bench/ffmpeg/optimized/ac3enc_float.ll | 7 +- bench/ffmpeg/optimized/bitpacked_enc.ll | 47 ++-- bench/ffmpeg/optimized/framequeue.ll | 66 ++--- bench/ffmpeg/optimized/h266_metadata.ll | 62 ++--- bench/ffmpeg/optimized/lclenc.ll | 78 +++--- bench/ffmpeg/optimized/vqf.ll | 9 +- bench/ffmpeg/optimized/vsrc_cellauto.ll | 21 +- .../optimized/edge_project_xyz_onlypose.ll | 12 +- bench/g2o/optimized/estimate_propagator.ll | 42 +-- bench/glslang/optimized/Logger.ll | 60 ++-- bench/hdf5/optimized/h5format_convert.ll | 14 +- bench/hwloc/optimized/topology-xml-libxml.ll | 34 +-- bench/icu/optimized/csrmbcs.ll | 134 ++++----- bench/icu/optimized/ucmndata.ll | 198 ++++++------- bench/icu/optimized/uset.ll | 123 ++++----- .../influxdb-rs/optimized/4j71xiofmorb5iag.ll | 18 +- .../optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll | 260 +++++++++--------- bench/jsonnet/optimized/to_c_array.ll | 66 ++--- bench/libdeflate/optimized/prog_util.ll | 30 +- .../optimized/unicodestring_test.ll | 22 +- bench/libquic/optimized/pem_info.ll | 203 +++++++------- bench/libwebp/optimized/filters.ll | 73 +++-- bench/libwebp/optimized/filters_utils.ll | 104 ++++--- bench/lief/optimized/MemoryStream.ll | 28 +- bench/linux/optimized/cdrom.ll | 176 ++++++------ bench/linux/optimized/drm_mipi_dsi.ll | 51 ++-- bench/linux/optimized/early_printk.ll | 138 +++++----- bench/linux/optimized/xt_TCPMSS.ll | 162 +++++------ bench/lua/optimized/lmathlib.ll | 32 +-- bench/luajit/optimized/lib_bit.ll | 86 +++--- .../optimized/nd5rqkzol64hjfl.ll | 45 +-- .../meshoptimizer/optimized/vfetchanalyzer.ll | 14 +- bench/mimalloc/optimized/stats.ll | 211 +++++++------- .../mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll | 56 ++-- .../ms-gsl/optimized/strict_notnull_tests.ll | 24 +- .../nanobind/optimized/nb_static_property.ll | 10 +- bench/nuttx/optimized/lib_etheraton.ll | 186 ++++++------- bench/openblas/optimized/dbdsqr.ll | 8 +- bench/opencv/optimized/rmat.ll | 139 +++++----- bench/openjdk/optimized/NetworkInterface.ll | 140 +++++----- .../optimized/ProcessHandleImpl_linux.ll | 161 ++++++----- bench/openjdk/optimized/compileLog.ll | 177 ++++++------ bench/openmpi/optimized/pmix_vmem.ll | 209 +++++++------- bench/openssl/optimized/algorithmid_test.ll | 96 ++++--- bench/openssl/optimized/rsa_sp800_56b_gen.ll | 140 +++++----- bench/openssl/optimized/rsa_x931.ll | 71 ++--- .../optimized/local_to_model_job.ll | 44 +-- bench/pbrt-v4/optimized/lowdiscrepancy.ll | 28 +- bench/php/optimized/is_csv.ll | 157 +++++------ .../optimized/2646m1km3n3yt2qymmhrklrgn.ll | 58 ++-- bench/pocketpy/optimized/easing.ll | 48 ++-- bench/postgres/optimized/binaryheap.ll | 123 ++++----- bench/postgres/optimized/c_keywords.ll | 96 +++---- bench/postgres/optimized/int8.ll | 120 ++++---- bench/postgres/optimized/inval.ll | 28 +- .../optimized/stem_ISO_8859_1_indonesian.ll | 92 +++---- .../proj/optimized/proj_crs_to_crs_fuzzer.ll | 90 +++--- bench/protobuf/optimized/name_resolver.ll | 46 ++-- bench/protobuf/optimized/strtod.ll | 38 +-- bench/qemu/optimized/user.ll | 189 +++++++------ bench/qoi/optimized/qoi.ll | 72 ++--- bench/quantlib/optimized/asx.ll | 135 ++++----- bench/quantlib/optimized/cashflows.ll | 5 +- bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll | 20 +- bench/redis/optimized/luac.ll | 131 ++++----- bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll | 26 +- bench/rocksdb/optimized/hash_skiplist_rep.ll | 98 ++++--- bench/ruby/optimized/emacs_mule.ll | 141 +++++----- .../optimized/1siyoufv1amkefl9.ll | 169 ++++++------ .../optimized/6ix1w6o1enhavym.ll | 191 +++++++------ bench/sdl/optimized/SDL_asyncio_generic.ll | 114 ++++---- bench/slurm/optimized/auth_munge.ll | 130 ++++----- bench/smol-rs/optimized/38abr5s50jd6yipr.ll | 58 ++-- bench/stat-rs/optimized/n94tvlll45kxl7r.ll | 154 ++++++----- bench/stb/optimized/stb_hexwave.ll | 78 +++--- .../optimized/74s3x9u7hld928rwmttmetb1y.ll | 82 +++--- .../optimized/7fw9xnh6zcxu0x094jeq6b04v.ll | 12 +- .../optimized/60j53jvfo3q6evfl1azfnvp1c.ll | 14 +- .../optimized/dcex2dbpz9063ood2sxvmfunc.ll | 93 ++++--- bench/wireshark/optimized/iana-ip.ll | 65 ++--- bench/wireshark/optimized/wscbor.ll | 156 +++++------ .../optimized/24by81cawhgy3ha68pxt0cn41.ll | 108 ++++---- .../optimized/8fmnxi5cxgxler9gfhr96spqd.ll | 86 +++--- .../optimized/b2pucgguwqp4qxkwg6j77083l.ll | 194 ++++++------- .../optimized/4u0dswi9tif78fn5u6xqz5z9a.ll | 65 +++-- 108 files changed, 4806 insertions(+), 4834 deletions(-) diff --git a/bench/abc/optimized/extraUtilFile.ll b/bench/abc/optimized/extraUtilFile.ll index 6d0e951bfbd..e9f45824ac3 100644 --- a/bench/abc/optimized/extraUtilFile.ll +++ b/bench/abc/optimized/extraUtilFile.ll @@ -910,21 +910,18 @@ Extra_ReadHex.exit: ; preds = %27, %32, %._crit_ed ; Function Attrs: nofree nounwind uwtable define void @Extra_PrintHexadecimal(ptr noundef captures(none) %0, ptr noundef readonly captures(none) %1, i32 noundef %2) local_unnamed_addr #1 { %4 = shl nuw i32 1, %2 - %5 = icmp sgt i32 %4, 3 - br i1 %5, label %.lr.ph.preheader, label %._crit_edge - -.lr.ph.preheader: ; preds = %3 - %6 = lshr i32 %4, 2 - br label %.lr.ph + %5 = sdiv i32 %4, 4 + %.012 = add nsw i32 %5, -1 + %6 = icmp ult i32 %.012, 536870911 + br i1 %6, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %.lr.ph.preheader, %20 - %.013.in = phi i32 [ %.013, %20 ], [ %6, %.lr.ph.preheader ] - %.013 = add nsw i32 %.013.in, -1 +.lr.ph: ; preds = %3, %20 + %.013 = phi i32 [ %.0, %20 ], [ %.012, %3 ] %7 = lshr i32 %.013, 3 %8 = zext nneg i32 %7 to i64 %9 = getelementptr inbounds nuw i32, ptr %1, i64 %8 %10 = load i32, ptr %9, align 4, !tbaa !16 - %11 = shl i32 %.013, 2 + %11 = shl nuw nsw i32 %.013, 2 %12 = and i32 %11, 28 %13 = lshr i32 %10, %12 %14 = and i32 %13, 15 @@ -941,7 +938,8 @@ define void @Extra_PrintHexadecimal(ptr noundef captures(none) %0, ptr noundef r br label %20 20: ; preds = %16, %18 - %21 = icmp samesign ugt i32 %.013.in, 1 + %.0 = add nsw i32 %.013, -1 + %21 = icmp ult i32 %.0, 536870910 br i1 %21, label %.lr.ph, label %._crit_edge, !llvm.loop !21 ._crit_edge: ; preds = %20, %3 @@ -952,74 +950,72 @@ define void @Extra_PrintHexadecimal(ptr noundef captures(none) %0, ptr noundef r define void @Extra_PrintHexadecimalString(ptr noundef writeonly captures(none) %0, ptr noundef readonly captures(none) %1, i32 noundef %2) local_unnamed_addr #9 { switch i32 %2, label %.critedge31 [ i32 0, label %4 - i32 1, label %9 + i32 1, label %10 ] 4: ; preds = %3 %5 = load i32, ptr %1, align 4, !tbaa !16 %6 = and i32 %5, 1 - %.not = icmp eq i32 %6, 0 - br i1 %.not, label %7, label %8 + %7 = icmp eq i32 %6, 0 + br i1 %7, label %8, label %9 -7: ; preds = %4 +8: ; preds = %4 store i16 48, ptr %0, align 1 - br label %30 + br label %32 -8: ; preds = %4 +9: ; preds = %4 store i16 49, ptr %0, align 1 - br label %30 + br label %32 -9: ; preds = %3 - %10 = load i32, ptr %1, align 4, !tbaa !16 - %11 = and i32 %10, 1 - %.not28 = icmp eq i32 %11, 0 - br i1 %.not28, label %13, label %12 +10: ; preds = %3 + %11 = load i32, ptr %1, align 4, !tbaa !16 + %12 = and i32 %11, 1 + %13 = icmp eq i32 %12, 0 + br i1 %13, label %15, label %14 -12: ; preds = %9 +14: ; preds = %10 store i16 49, ptr %0, align 1 - br label %30 + br label %32 -13: ; preds = %9 +15: ; preds = %10 store i16 50, ptr %0, align 1 - br label %30 + br label %32 .critedge31: ; preds = %3 - %14 = shl nuw i32 1, %2 - %15 = icmp sgt i32 %14, 3 - br i1 %15, label %.lr.ph.preheader, label %._crit_edge - -.lr.ph.preheader: ; preds = %.critedge31 - %16 = lshr i32 %14, 2 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.0.in33 = phi i32 [ %.0, %.lr.ph ], [ %16, %.lr.ph.preheader ] - %.02432 = phi ptr [ %.1, %.lr.ph ], [ %0, %.lr.ph.preheader ] - %.0 = add nsw i32 %.0.in33, -1 - %17 = lshr i32 %.0, 3 - %18 = zext nneg i32 %17 to i64 - %19 = getelementptr inbounds nuw i32, ptr %1, i64 %18 - %20 = load i32, ptr %19, align 4, !tbaa !16 - %21 = shl i32 %.0, 2 - %22 = and i32 %21, 28 - %23 = lshr i32 %20, %22 - %24 = and i32 %23, 15 - %25 = icmp samesign ult i32 %24, 10 - %26 = trunc nuw nsw i32 %24 to i8 - %27 = add nuw nsw i8 %26, 87 - %28 = or disjoint i8 %26, 48 - %storemerge = select i1 %25, i8 %28, i8 %27 - %.1 = getelementptr inbounds nuw i8, ptr %.02432, i64 1 - store i8 %storemerge, ptr %.02432, align 1, !tbaa !3 - %29 = icmp samesign ugt i32 %.0.in33, 1 - br i1 %29, label %.lr.ph, label %._crit_edge, !llvm.loop !22 + %16 = shl nuw i32 1, %2 + %17 = sdiv i32 %16, 4 + %.032 = add nsw i32 %17, -1 + %18 = icmp ult i32 %.032, 536870911 + br i1 %18, label %.lr.ph, label %._crit_edge + +.lr.ph: ; preds = %.critedge31, %.lr.ph + %.034 = phi i32 [ %.0, %.lr.ph ], [ %.032, %.critedge31 ] + %.02433 = phi ptr [ %.1, %.lr.ph ], [ %0, %.critedge31 ] + %19 = lshr i32 %.034, 3 + %20 = zext nneg i32 %19 to i64 + %21 = getelementptr inbounds nuw i32, ptr %1, i64 %20 + %22 = load i32, ptr %21, align 4, !tbaa !16 + %23 = shl nuw nsw i32 %.034, 2 + %24 = and i32 %23, 28 + %25 = lshr i32 %22, %24 + %26 = and i32 %25, 15 + %27 = icmp samesign ult i32 %26, 10 + %28 = trunc nuw nsw i32 %26 to i8 + %29 = add nuw nsw i8 %28, 87 + %30 = or disjoint i8 %28, 48 + %storemerge = select i1 %27, i8 %30, i8 %29 + %.1 = getelementptr inbounds nuw i8, ptr %.02433, i64 1 + store i8 %storemerge, ptr %.02433, align 1, !tbaa !3 + %.0 = add nsw i32 %.034, -1 + %31 = icmp ult i32 %.0, 536870911 + br i1 %31, label %.lr.ph, label %._crit_edge, !llvm.loop !22 ._crit_edge: ; preds = %.lr.ph, %.critedge31 %.024.lcssa = phi ptr [ %0, %.critedge31 ], [ %.1, %.lr.ph ] store i8 0, ptr %.024.lcssa, align 1, !tbaa !3 - br label %30 + br label %32 -30: ; preds = %._crit_edge, %13, %12, %8, %7 +32: ; preds = %._crit_edge, %15, %14, %9, %8 ret void } @@ -1032,12 +1028,12 @@ define void @Extra_PrintHex(ptr noundef captures(none) %0, ptr noundef readonly %8 = icmp sgt i32 %7, 0 %9 = zext i1 %8 to i32 %10 = add nsw i32 %6, %9 - %11 = icmp sgt i32 %10, 0 + %.015 = add nsw i32 %10, -1 + %11 = icmp ult i32 %.015, 536870912 br i1 %11, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3, %24 - %.016.in = phi i32 [ %.016, %24 ], [ %10, %3 ] - %.016 = add nsw i32 %.016.in, -1 + %.016 = phi i32 [ %.0, %24 ], [ %.015, %3 ] %12 = lshr i32 %.016, 3 %13 = zext nneg i32 %12 to i64 %14 = getelementptr inbounds nuw i32, ptr %1, i64 %13 @@ -1058,7 +1054,8 @@ define void @Extra_PrintHex(ptr noundef captures(none) %0, ptr noundef readonly br label %24 24: ; preds = %20, %22 - %25 = icmp samesign ugt i32 %.016.in, 1 + %.0 = add nsw i32 %.016, -1 + %25 = icmp ult i32 %.0, 536870911 br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !23 ._crit_edge: ; preds = %24, %3 @@ -1073,12 +1070,12 @@ define void @Extra_PrintHex2(ptr noundef captures(none) %0, ptr noundef readonly %7 = icmp sgt i32 %6, 0 %8 = zext i1 %7 to i32 %9 = add nsw i32 %5, %8 - %10 = icmp sgt i32 %9, 0 + %.014 = add nsw i32 %9, -1 + %10 = icmp ult i32 %.014, 536870912 br i1 %10, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3, %23 - %.015.in = phi i32 [ %.015, %23 ], [ %9, %3 ] - %.015 = add nsw i32 %.015.in, -1 + %.015 = phi i32 [ %.0, %23 ], [ %.014, %3 ] %11 = lshr i32 %.015, 3 %12 = zext nneg i32 %11 to i64 %13 = getelementptr inbounds nuw i32, ptr %1, i64 %12 @@ -1099,7 +1096,8 @@ define void @Extra_PrintHex2(ptr noundef captures(none) %0, ptr noundef readonly br label %23 23: ; preds = %19, %21 - %24 = icmp samesign ugt i32 %.015.in, 1 + %.0 = add nsw i32 %.015, -1 + %24 = icmp ult i32 %.0, 536870911 br i1 %24, label %.lr.ph, label %._crit_edge, !llvm.loop !24 ._crit_edge: ; preds = %23, %3 diff --git a/bench/abc/optimized/mapperTime.ll b/bench/abc/optimized/mapperTime.ll index ac4957aa6bf..122c4257c07 100644 --- a/bench/abc/optimized/mapperTime.ll +++ b/bench/abc/optimized/mapperTime.ll @@ -94,15 +94,16 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, store float 0x47B9999980000000, ptr %25, align 4, !tbaa !24 %26 = getelementptr inbounds nuw i8, ptr %1, i64 76 %27 = load i8, ptr %26, align 4, !tbaa !41 - %28 = icmp sgt i8 %27, 0 - br i1 %28, label %.lr.ph, label %._crit_edge + %28 = sext i8 %27 to i32 + %.085 = add nsw i32 %28, -1 + %29 = icmp ult i32 %.085, 127 + br i1 %29, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %22 - %29 = xor i32 %11, -1 - %30 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %31 = getelementptr inbounds nuw i8, ptr %9, i64 80 - %32 = getelementptr inbounds nuw i8, ptr %9, i64 152 - %33 = zext nneg i8 %27 to i64 + %30 = xor i32 %11, -1 + %31 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %32 = getelementptr inbounds nuw i8, ptr %9, i64 80 + %33 = getelementptr inbounds nuw i8, ptr %9, i64 152 br label %34 34: ; preds = %.lr.ph, %102 @@ -110,17 +111,16 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, %36 = phi float [ 0.000000e+00, %.lr.ph ], [ %104, %102 ] %37 = phi float [ 0.000000e+00, %.lr.ph ], [ %74, %102 ] %38 = phi float [ 0.000000e+00, %.lr.ph ], [ %75, %102 ] - %indvars.iv = phi i64 [ %33, %.lr.ph ], [ %indvars.iv.next, %102 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %39 = trunc nsw i64 %indvars.iv.next to i32 - %40 = lshr i32 %29, %39 - %41 = and i32 %40, 1 - %42 = getelementptr inbounds nuw ptr, ptr %30, i64 %indvars.iv.next + %.086 = phi i32 [ %.085, %.lr.ph ], [ %.0, %102 ] + %39 = lshr i32 %30, %.086 + %40 = and i32 %39, 1 + %41 = zext nneg i32 %.086 to i64 + %42 = getelementptr inbounds nuw ptr, ptr %31, i64 %41 %43 = load ptr, ptr %42, align 8, !tbaa !23 %44 = getelementptr inbounds nuw i8, ptr %43, i64 96 - %45 = zext nneg i32 %41 to i64 + %45 = zext nneg i32 %40 to i64 %46 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %44, i64 %45 - %47 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %31, i64 %indvars.iv.next + %47 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %32, i64 %41 %48 = load float, ptr %47, align 4, !tbaa !40 %49 = fcmp ogt float %48, 0.000000e+00 br i1 %49, label %50, label %58 @@ -167,7 +167,7 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, 73: ; preds = %70, %72, %58 %74 = phi float [ %59, %70 ], [ %68, %72 ], [ %59, %58 ] %75 = phi float [ %59, %70 ], [ %68, %72 ], [ %60, %58 ] - %76 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %32, i64 %indvars.iv.next + %76 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %33, i64 %41 %77 = load float, ptr %76, align 4, !tbaa !40 %78 = fcmp ogt float %77, 0.000000e+00 br i1 %78, label %79, label %87 @@ -214,7 +214,8 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, 102: ; preds = %87, %101, %99 %103 = phi float [ %88, %87 ], [ %97, %101 ], [ %88, %99 ] %104 = phi float [ %89, %87 ], [ %97, %101 ], [ %88, %99 ] - %105 = icmp samesign ugt i64 %indvars.iv, 1 + %.0 = add nsw i32 %.086, -1 + %105 = icmp ult i32 %.0, 126 br i1 %105, label %34, label %._crit_edge, !llvm.loop !43 ._crit_edge: ; preds = %102, %22 diff --git a/bench/abc/optimized/mvcApi.ll b/bench/abc/optimized/mvcApi.ll index fd1275f556d..ec146b30f32 100644 --- a/bench/abc/optimized/mvcApi.ll +++ b/bench/abc/optimized/mvcApi.ll @@ -146,13 +146,13 @@ define range(i32 0, 2) i32 @Mvc_CoverIsBinaryBuffer(ptr noundef readonly capture %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i32, ptr %2, align 8, !tbaa !14 %.not = icmp eq i32 %3, 2 - br i1 %.not, label %4, label %13 + br i1 %.not, label %4, label %14 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 32 %6 = load i32, ptr %5, align 8, !tbaa !15 %.not5 = icmp eq i32 %6, 1 - br i1 %.not5, label %7, label %13 + br i1 %.not5, label %7, label %14 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -160,11 +160,11 @@ define range(i32 0, 2) i32 @Mvc_CoverIsBinaryBuffer(ptr noundef readonly capture %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 %11 = load i32, ptr %10, align 8, !tbaa !23 %12 = and i32 %11, 3 - %or.cond.not = icmp eq i32 %12, 2 - %spec.select = zext i1 %or.cond.not to i32 - br label %13 + %13 = icmp eq i32 %12, 2 + %spec.select = zext i1 %13 to i32 + br label %14 -13: ; preds = %7, %4, %1 +14: ; preds = %7, %4, %1 %.0 = phi i32 [ 0, %1 ], [ 0, %4 ], [ %spec.select, %7 ] ret i32 %.0 } @@ -241,13 +241,19 @@ Mvc_CoverMakeEmpty.exit: ; preds = %.lr.ph.i, %1 %24 = zext nneg i32 %8 to i64 %25 = getelementptr inbounds nuw i32, ptr %23, i64 %24 store i32 %22, ptr %25, align 4, !tbaa !23 - %26 = shl i32 %7, 2 - %27 = and i32 %26, 67108860 - %28 = zext nneg i32 %27 to i64 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %23, i8 -1, i64 %28, i1 false), !tbaa !23 - br label %.loopexit - -.loopexit: ; preds = %.lr.ph.preheader, %14, %9 + %.027 = add nsw i32 %8, -1 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.028 = phi i32 [ %.0, %.lr.ph ], [ %.027, %.lr.ph.preheader ] + %26 = zext nneg i32 %.028 to i64 + %27 = getelementptr inbounds nuw i32, ptr %23, i64 %26 + store i32 -1, ptr %27, align 4, !tbaa !23 + %.0 = add nsw i32 %.028, -1 + %28 = icmp ult i32 %.0, 16777215 + br i1 %28, label %.lr.ph, label %.loopexit, !llvm.loop !29 + +.loopexit: ; preds = %.lr.ph, %14, %9 %29 = load ptr, ptr %2, align 8, !tbaa !19 %30 = icmp eq ptr %29, null br i1 %30, label %31, label %32 @@ -278,7 +284,7 @@ declare ptr @Mvc_CubeAlloc(ptr noundef) local_unnamed_addr #8 ; Function Attrs: nounwind uwtable define ptr @Mvc_CoverCreateEmpty(ptr noundef readonly captures(none) %0) local_unnamed_addr #7 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %3 = load ptr, ptr %2, align 8, !tbaa !29 + %3 = load ptr, ptr %2, align 8, !tbaa !30 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load i32, ptr %4, align 8, !tbaa !14 %6 = tail call ptr @Mvc_CoverAlloc(ptr noundef %3, i32 noundef %5) #10 @@ -290,7 +296,7 @@ declare ptr @Mvc_CoverAlloc(ptr noundef, i32 noundef) local_unnamed_addr #8 ; Function Attrs: nounwind uwtable define noundef ptr @Mvc_CoverCreateTautology(ptr noundef readonly captures(none) %0) local_unnamed_addr #7 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %3 = load ptr, ptr %2, align 8, !tbaa !29 + %3 = load ptr, ptr %2, align 8, !tbaa !30 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load i32, ptr %4, align 8, !tbaa !14 %6 = tail call ptr @Mvc_CoverAlloc(ptr noundef %3, i32 noundef %5) #10 @@ -329,13 +335,19 @@ define noundef ptr @Mvc_CoverCreateTautology(ptr noundef readonly captures(none) %26 = zext nneg i32 %10 to i64 %27 = getelementptr inbounds nuw i32, ptr %25, i64 %26 store i32 %24, ptr %27, align 4, !tbaa !23 - %28 = shl i32 %9, 2 - %29 = and i32 %28, 67108860 - %30 = zext nneg i32 %29 to i64 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %25, i8 -1, i64 %30, i1 false), !tbaa !23 - br label %.loopexit - -.loopexit: ; preds = %.lr.ph.preheader, %16, %11 + %.029 = add nsw i32 %10, -1 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.030 = phi i32 [ %.0, %.lr.ph ], [ %.029, %.lr.ph.preheader ] + %28 = zext nneg i32 %.030 to i64 + %29 = getelementptr inbounds nuw i32, ptr %25, i64 %28 + store i32 -1, ptr %29, align 4, !tbaa !23 + %.0 = add nsw i32 %.030, -1 + %30 = icmp ult i32 %.0, 16777215 + br i1 %30, label %.lr.ph, label %.loopexit, !llvm.loop !31 + +.loopexit: ; preds = %.lr.ph, %16, %11 %31 = getelementptr inbounds nuw i8, ptr %6, i64 16 %32 = load ptr, ptr %31, align 8, !tbaa !19 %33 = icmp eq ptr %32, null @@ -408,4 +420,6 @@ attributes #10 = { nounwind } !26 = !{!27, !9, i64 0} !27 = !{!"MvcCubeStruct", !9, i64 0, !5, i64 8, !5, i64 11, !5, i64 11, !5, i64 11, !5, i64 12, !6, i64 16} !28 = distinct !{!28, !25} -!29 = !{!4, !13, i64 72} +!29 = distinct !{!29, !25} +!30 = !{!4, !13, i64 72} +!31 = distinct !{!31, !25} diff --git a/bench/abseil-cpp/optimized/cordz_functions_test.ll b/bench/abseil-cpp/optimized/cordz_functions_test.ll index edcddf82094..0930fedae87 100644 --- a/bench/abseil-cpp/optimized/cordz_functions_test.ll +++ b/bench/abseil-cpp/optimized/cordz_functions_test.ll @@ -6736,8 +6736,8 @@ _ZN4absl13cord_internal20cordz_should_profileEv.exit: ; preds = %20, %22 %24 = phi i64 [ %21, %20 ], [ %.pre, %22 ] %25 = add nsw i64 %17, %24 %26 = add nuw nsw i32 %.035, 1 - %exitcond.not = icmp eq i32 %26, 10000 - br i1 %exitcond.not, label %13, label %16, !llvm.loop !241 + %.not = icmp eq i32 %26, 10000 + br i1 %.not, label %13, label %16, !llvm.loop !241 27: ; preds = %13 call void @llvm.lifetime.start.p0(ptr nonnull %5) diff --git a/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll b/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll index 6b6ac3c3849..0c953b38ffe 100644 --- a/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll +++ b/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll @@ -273,9 +273,9 @@ define internal void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$ %6 = icmp ult i64 %5, 4 %7 = select i1 %6, i64 %5, i64 2 switch i64 %7, label %.unreachabledefault [ - i64 0, label %18 - i64 1, label %18 - i64 2, label %19 + i64 0, label %19 + i64 1, label %19 + i64 2, label %20 i64 3, label %8 ] @@ -288,49 +288,49 @@ define internal void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$ call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbb245e3ee45a3854E.llvm.1711877461099840233"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %9) %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 %11 = load i64, ptr %10, align 8, !range !35, !noalias !26, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %11, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %12 - -12: ; preds = %8 - %13 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %14 = load i64, ptr %13, align 8, !noalias !26, !noundef !4 - %15 = icmp eq i64 %14, 0 - br i1 %15, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %16 - -16: ; preds = %12 - %17 = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %17, i64 noundef %14, i64 noundef %11) #17 + %12 = icmp eq i64 %11, 0 + br i1 %12, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %13 + +13: ; preds = %8 + %14 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %15 = load i64, ptr %14, align 8, !noalias !26, !noundef !4 + %16 = icmp eq i64 %15, 0 + br i1 %16, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %17 + +17: ; preds = %13 + %18 = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %15, i64 noundef %11) #17 br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit": ; preds = %8, %12, %16 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit": ; preds = %8, %13, %17 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !26 - br label %18 + br label %19 -18: ; preds = %1, %1, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2", %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit" +19: ; preds = %1, %1, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1", %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit" ret void -19: ; preds = %1 +20: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !36 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbb245e3ee45a3854E.llvm.1711877461099840233"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0) - %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %21 = load i64, ptr %20, align 8, !range !35, !noalias !36, !noundef !4 - %.not.i.i.i.i1 = icmp eq i64 %21, 0 - br i1 %.not.i.i.i.i1, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2", label %22 - -22: ; preds = %19 - %23 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %24 = load i64, ptr %23, align 8, !noalias !36, !noundef !4 - %25 = icmp eq i64 %24, 0 - br i1 %25, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2", label %26 - -26: ; preds = %22 - %27 = load ptr, ptr %2, align 8, !noalias !36, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %27, i64 noundef %24, i64 noundef %21) #17 - br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2" - -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2": ; preds = %19, %22, %26 + %21 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %22 = load i64, ptr %21, align 8, !range !35, !noalias !36, !noundef !4 + %23 = icmp eq i64 %22, 0 + br i1 %23, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1", label %24 + +24: ; preds = %20 + %25 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %26 = load i64, ptr %25, align 8, !noalias !36, !noundef !4 + %27 = icmp eq i64 %26, 0 + br i1 %27, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1", label %28 + +28: ; preds = %24 + %29 = load ptr, ptr %2, align 8, !noalias !36, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %29, i64 noundef %26, i64 noundef %22) #17 + br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1" + +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1": ; preds = %20, %24, %28 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !36 - br label %18 + br label %19 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -356,18 +356,17 @@ define internal void @"_ZN4core3ptr55drop_in_place$LT$$RF$core..option..Option$L ; Function Attrs: nonlazybind uwtable define internal void @"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE"(ptr noalias noundef align 8 dereferenceable(40) %0) unnamed_addr #0 { %2 = load i64, ptr %0, align 8, !range !45, !noundef !4 - %3 = add i64 %2, 9223372036854775804 - %4 = icmp ugt i64 %3, 2 - %cond1 = icmp eq i64 %3, 1 - %cond = or i1 %4, %cond1 - br i1 %cond, label %6, label %5 + %3 = icmp ult i64 %2, -9223372036854775804 + %4 = icmp eq i64 %2, -9223372036854775803 + %5 = or i1 %3, %4 + br i1 %5, label %7, label %6 -5: ; preds = %1, %6 +6: ; preds = %1, %7 ret void -6: ; preds = %1 +7: ; preds = %1 tail call void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$GT$17h69b7813d61c189c1E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %0) - br label %5 + br label %6 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -939,7 +938,7 @@ define { ptr, ptr } @_ZN15actix_multipart4form4text10TextConfig9map_error17hb2fe %17 = load ptr, ptr %16, align 8, !invariant.load !4, !nonnull !4 %18 = call { ptr, ptr } %17(ptr noundef align 1 %14, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %34 + br label %35 19: ; preds = %3 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !173 @@ -958,33 +957,32 @@ define { ptr, ptr } @_ZN15actix_multipart4form4text10TextConfig9map_error17hb2fe %25 = landingpad { ptr, i32 } cleanup %26 = load i64, ptr %2, align 8, !range !45, !alias.scope !176, !noundef !4 - %27 = add i64 %26, 9223372036854775804 - %28 = icmp ugt i64 %27, 2 - %cond1.i = icmp eq i64 %27, 1 - %cond.i = or i1 %28, %cond1.i - br i1 %cond.i, label %29, label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" + %27 = icmp ult i64 %26, -9223372036854775804 + %28 = icmp eq i64 %26, -9223372036854775803 + %29 = or i1 %27, %28 + br i1 %29, label %30, label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" -29: ; preds = %24 +30: ; preds = %24 invoke void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$GT$17h69b7813d61c189c1E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2) - to label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" unwind label %30 + to label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" unwind label %31 -30: ; preds = %29 - %31 = landingpad { ptr, i32 } +31: ; preds = %30 + %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20 unreachable -"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit": ; preds = %24, %29 +"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit": ; preds = %24, %30 resume { ptr, i32 } %25 "_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit": ; preds = %19 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) - %32 = insertvalue { ptr, ptr } poison, ptr %21, 0 - %33 = insertvalue { ptr, ptr } %32, ptr @anon.f756f0e7123b03624cceb0e3cdb83315.32, 1 - br label %34 + %33 = insertvalue { ptr, ptr } poison, ptr %21, 0 + %34 = insertvalue { ptr, ptr } %33, ptr @anon.f756f0e7123b03624cceb0e3cdb83315.32, 1 + br label %35 -34: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit", %6 - %.merged = phi { ptr, ptr } [ %18, %6 ], [ %33, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit" ] +35: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit", %6 + %.merged = phi { ptr, ptr } [ %18, %6 ], [ %34, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit" ] ret { ptr, ptr } %.merged } diff --git a/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll b/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll index e7bf7234936..67e50bdda29 100644 --- a/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll +++ b/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll @@ -100,35 +100,35 @@ define internal void @"_ZN4core3ptr43drop_in_place$LT$$RF$std..path..PathBuf$GT$ ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN4core3ptr43drop_in_place$LT$anki_io..error..FileOp$GT$17hc8f48f1b0acd5228E.llvm.14975624700125130854"(ptr noalias noundef align 8 dereferenceable(32) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = load i64, ptr %0, align 8, !range !9, !noundef !4 - %cond = icmp eq i64 %2, 5 - br i1 %cond, label %4, label %3 + %3 = icmp eq i64 %2, 5 + br i1 %3, label %5, label %4 -3: ; preds = %1, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" +4: ; preds = %1, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" ret void -4: ; preds = %1 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 - invoke void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h94b600fcc699398cE.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) - to label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" unwind label %6 +5: ; preds = %1 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 + invoke void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h94b600fcc699398cE.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) + to label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" unwind label %7 -6: ; preds = %4 - %7 = landingpad { ptr, i32 } +7: ; preds = %5 + %8 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) - to label %"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i" unwind label %8 + invoke void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) + to label %"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i" unwind label %9 -8: ; preds = %6 - %9 = landingpad { ptr, i32 } +9: ; preds = %7 + %10 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #10 unreachable -"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i": ; preds = %6 - resume { ptr, i32 } %7 +"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i": ; preds = %7 + resume { ptr, i32 } %8 -"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit": ; preds = %4 - tail call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) - br label %3 +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit": ; preds = %5 + tail call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) + br label %4 } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/arrow/optimized/stats.ll b/bench/arrow/optimized/stats.ll index e371ddbdce2..c5c4f108f80 100644 --- a/bench/arrow/optimized/stats.ll +++ b/bench/arrow/optimized/stats.ll @@ -1191,81 +1191,77 @@ define internal void @mi_buffered_out(ptr noundef readonly captures(address_is_n define internal fastcc void @mi_stat_print(ptr noundef readonly captures(none) %0, ptr noundef %1, i64 noundef range(i64 -1, 2) %2, ptr noundef nonnull %3) unnamed_addr #2 { %5 = alloca [32 x i8], align 16 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.31, ptr noundef %1) #10 - %6 = icmp sgt i64 %2, 0 - br i1 %6, label %7, label %20 - -7: ; preds = %4 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %9 = load i64, ptr %8, align 8, !tbaa !13 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %7 = load i64, ptr %6, align 8, !tbaa !13 + switch i64 %2, label %30 [ + i64 1, label %8 + i64 -1, label %19 + ] + +8: ; preds = %4 + tail call fastcc void @mi_printf_amount(i64 noundef %7, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %9 = load i64, ptr %0, align 8, !tbaa !14 tail call fastcc void @mi_printf_amount(i64 noundef %9, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) - %10 = load i64, ptr %0, align 8, !tbaa !14 - tail call fastcc void @mi_printf_amount(i64 noundef %10, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %12 = load i64, ptr %11, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %12, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) - %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %14 = load i64, ptr %13, align 8, !tbaa !11 - tail call fastcc void @mi_printf_amount(i64 noundef %14, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %11 = load i64, ptr %10, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %11, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %12 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %13 = load i64, ptr %12, align 8, !tbaa !11 + tail call fastcc void @mi_printf_amount(i64 noundef %13, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) call void @llvm.lifetime.start.p0(ptr nonnull %5) store i8 0, ptr %5, align 16, !tbaa !38 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.36, ptr noundef nonnull %5) #10 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.37) #10 - %15 = load i64, ptr %0, align 8, !tbaa !14 - %16 = load i64, ptr %11, align 8, !tbaa !15 - %17 = icmp sgt i64 %15, %16 - br i1 %17, label %18, label %19 + %14 = load i64, ptr %0, align 8, !tbaa !14 + %15 = load i64, ptr %10, align 8, !tbaa !15 + %16 = icmp sgt i64 %14, %15 + br i1 %16, label %17, label %18 -18: ; preds = %7 +17: ; preds = %8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.32) #10 - br label %39 + br label %34 -19: ; preds = %7 +18: ; preds = %8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.33) #10 - br label %39 - -20: ; preds = %4 - %21 = icmp slt i64 %2, 0 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %23 = load i64, ptr %22, align 8, !tbaa !13 - br i1 %21, label %24, label %35 + br label %34 -24: ; preds = %20 - tail call fastcc void @mi_printf_amount(i64 noundef %23, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - %25 = load i64, ptr %0, align 8, !tbaa !14 - tail call fastcc void @mi_printf_amount(i64 noundef %25, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %27 = load i64, ptr %26, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %27, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - %28 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %29 = load i64, ptr %28, align 8, !tbaa !11 - tail call fastcc void @mi_printf_amount(i64 noundef %29, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) +19: ; preds = %4 + tail call fastcc void @mi_printf_amount(i64 noundef %7, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) + %20 = load i64, ptr %0, align 8, !tbaa !14 + tail call fastcc void @mi_printf_amount(i64 noundef %20, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) + %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %22 = load i64, ptr %21, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %22, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) + %23 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %24 = load i64, ptr %23, align 8, !tbaa !11 + tail call fastcc void @mi_printf_amount(i64 noundef %24, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35) #10 - %30 = load i64, ptr %0, align 8, !tbaa !14 - %31 = load i64, ptr %26, align 8, !tbaa !15 - %32 = icmp sgt i64 %30, %31 - br i1 %32, label %33, label %34 + %25 = load i64, ptr %0, align 8, !tbaa !14 + %26 = load i64, ptr %21, align 8, !tbaa !15 + %27 = icmp sgt i64 %25, %26 + br i1 %27, label %28, label %29 -33: ; preds = %24 +28: ; preds = %19 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.32) #10 - br label %39 + br label %34 -34: ; preds = %24 +29: ; preds = %19 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.33) #10 - br label %39 + br label %34 -35: ; preds = %20 - tail call fastcc void @mi_printf_amount(i64 noundef %23, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) - %36 = load i64, ptr %0, align 8, !tbaa !14 - tail call fastcc void @mi_printf_amount(i64 noundef %36, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) +30: ; preds = %4 + tail call fastcc void @mi_printf_amount(i64 noundef %7, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %31 = load i64, ptr %0, align 8, !tbaa !14 + tail call fastcc void @mi_printf_amount(i64 noundef %31, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.37) #10 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %38 = load i64, ptr %37, align 8, !tbaa !11 - tail call fastcc void @mi_printf_amount(i64 noundef %38, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %33 = load i64, ptr %32, align 8, !tbaa !11 + tail call fastcc void @mi_printf_amount(i64 noundef %33, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.22) #10 - br label %39 + br label %34 -39: ; preds = %35, %34, %33, %18, %19 +34: ; preds = %30, %29, %28, %17, %18 ret void } @@ -1277,55 +1273,55 @@ define internal fastcc void @mi_printf_amount(i64 noundef %0, i64 noundef range( %6 = alloca [8 x i8], align 1 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i8 0, ptr %5, align 16, !tbaa !38 - %7 = icmp slt i64 %1, 1 - %8 = select i1 %7, ptr @.str.37, ptr @.str.39 - %.not51 = icmp eq i64 %1, 0 - %9 = select i1 %.not51, i64 1000, i64 1024 - %10 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) - %11 = icmp samesign ult i64 %10, %9 - br i1 %11, label %12, label %19 - -12: ; preds = %4 - %.not52 = icmp eq i64 %0, 1 - %13 = load i8, ptr %8, align 1 - %.not53 = icmp eq i8 %13, 66 - %or.cond = select i1 %.not52, i1 %.not53, i1 false - br i1 %or.cond, label %30, label %14 - -14: ; preds = %12 - %15 = trunc i64 %0 to i32 - %16 = icmp eq i64 %0, 0 - %17 = select i1 %16, ptr @.str.35, ptr %8 - %18 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.40, i32 noundef %15, ptr noundef nonnull %17) #10 - br label %30 + %7 = icmp eq i64 %1, 1 + %8 = select i1 %7, ptr @.str.39, ptr @.str.37 + %9 = icmp eq i64 %1, 0 + %10 = select i1 %9, i64 1000, i64 1024 + %11 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) + %12 = icmp samesign ult i64 %11, %10 + br i1 %12, label %13, label %20 + +13: ; preds = %4 + %.not53 = icmp eq i64 %0, 1 + %14 = load i8, ptr %8, align 1 + %.not54 = icmp eq i8 %14, 66 + %or.cond = select i1 %.not53, i1 %.not54, i1 false + br i1 %or.cond, label %31, label %15 + +15: ; preds = %13 + %16 = trunc i64 %0 to i32 + %17 = icmp eq i64 %0, 0 + %18 = select i1 %17, ptr @.str.35, ptr %8 + %19 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.40, i32 noundef %16, ptr noundef nonnull %18) #10 + br label %31 -19: ; preds = %4 - %20 = select i1 %.not51, i64 1000000, i64 1048576 - %.not = icmp samesign ult i64 %10, %20 - %spec.select = select i1 %.not, ptr @.str.41, ptr @.str.42 - %spec.select54 = select i1 %.not, i64 %9, i64 %20 - %21 = mul nuw nsw i64 %spec.select54, %9 - %.not50 = icmp samesign ult i64 %10, %21 - %.144 = select i1 %.not50, ptr %spec.select, ptr @.str.43 - %.1 = select i1 %.not50, i64 %spec.select54, i64 %21 +20: ; preds = %4 + %21 = select i1 %9, i64 1000000, i64 1048576 + %.not50 = icmp samesign ult i64 %11, %21 + %spec.select = select i1 %.not50, ptr @.str.41, ptr @.str.42 + %spec.select55 = select i1 %.not50, i64 %10, i64 %21 + %22 = mul nuw nsw i64 %spec.select55, %10 + %.not51 = icmp samesign ult i64 %11, %22 + %.144 = select i1 %.not51, ptr %spec.select, ptr @.str.43 + %.1 = select i1 %.not51, i64 %spec.select55, i64 %22 %.lhs.trunc = trunc nuw nsw i64 %.1 to i32 - %22 = udiv i32 %.lhs.trunc, 10 - %.zext = zext nneg i32 %22 to i64 - %23 = sdiv i64 %0, %.zext - %24 = sdiv i64 %23, 10 - %25 = srem i64 %23, 10 + %23 = udiv i32 %.lhs.trunc, 10 + %.zext = zext nneg i32 %23 to i64 + %24 = sdiv i64 %0, %.zext + %25 = sdiv i64 %24, 10 + %26 = srem i64 %24, 10 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %26 = select i1 %.not51, ptr @.str.35, ptr @.str.45 - %27 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 8, ptr noundef nonnull @.str.44, ptr noundef nonnull %.144, ptr noundef nonnull %26, ptr noundef nonnull %8) #10 - %28 = tail call i64 @llvm.abs.i64(i64 %25, i1 true) - %29 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.46, i64 noundef %24, i64 noundef %28, ptr noundef nonnull %6) #10 + %27 = select i1 %9, ptr @.str.35, ptr @.str.45 + %28 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 8, ptr noundef nonnull @.str.44, ptr noundef nonnull %.144, ptr noundef nonnull %27, ptr noundef nonnull %8) #10 + %29 = tail call i64 @llvm.abs.i64(i64 %26, i1 true) + %30 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.46, i64 noundef %25, i64 noundef %29, ptr noundef nonnull %6) #10 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %30 + br label %31 -30: ; preds = %12, %14, %19 - %31 = icmp eq ptr %3, null - %32 = select i1 %31, ptr @.str.36, ptr %3 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef nonnull %5) #10 +31: ; preds = %13, %15, %20 + %32 = icmp eq ptr %3, null + %33 = select i1 %32, ptr @.str.36, ptr %3 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %5) #10 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/assimp/optimized/FBXUtil.ll b/bench/assimp/optimized/FBXUtil.ll index 3f4e3d3f501..8c7ad518318 100644 --- a/bench/assimp/optimized/FBXUtil.ll +++ b/bench/assimp/optimized/FBXUtil.ll @@ -723,7 +723,7 @@ _ZN6Assimp3FBX4Util12DecodeBase64Ec.exit: ; preds = %.lr.ph %26 = shl i32 %.03660, 6 %27 = add nsw i32 %26, %25 %28 = add nsw i32 %.03361, 6 - %29 = icmp sgt i32 %.03361, -7 + %29 = icmp ugt i32 %.03361, -7 br i1 %29, label %30, label %37 30: ; preds = %24 diff --git a/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll b/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll index 707cb2b1f49..4ccf4f196d7 100644 --- a/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll +++ b/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll @@ -40,14 +40,14 @@ define void @_ZN6base646engine15general_purpose14GeneralPurpose3new17h640681ee2b %10 = trunc nuw nsw i64 %.06.i to i8 store i8 %10, ptr %9, align 1, !alias.scope !4, !noalias !7 %11 = add nuw nsw i64 %.06.i, 1 - %exitcond.not.i = icmp eq i64 %11, 64 - br i1 %exitcond.not.i, label %_ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174E.exit, label %5 + %12 = icmp eq i64 %11, 64 + br i1 %12, label %_ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174E.exit, label %5 _ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174E.exit: ; preds = %5 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %12, ptr noundef nonnull align 1 dereferenceable(64) %1, i64 64, i1 false) - %13 = getelementptr inbounds nuw i8, ptr %0, i64 67 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %13, ptr noundef nonnull align 1 dereferenceable(256) %4, i64 256, i1 false) + %13 = getelementptr inbounds nuw i8, ptr %0, i64 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %13, ptr noundef nonnull align 1 dereferenceable(64) %1, i64 64, i1 false) + %14 = getelementptr inbounds nuw i8, ptr %0, i64 67 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %14, ptr noundef nonnull align 1 dereferenceable(256) %4, i64 256, i1 false) store i24 %2, ptr %0, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void @@ -1270,8 +1270,8 @@ define void @_ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174 %9 = trunc nuw nsw i64 %.06 to i8 store i8 %9, ptr %8, align 1 %10 = add nuw nsw i64 %.06, 1 - %exitcond.not = icmp eq i64 %10, 64 - br i1 %exitcond.not, label %3, label %4 + %.not = icmp eq i64 %10, 64 + br i1 %.not, label %3, label %4 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll b/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll index d432999d9cb..ee4efa5e4e1 100644 --- a/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll +++ b/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll @@ -104,8 +104,8 @@ define void @_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8f %11 = getelementptr inbounds nuw i8, ptr %4, i64 %.010 store i8 %10, ptr %11, align 1 %12 = add nuw nsw i64 %.010, 1 - %exitcond12.not = icmp eq i64 %12, 64 - br i1 %exitcond12.not, label %5, label %6 + %.not = icmp eq i64 %12, 64 + br i1 %.not, label %5, label %6 } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable @@ -156,8 +156,8 @@ _ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit: ; pre 19: ; preds = %.backedge %20 = add nuw nsw i64 %.01926, 1 - %exitcond30.not = icmp eq i64 %20, 64 - br i1 %exitcond30.not, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit, label %.preheader22 + %.not33 = icmp eq i64 %20, 64 + br i1 %.not33, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit, label %.preheader22 .preheader: ; preds = %14, %.backedge %.025 = phi i64 [ %.0.be, %.backedge ], [ 0, %14 ] @@ -166,8 +166,8 @@ _ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit: ; pre .backedge: ; preds = %22, %.preheader %.0.be = add nuw nsw i64 %.025, 1 - %exitcond.not = icmp eq i64 %.0.be, 64 - br i1 %exitcond.not, label %19, label %.preheader + %.not32 = icmp eq i64 %.0.be, 64 + br i1 %.not32, label %19, label %.preheader 22: ; preds = %.preheader %23 = getelementptr inbounds nuw i8, ptr %1, i64 %.025 @@ -257,34 +257,34 @@ _ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i: ; p 18: ; preds = %.backedge.i %19 = add nuw nsw i64 %.01926.i, 1 - %exitcond30.not.i = icmp eq i64 %19, 64 - br i1 %exitcond30.not.i, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, label %.preheader22.i + %20 = icmp eq i64 %19, 64 + br i1 %20, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, label %.preheader22.i .preheader.i: ; preds = %13, %.backedge.i %.025.i = phi i64 [ %.0.be.i, %.backedge.i ], [ 0, %13 ] - %20 = icmp eq i64 %.025.i, %.01926.i - br i1 %20, label %.backedge.i, label %21 + %21 = icmp eq i64 %.025.i, %.01926.i + br i1 %21, label %.backedge.i, label %23 -.backedge.i: ; preds = %21, %.preheader.i +.backedge.i: ; preds = %23, %.preheader.i %.0.be.i = add nuw nsw i64 %.025.i, 1 - %exitcond.not.i = icmp eq i64 %.0.be.i, 64 - br i1 %exitcond.not.i, label %18, label %.preheader.i - -21: ; preds = %.preheader.i - %22 = getelementptr inbounds nuw i8, ptr %1, i64 %.025.i - %23 = load i8, ptr %22, align 1, !alias.scope !14, !noalias !11, !noundef !4 - %24 = icmp eq i8 %8, %23 - br i1 %24, label %25, label %.backedge.i - -25: ; preds = %21 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 1, ptr %26, align 1, !alias.scope !11, !noalias !14 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 2 - store i8 %8, ptr %27, align 1, !alias.scope !11, !noalias !14 + %22 = icmp eq i64 %.0.be.i, 64 + br i1 %22, label %18, label %.preheader.i + +23: ; preds = %.preheader.i + %24 = getelementptr inbounds nuw i8, ptr %1, i64 %.025.i + %25 = load i8, ptr %24, align 1, !alias.scope !14, !noalias !11, !noundef !4 + %26 = icmp eq i8 %8, %25 + br i1 %26, label %27, label %.backedge.i + +27: ; preds = %23 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 1 + store i8 1, ptr %28, align 1, !alias.scope !11, !noalias !14 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 2 + store i8 %8, ptr %29, align 1, !alias.scope !11, !noalias !14 br label %_ZN6base648alphabet8Alphabet3new17h146b96448e6c844eE.exit -_ZN6base648alphabet8Alphabet3new17h146b96448e6c844eE.exit: ; preds = %4, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, %10, %15, %25 - %.sink = phi i8 [ 1, %4 ], [ 0, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i ], [ 1, %10 ], [ 1, %15 ], [ 1, %25 ] +_ZN6base648alphabet8Alphabet3new17h146b96448e6c844eE.exit: ; preds = %4, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, %10, %15, %27 + %.sink = phi i8 [ 1, %4 ], [ 0, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i ], [ 1, %10 ], [ 1, %15 ], [ 1, %27 ] store i8 %.sink, ptr %0, align 1, !alias.scope !11, !noalias !14 ret void } diff --git a/bench/bdwgc/optimized/cordxtra.ll b/bench/bdwgc/optimized/cordxtra.ll index 2dc1202cac0..e45e0d8d4b7 100644 --- a/bench/bdwgc/optimized/cordxtra.ll +++ b/bench/bdwgc/optimized/cordxtra.ll @@ -171,8 +171,8 @@ define i32 @CORD_cmp(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { call void @CORD_set_pos(ptr noundef nonnull %4, ptr noundef nonnull %1, i64 noundef 0) #16 %18 = getelementptr inbounds nuw i8, ptr %3, i64 8 %19 = load i32, ptr %18, align 8, !tbaa !13 - %.not4359 = icmp eq i32 %19, 1431655765 - br i1 %.not4359, label %._crit_edge, label %.lr.ph + %.not4358 = icmp eq i32 %19, 1431655765 + br i1 %.not4358, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %17 %20 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -315,11 +315,11 @@ define i32 @CORD_cmp(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { 97: ; preds = %91 call void @CORD__next(ptr noundef nonnull %3) #16 %.pre = load i64, ptr %4, align 16, !tbaa !18 - %.pre60 = load i64, ptr %22, align 16, !tbaa !17 + %.pre59 = load i64, ptr %22, align 16, !tbaa !17 br label %98 98: ; preds = %97, %96 - %99 = phi i64 [ %.pre60, %97 ], [ %38, %96 ] + %99 = phi i64 [ %.pre59, %97 ], [ %38, %96 ] %100 = phi i64 [ %.pre, %97 ], [ %39, %96 ] %101 = add i64 %100, %92 store i64 %101, ptr %4, align 16, !tbaa !18 @@ -367,8 +367,8 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @CORD_set_pos(ptr noundef nonnull %6, ptr noundef %0, i64 noundef %1) #16 call void @CORD_set_pos(ptr noundef nonnull %7, ptr noundef %2, i64 noundef %3) #16 - %.not72 = icmp eq i64 %4, 0 - br i1 %.not72, label %.thread63, label %.lr.ph + %.not71 = icmp eq i64 %4, 0 + br i1 %.not71, label %.thread63, label %.lr.ph .lr.ph: ; preds = %5 %8 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -382,7 +382,7 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde br label %16 16: ; preds = %.lr.ph, %.thread60 - %.03167 = phi i64 [ 0, %.lr.ph ], [ %.132, %.thread60 ] + %.03166 = phi i64 [ 0, %.lr.ph ], [ %.132, %.thread60 ] %17 = load i32, ptr %8, align 8, !tbaa !13 %.not = icmp eq i32 %17, 1431655765 %18 = load i32, ptr %9, align 8, !tbaa !13 @@ -482,7 +482,7 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde br label %.thread .thread: ; preds = %65, %66 - %67 = add nuw i64 %.03167, 1 + %67 = add nuw i64 %.03166, 1 br label %.thread60 68: ; preds = %52 @@ -493,7 +493,7 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde 72: ; preds = %27 %spec.select = call i64 @llvm.umin.i64(i64 %25, i64 %30) - %73 = add i64 %spec.select, %.03167 + %73 = add i64 %spec.select, %.03166 %74 = call i64 @llvm.usub.sat.i64(i64 %73, i64 %4) %.136 = sub i64 %spec.select, %74 %75 = load ptr, ptr %12, align 16, !tbaa !19 @@ -523,11 +523,11 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde 90: ; preds = %84 call void @CORD__next(ptr noundef nonnull %6) #16 %.pre = load i64, ptr %7, align 16, !tbaa !18 - %.pre73 = load i64, ptr %11, align 16, !tbaa !17 + %.pre72 = load i64, ptr %11, align 16, !tbaa !17 br label %91 91: ; preds = %90, %89 - %92 = phi i64 [ %.pre73, %90 ], [ %28, %89 ] + %92 = phi i64 [ %.pre72, %90 ], [ %28, %89 ] %93 = phi i64 [ %.pre, %90 ], [ %29, %89 ] %94 = add i64 %93, %85 store i64 %94, ptr %7, align 16, !tbaa !18 @@ -1364,49 +1364,49 @@ define internal fastcc ptr @CORD_from_file_lazy_inner(ptr noundef %0, i64 nounde unreachable 9: ; preds = %2 - %.not = icmp eq i64 %1, 0 - br i1 %.not, label %19, label %10 + %10 = icmp eq i64 %1, 0 + br i1 %10, label %20, label %11 -10: ; preds = %9 +11: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %11 = call i64 @fread(ptr noundef nonnull %3, i64 noundef 1, i64 noundef 1, ptr noundef %0) - %12 = icmp ugt i64 %11, 1 - br i1 %12, label %15, label %13 - -13: ; preds = %10 - %14 = tail call i32 @fseek(ptr noundef %0, i64 noundef 0, i32 noundef 0) - %.not14 = icmp eq i32 %14, 0 - br i1 %.not14, label %18, label %15 - -15: ; preds = %13, %10 - %16 = load ptr, ptr @stderr, align 8, !tbaa !3 - %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %16, ptr noundef nonnull @.str, ptr noundef nonnull @.str.5) #18 + %12 = call i64 @fread(ptr noundef nonnull %3, i64 noundef 1, i64 noundef 1, ptr noundef %0) + %13 = icmp ugt i64 %12, 1 + br i1 %13, label %16, label %14 + +14: ; preds = %11 + %15 = tail call i32 @fseek(ptr noundef %0, i64 noundef 0, i32 noundef 0) + %.not14 = icmp eq i32 %15, 0 + br i1 %.not14, label %19, label %16 + +16: ; preds = %14, %11 + %17 = load ptr, ptr @stderr, align 8, !tbaa !3 + %18 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %17, ptr noundef nonnull @.str, ptr noundef nonnull @.str.5) #18 tail call void @abort() #19 unreachable -18: ; preds = %13 +19: ; preds = %14 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %19 + br label %20 -19: ; preds = %18, %9 +20: ; preds = %19, %9 store ptr %0, ptr %4, align 8, !tbaa !34 - %20 = getelementptr inbounds nuw i8, ptr %4, i64 16 - br label %21 + %21 = getelementptr inbounds nuw i8, ptr %4, i64 16 + br label %22 -21: ; preds = %19, %21 - %indvars.iv = phi i64 [ 0, %19 ], [ %indvars.iv.next, %21 ] - %22 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv - store volatile ptr null, ptr %22, align 8, !tbaa !36 +22: ; preds = %20, %22 + %indvars.iv = phi i64 [ 0, %20 ], [ %indvars.iv.next, %22 ] + %23 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv + store volatile ptr null, ptr %23, align 8, !tbaa !36 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 32 - br i1 %exitcond.not, label %23, label %21, !llvm.loop !37 + %.not = icmp eq i64 %indvars.iv.next, 32 + br i1 %.not, label %24, label %22, !llvm.loop !37 -23: ; preds = %21 - %24 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 0, ptr %24, align 8, !tbaa !38 +24: ; preds = %22 + %25 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i64 0, ptr %25, align 8, !tbaa !38 tail call void @GC_register_finalizer(ptr noundef nonnull %4, ptr noundef nonnull @CORD_lf_close_proc, ptr noundef null, ptr noundef null, ptr noundef null) #16 - %25 = tail call ptr @CORD_from_fn(ptr noundef nonnull @CORD_lf_func, ptr noundef nonnull %4, i64 noundef %1) #16 - ret ptr %25 + %26 = tail call ptr @CORD_from_fn(ptr noundef nonnull @CORD_lf_func, ptr noundef nonnull %4, i64 noundef %1) #16 + ret ptr %26 } ; Function Attrs: nounwind uwtable diff --git a/bench/box2d/optimized/window.ll b/bench/box2d/optimized/window.ll index d3b1f8b1645..ee114dcdac6 100644 --- a/bench/box2d/optimized/window.ll +++ b/bench/box2d/optimized/window.ll @@ -114,8 +114,8 @@ define hidden void @_glfwInputWindowFocus(ptr noundef %0, i32 noundef %1) local_ 17: ; preds = %9, %13 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 349 - br i1 %exitcond.not, label %.preheader, label %9 + %.not29 = icmp eq i64 %indvars.iv.next, 349 + br i1 %.not29, label %.preheader, label %9 18: ; preds = %.preheader, %24 %indvars.iv25 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next26, %24 ] @@ -131,8 +131,8 @@ define hidden void @_glfwInputWindowFocus(ptr noundef %0, i32 noundef %1) local_ 24: ; preds = %18, %22 %indvars.iv.next26 = add nuw nsw i64 %indvars.iv25, 1 - %exitcond28.not = icmp eq i64 %indvars.iv.next26, 8 - br i1 %exitcond28.not, label %.loopexit, label %18 + %.not30 = icmp eq i64 %indvars.iv.next26, 8 + br i1 %.not30, label %.loopexit, label %18 .loopexit: ; preds = %24, %6 ret void @@ -959,52 +959,52 @@ define void @glfwSetWindowIcon(ptr noundef %0, i32 noundef %1, ptr noundef %2) l 5: ; preds = %3 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65537, ptr noundef null) #7 - br label %19 + br label %20 6: ; preds = %3 %7 = icmp slt i32 %1, 0 - br i1 %7, label %8, label %.preheader + br i1 %7, label %9, label %.preheader .preheader: ; preds = %6 - %.not13 = icmp eq i32 %1, 0 - br i1 %.not13, label %._crit_edge, label %.lr.ph.preheader + %8 = icmp eq i32 %1, 0 + br i1 %8, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.preheader %wide.trip.count = zext nneg i32 %1 to i64 br label %.lr.ph -8: ; preds = %6 +9: ; preds = %6 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.3) #7 - br label %19 + br label %20 -9: ; preds = %13 +10: ; preds = %14 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %9 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %9 ] - %10 = getelementptr inbounds nuw %struct.GLFWimage, ptr %2, i64 %indvars.iv - %11 = load i32, ptr %10, align 8, !tbaa !224 - %12 = icmp slt i32 %11, 1 - br i1 %12, label %17, label %13 +.lr.ph: ; preds = %.lr.ph.preheader, %10 + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %10 ] + %11 = getelementptr inbounds nuw %struct.GLFWimage, ptr %2, i64 %indvars.iv + %12 = load i32, ptr %11, align 8, !tbaa !224 + %13 = icmp slt i32 %12, 1 + br i1 %13, label %18, label %14 -13: ; preds = %.lr.ph - %14 = getelementptr inbounds nuw i8, ptr %10, i64 4 - %15 = load i32, ptr %14, align 4, !tbaa !226 - %16 = icmp slt i32 %15, 1 - br i1 %16, label %17, label %9 +14: ; preds = %.lr.ph + %15 = getelementptr inbounds nuw i8, ptr %11, i64 4 + %16 = load i32, ptr %15, align 4, !tbaa !226 + %17 = icmp slt i32 %16, 1 + br i1 %17, label %18, label %10 -17: ; preds = %13, %.lr.ph +18: ; preds = %14, %.lr.ph tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.4) #7 - br label %19 + br label %20 -._crit_edge: ; preds = %9, %.preheader - %18 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 296), align 8, !tbaa !227 - tail call void %18(ptr noundef %0, i32 noundef %1, ptr noundef %2) #7 - br label %19 +._crit_edge: ; preds = %10, %.preheader + %19 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 296), align 8, !tbaa !227 + tail call void %19(ptr noundef %0, i32 noundef %1, ptr noundef %2) #7 + br label %20 -19: ; preds = %._crit_edge, %17, %8, %5 +20: ; preds = %._crit_edge, %18, %9, %5 ret void } @@ -1134,66 +1134,70 @@ define void @glfwSetWindowSizeLimits(ptr noundef %0, i32 noundef %1, i32 noundef 7: ; preds = %5 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65537, ptr noundef null) #7 - br label %33 + br label %36 8: ; preds = %5 - %9 = icmp eq i32 %1, -1 - %10 = icmp eq i32 %2, -1 - %or.cond.not48 = or i1 %9, %10 - %11 = or i32 %2, %1 - %or.cond3.not = icmp sgt i32 %11, -1 - %or.cond43 = or i1 %or.cond.not48, %or.cond3.not - br i1 %or.cond43, label %13, label %12 - -12: ; preds = %8 - tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.5, i32 noundef %1, i32 noundef %2) #7 - br label %33 - -13: ; preds = %8 - %14 = icmp ne i32 %3, -1 - %15 = icmp ne i32 %4, -1 - %or.cond5 = and i1 %14, %15 - br i1 %or.cond5, label %16, label %21 + %9 = icmp ne i32 %1, -1 + %10 = icmp ne i32 %2, -1 + %or.cond = and i1 %9, %10 + br i1 %or.cond, label %11, label %15 -16: ; preds = %13 - %17 = or i32 %4, %3 - %or.cond7.not = icmp slt i32 %17, 0 - %18 = icmp slt i32 %3, %1 - %or.cond44 = or i1 %18, %or.cond7.not - %19 = icmp slt i32 %4, %2 - %or.cond45 = or i1 %19, %or.cond44 - br i1 %or.cond45, label %20, label %21 +11: ; preds = %8 + %12 = icmp slt i32 %1, -1 + %13 = icmp slt i32 %2, -1 + %or.cond3 = or i1 %12, %13 + br i1 %or.cond3, label %14, label %15 -20: ; preds = %16 +14: ; preds = %11 + tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.5, i32 noundef %1, i32 noundef %2) #7 + br label %36 + +15: ; preds = %11, %8 + %16 = icmp ne i32 %3, -1 + %17 = icmp ne i32 %4, -1 + %or.cond5 = and i1 %16, %17 + br i1 %or.cond5, label %18, label %24 + +18: ; preds = %15 + %19 = icmp slt i32 %3, -1 + %20 = icmp slt i32 %4, -1 + %or.cond7 = or i1 %19, %20 + %21 = icmp slt i32 %3, %1 + %or.cond43 = or i1 %21, %or.cond7 + %22 = icmp slt i32 %4, %2 + %or.cond44 = or i1 %22, %or.cond43 + br i1 %or.cond44, label %23, label %24 + +23: ; preds = %18 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.6, i32 noundef %3, i32 noundef %4) #7 - br label %33 - -21: ; preds = %16, %13 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 104 - store i32 %1, ptr %22, align 8, !tbaa !232 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 108 - store i32 %2, ptr %23, align 4, !tbaa !233 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 %3, ptr %24, align 8, !tbaa !234 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 116 - store i32 %4, ptr %25, align 4, !tbaa !235 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %27 = load ptr, ptr %26, align 8, !tbaa !137 - %.not41 = icmp eq ptr %27, null - br i1 %.not41, label %28, label %33 - -28: ; preds = %21 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %30 = load i32, ptr %29, align 8, !tbaa !163 - %.not42 = icmp eq i32 %30, 0 - br i1 %.not42, label %33, label %31 - -31: ; preds = %28 - %32 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 336), align 8, !tbaa !236 - tail call void %32(ptr noundef nonnull %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #7 - br label %33 - -33: ; preds = %21, %28, %31, %20, %12, %7 + br label %36 + +24: ; preds = %18, %15 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 104 + store i32 %1, ptr %25, align 8, !tbaa !232 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 108 + store i32 %2, ptr %26, align 4, !tbaa !233 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 %3, ptr %27, align 8, !tbaa !234 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 116 + store i32 %4, ptr %28, align 4, !tbaa !235 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %30 = load ptr, ptr %29, align 8, !tbaa !137 + %.not41 = icmp eq ptr %30, null + br i1 %.not41, label %31, label %36 + +31: ; preds = %24 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %33 = load i32, ptr %32, align 8, !tbaa !163 + %.not42 = icmp eq i32 %33, 0 + br i1 %.not42, label %36, label %34 + +34: ; preds = %31 + %35 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 336), align 8, !tbaa !236 + tail call void %35(ptr noundef nonnull %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #7 + br label %36 + +36: ; preds = %24, %31, %34, %23, %14, %7 ret void } diff --git a/bench/chibicc/optimized/codegen.ll b/bench/chibicc/optimized/codegen.ll index 28b8e038860..837a5d9ee5b 100644 --- a/bench/chibicc/optimized/codegen.ll +++ b/bench/chibicc/optimized/codegen.ll @@ -363,38 +363,38 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add store ptr %1, ptr @output_file, align 8, !tbaa !7 %3 = tail call ptr @get_input_files() #13 %4 = load ptr, ptr %3, align 8, !tbaa !12 - %.not23 = icmp eq ptr %4, null - br i1 %.not23, label %._crit_edge, label %.lr.ph + %.not24 = icmp eq ptr %4, null + br i1 %.not24, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %2 - %.not82.i = icmp eq ptr %0, null - br i1 %.not82.i, label %emit_text.exit, label %.lr.ph85.i + %.not81.i = icmp eq ptr %0, null + br i1 %.not81.i, label %emit_text.exit, label %.lr.ph84.i -.lr.ph85.i: ; preds = %._crit_edge, %71 - %.083.i = phi ptr [ %72, %71 ], [ %0, %._crit_edge ] - %5 = getelementptr inbounds nuw i8, ptr %.083.i, i64 44 +.lr.ph84.i: ; preds = %._crit_edge, %71 + %.082.i = phi ptr [ %72, %71 ], [ %0, %._crit_edge ] + %5 = getelementptr inbounds nuw i8, ptr %.082.i, i64 44 %6 = load i8, ptr %5, align 4, !tbaa !13, !range !25, !noundef !26 %7 = trunc nuw i8 %6 to i1 br i1 %7, label %8, label %71 -8: ; preds = %.lr.ph85.i - %9 = getelementptr inbounds nuw i8, ptr %.083.i, i64 80 - %.05369.i = load ptr, ptr %9, align 8, !tbaa !27 - %.not6370.i = icmp eq ptr %.05369.i, null - br i1 %.not6370.i, label %._crit_edge.i, label %.lr.ph.i +8: ; preds = %.lr.ph84.i + %9 = getelementptr inbounds nuw i8, ptr %.082.i, i64 80 + %.05368.i = load ptr, ptr %9, align 8, !tbaa !27 + %.not6369.i = icmp eq ptr %.05368.i, null + br i1 %.not6369.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.i: ; preds = %47, %8 - %10 = getelementptr inbounds nuw i8, ptr %.083.i, i64 96 - %.04875.i = load ptr, ptr %10, align 8, !tbaa !27 - %.not6476.i = icmp eq ptr %.04875.i, null - br i1 %.not6476.i, label %._crit_edge81.i, label %.lr.ph80.i + %10 = getelementptr inbounds nuw i8, ptr %.082.i, i64 96 + %.04874.i = load ptr, ptr %10, align 8, !tbaa !27 + %.not6475.i = icmp eq ptr %.04874.i, null + br i1 %.not6475.i, label %._crit_edge80.i, label %.lr.ph79.i .lr.ph.i: ; preds = %8, %47 - %.05374.i = phi ptr [ %.053.i, %47 ], [ %.05369.i, %8 ] - %.05073.i = phi i32 [ %.1.i, %47 ], [ 16, %8 ] - %.05472.i = phi i32 [ %.3.i, %47 ], [ 0, %8 ] - %.05671.i = phi i32 [ %.359.i, %47 ], [ 0, %8 ] - %11 = getelementptr inbounds nuw i8, ptr %.05374.i, i64 16 + %.05373.i = phi ptr [ %.053.i, %47 ], [ %.05368.i, %8 ] + %.05072.i = phi i32 [ %.1.i, %47 ], [ 16, %8 ] + %.05471.i = phi i32 [ %.3.i, %47 ], [ 0, %8 ] + %.05670.i = phi i32 [ %.359.i, %47 ], [ 0, %8 ] + %11 = getelementptr inbounds nuw i8, ptr %.05373.i, i64 16 %12 = load ptr, ptr %11, align 8, !tbaa !28 %13 = load i32, ptr %12, align 8, !tbaa !29 switch i32 %13, label %37 [ @@ -415,7 +415,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %19 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %12, i32 noundef 0, i32 noundef 8, i32 noundef 0) %20 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %12, i32 noundef 8, i32 noundef 16, i32 noundef 8) %21 = zext i1 %19 to i32 - %22 = add nsw i32 %.05472.i, %21 + %22 = add nsw i32 %.05471.i, %21 %23 = zext i1 %20 to i32 %24 = add nsw i32 %22, %23 %25 = icmp slt i32 %24, 8 @@ -424,7 +424,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add 26: ; preds = %18 %27 = xor i1 %19, true %28 = zext i1 %27 to i32 - %29 = add nsw i32 %.05671.i, %28 + %29 = add nsw i32 %.05670.i, %28 %30 = xor i1 %20, true %31 = zext i1 %30 to i32 %32 = add nsw i32 %29, %31 @@ -432,22 +432,22 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br i1 %33, label %47, label %.thread.i 34: ; preds = %.lr.ph.i, %.lr.ph.i - %35 = add nsw i32 %.05472.i, 1 - %36 = icmp slt i32 %.05472.i, 8 + %35 = add nsw i32 %.05471.i, 1 + %36 = icmp slt i32 %.05471.i, 8 br i1 %36, label %47, label %.thread.i 37: ; preds = %.lr.ph.i - %38 = add nsw i32 %.05671.i, 1 - %39 = icmp slt i32 %.05671.i, 6 + %38 = add nsw i32 %.05670.i, 1 + %39 = icmp slt i32 %.05670.i, 6 br i1 %39, label %47, label %.thread.i .thread.i: ; preds = %37, %34, %26, %18, %14, %.lr.ph.i - %.157.i = phi i32 [ %38, %37 ], [ %.05671.i, %14 ], [ %.05671.i, %34 ], [ %.05671.i, %.lr.ph.i ], [ %.05671.i, %18 ], [ %.05671.i, %26 ] - %.155.i = phi i32 [ %.05472.i, %37 ], [ %.05472.i, %14 ], [ %35, %34 ], [ %.05472.i, %.lr.ph.i ], [ %.05472.i, %18 ], [ %.05472.i, %26 ] - %40 = add i32 %.05073.i, 7 + %.157.i = phi i32 [ %38, %37 ], [ %.05670.i, %14 ], [ %.05670.i, %34 ], [ %.05670.i, %.lr.ph.i ], [ %.05670.i, %18 ], [ %.05670.i, %26 ] + %.155.i = phi i32 [ %.05471.i, %37 ], [ %.05471.i, %14 ], [ %35, %34 ], [ %.05471.i, %.lr.ph.i ], [ %.05471.i, %18 ], [ %.05471.i, %26 ] + %40 = add i32 %.05072.i, 7 %41 = srem i32 %40, 8 %42 = sub nsw i32 %40, %41 - %43 = getelementptr inbounds nuw i8, ptr %.05374.i, i64 40 + %43 = getelementptr inbounds nuw i8, ptr %.05373.i, i64 40 store i32 %42, ptr %43, align 8, !tbaa !33 %44 = getelementptr inbounds nuw i8, ptr %12, i64 4 %45 = load i32, ptr %44, align 4, !tbaa !32 @@ -455,35 +455,35 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br label %47 47: ; preds = %.thread.i, %37, %34, %26 - %.359.i = phi i32 [ %.157.i, %.thread.i ], [ %.05671.i, %34 ], [ %38, %37 ], [ %32, %26 ] - %.3.i = phi i32 [ %.155.i, %.thread.i ], [ %35, %34 ], [ %.05472.i, %37 ], [ %24, %26 ] - %.1.i = phi i32 [ %46, %.thread.i ], [ %.05073.i, %34 ], [ %.05073.i, %37 ], [ %.05073.i, %26 ] - %.053.i = load ptr, ptr %.05374.i, align 8, !tbaa !27 + %.359.i = phi i32 [ %.157.i, %.thread.i ], [ %.05670.i, %34 ], [ %38, %37 ], [ %32, %26 ] + %.3.i = phi i32 [ %.155.i, %.thread.i ], [ %35, %34 ], [ %.05471.i, %37 ], [ %24, %26 ] + %.1.i = phi i32 [ %46, %.thread.i ], [ %.05072.i, %34 ], [ %.05072.i, %37 ], [ %.05072.i, %26 ] + %.053.i = load ptr, ptr %.05373.i, align 8, !tbaa !27 %.not63.i = icmp eq ptr %.053.i, null br i1 %.not63.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !34 -._crit_edge81.loopexit.i: ; preds = %70 +._crit_edge80.loopexit.i: ; preds = %70 %48 = add i32 %.152.i, 15 - br label %._crit_edge81.i + br label %._crit_edge80.i -._crit_edge81.i: ; preds = %._crit_edge81.loopexit.i, %._crit_edge.i - %.051.lcssa.i = phi i32 [ 15, %._crit_edge.i ], [ %48, %._crit_edge81.loopexit.i ] +._crit_edge80.i: ; preds = %._crit_edge80.loopexit.i, %._crit_edge.i + %.051.lcssa.i = phi i32 [ 15, %._crit_edge.i ], [ %48, %._crit_edge80.loopexit.i ] %49 = srem i32 %.051.lcssa.i, 16 %50 = sub nsw i32 %.051.lcssa.i, %49 - %51 = getelementptr inbounds nuw i8, ptr %.083.i, i64 120 + %51 = getelementptr inbounds nuw i8, ptr %.082.i, i64 120 store i32 %50, ptr %51, align 8, !tbaa !36 br label %71 -.lr.ph80.i: ; preds = %._crit_edge.i, %70 - %.04878.i = phi ptr [ %.048.i, %70 ], [ %.04875.i, %._crit_edge.i ] - %.05177.i = phi i32 [ %.152.i, %70 ], [ 0, %._crit_edge.i ] - %52 = getelementptr inbounds nuw i8, ptr %.04878.i, i64 40 +.lr.ph79.i: ; preds = %._crit_edge.i, %70 + %.04877.i = phi ptr [ %.048.i, %70 ], [ %.04874.i, %._crit_edge.i ] + %.05176.i = phi i32 [ %.152.i, %70 ], [ 0, %._crit_edge.i ] + %52 = getelementptr inbounds nuw i8, ptr %.04877.i, i64 40 %53 = load i32, ptr %52, align 8, !tbaa !33 %.not65.i = icmp eq i32 %53, 0 - br i1 %.not65.i, label %._crit_edge87.i, label %70 + br i1 %.not65.i, label %._crit_edge86.i, label %70 -._crit_edge87.i: ; preds = %.lr.ph80.i - %54 = getelementptr inbounds nuw i8, ptr %.04878.i, i64 16 +._crit_edge86.i: ; preds = %.lr.ph79.i + %54 = getelementptr inbounds nuw i8, ptr %.04877.i, i64 16 %55 = load ptr, ptr %54, align 8, !tbaa !28 %56 = load i32, ptr %55, align 8, !tbaa !29 %57 = icmp eq i32 %56, 12 @@ -491,11 +491,11 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %59 = load i32, ptr %58, align 4, !tbaa !32 %60 = icmp sgt i32 %59, 15 %or.cond.i = select i1 %57, i1 %60, i1 false - %61 = getelementptr inbounds nuw i8, ptr %.04878.i, i64 36 + %61 = getelementptr inbounds nuw i8, ptr %.04877.i, i64 36 %62 = load i32, ptr %61, align 4, !tbaa !37 %spec.select.i = tail call i32 @llvm.smax.i32(i32 %62, i32 16) %63 = select i1 %or.cond.i, i32 %spec.select.i, i32 %62 - %64 = add i32 %.05177.i, -1 + %64 = add i32 %.05176.i, -1 %65 = add i32 %64, %59 %66 = add i32 %65, %63 %67 = srem i32 %66, %63 @@ -504,16 +504,16 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add store i32 %69, ptr %52, align 8, !tbaa !33 br label %70 -70: ; preds = %._crit_edge87.i, %.lr.ph80.i - %.152.i = phi i32 [ %.05177.i, %.lr.ph80.i ], [ %68, %._crit_edge87.i ] - %.048.i = load ptr, ptr %.04878.i, align 8, !tbaa !27 +70: ; preds = %._crit_edge86.i, %.lr.ph79.i + %.152.i = phi i32 [ %.05176.i, %.lr.ph79.i ], [ %68, %._crit_edge86.i ] + %.048.i = load ptr, ptr %.04877.i, align 8, !tbaa !27 %.not64.i = icmp eq ptr %.048.i, null - br i1 %.not64.i, label %._crit_edge81.loopexit.i, label %.lr.ph80.i, !llvm.loop !38 + br i1 %.not64.i, label %._crit_edge80.loopexit.i, label %.lr.ph79.i, !llvm.loop !38 -71: ; preds = %._crit_edge81.i, %.lr.ph85.i - %72 = load ptr, ptr %.083.i, align 8, !tbaa !39 +71: ; preds = %._crit_edge80.i, %.lr.ph84.i + %72 = load ptr, ptr %.082.i, align 8, !tbaa !39 %.not.i = icmp eq ptr %72, null - br i1 %.not.i, label %.lr.ph49.i, label %.lr.ph85.i, !llvm.loop !40 + br i1 %.not.i, label %.lr.ph49.i, label %.lr.ph84.i, !llvm.loop !40 .lr.ph49.i: ; preds = %71, %.loopexit.i %.04148.i = phi ptr [ %160, %.loopexit.i ], [ %0, %71 ] @@ -722,16 +722,16 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %189 = getelementptr inbounds nuw i8, ptr %.0128.i, i64 80 %.082113.i = load ptr, ptr %189, align 8, !tbaa !27 %.not91114.i = icmp eq ptr %.082113.i, null - br i1 %.not91114.i, label %._crit_edge.i19, label %.lr.ph.i18 + br i1 %.not91114.i, label %._crit_edge.i20, label %.lr.ph.i18 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i18 %.pre.i = load ptr, ptr %186, align 8, !tbaa !61 %190 = shl nsw i32 %.186.i, 3 %191 = shl nsw i32 %.184.i, 3 %192 = add nuw nsw i32 %191, 48 - br label %._crit_edge.i19 + br label %._crit_edge.i20 -._crit_edge.i19: ; preds = %._crit_edge.loopexit.i, %188 +._crit_edge.i20: ; preds = %._crit_edge.loopexit.i, %188 %193 = phi ptr [ %187, %188 ], [ %.pre.i, %._crit_edge.loopexit.i ] %.085.lcssa.i = phi i32 [ 0, %188 ], [ %190, %._crit_edge.loopexit.i ] %.083.lcssa.i = phi i32 [ 48, %188 ], [ %192, %._crit_edge.loopexit.i ] @@ -777,7 +777,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br label %218 .lr.ph.i18: ; preds = %188, %.lr.ph.i18 - %.082117.i = phi ptr [ %.082.i, %.lr.ph.i18 ], [ %.082113.i, %188 ] + %.082117.i = phi ptr [ %.082.i19, %.lr.ph.i18 ], [ %.082113.i, %188 ] %.083116.i = phi i32 [ %.184.i, %.lr.ph.i18 ], [ 0, %188 ] %.085115.i = phi i32 [ %.186.i, %.lr.ph.i18 ], [ 0, %188 ] %213 = getelementptr inbounds nuw i8, ptr %.082117.i, i64 16 @@ -788,11 +788,11 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %.186.i = add nuw nsw i32 %.085115.i, %216 %217 = zext i1 %215 to i32 %.184.i = add nuw nsw i32 %.083116.i, %217 - %.082.i = load ptr, ptr %.082117.i, align 8, !tbaa !27 - %.not91.i = icmp eq ptr %.082.i, null + %.082.i19 = load ptr, ptr %.082117.i, align 8, !tbaa !27 + %.not91.i = icmp eq ptr %.082.i19, null br i1 %.not91.i, label %._crit_edge.loopexit.i, label %.lr.ph.i18, !llvm.loop !62 -218: ; preds = %._crit_edge.i19, %172 +218: ; preds = %._crit_edge.i20, %172 %219 = getelementptr inbounds nuw i8, ptr %.0128.i, i64 80 %.076119.i = load ptr, ptr %219, align 8, !tbaa !27 %.not92120.i = icmp eq ptr %.076119.i, null @@ -809,7 +809,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add .lr.ph125.i: ; preds = %218, %store_gp.exit102.i %.076123.i = phi ptr [ %.076.i, %store_gp.exit102.i ], [ %.076119.i, %218 ] - %.077122.i = phi i32 [ %.1.i20, %store_gp.exit102.i ], [ 0, %218 ] + %.077122.i = phi i32 [ %.1.i21, %store_gp.exit102.i ], [ 0, %218 ] %.078121.i = phi i32 [ %.179.i, %store_gp.exit102.i ], [ 0, %218 ] %225 = getelementptr inbounds nuw i8, ptr %.076123.i, i64 40 %226 = load i32, ptr %225, align 8, !tbaa !33 @@ -831,12 +831,12 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %233 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %230, i32 noundef 0, i32 noundef 8, i32 noundef 0) %234 = getelementptr inbounds nuw i8, ptr %230, i64 4 %235 = load i32, ptr %234, align 4, !tbaa !32 - %spec.select.i21 = tail call i32 @llvm.smin.i32(i32 %235, i32 8) + %spec.select.i22 = tail call i32 @llvm.smin.i32(i32 %235, i32 8) br i1 %233, label %236, label %240 236: ; preds = %232 %237 = add nsw i32 %.077122.i, 1 - switch i32 %spec.select.i21, label %239 [ + switch i32 %spec.select.i22, label %239 [ i32 4, label %store_fp.exit.i i32 8, label %238 ] @@ -855,12 +855,12 @@ store_fp.exit.i: ; preds = %238, %236 240: ; preds = %232 %241 = add nsw i32 %.078121.i, 1 - %242 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %spec.select.i21) + %242 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %spec.select.i22) %243 = icmp eq i32 %242, 1 br i1 %243, label %.split.i.i, label %246 .split.i.i: ; preds = %240 - %244 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %spec.select.i21, i1 true) + %244 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %spec.select.i22, i1 true) %245 = icmp samesign ult i32 %244, 4 br i1 %245, label %switch.lookup, label %246 @@ -882,7 +882,7 @@ store_fp.exit.i: ; preds = %238, %236 %254 = load ptr, ptr %251, align 8, !tbaa !53 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.51, ptr noundef %254) %255 = add nuw nsw i32 %.016.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %255, %spec.select.i21 + %exitcond.not.i.i = icmp eq i32 %255, %spec.select.i22 br i1 %exitcond.not.i.i, label %store_gp.exit.i, label %252, !llvm.loop !64 switch.lookup: ; preds = %.split.i.i @@ -937,7 +937,7 @@ store_fp.exit95.i: ; preds = %268, %266 .split.i99.i: ; preds = %270 %275 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %272, i1 true) %276 = icmp samesign ult i32 %275, 4 - br i1 %276, label %switch.lookup39, label %.lr.ph.i96.i + br i1 %276, label %switch.lookup40, label %.lr.ph.i96.i .lr.ph.i96.i: ; preds = %.split.i99.i, %270 %277 = sext i32 %.280.i to i64 @@ -956,12 +956,12 @@ store_fp.exit95.i: ; preds = %268, %266 %exitcond.not.i98.i = icmp eq i32 %284, %272 br i1 %exitcond.not.i98.i, label %store_gp.exit102.i, label %281, !llvm.loop !64 -switch.lookup39: ; preds = %.split.i99.i +switch.lookup40: ; preds = %.split.i99.i %285 = zext nneg i32 %275 to i64 - %switch.gep40 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %285 - %switch.load41 = load ptr, ptr %switch.gep40, align 8 + %switch.gep41 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %285 + %switch.load42 = load ptr, ptr %switch.gep41, align 8 %286 = sext i32 %.280.i to i64 - %287 = getelementptr inbounds ptr, ptr %switch.load41, i64 %286 + %287 = getelementptr inbounds ptr, ptr %switch.load42, i64 %286 %288 = load ptr, ptr %287, align 8, !tbaa !53 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %288, i32 noundef %265) br label %store_gp.exit102.i @@ -998,7 +998,7 @@ store_fp.exit104.i: ; preds = %293, %289 .split.i108.i: ; preds = %295 %301 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %298, i1 true) %302 = icmp samesign ult i32 %301, 4 - br i1 %302, label %switch.lookup42, label %303 + br i1 %302, label %switch.lookup43, label %303 303: ; preds = %.split.i108.i, %295 %304 = icmp sgt i32 %298, 0 @@ -1021,19 +1021,19 @@ store_fp.exit104.i: ; preds = %293, %289 %exitcond.not.i107.i = icmp eq i32 %312, %298 br i1 %exitcond.not.i107.i, label %store_gp.exit102.i, label %309, !llvm.loop !64 -switch.lookup42: ; preds = %.split.i108.i +switch.lookup43: ; preds = %.split.i108.i %313 = zext nneg i32 %301 to i64 - %switch.gep43 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %313 - %switch.load44 = load ptr, ptr %switch.gep43, align 8 + %switch.gep44 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %313 + %switch.load45 = load ptr, ptr %switch.gep44, align 8 %314 = sext i32 %.078121.i to i64 - %315 = getelementptr inbounds ptr, ptr %switch.load44, i64 %314 + %315 = getelementptr inbounds ptr, ptr %switch.load45, i64 %314 %316 = load ptr, ptr %315, align 8, !tbaa !53 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %316, i32 noundef %226) br label %store_gp.exit102.i -store_gp.exit102.i: ; preds = %281, %309, %switch.lookup42, %303, %store_fp.exit104.i, %switch.lookup39, %store_fp.exit95.i, %store_gp.exit.i, %.lr.ph125.i - %.179.i = phi i32 [ %.078121.i, %.lr.ph125.i ], [ %.280.i, %store_fp.exit95.i ], [ %.280.i, %store_gp.exit.i ], [ %.078121.i, %store_fp.exit104.i ], [ %271, %switch.lookup39 ], [ %296, %303 ], [ %296, %switch.lookup42 ], [ %296, %309 ], [ %271, %281 ] - %.1.i20 = phi i32 [ %.077122.i, %.lr.ph125.i ], [ %267, %store_fp.exit95.i ], [ %.2.i, %store_gp.exit.i ], [ %290, %store_fp.exit104.i ], [ %.2.i, %switch.lookup39 ], [ %.077122.i, %303 ], [ %.077122.i, %switch.lookup42 ], [ %.077122.i, %309 ], [ %.2.i, %281 ] +store_gp.exit102.i: ; preds = %281, %309, %switch.lookup43, %303, %store_fp.exit104.i, %switch.lookup40, %store_fp.exit95.i, %store_gp.exit.i, %.lr.ph125.i + %.179.i = phi i32 [ %.078121.i, %.lr.ph125.i ], [ %.280.i, %store_fp.exit95.i ], [ %.280.i, %store_gp.exit.i ], [ %.078121.i, %store_fp.exit104.i ], [ %271, %switch.lookup40 ], [ %296, %303 ], [ %296, %switch.lookup43 ], [ %296, %309 ], [ %271, %281 ] + %.1.i21 = phi i32 [ %.077122.i, %.lr.ph125.i ], [ %267, %store_fp.exit95.i ], [ %.2.i, %store_gp.exit.i ], [ %290, %store_fp.exit104.i ], [ %.2.i, %switch.lookup40 ], [ %.077122.i, %303 ], [ %.077122.i, %switch.lookup43 ], [ %.077122.i, %309 ], [ %.2.i, %281 ] %.076.i = load ptr, ptr %.076123.i, align 8, !tbaa !27 %.not92.i = icmp eq ptr %.076.i, null br i1 %.not92.i, label %._crit_edge126.i, label %.lr.ph125.i, !llvm.loop !65 @@ -3230,19 +3230,17 @@ define internal fastcc void @copy_struct_reg() unnamed_addr #3 { tail call void (ptr, ...) @println(ptr noundef nonnull @.str.41) %11 = getelementptr inbounds nuw i8, ptr %5, i64 4 %12 = load i32, ptr %11, align 4, !tbaa !32 - %13 = icmp sgt i32 %12, 0 - br i1 %13, label %select.unfold.preheader, label %.loopexit31 + %13 = tail call i32 @llvm.smin.i32(i32 %12, i32 8) + %.02532 = add nsw i32 %13, -1 + %14 = icmp ult i32 %.02532, 8 + br i1 %14, label %select.unfold, label %.loopexit31 -select.unfold.preheader: ; preds = %10 - %14 = tail call i32 @llvm.umin.i32(i32 %12, i32 8) - br label %select.unfold - -select.unfold: ; preds = %select.unfold.preheader, %select.unfold - %.025.in32 = phi i32 [ %.025, %select.unfold ], [ %14, %select.unfold.preheader ] - %.025 = add nsw i32 %.025.in32, -1 +select.unfold: ; preds = %10, %select.unfold + %.02533 = phi i32 [ %.025, %select.unfold ], [ %.02532, %10 ] tail call void (ptr, ...) @println(ptr noundef nonnull @.str.271) - tail call void (ptr, ...) @println(ptr noundef nonnull @.str.272, i32 noundef %.025) - %15 = icmp samesign ugt i32 %.025.in32, 1 + tail call void (ptr, ...) @println(ptr noundef nonnull @.str.272, i32 noundef %.02533) + %.025 = add nsw i32 %.02533, -1 + %15 = icmp ult i32 %.025, 8 br i1 %15, label %select.unfold, label %.loopexit31, !llvm.loop !126 .loopexit31: ; preds = %select.unfold, %.loopexit31.sink.split, %10 @@ -3273,11 +3271,11 @@ select.unfold29.preheader: ; preds = %22 br label %select.unfold29 select.unfold29: ; preds = %select.unfold29.preheader, %select.unfold29 - %.0.in33 = phi i32 [ %.0, %select.unfold29 ], [ %27, %select.unfold29.preheader ] - %.0 = add nsw i32 %.0.in33, -1 + %.0.in34 = phi i32 [ %.0, %select.unfold29 ], [ %27, %select.unfold29.preheader ] + %.0 = add nsw i32 %.0.in34, -1 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.275, ptr noundef nonnull %24) tail call void (ptr, ...) @println(ptr noundef nonnull @.str.276, i32 noundef %.0, ptr noundef nonnull %23) - %28 = icmp samesign ugt i32 %.0.in33, 9 + %28 = icmp samesign ugt i32 %.0.in34, 9 br i1 %28, label %select.unfold29, label %.loopexit, !llvm.loop !127 .loopexit: ; preds = %select.unfold29, %22, %21, %.loopexit31 diff --git a/bench/clamav/optimized/regex_pcre.ll b/bench/clamav/optimized/regex_pcre.ll index 5d6874b7b8b..eb78ee6eed7 100644 --- a/bench/clamav/optimized/regex_pcre.ll +++ b/bench/clamav/optimized/regex_pcre.ll @@ -30,7 +30,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define ptr @cli_pcre_malloc(i64 noundef %0, ptr readnone captures(none) %1) #0 { - %3 = tail call ptr @cli_max_malloc(i64 noundef %0) #6 + %3 = tail call ptr @cli_max_malloc(i64 noundef %0) #7 ret ptr %3 } @@ -38,7 +38,7 @@ declare ptr @cli_max_malloc(i64 noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable define void @cli_pcre_free(ptr noundef captures(none) %0, ptr readnone captures(none) %1) #2 { - tail call void @free(ptr noundef %0) #6 + tail call void @free(ptr noundef %0) #7 ret void } @@ -99,7 +99,7 @@ define range(i32 0, 28) i32 @cli_pcre_addoptions(ptr noundef captures(address_is 19: ; preds = %18 %20 = sext i8 %11 to i32 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str, i32 noundef %20) #6 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str, i32 noundef %20) #7 br label %.loopexit 21: ; preds = %9, %17, %16, %15, %14, %13, %12 @@ -135,26 +135,26 @@ define range(i32 0, 21) i32 @cli_pcre_compile(ptr noundef captures(address_is_nu br i1 %.not33, label %12, label %13 12: ; preds = %9, %5 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.1) #6 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.1) #7 br label %41 13: ; preds = %9 - %14 = tail call ptr @pcre2_general_context_create_8(ptr noundef nonnull @cli_pcre_malloc, ptr noundef nonnull @cli_pcre_free, ptr noundef null) #6 + %14 = tail call ptr @pcre2_general_context_create_8(ptr noundef nonnull @cli_pcre_malloc, ptr noundef nonnull @cli_pcre_free, ptr noundef null) #7 %.not34 = icmp eq ptr %14, null br i1 %.not34, label %15, label %16 15: ; preds = %13 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.2) #6 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.2) #7 br label %41 16: ; preds = %13 - %17 = tail call ptr @pcre2_compile_context_create_8(ptr noundef nonnull %14) #6 + %17 = tail call ptr @pcre2_compile_context_create_8(ptr noundef nonnull %14) #7 %.not35 = icmp eq ptr %17, null br i1 %.not35, label %18, label %19 18: ; preds = %16 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.3) #6 - tail call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.3) #7 + tail call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 br label %41 19: ; preds = %16 @@ -169,7 +169,7 @@ define range(i32 0, 21) i32 @cli_pcre_compile(ptr noundef captures(address_is_nu 24: ; preds = %19, %21 %.sink = phi i32 [ %23, %21 ], [ %3, %19 ] - %25 = call ptr @pcre2_compile_8(ptr noundef %20, i64 noundef -1, i32 noundef %.sink, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %17) #6 + %25 = call ptr @pcre2_compile_8(ptr noundef %20, i64 noundef -1, i32 noundef %.sink, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %17) #7 store ptr %25, ptr %0, align 8, !tbaa !15 %26 = icmp eq ptr %25, null br i1 %26, label %27, label %31 @@ -177,35 +177,35 @@ define range(i32 0, 21) i32 @cli_pcre_compile(ptr noundef captures(address_is_nu 27: ; preds = %24 call void @llvm.lifetime.start.p0(ptr nonnull %8) %28 = load i32, ptr %6, align 4, !tbaa !16 - %29 = call i32 @pcre2_get_error_message_8(i32 noundef %28, ptr noundef nonnull %8, i64 noundef 256) #6 + %29 = call i32 @pcre2_get_error_message_8(i32 noundef %28, ptr noundef nonnull %8, i64 noundef 256) #7 %30 = load i64, ptr %7, align 8, !tbaa !17 - call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.4, i64 noundef %30, ptr noundef nonnull %8) #6 - call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #6 - call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 + call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.4, i64 noundef %30, ptr noundef nonnull %8) #7 + call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #7 + call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %41 31: ; preds = %24 - %32 = call ptr @pcre2_match_context_create_8(ptr noundef nonnull %14) #6 + %32 = call ptr @pcre2_match_context_create_8(ptr noundef nonnull %14) #7 %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %32, ptr %33, align 8, !tbaa !19 %.not37 = icmp eq ptr %32, null br i1 %.not37, label %34, label %35 34: ; preds = %31 - call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.5) #6 - call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #6 - call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 + call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.5) #7 + call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #7 + call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 br label %41 35: ; preds = %31 %36 = trunc i64 %1 to i32 - %37 = call i32 @pcre2_set_match_limit_8(ptr noundef nonnull %32, i32 noundef %36) #6 + %37 = call i32 @pcre2_set_match_limit_8(ptr noundef nonnull %32, i32 noundef %36) #7 %38 = load ptr, ptr %33, align 8, !tbaa !19 %39 = trunc i64 %2 to i32 - %40 = call i32 @pcre2_set_recursion_limit_8(ptr noundef %38, i32 noundef %39) #6 - call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #6 - call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 + %40 = call i32 @pcre2_set_recursion_limit_8(ptr noundef %38, i32 noundef %39) #7 + call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #7 + call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 br label %41 41: ; preds = %35, %34, %27, %18, %15, %12 @@ -240,7 +240,7 @@ define i32 @cli_pcre_match(ptr noundef readonly captures(none) %0, ptr noundef % %9 = load ptr, ptr %8, align 8, !tbaa !20 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 %11 = load ptr, ptr %10, align 8, !tbaa !19 - %12 = tail call i32 @pcre2_match_8(ptr noundef %7, ptr noundef %1, i64 noundef %2, i64 noundef %3, i32 noundef %4, ptr noundef %9, ptr noundef %11) #6 + %12 = tail call i32 @pcre2_match_8(ptr noundef %7, ptr noundef %1, i64 noundef %2, i64 noundef %3, i32 noundef %4, ptr noundef %9, ptr noundef %11) #7 %or.cond = icmp slt i32 %12, -1 br i1 %or.cond, label %13, label %18 @@ -253,20 +253,20 @@ define i32 @cli_pcre_match(ptr noundef readonly captures(none) %0, ptr noundef % ] 14: ; preds = %13 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.6) #6 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.6) #7 store i32 20, ptr %5, align 8, !tbaa !23 br label %33 15: ; preds = %13 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #7 br label %33 16: ; preds = %13 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8) #7 br label %33 17: ; preds = %13 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i32 noundef %12) #6 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i32 noundef %12) #7 store i32 22, ptr %5, align 8, !tbaa !23 br label %33 @@ -276,7 +276,7 @@ define i32 @cli_pcre_match(ptr noundef readonly captures(none) %0, ptr noundef % 20: ; preds = %18 %21 = load ptr, ptr %8, align 8, !tbaa !20 - %22 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %21) #6 + %22 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %21) #7 %23 = load i64, ptr %22, align 8, !tbaa !17 %24 = trunc i64 %23 to i32 %25 = getelementptr inbounds nuw i8, ptr %5, i64 4 @@ -315,12 +315,12 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %10) %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 %12 = load ptr, ptr %11, align 8, !tbaa !20 - %13 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %12) #6 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #6 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11) #6 + %13 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %12) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11) #7 %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 %15 = load ptr, ptr %14, align 8, !tbaa !14 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, ptr noundef %15, i32 noundef %3) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, ptr noundef %15, i32 noundef %3) #7 %16 = icmp sgt i32 %3, 0 br i1 %16, label %.preheader.preheader, label %86 @@ -340,33 +340,33 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef br i1 %22, label %23, label %24 23: ; preds = %.preheader - call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.13) #6 + call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.13) #7 br label %37 24: ; preds = %.preheader %25 = sub i64 %21, %18 - %26 = icmp ult i64 %25, 1029 - %spec.select = select i1 %26, i64 %25, i64 1028 - %.not = icmp eq i64 %spec.select, 0 + %spec.select = call i64 @llvm.umin.i64(i64 %25, i64 1028) + %.not = icmp eq i64 %21, %18 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %24, %.lr.ph - %.03438 = phi i64 [ %34, %.lr.ph ], [ 0, %24 ] - %27 = shl nuw nsw i64 %.03438, 1 - %28 = getelementptr inbounds nuw i8, ptr %10, i64 %27 - %29 = sub nuw nsw i64 2057, %27 - %30 = getelementptr inbounds nuw i8, ptr %19, i64 %.03438 - %31 = load i8, ptr %30, align 1, !tbaa !8 - %32 = sext i8 %31 to i32 - %33 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %28, i64 noundef %29, ptr noundef nonnull @.str.14, i32 noundef %32) #6 - %34 = add nuw i64 %.03438, 1 - %exitcond.not = icmp eq i64 %34, %spec.select + %.03438 = phi i64 [ %33, %.lr.ph ], [ 0, %24 ] + %26 = shl nuw nsw i64 %.03438, 1 + %27 = getelementptr inbounds nuw i8, ptr %10, i64 %26 + %28 = sub nuw nsw i64 2057, %26 + %29 = getelementptr inbounds nuw i8, ptr %19, i64 %.03438 + %30 = load i8, ptr %29, align 1, !tbaa !8 + %31 = sext i8 %30 to i32 + %32 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %27, i64 noundef %28, ptr noundef nonnull @.str.14, i32 noundef %31) #7 + %33 = add nuw nsw i64 %.03438, 1 + %exitcond.not = icmp eq i64 %33, %spec.select br i1 %exitcond.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %24 - %35 = select i1 %26, ptr @.str.17, ptr @.str.16 + %34 = icmp ugt i64 %25, 1028 + %35 = select i1 %34, ptr @.str.16, ptr @.str.17 %36 = trunc nuw nsw i64 %indvars.iv to i32 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15, i32 noundef %36, ptr noundef nonnull %10, ptr noundef nonnull %35) #6 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15, i32 noundef %36, ptr noundef nonnull %10, ptr noundef nonnull %35) #7 br label %37 37: ; preds = %._crit_edge, %23 @@ -380,21 +380,21 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) %39 = load ptr, ptr %0, align 8, !tbaa !15 - %40 = call i32 @pcre2_pattern_info_8(ptr noundef %39, i32 noundef 17, ptr noundef nonnull %6) #6 + %40 = call i32 @pcre2_pattern_info_8(ptr noundef %39, i32 noundef 17, ptr noundef nonnull %6) #7 %41 = load i32, ptr %6, align 4, !tbaa !16 %42 = icmp slt i32 %41, 1 br i1 %42, label %43, label %44 43: ; preds = %38 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.21) #6 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.21) #7 br label %named_substr_print.exit 44: ; preds = %38 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22) #6 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22) #7 %45 = load ptr, ptr %0, align 8, !tbaa !15 - %46 = call i32 @pcre2_pattern_info_8(ptr noundef %45, i32 noundef 19, ptr noundef nonnull %8) #6 + %46 = call i32 @pcre2_pattern_info_8(ptr noundef %45, i32 noundef 19, ptr noundef nonnull %8) #7 %47 = load ptr, ptr %0, align 8, !tbaa !15 - %48 = call i32 @pcre2_pattern_info_8(ptr noundef %47, i32 noundef 18, ptr noundef nonnull %7) #6 + %48 = call i32 @pcre2_pattern_info_8(ptr noundef %47, i32 noundef 18, ptr noundef nonnull %7) #7 %49 = load i32, ptr %6, align 4, !tbaa !16 %50 = icmp sgt i32 %49, 0 br i1 %50, label %.lr.ph34.preheader.i, label %named_substr_print.exit @@ -421,30 +421,30 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef %64 = getelementptr inbounds nuw i8, ptr %61, i64 8 %65 = load i64, ptr %64, align 8, !tbaa !17 %66 = sub i64 %65, %62 - %67 = icmp ult i64 %66, 1029 - %spec.select.i = select i1 %67, i64 %66, i64 1028 - %.not.i = icmp eq i64 %spec.select.i, 0 + %spec.select.i = call i64 @llvm.umin.i64(i64 %66, i64 1028) + %.not.i = icmp eq i64 %65, %62 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph34.i, %.lr.ph.i - %.02730.i = phi i64 [ %75, %.lr.ph.i ], [ 0, %.lr.ph34.i ] - %68 = shl nuw nsw i64 %.02730.i, 1 - %69 = getelementptr inbounds nuw i8, ptr %9, i64 %68 - %70 = sub nuw nsw i64 2057, %68 - %71 = getelementptr inbounds nuw i8, ptr %63, i64 %.02730.i - %72 = load i8, ptr %71, align 1, !tbaa !8 - %73 = sext i8 %72 to i32 - %74 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %69, i64 noundef %70, ptr noundef nonnull @.str.14, i32 noundef %73) #6 - %75 = add nuw i64 %.02730.i, 1 - %exitcond.not.i = icmp eq i64 %75, %spec.select.i + %.02730.i = phi i64 [ %74, %.lr.ph.i ], [ 0, %.lr.ph34.i ] + %67 = shl nuw nsw i64 %.02730.i, 1 + %68 = getelementptr inbounds nuw i8, ptr %9, i64 %67 + %69 = sub nuw nsw i64 2057, %67 + %70 = getelementptr inbounds nuw i8, ptr %63, i64 %.02730.i + %71 = load i8, ptr %70, align 1, !tbaa !8 + %72 = sext i8 %71 to i32 + %73 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %68, i64 noundef %69, ptr noundef nonnull @.str.14, i32 noundef %72) #7 + %74 = add nuw nsw i64 %.02730.i, 1 + %exitcond.not.i = icmp eq i64 %74, %spec.select.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph34.i + %75 = icmp ugt i64 %66, 1028 %76 = load i32, ptr %7, align 4, !tbaa !16 %77 = add nsw i32 %76, -3 %78 = getelementptr inbounds nuw i8, ptr %.02631.i, i64 2 - %79 = select i1 %67, ptr @.str.17, ptr @.str.16 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %58, i32 noundef %77, ptr noundef nonnull %78, ptr noundef nonnull %9, ptr noundef nonnull %79) #6 + %79 = select i1 %75, ptr @.str.16, ptr @.str.17 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %58, i32 noundef %77, ptr noundef nonnull %78, ptr noundef nonnull %9, ptr noundef nonnull %79) #7 %80 = load i32, ptr %7, align 4, !tbaa !16 %81 = sext i32 %80 to i64 %82 = getelementptr inbounds i8, ptr %.02631.i, i64 %81 @@ -465,16 +465,16 @@ named_substr_print.exit: ; preds = %._crit_edge.i, %43, br i1 %87, label %88, label %89 88: ; preds = %86 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.18) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.18) #7 br label %90 89: ; preds = %86 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.19, i32 noundef %3) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.19, i32 noundef %3) #7 br label %90 90: ; preds = %88, %89, %named_substr_print.exit - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.20) #6 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #6 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.20) #7 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #7 call void @llvm.lifetime.end.p0(ptr nonnull %10) ret void } @@ -497,12 +497,12 @@ define range(i32 0, 21) i32 @cli_pcre_results_reset(ptr noundef captures(none) i br i1 %.not, label %8, label %7 7: ; preds = %2 - tail call void @pcre2_match_data_free_8(ptr noundef nonnull %6) #6 + tail call void @pcre2_match_data_free_8(ptr noundef nonnull %6) #7 br label %8 8: ; preds = %7, %2 %9 = load ptr, ptr %1, align 8, !tbaa !15 - %10 = tail call ptr @pcre2_match_data_create_from_pattern_8(ptr noundef %9, ptr noundef null) #6 + %10 = tail call ptr @pcre2_match_data_create_from_pattern_8(ptr noundef %9, ptr noundef null) #7 store ptr %10, ptr %5, align 8, !tbaa !20 %.not9 = icmp eq ptr %10, null %. = select i1 %.not9, i32 20, i32 0 @@ -521,7 +521,7 @@ define void @cli_pcre_results_free(ptr noundef readonly captures(none) %0) local br i1 %.not, label %5, label %4 4: ; preds = %1 - tail call void @pcre2_match_data_free_8(ptr noundef nonnull %3) #6 + tail call void @pcre2_match_data_free_8(ptr noundef nonnull %3) #7 br label %5 5: ; preds = %4, %1 @@ -535,7 +535,7 @@ define void @cli_pcre_free_single(ptr noundef captures(none) %0) local_unnamed_a br i1 %.not, label %4, label %3 3: ; preds = %1 - tail call void @pcre2_code_free_8(ptr noundef nonnull %2) #6 + tail call void @pcre2_code_free_8(ptr noundef nonnull %2) #7 store ptr null, ptr %0, align 8, !tbaa !15 br label %4 @@ -546,7 +546,7 @@ define void @cli_pcre_free_single(ptr noundef captures(none) %0) local_unnamed_a br i1 %.not11, label %8, label %7 7: ; preds = %4 - tail call void @pcre2_match_context_free_8(ptr noundef nonnull %6) #6 + tail call void @pcre2_match_context_free_8(ptr noundef nonnull %6) #7 store ptr null, ptr %5, align 8, !tbaa !19 br label %8 @@ -557,7 +557,7 @@ define void @cli_pcre_free_single(ptr noundef captures(none) %0) local_unnamed_a br i1 %.not12, label %12, label %11 11: ; preds = %8 - tail call void @free(ptr noundef nonnull %10) #6 + tail call void @free(ptr noundef nonnull %10) #7 store ptr null, ptr %9, align 8, !tbaa !14 br label %12 @@ -577,13 +577,17 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #5 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #5 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umin.i64(i64, i64) #6 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nounwind } +attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll index 716fa472942..7e74064a667 100644 --- a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll +++ b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll @@ -407,13 +407,13 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg18is_negative_number17he6231e86 br i1 %.01127.i.i, label %"_ZN8clap_lex9ParsedArg18is_negative_number28_$u7b$$u7b$closure$u7d$$u7d$17h413729e608f85e83E.exit", label %30 27: ; preds = %23 - %28 = icmp ne i64 %.sroa.0.029.i.i, 1 + %28 = icmp eq i64 %.sroa.0.029.i.i, 0 %29 = icmp ne i64 %.sroa.8.01725.i.i, 0 %or.cond1.i.i = and i1 %28, %29 br i1 %or.cond1.i.i, label %24, label %"_ZN8clap_lex9ParsedArg18is_negative_number28_$u7b$$u7b$closure$u7d$$u7d$17h413729e608f85e83E.exit" 30: ; preds = %26 - %31 = icmp ne i64 %.sroa.0.029.i.i, 1 + %31 = icmp eq i64 %.sroa.0.029.i.i, 0 %32 = icmp ne i64 %.sroa.8.01725.i.i, 0 %or.cond.i.i = and i1 %31, %32 br i1 %or.cond.i.i, label %24, label %"_ZN8clap_lex9ParsedArg18is_negative_number28_$u7b$$u7b$closure$u7d$$u7d$17h413729e608f85e83E.exit" @@ -520,16 +520,16 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(pt br i1 %5, label %6, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" 6: ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" - %.not.i.i1 = icmp eq i64 %4, 2 - br i1 %.not.i.i1, label %7, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" + %7 = icmp eq i64 %4, 2 + br i1 %7, label %8, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" -7: ; preds = %6 +8: ; preds = %6 %bcmp.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %2, ptr noundef nonnull dereferenceable(2) @anon.248846a2e22cbdbe35d199858cf2b949.26, i64 2), !alias.scope !65, !noalias !69 - %8 = icmp ne i32 %bcmp.i.i, 0 + %9 = icmp ne i32 %bcmp.i.i, 0 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" -"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread": ; preds = %7, %6, %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" - %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %8, %7 ], [ true, %6 ] +"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread": ; preds = %8, %6, %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" + %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %9, %8 ], [ true, %6 ] ret i1 %.0 } @@ -653,17 +653,17 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(p "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit": ; preds = %1 %rhsc = load i8, ptr %2, align 1 %5 = icmp ne i8 %rhsc, 45 - %.not.i.i1 = icmp eq i64 %4, 1 - %or.cond = or i1 %5, %.not.i.i1 + %6 = icmp eq i64 %4, 1 + %or.cond = or i1 %5, %6 br i1 %or.cond, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4": ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" %bcmp.i.i.i5 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) @anon.248846a2e22cbdbe35d199858cf2b949.26, ptr noundef nonnull readonly align 1 dereferenceable(2) %2, i64 2), !alias.scope !89 - %6 = icmp ne i32 %bcmp.i.i.i5, 0 + %7 = icmp ne i32 %bcmp.i.i.i5, 0 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4", %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" - %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %6, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" ] + %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %7, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" ] ret i1 %.0 } @@ -727,7 +727,7 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt 7: ; preds = %.lr.ph, %.thread53 %8 = phi i64 [ %.promoted75, %.lr.ph ], [ %46, %.thread53 ] - %9 = phi ptr [ %.promoted, %.lr.ph ], [ %.sink23.i.i, %.thread53 ] + %9 = phi ptr [ %.promoted, %.lr.ph ], [ %.sink22.i.i, %.thread53 ] %.sroa.02.074 = phi i64 [ 0, %.lr.ph ], [ %10, %.thread53 ] %10 = add nuw i64 %.sroa.02.074, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !112) @@ -787,8 +787,8 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt br i1 %43, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i.i", label %.thread53 .thread53: ; preds = %13, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i", %25 - %.sink23.i.i = phi ptr [ %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i.i" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i" ], [ %32, %25 ], [ %14, %13 ] - %44 = ptrtoint ptr %.sink23.i.i to i64 + %.sink22.i.i = phi ptr [ %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i.i" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i" ], [ %32, %25 ], [ %14, %13 ] + %44 = ptrtoint ptr %.sink22.i.i to i64 %45 = sub i64 %44, %11 %46 = add i64 %45, %8 store i64 %46, ptr %6, align 8, !alias.scope !111, !noalias !108 @@ -887,13 +887,13 @@ define noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe516 br i1 %.01127.i, label %_ZN8clap_lex9is_number17hc403b9878a2b42b1E.exit, label %27 24: ; preds = %20 - %25 = icmp ne i64 %.sroa.0.029.i, 1 + %25 = icmp eq i64 %.sroa.0.029.i, 0 %26 = icmp ne i64 %.sroa.8.01725.i, 0 %or.cond1.i = and i1 %25, %26 br i1 %or.cond1.i, label %21, label %_ZN8clap_lex9is_number17hc403b9878a2b42b1E.exit 27: ; preds = %23 - %28 = icmp ne i64 %.sroa.0.029.i, 1 + %28 = icmp eq i64 %.sroa.0.029.i, 0 %29 = icmp ne i64 %.sroa.8.01725.i, 0 %or.cond.i = and i1 %28, %29 br i1 %or.cond.i, label %21, label %_ZN8clap_lex9is_number17hc403b9878a2b42b1E.exit @@ -973,18 +973,18 @@ define void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias br i1 %46, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread", label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16": ; preds = %35, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i", %23 - %.sink23 = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %10, %23 ], [ %37, %35 ] - %.sroa.4.0.i.ph9.i19 = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %24, %23 ], [ %45, %35 ] + %.sink22 = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %10, %23 ], [ %37, %35 ] + %.sroa.4.0.i.ph9.i18 = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %24, %23 ], [ %45, %35 ] %47 = getelementptr inbounds nuw i8, ptr %1, i64 32 %48 = load i64, ptr %47, align 8, !alias.scope !138, !noundef !4 - %49 = ptrtoint ptr %.sink23 to i64 + %49 = ptrtoint ptr %.sink22 to i64 %50 = sub i64 %49, %7 %51 = add i64 %50, %48 store i64 %51, ptr %47, align 8, !alias.scope !138 %52 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr null, ptr %52, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %.sroa.4.0.i.ph9.i19, ptr %.sroa.43.0..sroa_idx, align 8 + store i32 %.sroa.4.0.i.ph9.i18, ptr %.sroa.43.0..sroa_idx, align 8 br label %55 "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread": ; preds = %2, %35 @@ -1178,18 +1178,18 @@ define void @"_ZN79_$LT$clap_lex..ShortFlags$u20$as$u20$core..iter..traits..iter br i1 %46, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i", label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16.i" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16.i": ; preds = %35, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i", %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" - %.sink23.i = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %10, %23 ], [ %37, %35 ] - %.sroa.4.0.i.ph9.i19.i = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %24, %23 ], [ %45, %35 ] + %.sink22.i = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %10, %23 ], [ %37, %35 ] + %.sroa.4.0.i.ph9.i18.i = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %24, %23 ], [ %45, %35 ] %47 = getelementptr inbounds nuw i8, ptr %1, i64 32 %48 = load i64, ptr %47, align 8, !alias.scope !204, !noalias !177, !noundef !4 - %49 = ptrtoint ptr %.sink23.i to i64 + %49 = ptrtoint ptr %.sink22.i to i64 %50 = sub i64 %49, %7 %51 = add i64 %50, %48 store i64 %51, ptr %47, align 8, !alias.scope !204, !noalias !177 %52 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr null, ptr %52, align 8, !alias.scope !177, !noalias !180 %.sroa.43.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %.sroa.4.0.i.ph9.i19.i, ptr %.sroa.43.0..sroa_idx.i, align 8, !alias.scope !177, !noalias !180 + store i32 %.sroa.4.0.i.ph9.i18.i, ptr %.sroa.43.0..sroa_idx.i, align 8, !alias.scope !177, !noalias !180 br label %_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E.exit "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i": ; preds = %35, %2 diff --git a/bench/cmake/optimized/archive_write_add_filter_bzip2.ll b/bench/cmake/optimized/archive_write_add_filter_bzip2.ll index 451928c6703..d77f086893d 100644 --- a/bench/cmake/optimized/archive_write_add_filter_bzip2.ll +++ b/bench/cmake/optimized/archive_write_add_filter_bzip2.ll @@ -17,19 +17,19 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define dso_local range(i32 -30, 1) i32 @archive_write_set_compression_bzip2(ptr noundef %0) local_unnamed_addr #0 { - tail call void @__archive_write_filters_free(ptr noundef %0) #9 - %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #9 - %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #9 + tail call void @__archive_write_filters_free(ptr noundef %0) #10 + %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #10 + %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #10 %.not.i = icmp eq i32 %3, -30 br i1 %.not.i, label %archive_write_add_filter_bzip2.exit, label %4 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #10 + %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #11 %6 = icmp eq ptr %5, null br i1 %6, label %7, label %8 7: ; preds = %4 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #9 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #10 br label %archive_write_add_filter_bzip2.exit 8: ; preds = %4 @@ -59,18 +59,18 @@ declare void @__archive_write_filters_free(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define dso_local range(i32 -30, 1) i32 @archive_write_add_filter_bzip2(ptr noundef %0) local_unnamed_addr #0 { - %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #9 - %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #9 + %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #10 + %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #10 %.not = icmp eq i32 %3, -30 br i1 %.not, label %16, label %4 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #10 + %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #11 %6 = icmp eq ptr %5, null br i1 %6, label %7, label %8 7: ; preds = %4 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #9 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #10 br label %16 8: ; preds = %4 @@ -109,32 +109,31 @@ declare void @archive_set_error(ptr noundef, i32 noundef, ptr noundef, ...) loca define internal range(i32 -20, 1) i32 @archive_compressor_bzip2_options(ptr noundef readonly captures(none) %0, ptr noundef readonly captures(none) %1, ptr noundef readonly captures(address_is_null) %2) #3 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 72 %5 = load ptr, ptr %4, align 8, !tbaa !13 - %6 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(18) @.str.3) #11 + %6 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(18) @.str.3) #12 %7 = icmp ne i32 %6, 0 %8 = icmp eq ptr %2, null %or.cond12 = or i1 %8, %7 - br i1 %or.cond12, label %17, label %9 + br i1 %or.cond12, label %16, label %9 9: ; preds = %3 %10 = load i8, ptr %2, align 1, !tbaa !23 %11 = add i8 %10, -48 %or.cond = icmp ult i8 %11, 10 - br i1 %or.cond, label %12, label %17 + br i1 %or.cond, label %12, label %16 12: ; preds = %9 %13 = getelementptr inbounds nuw i8, ptr %2, i64 1 %14 = load i8, ptr %13, align 1, !tbaa !23 %.not = icmp eq i8 %14, 0 - br i1 %.not, label %15, label %17 + br i1 %.not, label %15, label %16 15: ; preds = %12 - %16 = icmp eq i8 %10, 48 - %narrow13 = select i1 %16, i8 1, i8 %11 + %narrow13 = tail call i8 @llvm.umax.i8(i8 %11, i8 1) %spec.select = zext nneg i8 %narrow13 to i32 store i32 %spec.select, ptr %5, align 8, !tbaa !4 - br label %17 + br label %16 -17: ; preds = %3, %9, %12, %15 +16: ; preds = %3, %9, %12, %15 %.0 = phi i32 [ 0, %15 ], [ -20, %12 ], [ -20, %9 ], [ -20, %3 ] ret i32 %.0 } @@ -160,7 +159,7 @@ define internal i32 @archive_compressor_bzip2_close(ptr noundef readonly capture %13 = load ptr, ptr %6, align 8, !tbaa !25 %14 = load ptr, ptr %7, align 8, !tbaa !26 %15 = load i64, ptr %8, align 8, !tbaa !27 - %16 = tail call i32 @__archive_write_filter(ptr noundef %13, ptr noundef %14, i64 noundef %15) #9 + %16 = tail call i32 @__archive_write_filter(ptr noundef %13, ptr noundef %14, i64 noundef %15) #10 %.not.i = icmp eq i32 %16, 0 br i1 %.not.i, label %17, label %drive_compressor.exit.thread @@ -173,7 +172,7 @@ define internal i32 @archive_compressor_bzip2_close(ptr noundef readonly capture br label %21 21: ; preds = %17, %.split.i - %22 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %4, i32 noundef 2) #9 + %22 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %4, i32 noundef 2) #10 switch i32 %22, label %.split20.us.i [ i32 1, label %.split.i.backedge i32 3, label %.split.i.backedge @@ -186,7 +185,7 @@ define internal i32 @archive_compressor_bzip2_close(ptr noundef readonly capture .split20.us.i: ; preds = %21 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 %24 = load ptr, ptr %23, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %24, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %22) #9 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %24, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %22) #10 br label %drive_compressor.exit.thread drive_compressor.exit: ; preds = %21 @@ -196,19 +195,19 @@ drive_compressor.exit: ; preds = %21 %28 = load i32, ptr %5, align 8, !tbaa !24 %29 = zext i32 %28 to i64 %30 = sub i64 %27, %29 - %31 = tail call i32 @__archive_write_filter(ptr noundef %25, ptr noundef %26, i64 noundef %30) #9 + %31 = tail call i32 @__archive_write_filter(ptr noundef %25, ptr noundef %26, i64 noundef %30) #10 br label %drive_compressor.exit.thread drive_compressor.exit.thread: ; preds = %12, %.split20.us.i, %drive_compressor.exit %.0 = phi i32 [ %31, %drive_compressor.exit ], [ -30, %.split20.us.i ], [ -30, %12 ] - %32 = tail call i32 @BZ2_bzCompressEnd(ptr noundef nonnull %4) #9 + %32 = tail call i32 @BZ2_bzCompressEnd(ptr noundef nonnull %4) #10 %cond = icmp eq i32 %32, 0 br i1 %cond, label %36, label %33 33: ; preds = %drive_compressor.exit.thread %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 %35 = load ptr, ptr %34, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %35, i32 noundef 22, ptr noundef nonnull @.str.10) #9 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %35, i32 noundef 22, ptr noundef nonnull @.str.10) #10 br label %36 36: ; preds = %drive_compressor.exit.thread, %33 @@ -222,8 +221,8 @@ define internal noundef i32 @archive_compressor_bzip2_free(ptr noundef captures( %3 = load ptr, ptr %2, align 8, !tbaa !13 %4 = getelementptr inbounds nuw i8, ptr %3, i64 96 %5 = load ptr, ptr %4, align 8, !tbaa !26 - tail call void @free(ptr noundef %5) #9 - tail call void @free(ptr noundef %3) #9 + tail call void @free(ptr noundef %5) #10 + tail call void @free(ptr noundef %3) #10 store ptr null, ptr %2, align 8, !tbaa !13 ret i32 0 } @@ -247,86 +246,86 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_open(ptr noundef %9 = load ptr, ptr %8, align 8, !tbaa !29 %10 = load i32, ptr %9, align 8, !tbaa !30 %11 = icmp eq i32 %10, -1329217314 - br i1 %11, label %12, label %20 + br i1 %11, label %12, label %21 12: ; preds = %7 - %13 = tail call i32 @archive_write_get_bytes_per_block(ptr noundef nonnull %9) #9 + %13 = tail call i32 @archive_write_get_bytes_per_block(ptr noundef nonnull %9) #10 %14 = sext i32 %13 to i64 %15 = icmp ugt i32 %13, 65536 - br i1 %15, label %20, label %16 + br i1 %15, label %21, label %16 16: ; preds = %12 - %.not = icmp eq i32 %13, 0 - br i1 %.not, label %20, label %17 - -17: ; preds = %16 - %18 = urem i32 65536, %13 - %narrow = sub nuw nsw i32 65536, %18 - %19 = zext nneg i32 %narrow to i64 - br label %20 - -20: ; preds = %12, %17, %16, %7 - %.035 = phi i64 [ %19, %17 ], [ 65536, %16 ], [ 65536, %7 ], [ %14, %12 ] - %21 = getelementptr inbounds nuw i8, ptr %3, i64 104 - store i64 %.035, ptr %21, align 8, !tbaa !27 - %22 = tail call noalias ptr @malloc(i64 noundef %.035) #12 - store ptr %22, ptr %4, align 8, !tbaa !26 - %.not39 = icmp eq ptr %22, null - br i1 %.not39, label %23, label %.critedge - -23: ; preds = %20 - %24 = load ptr, ptr %8, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %24, i32 noundef 12, ptr noundef nonnull @.str.4) #9 - br label %45 - -.critedge: ; preds = %..critedge_crit_edge, %20 - %25 = phi i64 [ %.035, %20 ], [ %.pre, %..critedge_crit_edge ] - %26 = phi ptr [ %22, %20 ], [ %5, %..critedge_crit_edge ] - %27 = getelementptr inbounds nuw i8, ptr %3, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %27, i8 0, i64 80, i1 false) - %28 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store ptr %26, ptr %28, align 8, !tbaa !28 - %29 = trunc i64 %25 to i32 - %30 = getelementptr inbounds nuw i8, ptr %3, i64 40 - store i32 %29, ptr %30, align 8, !tbaa !24 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr @archive_compressor_bzip2_write, ptr %31, align 8, !tbaa !35 - %32 = load i32, ptr %3, align 8, !tbaa !4 - %33 = tail call i32 @BZ2_bzCompressInit(ptr noundef nonnull %27, i32 noundef %32, i32 noundef 0, i32 noundef 30) #9 - %34 = icmp eq i32 %33, 0 - br i1 %34, label %35, label %36 - -35: ; preds = %.critedge - store ptr %3, ptr %2, align 8, !tbaa !13 - br label %45 + %17 = icmp eq i32 %13, 0 + br i1 %17, label %21, label %18 + +18: ; preds = %16 + %19 = urem i32 65536, %13 + %narrow = sub nuw nsw i32 65536, %19 + %20 = zext nneg i32 %narrow to i64 + br label %21 + +21: ; preds = %12, %18, %16, %7 + %.035 = phi i64 [ %20, %18 ], [ 65536, %16 ], [ 65536, %7 ], [ %14, %12 ] + %22 = getelementptr inbounds nuw i8, ptr %3, i64 104 + store i64 %.035, ptr %22, align 8, !tbaa !27 + %23 = tail call noalias ptr @malloc(i64 noundef %.035) #13 + store ptr %23, ptr %4, align 8, !tbaa !26 + %.not39 = icmp eq ptr %23, null + br i1 %.not39, label %24, label %.critedge + +24: ; preds = %21 + %25 = load ptr, ptr %8, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %25, i32 noundef 12, ptr noundef nonnull @.str.4) #10 + br label %46 + +.critedge: ; preds = %..critedge_crit_edge, %21 + %26 = phi i64 [ %.035, %21 ], [ %.pre, %..critedge_crit_edge ] + %27 = phi ptr [ %23, %21 ], [ %5, %..critedge_crit_edge ] + %28 = getelementptr inbounds nuw i8, ptr %3, i64 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %28, i8 0, i64 80, i1 false) + %29 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store ptr %27, ptr %29, align 8, !tbaa !28 + %30 = trunc i64 %26 to i32 + %31 = getelementptr inbounds nuw i8, ptr %3, i64 40 + store i32 %30, ptr %31, align 8, !tbaa !24 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store ptr @archive_compressor_bzip2_write, ptr %32, align 8, !tbaa !35 + %33 = load i32, ptr %3, align 8, !tbaa !4 + %34 = tail call i32 @BZ2_bzCompressInit(ptr noundef nonnull %28, i32 noundef %33, i32 noundef 0, i32 noundef 30) #10 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %36, label %37 36: ; preds = %.critedge - %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %38 = load ptr, ptr %37, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %38, i32 noundef -1, ptr noundef nonnull @.str.5) #9 - switch i32 %33, label %45 [ - i32 -2, label %39 - i32 -3, label %41 - i32 -9, label %43 + store ptr %3, ptr %2, align 8, !tbaa !13 + br label %46 + +37: ; preds = %.critedge + %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %39 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %39, i32 noundef -1, ptr noundef nonnull @.str.5) #10 + switch i32 %34, label %46 [ + i32 -2, label %40 + i32 -3, label %42 + i32 -9, label %44 ] -39: ; preds = %36 - %40 = load ptr, ptr %37, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %40, i32 noundef -1, ptr noundef nonnull @.str.6) #9 - br label %45 +40: ; preds = %37 + %41 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %41, i32 noundef -1, ptr noundef nonnull @.str.6) #10 + br label %46 -41: ; preds = %36 - %42 = load ptr, ptr %37, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %42, i32 noundef 12, ptr noundef nonnull @.str.7) #9 - br label %45 +42: ; preds = %37 + %43 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %43, i32 noundef 12, ptr noundef nonnull @.str.7) #10 + br label %46 -43: ; preds = %36 - %44 = load ptr, ptr %37, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %44, i32 noundef -1, ptr noundef nonnull @.str.8) #9 - br label %45 +44: ; preds = %37 + %45 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %45, i32 noundef -1, ptr noundef nonnull @.str.8) #10 + br label %46 -45: ; preds = %23, %36, %39, %41, %43, %35 - %.1 = phi i32 [ 0, %35 ], [ -30, %23 ], [ -30, %43 ], [ -30, %41 ], [ -30, %39 ], [ -30, %36 ] +46: ; preds = %24, %37, %40, %42, %44, %36 + %.1 = phi i32 [ 0, %36 ], [ -30, %24 ], [ -30, %44 ], [ -30, %42 ], [ -30, %40 ], [ -30, %37 ] ret i32 %.1 } @@ -370,7 +369,7 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_write(ptr nounde %20 = load ptr, ptr %13, align 8, !tbaa !25 %21 = load ptr, ptr %14, align 8, !tbaa !26 %22 = load i64, ptr %15, align 8, !tbaa !27 - %23 = tail call i32 @__archive_write_filter(ptr noundef %20, ptr noundef %21, i64 noundef %22) #9 + %23 = tail call i32 @__archive_write_filter(ptr noundef %20, ptr noundef %21, i64 noundef %22) #10 %.not.us.i = icmp eq i32 %23, 0 br i1 %.not.us.i, label %24, label %drive_compressor.exit @@ -388,7 +387,7 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_write(ptr nounde br i1 %30, label %drive_compressor.exit, label %31 31: ; preds = %28 - %32 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %9, i32 noundef 0) #9 + %32 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %9, i32 noundef 0) #10 switch i32 %32, label %.split20.us.i [ i32 1, label %33 i32 3, label %.split.us.i.backedge @@ -406,7 +405,7 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_write(ptr nounde .split20.us.i: ; preds = %31 %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 %37 = load ptr, ptr %36, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %37, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %32) #9 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %37, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %32) #10 br label %drive_compressor.exit drive_compressor.exit: ; preds = %28, %33, %31, %19, %.split20.us.i @@ -425,6 +424,9 @@ declare i32 @BZ2_bzCompressEnd(ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) declare void @free(ptr allocptr noundef captures(none)) local_unnamed_addr #8 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i8 @llvm.umax.i8(i8, i8) #9 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -434,10 +436,11 @@ attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #6 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #8 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nounwind } -attributes #10 = { nounwind allocsize(0,1) } -attributes #11 = { nounwind willreturn memory(read) } -attributes #12 = { nounwind allocsize(0) } +attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { nounwind } +attributes #11 = { nounwind allocsize(0,1) } +attributes #12 = { nounwind willreturn memory(read) } +attributes #13 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll b/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll index 45cabc68a5a..1103d9fcfb7 100644 --- a/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll +++ b/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll @@ -621,8 +621,8 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11collections5btree8navigate39LazyLeafRange$LT$BorrowType$C$K$C$V$GT$10init_front17h2d44940c0bd438f5E"(ptr noalias noundef align 8 captures(ret: address, provenance) dereferenceable(64) %0) unnamed_addr #12 { %2 = load i64, ptr %0, align 8, !range !17, !noundef !4 - %.not.not = icmp eq i64 %2, 0 - br i1 %.not.not, label %7, label %3 + %.not = icmp eq i64 %2, 0 + br i1 %.not, label %7, label %3 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -632,7 +632,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 7: ; preds = %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h7fc820e956e8d6a6E.llvm.14303161345558456588.exit", %3, %1 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %spec.select = select i1 %.not.not, ptr null, ptr %8 + %spec.select = select i1 %.not, ptr null, ptr %8 ret ptr %spec.select 9: ; preds = %3 diff --git a/bench/csmith/optimized/StatementContinue.ll b/bench/csmith/optimized/StatementContinue.ll index f798dda577f..6c1ace485db 100644 --- a/bench/csmith/optimized/StatementContinue.ll +++ b/bench/csmith/optimized/StatementContinue.ll @@ -413,33 +413,33 @@ _ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %1 %20 = icmp ult i64 %19, %18 %21 = tail call i64 @llvm.umin.i64(i64 %19, i64 1152921504606846975) %22 = select i1 %20, i64 1152921504606846975, i64 %21 - %.not.i.i.i.i = icmp ne i64 %22, 0 - tail call void @llvm.assume(i1 %.not.i.i.i.i) - %23 = shl nuw nsw i64 %22, 3 - %24 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %23) #16 - %25 = getelementptr inbounds i8, ptr %24, i64 %15 - store ptr %4, ptr %25, align 8, !tbaa !47 - %26 = icmp sgt i64 %15, 0 - br i1 %26, label %27, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i - -27: ; preds = %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %24, ptr align 8 %12, i64 %15, i1 false) + %23 = icmp ne i64 %22, 0 + tail call void @llvm.assume(i1 %23) + %24 = shl nuw nsw i64 %22, 3 + %25 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %24) #16 + %26 = getelementptr inbounds i8, ptr %25, i64 %15 + store ptr %4, ptr %26, align 8, !tbaa !47 + %27 = icmp sgt i64 %15, 0 + br i1 %27, label %28, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i + +28: ; preds = %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %25, ptr align 8 %12, i64 %15, i1 false) br label %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i -_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i: ; preds = %27, %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i - %28 = getelementptr inbounds nuw i8, ptr %25, i64 8 +_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i: ; preds = %28, %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i + %29 = getelementptr inbounds nuw i8, ptr %26, i64 8 %.not.i17.i.i.i = icmp eq ptr %12, null - br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %29 + br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %30 -29: ; preds = %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i +30: ; preds = %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i tail call void @_ZdlPvm(ptr noundef nonnull %12, i64 noundef %15) #17 br label %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i -_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %29, %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i - store ptr %24, ptr %1, align 8, !tbaa !82 - store ptr %28, ptr %5, align 8, !tbaa !78 - %30 = getelementptr inbounds nuw ptr, ptr %24, i64 %22 - store ptr %30, ptr %7, align 8, !tbaa !81 +_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %30, %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i + store ptr %25, ptr %1, align 8, !tbaa !82 + store ptr %29, ptr %5, align 8, !tbaa !78 + %31 = getelementptr inbounds nuw ptr, ptr %25, i64 %22 + store ptr %31, ptr %7, align 8, !tbaa !81 br label %_ZNSt6vectorIPK10ExpressionSaIS2_EE9push_backEOS2_.exit _ZNSt6vectorIPK10ExpressionSaIS2_EE9push_backEOS2_.exit: ; preds = %9, %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i diff --git a/bench/darktable/optimized/OrfDecoder.ll b/bench/darktable/optimized/OrfDecoder.ll index b975506df26..598fa4462fc 100644 --- a/bench/darktable/optimized/OrfDecoder.ll +++ b/bench/darktable/optimized/OrfDecoder.ll @@ -1962,32 +1962,30 @@ _ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit70: ; preds = %36 %58 = getelementptr inbounds nuw i8, ptr %48, i64 48 %59 = load i32, ptr %58, align 8, !tbaa !167, !noalias !100 %60 = ashr i32 %59, 1 - %61 = icmp ugt i32 %59, 1 + %61 = icmp sgt i32 %60, 0 tail call void @llvm.assume(i1 %61) - %62 = icmp sgt i32 %60, -1 + %62 = icmp samesign uge i32 %60, %55 tail call void @llvm.assume(i1 %62) - %63 = icmp samesign uge i32 %60, %55 - tail call void @llvm.assume(i1 %63) - %64 = icmp samesign ult i32 %11, 4 - br i1 %64, label %71, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader + %63 = icmp samesign ult i32 %11, 4 + br i1 %63, label %70, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit70 br i1 %.not.i, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %.preheader177.lr.ph .preheader177.lr.ph: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader %.not52184 = icmp eq i32 %2, 0 - %65 = add nuw nsw i32 %11, 8 + %64 = add nuw nsw i32 %11, 8 br i1 %.not52184, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %.preheader177.preheader .preheader177.preheader: ; preds = %.preheader177.lr.ph - %66 = zext nneg i32 %55 to i64 - %67 = zext i32 %2 to i64 - %68 = zext nneg i32 %57 to i64 - %69 = zext nneg i32 %60 to i64 - %70 = zext i32 %narrow to i64 + %65 = zext nneg i32 %55 to i64 + %66 = zext i32 %2 to i64 + %67 = zext nneg i32 %57 to i64 + %68 = zext nneg i32 %60 to i64 + %69 = zext i32 %narrow to i64 br label %.preheader177 -71: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit70 +70: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit70 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.21, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE) #13 unreachable @@ -1996,15 +1994,15 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen %.sroa.13103.0193 = phi i32 [ 0, %.preheader177.preheader ], [ %.sroa.13103.2, %._crit_edge ] %.sroa.698.0192 = phi i32 [ 0, %.preheader177.preheader ], [ %110, %._crit_edge ] %.sroa.096.0191 = phi i64 [ 0, %.preheader177.preheader ], [ %111, %._crit_edge ] - %72 = shl nuw nsw i64 %indvars.iv216, 1 - %73 = icmp samesign ult i64 %72, %68 - %74 = mul nuw nsw i64 %72, %69 - %75 = getelementptr inbounds nuw i16, ptr %50, i64 %74 - br label %84 + %71 = shl nuw nsw i64 %indvars.iv216, 1 + %72 = icmp samesign ult i64 %71, %67 + %73 = mul nuw nsw i64 %71, %68 + %74 = getelementptr inbounds nuw i16, ptr %50, i64 %73 + br label %83 _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge: ; preds = %._crit_edge, %.preheader177.lr.ph, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader - %76 = icmp samesign ult i32 %37, 4 - br i1 %76, label %83, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader + %75 = icmp samesign ult i32 %37, 4 + br i1 %75, label %82, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge %.not50204 = icmp eq i32 %3, %narrow176 @@ -2012,35 +2010,35 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen .preheader.lr.ph: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader %.not51195 = icmp eq i32 %2, 0 - %77 = add nuw nsw i32 %37, 8 + %76 = add nuw nsw i32 %37, 8 br i1 %.not51195, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74._crit_edge, label %.preheader.preheader .preheader.preheader: ; preds = %.preheader.lr.ph - %78 = zext nneg i32 %55 to i64 - %79 = zext i32 %2 to i64 - %80 = zext nneg i32 %57 to i64 - %81 = zext nneg i32 %60 to i64 - %82 = zext i32 %33 to i64 + %77 = zext nneg i32 %55 to i64 + %78 = zext i32 %2 to i64 + %79 = zext nneg i32 %57 to i64 + %80 = zext nneg i32 %60 to i64 + %81 = zext i32 %33 to i64 br label %.preheader -83: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge +82: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.21, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE) #13 unreachable ._crit_edge: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit %indvars.iv.next217 = add nuw nsw i64 %indvars.iv216, 1 - %.not = icmp eq i64 %indvars.iv.next217, %70 + %.not = icmp eq i64 %indvars.iv.next217, %69 br i1 %.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %.preheader177, !llvm.loop !168 -84: ; preds = %.preheader177, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit +83: ; preds = %.preheader177, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit %indvars.iv = phi i64 [ 0, %.preheader177 ], [ %indvars.iv.next, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] %.sroa.13103.1187 = phi i32 [ %.sroa.13103.0193, %.preheader177 ], [ %.sroa.13103.2, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] %.sroa.698.1186 = phi i32 [ %.sroa.698.0192, %.preheader177 ], [ %110, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] %.sroa.096.1185 = phi i64 [ %.sroa.096.0191, %.preheader177 ], [ %111, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] - %.not.i.i75 = icmp samesign ult i32 %.sroa.698.1186, 12 - br i1 %.not.i.i75, label %85, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit + %84 = icmp samesign ult i32 %.sroa.698.1186, 12 + br i1 %84, label %85, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit -85: ; preds = %84 +85: ; preds = %83 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i) %86 = add nuw nsw i32 %.sroa.13103.1187, 4 %.not.i.i.i = icmp samesign ugt i32 %86, %11 @@ -2052,7 +2050,7 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i 90: ; preds = %85 - %91 = icmp samesign ugt i32 %.sroa.13103.1187, %65 + %91 = icmp samesign ugt i32 %.sroa.13103.1187, %64 br i1 %91, label %92, label %93, !prof !73 92: ; preds = %90 @@ -2086,10 +2084,10 @@ _ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getI %106 = or i64 %105, %.sroa.096.1185 br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit: ; preds = %84, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i - %.sroa.13103.2 = phi i32 [ %86, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.13103.1187, %84 ] - %107 = phi i64 [ %106, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.096.1185, %84 ] - %108 = phi i32 [ %102, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.698.1186, %84 ] +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit: ; preds = %83, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i + %.sroa.13103.2 = phi i32 [ %86, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.13103.1187, %83 ] + %107 = phi i64 [ %106, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.096.1185, %83 ] + %108 = phi i32 [ %102, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.698.1186, %83 ] %109 = lshr i64 %107, 52 %110 = add nsw i32 %108, -12 %111 = shl i64 %107, 12 @@ -2097,24 +2095,24 @@ _ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialR %113 = and i64 %indvars.iv, 2147483648 %114 = icmp eq i64 %113, 0 tail call void @llvm.assume(i1 %114) - %115 = icmp samesign ult i64 %indvars.iv, %66 + %115 = icmp samesign ult i64 %indvars.iv, %65 tail call void @llvm.assume(i1 %115) - tail call void @llvm.assume(i1 %73) - %116 = getelementptr inbounds nuw i16, ptr %75, i64 %indvars.iv + tail call void @llvm.assume(i1 %72) + %116 = getelementptr inbounds nuw i16, ptr %74, i64 %indvars.iv store i16 %112, ptr %116, align 2, !tbaa !169 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not52 = icmp eq i64 %indvars.iv.next, %67 - br i1 %.not52, label %._crit_edge, label %84, !llvm.loop !171 + %.not52 = icmp eq i64 %indvars.iv.next, %66 + br i1 %.not52, label %._crit_edge, label %83, !llvm.loop !171 .preheader: ; preds = %.preheader.preheader, %._crit_edge200 %indvars.iv222 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next223, %._crit_edge200 ] - %.sroa.090.0207 = phi i64 [ 0, %.preheader.preheader ], [ %149, %._crit_edge200 ] - %.sroa.6.0206 = phi i32 [ 0, %.preheader.preheader ], [ %148, %._crit_edge200 ] + %.sroa.090.0207 = phi i64 [ 0, %.preheader.preheader ], [ %150, %._crit_edge200 ] + %.sroa.6.0206 = phi i32 [ 0, %.preheader.preheader ], [ %149, %._crit_edge200 ] %.sroa.1393.0205 = phi i32 [ 0, %.preheader.preheader ], [ %.sroa.1393.2, %._crit_edge200 ] %117 = shl nuw nsw i64 %indvars.iv222, 1 %118 = or disjoint i64 %117, 1 - %119 = icmp samesign ult i64 %118, %80 - %120 = mul nuw nsw i64 %118, %81 + %119 = icmp samesign ult i64 %118, %79 + %120 = mul nuw nsw i64 %118, %80 %121 = getelementptr inbounds nuw i16, ptr %50, i64 %120 br label %122 @@ -2123,81 +2121,81 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen ._crit_edge200: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1 - %.not50 = icmp eq i64 %indvars.iv.next223, %82 + %.not50 = icmp eq i64 %indvars.iv.next223, %81 br i1 %.not50, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74._crit_edge, label %.preheader, !llvm.loop !172 122: ; preds = %.preheader, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 %indvars.iv219 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next220, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] - %.sroa.090.1198 = phi i64 [ %.sroa.090.0207, %.preheader ], [ %149, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] - %.sroa.6.1197 = phi i32 [ %.sroa.6.0206, %.preheader ], [ %148, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] + %.sroa.090.1198 = phi i64 [ %.sroa.090.0207, %.preheader ], [ %150, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] + %.sroa.6.1197 = phi i32 [ %.sroa.6.0206, %.preheader ], [ %149, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] %.sroa.1393.1196 = phi i32 [ %.sroa.1393.0205, %.preheader ], [ %.sroa.1393.2, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] - %.not.i.i77 = icmp samesign ult i32 %.sroa.6.1197, 12 - br i1 %.not.i.i77, label %123, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 + %123 = icmp samesign ult i32 %.sroa.6.1197, 12 + br i1 %123, label %124, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 -123: ; preds = %122 +124: ; preds = %122 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i76) - %124 = add nuw nsw i32 %.sroa.1393.1196, 4 - %.not.i.i.i80 = icmp samesign ugt i32 %124, %37 - br i1 %.not.i.i.i80, label %128, label %125, !prof !73 + %125 = add nuw nsw i32 %.sroa.1393.1196, 4 + %.not.i.i.i80 = icmp samesign ugt i32 %125, %37 + br i1 %.not.i.i.i80, label %129, label %126, !prof !73 -125: ; preds = %123 - %126 = zext nneg i32 %.sroa.1393.1196 to i64 - %127 = getelementptr inbounds nuw i8, ptr %45, i64 %126 +126: ; preds = %124 + %127 = zext nneg i32 %.sroa.1393.1196 to i64 + %128 = getelementptr inbounds nuw i8, ptr %45, i64 %127 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 -128: ; preds = %123 - %129 = icmp samesign ugt i32 %.sroa.1393.1196, %77 - br i1 %129, label %130, label %131, !prof !73 +129: ; preds = %124 + %130 = icmp samesign ugt i32 %.sroa.1393.1196, %76 + br i1 %130, label %131, label %132, !prof !73 -130: ; preds = %128 +131: ; preds = %129 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.25, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv) #13 unreachable -131: ; preds = %128 +132: ; preds = %129 store i32 0, ptr %.sroa.0.i.i.i76, align 4 %.sroa.speculated26.i.i.i.i85 = tail call i32 @llvm.umin.i32(i32 %37, i32 %.sroa.1393.1196) - %132 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i85, 4 - %.sroa.speculated.i.i.i.i86 = tail call i32 @llvm.umin.i32(i32 %37, i32 %132) - %133 = sub nsw i32 %.sroa.speculated.i.i.i.i86, %.sroa.speculated26.i.i.i.i85 - %134 = icmp ult i32 %133, 5 - tail call void @llvm.assume(i1 %134) - %135 = zext nneg i32 %.sroa.speculated26.i.i.i.i85 to i64 - %136 = getelementptr inbounds nuw i8, ptr %45, i64 %135 - %137 = zext nneg i32 %133 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i76, ptr nonnull align 1 %136, i64 %137, i1 false) + %133 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i85, 4 + %.sroa.speculated.i.i.i.i86 = tail call i32 @llvm.umin.i32(i32 %37, i32 %133) + %134 = sub nsw i32 %.sroa.speculated.i.i.i.i86, %.sroa.speculated26.i.i.i.i85 + %135 = icmp ult i32 %134, 5 + tail call void @llvm.assume(i1 %135) + %136 = zext nneg i32 %.sroa.speculated26.i.i.i.i85 to i64 + %137 = getelementptr inbounds nuw i8, ptr %45, i64 %136 + %138 = zext nneg i32 %134 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i76, ptr nonnull align 1 %137, i64 %138, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81: ; preds = %131, %125 - %.sroa.0.0..sroa.0.0..in.i.i.i82 = phi ptr [ %.sroa.0.i.i.i76, %131 ], [ %127, %125 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81: ; preds = %132, %126 + %.sroa.0.0..sroa.0.0..in.i.i.i82 = phi ptr [ %.sroa.0.i.i.i76, %132 ], [ %128, %126 ] %.sroa.0.0..sroa.0.0..i.i.i83 = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i82, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i76) - %138 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i83) - %139 = zext i32 %138 to i64 - %140 = or disjoint i32 %.sroa.6.1197, 32 - %141 = sub nuw nsw i32 32, %.sroa.6.1197 - %142 = zext nneg i32 %141 to i64 - %143 = shl nuw i64 %139, %142 - %144 = or i64 %143, %.sroa.090.1198 + %139 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i83) + %140 = zext i32 %139 to i64 + %141 = or disjoint i32 %.sroa.6.1197, 32 + %142 = sub nuw nsw i32 32, %.sroa.6.1197 + %143 = zext nneg i32 %142 to i64 + %144 = shl nuw i64 %140, %143 + %145 = or i64 %144, %.sroa.090.1198 br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 _ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87: ; preds = %122, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 - %.sroa.1393.2 = phi i32 [ %124, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.1393.1196, %122 ] - %145 = phi i64 [ %144, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.090.1198, %122 ] - %146 = phi i32 [ %140, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.6.1197, %122 ] - %147 = lshr i64 %145, 52 - %148 = add nsw i32 %146, -12 - %149 = shl i64 %145, 12 - %150 = trunc nuw nsw i64 %147 to i16 - %151 = and i64 %indvars.iv219, 2147483648 - %152 = icmp eq i64 %151, 0 - tail call void @llvm.assume(i1 %152) - %153 = icmp samesign ult i64 %indvars.iv219, %78 + %.sroa.1393.2 = phi i32 [ %125, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.1393.1196, %122 ] + %146 = phi i64 [ %145, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.090.1198, %122 ] + %147 = phi i32 [ %141, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.6.1197, %122 ] + %148 = lshr i64 %146, 52 + %149 = add nsw i32 %147, -12 + %150 = shl i64 %146, 12 + %151 = trunc nuw nsw i64 %148 to i16 + %152 = and i64 %indvars.iv219, 2147483648 + %153 = icmp eq i64 %152, 0 tail call void @llvm.assume(i1 %153) + %154 = icmp samesign ult i64 %indvars.iv219, %77 + tail call void @llvm.assume(i1 %154) tail call void @llvm.assume(i1 %119) - %154 = getelementptr inbounds nuw i16, ptr %121, i64 %indvars.iv219 - store i16 %150, ptr %154, align 2, !tbaa !169 + %155 = getelementptr inbounds nuw i16, ptr %121, i64 %indvars.iv219 + store i16 %151, ptr %155, align 2, !tbaa !169 %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1 - %.not51 = icmp eq i64 %indvars.iv.next220, %79 + %.not51 = icmp eq i64 %indvars.iv.next220, %78 br i1 %.not51, label %._crit_edge200, label %122, !llvm.loop !173 } @@ -2757,8 +2755,8 @@ _ZNK8rawspeed7TiffIFD8hasEntryENS_7TiffTagE.exit60: ; preds = %_ZNKSt8_Rb_treeIN %150 = getelementptr inbounds nuw i32, ptr %116, i64 %indvars.iv store i32 %149, ptr %150, align 4, !tbaa !48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond.not, label %151, label %129, !llvm.loop !186 + %.not132 = icmp eq i64 %indvars.iv.next, 4 + br i1 %.not132, label %151, label %129, !llvm.loop !186 151: ; preds = %148 %152 = load ptr, ptr %7, align 8, !tbaa !42 diff --git a/bench/darktable/optimized/TableLookUp.ll b/bench/darktable/optimized/TableLookUp.ll index 1c996543e55..29ba8caab1a 100644 --- a/bench/darktable/optimized/TableLookUp.ll +++ b/bench/darktable/optimized/TableLookUp.ll @@ -151,7 +151,7 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr 18: ; preds = %14 %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 %20 = load ptr, ptr %19, align 8, !tbaa !21, !nonnull !24, !noundef !24 - %21 = icmp sgt i32 %15, -1 + %21 = icmp sgt i32 %15, 0 tail call void @llvm.assume(i1 %21) %22 = icmp sgt i32 %1, -1 tail call void @llvm.assume(i1 %22) @@ -192,22 +192,20 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr %39 = getelementptr inbounds nuw i16, ptr %26, i64 %indvars.iv store i16 %38, ptr %39, align 2, !tbaa !19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 65536 - br i1 %exitcond.not, label %.loopexit, label %36, !llvm.loop !26 + %.not113 = icmp eq i64 %indvars.iv.next, 65536 + br i1 %.not113, label %.loopexit, label %36, !llvm.loop !26 .preheader: ; preds = %62 - %.not99 = icmp eq i32 %11, 65536 - br i1 %.not99, label %.loopexit, label %.lr.ph98 + %40 = icmp eq i32 %11, 65536 + br i1 %40, label %.loopexit, label %.lr.ph98 .lr.ph98: ; preds = %.preheader92, %.preheader - %40 = shl i64 %9, 31 - %sext91 = add i64 %40, -4294967296 - %41 = ashr i64 %sext91, 32 - %42 = getelementptr inbounds nuw i16, ptr %6, i64 %41 - %43 = and i64 %10, 2147483647 - %umax = tail call i32 @llvm.umax.i32(i32 %11, i32 65535) - %44 = add nuw i32 %umax, 1 - %45 = icmp sgt i32 %11, -1 + %41 = shl i64 %9, 31 + %sext91 = add i64 %41, -4294967296 + %42 = ashr i64 %sext91, 32 + %43 = getelementptr inbounds nuw i16, ptr %6, i64 %42 + %44 = and i64 %10, 65535 + %45 = icmp ult i32 %11, 65536 tail call void @llvm.assume(i1 %45) br label %73 @@ -241,7 +239,7 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr 62: ; preds = %55, %57 %.sroa.speculated = phi i32 [ %61, %57 ], [ %49, %55 ] %63 = sub nsw i32 %.sroa.speculated, %.sroa.speculated45 - %64 = icmp sgt i32 %63, -1 + %64 = icmp ult i32 %63, 65536 tail call void @llvm.assume(i1 %64) %65 = add nuw nsw i32 %63, 2 %66 = lshr i32 %65, 2 @@ -261,16 +259,16 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr br i1 %exitcond105.not, label %.preheader, label %46, !llvm.loop !28 73: ; preds = %.lr.ph98, %73 - %indvars.iv106 = phi i64 [ %43, %.lr.ph98 ], [ %indvars.iv.next107, %73 ] - %74 = load i16, ptr %42, align 2, !tbaa !19 - %.idx113 = shl nuw nsw i64 %indvars.iv106, 2 - %75 = getelementptr inbounds nuw i8, ptr %26, i64 %.idx113 + %indvars.iv106 = phi i64 [ %44, %.lr.ph98 ], [ %indvars.iv.next107, %73 ] + %74 = load i16, ptr %43, align 2, !tbaa !19 + %.idx114 = shl nuw nsw i64 %indvars.iv106, 2 + %75 = getelementptr inbounds nuw i8, ptr %26, i64 %.idx114 store i16 %74, ptr %75, align 2, !tbaa !19 %76 = getelementptr inbounds nuw i8, ptr %75, i64 2 store i16 0, ptr %76, align 2, !tbaa !19 %indvars.iv.next107 = add nuw nsw i64 %indvars.iv106, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next107 to i32 - %exitcond109.not = icmp eq i32 %44, %lftr.wideiv + %77 = and i64 %indvars.iv.next107, 4294967295 + %exitcond109.not = icmp eq i64 %77, 65536 br i1 %exitcond109.not, label %.loopexit, label %73, !llvm.loop !29 .loopexit: ; preds = %36, %73, %.preheader @@ -293,7 +291,7 @@ define hidden { ptr, i32 } @_ZN8rawspeed11TableLookUp8getTableEi(ptr noundef non 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load ptr, ptr %7, align 8, !tbaa !21, !nonnull !24, !noundef !24 - %9 = icmp sgt i32 %3, -1 + %9 = icmp sgt i32 %3, 0 tail call void @llvm.assume(i1 %9) %10 = icmp sgt i32 %1, -1 tail call void @llvm.assume(i1 %10) @@ -435,62 +433,62 @@ _ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit: ; preds = %44 %55 = select i1 %53, i64 4611686018427387903, i64 %54 %56 = ptrtoint ptr %1 to i64 %57 = sub i64 %56, %46 - %.not.i = icmp eq i64 %55, 0 - br i1 %.not.i, label %61, label %58 + %58 = icmp eq i64 %55, 0 + br i1 %58, label %62, label %59 -58: ; preds = %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit - %59 = shl nuw nsw i64 %55, 1 - %60 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %59) #21 - br label %61 +59: ; preds = %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit + %60 = shl nuw nsw i64 %55, 1 + %61 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %60) #21 + br label %62 -61: ; preds = %58, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit - %62 = phi ptr [ %60, %58 ], [ null, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit ] - %63 = getelementptr inbounds i8, ptr %62, i64 %57 +62: ; preds = %59, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit + %63 = phi ptr [ %61, %59 ], [ null, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit ] + %64 = getelementptr inbounds i8, ptr %63, i64 %57 %.idx.i.i.i.i.i75 = shl nuw nsw i64 %2, 1 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 %.idx.i.i.i.i.i75 - %65 = load i16, ptr %3, align 2, !tbaa !19 + %65 = getelementptr inbounds nuw i8, ptr %64, i64 %.idx.i.i.i.i.i75 + %66 = load i16, ptr %3, align 2, !tbaa !19 br label %.lr.ph.i.i.i.i.i.i.i76 -.lr.ph.i.i.i.i.i.i.i76: ; preds = %.lr.ph.i.i.i.i.i.i.i76, %61 - %.06.i.i.i.i.i.i.i77 = phi ptr [ %66, %.lr.ph.i.i.i.i.i.i.i76 ], [ %63, %61 ] - store i16 %65, ptr %.06.i.i.i.i.i.i.i77, align 2, !tbaa !19 - %66 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i.i.i.i77, i64 2 - %.not.i.i.i.i.i.i.i78 = icmp eq ptr %66, %64 +.lr.ph.i.i.i.i.i.i.i76: ; preds = %.lr.ph.i.i.i.i.i.i.i76, %62 + %.06.i.i.i.i.i.i.i77 = phi ptr [ %67, %.lr.ph.i.i.i.i.i.i.i76 ], [ %64, %62 ] + store i16 %66, ptr %.06.i.i.i.i.i.i.i77, align 2, !tbaa !19 + %67 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i.i.i.i77, i64 2 + %.not.i.i.i.i.i.i.i78 = icmp eq ptr %67, %65 br i1 %.not.i.i.i.i.i.i.i78, label %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80, label %.lr.ph.i.i.i.i.i.i.i76, !llvm.loop !30 _ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80: ; preds = %.lr.ph.i.i.i.i.i.i.i76 %.not.i.i.i.i.i.i.i.i.i81 = icmp eq ptr %1, %45 - br i1 %.not.i.i.i.i.i.i.i.i.i81, label %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit, label %67 + br i1 %.not.i.i.i.i.i.i.i.i.i81, label %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit, label %68 -67: ; preds = %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %62, ptr align 2 %45, i64 %57, i1 false) +68: ; preds = %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %63, ptr align 2 %45, i64 %57, i1 false) br label %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit -_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit: ; preds = %67, %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 - %68 = getelementptr inbounds nuw i16, ptr %63, i64 %2 - %69 = sub i64 %11, %56 +_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit: ; preds = %68, %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 + %69 = getelementptr inbounds nuw i16, ptr %64, i64 %2 + %70 = sub i64 %11, %56 %.not.i.i.i.i.i.i.i.i.i82 = icmp eq ptr %9, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i82, label %71, label %70 + br i1 %.not.i.i.i.i.i.i.i.i.i82, label %72, label %71 -70: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 2 %68, ptr align 2 %1, i64 %69, i1 false) - br label %71 +71: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 2 %69, ptr align 2 %1, i64 %70, i1 false) + br label %72 -71: ; preds = %70, %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit - %72 = getelementptr inbounds i8, ptr %68, i64 %69 +72: ; preds = %71, %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit + %73 = getelementptr inbounds i8, ptr %69, i64 %70 %.not.i84 = icmp eq ptr %45, null - br i1 %.not.i84, label %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit, label %73 + br i1 %.not.i84, label %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit, label %74 -73: ; preds = %71 - %74 = sub i64 %10, %46 - tail call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %74) #18 +74: ; preds = %72 + %75 = sub i64 %10, %46 + tail call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %75) #18 br label %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit -_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit: ; preds = %71, %73 - store ptr %62, ptr %0, align 8, !tbaa !21 - store ptr %72, ptr %8, align 8, !tbaa !23 - %75 = getelementptr inbounds nuw i16, ptr %62, i64 %55 - store ptr %75, ptr %6, align 8, !tbaa !22 +_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit: ; preds = %72, %74 + store ptr %63, ptr %0, align 8, !tbaa !21 + store ptr %73, ptr %8, align 8, !tbaa !23 + %76 = getelementptr inbounds nuw i16, ptr %63, i64 %55 + store ptr %76, ptr %6, align 8, !tbaa !22 br label %_ZSt4fillIPttEvT_S1_RKT0_.exit _ZSt4fillIPttEvT_S1_RKT0_.exit: ; preds = %.lr.ph.i.i.i71, %.lr.ph.i.i.i, %_ZSt22__uninitialized_move_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit69.thread, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit, %4 @@ -586,9 +584,6 @@ declare i32 @llvm.smax.i32(i32, i32) #17 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umin.i16(i16, i16) #17 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #17 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umax.i16(i16, i16) #17 diff --git a/bench/draco/optimized/prediction_scheme_encoder_factory.ll b/bench/draco/optimized/prediction_scheme_encoder_factory.ll index 8f406c15451..551a83a677f 100644 --- a/bench/draco/optimized/prediction_scheme_encoder_factory.ll +++ b/bench/draco/optimized/prediction_scheme_encoder_factory.ll @@ -675,11 +675,10 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %4) - %17 = icmp eq i32 %11, -1 - %or.cond = icmp ugt i32 %11, 6 + %17 = add i32 %11, -7 + %or.cond = icmp ult i32 %17, -8 %. = select i1 %or.cond, i32 -2, i32 %11 - %.09 = select i1 %17, i32 -1, i32 %. - ret i32 %.09 + ret i32 %. 18: ; preds = %.noexc.i %19 = landingpad { ptr, i32 } diff --git a/bench/eastl/optimized/EACallback.ll b/bench/eastl/optimized/EACallback.ll index 639c58ee072..4d6dc9b529e 100644 --- a/bench/eastl/optimized/EACallback.ll +++ b/bench/eastl/optimized/EACallback.ll @@ -565,24 +565,24 @@ if.then: ; preds = %entry %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.lhs.cast5 = ptrtoint ptr %1 to i64 %sub.ptr.sub7 = sub i64 %sub.ptr.lhs.cast5, %sub.ptr.rhs.cast - %cmp9 = icmp ugt i64 %sub.ptr.sub7, 8 + %3 = icmp ugt i64 %sub.ptr.sub7, 8 %mul = ashr exact i64 %sub.ptr.sub7, 2 - %cond = select i1 %cmp9, i64 %mul, i64 4 - %3 = icmp ugt i64 %cond, 2305843009213693951 - %4 = shl i64 %cond, 3 - %5 = select i1 %3, i64 -1, i64 %4 - %call = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %5, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) - %6 = load ptr, ptr %this, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %call, ptr align 8 %6, i64 %sub.ptr.sub, i1 false) + %cond = select i1 %3, i64 %mul, i64 4 + %4 = icmp ugt i64 %cond, -2305843009213693953 + %5 = shl i64 %cond, 3 + %6 = select i1 %4, i64 -1, i64 %5 + %call = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %6, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %7 = load ptr, ptr %this, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %call, ptr align 8 %7, i64 %sub.ptr.sub, i1 false) + %8 = load ptr, ptr %this, align 8 %mLocalBuffer = getelementptr inbounds nuw i8, ptr %this, i64 24 - %cmp13.not = icmp eq ptr %7, %mLocalBuffer - %isnull = icmp eq ptr %7, null + %cmp13.not = icmp eq ptr %8, %mLocalBuffer + %isnull = icmp eq ptr %8, null %or.cond = or i1 %cmp13.not, %isnull br i1 %or.cond, label %if.end, label %delete.notnull delete.notnull: ; preds = %if.then - tail call void @_ZdaPv(ptr noundef nonnull %7) #20 + tail call void @_ZdaPv(ptr noundef nonnull %8) #20 br label %if.end if.end: ; preds = %delete.notnull, %if.then @@ -594,10 +594,10 @@ if.end: ; preds = %delete.notnull, %if br label %if.end21 if.end21: ; preds = %if.end, %entry - %8 = phi ptr [ %add.ptr17, %if.end ], [ %0, %entry ] - store ptr %value, ptr %8, align 8 - %9 = load ptr, ptr %mpEnd, align 8 - %incdec.ptr = getelementptr inbounds nuw i8, ptr %9, i64 8 + %9 = phi ptr [ %add.ptr17, %if.end ], [ %0, %entry ] + store ptr %value, ptr %9, align 8 + %10 = load ptr, ptr %mpEnd, align 8 + %incdec.ptr = getelementptr inbounds nuw i8, ptr %10, i64 8 store ptr %incdec.ptr, ptr %mpEnd, align 8 ret ptr %incdec.ptr } @@ -1293,8 +1293,8 @@ entry: %ref.tmp = alloca %"struct.EA::Thread::ThreadTime", align 8 %mbRunning = getelementptr inbounds nuw i8, ptr %this, i64 137 %0 = load volatile i8, ptr %mbRunning, align 1 - %tobool9 = trunc i8 %0 to i1 - br i1 %tobool9, label %while.body.lr.ph, label %while.end + %tobool12 = trunc i8 %0 to i1 + br i1 %tobool12, label %while.body.lr.ph, label %while.end while.body.lr.ph: ; preds = %entry %mNSecPerTickLastTimeMeasured = getelementptr inbounds nuw i8, ptr %this, i64 152 @@ -1351,15 +1351,15 @@ if.end14: ; preds = %if.then11, %if.then %9 = load i64, ptr %mNextCallbackEventTick, align 8 %10 = load i64, ptr %curTick, align 8 %cmp15 = icmp slt i64 %9, %10 - br i1 %cmp15, label %if.then16, label %if.end33 + br i1 %cmp15, label %if.then16, label %if.end19 if.then16: ; preds = %if.end14 %add17 = add nsw i64 %10, 1000 store i64 %add17, ptr %mNextCallbackEventTick, align 8 - br label %if.end33 + br label %if.end19 -if.end33: ; preds = %if.end14, %if.then16 - %11 = phi i64 [ %9, %if.end14 ], [ %add17, %if.then16 ] +if.end19: ; preds = %if.then16, %if.end14 + %11 = phi i64 [ %add17, %if.then16 ], [ %9, %if.end14 ] %sub21 = sub nsw i64 %8, %1 %sub23 = sub nsw i64 %11, %10 %conv24 = sitofp i64 %sub23 to double @@ -1367,25 +1367,28 @@ if.end33: ; preds = %if.end14, %if.then1 %mul = fmul double %12, %conv24 %conv26 = fptosi double %mul to i64 %..i = call noundef i64 @llvm.smin.i64(i64 %sub21, i64 %conv26) - %div2913 = udiv i64 %..i, 2000000 - %cmp34 = icmp slt i64 %..i, 2000000 - br i1 %cmp34, label %if.end36, label %if.else - -if.else: ; preds = %if.end, %if.end33 - %timeToNextEventMs.07 = phi i64 [ %div2913, %if.end33 ], [ 50, %if.end ] - %div.i8 = udiv i64 %timeToNextEventMs.07, 1000 - store i64 %div.i8, ptr %ref.tmp, align 8 - %mul.neg.i = mul nsw i64 %div.i8, -1000 - %sub.i = add nsw i64 %mul.neg.i, %timeToNextEventMs.07 + %div29 = sdiv i64 %..i, 2000000 + %13 = icmp ugt i64 %div29, -4611686018428 + %..i.off = add i64 %..i, 1999999 + %cmp34 = icmp ult i64 %..i.off, 3999999 + %or.cond = or i1 %13, %cmp34 + br i1 %or.cond, label %if.end36, label %if.else + +if.else: ; preds = %if.end19, %if.end + %timeToNextEventMs.010 = phi i64 [ 50, %if.end ], [ %div29, %if.end19 ] + %div.i11 = udiv i64 %timeToNextEventMs.010, 1000 + store i64 %div.i11, ptr %ref.tmp, align 8 + %mul.neg.i = mul nsw i64 %div.i11, -1000 + %sub.i = add nsw i64 %mul.neg.i, %timeToNextEventMs.010 %mul3.i = mul nsw i64 %sub.i, 1000000 store i64 %mul3.i, ptr %tv_nsec.i, align 8 br label %if.end36 -if.end36: ; preds = %if.end33, %if.else - %ref.tmp.sink = phi ptr [ %ref.tmp, %if.else ], [ @_ZN2EA6ThreadL13kTimeoutYieldE, %if.end33 ] +if.end36: ; preds = %if.end19, %if.else + %ref.tmp.sink = phi ptr [ %ref.tmp, %if.else ], [ @_ZN2EA6ThreadL13kTimeoutYieldE, %if.end19 ] call void @_ZN2EA6Thread11ThreadSleepERKNS0_10ThreadTimeE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.sink) - %13 = load volatile i8, ptr %mbRunning, align 1 - %tobool = trunc i8 %13 to i1 + %14 = load volatile i8, ptr %mbRunning, align 1 + %tobool = trunc i8 %14 to i1 br i1 %tobool, label %while.body, label %while.end, !llvm.loop !8 while.end: ; preds = %if.end36, %entry @@ -1462,24 +1465,24 @@ if.then14: ; preds = %if.then, %if.then12 if.then.i: ; preds = %if.then14 %sub.ptr.lhs.cast5.i = ptrtoint ptr %5 to i64 %sub.ptr.sub7.i = sub i64 %sub.ptr.lhs.cast5.i, %sub.ptr.rhs.cast.i - %cmp9.i = icmp ugt i64 %sub.ptr.sub7.i, 8 + %6 = icmp ugt i64 %sub.ptr.sub7.i, 8 %mul.i = ashr exact i64 %sub.ptr.sub7.i, 2 - %cond.i = select i1 %cmp9.i, i64 %mul.i, i64 4 - %6 = icmp ugt i64 %cond.i, 2305843009213693951 - %7 = shl i64 %cond.i, 3 - %8 = select i1 %6, i64 -1, i64 %7 - %call.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %8, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) - %9 = load ptr, ptr %mCallbackArray, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %call.i, ptr align 8 %9, i64 %sub.ptr.sub.i, i1 false) + %cond.i = select i1 %6, i64 %mul.i, i64 4 + %7 = icmp ugt i64 %cond.i, -2305843009213693953 + %8 = shl i64 %cond.i, 3 + %9 = select i1 %7, i64 -1, i64 %8 + %call.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %9, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %10 = load ptr, ptr %mCallbackArray, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %call.i, ptr align 8 %10, i64 %sub.ptr.sub.i, i1 false) + %11 = load ptr, ptr %mCallbackArray, align 8 %mLocalBuffer.i = getelementptr inbounds nuw i8, ptr %this, i64 32 - %cmp13.not.i = icmp eq ptr %10, %mLocalBuffer.i - %isnull.i = icmp eq ptr %10, null + %cmp13.not.i = icmp eq ptr %11, %mLocalBuffer.i + %isnull.i = icmp eq ptr %11, null %or.cond.i = or i1 %cmp13.not.i, %isnull.i br i1 %or.cond.i, label %if.end.i, label %delete.notnull.i delete.notnull.i: ; preds = %if.then.i - tail call void @_ZdaPv(ptr noundef nonnull %10) #20 + tail call void @_ZdaPv(ptr noundef nonnull %11) #20 br label %if.end.i if.end.i: ; preds = %delete.notnull.i, %if.then.i @@ -1491,10 +1494,10 @@ if.end.i: ; preds = %delete.notnull.i, % br label %_ZN2EA4StdC15CallbackManager14CallbackVector9push_backEPNS0_8CallbackE.exit _ZN2EA4StdC15CallbackManager14CallbackVector9push_backEPNS0_8CallbackE.exit: ; preds = %if.then14, %if.end.i - %11 = phi ptr [ %add.ptr17.i, %if.end.i ], [ %1, %if.then14 ] - store ptr %pCallback, ptr %11, align 8 - %12 = load ptr, ptr %mpEnd.i, align 8 - %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %12, i64 8 + %12 = phi ptr [ %add.ptr17.i, %if.end.i ], [ %1, %if.then14 ] + store ptr %pCallback, ptr %12, align 8 + %13 = load ptr, ptr %mpEnd.i, align 8 + %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %13, i64 8 store ptr %incdec.ptr.i, ptr %mpEnd.i, align 8 br label %if.end20 @@ -1506,13 +1509,13 @@ if.else17: ; preds = %if.then12 if.end20: ; preds = %if.else17, %_ZN2EA4StdC15CallbackManager14CallbackVector9push_backEPNS0_8CallbackE.exit store i64 0, ptr %nextUnits, align 8 %mPrecision.i = getelementptr inbounds nuw i8, ptr %pCallback, i64 16 - %13 = load i64, ptr %mPrecision.i, align 8 - %conv = trunc i64 %13 to i32 + %14 = load i64, ptr %mPrecision.i, align 8 + %conv = trunc i64 %14 to i32 %mPeriod.i = getelementptr inbounds nuw i8, ptr %pCallback, i64 8 - %14 = load i64, ptr %mPeriod.i, align 8 + %15 = load i64, ptr %mPeriod.i, align 8 %mType.i = getelementptr inbounds nuw i8, ptr %pCallback, i64 48 - %15 = load i32, ptr %mType.i, align 8 - switch i32 %15, label %sw.epilog [ + %16 = load i32, ptr %mType.i, align 8 + switch i32 %16, label %sw.epilog [ i32 0, label %sw.bb i32 1, label %sw.bb25 ] @@ -1525,16 +1528,16 @@ sw.bb: ; preds = %if.end20 sw.bb25: ; preds = %if.end20 %mTickCounter = getelementptr inbounds nuw i8, ptr %this, i64 120 - %16 = load atomic i64, ptr %mTickCounter seq_cst, align 8 + %17 = load atomic i64, ptr %mTickCounter seq_cst, align 8 %mNextCallbackEventTick = getelementptr inbounds nuw i8, ptr %this, i64 176 br label %sw.epilog sw.epilog: ; preds = %if.end20, %sw.bb25, %sw.bb - %units.0 = phi i64 [ 0, %if.end20 ], [ %call24, %sw.bb ], [ %16, %sw.bb25 ] + %units.0 = phi i64 [ 0, %if.end20 ], [ %call24, %sw.bb ], [ %17, %sw.bb25 ] %pNextEventUnits.0 = phi ptr [ %nextUnits, %if.end20 ], [ %mNextCallbackEventTime, %sw.bb ], [ %mNextCallbackEventTick, %sw.bb25 ] %mbOneShot = getelementptr inbounds nuw i8, ptr %pCallback, i64 56 store i8 %frombool, ptr %mbOneShot, align 8 - %add = add nsw i64 %units.0, %14 + %add = add nsw i64 %units.0, %15 %mNextCallbackEvent = getelementptr inbounds nuw i8, ptr %pCallback, i64 64 store i64 %add, ptr %mNextCallbackEvent, align 8 %mLastCallbackEvent = getelementptr inbounds nuw i8, ptr %pCallback, i64 72 @@ -1553,48 +1556,48 @@ if.then31: ; preds = %sw.epilog if.then39: ; preds = %if.then31 %conv35 = zext nneg i32 %add.i to i64 - %17 = load i64, ptr %mNextCallbackEvent, align 8 - %add36 = add nsw i64 %17, %conv35 + %18 = load i64, ptr %mNextCallbackEvent, align 8 + %add36 = add nsw i64 %18, %conv35 store i64 %add36, ptr %mNextCallbackEvent, align 8 br label %if.end42 if.end42: ; preds = %if.then31, %if.then39, %sw.epilog %mbAsync = getelementptr inbounds nuw i8, ptr %this, i64 138 - %18 = load i8, ptr %mbAsync, align 2 - %tobool43 = trunc i8 %18 to i1 + %19 = load i8, ptr %mbAsync, align 2 + %tobool43 = trunc i8 %19 to i1 br i1 %tobool43, label %if.then44, label %if.end51 if.then44: ; preds = %if.end42 - %19 = load i64, ptr %pNextEventUnits.0, align 8 - %20 = load i64, ptr %mNextCallbackEvent, align 8 - %cmp46 = icmp slt i64 %19, %20 + %20 = load i64, ptr %pNextEventUnits.0, align 8 + %21 = load i64, ptr %mNextCallbackEvent, align 8 + %cmp46 = icmp slt i64 %20, %21 br i1 %cmp46, label %if.then47, label %if.end51 if.then47: ; preds = %if.then44 - store i64 %20, ptr %pNextEventUnits.0, align 8 + store i64 %21, ptr %pNextEventUnits.0, align 8 br label %if.end51 if.end51: ; preds = %if.then6.if.end51_crit_edge, %if.end42, %if.then47, %if.then44 - %21 = phi i8 [ %.pre, %if.then6.if.end51_crit_edge ], [ %18, %if.end42 ], [ %18, %if.then47 ], [ %18, %if.then44 ] + %22 = phi i8 [ %.pre, %if.then6.if.end51_crit_edge ], [ %19, %if.end42 ], [ %19, %if.then47 ], [ %19, %if.then44 ] %mbAsync52 = getelementptr inbounds nuw i8, ptr %this, i64 138 - %tobool53 = trunc i8 %21 to i1 + %tobool53 = trunc i8 %22 to i1 br i1 %tobool53, label %if.then54, label %if.end72 if.then54: ; preds = %if.end51 %mbThreadStarted = getelementptr inbounds nuw i8, ptr %this, i64 240 - %22 = load atomic i32, ptr %mbThreadStarted seq_cst, align 8 - %cmp56 = icmp eq i32 %22, 0 + %23 = load atomic i32, ptr %mbThreadStarted seq_cst, align 8 + %cmp56 = icmp eq i32 %23, 0 br i1 %cmp56, label %if.then57, label %if.end60 if.then57: ; preds = %if.then54 - %23 = load i8, ptr %mbAsync52, align 2 - %tobool.i = trunc i8 %23 to i1 + %24 = load i8, ptr %mbAsync52, align 2 + %tobool.i = trunc i8 %24 to i1 br i1 %tobool.i, label %if.then.i33, label %if.end60 if.then.i33: ; preds = %if.then57 - %24 = cmpxchg ptr %mbThreadStarted, i32 0, i32 1 seq_cst seq_cst, align 4 - %25 = extractvalue { i32, i1 } %24, 1 - br i1 %25, label %if.then2.i, label %if.end60 + %25 = cmpxchg ptr %mbThreadStarted, i32 0, i32 1 seq_cst seq_cst, align 4 + %26 = extractvalue { i32, i1 } %25, 1 + br i1 %26, label %if.then2.i, label %if.end60 if.then2.i: ; preds = %if.then.i33 %mThreadParam.i = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -1609,18 +1612,18 @@ if.then2.i: ; preds = %if.then.i33 if.end60: ; preds = %if.then2.i, %if.then.i33, %if.then57, %if.then54 %bReturnValue.1 = phi i1 [ true, %if.then54 ], [ %cmp.i, %if.then2.i ], [ true, %if.then.i33 ], [ false, %if.then57 ] %mNextCallbackEventTime61 = getelementptr inbounds nuw i8, ptr %this, i64 168 - %26 = load i64, ptr %mNextCallbackEventTime61, align 8 + %27 = load i64, ptr %mNextCallbackEventTime61, align 8 %mStopwatch62 = getelementptr inbounds nuw i8, ptr %this, i64 96 %call63 = tail call noundef i64 @_ZNK2EA4StdC9Stopwatch14GetElapsedTimeEv(ptr noundef nonnull align 8 dereferenceable(24) %mStopwatch62) - %cmp64 = icmp slt i64 %26, %call63 + %cmp64 = icmp slt i64 %27, %call63 br i1 %cmp64, label %if.then69, label %lor.lhs.false lor.lhs.false: ; preds = %if.end60 %mNextCallbackEventTick65 = getelementptr inbounds nuw i8, ptr %this, i64 176 - %27 = load i64, ptr %mNextCallbackEventTick65, align 8 + %28 = load i64, ptr %mNextCallbackEventTick65, align 8 %mTickCounter66 = getelementptr inbounds nuw i8, ptr %this, i64 120 - %28 = load atomic i64, ptr %mTickCounter66 seq_cst, align 8 - %cmp68 = icmp slt i64 %27, %28 + %29 = load atomic i64, ptr %mTickCounter66 seq_cst, align 8 + %cmp68 = icmp slt i64 %28, %29 br i1 %cmp68, label %if.then69, label %if.end72 if.then69: ; preds = %lor.lhs.false, %if.end60 diff --git a/bench/entt/optimized/delegate.ll b/bench/entt/optimized/delegate.ll index 1fa9d92a9d4..2b3a850c038 100644 --- a/bench/entt/optimized/delegate.ll +++ b/bench/entt/optimized/delegate.ll @@ -3548,7 +3548,7 @@ _ZNK7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsI unreachable _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit93: ; preds = %158, %_ZNK7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8IsSharedEv.exit.i.i91, %163, %168 - br i1 %157, label %178, label %.thread129 + br i1 %157, label %178, label %.thread127 176: ; preds = %156 %177 = landingpad { ptr, i32 } @@ -3749,7 +3749,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %272 = getelementptr inbounds nuw i8, ptr %271, i64 8 %273 = load ptr, ptr %272, align 8 call void %273(ptr noundef nonnull align 8 dereferenceable(8) %179) #27 - br label %.thread129 + br label %.thread127 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit105: ; preds = %261, %186 %.pn58 = phi { ptr, i32 } [ %187, %186 ], [ %.pn56, %261 ] @@ -3759,7 +3759,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %276(ptr noundef nonnull align 8 dereferenceable(8) %179) #27 br label %278 -.thread129: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit102, %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit93 +.thread127: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit102, %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit93 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %279 @@ -3772,7 +3772,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %298 -279: ; preds = %.thread129, %154 +279: ; preds = %.thread127, %154 call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) call void @llvm.lifetime.start.p0(ptr nonnull %11) diff --git a/bench/ffmpeg/optimized/ac3enc_float.ll b/bench/ffmpeg/optimized/ac3enc_float.ll index c7e15bc4d82..2355f02e344 100644 --- a/bench/ffmpeg/optimized/ac3enc_float.ll +++ b/bench/ffmpeg/optimized/ac3enc_float.ll @@ -872,9 +872,10 @@ calc_cpl_coord.exit335.us.us.i: ; preds = %219, %.critedge.us. %343 = load i8, ptr %342, align 1, !tbaa !43 %344 = zext i8 %343 to i32 %345 = sub nsw i32 %344, %339 - %346 = call i32 @llvm.smax.i32(i32 %345, i32 0) - %347 = call i32 @llvm.umin.i32(i32 %346, i32 15) - %348 = trunc nuw nsw i32 %347 to i8 + %346 = icmp ugt i32 %345, -241 + %..i.i = call i32 @llvm.smin.i32(i32 %345, i32 15) + %347 = trunc nuw nsw i32 %..i.i to i8 + %348 = select i1 %346, i8 0, i8 %347 store i8 %348, ptr %342, align 1, !tbaa !43 %indvars.iv.next620.i = add nuw nsw i64 %indvars.iv619.i, 1 %349 = load i32, ptr %173, align 4, !tbaa !71 diff --git a/bench/ffmpeg/optimized/bitpacked_enc.ll b/bench/ffmpeg/optimized/bitpacked_enc.ll index 365d132b8d8..38a99602bd8 100644 --- a/bench/ffmpeg/optimized/bitpacked_enc.ll +++ b/bench/ffmpeg/optimized/bitpacked_enc.ll @@ -26,30 +26,30 @@ define internal range(i32 -22, 1) i32 @encode_init(ptr noundef %0) #0 { %7 = getelementptr inbounds nuw i8, ptr %0, i64 112 %8 = load i32, ptr %7, align 8, !tbaa !28 %9 = and i32 %8, 1 - %.not = icmp eq i32 %9, 0 - br i1 %.not, label %11, label %10 - -10: ; preds = %1 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 16, ptr noundef nonnull @.str.2) #5 - br label %19 + %10 = icmp eq i32 %9, 0 + br i1 %10, label %12, label %11 11: ; preds = %1 - %12 = tail call i32 @av_get_bits_per_pixel(ptr noundef %6) #5 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 648 - store i32 %12, ptr %13, align 8, !tbaa !29 - %14 = tail call i64 @ff_guess_coded_bitrate(ptr noundef nonnull %0) #5 - %15 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store i64 %14, ptr %15, align 8, !tbaa !30 - %16 = load i32, ptr %4, align 8, !tbaa !27 - %17 = icmp eq i32 %16, 64 - br i1 %17, label %18, label %19 - -18: ; preds = %11 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 16, ptr noundef nonnull @.str.2) #5 + br label %20 + +12: ; preds = %1 + %13 = tail call i32 @av_get_bits_per_pixel(ptr noundef %6) #5 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 648 + store i32 %13, ptr %14, align 8, !tbaa !29 + %15 = tail call i64 @ff_guess_coded_bitrate(ptr noundef nonnull %0) #5 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 56 + store i64 %15, ptr %16, align 8, !tbaa !30 + %17 = load i32, ptr %4, align 8, !tbaa !27 + %18 = icmp eq i32 %17, 64 + br i1 %18, label %19, label %20 + +19: ; preds = %12 store ptr @encode_yuv422p10, ptr %3, align 8, !tbaa !31 - br label %19 + br label %20 -19: ; preds = %11, %18, %10 - %.0 = phi i32 [ -22, %10 ], [ 0, %18 ], [ -22, %11 ] +20: ; preds = %12, %19, %11 + %.0 = phi i32 [ -22, %11 ], [ 0, %19 ], [ -22, %12 ] ret i32 %.0 } @@ -101,9 +101,9 @@ define internal range(i32 -2147483648, 1) i32 @encode_yuv422p10(ptr noundef %0, 17: ; preds = %3 %18 = getelementptr inbounds nuw i8, ptr %1, i64 24 %19 = load ptr, ptr %18, align 8, !tbaa !35 - %20 = icmp slt i32 %11, -7 + %20 = icmp ugt i32 %12, -268435457 %spec.select.i = select i1 %20, ptr null, ptr %19 - %spec.select11.i = tail call i32 @llvm.smax.i32(i32 range(i32 -268435456, 268435456) %12, i32 0) + %spec.select11.i = select i1 %20, i32 0, i32 %12 %21 = zext nneg i32 %spec.select11.i to i64 %22 = getelementptr inbounds nuw i8, ptr %spec.select.i, i64 %21 %23 = load i32, ptr %4, align 4, !tbaa !34 @@ -367,9 +367,6 @@ declare void @abort() local_unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.bswap.i32(i32) #4 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #4 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.umin.i16(i16, i16) #4 diff --git a/bench/ffmpeg/optimized/framequeue.ll b/bench/ffmpeg/optimized/framequeue.ll index 4ae7a12e95b..e8dbe8fb334 100644 --- a/bench/ffmpeg/optimized/framequeue.ll +++ b/bench/ffmpeg/optimized/framequeue.ll @@ -301,42 +301,44 @@ define void @ff_framequeue_skip_samples(ptr noundef captures(none) %0, i64 nound %49 = getelementptr inbounds nuw i8, ptr %.pre48, i64 96 %50 = load ptr, ptr %49, align 8, !tbaa !41 %wide.trip.count = zext nneg i32 %20 to i64 - br label %54 - -.lr.ph41: ; preds = %54 - %51 = tail call i32 @llvm.umin.i32(i32 %20, i32 8) - %52 = getelementptr inbounds nuw i8, ptr %.pre48, i64 96 - %53 = load ptr, ptr %52, align 8, !tbaa !41 - %wide.trip.count46 = zext nneg i32 %51 to i64 - br label %58 - -54: ; preds = %.lr.ph, %54 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %54 ] - %55 = getelementptr inbounds nuw ptr, ptr %50, i64 %indvars.iv - %56 = load ptr, ptr %55, align 8, !tbaa !42 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 %.0 - store ptr %57, ptr %55, align 8, !tbaa !42 + br label %55 + +.lr.ph41: ; preds = %55 + %51 = getelementptr inbounds nuw i8, ptr %.pre48, i64 96 + %52 = load ptr, ptr %51, align 8, !tbaa !41 + %53 = add nsw i32 %20, -1 + %umin = tail call i32 @llvm.umin.i32(i32 %53, i32 7) + %54 = add nuw nsw i32 %umin, 1 + %wide.trip.count46 = zext nneg i32 %54 to i64 + br label %59 + +55: ; preds = %.lr.ph, %55 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %55 ] + %56 = getelementptr inbounds nuw ptr, ptr %50, i64 %indvars.iv + %57 = load ptr, ptr %56, align 8, !tbaa !42 + %58 = getelementptr inbounds nuw i8, ptr %57, i64 %.0 + store ptr %58, ptr %56, align 8, !tbaa !42 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %.lr.ph41, label %54, !llvm.loop !44 - -58: ; preds = %.lr.ph41, %58 - %indvars.iv43 = phi i64 [ 0, %.lr.ph41 ], [ %indvars.iv.next44, %58 ] - %59 = getelementptr inbounds nuw ptr, ptr %53, i64 %indvars.iv43 - %60 = load ptr, ptr %59, align 8, !tbaa !42 - %61 = getelementptr inbounds nuw ptr, ptr %.pre48, i64 %indvars.iv43 - store ptr %60, ptr %61, align 8, !tbaa !42 + br i1 %exitcond.not, label %.lr.ph41, label %55, !llvm.loop !44 + +59: ; preds = %.lr.ph41, %59 + %indvars.iv43 = phi i64 [ 0, %.lr.ph41 ], [ %indvars.iv.next44, %59 ] + %60 = getelementptr inbounds nuw ptr, ptr %52, i64 %indvars.iv43 + %61 = load ptr, ptr %60, align 8, !tbaa !42 + %62 = getelementptr inbounds nuw ptr, ptr %.pre48, i64 %indvars.iv43 + store ptr %61, ptr %62, align 8, !tbaa !42 %indvars.iv.next44 = add nuw nsw i64 %indvars.iv43, 1 %exitcond47.not = icmp eq i64 %indvars.iv.next44, %wide.trip.count46 - br i1 %exitcond47.not, label %._crit_edge, label %58, !llvm.loop !45 - -._crit_edge: ; preds = %58, %39 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %63 = load i64, ptr %62, align 8, !tbaa !29 - %64 = add i64 %63, %1 - store i64 %64, ptr %62, align 8, !tbaa !29 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store i32 1, ptr %65, align 8, !tbaa !30 + br i1 %exitcond47.not, label %._crit_edge, label %59, !llvm.loop !45 + +._crit_edge: ; preds = %59, %39 + %63 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %64 = load i64, ptr %63, align 8, !tbaa !29 + %65 = add i64 %64, %1 + store i64 %65, ptr %63, align 8, !tbaa !29 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store i32 1, ptr %66, align 8, !tbaa !30 ret void } diff --git a/bench/ffmpeg/optimized/h266_metadata.ll b/bench/ffmpeg/optimized/h266_metadata.ll index 261085136cb..d9a97f34abb 100644 --- a/bench/ffmpeg/optimized/h266_metadata.ll +++ b/bench/ffmpeg/optimized/h266_metadata.ll @@ -58,26 +58,26 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr %14 = getelementptr inbounds nuw i8, ptr %5, i64 88 %15 = load i32, ptr %14, align 8, !tbaa !23 %16 = icmp eq i32 %15, 2 - br i1 %16, label %17, label %.thread121 + br i1 %16, label %17, label %.thread120 17: ; preds = %13 tail call void @ff_cbs_delete_unit(ptr noundef nonnull %2, i32 noundef 0) #3 - br label %.thread121 + br label %.thread120 18: ; preds = %8, %3 %.not85 = icmp eq ptr %1, null - br i1 %.not85, label %.thread121, label %19 + br i1 %.not85, label %.thread120, label %19 19: ; preds = %18 %20 = getelementptr inbounds nuw i8, ptr %5, i64 88 %21 = load i32, ptr %20, align 8, !tbaa !23 %22 = icmp eq i32 %21, 1 - br i1 %22, label %23, label %.thread121 + br i1 %22, label %23, label %.thread120 23: ; preds = %19 %24 = getelementptr inbounds nuw i8, ptr %5, i64 80 %25 = icmp sgt i32 %7, 0 - br i1 %25, label %.lr.ph, label %.thread114 + br i1 %25, label %.lr.ph, label %.thread113 .lr.ph: ; preds = %23 %26 = getelementptr inbounds nuw i8, ptr %2, i64 40 @@ -87,11 +87,11 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr 28: ; preds = %.lr.ph, %54 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %54 ] - %.059133 = phi ptr [ null, %.lr.ph ], [ %.160.ph, %54 ] - %.061132 = phi ptr [ null, %.lr.ph ], [ %.263.ph, %54 ] - %.066131 = phi i32 [ 0, %.lr.ph ], [ %.268.ph, %54 ] - %.070130 = phi i32 [ 8, %.lr.ph ], [ %.272.ph, %54 ] - %.077129 = phi i8 [ 0, %.lr.ph ], [ %.279.ph, %54 ] + %.059131 = phi ptr [ null, %.lr.ph ], [ %.160.ph, %54 ] + %.061130 = phi ptr [ null, %.lr.ph ], [ %.263.ph, %54 ] + %.066129 = phi i32 [ 0, %.lr.ph ], [ %.268.ph, %54 ] + %.070128 = phi i32 [ 8, %.lr.ph ], [ %.272.ph, %54 ] + %.077127 = phi i8 [ 0, %.lr.ph ], [ %.279.ph, %54 ] %29 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %27, i64 %indvars.iv %30 = getelementptr inbounds nuw i8, ptr %29, i64 40 %31 = load ptr, ptr %30, align 8, !tbaa !30 @@ -103,7 +103,7 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr %34 = load i8, ptr %33, align 1, !tbaa !31 %35 = zext i8 %34 to i32 %36 = add nsw i32 %35, -1 - %spec.select = tail call i32 @llvm.smin.i32(i32 %.070130, i32 %36) + %spec.select = tail call i32 @llvm.smin.i32(i32 %.070128, i32 %36) %37 = getelementptr inbounds nuw i8, ptr %31, i64 1 %38 = load i8, ptr %37, align 1, !tbaa !32 switch i8 %38, label %54 [ @@ -127,11 +127,12 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr %43 = getelementptr inbounds nuw i8, ptr %31, i64 1345 %44 = load i8, ptr %43, align 1, !tbaa !34 %45 = icmp eq i8 %44, 0 - %spec.store.select = select i1 %45, i32 2, i32 %.066131 + %spec.store.select = select i1 %45, i32 2, i32 %.066129 %46 = icmp eq i8 %44, 1 - %47 = tail call i32 @llvm.smax.i32(i32 %spec.store.select, i32 1) - %spec.store.select5 = select i1 %46, i32 %47, i32 %spec.store.select - %.not88 = icmp eq ptr %.059133, null + %47 = icmp eq i32 %spec.store.select, 0 + %or.cond4 = select i1 %46, i1 %47, i1 false + %spec.store.select5 = select i1 %or.cond4, i32 1, i32 %spec.store.select + %.not88 = icmp eq ptr %.059131, null br i1 %.not88, label %48, label %54 48: ; preds = %41 @@ -145,26 +146,26 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr br label %54 53: ; preds = %48 - %.not90 = icmp eq ptr %.061132, null - br i1 %.not90, label %.thread114, label %54 + %.not90 = icmp eq ptr %.061130, null + br i1 %.not90, label %.thread113, label %54 54: ; preds = %32, %53, %28, %39, %51, %41 - %.279.ph = phi i8 [ %42, %51 ], [ %42, %41 ], [ %.077129, %39 ], [ %.077129, %28 ], [ %42, %53 ], [ %.077129, %32 ] - %.272.ph = phi i32 [ %spec.select, %51 ], [ %spec.select, %41 ], [ %spec.select, %39 ], [ %.070130, %28 ], [ %spec.select, %53 ], [ %spec.select, %32 ] - %.268.ph = phi i32 [ %spec.store.select5, %51 ], [ %spec.store.select5, %41 ], [ %.066131, %39 ], [ %.066131, %28 ], [ %spec.store.select5, %53 ], [ %.066131, %32 ] - %.263.ph = phi ptr [ %52, %51 ], [ %.061132, %41 ], [ %40, %39 ], [ %.061132, %28 ], [ %.061132, %53 ], [ %.061132, %32 ] - %.160.ph = phi ptr [ %31, %51 ], [ %.059133, %41 ], [ %.059133, %39 ], [ %.059133, %28 ], [ %31, %53 ], [ %.059133, %32 ] + %.279.ph = phi i8 [ %42, %51 ], [ %42, %41 ], [ %.077127, %39 ], [ %.077127, %28 ], [ %42, %53 ], [ %.077127, %32 ] + %.272.ph = phi i32 [ %spec.select, %51 ], [ %spec.select, %41 ], [ %spec.select, %39 ], [ %.070128, %28 ], [ %spec.select, %53 ], [ %spec.select, %32 ] + %.268.ph = phi i32 [ %spec.store.select5, %51 ], [ %spec.store.select5, %41 ], [ %.066129, %39 ], [ %.066129, %28 ], [ %spec.store.select5, %53 ], [ %.066129, %32 ] + %.263.ph = phi ptr [ %52, %51 ], [ %.061130, %41 ], [ %40, %39 ], [ %.061130, %28 ], [ %.061130, %53 ], [ %.061130, %32 ] + %.160.ph = phi ptr [ %31, %51 ], [ %.059131, %41 ], [ %.059131, %39 ], [ %.059131, %28 ], [ %31, %53 ], [ %.059131, %32 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %28, !llvm.loop !42 ._crit_edge: ; preds = %54 %.not91 = icmp eq ptr %.263.ph, null - br i1 %.not91, label %.thread114, label %55 + br i1 %.not91, label %.thread113, label %55 -.thread114: ; preds = %53, %23, %._crit_edge +.thread113: ; preds = %53, %23, %._crit_edge tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.12) #3 - br label %.thread121 + br label %.thread120 55: ; preds = %._crit_edge %56 = trunc nuw nsw i32 %.268.ph to i8 @@ -184,14 +185,14 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr store i8 %60, ptr %61, align 1, !tbaa !47 %62 = tail call i32 @ff_cbs_insert_unit_content(ptr noundef nonnull %2, i32 noundef 0, i32 noundef 20, ptr noundef nonnull %24, ptr noundef null) #3 %63 = icmp slt i32 %62, 0 - br i1 %63, label %64, label %.thread121 + br i1 %63, label %64, label %.thread120 64: ; preds = %55 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.13) #3 - br label %.thread121 + br label %.thread120 -.thread121: ; preds = %.thread114, %64, %17, %13, %19, %18, %55 - %.1 = phi i32 [ 0, %55 ], [ 0, %18 ], [ 0, %19 ], [ 0, %13 ], [ 0, %17 ], [ -1094995529, %.thread114 ], [ %62, %64 ] +.thread120: ; preds = %.thread113, %64, %17, %13, %19, %18, %55 + %.1 = phi i32 [ 0, %55 ], [ 0, %18 ], [ 0, %19 ], [ 0, %13 ], [ 0, %17 ], [ -1094995529, %.thread113 ], [ %62, %64 ] ret i32 %.1 } @@ -201,9 +202,6 @@ declare void @av_log(ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_a declare i32 @ff_cbs_insert_unit_content(ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #2 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #2 diff --git a/bench/ffmpeg/optimized/lclenc.ll b/bench/ffmpeg/optimized/lclenc.ll index f5ea50f96cc..18b7f8ecd76 100644 --- a/bench/ffmpeg/optimized/lclenc.ll +++ b/bench/ffmpeg/optimized/lclenc.ll @@ -42,48 +42,47 @@ define internal i32 @encode_init(ptr noundef %0) #0 { %12 = getelementptr inbounds nuw i8, ptr %0, i64 72 store ptr %11, ptr %12, align 8, !tbaa !35 %.not30 = icmp eq ptr %11, null - br i1 %.not30, label %36, label %13 + br i1 %.not30, label %33, label %13 13: ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %0, i64 424 %15 = load i32, ptr %14, align 8, !tbaa !36 - %16 = icmp eq i32 %15, -1 - %17 = tail call i32 @llvm.smax.i32(i32 %15, i32 0) - %18 = tail call i32 @llvm.umin.i32(i32 %17, i32 9) - %19 = select i1 %16, i32 -1, i32 %18 - %20 = getelementptr inbounds nuw i8, ptr %3, i64 12 - store i32 %19, ptr %20, align 4, !tbaa !37 - %21 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store i32 0, ptr %21, align 8, !tbaa !38 - %22 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i32 2, ptr %22, align 8, !tbaa !39 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 648 - store i32 24, ptr %23, align 8, !tbaa !40 + %16 = icmp slt i32 %15, -1 + %..i = tail call i32 @llvm.smin.i32(i32 %15, i32 9) + %.0.i = select i1 %16, i32 0, i32 %..i + %17 = getelementptr inbounds nuw i8, ptr %3, i64 12 + store i32 %.0.i, ptr %17, align 4, !tbaa !37 + %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store i32 0, ptr %18, align 8, !tbaa !38 + %19 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i32 2, ptr %19, align 8, !tbaa !39 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 648 + store i32 24, ptr %20, align 8, !tbaa !40 store i8 4, ptr %11, align 1, !tbaa !41 - %24 = getelementptr inbounds nuw i8, ptr %11, i64 1 - store i8 0, ptr %24, align 1, !tbaa !41 - %25 = getelementptr inbounds nuw i8, ptr %11, i64 2 - store i8 0, ptr %25, align 1, !tbaa !41 - %26 = getelementptr inbounds nuw i8, ptr %11, i64 3 - store i8 0, ptr %26, align 1, !tbaa !41 - %27 = getelementptr inbounds nuw i8, ptr %11, i64 4 - store i8 2, ptr %27, align 1, !tbaa !41 - %28 = trunc nsw i32 %19 to i8 - %29 = getelementptr inbounds nuw i8, ptr %11, i64 5 - store i8 %28, ptr %29, align 1, !tbaa !41 - %30 = getelementptr inbounds nuw i8, ptr %11, i64 6 - store i8 0, ptr %30, align 1, !tbaa !41 - %31 = getelementptr inbounds nuw i8, ptr %11, i64 7 - store i8 3, ptr %31, align 1, !tbaa !41 - %32 = load ptr, ptr %3, align 8, !tbaa !27 - %33 = getelementptr inbounds nuw i8, ptr %32, i64 80 - store i32 8, ptr %33, align 8, !tbaa !42 - %34 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %35 = tail call i32 @ff_deflate_init(ptr noundef nonnull %34, i32 noundef %19, ptr noundef nonnull %0) #5 - br label %36 - -36: ; preds = %10, %13 - %.0 = phi i32 [ %35, %13 ], [ -12, %10 ] + %21 = getelementptr inbounds nuw i8, ptr %11, i64 1 + store i8 0, ptr %21, align 1, !tbaa !41 + %22 = getelementptr inbounds nuw i8, ptr %11, i64 2 + store i8 0, ptr %22, align 1, !tbaa !41 + %23 = getelementptr inbounds nuw i8, ptr %11, i64 3 + store i8 0, ptr %23, align 1, !tbaa !41 + %24 = getelementptr inbounds nuw i8, ptr %11, i64 4 + store i8 2, ptr %24, align 1, !tbaa !41 + %25 = trunc i32 %.0.i to i8 + %26 = getelementptr inbounds nuw i8, ptr %11, i64 5 + store i8 %25, ptr %26, align 1, !tbaa !41 + %27 = getelementptr inbounds nuw i8, ptr %11, i64 6 + store i8 0, ptr %27, align 1, !tbaa !41 + %28 = getelementptr inbounds nuw i8, ptr %11, i64 7 + store i8 3, ptr %28, align 1, !tbaa !41 + %29 = load ptr, ptr %3, align 8, !tbaa !27 + %30 = getelementptr inbounds nuw i8, ptr %29, i64 80 + store i32 8, ptr %30, align 8, !tbaa !42 + %31 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %32 = tail call i32 @ff_deflate_init(ptr noundef nonnull %31, i32 noundef %.0.i, ptr noundef nonnull %0) #5 + br label %33 + +33: ; preds = %10, %13 + %.0 = phi i32 [ %32, %13 ], [ -12, %10 ] ret i32 %.0 } @@ -214,10 +213,7 @@ declare i32 @deflate(ptr noundef, i32 noundef) local_unnamed_addr #2 declare void @ff_deflate_end(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #4 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #4 +declare i32 @llvm.smin.i32(i32, i32) #4 attributes #0 = { cold nounwind optsize uwtable "min-legal-vector-width"="0" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/ffmpeg/optimized/vqf.ll b/bench/ffmpeg/optimized/vqf.ll index af4ee101cd9..ab3fec883ae 100644 --- a/bench/ffmpeg/optimized/vqf.ll +++ b/bench/ffmpeg/optimized/vqf.ll @@ -134,7 +134,7 @@ define internal range(i32 -2147483648, 1) i32 @vqf_read_header(ptr noundef %0) # %28 = load ptr, ptr %8, align 8, !tbaa !27 %29 = call i32 @avio_rb32(ptr noundef %28) #8 %30 = icmp ugt i32 %29, 1073741823 - %31 = icmp slt i32 %.087, 8 + %31 = icmp ult i32 %.087, 8 %or.cond = or i1 %31, %30 br i1 %or.cond, label %32, label %33 @@ -202,7 +202,7 @@ define internal range(i32 -2147483648, 1) i32 @vqf_read_header(ptr noundef %0) # 67: ; preds = %33, %33, %33, %33, %33, %33 %68 = load ptr, ptr %8, align 8, !tbaa !27 - %69 = call i32 @llvm.umin.i32(i32 %29, i32 %34) + %69 = call i32 @llvm.smin.i32(i32 %29, i32 %34) %70 = zext nneg i32 %69 to i64 %71 = call i64 @avio_skip(ptr noundef %68, i64 noundef %70) #8 br label %86 @@ -246,7 +246,7 @@ add_metadata.exit: ; preds = %77 %.291 = phi i32 [ %.089, %add_metadata.exit ], [ %57, %56 ], [ %.089, %62 ], [ %.089, %67 ] %.286 = phi i32 [ %.084, %add_metadata.exit ], [ %58, %56 ], [ %.084, %62 ], [ %.084, %67 ] %87 = sub nsw i32 %34, %29 - %88 = icmp sgt i32 %87, -1 + %88 = icmp ult i32 %87, 2147483640 br i1 %88, label %89, label %.critedge 89: ; preds = %86 @@ -538,6 +538,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #5 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #6 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smin.i32(i32, i32) #7 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.bswap.i32(i32) #7 diff --git a/bench/ffmpeg/optimized/vsrc_cellauto.ll b/bench/ffmpeg/optimized/vsrc_cellauto.ll index 95affbcbaa7..22fcec28df0 100644 --- a/bench/ffmpeg/optimized/vsrc_cellauto.ll +++ b/bench/ffmpeg/optimized/vsrc_cellauto.ll @@ -116,7 +116,7 @@ init_pattern_from_file.exit: ; preds = %29 %36 = getelementptr inbounds nuw i8, ptr %32, i64 %35 store i8 0, ptr %36, align 1, !tbaa !30 %37 = tail call fastcc i32 @init_pattern_from_string(ptr noundef nonnull %0) - %38 = icmp slt i32 %37, 0 + %38 = icmp ugt i32 %37, -23 br i1 %38, label %.critedge, label %.loopexit 39: ; preds = %14 @@ -124,7 +124,7 @@ init_pattern_from_file.exit: ; preds = %29 40: ; preds = %39 %41 = tail call fastcc i32 @init_pattern_from_string(ptr noundef nonnull %0) - %42 = icmp slt i32 %41, 0 + %42 = icmp ugt i32 %41, -23 br i1 %42, label %.critedge, label %.loopexit 43: ; preds = %39 @@ -802,7 +802,7 @@ define internal fastcc range(i32 -22, 1) i32 @init_pattern_from_string(ptr nound 31: ; preds = %36, %25 %indvars.iv = phi i64 [ %indvars.iv.next, %36 ], [ %30, %25 ] - %.031 = phi ptr [ %38, %36 ], [ %26, %25 ] + %.031 = phi ptr [ %37, %36 ], [ %26, %25 ] %32 = load i8, ptr %.031, align 1, !tbaa !30 %33 = icmp eq i8 %32, 10 %narrow = select i1 %33, i8 78, i8 %32 @@ -816,14 +816,13 @@ define internal fastcc range(i32 -22, 1) i32 @init_pattern_from_string(ptr nound ] 36: ; preds = %31 - %37 = sext i8 %35 to i32 - %38 = getelementptr inbounds nuw i8, ptr %.031, i64 1 - %39 = add nsw i32 %37, -33 - %40 = icmp ult i32 %39, 94 - %41 = zext i1 %40 to i8 - %42 = load ptr, ptr %24, align 8, !tbaa !32 - %43 = getelementptr inbounds i8, ptr %42, i64 %indvars.iv - store i8 %41, ptr %43, align 1, !tbaa !30 + %37 = getelementptr inbounds nuw i8, ptr %.031, i64 1 + %38 = add i8 %35, -33 + %39 = icmp ult i8 %38, 94 + %40 = zext i1 %39 to i8 + %41 = load ptr, ptr %24, align 8, !tbaa !32 + %42 = getelementptr inbounds i8, ptr %41, i64 %indvars.iv + store i8 %40, ptr %42, align 1, !tbaa !30 %indvars.iv.next = add nsw i64 %indvars.iv, 1 br label %31 diff --git a/bench/g2o/optimized/edge_project_xyz_onlypose.ll b/bench/g2o/optimized/edge_project_xyz_onlypose.ll index c0c199c01c5..32c9b7ee0ee 100644 --- a/bench/g2o/optimized/edge_project_xyz_onlypose.ll +++ b/bench/g2o/optimized/edge_project_xyz_onlypose.ll @@ -825,7 +825,7 @@ define linkonce_odr void @_ZN3g2o18BaseFixedSizedEdgeILi2EN5Eigen6MatrixIdLi2ELi %8 = getelementptr inbounds nuw i8, ptr %7, i64 100 %9 = load i8, ptr %8, align 4, !tbaa !148, !range !164, !noundef !165 %10 = trunc nuw i8 %9 to i1 - br i1 %10, label %173, label %11 + br i1 %10, label %174, label %11 11: ; preds = %3 %12 = getelementptr inbounds nuw i8, ptr %0, i64 248 @@ -1056,14 +1056,14 @@ define linkonce_odr void @_ZN3g2o18BaseFixedSizedEdgeILi2EN5Eigen6MatrixIdLi2ELi %170 = fadd <2 x double> %169, %168 store <2 x double> %170, ptr %151, align 1, !tbaa !46 %171 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %171, 6 - br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %172, label %111, !llvm.loop !203 + %172 = icmp eq i64 %171, 6 + br i1 %172, label %173, label %111, !llvm.loop !203 -172: ; preds = %111 +173: ; preds = %111 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %173 + br label %174 -173: ; preds = %172, %3 +174: ; preds = %173, %3 ret void } diff --git a/bench/g2o/optimized/estimate_propagator.ll b/bench/g2o/optimized/estimate_propagator.ll index 43ca63ec861..8525ba90aae 100644 --- a/bench/g2o/optimized/estimate_propagator.ll +++ b/bench/g2o/optimized/estimate_propagator.ll @@ -1786,28 +1786,28 @@ define noundef double @_ZNK3g2o30EstimatePropagatorCostOdometryclEPNS_16Optimiza %13 = load i32, ptr %12, align 8, !tbaa !70 %14 = sub nsw i32 %11, %13 %15 = tail call i32 @llvm.abs.i32(i32 %14, i1 true) - %.not = icmp eq i32 %15, 1 - br i1 %.not, label %16, label %29 - -16: ; preds = %4 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %18 = load ptr, ptr %17, align 8, !tbaa !120 - %19 = tail call ptr @_ZNK3g2o15SparseOptimizer14findActiveEdgeEPKNS_16OptimizableGraph4EdgeE(ptr noundef nonnull align 8 dereferenceable(409) %18, ptr noundef %1) - %20 = load ptr, ptr %17, align 8, !tbaa !120 - %21 = getelementptr inbounds nuw i8, ptr %20, i64 360 - %22 = load ptr, ptr %21, align 8, !tbaa !123 - %23 = icmp eq ptr %19, %22 - br i1 %23, label %29, label %24 + %16 = icmp eq i32 %15, 1 + br i1 %16, label %17, label %30 + +17: ; preds = %4 + %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %19 = load ptr, ptr %18, align 8, !tbaa !120 + %20 = tail call ptr @_ZNK3g2o15SparseOptimizer14findActiveEdgeEPKNS_16OptimizableGraph4EdgeE(ptr noundef nonnull align 8 dereferenceable(409) %19, ptr noundef %1) + %21 = load ptr, ptr %18, align 8, !tbaa !120 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 360 + %23 = load ptr, ptr %22, align 8, !tbaa !123 + %24 = icmp eq ptr %20, %23 + br i1 %24, label %30, label %25 + +25: ; preds = %17 + %26 = load ptr, ptr %1, align 8, !tbaa !92 + %27 = getelementptr inbounds nuw i8, ptr %26, i64 152 + %28 = load ptr, ptr %27, align 8 + %29 = tail call noundef double %28(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull %3) + br label %30 -24: ; preds = %16 - %25 = load ptr, ptr %1, align 8, !tbaa !92 - %26 = getelementptr inbounds nuw i8, ptr %25, i64 152 - %27 = load ptr, ptr %26, align 8 - %28 = tail call noundef double %27(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull %3) - br label %29 - -29: ; preds = %24, %16, %4 - %.0 = phi double [ 0x7FEFFFFFFFFFFFFF, %4 ], [ %28, %24 ], [ 0x7FEFFFFFFFFFFFFF, %16 ] +30: ; preds = %25, %17, %4 + %.0 = phi double [ 0x7FEFFFFFFFFFFFFF, %4 ], [ %29, %25 ], [ 0x7FEFFFFFFFFFFFFF, %17 ] ret double %.0 } diff --git a/bench/glslang/optimized/Logger.ll b/bench/glslang/optimized/Logger.ll index 08b2dca7dfd..c95fc396319 100644 --- a/bench/glslang/optimized/Logger.ll +++ b/bench/glslang/optimized/Logger.ll @@ -204,59 +204,59 @@ _ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_c %16 = select i1 %14, i64 288230376151711743, i64 %15 %17 = ptrtoint ptr %1 to i64 %18 = sub i64 %17, %8 - %.not.i = icmp ne i64 %16, 0 - tail call void @llvm.assume(i1 %.not.i) - %19 = shl nuw nsw i64 %16, 5 - %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #11 - %21 = getelementptr inbounds i8, ptr %20, i64 %18 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %2) #9 + %19 = icmp ne i64 %16, 0 + tail call void @llvm.assume(i1 %19) + %20 = shl nuw nsw i64 %16, 5 + %21 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %20) #11 + %22 = getelementptr inbounds i8, ptr %21, i64 %18 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %2) #9 %.not10.i.i.i = icmp eq ptr %6, %1 br i1 %.not10.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit, %.lr.ph.i.i.i - %.012.i.i.i = phi ptr [ %23, %.lr.ph.i.i.i ], [ %20, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] - %.0911.i.i.i = phi ptr [ %22, %.lr.ph.i.i.i ], [ %6, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] + %.012.i.i.i = phi ptr [ %24, %.lr.ph.i.i.i ], [ %21, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] + %.0911.i.i.i = phi ptr [ %23, %.lr.ph.i.i.i ], [ %6, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %.012.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i) #9 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i) #9 - %22 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 32 - %23 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 - %.not.i.i.i = icmp eq ptr %22, %1 + %23 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 32 + %24 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 + %.not.i.i.i = icmp eq ptr %23, %1 br i1 %.not.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %.lr.ph.i.i.i, !llvm.loop !9 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit: ; preds = %.lr.ph.i.i.i, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit - %.0.lcssa.i.i.i = phi ptr [ %20, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ], [ %23, %.lr.ph.i.i.i ] - %24 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i, i64 32 + %.0.lcssa.i.i.i = phi ptr [ %21, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ], [ %24, %.lr.ph.i.i.i ] + %25 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i, i64 32 %.not10.i.i.i16 = icmp eq ptr %1, %5 br i1 %.not10.i.i.i16, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, label %.lr.ph.i.i.i17 .lr.ph.i.i.i17: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, %.lr.ph.i.i.i17 - %.012.i.i.i18 = phi ptr [ %26, %.lr.ph.i.i.i17 ], [ %24, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] - %.0911.i.i.i19 = phi ptr [ %25, %.lr.ph.i.i.i17 ], [ %1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] + %.012.i.i.i18 = phi ptr [ %27, %.lr.ph.i.i.i17 ], [ %25, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] + %.0911.i.i.i19 = phi ptr [ %26, %.lr.ph.i.i.i17 ], [ %1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %.012.i.i.i18, ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i19) #9 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i19) #9 - %25 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i19, i64 32 - %26 = getelementptr inbounds nuw i8, ptr %.012.i.i.i18, i64 32 - %.not.i.i.i20 = icmp eq ptr %25, %5 + %26 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i19, i64 32 + %27 = getelementptr inbounds nuw i8, ptr %.012.i.i.i18, i64 32 + %.not.i.i.i20 = icmp eq ptr %26, %5 br i1 %.not.i.i.i20, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, label %.lr.ph.i.i.i17, !llvm.loop !9 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22: ; preds = %.lr.ph.i.i.i17, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit - %.0.lcssa.i.i.i21 = phi ptr [ %24, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ], [ %26, %.lr.ph.i.i.i17 ] - %27 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %.0.lcssa.i.i.i21 = phi ptr [ %25, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ], [ %27, %.lr.ph.i.i.i17 ] + %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.not.i23 = icmp eq ptr %6, null - br i1 %.not.i23, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, label %28 + br i1 %.not.i23, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, label %29 -28: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22 - %29 = load ptr, ptr %27, align 8 - %30 = ptrtoint ptr %29 to i64 - %31 = sub i64 %30, %8 - tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef %31) #12 +29: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22 + %30 = load ptr, ptr %28, align 8 + %31 = ptrtoint ptr %30 to i64 + %32 = sub i64 %31, %8 + tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef %32) #12 br label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit -_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, %28 - store ptr %20, ptr %0, align 8 +_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, %29 + store ptr %21, ptr %0, align 8 store ptr %.0.lcssa.i.i.i21, ptr %4, align 8 - %32 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %20, i64 %16 - store ptr %32, ptr %27, align 8 + %33 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %21, i64 %16 + store ptr %33, ptr %28, align 8 ret void } diff --git a/bench/hdf5/optimized/h5format_convert.ll b/bench/hdf5/optimized/h5format_convert.ll index 3aba74f6c6f..8068950c3ef 100644 --- a/bench/hdf5/optimized/h5format_convert.ll +++ b/bench/hdf5/optimized/h5format_convert.ll @@ -261,7 +261,7 @@ thread-pre-split.i: ; preds = %17, %15 64: ; preds = %60, %59 %65 = load ptr, ptr @dname_g, align 8, !tbaa !8 %66 = tail call fastcc i32 @convert(i64 noundef %49, ptr noundef %65) - %67 = icmp slt i32 %66, 0 + %67 = icmp eq i32 %66, -1 br i1 %67, label %parse_command_line.exit.thread, label %75 68: ; preds = %58 @@ -665,13 +665,13 @@ declare i32 @h5trav_visit(i64 noundef, ptr noundef, i1 noundef zeroext, i1 nound define internal range(i32 -1, 1) i32 @convert_dsets_cb(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef readnone captures(address_is_null) %2, ptr noundef readonly captures(none) %3) #3 { %5 = load i64, ptr %3, align 8, !tbaa !4 %6 = icmp eq ptr %2, null - br i1 %6, label %7, label %17 + br i1 %6, label %7, label %18 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 %9 = load i32, ptr %8, align 8, !tbaa !19 %10 = icmp eq i32 %9, 1 - br i1 %10, label %11, label %17 + br i1 %10, label %11, label %18 11: ; preds = %7 %.b = load i1, ptr @verbose_g, align 4 @@ -684,10 +684,12 @@ define internal range(i32 -1, 1) i32 @convert_dsets_cb(ptr noundef %0, ptr nound 15: ; preds = %12, %11 %16 = tail call fastcc i32 @convert(i64 noundef %5, ptr noundef %0) - br label %17 + %17 = icmp eq i32 %16, -1 + %spec.select = sext i1 %17 to i32 + br label %18 -17: ; preds = %15, %4, %7 - %.0 = phi i32 [ 0, %7 ], [ 0, %4 ], [ %16, %15 ] +18: ; preds = %15, %4, %7 + %.0 = phi i32 [ 0, %7 ], [ 0, %4 ], [ %spec.select, %15 ] ret i32 %.0 } diff --git a/bench/hwloc/optimized/topology-xml-libxml.ll b/bench/hwloc/optimized/topology-xml-libxml.ll index 52037786039..d6b3d5feb57 100644 --- a/bench/hwloc/optimized/topology-xml-libxml.ll +++ b/bench/hwloc/optimized/topology-xml-libxml.ll @@ -1013,23 +1013,23 @@ hwloc_libxml2_init_once.exit: ; preds = %3, %14 %15 = tail call ptr @xmlNewDoc(ptr noundef nonnull @.str.17) #11 %16 = tail call ptr @xmlNewNode(ptr noundef null, ptr noundef nonnull @.str.8) #11 %17 = and i64 %2, 2 - %.not = icmp eq i64 %17, 0 - %.str.19..str.18 = select i1 %.not, ptr @.str.19, ptr @.str.18 - %18 = tail call ptr @xmlNewProp(ptr noundef %16, ptr noundef nonnull @.str.9, ptr noundef nonnull %.str.19..str.18) #11 - %19 = getelementptr inbounds nuw i8, ptr %4, i64 48 - %20 = tail call ptr @xmlDocSetRootElement(ptr noundef %15, ptr noundef %16) #11 - %21 = tail call ptr @xmlCreateIntSubset(ptr noundef %15, ptr noundef nonnull @.str.8, ptr noundef null, ptr noundef nonnull @.str.5) #11 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr @hwloc__libxml_export_new_child, ptr %22, align 8, !tbaa !54 - %23 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr @hwloc__libxml_export_new_prop, ptr %23, align 8, !tbaa !58 - %24 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store ptr @hwloc__libxml_export_add_content, ptr %24, align 8, !tbaa !59 - %25 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store ptr @hwloc__libxml_export_end_object, ptr %25, align 8, !tbaa !60 - %26 = getelementptr inbounds nuw i8, ptr %4, i64 40 - store ptr %1, ptr %26, align 8, !tbaa !61 - store ptr %16, ptr %19, align 8, !tbaa !39 + %18 = icmp eq i64 %17, 0 + %.str.19..str.18 = select i1 %18, ptr @.str.19, ptr @.str.18 + %19 = tail call ptr @xmlNewProp(ptr noundef %16, ptr noundef nonnull @.str.9, ptr noundef nonnull %.str.19..str.18) #11 + %20 = getelementptr inbounds nuw i8, ptr %4, i64 48 + %21 = tail call ptr @xmlDocSetRootElement(ptr noundef %15, ptr noundef %16) #11 + %22 = tail call ptr @xmlCreateIntSubset(ptr noundef %15, ptr noundef nonnull @.str.8, ptr noundef null, ptr noundef nonnull @.str.5) #11 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr @hwloc__libxml_export_new_child, ptr %23, align 8, !tbaa !54 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr @hwloc__libxml_export_new_prop, ptr %24, align 8, !tbaa !58 + %25 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store ptr @hwloc__libxml_export_add_content, ptr %25, align 8, !tbaa !59 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store ptr @hwloc__libxml_export_end_object, ptr %26, align 8, !tbaa !60 + %27 = getelementptr inbounds nuw i8, ptr %4, i64 40 + store ptr %1, ptr %27, align 8, !tbaa !61 + store ptr %16, ptr %20, align 8, !tbaa !39 call void @hwloc__xml_export_topology(ptr noundef nonnull %4, ptr noundef %0, i64 noundef %2) #11 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret ptr %15 diff --git a/bench/icu/optimized/csrmbcs.ll b/bench/icu/optimized/csrmbcs.ll index c8523a1e9e6..f3377f611b1 100644 --- a/bench/icu/optimized/csrmbcs.ll +++ b/bench/icu/optimized/csrmbcs.ll @@ -262,7 +262,7 @@ _ZN6icu_77L12binarySearchEPKtit.exit.thread.us70: ; preds = %32, %30 br i1 %.not.i, label %_ZN6icu_77L12binarySearchEPKtit.exit.thread, label %.lr.ph.i, !llvm.loop !25 _ZN6icu_77L12binarySearchEPKtit.exit: ; preds = %.lr.ph.i - %61 = icmp sgt i32 %.026.in.i.fr, -2 + %61 = icmp ult i32 %.026.i, 1073741824 %62 = zext i1 %61 to i32 %spec.select = add nsw i32 %.043, %62 br label %_ZN6icu_77L12binarySearchEPKtit.exit.thread @@ -386,10 +386,10 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 br i1 %or.cond28, label %33, label %20 20: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit - %.not.i30 = icmp slt i32 %13, %9 - br i1 %.not.i30, label %22, label %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32 + %.not.i29 = icmp slt i32 %13, %9 + br i1 %.not.i29, label %22, label %.thread39 -_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32: ; preds = %20 +.thread39: ; preds = %20 %21 = getelementptr inbounds nuw i8, ptr %1, i64 13 store i8 1, ptr %21, align 1, !tbaa !11 br label %32 @@ -404,11 +404,13 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32: ; preds = %20 %28 = shl nuw nsw i32 %17, 8 %29 = or disjoint i32 %28, %27 store i32 %29, ptr %1, align 4, !tbaa !3 - %30 = add i8 %26, -64 - %31 = icmp ult i8 %30, -65 - br i1 %31, label %33, label %32 + %30 = and i32 %27, 192 + %31 = icmp eq i32 %30, 64 + %or.cond5 = icmp slt i8 %26, -1 + %or.cond42 = or i1 %or.cond5, %31 + br i1 %or.cond42, label %33, label %32 -32: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32, %22 +32: ; preds = %22, %.thread39 store i8 1, ptr %7, align 4, !tbaa !10 br label %33 @@ -726,7 +728,7 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 13 store i8 1, ptr %10, align 1, !tbaa !11 store i32 -1, ptr %1, align 4, !tbaa !3 - br label %56 + br label %60 _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 %11 = getelementptr inbounds nuw i8, ptr %2, i64 40 @@ -739,7 +741,7 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 %17 = zext i8 %16 to i32 store i32 %17, ptr %1, align 4, !tbaa !3 %18 = icmp ult i8 %16, -127 - br i1 %18, label %56, label %19 + br i1 %18, label %60, label %19 19: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit %.not.i50 = icmp slt i32 %13, %9 @@ -766,66 +768,72 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52: ; preds = %19 %30 = phi i32 [ %28, %21 ], [ %17, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52 ] %31 = phi i32 [ %22, %21 ], [ %13, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52 ] %.0.i5161 = phi i32 [ %26, %21 ], [ -1, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52 ] - %.not = icmp eq i8 %16, -1 - %32 = add nsw i32 %.0.i5161, -64 - %or.cond = icmp ult i32 %32, 191 - %or.cond67 = select i1 %.not, i1 true, i1 %or.cond - br i1 %or.cond67, label %56, label %33 - -33: ; preds = %29 - %34 = add nsw i32 %.0.i5161, -48 - %or.cond7 = icmp ult i32 %34, 10 - br i1 %or.cond7, label %35, label %55 - -35: ; preds = %33 + %32 = icmp eq i8 %16, -1 + %33 = add nsw i32 %.0.i5161, -64 + %or.cond3 = icmp ult i32 %33, 63 + %or.cond = select i1 %32, i1 true, i1 %or.cond3 + br i1 %or.cond, label %60, label %34 + +34: ; preds = %29 + %35 = icmp sgt i32 %.0.i5161, 79 + %36 = icmp ne i32 %.0.i5161, 255 + %or.cond5 = and i1 %35, %36 + br i1 %or.cond5, label %60, label %37 + +37: ; preds = %34 + %38 = add nsw i32 %.0.i5161, -48 + %or.cond7 = icmp ult i32 %38, 10 + br i1 %or.cond7, label %39, label %59 + +39: ; preds = %37 %.not.i53 = icmp slt i32 %31, %9 br i1 %.not.i53, label %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55, label %.sink.split -_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55: ; preds = %35 - %36 = add nsw i32 %31, 1 - store i32 %36, ptr %4, align 4, !tbaa !9 - %37 = sext i32 %31 to i64 - %38 = getelementptr inbounds i8, ptr %12, i64 %37 - %39 = load i8, ptr %38, align 1, !tbaa !18 - %40 = zext i8 %39 to i32 - %41 = add i8 %39, 127 - %or.cond9 = icmp ult i8 %41, 126 - br i1 %or.cond9, label %42, label %55 - -42: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55 - %.not.i56 = icmp slt i32 %36, %9 +_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55: ; preds = %39 + %40 = add nsw i32 %31, 1 + store i32 %40, ptr %4, align 4, !tbaa !9 + %41 = sext i32 %31 to i64 + %42 = getelementptr inbounds i8, ptr %12, i64 %41 + %43 = load i8, ptr %42, align 1, !tbaa !18 + %44 = zext i8 %43 to i32 + %45 = add i8 %43, 127 + %or.cond9 = icmp ult i8 %45, 126 + br i1 %or.cond9, label %46, label %59 + +46: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55 + %.not.i56 = icmp slt i32 %40, %9 br i1 %.not.i56, label %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58, label %.sink.split -_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58: ; preds = %42 - %43 = add nsw i32 %31, 2 - store i32 %43, ptr %4, align 4, !tbaa !9 - %44 = sext i32 %36 to i64 - %45 = getelementptr inbounds i8, ptr %12, i64 %44 - %46 = load i8, ptr %45, align 1, !tbaa !18 - %47 = add i8 %46, -48 - %or.cond11 = icmp ult i8 %47, 10 - br i1 %or.cond11, label %48, label %55 - -48: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58 - %49 = zext nneg i8 %46 to i32 - %50 = shl nuw i32 %30, 16 - %51 = shl nuw nsw i32 %40, 8 - %52 = or disjoint i32 %51, %49 - %53 = or disjoint i32 %52, %50 - store i32 %53, ptr %1, align 4, !tbaa !3 - br label %56 - -.sink.split: ; preds = %42, %35 - %54 = getelementptr inbounds nuw i8, ptr %1, i64 13 - store i8 1, ptr %54, align 1, !tbaa !11 - br label %55 - -55: ; preds = %.sink.split, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58, %33 +_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58: ; preds = %46 + %47 = add nsw i32 %31, 2 + store i32 %47, ptr %4, align 4, !tbaa !9 + %48 = sext i32 %40 to i64 + %49 = getelementptr inbounds i8, ptr %12, i64 %48 + %50 = load i8, ptr %49, align 1, !tbaa !18 + %51 = add i8 %50, -48 + %or.cond11 = icmp ult i8 %51, 10 + br i1 %or.cond11, label %52, label %59 + +52: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58 + %53 = zext nneg i8 %50 to i32 + %54 = shl nuw i32 %30, 16 + %55 = shl nuw nsw i32 %44, 8 + %56 = or disjoint i32 %55, %53 + %57 = or disjoint i32 %56, %54 + store i32 %57, ptr %1, align 4, !tbaa !3 + br label %60 + +.sink.split: ; preds = %46, %39 + %58 = getelementptr inbounds nuw i8, ptr %1, i64 13 + store i8 1, ptr %58, align 1, !tbaa !11 + br label %59 + +59: ; preds = %.sink.split, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58, %37 store i8 1, ptr %7, align 4, !tbaa !10 - br label %56 + br label %60 -56: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread, %29, %55, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit, %48 - %.0 = phi i8 [ 1, %48 ], [ 1, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit ], [ 1, %55 ], [ 1, %29 ], [ 0, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread ] +60: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread, %29, %59, %34, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit, %52 + %.0 = phi i8 [ 1, %52 ], [ 1, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit ], [ 1, %34 ], [ 1, %59 ], [ 1, %29 ], [ 0, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread ] ret i8 %.0 } diff --git a/bench/icu/optimized/ucmndata.ll b/bench/icu/optimized/ucmndata.ll index 8b96240c439..78b46cd676c 100644 --- a/bench/icu/optimized/ucmndata.ll +++ b/bench/icu/optimized/ucmndata.ll @@ -178,7 +178,7 @@ define internal noundef ptr @_ZL17offsetTOCLookupFnPK11UDataMemoryPKcPiP10UError %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !24 %.not = icmp eq ptr %6, null - br i1 %.not, label %83, label %7 + br i1 %.not, label %86, label %7 7: ; preds = %4 %8 = load i32, ptr %6, align 4, !tbaa !25 @@ -241,14 +241,14 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit39.i: ; preds = %31 %40 = icmp sgt i32 %8, 2 br i1 %40, label %.lr.ph.i, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread -.lr.ph.i: ; preds = %.preheader.i, %65 - %.02669.i = phi i32 [ %.228.i, %65 ], [ 1, %.preheader.i ] - %.03068.i = phi i32 [ %.232.i, %65 ], [ %25, %.preheader.i ] - %.05167.i = phi i32 [ %.152.i, %65 ], [ %.018.i35.i, %.preheader.i ] - %.05366.i = phi i32 [ %.154.i, %65 ], [ %.018.i.i, %.preheader.i ] - %41 = add nuw nsw i32 %.03068.i, %.02669.i +.lr.ph.i: ; preds = %.preheader.i, %68 + %.02668.i = phi i32 [ %.228.i, %68 ], [ 1, %.preheader.i ] + %.03067.i = phi i32 [ %.232.i, %68 ], [ %25, %.preheader.i ] + %.05166.i = phi i32 [ %.152.i, %68 ], [ %.018.i35.i, %.preheader.i ] + %.05365.i = phi i32 [ %.154.i, %68 ], [ %.018.i.i, %.preheader.i ] + %41 = add nuw nsw i32 %.03067.i, %.02668.i %42 = lshr i32 %41, 1 - %43 = tail call i32 @llvm.smin.i32(i32 %.05366.i, i32 %.05167.i) + %43 = tail call i32 @llvm.smin.i32(i32 %.05365.i, i32 %.05166.i) %44 = zext nneg i32 %42 to i64 %45 = getelementptr inbounds nuw %struct.UDataOffsetTOCEntry, ptr %9, i64 %44 %46 = load i32, ptr %45, align 4, !tbaa !27 @@ -274,61 +274,64 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit39.i: ; preds = %31 br i1 %or.cond.i43.i, label %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i, label %52 _ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i: ; preds = %52 - %60 = icmp ult i8 %54, %56 - br i1 %60, label %65, label %61 - -61: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i - %62 = icmp eq i8 %54, %56 - br i1 %62, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %63 - -63: ; preds = %61 - %64 = add nuw nsw i32 %42, 1 - br label %65 - -65: ; preds = %63, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i - %.154.i = phi i32 [ %.018.i40.i, %63 ], [ %.05366.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] - %.152.i = phi i32 [ %.05167.i, %63 ], [ %.018.i40.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] - %.232.i = phi i32 [ %.03068.i, %63 ], [ %42, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] - %.228.i = phi i32 [ %64, %63 ], [ %.02669.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] - %66 = icmp slt i32 %.228.i, %.232.i - br i1 %66, label %.lr.ph.i, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread, !llvm.loop !29 + %60 = zext i8 %54 to i32 + %61 = zext i8 %56 to i32 + %62 = sub nsw i32 %60, %61 + %63 = icmp ugt i32 %62, -256 + br i1 %63, label %68, label %64 + +64: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i + %65 = icmp eq i8 %54, %56 + br i1 %65, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %66 + +66: ; preds = %64 + %67 = add nuw nsw i32 %42, 1 + br label %68 + +68: ; preds = %66, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i + %.154.i = phi i32 [ %.018.i40.i, %66 ], [ %.05365.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] + %.152.i = phi i32 [ %.05166.i, %66 ], [ %.018.i40.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] + %.232.i = phi i32 [ %.03067.i, %66 ], [ %42, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] + %.228.i = phi i32 [ %67, %66 ], [ %.02668.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] + %69 = icmp slt i32 %.228.i, %.232.i + br i1 %69, label %.lr.ph.i, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread, !llvm.loop !29 _ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit39.i - %67 = icmp sgt i32 %8, 0 - br i1 %67, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread - -_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24: ; preds = %61, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit - %.0.i26 = phi i32 [ %25, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %42, %61 ] - %68 = zext nneg i32 %.0.i26 to i64 - %69 = getelementptr inbounds nuw %struct.UDataOffsetTOCEntry, ptr %9, i64 %68 - %70 = add nuw nsw i32 %.0.i26, 1 - %71 = icmp slt i32 %70, %8 - br i1 %71, label %72, label %78 - -72: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 - %73 = getelementptr inbounds nuw i8, ptr %69, i64 12 - %74 = load i32, ptr %73, align 4, !tbaa !31 - %75 = getelementptr inbounds nuw i8, ptr %69, i64 4 - %76 = load i32, ptr %75, align 4, !tbaa !31 - %77 = sub i32 %74, %76 - br label %78 - -78: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, %72 - %storemerge = phi i32 [ %77, %72 ], [ -1, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 ] + %70 = icmp sgt i32 %8, 0 + br i1 %70, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread + +_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24: ; preds = %64, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit + %.0.i26 = phi i32 [ %25, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %42, %64 ] + %71 = zext nneg i32 %.0.i26 to i64 + %72 = getelementptr inbounds nuw %struct.UDataOffsetTOCEntry, ptr %9, i64 %71 + %73 = add nuw nsw i32 %.0.i26, 1 + %74 = icmp slt i32 %73, %8 + br i1 %74, label %75, label %81 + +75: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 + %76 = getelementptr inbounds nuw i8, ptr %72, i64 12 + %77 = load i32, ptr %76, align 4, !tbaa !31 + %78 = getelementptr inbounds nuw i8, ptr %72, i64 4 + %79 = load i32, ptr %78, align 4, !tbaa !31 + %80 = sub i32 %77, %79 + br label %81 + +81: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, %75 + %storemerge = phi i32 [ %80, %75 ], [ -1, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 ] store i32 %storemerge, ptr %2, align 4, !tbaa !32 - %79 = getelementptr inbounds nuw i8, ptr %69, i64 4 - %80 = load i32, ptr %79, align 4, !tbaa !31 - %81 = zext i32 %80 to i64 - %82 = getelementptr inbounds nuw i8, ptr %6, i64 %81 + %82 = getelementptr inbounds nuw i8, ptr %72, i64 4 + %83 = load i32, ptr %82, align 4, !tbaa !31 + %84 = zext i32 %83 to i64 + %85 = getelementptr inbounds nuw i8, ptr %6, i64 %84 br label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread -83: ; preds = %4 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %85 = load ptr, ptr %84, align 8, !tbaa !15 +86: ; preds = %4 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %88 = load ptr, ptr %87, align 8, !tbaa !15 br label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread -_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread: ; preds = %65, %.preheader.i, %7, %78, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit, %83 - %.1 = phi ptr [ %85, %83 ], [ %82, %78 ], [ null, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %65 ] +_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread: ; preds = %68, %.preheader.i, %7, %81, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit, %86 + %.1 = phi ptr [ %88, %86 ], [ %85, %81 ], [ null, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %68 ] ret ptr %.1 } @@ -353,7 +356,7 @@ define internal noundef ptr @_ZL18pointerTOCLookupFnPK11UDataMemoryPKcPiP10UErro %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !24 %.not = icmp eq ptr %6, null - br i1 %.not, label %67, label %7 + br i1 %.not, label %70, label %7 7: ; preds = %4 %8 = load i32, ptr %6, align 8, !tbaa !33 @@ -412,14 +415,14 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit36.i: ; preds = %27 %36 = icmp sgt i32 %8, 2 br i1 %36, label %.lr.ph.i, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread -.lr.ph.i: ; preds = %.preheader.i, %59 - %.02366.i = phi i32 [ %.225.i, %59 ], [ 1, %.preheader.i ] - %.02765.i = phi i32 [ %.229.i, %59 ], [ %23, %.preheader.i ] - %.04864.i = phi i32 [ %.149.i, %59 ], [ %.018.i32.i, %.preheader.i ] - %.05063.i = phi i32 [ %.151.i, %59 ], [ %.018.i.i, %.preheader.i ] - %37 = add nuw nsw i32 %.02765.i, %.02366.i +.lr.ph.i: ; preds = %.preheader.i, %62 + %.02365.i = phi i32 [ %.225.i, %62 ], [ 1, %.preheader.i ] + %.02764.i = phi i32 [ %.229.i, %62 ], [ %23, %.preheader.i ] + %.04863.i = phi i32 [ %.149.i, %62 ], [ %.018.i32.i, %.preheader.i ] + %.05062.i = phi i32 [ %.151.i, %62 ], [ %.018.i.i, %.preheader.i ] + %37 = add nuw nsw i32 %.02764.i, %.02365.i %38 = lshr i32 %37, 1 - %39 = tail call i32 @llvm.smin.i32(i32 %.05063.i, i32 %.04864.i) + %39 = tail call i32 @llvm.smin.i32(i32 %.05062.i, i32 %.04863.i) %40 = zext nneg i32 %38 to i64 %41 = getelementptr inbounds nuw %struct.PointerTOCEntry, ptr %9, i64 %40 %42 = load ptr, ptr %41, align 8, !tbaa !35 @@ -443,46 +446,49 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit36.i: ; preds = %27 br i1 %or.cond.i40.i, label %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i, label %46 _ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i: ; preds = %46 - %54 = icmp ult i8 %48, %50 - br i1 %54, label %59, label %55 - -55: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i - %56 = icmp eq i8 %48, %50 - br i1 %56, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, label %57 - -57: ; preds = %55 - %58 = add nuw nsw i32 %38, 1 - br label %59 - -59: ; preds = %57, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i - %.151.i = phi i32 [ %.018.i37.i, %57 ], [ %.05063.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] - %.149.i = phi i32 [ %.04864.i, %57 ], [ %.018.i37.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] - %.229.i = phi i32 [ %.02765.i, %57 ], [ %38, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] - %.225.i = phi i32 [ %58, %57 ], [ %.02366.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] - %60 = icmp slt i32 %.225.i, %.229.i - br i1 %60, label %.lr.ph.i, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread, !llvm.loop !38 + %54 = zext i8 %48 to i32 + %55 = zext i8 %50 to i32 + %56 = sub nsw i32 %54, %55 + %57 = icmp ugt i32 %56, -256 + br i1 %57, label %62, label %58 + +58: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i + %59 = icmp eq i8 %48, %50 + br i1 %59, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, label %60 + +60: ; preds = %58 + %61 = add nuw nsw i32 %38, 1 + br label %62 + +62: ; preds = %60, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i + %.151.i = phi i32 [ %.018.i37.i, %60 ], [ %.05062.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] + %.149.i = phi i32 [ %.04863.i, %60 ], [ %.018.i37.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] + %.229.i = phi i32 [ %.02764.i, %60 ], [ %38, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] + %.225.i = phi i32 [ %61, %60 ], [ %.02365.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] + %63 = icmp slt i32 %.225.i, %.229.i + br i1 %63, label %.lr.ph.i, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread, !llvm.loop !38 _ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit36.i - %61 = icmp sgt i32 %8, 0 - br i1 %61, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread + %64 = icmp sgt i32 %8, 0 + br i1 %64, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread -_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15: ; preds = %55, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit - %.0.i17 = phi i32 [ %23, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %38, %55 ] +_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15: ; preds = %58, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit + %.0.i17 = phi i32 [ %23, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %38, %58 ] store i32 -1, ptr %2, align 4, !tbaa !32 - %62 = zext nneg i32 %.0.i17 to i64 - %63 = getelementptr inbounds nuw %struct.PointerTOCEntry, ptr %9, i64 %62 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 8 - %65 = load ptr, ptr %64, align 8, !tbaa !39 - %66 = tail call ptr @UDataMemory_normalizeDataPointer_77(ptr noundef %65) + %65 = zext nneg i32 %.0.i17 to i64 + %66 = getelementptr inbounds nuw %struct.PointerTOCEntry, ptr %9, i64 %65 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 8 + %68 = load ptr, ptr %67, align 8, !tbaa !39 + %69 = tail call ptr @UDataMemory_normalizeDataPointer_77(ptr noundef %68) br label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread -67: ; preds = %4 - %68 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %69 = load ptr, ptr %68, align 8, !tbaa !15 +70: ; preds = %4 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %72 = load ptr, ptr %71, align 8, !tbaa !15 br label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread -_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread: ; preds = %59, %.preheader.i, %7, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit, %67 - %.1 = phi ptr [ %69, %67 ], [ %66, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15 ], [ null, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %59 ] +_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread: ; preds = %62, %.preheader.i, %7, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit, %70 + %.1 = phi ptr [ %72, %70 ], [ %69, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15 ], [ null, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %62 ] ret ptr %.1 } diff --git a/bench/icu/optimized/uset.ll b/bench/icu/optimized/uset.ll index 5815b4cc2f1..5643ae424bd 100644 --- a/bench/icu/optimized/uset.ll +++ b/bench/icu/optimized/uset.ll @@ -800,7 +800,7 @@ define i32 @uset_getItemCount_77(ptr noundef nonnull %0) local_unnamed_addr #0 { ; Function Attrs: mustprogress uwtable define ptr @uset_getString_77(ptr noundef %0, i32 noundef %1, ptr noundef writeonly captures(address_is_null) %2) local_unnamed_addr #0 { %4 = icmp eq ptr %2, null - br i1 %4, label %28, label %5 + br i1 %4, label %30, label %5 5: ; preds = %3 %6 = tail call noundef i32 @_ZNK6icu_7710UnicodeSet11stringsSizeEv(ptr noundef nonnull align 8 dereferenceable(200) %0) @@ -811,7 +811,7 @@ define ptr @uset_getString_77(ptr noundef %0, i32 noundef %1, ptr noundef writeo 8: ; preds = %5 store i32 0, ptr %2, align 4, !tbaa !21 - br label %28 + br label %30 9: ; preds = %5 %10 = tail call noundef ptr @_ZNK6icu_7710UnicodeSet9getStringEi(ptr noundef nonnull align 8 dereferenceable(200) %0, i32 noundef %1) @@ -826,29 +826,29 @@ define ptr @uset_getString_77(ptr noundef %0, i32 noundef %1, ptr noundef writeo store i32 %18, ptr %2, align 4, !tbaa !21 %19 = load i16, ptr %11, align 8, !tbaa !22 %20 = and i16 %19, 17 - %.not.i = icmp eq i16 %20, 0 - br i1 %.not.i, label %21, label %_ZNK6icu_7713UnicodeString9getBufferEv.exit + %21 = icmp eq i16 %20, 0 + br i1 %21, label %22, label %_ZNK6icu_7713UnicodeString9getBufferEv.exit -21: ; preds = %9 - %22 = and i16 %19, 2 - %.not2.i = icmp eq i16 %22, 0 - br i1 %.not2.i, label %25, label %23 +22: ; preds = %9 + %23 = and i16 %19, 2 + %24 = icmp eq i16 %23, 0 + br i1 %24, label %27, label %25 -23: ; preds = %21 - %24 = getelementptr inbounds nuw i8, ptr %10, i64 10 +25: ; preds = %22 + %26 = getelementptr inbounds nuw i8, ptr %10, i64 10 br label %_ZNK6icu_7713UnicodeString9getBufferEv.exit -25: ; preds = %21 - %26 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %27 = load ptr, ptr %26, align 8, !tbaa !22 +27: ; preds = %22 + %28 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %29 = load ptr, ptr %28, align 8, !tbaa !22 br label %_ZNK6icu_7713UnicodeString9getBufferEv.exit -_ZNK6icu_7713UnicodeString9getBufferEv.exit: ; preds = %9, %23, %25 - %.0.i = phi ptr [ %24, %23 ], [ %27, %25 ], [ null, %9 ] +_ZNK6icu_7713UnicodeString9getBufferEv.exit: ; preds = %9, %25, %27 + %.0.i = phi ptr [ %26, %25 ], [ %29, %27 ], [ null, %9 ] tail call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %.0.i) #10, !srcloc !23 - br label %28 + br label %30 -28: ; preds = %8, %_ZNK6icu_7713UnicodeString9getBufferEv.exit, %3 +30: ; preds = %8, %_ZNK6icu_7713UnicodeString9getBufferEv.exit, %3 %.0 = phi ptr [ null, %3 ], [ null, %8 ], [ %.0.i, %_ZNK6icu_7713UnicodeString9getBufferEv.exit ] ret ptr %.0 } @@ -1018,7 +1018,7 @@ define void @uset_setSerializedToOne_77(ptr noundef %0, i32 noundef %1) local_un %3 = icmp eq ptr %0, null %4 = icmp ugt i32 %1, 1114111 %or.cond = or i1 %3, %4 - br i1 %or.cond, label %38, label %5 + br i1 %or.cond, label %33, label %5 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1036,57 +1036,54 @@ define void @uset_setSerializedToOne_77(ptr noundef %0, i32 noundef %1) local_un %12 = add nuw i16 %11, 1 %13 = getelementptr inbounds nuw i8, ptr %0, i64 18 store i16 %12, ptr %13, align 2, !tbaa !32 - br label %38 + br label %33 14: ; preds = %5 - %15 = icmp eq i32 %1, 65535 - br i1 %15, label %16, label %21 - -16: ; preds = %14 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 1, ptr %17, align 8, !tbaa !29 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 12 - store i32 3, ptr %18, align 4, !tbaa !35 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 12 + switch i32 %1, label %20 [ + i32 65535, label %17 + i32 1114111, label %31 + ] + +17: ; preds = %14 + store i32 1, ptr %15, align 8, !tbaa !29 + store i32 3, ptr %16, align 4, !tbaa !35 store i16 -1, ptr %6, align 8, !tbaa !32 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 18 - store i16 1, ptr %19, align 2, !tbaa !32 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i16 0, ptr %20, align 4, !tbaa !32 - br label %38 - -21: ; preds = %14 - %22 = icmp samesign ult i32 %1, 1114111 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 0, ptr %23, align 8, !tbaa !29 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 12 - br i1 %22, label %25, label %36 - -25: ; preds = %21 - store i32 4, ptr %24, align 4, !tbaa !35 - %26 = lshr i32 %1, 16 + %18 = getelementptr inbounds nuw i8, ptr %0, i64 18 + store i16 1, ptr %18, align 2, !tbaa !32 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i16 0, ptr %19, align 4, !tbaa !32 + br label %33 + +20: ; preds = %14 + store i32 0, ptr %15, align 8, !tbaa !29 + store i32 4, ptr %16, align 4, !tbaa !35 + %21 = lshr i32 %1, 16 + %22 = trunc nuw nsw i32 %21 to i16 + store i16 %22, ptr %6, align 8, !tbaa !32 + %23 = trunc i32 %1 to i16 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 18 + store i16 %23, ptr %24, align 2, !tbaa !32 + %25 = add nuw nsw i32 %1, 1 + %26 = lshr i32 %25, 16 %27 = trunc nuw nsw i32 %26 to i16 - store i16 %27, ptr %6, align 8, !tbaa !32 - %28 = trunc i32 %1 to i16 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 18 - store i16 %28, ptr %29, align 2, !tbaa !32 - %30 = add nuw nsw i32 %1, 1 - %31 = lshr i32 %30, 16 - %32 = trunc nuw nsw i32 %31 to i16 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i16 %32, ptr %33, align 4, !tbaa !32 - %34 = trunc i32 %30 to i16 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 22 - store i16 %34, ptr %35, align 2, !tbaa !32 - br label %38 - -36: ; preds = %21 - store i32 2, ptr %24, align 4, !tbaa !35 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i16 %27, ptr %28, align 4, !tbaa !32 + %29 = trunc i32 %25 to i16 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 22 + store i16 %29, ptr %30, align 2, !tbaa !32 + br label %33 + +31: ; preds = %14 + store i32 0, ptr %15, align 8, !tbaa !29 + store i32 2, ptr %16, align 4, !tbaa !35 store i16 16, ptr %6, align 8, !tbaa !32 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 18 - store i16 -1, ptr %37, align 2, !tbaa !32 - br label %38 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 18 + store i16 -1, ptr %32, align 2, !tbaa !32 + br label %33 -38: ; preds = %16, %36, %25, %2, %8 +33: ; preds = %17, %31, %20, %2, %8 ret void } diff --git a/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll b/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll index 7ffd1cd11fd..2c61b199d47 100644 --- a/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll +++ b/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll @@ -2069,18 +2069,18 @@ define internal fastcc void @"_ZN4core3ptr74drop_in_place$LT$core..option..Optio call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a6f3122bc871979E.llvm.9135219245553044050"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0) %7 = getelementptr inbounds nuw i8, ptr %2, i64 8 %8 = load i64, ptr %7, align 8, !range !480, !noalias !473, !noundef !15 - %.not.i.i.i = icmp eq i64 %8, 0 - br i1 %.not.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit", label %9 + %9 = icmp eq i64 %8, 0 + br i1 %9, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit", label %10 -9: ; preds = %6 - %10 = load ptr, ptr %2, align 8, !noalias !473, !nonnull !15, !noundef !15 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %12 = load i64, ptr %11, align 8, !noalias !473, !noundef !15 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.9135219245553044050"(ptr noalias noundef nonnull readonly align 1 %13, ptr noundef nonnull %10, i64 noundef %8, i64 noundef %12) +10: ; preds = %6 + %11 = load ptr, ptr %2, align 8, !noalias !473, !nonnull !15, !noundef !15 + %12 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %13 = load i64, ptr %12, align 8, !noalias !473, !noundef !15 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.9135219245553044050"(ptr noalias noundef nonnull readonly align 1 %14, ptr noundef nonnull %11, i64 noundef %8, i64 noundef %13) br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit": ; preds = %6, %9 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit": ; preds = %6, %10 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !473 br label %5 } diff --git a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll index 177a4f0c2a7..17221d97f54 100644 --- a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll +++ b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll @@ -1372,20 +1372,22 @@ define internal fastcc noundef range(i128 -9223458436854775805, 9223458436854775 9: ; preds = %4 %10 = srem i128 %0, %1 - %11 = icmp slt i128 %10, 0 - br i1 %11, label %13, label %15 + %11 = icmp ugt i128 %10, -9223458436854775806 + br i1 %11, label %13, label %17 12: ; preds = %4 tail call void @_ZN4core9panicking11panic_const24panic_const_rem_overflow17ha0f84a9d583a94feE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fdf300760c0b958a8147d50c9fbb92a5.6) #22 unreachable 13: ; preds = %9 - %.sroa.01.0 = tail call i128 @llvm.abs.i128(i128 %1, i1 true) - %14 = add nsw i128 %10, %.sroa.01.0 - br label %15 + %14 = icmp ugt i128 %1, -9223372036854775809 + %15 = sub nsw i128 0, %1 + %.sroa.01.0 = select i1 %14, i128 %15, i128 %1 + %16 = add nsw i128 %10, %.sroa.01.0 + br label %17 -15: ; preds = %9, %13 - %.sroa.0.0 = phi i128 [ %14, %13 ], [ %10, %9 ] +17: ; preds = %9, %13 + %.sroa.0.0 = phi i128 [ %16, %13 ], [ %10, %9 ] ret i128 %.sroa.0.0 } @@ -2222,7 +2224,7 @@ define void @_ZN4jiff5civil4time4Time32overflowing_add_duration_general17h77ea31 %27 = sdiv i128 %.frozen, %26 %28 = mul i128 %27, %26 %.decomposed = sub i128 %.frozen, %28 - %29 = icmp slt i128 %.decomposed, 0 + %29 = icmp ugt i128 %.decomposed, -9223372036854775808 %extract.t68 = trunc i128 %27 to i32 %extract.t72 = trunc i128 %27 to i64 br i1 %29, label %30, label %"_ZN4core3num22_$LT$impl$u20$i128$GT$10div_euclid17h24c2424823b6c63eE.exit" @@ -2285,12 +2287,12 @@ define void @_ZN4jiff5civil4time4Time32overflowing_add_duration_general17h77ea31 51: ; preds = %47 %52 = srem i128 %21, %48 - %53 = icmp slt i128 %52, 0 + %53 = icmp ugt i128 %52, -9223372036854775808 %extract.t74 = trunc nuw nsw i128 %52 to i64 br i1 %53, label %54, label %56 54: ; preds = %51 - %.sroa.01.0.i = tail call i128 @llvm.abs.i128(i128 range(i128 -9223372036854775808, 9223458436854775807) %48, i1 true) + %.sroa.01.0.i = tail call i128 @llvm.abs.i128(i128 %48, i1 true) %55 = add nsw i128 %52, %.sroa.01.0.i %extract.t73 = trunc nsw i128 %55 to i64 br label %56 @@ -2429,7 +2431,7 @@ define void @_ZN4jiff5civil4time9TimeRound5round17h8bd8b12d120a1ba7E(ptr dead_on call void @llvm.lifetime.end.p0(ptr nonnull %4) %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %12, ptr %13, align 8 - br label %57 + br label %59 14: ; preds = %3 %15 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -2466,58 +2468,60 @@ define void @_ZN4jiff5civil4time9TimeRound5round17h8bd8b12d120a1ba7E(ptr dead_on 36: ; preds = %14 %37 = srem i128 %31, %34 - %38 = icmp slt i128 %37, 0 + %38 = icmp ugt i128 %37, -9223458436854775806 %extract.t35 = trunc nuw i128 %37 to i64 - br i1 %38, label %39, label %41 + br i1 %38, label %39, label %43 39: ; preds = %36 - %.sroa.01.0.i = tail call i128 @llvm.abs.i128(i128 range(i128 -9223372036854775808, 9223458436854775807) %34, i1 true) - %40 = add nsw i128 %37, %.sroa.01.0.i - %extract.t34 = trunc i128 %40 to i64 - br label %41 + %40 = icmp ugt i128 %34, -9223285636854775810 + %41 = sub nsw i128 18446657673709551617, %33 + %.sroa.01.0.i = select i1 %40, i128 %41, i128 %34 + %42 = add nsw i128 %37, %.sroa.01.0.i + %extract.t34 = trunc i128 %42 to i64 + br label %43 -41: ; preds = %39, %36 +43: ; preds = %39, %36 %.sroa.0.0.i.off0 = phi i64 [ %extract.t34, %39 ], [ %extract.t35, %36 ] - %42 = icmp eq i64 %.sroa.0.0.i.off0, 0 - br i1 %42, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %43 + %44 = icmp eq i64 %.sroa.0.0.i.off0, 0 + br i1 %44, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %45 -43: ; preds = %41 - %44 = sdiv i64 %.sroa.0.0.i.off0, 3600000000000 - %45 = srem i64 %.sroa.0.0.i.off0, 3600000000000 - %46 = icmp eq i64 %45, 0 - br i1 %46, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %47 +45: ; preds = %43 + %46 = sdiv i64 %.sroa.0.0.i.off0, 3600000000000 + %47 = srem i64 %.sroa.0.0.i.off0, 3600000000000 + %48 = icmp eq i64 %47, 0 + br i1 %48, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %49 -47: ; preds = %43 - %48 = sdiv i64 %45, 60000000000 - %49 = srem i64 %45, 60000000000 - %50 = icmp eq i64 %49, 0 - br i1 %50, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %51 +49: ; preds = %45 + %50 = sdiv i64 %47, 60000000000 + %51 = srem i64 %47, 60000000000 + %52 = icmp eq i64 %51, 0 + br i1 %52, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %53 -51: ; preds = %47 - %52 = sdiv i64 %49, 1000000000 - %53 = srem i64 %49, 1000000000 - %54 = trunc nsw i64 %53 to i32 - %55 = trunc nsw i64 %52 to i8 +53: ; preds = %49 + %54 = sdiv i64 %51, 1000000000 + %55 = srem i64 %51, 1000000000 + %56 = trunc nsw i64 %55 to i32 + %57 = trunc nsw i64 %54 to i8 br label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit" -"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit": ; preds = %14, %41, %43, %47, %51 - %.sroa.5.0.i.i.i = phi i8 [ 0, %41 ], [ 0, %43 ], [ 0, %47 ], [ %55, %51 ], [ 0, %14 ] - %.sroa.4.0.i.i.i = phi i64 [ 0, %41 ], [ 0, %43 ], [ %48, %47 ], [ %48, %51 ], [ 0, %14 ] - %.sroa.3.0.i.i.i = phi i64 [ 0, %41 ], [ %44, %43 ], [ %44, %47 ], [ %44, %51 ], [ 0, %14 ] - %.sroa.0.0.i.i.i = phi i32 [ 0, %41 ], [ 0, %43 ], [ 0, %47 ], [ %54, %51 ], [ 0, %14 ] +"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit": ; preds = %14, %43, %45, %49, %53 + %.sroa.5.0.i.i.i = phi i8 [ 0, %43 ], [ 0, %45 ], [ 0, %49 ], [ %57, %53 ], [ 0, %14 ] + %.sroa.4.0.i.i.i = phi i64 [ 0, %43 ], [ 0, %45 ], [ %50, %49 ], [ %50, %53 ], [ 0, %14 ] + %.sroa.3.0.i.i.i = phi i64 [ 0, %43 ], [ %46, %45 ], [ %46, %49 ], [ %46, %53 ], [ 0, %14 ] + %.sroa.0.0.i.i.i = phi i32 [ 0, %43 ], [ 0, %45 ], [ 0, %49 ], [ %56, %53 ], [ 0, %14 ] %.sroa.429.0.extract.trunc = trunc i64 %.sroa.3.0.i.i.i to i8 %.sroa.530.0.extract.trunc = trunc nsw i64 %.sroa.4.0.i.i.i to i8 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %.sroa.0.0.i.i.i, ptr %56, align 4 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %.sroa.0.0.i.i.i, ptr %58, align 4 %.sroa.49.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 %.sroa.429.0.extract.trunc, ptr %.sroa.49.0..sroa_idx, align 8 %.sroa.510.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 %.sroa.530.0.extract.trunc, ptr %.sroa.510.0..sroa_idx, align 1 %.sroa.611.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 10 store i8 %.sroa.5.0.i.i.i, ptr %.sroa.611.0..sroa_idx, align 2 - br label %57 + br label %59 -57: ; preds = %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", %10 +59: ; preds = %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", %10 %storemerge = phi i32 [ 0, %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit" ], [ 1, %10 ] store i32 %storemerge, ptr %0, align 8 ret void @@ -2601,13 +2605,13 @@ define noundef ptr @_ZN4jiff5error5Error12context_impl17hbda6a31ae441b165E(ptr n %13 = invoke noundef ptr @_ZN4jiff5error5Error15adhoc_from_args17hb38b2a9143298703E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5) to label %16 unwind label %14 -"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10": ; preds = %52, %56, %35, %17, %14 - %.sroa.03.0 = phi i1 [ false, %35 ], [ true, %14 ], [ true, %17 ], [ false, %56 ], [ false, %52 ] - %.pn.pn = phi { ptr, i32 } [ %36, %35 ], [ %15, %14 ], [ %18, %17 ], [ %53, %56 ], [ %53, %52 ] +"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10": ; preds = %53, %57, %36, %17, %14 + %.sroa.03.0 = phi i1 [ false, %36 ], [ true, %14 ], [ true, %17 ], [ false, %57 ], [ false, %53 ] + %.pn.pn = phi { ptr, i32 } [ %37, %36 ], [ %15, %14 ], [ %18, %17 ], [ %54, %57 ], [ %54, %53 ] invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %6) #23 - to label %59 unwind label %57 + to label %60 unwind label %58 -14: ; preds = %25, %8 +14: ; preds = %26, %8 %15 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" @@ -2631,108 +2635,108 @@ define noundef ptr @_ZN4jiff5error5Error12context_impl17hbda6a31ae441b165E(ptr n %21 = phi ptr [ %13, %19 ], [ %1, %2 ] %22 = getelementptr inbounds nuw i8, ptr %21, i64 16 %23 = load i64, ptr %22, align 16, !range !234, !noundef !3 - %.not6 = icmp eq i64 %23, 0 - br i1 %.not6, label %30, label %25, !prof !268 + %24 = icmp eq i64 %23, 0 + br i1 %24, label %31, label %26, !prof !268 -24: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", %25 +25: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", %26 unreachable -25: ; preds = %20 +26: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr @anon.fdf300760c0b958a8147d50c9fbb92a5.60, ptr %4, align 8 - %26 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 1, ptr %26, align 8 - %27 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store ptr null, ptr %27, align 8 - %28 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %28, align 8 - %29 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i64 0, ptr %29, align 8 + %27 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i64 1, ptr %27, align 8 + %28 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store ptr null, ptr %28, align 8 + %29 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %29, align 8 + %30 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i64 0, ptr %30, align 8 invoke void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fdf300760c0b958a8147d50c9fbb92a5.61) #22 - to label %24 unwind label %14 + to label %25 unwind label %14 -30: ; preds = %20 +31: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %31 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %0, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %0, ptr %32, align 8 store i64 1, ptr %3, align 8 - %32 = getelementptr inbounds nuw i8, ptr %21, i64 8 - %33 = cmpxchg ptr %32, i64 1, i64 -1 acquire monotonic, align 8, !noalias !269 - %34 = extractvalue { i64, i1 } %33, 1 - br i1 %34, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit", label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !272 + %33 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %34 = cmpxchg ptr %33, i64 1, i64 -1 acquire monotonic, align 8, !noalias !269 + %35 = extractvalue { i64, i1 } %34, 1 + br i1 %35, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit", label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !272 -35: ; preds = %46 - %36 = landingpad { ptr, i32 } +36: ; preds = %47 + %37 = landingpad { ptr, i32 } cleanup - %37 = load i64, ptr %3, align 8, !range !234, !noundef !3 - %38 = load ptr, ptr %31, align 8 - store i64 %37, ptr %43, align 16 - store ptr %38, ptr %47, align 8 + %38 = load i64, ptr %3, align 8, !range !234, !noundef !3 + %39 = load ptr, ptr %32, align 8 + store i64 %38, ptr %44, align 16 + store ptr %39, ptr %48, align 8 br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" -"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit": ; preds = %30 - %39 = load atomic i64, ptr %21 acquire, align 8, !noalias !269 - %40 = icmp eq i64 %39, 1 - store atomic i64 1, ptr %32 release, align 8, !noalias !269 - br i1 %40, label %41, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !273 +"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit": ; preds = %31 + %40 = load atomic i64, ptr %21 acquire, align 8, !noalias !269 + %41 = icmp eq i64 %40, 1 + store atomic i64 1, ptr %33 release, align 8, !noalias !269 + br i1 %41, label %42, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !273 -"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread": ; preds = %30, %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" +"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread": ; preds = %31, %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" invoke void @_ZN4core6option13unwrap_failed17h1fc5fce77a97a273E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fdf300760c0b958a8147d50c9fbb92a5.62) #22 - to label %24 unwind label %52 + to label %25 unwind label %53 -41: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" - %42 = load ptr, ptr %6, align 8, !nonnull !3, !noundef !3 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 16 - %44 = load i64, ptr %43, align 8, !range !234, !alias.scope !274, !noundef !3 - %45 = icmp eq i64 %44, 0 - br i1 %45, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit", label %46 +42: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" + %43 = load ptr, ptr %6, align 8, !nonnull !3, !noundef !3 + %44 = getelementptr inbounds nuw i8, ptr %43, i64 16 + %45 = load i64, ptr %44, align 8, !range !234, !alias.scope !274, !noundef !3 + %46 = icmp eq i64 %45, 0 + br i1 %46, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit", label %47 -46: ; preds = %41 - %47 = getelementptr inbounds nuw i8, ptr %42, i64 24 - invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %47) - to label %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" unwind label %35 +47: ; preds = %42 + %48 = getelementptr inbounds nuw i8, ptr %43, i64 24 + invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %48) + to label %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" unwind label %36 -"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge": ; preds = %46 +"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge": ; preds = %47 %.pre = load ptr, ptr %6, align 8 br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit" -"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit": ; preds = %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge", %41 - %48 = phi ptr [ %.pre, %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" ], [ %42, %41 ] - %49 = load i64, ptr %3, align 8, !range !234, !noundef !3 - %50 = load ptr, ptr %31, align 8 - store i64 %49, ptr %43, align 16 - %51 = getelementptr inbounds nuw i8, ptr %42, i64 24 - store ptr %50, ptr %51, align 8 +"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit": ; preds = %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge", %42 + %49 = phi ptr [ %.pre, %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" ], [ %43, %42 ] + %50 = load i64, ptr %3, align 8, !range !234, !noundef !3 + %51 = load ptr, ptr %32, align 8 + store i64 %50, ptr %44, align 16 + %52 = getelementptr inbounds nuw i8, ptr %43, i64 24 + store ptr %51, ptr %52, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %6) - ret ptr %48 + ret ptr %49 -52: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread" - %53 = landingpad { ptr, i32 } +53: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread" + %54 = landingpad { ptr, i32 } cleanup - %54 = load i64, ptr %3, align 8, !range !234, !alias.scope !277, !noundef !3 - %55 = icmp eq i64 %54, 0 - br i1 %55, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10", label %56 + %55 = load i64, ptr %3, align 8, !range !234, !alias.scope !277, !noundef !3 + %56 = icmp eq i64 %55, 0 + br i1 %56, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10", label %57 -56: ; preds = %52 - invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %31) - to label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" unwind label %57 +57: ; preds = %53 + invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %32) + to label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" unwind label %58 -57: ; preds = %56, %61, %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" - %58 = landingpad { ptr, i32 } +58: ; preds = %57, %62, %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" + %59 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24 unreachable -59: ; preds = %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" - br i1 %.sroa.03.0, label %61, label %60 +60: ; preds = %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" + br i1 %.sroa.03.0, label %62, label %61 -60: ; preds = %61, %59 +61: ; preds = %62, %60 resume { ptr, i32 } %.pn.pn -61: ; preds = %59 +62: ; preds = %60 invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %7) #23 - to label %60 unwind label %57 + to label %61 unwind label %58 } ; Function Attrs: cold nonlazybind uwtable @@ -3628,7 +3632,7 @@ define void @_ZN4jiff3fmt8friendly7printer11SpanPrinter14span_to_string17h2eb252 "_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$16with_capacity_in17he6562ce0359ebaffE.exit": ; preds = %3 %14 = load ptr, ptr %11, align 8, !nonnull !3, !noundef !3 - %15 = icmp samesign ugt i64 %10, 3 + %15 = icmp ugt i64 %10, 3 tail call void @llvm.assume(i1 %15) call void @llvm.lifetime.end.p0(ptr nonnull %4) store i64 %10, ptr %6, align 8 @@ -3713,7 +3717,7 @@ define void @_ZN4jiff3fmt8friendly7printer11SpanPrinter18duration_to_string17h0b "_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$16with_capacity_in17he6562ce0359ebaffE.exit": ; preds = %3 %14 = load ptr, ptr %11, align 8, !nonnull !3, !noundef !3 - %15 = icmp samesign ugt i64 %10, 3 + %15 = icmp ugt i64 %10, 3 tail call void @llvm.assume(i1 %15) call void @llvm.lifetime.end.p0(ptr nonnull %4) store i64 %10, ptr %6, align 8 @@ -3907,7 +3911,7 @@ define void @_ZN4jiff3fmt8friendly7printer17FractionalPrinter9from_span17h9f88e9 %81 = sdiv i128 %.frozen, %80 %82 = mul i128 %81, %80 %.decomposed = sub i128 %.frozen, %82 - %83 = icmp slt i128 %.decomposed, 0 + %83 = icmp ugt i128 %.decomposed, -9223372036854775808 %extract.t15.i = trunc i128 %81 to i64 br i1 %83, label %84, label %"_ZN4core3num22_$LT$impl$u20$i128$GT$10div_euclid17h24c2424823b6c63eE.exit.i" @@ -3940,12 +3944,12 @@ define void @_ZN4jiff3fmt8friendly7printer17FractionalPrinter9from_span17h9f88e9 94: ; preds = %90 %95 = srem i128 %71, %91 - %96 = icmp slt i128 %95, 0 + %96 = icmp ugt i128 %95, -9223372036854775808 %extract.t16.i = trunc i128 %95 to i32 br i1 %96, label %97, label %99 97: ; preds = %94 - %.sroa.01.0.i.i = tail call i128 @llvm.abs.i128(i128 range(i128 -9223372036854775808, 9223458436854775807) %91, i1 true) + %.sroa.01.0.i.i = tail call i128 @llvm.abs.i128(i128 %91, i1 true) %98 = add nsw i128 %95, %.sroa.01.0.i.i %extract.t.i = trunc i128 %98 to i32 br label %99 @@ -4032,7 +4036,7 @@ default.unreachable50: ; preds = %6 .split: ; preds = %6 %9 = sdiv i64 %8, 3600 - %10 = icmp slt i64 %8, -3599 + %10 = icmp ugt i64 %9, -2562047788015216 %11 = sub nsw i64 0, %9 %.sroa.010.0 = select i1 %10, i64 %11, i64 %9 %12 = sext i64 %8 to i128 @@ -4044,14 +4048,14 @@ default.unreachable50: ; preds = %6 %18 = srem i128 %17, 3600000000000 %19 = trunc nsw i128 %18 to i64 %20 = sdiv i64 %19, 3600 - %21 = icmp slt i64 %19, -3599 + %21 = icmp ugt i64 %20, -1000000000 %22 = sub nsw i64 0, %20 %.sroa.011.0 = select i1 %21, i64 %22, i64 %20 br label %61 .split27: ; preds = %6 %23 = sdiv i64 %8, 60 - %24 = icmp slt i64 %8, -59 + %24 = icmp ugt i64 %23, -153722867280912931 %25 = sub nsw i64 0, %23 %.sroa.016.0 = select i1 %24, i64 %25, i64 %23 %26 = sext i64 %8 to i128 @@ -4063,7 +4067,7 @@ default.unreachable50: ; preds = %6 %32 = srem i128 %31, 60000000000 %33 = trunc nsw i128 %32 to i64 %34 = sdiv i64 %33, 60 - %35 = icmp slt i64 %33, -59 + %35 = icmp ugt i64 %34, -1000000000 %36 = sub nsw i64 0, %34 %.sroa.017.0 = select i1 %35, i64 %36, i64 %34 br label %61 @@ -4838,7 +4842,7 @@ define void @_ZN4jiff15signed_duration19SignedDurationRound5round17h9b8375263a23 %46 = sdiv i128 %25, %45 %47 = mul i128 %46, %45 %.decomposed = sub i128 %25, %47 - %48 = icmp slt i128 %.decomposed, 0 + %48 = icmp ugt i128 %.decomposed, -9223372036854775808 br i1 %48, label %49, label %"_ZN4core3num22_$LT$impl$u20$i128$GT$10div_euclid17h24c2424823b6c63eE.exit" 49: ; preds = %44 @@ -4893,12 +4897,12 @@ define void @_ZN4jiff15signed_duration19SignedDurationRound5round17h9b8375263a23 71: ; preds = %67 %72 = srem i128 %25, %68 - %73 = icmp slt i128 %72, 0 + %73 = icmp ugt i128 %72, -9223372036854775808 %extract.t31 = trunc i128 %72 to i32 br i1 %73, label %74, label %76 74: ; preds = %71 - %.sroa.01.0.i = tail call i128 @llvm.abs.i128(i128 range(i128 -9223372036854775808, 9223458436854775807) %68, i1 true) + %.sroa.01.0.i = tail call i128 @llvm.abs.i128(i128 %68, i1 true) %75 = add nsw i128 %72, %.sroa.01.0.i %extract.t30 = trunc i128 %75 to i32 br label %76 diff --git a/bench/jsonnet/optimized/to_c_array.ll b/bench/jsonnet/optimized/to_c_array.ll index dc5fe62d0f2..c2ddd4bdf7d 100644 --- a/bench/jsonnet/optimized/to_c_array.ll +++ b/bench/jsonnet/optimized/to_c_array.ll @@ -50,7 +50,7 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca 7: ; preds = %2 %8 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str, i64 noundef 37) - br label %53 + br label %54 9: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) @@ -68,7 +68,7 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca 16: ; preds = %14 %17 = landingpad { ptr, i32 } cleanup - br label %52 + br label %53 18: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -89,12 +89,12 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca 26: ; preds = %18 %27 = landingpad { ptr, i32 } cleanup - br label %51 + br label %52 28: ; preds = %24 %29 = landingpad { ptr, i32 } cleanup - br label %50 + br label %51 30: ; preds = %21 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -113,42 +113,42 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca %38 = getelementptr inbounds nuw i8, ptr %37, i64 32 %39 = load i32, ptr %38, align 8, !tbaa !13 %40 = and i32 %39, 5 - %.not.i = icmp eq i32 %40, 0 - br i1 %.not.i, label %41, label %48 + %41 = icmp eq i32 %40, 0 + br i1 %41, label %42, label %49 -41: ; preds = %33 - br i1 %.0, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, label %43 +42: ; preds = %33 + br i1 %.0, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, label %44 -.loopexit: ; preds = %31, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %43 +.loopexit: ; preds = %31, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %44 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %42 + br label %43 -.loopexit.split-lp: ; preds = %48 +.loopexit.split-lp: ; preds = %49 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %42 + br label %43 -42: ; preds = %.loopexit.split-lp, %.loopexit +43: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %50 + br label %51 -43: ; preds = %41 - %44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.3, i64 noundef 1) +44: ; preds = %42 + %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.3, i64 noundef 1) to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 unwind label %.loopexit -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %43, %41 - %45 = load i8, ptr %5, align 1, !tbaa !24 - %46 = sext i8 %45 to i32 - %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %46) +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %44, %42 + %46 = load i8, ptr %5, align 1, !tbaa !24 + %47 = sext i8 %46 to i32 + %48 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %47) to label %31 unwind label %.loopexit, !llvm.loop !25 -48: ; preds = %33 - %49 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.4, i64 noundef 2) +49: ; preds = %33 + %50 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.4, i64 noundef 2) to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 unwind label %.loopexit.split-lp -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %48 +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %49 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 @@ -158,29 +158,29 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17: ; preds = %24, % call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit -50: ; preds = %42, %28 - %.pn = phi { ptr, i32 } [ %lpad.phi, %42 ], [ %29, %28 ] +51: ; preds = %43, %28 + %.pn = phi { ptr, i32 } [ %lpad.phi, %43 ], [ %29, %28 ] call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %4) #10 - br label %51 + br label %52 -51: ; preds = %50, %26 - %.pn.pn = phi { ptr, i32 } [ %.pn, %50 ], [ %27, %26 ] +52: ; preds = %51, %26 + %.pn.pn = phi { ptr, i32 } [ %.pn, %51 ], [ %27, %26 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %52 + br label %53 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit: ; preds = %14, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 %.112 = phi i32 [ %.213, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 ], [ 1, %14 ] call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3) #10 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %53 + br label %54 -52: ; preds = %51, %16 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %51 ], [ %17, %16 ] +53: ; preds = %52, %16 + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %52 ], [ %17, %16 ] call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3) #10 call void @llvm.lifetime.end.p0(ptr nonnull %3) resume { ptr, i32 } %.pn.pn.pn -53: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %7 +54: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %7 %.011 = phi i32 [ 1, %7 ], [ %.112, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit ] ret i32 %.011 } diff --git a/bench/libdeflate/optimized/prog_util.ll b/bench/libdeflate/optimized/prog_util.ll index 960d919038d..06c9ed32c2e 100644 --- a/bench/libdeflate/optimized/prog_util.ll +++ b/bench/libdeflate/optimized/prog_util.ll @@ -439,7 +439,7 @@ define internal fastcc range(i32 -2147483648, 1) i32 @read_full_contents(ptr nou xmalloc.exit.thread: ; preds = %1 tail call void (ptr, ...) @msg(ptr noundef nonnull @.str) - br label %40 + br label %41 xmalloc.exit: ; preds = %1, %32 %.037 = phi i64 [ %34, %32 ], [ 0, %1 ] @@ -517,30 +517,30 @@ xread.exit: ; preds = %.lr.ph.i, %28, %11 32: ; preds = %xread.exit %33 = and i64 %29, 2147483647 %34 = add i64 %33, %.037 - %.not = icmp eq i32 %30, 0 - br i1 %.not, label %35, label %xmalloc.exit + %35 = icmp eq i32 %30, 0 + br i1 %35, label %36, label %xmalloc.exit -35: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store ptr %.1, ptr %36, align 8, !tbaa !24 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i64 %34, ptr %37, align 8, !tbaa !26 - br label %40 +36: ; preds = %32 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr %.1, ptr %37, align 8, !tbaa !24 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store i64 %34, ptr %38, align 8, !tbaa !26 + br label %41 .loopexit: ; preds = %xread.exit, %xread.exit.thread, %select.unfold %.3 = phi ptr [ %.033, %select.unfold ], [ %.1, %xread.exit.thread ], [ %.1, %xread.exit ] %.032 = phi i32 [ -1, %select.unfold ], [ -1, %xread.exit.thread ], [ %30, %xread.exit ] tail call void @free(ptr noundef %.3) #20 - br label %40 + br label %41 select.unfold: ; preds = %7, %5 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %39 = load ptr, ptr %38, align 8, !tbaa !21 - tail call void (ptr, ...) @msg(ptr noundef nonnull @.str.21, ptr noundef %39) + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %40 = load ptr, ptr %39, align 8, !tbaa !21 + tail call void (ptr, ...) @msg(ptr noundef nonnull @.str.21, ptr noundef %40) br label %.loopexit -40: ; preds = %xmalloc.exit.thread, %.loopexit, %35 - %.0 = phi i32 [ %.032, %.loopexit ], [ 0, %35 ], [ -1, %xmalloc.exit.thread ] +41: ; preds = %xmalloc.exit.thread, %.loopexit, %36 + %.0 = phi i32 [ %.032, %.loopexit ], [ 0, %36 ], [ -1, %xmalloc.exit.thread ] ret i32 %.0 } diff --git a/bench/libphonenumber/optimized/unicodestring_test.ll b/bench/libphonenumber/optimized/unicodestring_test.ll index 6b60477425d..96a846d2d36 100644 --- a/bench/libphonenumber/optimized/unicodestring_test.ll +++ b/bench/libphonenumber/optimized/unicodestring_test.ll @@ -14093,8 +14093,8 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit: ; preds = %16, %18 call void @_ZNK4i18n12phonenumbers11UnicodeText3endEv(ptr dead_on_unwind nonnull writable sret(%"class.i18n::phonenumbers::UnicodeText::const_iterator") align 8 %9, ptr noundef nonnull align 8 dereferenceable(36) %0) %20 = load ptr, ptr %8, align 8, !tbaa !192 %21 = load ptr, ptr %9, align 8, !tbaa !192 - %.not3537 = icmp eq ptr %20, %21 - br i1 %.not3537, label %._crit_edge.thread, label %.lr.ph + %.not3436 = icmp eq ptr %20, %21 + br i1 %.not3436, label %._crit_edge.thread, label %.lr.ph ._crit_edge.thread: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -14102,9 +14102,9 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit: ; preds = %16, %18 br label %65 .lr.ph: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit, %47 - %.038 = phi i64 [ %49, %47 ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit ] + %.037 = phi i64 [ %49, %47 ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit ] %22 = call noundef i32 @_ZNK4i18n12phonenumbers11UnicodeText14const_iteratordeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) - %.not = icmp eq i64 %.038, 0 + %.not = icmp eq i64 %.037, 0 br i1 %.not, label %35, label %23 23: ; preds = %.lr.ph @@ -14129,8 +14129,8 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit: ; preds = %16, %18 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %34 = icmp eq i64 %.038, 32 - br i1 %34, label %.thread32, label %35 + %34 = icmp eq i64 %.037, 32 + br i1 %34, label %.thread31, label %35 35: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19, %.lr.ph call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -14152,7 +14152,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %1, i8 noundef signext 32) br label %47 -.thread32: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19 +.thread31: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19 %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.146, i64 noundef 4) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) @@ -14161,12 +14161,12 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 47: ; preds = %44, %42 call void @llvm.lifetime.end.p0(ptr nonnull %5) %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1, i32 noundef %22) - %49 = add i64 %.038, 1 + %49 = add i64 %.037, 1 %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4i18n12phonenumbers11UnicodeText14const_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) %51 = load ptr, ptr %8, align 8, !tbaa !192 %52 = load ptr, ptr %9, align 8, !tbaa !192 - %.not35 = icmp eq ptr %51, %52 - br i1 %.not35, label %._crit_edge, label %.lr.ph + %.not34 = icmp eq ptr %51, %52 + br i1 %.not34, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %47 %53 = icmp eq i64 %49, 0 @@ -14174,7 +14174,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 call void @llvm.lifetime.end.p0(ptr nonnull %8) br i1 %53, label %65, label %54 -54: ; preds = %.thread32, %._crit_edge +54: ; preds = %.thread31, %._crit_edge call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 32, ptr %4, align 1, !tbaa !13 %55 = load ptr, ptr %1, align 8, !tbaa !26 diff --git a/bench/libquic/optimized/pem_info.ll b/bench/libquic/optimized/pem_info.ll index 01b8bfff7ba..e97b44474b5 100644 --- a/bench/libquic/optimized/pem_info.ll +++ b/bench/libquic/optimized/pem_info.ll @@ -77,58 +77,58 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %.1 = phi ptr [ %13, %12 ], [ %1, %4 ] %17 = tail call ptr @X509_INFO_new() #5 %18 = icmp eq ptr %17, null - br i1 %18, label %.preheader, label %.preheader179 + br i1 %18, label %.preheader, label %.preheader170 -.preheader179: ; preds = %16 +.preheader170: ; preds = %16 %19 = call i32 @PEM_read_bio(ptr noundef %0, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %9) #5 %20 = icmp eq i32 %19, 0 - br i1 %20, label %._crit_edge, label %.preheader178.outer + br i1 %20, label %._crit_edge, label %.preheader169.outer -._crit_edge: ; preds = %156, %.preheader179 - %.178.lcssa = phi ptr [ %17, %.preheader179 ], [ %.279.ph, %156 ] +._crit_edge: ; preds = %156, %.preheader170 + %.178.lcssa = phi ptr [ %17, %.preheader170 ], [ %.279.ph, %156 ] %21 = call i32 @ERR_peek_last_error() #5 %22 = and i32 %21, 4095 %23 = icmp eq i32 %22, 110 - br i1 %23, label %24, label %.thread155 + br i1 %23, label %24, label %.thread152 24: ; preds = %._crit_edge call void @ERR_clear_error() #5 %25 = load ptr, ptr %.178.lcssa, align 8, !tbaa !11 - %.not126 = icmp eq ptr %25, null - br i1 %.not126, label %159, label %168 + %.not125 = icmp eq ptr %25, null + br i1 %.not125, label %159, label %168 -.preheader178: ; preds = %.preheader178.outer, %156 +.preheader169: ; preds = %.preheader169.outer, %156 %26 = load ptr, ptr %5, align 8, !tbaa !6 %27 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(12) @.str.1) #6 %28 = icmp eq i32 %27, 0 br i1 %28, label %32, label %29 -29: ; preds = %.preheader178 +29: ; preds = %.preheader169 %30 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(17) @.str.2) #6 %31 = icmp eq i32 %30, 0 br i1 %31, label %32, label %56 -32: ; preds = %29, %.preheader178 +32: ; preds = %29, %.preheader169 %33 = load ptr, ptr %.279.ph, align 8, !tbaa !11 %.not114 = icmp eq ptr %33, null br i1 %.not114, label %.thread, label %34 34: ; preds = %32 %35 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 - %.not125 = icmp eq i64 %35, 0 - br i1 %.not125, label %.thread155, label %36 + %.not124 = icmp eq i64 %35, 0 + br i1 %.not124, label %.thread152, label %36 36: ; preds = %34 %37 = call ptr @X509_INFO_new() #5 %38 = icmp eq ptr %37, null - br i1 %38, label %.preheader, label %.preheader178.outer.backedge + br i1 %38, label %.preheader, label %.preheader169.outer.backedge -.preheader178.outer.backedge: ; preds = %36, %63, %73, %83, %100, %117 +.preheader169.outer.backedge: ; preds = %36, %63, %73, %83, %100, %117 %.279.ph.be = phi ptr [ %118, %117 ], [ %101, %100 ], [ %84, %83 ], [ %74, %73 ], [ %64, %63 ], [ %37, %36 ] - br label %.preheader178.outer + br label %.preheader169.outer -.preheader178.outer: ; preds = %.preheader179, %.preheader178.outer.backedge - %.279.ph = phi ptr [ %.279.ph.be, %.preheader178.outer.backedge ], [ %17, %.preheader179 ] +.preheader169.outer: ; preds = %.preheader170, %.preheader169.outer.backedge + %.279.ph = phi ptr [ %.279.ph.be, %.preheader169.outer.backedge ], [ %17, %.preheader170 ] %39 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 16 %40 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 16 %41 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 56 @@ -146,7 +146,7 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %53 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 48 %54 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 8 %55 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 8 - br label %.preheader178 + br label %.preheader169 56: ; preds = %29 %57 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(20) @.str.3) #6 @@ -161,12 +161,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 61: ; preds = %59 %62 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not113 = icmp eq i64 %62, 0 - br i1 %.not113, label %.thread155, label %63 + br i1 %.not113, label %.thread152, label %63 63: ; preds = %61 %64 = call ptr @X509_INFO_new() #5 %65 = icmp eq ptr %64, null - br i1 %65, label %.preheader, label %.preheader178.outer.backedge + br i1 %65, label %.preheader, label %.preheader169.outer.backedge 66: ; preds = %56 %67 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(9) @.str.4) #6 @@ -181,12 +181,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 71: ; preds = %69 %72 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not111 = icmp eq i64 %72, 0 - br i1 %.not111, label %.thread155, label %73 + br i1 %.not111, label %.thread152, label %73 73: ; preds = %71 %74 = call ptr @X509_INFO_new() #5 %75 = icmp eq ptr %74, null - br i1 %75, label %.preheader, label %.preheader178.outer.backedge + br i1 %75, label %.preheader, label %.preheader169.outer.backedge 76: ; preds = %66 %77 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(16) @.str.5) #6 @@ -201,12 +201,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 81: ; preds = %79 %82 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not109 = icmp eq i64 %82, 0 - br i1 %.not109, label %.thread155, label %83 + br i1 %.not109, label %.thread152, label %83 83: ; preds = %81 %84 = call ptr @X509_INFO_new() #5 %85 = icmp eq ptr %84, null - br i1 %85, label %.preheader, label %.preheader178.outer.backedge + br i1 %85, label %.preheader, label %.preheader169.outer.backedge 86: ; preds = %79 store ptr null, ptr %49, align 8, !tbaa !21 @@ -217,8 +217,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %89 = load ptr, ptr %6, align 8, !tbaa !6 %90 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %89) #6 %91 = trunc i64 %90 to i32 - %92 = icmp slt i32 %91, 11 - br i1 %92, label %.thread, label %141 + %92 = icmp sgt i32 %91, 10 + br i1 %92, label %141, label %.thread 93: ; preds = %76 %94 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(16) @.str.6) #6 @@ -233,12 +233,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 98: ; preds = %96 %99 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not107 = icmp eq i64 %99, 0 - br i1 %.not107, label %.thread155, label %100 + br i1 %.not107, label %.thread152, label %100 100: ; preds = %98 %101 = call ptr @X509_INFO_new() #5 %102 = icmp eq ptr %101, null - br i1 %102, label %.preheader, label %.preheader178.outer.backedge + br i1 %102, label %.preheader, label %.preheader169.outer.backedge 103: ; preds = %96 store ptr null, ptr %45, align 8, !tbaa !21 @@ -249,8 +249,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %106 = load ptr, ptr %6, align 8, !tbaa !6 %107 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %106) #6 %108 = trunc i64 %107 to i32 - %109 = icmp slt i32 %108, 11 - br i1 %109, label %.thread, label %141 + %109 = icmp sgt i32 %108, 10 + br i1 %109, label %141, label %.thread 110: ; preds = %93 %111 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(15) @.str.7) #6 @@ -265,12 +265,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 115: ; preds = %113 %116 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not105 = icmp eq i64 %116, 0 - br i1 %.not105, label %.thread155, label %117 + br i1 %.not105, label %.thread152, label %117 117: ; preds = %115 %118 = call ptr @X509_INFO_new() #5 %119 = icmp eq ptr %118, null - br i1 %119, label %.preheader, label %.preheader178.outer.backedge + br i1 %119, label %.preheader, label %.preheader169.outer.backedge 120: ; preds = %113 store ptr null, ptr %41, align 8, !tbaa !21 @@ -281,50 +281,51 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %123 = load ptr, ptr %6, align 8, !tbaa !6 %124 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %123) #6 %125 = trunc i64 %124 to i32 - %126 = icmp slt i32 %125, 11 - br i1 %126, label %.thread, label %141 + %126 = icmp sgt i32 %125, 10 + br i1 %126, label %141, label %.thread .thread: ; preds = %69, %59, %32, %103, %86, %120 - %.070150 = phi ptr [ @d2i_ECPrivateKey, %120 ], [ @d2i_RSAPrivateKey, %86 ], [ @d2i_DSAPrivateKey, %103 ], [ @d2i_X509, %32 ], [ @d2i_X509_AUX, %59 ], [ @d2i_X509_CRL, %69 ] - %.071149 = phi i32 [ 408, %120 ], [ 6, %86 ], [ 116, %103 ], [ 0, %32 ], [ 0, %59 ], [ 0, %69 ] - %.not119148 = phi i1 [ false, %120 ], [ false, %86 ], [ false, %103 ], [ true, %32 ], [ true, %59 ], [ true, %69 ] - %.076147 = phi ptr [ %122, %120 ], [ %88, %86 ], [ %105, %103 ], [ %.279.ph, %32 ], [ %.279.ph, %59 ], [ %55, %69 ] + %.070147 = phi ptr [ @d2i_ECPrivateKey, %120 ], [ @d2i_RSAPrivateKey, %86 ], [ @d2i_DSAPrivateKey, %103 ], [ @d2i_X509, %32 ], [ @d2i_X509_AUX, %59 ], [ @d2i_X509_CRL, %69 ] + %.071146 = phi i32 [ 408, %120 ], [ 6, %86 ], [ 116, %103 ], [ 0, %32 ], [ 0, %59 ], [ 0, %69 ] + %.not118145 = phi i1 [ false, %120 ], [ false, %86 ], [ false, %103 ], [ true, %32 ], [ true, %59 ], [ true, %69 ] + %.076144 = phi ptr [ %122, %120 ], [ %88, %86 ], [ %105, %103 ], [ %.279.ph, %32 ], [ %.279.ph, %59 ], [ %55, %69 ] call void @llvm.lifetime.start.p0(ptr nonnull %10) %127 = load ptr, ptr %6, align 8, !tbaa !6 %128 = call i32 @PEM_get_EVP_CIPHER_INFO(ptr noundef %127, ptr noundef nonnull %10) #5 - %.not117 = icmp eq i32 %128, 0 - br i1 %.not117, label %.thread152, label %129 + %.not116 = icmp eq i32 %128, 0 + br i1 %.not116, label %.thread149, label %129 129: ; preds = %.thread %130 = load ptr, ptr %7, align 8, !tbaa !6 %131 = call i32 @PEM_do_header(ptr noundef nonnull %10, ptr noundef %130, ptr noundef nonnull %9, ptr noundef %2, ptr noundef %3) #5 - %.not118 = icmp eq i32 %131, 0 - br i1 %.not118, label %.thread152, label %132 + %.not117 = icmp eq i32 %131, 0 + br i1 %.not117, label %.thread149, label %132 132: ; preds = %129 %133 = load ptr, ptr %7, align 8, !tbaa !6 store ptr %133, ptr %8, align 8, !tbaa !6 %134 = load i64, ptr %9, align 8, !tbaa !23 - br i1 %.not119148, label %137, label %135 + br i1 %.not118145, label %137, label %135 135: ; preds = %132 - %136 = call ptr @d2i_PrivateKey(i32 noundef %.071149, ptr noundef nonnull %.076147, ptr noundef nonnull %8, i64 noundef %134) #5 - %.not120 = icmp eq ptr %136, null - br i1 %.not120, label %.thread152.sink.split, label %140 + %136 = call ptr @d2i_PrivateKey(i32 noundef %.071146, ptr noundef nonnull %.076144, ptr noundef nonnull %8, i64 noundef %134) #5 + %.not119 = icmp eq ptr %136, null + br i1 %.not119, label %.thread149.sink.split, label %140 137: ; preds = %132 - %138 = call ptr %.070150(ptr noundef nonnull %.076147, ptr noundef nonnull %8, i64 noundef %134) #5 + %138 = call ptr %.070147(ptr noundef nonnull %.076144, ptr noundef nonnull %8, i64 noundef %134) #5 %139 = icmp eq ptr %138, null - br i1 %139, label %.thread152.sink.split, label %140 + br i1 %139, label %.thread149.sink.split, label %140 -.thread152.sink.split: ; preds = %137, %135 +.thread149.sink.split: ; preds = %137, %135 %.sink = phi i32 [ 234, %135 ], [ 238, %137 ] call void @ERR_put_error(i32 noundef 9, i32 noundef 0, i32 noundef 12, ptr noundef nonnull @.str, i32 noundef %.sink) #5 - br label %.thread152 + br label %.thread149 -.thread152: ; preds = %.thread, %129, %.thread152.sink.split +.thread149: ; preds = %.thread, %129, %.thread149.sink.split call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %.thread155 + call void @X509_INFO_free(ptr noundef nonnull %.279.ph) #5 + br label %.preheader 140: ; preds = %135, %137 call void @llvm.lifetime.end.p0(ptr nonnull %10) @@ -333,8 +334,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 141: ; preds = %103, %86, %120 %142 = phi ptr [ %106, %103 ], [ %89, %86 ], [ %123, %120 ] %143 = call i32 @PEM_get_EVP_CIPHER_INFO(ptr noundef nonnull %142, ptr noundef nonnull %51) #5 - %.not121 = icmp eq i32 %143, 0 - br i1 %.not121, label %.thread155, label %144 + %.not120 = icmp eq i32 %143, 0 + br i1 %.not120, label %.thread152, label %144 144: ; preds = %141 %145 = load ptr, ptr %7, align 8, !tbaa !6 @@ -347,8 +348,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no .critedge: ; preds = %110, %140, %144 %148 = load ptr, ptr %5, align 8, !tbaa !6 - %.not122 = icmp eq ptr %148, null - br i1 %.not122, label %150, label %149 + %.not121 = icmp eq ptr %148, null + br i1 %.not121, label %150, label %149 149: ; preds = %.critedge call void @free(ptr noundef nonnull %148) #5 @@ -356,8 +357,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 150: ; preds = %149, %.critedge %151 = load ptr, ptr %6, align 8, !tbaa !6 - %.not123 = icmp eq ptr %151, null - br i1 %.not123, label %153, label %152 + %.not122 = icmp eq ptr %151, null + br i1 %.not122, label %153, label %152 152: ; preds = %150 call void @free(ptr noundef nonnull %151) #5 @@ -365,8 +366,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 153: ; preds = %152, %150 %154 = load ptr, ptr %7, align 8, !tbaa !6 - %.not124 = icmp eq ptr %154, null - br i1 %.not124, label %156, label %155 + %.not123 = icmp eq ptr %154, null + br i1 %.not123, label %156, label %155 155: ; preds = %153 call void @free(ptr noundef nonnull %154) #5 @@ -378,79 +379,79 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no store ptr null, ptr %7, align 8, !tbaa !6 %157 = call i32 @PEM_read_bio(ptr noundef %0, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %9) #5 %158 = icmp eq i32 %157, 0 - br i1 %158, label %._crit_edge, label %.preheader178 + br i1 %158, label %._crit_edge, label %.preheader169 159: ; preds = %24 %160 = getelementptr inbounds nuw i8, ptr %.178.lcssa, i64 8 %161 = load ptr, ptr %160, align 8, !tbaa !19 - %.not127 = icmp eq ptr %161, null - br i1 %.not127, label %162, label %168 + %.not126 = icmp eq ptr %161, null + br i1 %.not126, label %162, label %168 162: ; preds = %159 %163 = getelementptr inbounds nuw i8, ptr %.178.lcssa, i64 16 %164 = load ptr, ptr %163, align 8, !tbaa !20 - %.not128 = icmp eq ptr %164, null - br i1 %.not128, label %165, label %168 + %.not127 = icmp eq ptr %164, null + br i1 %.not127, label %165, label %168 165: ; preds = %162 %166 = getelementptr inbounds nuw i8, ptr %.178.lcssa, i64 56 %167 = load ptr, ptr %166, align 8, !tbaa !21 - %.not129 = icmp eq ptr %167, null - br i1 %.not129, label %.thread155.thread, label %168 + %.not128 = icmp eq ptr %167, null + br i1 %.not128, label %.thread152.thread, label %168 -.thread155.thread: ; preds = %165 +.thread152.thread: ; preds = %165 call void @X509_INFO_free(ptr noundef nonnull %.178.lcssa) #5 - br label %.thread167.thread + br label %.critedge168 168: ; preds = %165, %162, %159, %24 %169 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.178.lcssa) #5 - %.not130 = icmp eq i64 %169, 0 - br i1 %.not130, label %.thread155, label %.thread167.thread + %.not129 = icmp eq i64 %169, 0 + br i1 %.not129, label %.thread152, label %.critedge168 -.thread155: ; preds = %141, %115, %98, %81, %71, %61, %34, %._crit_edge, %168, %.thread152 - %.077160 = phi ptr [ %.279.ph, %.thread152 ], [ %.178.lcssa, %168 ], [ %.178.lcssa, %._crit_edge ], [ %.279.ph, %34 ], [ %.279.ph, %61 ], [ %.279.ph, %71 ], [ %.279.ph, %81 ], [ %.279.ph, %98 ], [ %.279.ph, %115 ], [ %.279.ph, %141 ] - call void @X509_INFO_free(ptr noundef nonnull %.077160) #5 +.thread152: ; preds = %141, %115, %98, %81, %71, %61, %34, %._crit_edge, %168 + %.077156 = phi ptr [ %.178.lcssa, %168 ], [ %.178.lcssa, %._crit_edge ], [ %.279.ph, %34 ], [ %.279.ph, %61 ], [ %.279.ph, %71 ], [ %.279.ph, %81 ], [ %.279.ph, %98 ], [ %.279.ph, %115 ], [ %.279.ph, %141 ] + call void @X509_INFO_free(ptr noundef nonnull %.077156) #5 br label %.preheader -.preheader: ; preds = %117, %100, %83, %73, %63, %36, %16, %15, %.thread155 - %.074164172.ph = phi ptr [ %.1, %.thread155 ], [ %.1, %16 ], [ null, %15 ], [ %.1, %36 ], [ %.1, %63 ], [ %.1, %73 ], [ %.1, %83 ], [ %.1, %100 ], [ %.1, %117 ] - %170 = call i64 @sk_num(ptr noundef %.074164172.ph) #5 - %.not216 = icmp eq i64 %170, 0 - br i1 %.not216, label %._crit_edge215, label %.lr.ph +.preheader: ; preds = %117, %100, %83, %73, %63, %36, %16, %15, %.thread149, %.thread152 + %.074158165.ph = phi ptr [ %.1, %.thread149 ], [ null, %15 ], [ %.1, %.thread152 ], [ %.1, %16 ], [ %.1, %36 ], [ %.1, %63 ], [ %.1, %73 ], [ %.1, %83 ], [ %.1, %100 ], [ %.1, %117 ] + %170 = call i64 @sk_num(ptr noundef %.074158165.ph) #5 + %.not207 = icmp eq i64 %170, 0 + br i1 %.not207, label %._crit_edge206, label %.lr.ph .lr.ph: ; preds = %.preheader, %.lr.ph %171 = phi i64 [ %174, %.lr.ph ], [ 0, %.preheader ] - %.073214 = phi i32 [ %173, %.lr.ph ], [ 0, %.preheader ] - %172 = call ptr @sk_value(ptr noundef %.074164172.ph, i64 noundef %171) #5 + %.073205 = phi i32 [ %173, %.lr.ph ], [ 0, %.preheader ] + %172 = call ptr @sk_value(ptr noundef %.074158165.ph, i64 noundef %171) #5 call void @X509_INFO_free(ptr noundef %172) #5 - %173 = add i32 %.073214, 1 + %173 = add i32 %.073205, 1 %174 = zext i32 %173 to i64 - %175 = call i64 @sk_num(ptr noundef %.074164172.ph) #5 + %175 = call i64 @sk_num(ptr noundef %.074158165.ph) #5 %176 = icmp ugt i64 %175, %174 - br i1 %176, label %.lr.ph, label %._crit_edge215, !llvm.loop !25 + br i1 %176, label %.lr.ph, label %._crit_edge206, !llvm.loop !25 -._crit_edge215: ; preds = %.lr.ph, %.preheader - %.not133 = icmp eq ptr %.074164172.ph, %1 - br i1 %.not133, label %.thread167.thread, label %177 +._crit_edge206: ; preds = %.lr.ph, %.preheader + %.not131 = icmp eq ptr %.074158165.ph, %1 + br i1 %.not131, label %.critedge168, label %177 -177: ; preds = %._crit_edge215 - call void @sk_free(ptr noundef %.074164172.ph) #5 - br label %.thread167.thread +177: ; preds = %._crit_edge206 + call void @sk_free(ptr noundef %.074158165.ph) #5 + br label %.critedge168 -.thread167.thread: ; preds = %168, %.thread155.thread, %._crit_edge215, %177 - %.2 = phi ptr [ null, %177 ], [ null, %._crit_edge215 ], [ %.1, %.thread155.thread ], [ %.1, %168 ] +.critedge168: ; preds = %168, %.thread152.thread, %._crit_edge206, %177 + %.2 = phi ptr [ null, %177 ], [ null, %._crit_edge206 ], [ %.1, %.thread152.thread ], [ %.1, %168 ] %178 = load ptr, ptr %5, align 8, !tbaa !6 - %.not134 = icmp eq ptr %178, null - br i1 %.not134, label %180, label %179 + %.not132 = icmp eq ptr %178, null + br i1 %.not132, label %180, label %179 -179: ; preds = %.thread167.thread +179: ; preds = %.critedge168 call void @free(ptr noundef nonnull %178) #5 br label %180 -180: ; preds = %179, %.thread167.thread +180: ; preds = %179, %.critedge168 %181 = load ptr, ptr %6, align 8, !tbaa !6 - %.not135 = icmp eq ptr %181, null - br i1 %.not135, label %183, label %182 + %.not133 = icmp eq ptr %181, null + br i1 %.not133, label %183, label %182 182: ; preds = %180 call void @free(ptr noundef nonnull %181) #5 @@ -458,8 +459,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 183: ; preds = %182, %180 %184 = load ptr, ptr %7, align 8, !tbaa !6 - %.not136 = icmp eq ptr %184, null - br i1 %.not136, label %186, label %185 + %.not134 = icmp eq ptr %184, null + br i1 %.not134, label %186, label %185 185: ; preds = %183 call void @free(ptr noundef nonnull %184) #5 diff --git a/bench/libwebp/optimized/filters.ll b/bench/libwebp/optimized/filters.ll index d565e480552..992b3c41452 100644 --- a/bench/libwebp/optimized/filters.ll +++ b/bench/libwebp/optimized/filters.ll @@ -15,7 +15,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define hidden void @VP8FiltersInit() local_unnamed_addr #0 { - %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #9 + %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #8 %.not = icmp eq i32 %1, 0 br i1 %.not, label %2, label %11 @@ -38,18 +38,18 @@ define hidden void @VP8FiltersInit() local_unnamed_addr #0 { br i1 %.not.i, label %VP8FiltersInit_body.exit, label %6 6: ; preds = %5 - %7 = tail call i32 %4(i32 noundef 0) #9 + %7 = tail call i32 %4(i32 noundef 0) #8 %.not1.i = icmp eq i32 %7, 0 br i1 %.not1.i, label %VP8FiltersInit_body.exit, label %8 8: ; preds = %6 - tail call void @VP8FiltersInitSSE2() #9 + tail call void @VP8FiltersInitSSE2() #8 br label %VP8FiltersInit_body.exit VP8FiltersInit_body.exit: ; preds = %8, %6, %5, %2 %9 = load ptr, ptr @VP8GetCPUInfo, align 8, !tbaa !3 store volatile ptr %9, ptr @VP8FiltersInit.VP8FiltersInit_body_last_cpuinfo_used, align 8, !tbaa !3 - %10 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #9 + %10 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #8 br label %11 11: ; preds = %0, %VP8FiltersInit_body.exit @@ -194,7 +194,7 @@ define internal void @GradientUnfilter_C(ptr noundef readonly captures(address_i .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %.02025 = phi i8 [ %13, %.lr.ph.preheader ], [ %26, %.lr.ph ] + %.02025 = phi i8 [ %13, %.lr.ph.preheader ], [ %28, %.lr.ph ] %.02124 = phi i8 [ %13, %.lr.ph.preheader ], [ %15, %.lr.ph ] %14 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv %15 = load i8, ptr %14, align 1, !tbaa !7 @@ -205,12 +205,14 @@ define internal void @GradientUnfilter_C(ptr noundef readonly captures(address_i %20 = zext i8 %.02124 to i32 %21 = sub nsw i32 %18, %20 %22 = add nsw i32 %21, %19 - %23 = tail call i32 @llvm.smax.i32(i32 %22, i32 0) - %24 = tail call range(i32 0, 256) i32 @llvm.umin.i32(i32 %23, i32 255) - %25 = trunc nuw i32 %24 to i8 - %26 = add i8 %17, %25 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv - store i8 %26, ptr %27, align 1, !tbaa !7 + %23 = icmp ult i32 %22, 256 + %24 = icmp ugt i32 %22, -256 + %25 = select i1 %24, i32 -256, i32 255 + %26 = select i1 %23, i32 %22, i32 %25 + %27 = trunc i32 %26 to i8 + %28 = add i8 %17, %27 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 %indvars.iv + store i8 %28, ptr %29, align 1, !tbaa !7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %HorizontalUnfilter_C.exit, label %.lr.ph, !llvm.loop !11 @@ -452,7 +454,7 @@ PredictLine_C.exit.thread.i: ; preds = %5 %21 = phi i8 [ %22, %PredictLine_C.exit50._crit_edge.us.i ], [ %6, %.lr.ph57.i ] %.04456.us.pn.i = phi ptr [ %.04456.us.i, %PredictLine_C.exit50._crit_edge.us.i ], [ %4, %.lr.ph57.i ] %.055.us.pn.i = phi ptr [ %.055.us.i, %PredictLine_C.exit50._crit_edge.us.i ], [ %0, %.lr.ph57.i ] - %.04254.us.i = phi i32 [ %42, %PredictLine_C.exit50._crit_edge.us.i ], [ 1, %.lr.ph57.i ] + %.04254.us.i = phi i32 [ %44, %PredictLine_C.exit50._crit_edge.us.i ], [ 1, %.lr.ph57.i ] %.055.us.i = getelementptr i8, ptr %.055.us.pn.i, i64 %17 %.04456.us.i = getelementptr inbounds i8, ptr %.04456.us.pn.i, i64 %17 tail call void @llvm.experimental.noalias.scope.decl(metadata !105) @@ -476,36 +478,38 @@ PredictLine_C.exit50.us.i: ; preds = %PredictLine_C.exit5 %33 = add nuw nsw i32 %32, %31 %34 = zext i8 %30 to i32 %35 = sub nsw i32 %33, %34 - %36 = tail call i32 @llvm.smax.i32(i32 %35, i32 0) - %37 = tail call range(i32 0, 256) i32 @llvm.umin.i32(i32 %36, i32 255) - %38 = load i8, ptr %24, align 1, !tbaa !7, !alias.scope !87, !noalias !90 - %39 = trunc nuw i32 %37 to i8 - %40 = sub i8 %38, %39 - %41 = getelementptr inbounds nuw i8, ptr %.04456.us.i, i64 %indvars.iv.i - store i8 %40, ptr %41, align 1, !tbaa !7, !alias.scope !90, !noalias !87 + %36 = icmp ult i32 %35, 256 + %37 = icmp ugt i32 %35, -256 + %38 = select i1 %37, i32 -256, i32 255 + %39 = select i1 %36, i32 %35, i32 %38 + %40 = load i8, ptr %24, align 1, !tbaa !7, !alias.scope !87, !noalias !90 + %41 = trunc i32 %39 to i8 + %42 = sub i8 %40, %41 + %43 = getelementptr inbounds nuw i8, ptr %.04456.us.i, i64 %indvars.iv.i + store i8 %42, ptr %43, align 1, !tbaa !7, !alias.scope !90, !noalias !87 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond60.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond60.not.i, label %PredictLine_C.exit50._crit_edge.us.i, label %PredictLine_C.exit50.us.i, !llvm.loop !115 PredictLine_C.exit50._crit_edge.us.i: ; preds = %PredictLine_C.exit50.us.i - %42 = add nuw nsw i32 %.04254.us.i, 1 - %exitcond61.not.i = icmp eq i32 %42, %2 + %44 = add nuw nsw i32 %.04254.us.i, 1 + %exitcond61.not.i = icmp eq i32 %44, %2 br i1 %exitcond61.not.i, label %DoGradientFilter_C.exit, label %.lr.ph57.split.us.i, !llvm.loop !116 .lr.ph57.split.i: ; preds = %.lr.ph57.split.i, %.lr.ph57.thread.i - %43 = phi i8 [ %44, %.lr.ph57.split.i ], [ %6, %.lr.ph57.thread.i ] + %45 = phi i8 [ %46, %.lr.ph57.split.i ], [ %6, %.lr.ph57.thread.i ] %.04456.i.pn = phi ptr [ %.04456.i, %.lr.ph57.split.i ], [ %4, %.lr.ph57.thread.i ] %.055.i.pn = phi ptr [ %.055.i, %.lr.ph57.split.i ], [ %0, %.lr.ph57.thread.i ] - %.04254.i = phi i32 [ %46, %.lr.ph57.split.i ], [ 1, %.lr.ph57.thread.i ] + %.04254.i = phi i32 [ %48, %.lr.ph57.split.i ], [ 1, %.lr.ph57.thread.i ] %.055.i = getelementptr i8, ptr %.055.i.pn, i64 %20 %.04456.i = getelementptr inbounds i8, ptr %.04456.i.pn, i64 %20 tail call void @llvm.experimental.noalias.scope.decl(metadata !105) tail call void @llvm.experimental.noalias.scope.decl(metadata !108) - %44 = load i8, ptr %.055.i, align 1, !tbaa !7, !alias.scope !110, !noalias !111 - %45 = sub i8 %44, %43 - store i8 %45, ptr %.04456.i, align 1, !tbaa !7, !alias.scope !113, !noalias !114 - %46 = add nuw nsw i32 %.04254.i, 1 - %exitcond.not.i = icmp eq i32 %46, %2 + %46 = load i8, ptr %.055.i, align 1, !tbaa !7, !alias.scope !110, !noalias !111 + %47 = sub i8 %46, %45 + store i8 %47, ptr %.04456.i, align 1, !tbaa !7, !alias.scope !113, !noalias !114 + %48 = add nuw nsw i32 %.04254.i, 1 + %exitcond.not.i = icmp eq i32 %48, %2 br i1 %exitcond.not.i, label %DoGradientFilter_C.exit, label %.lr.ph57.split.i, !llvm.loop !116 DoGradientFilter_C.exit: ; preds = %.lr.ph57.split.i, %PredictLine_C.exit50._crit_edge.us.i, %PredictLine_C.exit.i, %PredictLine_C.exit.thread.i @@ -517,14 +521,8 @@ declare void @VP8FiltersInitSSE2() local_unnamed_addr #5 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #6 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #7 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #7 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #8 +declare void @llvm.experimental.noalias.scope.decl(metadata) #7 attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -533,9 +531,8 @@ attributes #3 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwt attributes #4 = { nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #9 = { nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #8 = { nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/libwebp/optimized/filters_utils.ll b/bench/libwebp/optimized/filters_utils.ll index 779117fe039..a1341c2fce3 100644 --- a/bench/libwebp/optimized/filters_utils.ll +++ b/bench/libwebp/optimized/filters_utils.ll @@ -37,7 +37,7 @@ define hidden i32 @WebPEstimateBestFilter(ptr noundef readonly captures(none) %0 21: ; preds = %.lr.ph.us, %21 %indvars.iv = phi i64 [ 2, %.lr.ph.us ], [ %indvars.iv.next, %21 ] - %.06064.us = phi i32 [ %20, %.lr.ph.us ], [ %62, %21 ] + %.06064.us = phi i32 [ %20, %.lr.ph.us ], [ %64, %21 ] %22 = getelementptr inbounds nuw i8, ptr %18, i64 %indvars.iv %23 = load i8, ptr %22, align 1, !tbaa !3 %24 = zext i8 %23 to i32 @@ -62,69 +62,71 @@ define hidden i32 @WebPEstimateBestFilter(ptr noundef readonly captures(none) %0 %43 = add nuw nsw i32 %37, %30 %44 = zext i8 %42 to i32 %45 = sub nsw i32 %43, %44 - %46 = tail call i32 @llvm.smax.i32(i32 %45, i32 0) - %47 = tail call range(i32 0, 256) i32 @llvm.umin.i32(i32 %46, i32 255) - %48 = sub nsw i32 %24, %47 - %49 = tail call i32 @llvm.abs.i32(i32 %48, i1 true) - %50 = lshr i32 %49, 4 - %51 = zext nneg i32 %27 to i64 - %52 = getelementptr inbounds nuw i32, ptr %5, i64 %51 - store i32 1, ptr %52, align 4, !tbaa !6 - %53 = zext nneg i32 %33 to i64 - %54 = getelementptr inbounds nuw i32, ptr %9, i64 %53 + %46 = icmp ult i32 %45, 256 + %47 = icmp ugt i32 %45, -256 + %48 = select i1 %47, i32 0, i32 255 + %49 = select i1 %46, i32 %45, i32 %48 + %50 = sub nsw i32 %24, %49 + %51 = tail call i32 @llvm.abs.i32(i32 %50, i1 true) + %52 = lshr i32 %51, 4 + %53 = zext nneg i32 %27 to i64 + %54 = getelementptr inbounds nuw i32, ptr %5, i64 %53 store i32 1, ptr %54, align 4, !tbaa !6 - %55 = zext nneg i32 %40 to i64 - %56 = getelementptr inbounds nuw i32, ptr %10, i64 %55 + %55 = zext nneg i32 %33 to i64 + %56 = getelementptr inbounds nuw i32, ptr %9, i64 %55 store i32 1, ptr %56, align 4, !tbaa !6 - %57 = zext nneg i32 %50 to i64 - %58 = getelementptr inbounds nuw i32, ptr %11, i64 %57 + %57 = zext nneg i32 %40 to i64 + %58 = getelementptr inbounds nuw i32, ptr %10, i64 %57 store i32 1, ptr %58, align 4, !tbaa !6 - %59 = mul nuw nsw i32 %.06064.us, 3 - %60 = add nuw nsw i32 %59, 2 - %61 = add nuw nsw i32 %60, %24 - %62 = lshr i32 %61, 2 + %59 = zext nneg i32 %52 to i64 + %60 = getelementptr inbounds nuw i32, ptr %11, i64 %59 + store i32 1, ptr %60, align 4, !tbaa !6 + %61 = mul nuw nsw i32 %.06064.us, 3 + %62 = add nuw nsw i32 %61, 2 + %63 = add nuw nsw i32 %62, %24 + %64 = lshr i32 %63, 2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 - %63 = icmp samesign ult i64 %indvars.iv.next, %14 - br i1 %63, label %21, label %._crit_edge.us, !llvm.loop !8 + %65 = icmp samesign ult i64 %indvars.iv.next, %14 + br i1 %65, label %21, label %._crit_edge.us, !llvm.loop !8 ._crit_edge.us: ; preds = %21 %indvars.iv.next77 = add nuw nsw i64 %indvars.iv76, 2 - %64 = icmp samesign ult i64 %indvars.iv.next77, %16 - br i1 %64, label %.lr.ph.us, label %.preheader.preheader, !llvm.loop !10 + %66 = icmp samesign ult i64 %indvars.iv.next77, %16 + br i1 %66, label %.lr.ph.us, label %.preheader.preheader, !llvm.loop !10 .preheader.preheader: ; preds = %._crit_edge.us, %.lr.ph68, %4 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %72 - %indvars.iv82 = phi i64 [ %indvars.iv.next83, %72 ], [ 0, %.preheader.preheader ] - %.05273 = phi i32 [ %spec.select62, %72 ], [ 2147483647, %.preheader.preheader ] - %.05472 = phi i32 [ %spec.select61, %72 ], [ 0, %.preheader.preheader ] - %65 = getelementptr inbounds nuw [16 x i32], ptr %5, i64 %indvars.iv82 - br label %66 - -66: ; preds = %.preheader, %66 - %indvars.iv79 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next80, %66 ] - %.070 = phi i32 [ 0, %.preheader ], [ %spec.select, %66 ] - %67 = getelementptr inbounds nuw i32, ptr %65, i64 %indvars.iv79 - %68 = load i32, ptr %67, align 4, !tbaa !6 - %69 = icmp sgt i32 %68, 0 - %70 = trunc nuw nsw i64 %indvars.iv79 to i32 - %71 = select i1 %69, i32 %70, i32 0 - %spec.select = add nuw nsw i32 %71, %.070 +.preheader: ; preds = %.preheader.preheader, %74 + %indvars.iv82 = phi i64 [ %indvars.iv.next83, %74 ], [ 0, %.preheader.preheader ] + %.05273 = phi i32 [ %spec.select62, %74 ], [ 2147483647, %.preheader.preheader ] + %.05472 = phi i32 [ %spec.select61, %74 ], [ 0, %.preheader.preheader ] + %67 = getelementptr inbounds nuw [16 x i32], ptr %5, i64 %indvars.iv82 + br label %68 + +68: ; preds = %.preheader, %68 + %indvars.iv79 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next80, %68 ] + %.070 = phi i32 [ 0, %.preheader ], [ %spec.select, %68 ] + %69 = getelementptr inbounds nuw i32, ptr %67, i64 %indvars.iv79 + %70 = load i32, ptr %69, align 4, !tbaa !6 + %71 = icmp sgt i32 %70, 0 + %72 = trunc nuw nsw i64 %indvars.iv79 to i32 + %73 = select i1 %71, i32 %72, i32 0 + %spec.select = add nuw nsw i32 %73, %.070 %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next80, 16 - br i1 %exitcond.not, label %72, label %66, !llvm.loop !11 + %.not = icmp eq i64 %indvars.iv.next80, 16 + br i1 %.not, label %74, label %68, !llvm.loop !11 -72: ; preds = %66 - %73 = icmp slt i32 %spec.select, %.05273 - %74 = trunc nuw nsw i64 %indvars.iv82 to i32 - %spec.select61 = select i1 %73, i32 %74, i32 %.05472 +74: ; preds = %68 + %75 = icmp slt i32 %spec.select, %.05273 + %76 = trunc nuw nsw i64 %indvars.iv82 to i32 + %spec.select61 = select i1 %75, i32 %76, i32 %.05472 %spec.select62 = tail call i32 @llvm.smin.i32(i32 %spec.select, i32 %.05273) %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 - %exitcond85.not = icmp eq i64 %indvars.iv.next83, 4 - br i1 %exitcond85.not, label %75, label %.preheader, !llvm.loop !12 + %.not86 = icmp eq i64 %indvars.iv.next83, 4 + br i1 %.not86, label %77, label %.preheader, !llvm.loop !12 -75: ; preds = %72 +77: ; preds = %74 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %spec.select61 } @@ -141,15 +143,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #3 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #4 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #4 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #4 - attributes #0 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } diff --git a/bench/lief/optimized/MemoryStream.ll b/bench/lief/optimized/MemoryStream.ll index e556cad2ae0..326b967c20e 100644 --- a/bench/lief/optimized/MemoryStream.ll +++ b/bench/lief/optimized/MemoryStream.ll @@ -148,10 +148,12 @@ define linkonce_odr hidden i64 @_ZN4LIEF12BinaryStream9peek_dataERSt6vectorIhSaI %16 = load ptr, ptr %15, align 8 %17 = tail call noundef i64 %16(ptr noundef nonnull align 8 dereferenceable(24) %0) #9 %18 = icmp ule i64 %13, %17 - %19 = or i64 %3, %2 - %20 = or i64 %19, %13 - %21 = icmp sgt i64 %20, -1 - %spec.select = and i1 %21, %18 + %19 = icmp sgt i64 %2, -1 + %or.cond = and i1 %19, %18 + %20 = icmp sgt i64 %3, 0 + %or.cond3 = and i1 %20, %or.cond + %21 = icmp sgt i64 %13, -1 + %spec.select = and i1 %21, %or.cond3 br i1 %spec.select, label %22, label %.critedge 22: ; preds = %12 @@ -179,17 +181,17 @@ define linkonce_odr hidden i64 @_ZN4LIEF12BinaryStream9read_dataERSt6vectorIhSaI %8 = load ptr, ptr %7, align 8 %9 = tail call i64 %8(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %5, i64 noundef %2, i64 noundef 0) #9 %10 = and i64 %9, 4294967296 - %.not = icmp eq i64 %10, 0 - br i1 %.not, label %14, label %11 + %11 = icmp eq i64 %10, 0 + br i1 %11, label %15, label %12 -11: ; preds = %3 - %12 = load i64, ptr %4, align 8, !tbaa !3 - %13 = add i64 %12, %2 - store i64 %13, ptr %4, align 8, !tbaa !3 - br label %14 +12: ; preds = %3 + %13 = load i64, ptr %4, align 8, !tbaa !3 + %14 = add i64 %13, %2 + store i64 %14, ptr %4, align 8, !tbaa !3 + br label %15 -14: ; preds = %3, %11 - %.sroa.2.0 = phi i64 [ 4294967297, %11 ], [ 1, %3 ] +15: ; preds = %3, %12 + %.sroa.2.0 = phi i64 [ 4294967297, %12 ], [ 1, %3 ] ret i64 %.sroa.2.0 } diff --git a/bench/linux/optimized/cdrom.ll b/bench/linux/optimized/cdrom.ll index 75f7b8351a6..ab82cfee35d 100644 --- a/bench/linux/optimized/cdrom.ll +++ b/bench/linux/optimized/cdrom.ll @@ -4369,7 +4369,7 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_data(ptr noundef %0, ptr nounde %32 = zext i8 %26 to i32 %33 = add nsw i32 %32, -150 %34 = add nsw i32 %33, %31 - %35 = icmp slt i32 %34, 0 + %35 = icmp ugt i32 %34, -151 br i1 %35, label %125, label %36 36: ; preds = %21 @@ -4561,7 +4561,7 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_audio(ptr noundef %0, ptr nound call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %4, i8 0, i64 16, i1 false), !annotation !46 %12 = call i64 @_copy_from_user(ptr noundef nonnull %4, ptr noundef %1, i64 noundef 16) #17 %13 = icmp eq i64 %12, 0 - br i1 %13, label %14, label %130 + br i1 %13, label %14, label %126 14: ; preds = %11 %15 = load i32, ptr %4, align 4 @@ -4637,124 +4637,122 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_audio(ptr noundef %0, ptr nound %59 = getelementptr inbounds nuw i8, ptr %0, i64 92 %60 = load i32, ptr %59, align 4 %61 = icmp eq i32 %60, 0 - br i1 %61, label %92, label %62 + br i1 %61, label %88, label %62 62: ; preds = %56 %63 = getelementptr inbounds nuw i8, ptr %0, i64 24 %64 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %65 = icmp samesign ugt i32 %.fr7, 1 - br i1 %65, label %.split, label %.split.us + %.not = icmp eq i32 %.fr7, 1 + br i1 %.not, label %.split.us, label %.split .split.us: ; preds = %62 - %66 = load ptr, ptr %63, align 8 - %67 = getelementptr inbounds nuw i8, ptr %66, i64 80 - %68 = load ptr, ptr %67, align 8 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 156 - %70 = load i32, ptr %69, align 4 - %71 = shl i32 %70, 9 - %72 = udiv i32 %71, 2352 + %65 = load ptr, ptr %63, align 8 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 80 + %67 = load ptr, ptr %66, align 8 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 156 + %69 = load i32, ptr %68, align 4 + %70 = shl i32 %69, 9 + %71 = udiv i32 %70, 2352 store i8 0, ptr %64, align 8 + %72 = call i32 @llvm.smin.i32(i32 %71, i32 1) br label %73 -73: ; preds = %85, %.split.us - %74 = phi ptr [ %90, %85 ], [ %58, %.split.us ] - %75 = phi i32 [ %87, %85 ], [ %49, %.split.us ] - %76 = phi i32 [ %86, %85 ], [ 1, %.split.us ] - %77 = load i32, ptr %59, align 4 - %78 = icmp eq i32 %77, 1 - %79 = call i32 @llvm.smin.i32(i32 %76, i32 %72) - %80 = select i1 %78, i32 1, i32 %79 - %81 = load ptr, ptr %0, align 8 - %82 = getelementptr inbounds nuw i8, ptr %81, i64 96 - %83 = load ptr, ptr %82, align 8 - %84 = call i32 %83(ptr noundef %0, ptr noundef %74, i32 noundef %75, i32 noundef %80, ptr noundef nonnull %64) #17 - switch i32 %84, label %.thread [ - i32 0, label %85 +73: ; preds = %83, %.split.us + %74 = phi ptr [ %87, %83 ], [ %58, %.split.us ] + %75 = phi i32 [ %84, %83 ], [ %49, %.split.us ] + %76 = load i32, ptr %59, align 4 + %77 = icmp eq i32 %76, 1 + %78 = select i1 %77, i32 1, i32 %72 + %79 = load ptr, ptr %0, align 8 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 96 + %81 = load ptr, ptr %80, align 8 + %82 = call i32 %81(ptr noundef %0, ptr noundef %74, i32 noundef %75, i32 noundef %78, ptr noundef nonnull %64) #17 + switch i32 %82, label %.thread [ + i32 0, label %83 i32 -5, label %.split6.us ] -85: ; preds = %73 - %86 = sub i32 %76, %80 - %87 = add i32 %80, %75 - %88 = mul i32 %80, 2352 - %89 = sext i32 %88 to i64 - %90 = getelementptr i8, ptr %74, i64 %89 - %91 = icmp eq i32 %86, 0 - br i1 %91, label %.thread, label %73, !llvm.loop !51 - -92: ; preds = %56 - %93 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) +83: ; preds = %73 + %84 = add nuw nsw i32 %78, %75 + %85 = mul nuw nsw i32 %78, 2352 + %86 = zext nneg i32 %85 to i64 + %87 = getelementptr i8, ptr %74, i64 %86 + %.not13 = icmp eq i32 %78, 0 + br i1 %.not13, label %73, label %.thread, !llvm.loop !51 + +88: ; preds = %56 + %89 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) br label %.thread -.split: ; preds = %62, %123 - %94 = load ptr, ptr %63, align 8 - %95 = getelementptr inbounds nuw i8, ptr %94, i64 80 - %96 = load ptr, ptr %95, align 8 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 156 - %98 = load i32, ptr %97, align 4 - %99 = shl i32 %98, 9 - %100 = udiv i32 %99, 2352 +.split: ; preds = %62, %119 + %90 = load ptr, ptr %63, align 8 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 80 + %92 = load ptr, ptr %91, align 8 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 156 + %94 = load i32, ptr %93, align 4 + %95 = shl i32 %94, 9 + %96 = udiv i32 %95, 2352 store i8 0, ptr %64, align 8 - br label %101 - -101: ; preds = %.split, %113 - %102 = phi ptr [ %118, %113 ], [ %58, %.split ] - %103 = phi i32 [ %115, %113 ], [ %49, %.split ] - %104 = phi i32 [ %114, %113 ], [ %.fr7, %.split ] - %105 = load i32, ptr %59, align 4 - %106 = icmp eq i32 %105, 1 - %107 = call i32 @llvm.smin.i32(i32 %104, i32 %100) - %108 = select i1 %106, i32 1, i32 %107 - %109 = load ptr, ptr %0, align 8 - %110 = getelementptr inbounds nuw i8, ptr %109, i64 96 - %111 = load ptr, ptr %110, align 8 - %112 = call i32 %111(ptr noundef %0, ptr noundef %102, i32 noundef %103, i32 noundef %108, ptr noundef nonnull %64) #17 - switch i32 %112, label %.thread [ - i32 0, label %113 - i32 -5, label %120 + br label %97 + +97: ; preds = %.split, %109 + %98 = phi ptr [ %114, %109 ], [ %58, %.split ] + %99 = phi i32 [ %111, %109 ], [ %49, %.split ] + %100 = phi i32 [ %110, %109 ], [ %.fr7, %.split ] + %101 = load i32, ptr %59, align 4 + %102 = icmp eq i32 %101, 1 + %103 = call i32 @llvm.smin.i32(i32 %100, i32 %96) + %104 = select i1 %102, i32 1, i32 %103 + %105 = load ptr, ptr %0, align 8 + %106 = getelementptr inbounds nuw i8, ptr %105, i64 96 + %107 = load ptr, ptr %106, align 8 + %108 = call i32 %107(ptr noundef %0, ptr noundef %98, i32 noundef %99, i32 noundef %104, ptr noundef nonnull %64) #17 + switch i32 %108, label %.thread [ + i32 0, label %109 + i32 -5, label %116 ] -113: ; preds = %101 - %114 = sub i32 %104, %108 - %115 = add i32 %108, %103 - %116 = mul i32 %108, 2352 - %117 = sext i32 %116 to i64 - %118 = getelementptr i8, ptr %102, i64 %117 - %119 = icmp eq i32 %114, 0 - br i1 %119, label %.thread, label %101, !llvm.loop !51 +109: ; preds = %97 + %110 = sub i32 %100, %104 + %111 = add i32 %104, %99 + %112 = mul i32 %104, 2352 + %113 = sext i32 %112 to i64 + %114 = getelementptr i8, ptr %98, i64 %113 + %115 = icmp eq i32 %110, 0 + br i1 %115, label %.thread, label %97, !llvm.loop !51 -120: ; preds = %101 - %121 = load i32, ptr %59, align 4 - %122 = icmp eq i32 %121, 2 - br i1 %122, label %123, label %.split6.us +116: ; preds = %97 + %117 = load i32, ptr %59, align 4 + %118 = icmp eq i32 %117, 2 + br i1 %118, label %119, label %.split6.us -123: ; preds = %120 - %124 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.21) #16 +119: ; preds = %116 + %120 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.21) #16 store i32 1, ptr %59, align 4 br label %.split -.split6.us: ; preds = %73, %120 - %125 = load i8, ptr %64, align 8 - switch i8 %125, label %.thread [ - i8 4, label %126 - i8 11, label %126 +.split6.us: ; preds = %116, %73 + %121 = load i8, ptr %64, align 8 + switch i8 %121, label %.thread [ + i8 4, label %122 + i8 11, label %122 ] -126: ; preds = %.split6.us, %.split6.us - %127 = zext nneg i8 %125 to i32 - %128 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.22, i32 noundef %127) #16 +122: ; preds = %.split6.us, %.split6.us + %123 = zext nneg i8 %121 to i32 + %124 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.22, i32 noundef %123) #16 store i32 0, ptr %59, align 4 - %129 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) + %125 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) br label %.thread -130: ; preds = %11 +126: ; preds = %11 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.thread -.thread: ; preds = %85, %73, %113, %101, %130, %126, %.split6.us, %92, %48, %30, %27 - %131 = phi i32 [ -14, %130 ], [ -14, %27 ], [ -22, %30 ], [ -22, %48 ], [ %93, %92 ], [ %129, %126 ], [ -5, %.split6.us ], [ %112, %101 ], [ 0, %113 ], [ %84, %73 ], [ 0, %85 ] +.thread: ; preds = %109, %97, %83, %73, %126, %122, %.split6.us, %88, %48, %30, %27 + %127 = phi i32 [ -14, %126 ], [ -14, %27 ], [ -22, %30 ], [ -22, %48 ], [ %89, %88 ], [ %125, %122 ], [ -5, %.split6.us ], [ %82, %73 ], [ 0, %83 ], [ %108, %97 ], [ 0, %109 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %131 + ret i32 %127 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/drm_mipi_dsi.ll b/bench/linux/optimized/drm_mipi_dsi.ll index 9edaff74b50..943de50e937 100644 --- a/bench/linux/optimized/drm_mipi_dsi.ll +++ b/bench/linux/optimized/drm_mipi_dsi.ll @@ -1532,7 +1532,7 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_power_mode(ptr noundef readonly c .thread3: ; preds = %2, %18 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %34 + br label %32 28: ; preds = %22, %27 %29 = call i64 %20(ptr noundef %14, ptr noundef nonnull %4) #14 @@ -1540,17 +1540,16 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_power_mode(ptr noundef readonly c call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) %30 = icmp eq i64 %.fr, 0 - br i1 %30, label %34, label %31 + br i1 %30, label %32, label %31 31: ; preds = %28 - %32 = icmp slt i64 %.fr, 1 - %33 = trunc i64 %.fr to i32 - %spec.select = select i1 %32, i32 %33, i32 0 - br label %34 + %spec.select7 = call i64 @llvm.smin.i64(i64 %.fr, i64 0) + %spec.select = trunc i64 %spec.select7 to i32 + br label %32 -34: ; preds = %31, %.thread3, %28 - %35 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] - ret i32 %35 +32: ; preds = %31, %.thread3, %28 + %33 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] + ret i32 %33 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -1602,7 +1601,7 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_pixel_format(ptr noundef readonly .thread3: ; preds = %2, %18 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %34 + br label %32 28: ; preds = %22, %27 %29 = call i64 %20(ptr noundef %14, ptr noundef nonnull %4) #14 @@ -1610,17 +1609,16 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_pixel_format(ptr noundef readonly call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) %30 = icmp eq i64 %.fr, 0 - br i1 %30, label %34, label %31 + br i1 %30, label %32, label %31 31: ; preds = %28 - %32 = icmp slt i64 %.fr, 1 - %33 = trunc i64 %.fr to i32 - %spec.select = select i1 %32, i32 %33, i32 0 - br label %34 + %spec.select7 = call i64 @llvm.smin.i64(i64 %.fr, i64 0) + %spec.select = trunc i64 %spec.select7 to i32 + br label %32 -34: ; preds = %31, %.thread3, %28 - %35 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] - ret i32 %35 +32: ; preds = %31, %.thread3, %28 + %33 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] + ret i32 %33 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -2352,7 +2350,7 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_display_brightness(ptr noundef re .thread3: ; preds = %2, %18 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %34 + br label %32 28: ; preds = %22, %27 %29 = call i64 %20(ptr noundef %14, ptr noundef nonnull %4) #14 @@ -2360,17 +2358,16 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_display_brightness(ptr noundef re call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) %30 = icmp eq i64 %.fr, 0 - br i1 %30, label %34, label %31 + br i1 %30, label %32, label %31 31: ; preds = %28 - %32 = icmp slt i64 %.fr, 1 - %33 = trunc i64 %.fr to i32 - %spec.select = select i1 %32, i32 %33, i32 0 - br label %34 + %spec.select7 = call i64 @llvm.smin.i64(i64 %.fr, i64 0) + %spec.select = trunc i64 %spec.select7 to i32 + br label %32 -34: ; preds = %31, %.thread3, %28 - %35 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] - ret i32 %35 +32: ; preds = %31, %.thread3, %28 + %33 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] + ret i32 %33 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/early_printk.ll b/bench/linux/optimized/early_printk.ll index 9ef4a4ae470..9f03f4389bd 100644 --- a/bench/linux/optimized/early_printk.ll +++ b/bench/linux/optimized/early_printk.ll @@ -603,89 +603,91 @@ declare dso_local i32 @kstrtoull(ptr noundef, i32 noundef, ptr noundef) local_un define internal void @early_vga_write(ptr readnone captures(none) %0, ptr noundef readonly captures(none) %1, i32 noundef %2) #2 align 16 { %4 = load i8, ptr %1, align 1 %5 = icmp eq i8 %4, 0 - br i1 %5, label %.loopexit11, label %.preheader10 + br i1 %5, label %.loopexit12, label %.preheader11 -.preheader10: ; preds = %3, %93 +.preheader11: ; preds = %3, %93 %6 = phi i8 [ %94, %93 ], [ %4, %3 ] %7 = phi ptr [ %9, %93 ], [ %1, %3 ] %8 = phi i32 [ %10, %93 ], [ %2, %3 ] %9 = getelementptr i8, ptr %7, i64 1 %10 = add i32 %8, -1 %11 = icmp eq i32 %8, 0 - br i1 %11, label %.loopexit11, label %12 + br i1 %11, label %.loopexit12, label %12 -12: ; preds = %.preheader10 +12: ; preds = %.preheader11 %13 = load i32, ptr @current_ypos, align 4 %14 = load i32, ptr @max_ypos, align 4 %15 = icmp slt i32 %13, %14 br i1 %15, label %71, label %16 16: ; preds = %12 - %17 = icmp sgt i32 %14, 1 - %.pre14 = load i32, ptr @max_xpos, align 4 - br i1 %17, label %.preheader8, label %.loopexit9 + %17 = icmp ugt i32 %14, 1 + %.pre15 = load i32, ptr @max_xpos, align 4 + br i1 %17, label %.preheader9, label %.loopexit10 -.preheader8: ; preds = %16 - %18 = icmp sgt i32 %.pre14, 0 - br i1 %18, label %.preheader8.split, label %.loopexit7 +.preheader9: ; preds = %16 + %18 = icmp eq i32 %.pre15, 0 + br i1 %18, label %.loopexit8, label %.preheader9.split -.loopexit9: ; preds = %.loopexit, %16 +.loopexit10: ; preds = %.loopexit, %16 %19 = phi i32 [ %14, %16 ], [ %51, %.loopexit ] - %20 = phi i32 [ %.pre14, %16 ], [ %52, %.loopexit ] + %20 = phi i32 [ %.pre15, %16 ], [ %50, %.loopexit ] %21 = phi i32 [ 0, %16 ], [ %54, %.loopexit ] - %22 = icmp sgt i32 %20, 0 - br i1 %22, label %.preheader6, label %.loopexit7 - -.preheader8.split: ; preds = %.preheader8, %.loopexit - %23 = phi i32 [ %51, %.loopexit ], [ %14, %.preheader8 ] - %24 = phi i32 [ %52, %.loopexit ], [ %.pre14, %.preheader8 ] - %25 = phi i32 [ %54, %.loopexit ], [ 0, %.preheader8 ] - %26 = phi i32 [ %53, %.loopexit ], [ 1, %.preheader8 ] - %27 = icmp sgt i32 %24, 0 - br i1 %27, label %.preheader, label %.loopexit - -.preheader: ; preds = %.preheader8.split, %.preheader - %28 = phi i32 [ %49, %.preheader ], [ %24, %.preheader8.split ] - %29 = phi i32 [ %48, %.preheader ], [ 0, %.preheader8.split ] - %30 = load i64, ptr @page_offset_base, align 8 - %31 = inttoptr i64 %30 to ptr - %32 = getelementptr i8, ptr %31, i64 753664 - %33 = mul i32 %28, %26 - %34 = add i32 %33, %29 - %35 = shl i32 %34, 1 - %36 = sext i32 %35 to i64 - %37 = getelementptr i8, ptr %32, i64 %36 - %38 = tail call i16 asm sideeffect "movw $1,$0", "=r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i16) %37) #6, !srcloc !18 - %39 = load i64, ptr @page_offset_base, align 8 - %40 = inttoptr i64 %39 to ptr - %41 = getelementptr i8, ptr %40, i64 753664 - %42 = load i32, ptr @max_xpos, align 4 - %43 = mul i32 %42, %25 - %44 = add i32 %43, %29 - %45 = shl i32 %44, 1 - %46 = sext i32 %45 to i64 - %47 = getelementptr i8, ptr %41, i64 %46 - tail call void asm sideeffect "movw $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i16 %38, ptr elementtype(i16) %47) #6, !srcloc !19 - %48 = add nuw nsw i32 %29, 1 - %49 = load i32, ptr @max_xpos, align 4 - %50 = icmp slt i32 %48, %49 - br i1 %50, label %.preheader, label %.loopexit.loopexit, !llvm.loop !20 + %.not6 = icmp eq i32 %20, 0 + br i1 %.not6, label %.loopexit8, label %.preheader7 + +.preheader9.split: ; preds = %.preheader9, %.loopexit + %22 = phi i32 [ %50, %.loopexit ], [ %.pre15, %.preheader9 ] + %23 = phi i32 [ %51, %.loopexit ], [ %14, %.preheader9 ] + %24 = phi i32 [ %52, %.loopexit ], [ %.pre15, %.preheader9 ] + %25 = phi i32 [ %54, %.loopexit ], [ 0, %.preheader9 ] + %26 = phi i32 [ %53, %.loopexit ], [ 1, %.preheader9 ] + %.not = icmp eq i32 %24, 0 + br i1 %.not, label %.loopexit, label %.preheader + +.preheader: ; preds = %.preheader9.split, %.preheader + %27 = phi i32 [ %48, %.preheader ], [ %24, %.preheader9.split ] + %28 = phi i32 [ %47, %.preheader ], [ 0, %.preheader9.split ] + %29 = load i64, ptr @page_offset_base, align 8 + %30 = inttoptr i64 %29 to ptr + %31 = getelementptr i8, ptr %30, i64 753664 + %32 = mul i32 %27, %26 + %33 = add i32 %32, %28 + %34 = shl i32 %33, 1 + %35 = sext i32 %34 to i64 + %36 = getelementptr i8, ptr %31, i64 %35 + %37 = tail call i16 asm sideeffect "movw $1,$0", "=r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i16) %36) #6, !srcloc !18 + %38 = load i64, ptr @page_offset_base, align 8 + %39 = inttoptr i64 %38 to ptr + %40 = getelementptr i8, ptr %39, i64 753664 + %41 = load i32, ptr @max_xpos, align 4 + %42 = mul i32 %41, %25 + %43 = add i32 %42, %28 + %44 = shl i32 %43, 1 + %45 = sext i32 %44 to i64 + %46 = getelementptr i8, ptr %40, i64 %45 + tail call void asm sideeffect "movw $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i16 %37, ptr elementtype(i16) %46) #6, !srcloc !19 + %47 = add nuw nsw i32 %28, 1 + %48 = load i32, ptr @max_xpos, align 4 + %49 = icmp slt i32 %47, %48 + br i1 %49, label %.preheader, label %.loopexit.loopexit, !llvm.loop !20 .loopexit.loopexit: ; preds = %.preheader %.pre = load i32, ptr @max_ypos, align 4 br label %.loopexit -.loopexit: ; preds = %.loopexit.loopexit, %.preheader8.split - %51 = phi i32 [ %.pre, %.loopexit.loopexit ], [ %23, %.preheader8.split ] - %52 = phi i32 [ %49, %.loopexit.loopexit ], [ %24, %.preheader8.split ] +.loopexit: ; preds = %.loopexit.loopexit, %.preheader9.split + %50 = phi i32 [ %48, %.loopexit.loopexit ], [ %22, %.preheader9.split ] + %51 = phi i32 [ %.pre, %.loopexit.loopexit ], [ %23, %.preheader9.split ] + %52 = phi i32 [ %48, %.loopexit.loopexit ], [ 0, %.preheader9.split ] %53 = add nuw nsw i32 %26, 1 %54 = add nuw nsw i32 %25, 1 %55 = icmp slt i32 %53, %51 - br i1 %55, label %.preheader8.split, label %.loopexit9, !llvm.loop !21 + br i1 %55, label %.preheader9.split, label %.loopexit10, !llvm.loop !21 -.preheader6: ; preds = %.loopexit9, %.preheader6 - %56 = phi i32 [ %67, %.preheader6 ], [ %20, %.loopexit9 ] - %57 = phi i32 [ %66, %.preheader6 ], [ 0, %.loopexit9 ] +.preheader7: ; preds = %.loopexit10, %.preheader7 + %56 = phi i32 [ %67, %.preheader7 ], [ %20, %.loopexit10 ] + %57 = phi i32 [ %66, %.preheader7 ], [ 0, %.loopexit10 ] %58 = load i64, ptr @page_offset_base, align 8 %59 = inttoptr i64 %58 to ptr %60 = getelementptr i8, ptr %59, i64 753664 @@ -698,20 +700,20 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde %66 = add nuw nsw i32 %57, 1 %67 = load i32, ptr @max_xpos, align 4 %68 = icmp slt i32 %66, %67 - br i1 %68, label %.preheader6, label %.loopexit7.loopexit, !llvm.loop !23 + br i1 %68, label %.preheader7, label %.loopexit8.loopexit, !llvm.loop !23 -.loopexit7.loopexit: ; preds = %.preheader6 - %.pre15 = load i32, ptr @max_ypos, align 4 - br label %.loopexit7 +.loopexit8.loopexit: ; preds = %.preheader7 + %.pre16 = load i32, ptr @max_ypos, align 4 + br label %.loopexit8 -.loopexit7: ; preds = %.preheader8, %.loopexit7.loopexit, %.loopexit9 - %69 = phi i32 [ %.pre15, %.loopexit7.loopexit ], [ %19, %.loopexit9 ], [ %14, %.preheader8 ] +.loopexit8: ; preds = %.preheader9, %.loopexit8.loopexit, %.loopexit10 + %69 = phi i32 [ %.pre16, %.loopexit8.loopexit ], [ %19, %.loopexit10 ], [ %14, %.preheader9 ] %70 = add nsw i32 %69, -1 store i32 %70, ptr @current_ypos, align 4 br label %71 -71: ; preds = %.loopexit7, %12 - %72 = phi i32 [ %70, %.loopexit7 ], [ %13, %12 ] +71: ; preds = %.loopexit8, %12 + %72 = phi i32 [ %70, %.loopexit8 ], [ %13, %12 ] switch i8 %6, label %73 [ i8 10, label %90 i8 13, label %93 @@ -739,11 +741,11 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde br i1 %89, label %93, label %._crit_edge ._crit_edge: ; preds = %73 - %.pre16 = load i32, ptr @current_ypos, align 4 + %.pre17 = load i32, ptr @current_ypos, align 4 br label %90 90: ; preds = %._crit_edge, %71 - %91 = phi i32 [ %.pre16, %._crit_edge ], [ %72, %71 ] + %91 = phi i32 [ %.pre17, %._crit_edge ], [ %72, %71 ] store i32 0, ptr @current_xpos, align 4 %92 = add i32 %91, 1 store i32 %92, ptr @current_ypos, align 4 @@ -752,9 +754,9 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde 93: ; preds = %90, %73, %71 %94 = load i8, ptr %9, align 1 %95 = icmp eq i8 %94, 0 - br i1 %95, label %.loopexit11, label %.preheader10, !llvm.loop !24 + br i1 %95, label %.loopexit12, label %.preheader11, !llvm.loop !24 -.loopexit11: ; preds = %93, %.preheader10, %3 +.loopexit12: ; preds = %93, %.preheader11, %3 ret void } diff --git a/bench/linux/optimized/xt_TCPMSS.ll b/bench/linux/optimized/xt_TCPMSS.ll index 41f5cff6356..8169672dedc 100644 --- a/bench/linux/optimized/xt_TCPMSS.ll +++ b/bench/linux/optimized/xt_TCPMSS.ll @@ -74,44 +74,45 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg4(ptr noundef %0, ptr nou %11 = and i8 %10, 60 %12 = zext nneg i8 %11 to i32 %13 = tail call fastcc i32 @tcpmss_mangle_packet(ptr noundef %0, ptr noundef %1, i32 noundef 2, i32 noundef %12, i32 noundef 40), !range !5 - %14 = icmp slt i32 %13, 0 - br i1 %14, label %41, label %15 - -15: ; preds = %2 - %16 = icmp eq i32 %13, 0 - br i1 %16, label %41, label %17 - -17: ; preds = %15 - %18 = load ptr, ptr %3, align 8 - %19 = load i16, ptr %5, align 4 - %20 = zext i16 %19 to i64 - %21 = getelementptr i8, ptr %18, i64 %20 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 2 - %23 = load i16, ptr %22, align 2 + switch i32 %13, label %14 [ + i32 -1, label %38 + i32 0, label %.fold.split + ] + +14: ; preds = %2 + %15 = load ptr, ptr %3, align 8 + %16 = load i16, ptr %5, align 4 + %17 = zext i16 %16 to i64 + %18 = getelementptr i8, ptr %15, i64 %17 + %19 = getelementptr inbounds nuw i8, ptr %18, i64 2 + %20 = load i16, ptr %19, align 2 + %21 = tail call i16 @llvm.bswap.i16(i16 %20) + %22 = trunc nuw nsw i32 %13 to i16 + %23 = add i16 %21, %22 %24 = tail call i16 @llvm.bswap.i16(i16 %23) - %25 = trunc nuw nsw i32 %13 to i16 - %26 = add i16 %24, %25 - %27 = tail call i16 @llvm.bswap.i16(i16 %26) - %28 = getelementptr inbounds nuw i8, ptr %21, i64 10 - %29 = load i16, ptr %28, align 2 - %30 = xor i16 %23, -1 - %31 = add i16 %23, %29 - %32 = sub i16 -2, %31 - %33 = icmp ult i16 %32, %30 - %34 = zext i1 %33 to i16 - %35 = add i16 %27, %32 - %36 = add i16 %35, %34 - %37 = icmp ult i16 %36, %27 - %38 = zext i1 %37 to i16 - %39 = add i16 %36, %38 - %40 = xor i16 %39, -1 - store i16 %40, ptr %28, align 2 - store i16 %27, ptr %22, align 2 - br label %41 - -41: ; preds = %17, %15, %2 - %42 = phi i32 [ 0, %2 ], [ -1, %17 ], [ -1, %15 ] - ret i32 %42 + %25 = getelementptr inbounds nuw i8, ptr %18, i64 10 + %26 = load i16, ptr %25, align 2 + %27 = xor i16 %20, -1 + %28 = add i16 %20, %26 + %29 = sub i16 -2, %28 + %30 = icmp ult i16 %29, %27 + %31 = zext i1 %30 to i16 + %32 = add i16 %24, %29 + %33 = add i16 %32, %31 + %34 = icmp ult i16 %33, %24 + %35 = zext i1 %34 to i16 + %36 = add i16 %33, %35 + %37 = xor i16 %36, -1 + store i16 %37, ptr %25, align 2 + store i16 %24, ptr %19, align 2 + br label %38 + +.fold.split: ; preds = %2 + br label %38 + +38: ; preds = %2, %.fold.split, %14 + %39 = phi i32 [ 0, %2 ], [ -1, %14 ], [ -1, %.fold.split ] + ret i32 %39 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -214,54 +215,55 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg6(ptr noundef %0, ptr nou store i8 %12, ptr %3, align 1 %13 = call i32 @ipv6_skip_exthdr(ptr noundef %0, i32 noundef 40, ptr noundef nonnull %3, ptr noundef nonnull %4) #10 %14 = icmp slt i32 %13, 0 - br i1 %14, label %44, label %15 + br i1 %14, label %41, label %15 15: ; preds = %2 %16 = call fastcc i32 @tcpmss_mangle_packet(ptr noundef %0, ptr noundef %1, i32 noundef 10, i32 noundef %13, i32 noundef 60), !range !5 - %17 = icmp slt i32 %16, 0 - br i1 %17, label %44, label %18 - -18: ; preds = %15 - %19 = icmp eq i32 %16, 0 - br i1 %19, label %44, label %20 - -20: ; preds = %18 - %21 = load ptr, ptr %5, align 8 - %22 = load i16, ptr %7, align 4 - %23 = zext i16 %22 to i64 - %24 = getelementptr i8, ptr %21, i64 %23 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 4 - %26 = load i16, ptr %25, align 4 + switch i32 %16, label %17 [ + i32 -1, label %41 + i32 0, label %.fold.split + ] + +17: ; preds = %15 + %18 = load ptr, ptr %5, align 8 + %19 = load i16, ptr %7, align 4 + %20 = zext i16 %19 to i64 + %21 = getelementptr i8, ptr %18, i64 %20 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 4 + %23 = load i16, ptr %22, align 4 + %24 = call i16 @llvm.bswap.i16(i16 %23) + %25 = trunc nuw nsw i32 %16 to i16 + %26 = add i16 %24, %25 %27 = call i16 @llvm.bswap.i16(i16 %26) - %28 = trunc nuw nsw i32 %16 to i16 - %29 = add i16 %27, %28 - %30 = call i16 @llvm.bswap.i16(i16 %29) - %31 = getelementptr inbounds nuw i8, ptr %0, i64 128 - %32 = load i8, ptr %31, align 8 - %33 = and i8 %32, 96 - %34 = icmp eq i8 %33, 64 - br i1 %34, label %35, label %43 - -35: ; preds = %20 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %37 = load i32, ptr %36, align 8 - %38 = zext i16 %26 to i32 - %39 = xor i32 %38, -1 - %40 = call i32 asm "addl $2,$0\0A\09adcl $$0,$0", "=r,0,rm,~{dirflag},~{fpsr},~{flags}"(i32 %37, i32 %39) #12, !srcloc !12 - %41 = zext i16 %30 to i32 - %42 = call i32 asm "addl $2,$0\0A\09adcl $$0,$0", "=r,0,rm,~{dirflag},~{fpsr},~{flags}"(i32 %40, i32 %41) #12, !srcloc !12 - store i32 %42, ptr %36, align 8 - br label %43 - -43: ; preds = %35, %20 - store i16 %30, ptr %25, align 4 - br label %44 - -44: ; preds = %43, %18, %15, %2 - %45 = phi i32 [ 0, %2 ], [ 0, %15 ], [ -1, %43 ], [ -1, %18 ] + %28 = getelementptr inbounds nuw i8, ptr %0, i64 128 + %29 = load i8, ptr %28, align 8 + %30 = and i8 %29, 96 + %31 = icmp eq i8 %30, 64 + br i1 %31, label %32, label %40 + +32: ; preds = %17 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %34 = load i32, ptr %33, align 8 + %35 = zext i16 %23 to i32 + %36 = xor i32 %35, -1 + %37 = call i32 asm "addl $2,$0\0A\09adcl $$0,$0", "=r,0,rm,~{dirflag},~{fpsr},~{flags}"(i32 %34, i32 %36) #12, !srcloc !12 + %38 = zext i16 %27 to i32 + %39 = call i32 asm "addl $2,$0\0A\09adcl $$0,$0", "=r,0,rm,~{dirflag},~{fpsr},~{flags}"(i32 %37, i32 %38) #12, !srcloc !12 + store i32 %39, ptr %33, align 8 + br label %40 + +40: ; preds = %32, %17 + store i16 %27, ptr %22, align 4 + br label %41 + +.fold.split: ; preds = %15 + br label %41 + +41: ; preds = %15, %.fold.split, %40, %2 + %42 = phi i32 [ 0, %2 ], [ 0, %15 ], [ -1, %40 ], [ -1, %.fold.split ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %45 + ret i32 %42 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -424,7 +426,7 @@ define internal fastcc noundef range(i32 -1, 5) i32 @tcpmss_mangle_packet(ptr no 61: ; preds = %58, %37 %62 = phi i16 [ %60, %58 ], [ %38, %37 ] %63 = add nsw i32 %33, -4 - %64 = icmp samesign ult i32 %63, 20 + %64 = icmp ult i32 %63, 20 br i1 %64, label %.loopexit, label %.preheader .preheader: ; preds = %61, %103 diff --git a/bench/lua/optimized/lmathlib.ll b/bench/lua/optimized/lmathlib.ll index 99e2815cd2a..51a1a760a90 100644 --- a/bench/lua/optimized/lmathlib.ll +++ b/bench/lua/optimized/lmathlib.ll @@ -73,17 +73,17 @@ define dso_local noundef i32 @luaopen_math(ptr noundef %0) local_unnamed_addr #0 %15 = xor i64 %10, %14 %16 = tail call i64 @llvm.fshl.i64(i64 %11, i64 %11, i64 45) %17 = add nuw nsw i32 %.018.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %17, 16 - br i1 %exitcond.not.i.i, label %setrandfunc.exit, label %5 + %18 = icmp eq i32 %17, 16 + br i1 %18, label %setrandfunc.exit, label %5 setrandfunc.exit: ; preds = %5 - %18 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %19 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %20 = getelementptr inbounds nuw i8, ptr %2, i64 24 + %19 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %20 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %21 = getelementptr inbounds nuw i8, ptr %2, i64 24 store i64 %12, ptr %2, align 8, !tbaa !4 - store i64 %13, ptr %18, align 8, !tbaa !4 - store i64 %15, ptr %19, align 8, !tbaa !4 - store i64 %16, ptr %20, align 8, !tbaa !4 + store i64 %13, ptr %19, align 8, !tbaa !4 + store i64 %15, ptr %20, align 8, !tbaa !4 + store i64 %16, ptr %21, align 8, !tbaa !4 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef %4) #6 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef 0) #6 tail call void @lua_settop(ptr noundef %0, i32 noundef -3) #6 @@ -775,17 +775,17 @@ define internal noundef i32 @math_randomseed(ptr noundef %0) #0 { %29 = xor i64 %24, %28 %30 = tail call i64 @llvm.fshl.i64(i64 %25, i64 %25, i64 45) %31 = add nuw nsw i32 %.018.i, 1 - %exitcond.not.i = icmp eq i32 %31, 16 - br i1 %exitcond.not.i, label %setseed.exit, label %19 + %32 = icmp eq i32 %31, 16 + br i1 %32, label %setseed.exit, label %19 setseed.exit: ; preds = %19 - %32 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %33 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %34 = getelementptr inbounds nuw i8, ptr %2, i64 24 + %33 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %34 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %35 = getelementptr inbounds nuw i8, ptr %2, i64 24 store i64 %26, ptr %2, align 8, !tbaa !4 - store i64 %27, ptr %32, align 8, !tbaa !4 - store i64 %29, ptr %33, align 8, !tbaa !4 - store i64 %30, ptr %34, align 8, !tbaa !4 + store i64 %27, ptr %33, align 8, !tbaa !4 + store i64 %29, ptr %34, align 8, !tbaa !4 + store i64 %30, ptr %35, align 8, !tbaa !4 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef %.09) #6 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef %.0) #6 ret i32 2 diff --git a/bench/luajit/optimized/lib_bit.ll b/bench/luajit/optimized/lib_bit.ll index 512be2dd1b1..b9032a3a9d8 100644 --- a/bench/luajit/optimized/lib_bit.ll +++ b/bench/luajit/optimized/lib_bit.ll @@ -182,7 +182,7 @@ define internal range(i32 0, 3) i32 @lj_ffh_bit_band(ptr noundef %0) #0 { 13: ; preds = %8 %14 = load i32, ptr %2, align 4, !tbaa !4 %.not = icmp eq i32 %14, 0 - br i1 %.not, label %57, label %15 + br i1 %.not, label %59, label %15 15: ; preds = %13 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -206,62 +206,64 @@ define internal range(i32 0, 3) i32 @lj_ffh_bit_band(ptr noundef %0) #0 { %.fr38 = freeze i8 %32 call void @llvm.lifetime.start.p0(ptr nonnull %3) %33 = icmp ult i8 %.fr38, 73 - br i1 %33, label %.split.us, label %.split + %34 = sext i1 %33 to i64 + %35 = icmp ult i8 %.fr38, 73 + br i1 %35, label %.split.us, label %.split .split.us: ; preds = %15, %.split.us - %.125.us = phi ptr [ %36, %.split.us ], [ %26, %15 ] - %.0.us = phi i64 [ %35, %.split.us ], [ -1, %15 ] + %.125.us = phi ptr [ %38, %.split.us ], [ %26, %15 ] + %.0.us = phi i64 [ %37, %.split.us ], [ %34, %15 ] call void @lj_cconv_ct_tv(ptr noundef nonnull %21, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %.125.us, i32 noundef 0) #5 - %34 = load i64, ptr %3, align 8, !tbaa !20 - %35 = and i64 %34, %.0.us - %36 = getelementptr inbounds nuw i8, ptr %.125.us, i64 8 - %37 = icmp ult ptr %36, %7 - br i1 %37, label %.split.us, label %.split31.us, !llvm.loop !46 + %36 = load i64, ptr %3, align 8, !tbaa !20 + %37 = and i64 %36, %.0.us + %38 = getelementptr inbounds nuw i8, ptr %.125.us, i64 8 + %39 = icmp ult ptr %38, %7 + br i1 %39, label %.split.us, label %.split31.us, !llvm.loop !46 .split: ; preds = %15 - %38 = icmp eq i8 %.fr38, 73 - br i1 %38, label %.split.split.us, label %.split.split + %40 = icmp eq i8 %.fr38, 73 + br i1 %40, label %.split.split.us, label %.split.split .split.split.us: ; preds = %.split, %.split.split.us - %.125.us32 = phi ptr [ %41, %.split.split.us ], [ %26, %.split ] - %.0.us33 = phi i64 [ %40, %.split.split.us ], [ 0, %.split ] + %.125.us32 = phi ptr [ %43, %.split.split.us ], [ %26, %.split ] + %.0.us33 = phi i64 [ %42, %.split.split.us ], [ %34, %.split ] call void @lj_cconv_ct_tv(ptr noundef nonnull %21, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %.125.us32, i32 noundef 0) #5 - %39 = load i64, ptr %3, align 8, !tbaa !20 - %40 = or i64 %39, %.0.us33 - %41 = getelementptr inbounds nuw i8, ptr %.125.us32, i64 8 - %42 = icmp ult ptr %41, %7 - br i1 %42, label %.split.split.us, label %.split31.us, !llvm.loop !46 + %41 = load i64, ptr %3, align 8, !tbaa !20 + %42 = or i64 %41, %.0.us33 + %43 = getelementptr inbounds nuw i8, ptr %.125.us32, i64 8 + %44 = icmp ult ptr %43, %7 + br i1 %44, label %.split.split.us, label %.split31.us, !llvm.loop !46 .split.split: ; preds = %.split, %.split.split - %.125 = phi ptr [ %45, %.split.split ], [ %26, %.split ] - %.0 = phi i64 [ %44, %.split.split ], [ 0, %.split ] + %.125 = phi ptr [ %47, %.split.split ], [ %26, %.split ] + %.0 = phi i64 [ %46, %.split.split ], [ %34, %.split ] call void @lj_cconv_ct_tv(ptr noundef nonnull %21, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %.125, i32 noundef 0) #5 - %43 = load i64, ptr %3, align 8, !tbaa !20 - %44 = xor i64 %43, %.0 - %45 = getelementptr inbounds nuw i8, ptr %.125, i64 8 - %46 = icmp ult ptr %45, %7 - br i1 %46, label %.split.split, label %.split31.us, !llvm.loop !46 + %45 = load i64, ptr %3, align 8, !tbaa !20 + %46 = xor i64 %45, %.0 + %47 = getelementptr inbounds nuw i8, ptr %.125, i64 8 + %48 = icmp ult ptr %47, %7 + br i1 %48, label %.split.split, label %.split31.us, !llvm.loop !46 .split31.us: ; preds = %.split.split, %.split.split.us, %.split.us - %.us-phi = phi i64 [ %35, %.split.us ], [ %40, %.split.split.us ], [ %44, %.split.split ] - %47 = load i32, ptr %2, align 4, !tbaa !4 - %48 = call ptr @lj_mem_newgco(ptr noundef nonnull %0, i64 noundef 24) #5 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 9 - store i8 10, ptr %49, align 1, !tbaa !16 - %50 = trunc i32 %47 to i16 - %51 = getelementptr inbounds nuw i8, ptr %48, i64 10 - store i16 %50, ptr %51, align 2, !tbaa !19 - %52 = getelementptr inbounds nuw i8, ptr %48, i64 16 - store i64 %.us-phi, ptr %52, align 8, !tbaa !20 - %53 = load ptr, ptr %4, align 8, !tbaa !8 - %54 = getelementptr inbounds i8, ptr %53, i64 -16 - %55 = ptrtoint ptr %48 to i64 - %56 = or i64 %55, -1548112371908608 - store i64 %56, ptr %54, align 8, !tbaa !15 + %.us-phi = phi i64 [ %37, %.split.us ], [ %42, %.split.split.us ], [ %46, %.split.split ] + %49 = load i32, ptr %2, align 4, !tbaa !4 + %50 = call ptr @lj_mem_newgco(ptr noundef nonnull %0, i64 noundef 24) #5 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 9 + store i8 10, ptr %51, align 1, !tbaa !16 + %52 = trunc i32 %49 to i16 + %53 = getelementptr inbounds nuw i8, ptr %50, i64 10 + store i16 %52, ptr %53, align 2, !tbaa !19 + %54 = getelementptr inbounds nuw i8, ptr %50, i64 16 + store i64 %.us-phi, ptr %54, align 8, !tbaa !20 + %55 = load ptr, ptr %4, align 8, !tbaa !8 + %56 = getelementptr inbounds i8, ptr %55, i64 -16 + %57 = ptrtoint ptr %50 to i64 + %58 = or i64 %57, -1548112371908608 + store i64 %58, ptr %56, align 8, !tbaa !15 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %57 + br label %59 -57: ; preds = %13, %.split31.us +59: ; preds = %13, %.split31.us %.023 = phi i32 [ 2, %.split31.us ], [ 0, %13 ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.023 diff --git a/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll b/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll index 522c78473f2..5f991684be2 100644 --- a/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll +++ b/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll @@ -260,8 +260,8 @@ _ZN4core4iter6traits8iterator8Iterator3zip17hd8c38152741f4af7E.exit.i: ; preds = %49 = load i32, ptr %48, align 4, !alias.scope !13, !noalias !21, !noundef !4 %50 = call i32 @llvm.bswap.i32(i32 %49) store i32 %50, ptr %47, align 1, !alias.scope !48, !noalias !52 - %exitcond.not.i = icmp eq i64 %45, 8 - br i1 %exitcond.not.i, label %"_ZN86_$LT$sha2..core_api..Sha256VarCore$u20$as$u20$digest..core_api..VariableOutputCore$GT$22finalize_variable_core17hd25b9330b6b55406E.exit", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit12.i" + %51 = icmp eq i64 %45, 8 + br i1 %51, label %"_ZN86_$LT$sha2..core_api..Sha256VarCore$u20$as$u20$digest..core_api..VariableOutputCore$GT$22finalize_variable_core17hd25b9330b6b55406E.exit", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit12.i" "_ZN86_$LT$sha2..core_api..Sha256VarCore$u20$as$u20$digest..core_api..VariableOutputCore$GT$22finalize_variable_core17hd25b9330b6b55406E.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit12.i" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %2, ptr noundef nonnull readonly align 1 dereferenceable(32) %12, i64 32, i1 false), !alias.scope !54, !noalias !58 @@ -593,14 +593,14 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.165 %20 = icmp ult i64 %17, %19 br i1 %20, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %41, %15 - %.sroa.09.1.lcssa = phi i64 [ %.sroa.09.032, %15 ], [ %31, %41 ] +._crit_edge: ; preds = %43, %15 + %.sroa.09.1.lcssa = phi i64 [ %.sroa.09.032, %15 ], [ %31, %43 ] %.not = icmp eq i64 %.sroa.02.033, 4 br i1 %.not, label %14, label %22 -.lr.ph: ; preds = %15, %41 - %.sroa.09.131 = phi i64 [ %31, %41 ], [ %.sroa.09.032, %15 ] - %.sroa.013.030 = phi i64 [ %47, %41 ], [ %17, %15 ] +.lr.ph: ; preds = %15, %43 + %.sroa.09.131 = phi i64 [ %31, %43 ], [ %.sroa.09.032, %15 ] + %.sroa.013.030 = phi i64 [ %49, %43 ], [ %17, %15 ] %21 = icmp ult i64 %.sroa.09.131, 16 br i1 %21, label %28, label %33, !prof !164 @@ -623,7 +623,7 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.165 %30 = load i8, ptr %29, align 1, !noundef !4 %31 = add nuw nsw i64 %.sroa.09.131, 1 %32 = icmp ult i64 %.sroa.013.030, 36 - br i1 %32, label %34, label %40, !prof !164 + br i1 %32, label %34, label %42, !prof !164 33: ; preds = %.lr.ph tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.09.131, i64 noundef 16, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.50) #18 @@ -636,25 +636,26 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.165 %38 = load i8, ptr %37, align 1, !noundef !4 %39 = getelementptr inbounds nuw i8, ptr %0, i64 %.sroa.013.030 store i8 %38, ptr %39, align 1 - %.not20 = icmp eq i64 %.sroa.013.030, 35 - br i1 %.not20, label %49, label %41, !prof !165 + %40 = add nuw nsw i64 %.sroa.013.030, 1 + %41 = icmp eq i64 %40, 36 + br i1 %41, label %51, label %43, !prof !165 -40: ; preds = %28 +42: ; preds = %28 tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.013.030, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.52) #18 unreachable -41: ; preds = %34 - %42 = and i8 %30, 15 - %43 = zext nneg i8 %42 to i64 - %44 = getelementptr inbounds nuw i8, ptr %anon.0cb9b3cd82a9bc1899a20c7efca9230d.46.anon.0cb9b3cd82a9bc1899a20c7efca9230d.45, i64 %43 - %45 = load i8, ptr %44, align 1, !noundef !4 - %46 = getelementptr inbounds nuw i8, ptr %39, i64 1 - store i8 %45, ptr %46, align 1 - %47 = add nuw nsw i64 %.sroa.013.030, 2 - %48 = icmp ult i64 %47, %19 - br i1 %48, label %.lr.ph, label %._crit_edge +43: ; preds = %34 + %44 = and i8 %30, 15 + %45 = zext nneg i8 %44 to i64 + %46 = getelementptr inbounds nuw i8, ptr %anon.0cb9b3cd82a9bc1899a20c7efca9230d.46.anon.0cb9b3cd82a9bc1899a20c7efca9230d.45, i64 %45 + %47 = load i8, ptr %46, align 1, !noundef !4 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 %40 + store i8 %47, ptr %48, align 1 + %49 = add nuw nsw i64 %.sroa.013.030, 2 + %50 = icmp ult i64 %49, %19 + br i1 %50, label %.lr.ph, label %._crit_edge -49: ; preds = %34 +51: ; preds = %34 tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef 36, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.54) #18 unreachable } diff --git a/bench/meshoptimizer/optimized/vfetchanalyzer.ll b/bench/meshoptimizer/optimized/vfetchanalyzer.ll index f0172066ff1..d687686d103 100644 --- a/bench/meshoptimizer/optimized/vfetchanalyzer.ll +++ b/bench/meshoptimizer/optimized/vfetchanalyzer.ll @@ -154,18 +154,18 @@ define linkonce_odr dso_local void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnu %6 = getelementptr i8, ptr %5, i64 -8 %7 = load ptr, ptr %6, align 8, !tbaa !4 invoke void %4(ptr noundef %7) - to label %8 unwind label %10 + to label %8 unwind label %11 8: ; preds = %.lr.ph %9 = add i64 %.04, -1 - %.not = icmp eq i64 %9, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !19 + %10 = icmp eq i64 %9, 0 + br i1 %10, label %._crit_edge, label %.lr.ph, !llvm.loop !19 -10: ; preds = %.lr.ph - %11 = landingpad { ptr, i32 } +11: ; preds = %.lr.ph + %12 = landingpad { ptr, i32 } catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - tail call void @__clang_call_terminate(ptr %12) #9 + %13 = extractvalue { ptr, i32 } %12, 0 + tail call void @__clang_call_terminate(ptr %13) #9 unreachable } diff --git a/bench/mimalloc/optimized/stats.ll b/bench/mimalloc/optimized/stats.ll index b93dc404776..62fcf80909f 100644 --- a/bench/mimalloc/optimized/stats.ll +++ b/bench/mimalloc/optimized/stats.ll @@ -1256,96 +1256,75 @@ define internal void @mi_buffered_out(ptr noundef readonly captures(address_is_n ; Function Attrs: nounwind uwtable define internal fastcc void @mi_stat_print_ex(ptr noundef readonly captures(none) %0, ptr noundef %1, i64 noundef range(i64 -1, 2) %2, ptr noundef nonnull %3, ptr noundef %4) unnamed_addr #2 { %6 = alloca [32 x i8], align 16 - %7 = alloca [32 x i8], align 16 - %8 = alloca [32 x i8], align 16 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.39, ptr noundef %1) #8 - %.not = icmp eq i64 %2, 0 - br i1 %.not, label %36, label %9 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %8 = load i64, ptr %7, align 8, !tbaa !14 + switch i64 %2, label %15 [ + i64 0, label %30 + i64 1, label %9 + ] 9: ; preds = %5 - %10 = icmp sgt i64 %2, 0 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %12 = load i64, ptr %11, align 8, !tbaa !14 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 - br i1 %10, label %15, label %19 - -15: ; preds = %9 + tail call fastcc void @mi_printf_amount(i64 noundef %8, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %10 = load i64, ptr %0, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %10, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %12 = load i64, ptr %11, align 8, !tbaa !16 tail call fastcc void @mi_printf_amount(i64 noundef %12, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - %16 = load i64, ptr %0, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %16, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - %17 = load i64, ptr %13, align 8, !tbaa !16 - tail call fastcc void @mi_printf_amount(i64 noundef %17, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - %18 = load i64, ptr %14, align 8, !tbaa !12 - tail call fastcc void @mi_printf_amount(i64 noundef %18, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - call void @llvm.lifetime.start.p0(ptr nonnull %8) - store i8 0, ptr %8, align 16, !tbaa !41 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.46, ptr noundef nonnull %8) #8 - call void @llvm.lifetime.end.p0(ptr nonnull %8) - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.45) #8 - br label %27 - -19: ; preds = %9 - tail call fastcc void @mi_printf_amount(i64 noundef %12, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 - %20 = load i64, ptr %0, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %20, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 - %21 = load i64, ptr %13, align 8, !tbaa !16 - tail call fastcc void @mi_printf_amount(i64 noundef %21, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 - %22 = load i64, ptr %14, align 8, !tbaa !12 - tail call fastcc void @mi_printf_amount(i64 noundef %22, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 - %23 = icmp eq i64 %2, -1 - br i1 %23, label %24, label %mi_printf_amount.exit - -24: ; preds = %19 - tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1) #8 - br label %27 - -mi_printf_amount.exit: ; preds = %19 - call void @llvm.lifetime.start.p0(ptr nonnull %7) - store i8 0, ptr %7, align 16, !tbaa !41 - %25 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %7, i64 noundef 32, ptr noundef nonnull @.str.49, i64 noundef 0, ptr noundef nonnull @.str.1) #8 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.46, ptr noundef nonnull %7) #8 - call void @llvm.lifetime.end.p0(ptr nonnull %7) + %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %14 = load i64, ptr %13, align 8, !tbaa !12 + tail call fastcc void @mi_printf_amount(i64 noundef %14, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 call void @llvm.lifetime.start.p0(ptr nonnull %6) store i8 0, ptr %6, align 16, !tbaa !41 - %26 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %6, i64 noundef 32, ptr noundef nonnull @.str.49, i64 noundef poison, ptr noundef nonnull poison) #8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.46, ptr noundef nonnull %6) #8 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %27 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.45) #8 + br label %21 + +15: ; preds = %5 + tail call fastcc void @mi_printf_amount(i64 noundef %8, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 + %16 = load i64, ptr %0, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %16, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %18 = load i64, ptr %17, align 8, !tbaa !16 + tail call fastcc void @mi_printf_amount(i64 noundef %18, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %20 = load i64, ptr %19, align 8, !tbaa !12 + tail call fastcc void @mi_printf_amount(i64 noundef %20, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) #9 + tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1) #8 + br label %21 -27: ; preds = %24, %mi_printf_amount.exit, %15 - %28 = load i64, ptr %0, align 8, !tbaa !15 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %30 = load i64, ptr %29, align 8, !tbaa !16 - %31 = icmp sgt i64 %28, %30 - br i1 %31, label %32, label %35 +21: ; preds = %15, %9 + %22 = load i64, ptr %0, align 8, !tbaa !15 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %24 = load i64, ptr %23, align 8, !tbaa !16 + %25 = icmp sgt i64 %22, %24 + br i1 %25, label %26, label %29 -32: ; preds = %27 +26: ; preds = %21 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.41) #8 - %33 = icmp eq ptr %4, null - %34 = select i1 %33, ptr @.str.42, ptr %4 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull %34) #8 + %27 = icmp eq ptr %4, null + %28 = select i1 %27, ptr @.str.42, ptr %4 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull %28) #8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.30) #8 - br label %42 + br label %34 -35: ; preds = %27 +29: ; preds = %21 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.43) #8 - br label %42 + br label %34 -36: ; preds = %5 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %38 = load i64, ptr %37, align 8, !tbaa !14 - tail call fastcc void @mi_printf_amount(i64 noundef %38, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - %39 = load i64, ptr %0, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %39, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 +30: ; preds = %5 + tail call fastcc void @mi_printf_amount(i64 noundef %8, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %31 = load i64, ptr %0, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %31, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.45) #8 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %41 = load i64, ptr %40, align 8, !tbaa !12 - tail call fastcc void @mi_printf_amount(i64 noundef %41, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %33 = load i64, ptr %32, align 8, !tbaa !12 + tail call fastcc void @mi_printf_amount(i64 noundef %33, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.30) #8 - br label %42 + br label %34 -42: ; preds = %32, %35, %36 +34: ; preds = %26, %29, %30 ret void } @@ -1357,54 +1336,54 @@ define internal fastcc void @mi_printf_amount(i64 noundef %0, i64 noundef range( %6 = alloca [8 x i8], align 1 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i8 0, ptr %5, align 16, !tbaa !41 - %7 = icmp slt i64 %1, 1 - %8 = select i1 %7, ptr @.str.45, ptr @.str.48 - %.not51 = icmp eq i64 %1, 0 - %9 = select i1 %.not51, i64 1000, i64 1024 - %10 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) - %11 = icmp samesign ult i64 %10, %9 - br i1 %11, label %12, label %18 - -12: ; preds = %4 - %.not52 = icmp eq i64 %0, 1 - %13 = load i8, ptr %8, align 1 - %.not53 = icmp eq i8 %13, 66 - %or.cond = select i1 %.not52, i1 %.not53, i1 false - br i1 %or.cond, label %29, label %14 - -14: ; preds = %12 - %15 = icmp eq i64 %0, 0 - %16 = select i1 %15, ptr @.str.1, ptr %8 - %17 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.49, i64 noundef %0, ptr noundef nonnull %16) #8 - br label %29 - -18: ; preds = %4 - %19 = select i1 %.not51, i64 1000000, i64 1048576 - %.not = icmp samesign ult i64 %10, %19 - %spec.select = select i1 %.not, ptr @.str.50, ptr @.str.51 - %spec.select54 = select i1 %.not, i64 %9, i64 %19 - %20 = mul nuw nsw i64 %spec.select54, %9 - %.not50 = icmp samesign ult i64 %10, %20 - %.144 = select i1 %.not50, ptr %spec.select, ptr @.str.52 - %.1 = select i1 %.not50, i64 %spec.select54, i64 %20 + %7 = icmp eq i64 %1, 1 + %8 = select i1 %7, ptr @.str.48, ptr @.str.45 + %9 = icmp eq i64 %1, 0 + %10 = select i1 %9, i64 1000, i64 1024 + %11 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) + %12 = icmp samesign ult i64 %11, %10 + br i1 %12, label %13, label %19 + +13: ; preds = %4 + %.not53 = icmp eq i64 %0, 1 + %14 = load i8, ptr %8, align 1 + %.not54 = icmp eq i8 %14, 66 + %or.cond = select i1 %.not53, i1 %.not54, i1 false + br i1 %or.cond, label %30, label %15 + +15: ; preds = %13 + %16 = icmp eq i64 %0, 0 + %17 = select i1 %16, ptr @.str.1, ptr %8 + %18 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.49, i64 noundef %0, ptr noundef nonnull %17) #8 + br label %30 + +19: ; preds = %4 + %20 = select i1 %9, i64 1000000, i64 1048576 + %.not50 = icmp samesign ult i64 %11, %20 + %spec.select = select i1 %.not50, ptr @.str.50, ptr @.str.51 + %spec.select55 = select i1 %.not50, i64 %10, i64 %20 + %21 = mul nuw nsw i64 %spec.select55, %10 + %.not51 = icmp samesign ult i64 %11, %21 + %.144 = select i1 %.not51, ptr %spec.select, ptr @.str.52 + %.1 = select i1 %.not51, i64 %spec.select55, i64 %21 %.lhs.trunc = trunc nuw nsw i64 %.1 to i32 - %21 = udiv i32 %.lhs.trunc, 10 - %.zext = zext nneg i32 %21 to i64 - %22 = sdiv i64 %0, %.zext - %23 = sdiv i64 %22, 10 - %24 = srem i64 %22, 10 + %22 = udiv i32 %.lhs.trunc, 10 + %.zext = zext nneg i32 %22 to i64 + %23 = sdiv i64 %0, %.zext + %24 = sdiv i64 %23, 10 + %25 = srem i64 %23, 10 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %25 = select i1 %.not51, ptr @.str.1, ptr @.str.54 - %26 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %6, i64 noundef 8, ptr noundef nonnull @.str.53, ptr noundef nonnull %.144, ptr noundef nonnull %25, ptr noundef nonnull %8) #8 - %27 = call i64 @llvm.abs.i64(i64 %24, i1 true) - %28 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.55, i64 noundef %23, i64 noundef %27, ptr noundef nonnull %6) #8 + %26 = select i1 %9, ptr @.str.1, ptr @.str.54 + %27 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %6, i64 noundef 8, ptr noundef nonnull @.str.53, ptr noundef nonnull %.144, ptr noundef nonnull %26, ptr noundef nonnull %8) #8 + %28 = call i64 @llvm.abs.i64(i64 %25, i1 true) + %29 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.55, i64 noundef %24, i64 noundef %28, ptr noundef nonnull %6) #8 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %29 + br label %30 -29: ; preds = %12, %14, %18 - %30 = icmp eq ptr %3, null - %31 = select i1 %30, ptr @.str.46, ptr %3 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef nonnull %5) #8 +30: ; preds = %13, %15, %19 + %31 = icmp eq ptr %3, null + %32 = select i1 %31, ptr @.str.46, ptr %3 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef nonnull %5) #8 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll b/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll index b74223d56b9..77b423cad43 100644 --- a/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll +++ b/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll @@ -67,39 +67,39 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h01a92cccbd667f %11 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr98drop_in_place$LT$alloc..raw_vec..RawVec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$17ha4e28234531e7ca0E.llvm.8684371289217427975"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #18 - to label %20 unwind label %18 + to label %21 unwind label %19 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i": ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !20 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h268d8b514e1ed877E.llvm.8684371289217427975"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5) %12 = getelementptr inbounds nuw i8, ptr %2, i64 8 %13 = load i64, ptr %12, align 8, !range !25, !noalias !20, !noundef !4 - %.not.i.i.i.i.i = icmp eq i64 %13, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit", label %14 - -14: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i" - %15 = load ptr, ptr %2, align 8, !noalias !20, !nonnull !4, !noundef !4 - %16 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %17 = load i64, ptr %16, align 8, !noalias !20, !noundef !4 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %8, ptr noundef nonnull %15, i64 noundef %13, i64 noundef %17) + %14 = icmp eq i64 %13, 0 + br i1 %14, label %"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit", label %15 + +15: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i" + %16 = load ptr, ptr %2, align 8, !noalias !20, !nonnull !4, !noundef !4 + %17 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %18 = load i64, ptr %17, align 8, !noalias !20, !noundef !4 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %8, ptr noundef nonnull %16, i64 noundef %13, i64 noundef %18) br label %"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit" -18: ; preds = %10 - %19 = landingpad { ptr, i32 } +19: ; preds = %10 + %20 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #19 unreachable -20: ; preds = %10 +21: ; preds = %10 resume { ptr, i32 } %11 -"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i", %14 +"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i", %15 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !20 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %4, ptr %3, align 8 - %22 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %21, ptr %22, align 8 + %23 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %22, ptr %23, align 8 call void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfcf0848e179ba379E.llvm.8684371289217427975"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void @@ -157,24 +157,24 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h072eaf7a409c9c call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hea2b1b7a9ac33d43E.llvm.8684371289217427975"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5) %6 = getelementptr inbounds nuw i8, ptr %2, i64 8 %7 = load i64, ptr %6, align 8, !range !25, !noalias !43, !noundef !4 - %.not.i.i.i.i.i = icmp eq i64 %7, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit", label %8 + %8 = icmp eq i64 %7, 0 + br i1 %8, label %"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit", label %9 -8: ; preds = %1 - %9 = load ptr, ptr %2, align 8, !noalias !43, !nonnull !4, !noundef !4 - %10 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %11 = load i64, ptr %10, align 8, !noalias !43, !noundef !4 - %12 = getelementptr inbounds nuw i8, ptr %4, i64 40 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %12, ptr noundef nonnull %9, i64 noundef %7, i64 noundef %11) +9: ; preds = %1 + %10 = load ptr, ptr %2, align 8, !noalias !43, !nonnull !4, !noundef !4 + %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %12 = load i64, ptr %11, align 8, !noalias !43, !noundef !4 + %13 = getelementptr inbounds nuw i8, ptr %4, i64 40 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %13, ptr noundef nonnull %10, i64 noundef %7, i64 noundef %12) br label %"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit" -"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit": ; preds = %1, %8 +"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit": ; preds = %1, %9 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !43 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %4, ptr %3, align 8 - %14 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %13, ptr %14, align 8 + %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %14, ptr %15, align 8 call void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5b5f3f4f5e3eacdcE.llvm.8684371289217427975"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void diff --git a/bench/ms-gsl/optimized/strict_notnull_tests.ll b/bench/ms-gsl/optimized/strict_notnull_tests.ll index d0f56ea16b7..c751c1d94d4 100644 --- a/bench/ms-gsl/optimized/strict_notnull_tests.ll +++ b/bench/ms-gsl/optimized/strict_notnull_tests.ll @@ -956,7 +956,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 233: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit200 %234 = load ptr, ptr %7, align 8 %.not108 = icmp eq ptr %234, null - br i1 %.not108, label %.thread413, label %235 + br i1 %.not108, label %.thread411, label %235 235: ; preds = %233 %236 = load ptr, ptr %234, align 8 @@ -1146,7 +1146,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %327 = getelementptr inbounds nuw i8, ptr %326, i64 8 %328 = load ptr, ptr %327, align 8 call void %328(ptr noundef nonnull align 8 dereferenceable(8) %234) #24 - br label %.thread413 + br label %.thread411 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit214: ; preds = %256 %329 = load ptr, ptr %234, align 8 @@ -1163,7 +1163,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %334(ptr noundef nonnull align 8 dereferenceable(8) %234) #24 br label %336 -.thread413: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit214.thread, %233 +.thread411: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit214.thread, %233 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN7testing15AssertionResultD2Ev.exit309 @@ -1247,7 +1247,7 @@ _ZN7testing7MessageD2Ev.exit223: ; preds = %_ZNKSt14default_del call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %_ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232 -_ZN7testing15AssertionResultD2Ev.exit309: ; preds = %.thread413, %_ZN7testing7MessageD2Ev.exit220 +_ZN7testing15AssertionResultD2Ev.exit309: ; preds = %.thread411, %_ZN7testing7MessageD2Ev.exit220 %358 = call noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() br i1 %358, label %359, label %485 @@ -1304,7 +1304,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 381: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit313 %382 = load ptr, ptr %12, align 8 %.not138 = icmp eq ptr %382, null - br i1 %.not138, label %.thread418, label %383 + br i1 %.not138, label %.thread415, label %383 383: ; preds = %381 %384 = load ptr, ptr %382, align 8 @@ -1494,7 +1494,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %475 = getelementptr inbounds nuw i8, ptr %474, i64 8 %476 = load ptr, ptr %475, align 8 call void %476(ptr noundef nonnull align 8 dereferenceable(8) %382) #24 - br label %.thread418 + br label %.thread415 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit322: ; preds = %404 %477 = load ptr, ptr %382, align 8 @@ -1511,7 +1511,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %482(ptr noundef nonnull align 8 dereferenceable(8) %382) #24 br label %484 -.thread418: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit322.thread, %381 +.thread415: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit322.thread, %381 call void @llvm.lifetime.end.p0(ptr nonnull %12) br label %503 @@ -1586,7 +1586,7 @@ _ZN7testing7MessageD2Ev.exit331: ; preds = %498, %_ZNKSt14defau call void @llvm.lifetime.end.p0(ptr nonnull %15) br label %_ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232 -503: ; preds = %.thread418, %_ZN7testing7MessageD2Ev.exit328 +503: ; preds = %.thread415, %_ZN7testing7MessageD2Ev.exit328 %504 = call noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() br i1 %504, label %505, label %629 @@ -1643,7 +1643,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 527: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit335 %528 = load ptr, ptr %17, align 8 %.not150 = icmp eq ptr %528, null - br i1 %.not150, label %.thread423, label %529 + br i1 %.not150, label %.thread419, label %529 529: ; preds = %527 %530 = load ptr, ptr %528, align 8 @@ -1833,7 +1833,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %619 = getelementptr inbounds nuw i8, ptr %618, i64 8 %620 = load ptr, ptr %619, align 8 call void %620(ptr noundef nonnull align 8 dereferenceable(8) %528) #24 - br label %.thread423 + br label %.thread419 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit345: ; preds = %550 %621 = load ptr, ptr %528, align 8 @@ -1850,7 +1850,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %626(ptr noundef nonnull align 8 dereferenceable(8) %528) #24 br label %628 -.thread423: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit345.thread, %527 +.thread419: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit345.thread, %527 call void @llvm.lifetime.end.p0(ptr nonnull %17) br label %647 @@ -1925,7 +1925,7 @@ _ZN7testing7MessageD2Ev.exit354: ; preds = %642, %_ZNKSt14defau call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %_ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232 -647: ; preds = %.thread423, %_ZN7testing7MessageD2Ev.exit351 +647: ; preds = %.thread419, %_ZN7testing7MessageD2Ev.exit351 ret void _ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232: ; preds = %336, %_ZN7testing7MessageD2Ev.exit223, %_ZN7testing7MessageD2Ev.exit354, %628, %_ZN7testing7MessageD2Ev.exit331, %484, %228 diff --git a/bench/nanobind/optimized/nb_static_property.ll b/bench/nanobind/optimized/nb_static_property.ll index fe328746ddb..9f564691861 100644 --- a/bench/nanobind/optimized/nb_static_property.ll +++ b/bench/nanobind/optimized/nb_static_property.ll @@ -134,11 +134,11 @@ define internal noundef i32 @_ZN8nanobind6detailL28nb_static_property_descr_setE %5 = getelementptr i8, ptr %.val, i64 168 %.val.val = load i64, ptr %5, align 8 %6 = and i64 %.val.val, 2147483648 - %.not6 = icmp eq i64 %6, 0 - %spec.select = select i1 %.not6, ptr %.val, ptr %1 - %7 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @PyProperty_Type, i64 280), align 8 - %8 = tail call noundef i32 %7(ptr noundef %0, ptr noundef nonnull %spec.select, ptr noundef %2) - ret i32 %8 + %7 = icmp eq i64 %6, 0 + %spec.select = select i1 %7, ptr %.val, ptr %1 + %8 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @PyProperty_Type, i64 280), align 8 + %9 = tail call noundef i32 %8(ptr noundef %0, ptr noundef nonnull %spec.select, ptr noundef %2) + ret i32 %9 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/nuttx/optimized/lib_etheraton.ll b/bench/nuttx/optimized/lib_etheraton.ll index 6207a3d04a0..5265ae80b43 100644 --- a/bench/nuttx/optimized/lib_etheraton.ll +++ b/bench/nuttx/optimized/lib_etheraton.ll @@ -11,9 +11,9 @@ target triple = "x86_64-pc-linux-gnu" define ptr @ether_aton_r(ptr noundef readonly captures(none) %0, ptr noundef writeonly captures(ret: address, provenance) %1) local_unnamed_addr #0 { br label %3 -3: ; preds = %40, %2 - %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %40 ] - %.01739 = phi ptr [ %0, %2 ], [ %41, %40 ] +3: ; preds = %36, %2 + %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %36 ] + %.01739 = phi ptr [ %0, %2 ], [ %37, %36 ] %4 = load i8, ptr %.01739, align 1 %5 = sext i8 %4 to i32 %6 = add nsw i32 %5, -48 @@ -30,67 +30,63 @@ define ptr @ether_aton_r(ptr noundef readonly captures(none) %0, ptr noundef wri br label %xdigit.exit.thread 13: ; preds = %8 - %14 = add nsw i32 %5, -71 - %15 = icmp ult i32 %14, -6 - %16 = add nsw i32 %5, -55 - %17 = icmp slt i8 %4, 55 - %or.cond = or i1 %17, %15 + %14 = add nsw i32 %5, -55 + %15 = add nsw i32 %5, -71 + %or.cond = icmp ult i32 %15, -6 br i1 %or.cond, label %xdigit.exit.thread28, label %xdigit.exit.thread xdigit.exit.thread: ; preds = %13, %3, %11 - %.0.i27 = phi i32 [ %6, %3 ], [ %12, %11 ], [ %16, %13 ] - %18 = getelementptr inbounds nuw i8, ptr %.01739, i64 1 - %19 = load i8, ptr %18, align 1 - %20 = sext i8 %19 to i32 - %21 = add nsw i32 %20, -48 - %22 = icmp ult i32 %21, 10 - br i1 %22, label %xdigit.exit25.thread, label %23 - -23: ; preds = %xdigit.exit.thread - %24 = add nsw i32 %20, -97 - %25 = icmp ult i32 %24, 6 - br i1 %25, label %26, label %28 - -26: ; preds = %23 - %27 = add nsw i32 %20, -87 + %.0.i27 = phi i32 [ %6, %3 ], [ %12, %11 ], [ %14, %13 ] + %16 = getelementptr inbounds nuw i8, ptr %.01739, i64 1 + %17 = load i8, ptr %16, align 1 + %18 = sext i8 %17 to i32 + %19 = add nsw i32 %18, -48 + %20 = icmp ult i32 %19, 10 + br i1 %20, label %xdigit.exit25.thread, label %21 + +21: ; preds = %xdigit.exit.thread + %22 = add nsw i32 %18, -97 + %23 = icmp ult i32 %22, 6 + br i1 %23, label %24, label %26 + +24: ; preds = %21 + %25 = add nsw i32 %18, -87 br label %xdigit.exit25.thread -28: ; preds = %23 - %29 = add nsw i32 %20, -71 - %30 = icmp ult i32 %29, -6 - %31 = add nsw i32 %20, -55 - %32 = icmp slt i8 %19, 55 - %or.cond36 = or i1 %32, %30 +26: ; preds = %21 + %27 = add nsw i32 %18, -55 + %28 = add nsw i32 %18, -71 + %or.cond36 = icmp ult i32 %28, -6 br i1 %or.cond36, label %xdigit.exit.thread28, label %xdigit.exit25.thread -xdigit.exit25.thread: ; preds = %xdigit.exit.thread, %26, %28 - %.0.i2432 = phi i32 [ %31, %28 ], [ %21, %xdigit.exit.thread ], [ %27, %26 ] - %33 = getelementptr inbounds nuw i8, ptr %.01739, i64 2 - %34 = shl nuw nsw i32 %.0.i27, 4 - %35 = add nuw nsw i32 %.0.i2432, %34 - %36 = trunc i32 %35 to i8 - %37 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv - store i8 %36, ptr %37, align 1 +xdigit.exit25.thread: ; preds = %xdigit.exit.thread, %24, %26 + %.0.i2432 = phi i32 [ %27, %26 ], [ %19, %xdigit.exit.thread ], [ %25, %24 ] + %29 = getelementptr inbounds nuw i8, ptr %.01739, i64 2 + %30 = shl nsw i32 %.0.i27, 4 + %31 = add nuw nsw i32 %.0.i2432, %30 + %32 = trunc i32 %31 to i8 + %33 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv + store i8 %32, ptr %33, align 1 %.not21 = icmp eq i64 %indvars.iv, 5 - %38 = load i8, ptr %33, align 1 - br i1 %.not21, label %42, label %39 + %34 = load i8, ptr %29, align 1 + br i1 %.not21, label %38, label %35 -39: ; preds = %xdigit.exit25.thread - %.not22 = icmp eq i8 %38, 58 - br i1 %.not22, label %40, label %xdigit.exit.thread28 +35: ; preds = %xdigit.exit25.thread + %.not22 = icmp eq i8 %34, 58 + br i1 %.not22, label %36, label %xdigit.exit.thread28 -40: ; preds = %39 - %41 = getelementptr inbounds nuw i8, ptr %.01739, i64 3 +36: ; preds = %35 + %37 = getelementptr inbounds nuw i8, ptr %.01739, i64 3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 br label %3 -42: ; preds = %xdigit.exit25.thread - %.not = icmp eq i8 %38, 0 +38: ; preds = %xdigit.exit25.thread + %.not = icmp eq i8 %34, 0 %. = select i1 %.not, ptr %1, ptr null br label %xdigit.exit.thread28 -xdigit.exit.thread28: ; preds = %28, %13, %39, %42 - %.0 = phi ptr [ %., %42 ], [ null, %39 ], [ null, %13 ], [ null, %28 ] +xdigit.exit.thread28: ; preds = %26, %13, %35, %38 + %.0 = phi ptr [ %., %38 ], [ null, %35 ], [ null, %13 ], [ null, %26 ] ret ptr %.0 } @@ -99,9 +95,9 @@ define ptr @ether_aton(ptr noundef readonly captures(none) %0) local_unnamed_add %scevgep = getelementptr i8, ptr %0, i64 17 br label %2 -2: ; preds = %39, %1 - %indvars.iv.i = phi i64 [ 0, %1 ], [ %indvars.iv.next.i, %39 ] - %.01739.i = phi ptr [ %0, %1 ], [ %40, %39 ] +2: ; preds = %35, %1 + %indvars.iv.i = phi i64 [ 0, %1 ], [ %indvars.iv.next.i, %35 ] + %.01739.i = phi ptr [ %0, %1 ], [ %36, %35 ] %3 = load i8, ptr %.01739.i, align 1 %4 = sext i8 %3 to i32 %5 = add nsw i32 %4, -48 @@ -118,68 +114,64 @@ define ptr @ether_aton(ptr noundef readonly captures(none) %0) local_unnamed_add br label %xdigit.exit.thread.i 12: ; preds = %7 - %13 = add nsw i32 %4, -71 - %14 = icmp ult i32 %13, -6 - %15 = add nsw i32 %4, -55 - %16 = icmp slt i8 %3, 55 - %or.cond.i = or i1 %16, %14 + %13 = add nsw i32 %4, -55 + %14 = add nsw i32 %4, -71 + %or.cond.i = icmp ult i32 %14, -6 br i1 %or.cond.i, label %ether_aton_r.exit, label %xdigit.exit.thread.i xdigit.exit.thread.i: ; preds = %12, %10, %2 - %.0.i27.i = phi i32 [ %5, %2 ], [ %11, %10 ], [ %15, %12 ] - %17 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 1 - %18 = load i8, ptr %17, align 1 - %19 = sext i8 %18 to i32 - %20 = add nsw i32 %19, -48 - %21 = icmp ult i32 %20, 10 - br i1 %21, label %xdigit.exit25.thread.i, label %22 - -22: ; preds = %xdigit.exit.thread.i - %23 = add nsw i32 %19, -97 - %24 = icmp ult i32 %23, 6 - br i1 %24, label %25, label %27 - -25: ; preds = %22 - %26 = add nsw i32 %19, -87 + %.0.i27.i = phi i32 [ %5, %2 ], [ %11, %10 ], [ %13, %12 ] + %15 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 1 + %16 = load i8, ptr %15, align 1 + %17 = sext i8 %16 to i32 + %18 = add nsw i32 %17, -48 + %19 = icmp ult i32 %18, 10 + br i1 %19, label %xdigit.exit25.thread.i, label %20 + +20: ; preds = %xdigit.exit.thread.i + %21 = add nsw i32 %17, -97 + %22 = icmp ult i32 %21, 6 + br i1 %22, label %23, label %25 + +23: ; preds = %20 + %24 = add nsw i32 %17, -87 br label %xdigit.exit25.thread.i -27: ; preds = %22 - %28 = add nsw i32 %19, -71 - %29 = icmp ult i32 %28, -6 - %30 = add nsw i32 %19, -55 - %31 = icmp slt i8 %18, 55 - %or.cond36.i = or i1 %31, %29 +25: ; preds = %20 + %26 = add nsw i32 %17, -55 + %27 = add nsw i32 %17, -71 + %or.cond36.i = icmp ult i32 %27, -6 br i1 %or.cond36.i, label %ether_aton_r.exit, label %xdigit.exit25.thread.i -xdigit.exit25.thread.i: ; preds = %27, %25, %xdigit.exit.thread.i - %.0.i2432.i = phi i32 [ %30, %27 ], [ %20, %xdigit.exit.thread.i ], [ %26, %25 ] - %32 = shl nuw nsw i32 %.0.i27.i, 4 - %33 = add nuw nsw i32 %.0.i2432.i, %32 - %34 = trunc i32 %33 to i8 - %35 = getelementptr inbounds nuw i8, ptr @ether_aton.addr, i64 %indvars.iv.i - store i8 %34, ptr %35, align 1 +xdigit.exit25.thread.i: ; preds = %25, %23, %xdigit.exit.thread.i + %.0.i2432.i = phi i32 [ %26, %25 ], [ %18, %xdigit.exit.thread.i ], [ %24, %23 ] + %28 = shl nsw i32 %.0.i27.i, 4 + %29 = add nuw nsw i32 %.0.i2432.i, %28 + %30 = trunc i32 %29 to i8 + %31 = getelementptr inbounds nuw i8, ptr @ether_aton.addr, i64 %indvars.iv.i + store i8 %30, ptr %31, align 1 %.not21.i = icmp eq i64 %indvars.iv.i, 5 - br i1 %.not21.i, label %41, label %36 + br i1 %.not21.i, label %37, label %32 -36: ; preds = %xdigit.exit25.thread.i - %37 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 2 - %38 = load i8, ptr %37, align 1 - %.not22.i = icmp eq i8 %38, 58 - br i1 %.not22.i, label %39, label %ether_aton_r.exit +32: ; preds = %xdigit.exit25.thread.i + %33 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 2 + %34 = load i8, ptr %33, align 1 + %.not22.i = icmp eq i8 %34, 58 + br i1 %.not22.i, label %35, label %ether_aton_r.exit -39: ; preds = %36 - %40 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 3 +35: ; preds = %32 + %36 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 br label %2 -41: ; preds = %xdigit.exit25.thread.i - %42 = load i8, ptr %scevgep, align 1 - %.not.i = icmp eq i8 %42, 0 +37: ; preds = %xdigit.exit25.thread.i + %38 = load i8, ptr %scevgep, align 1 + %.not.i = icmp eq i8 %38, 0 %..i = select i1 %.not.i, ptr @ether_aton.addr, ptr null br label %ether_aton_r.exit -ether_aton_r.exit: ; preds = %12, %27, %36, %41 - %.0.i = phi ptr [ %..i, %41 ], [ null, %36 ], [ null, %27 ], [ null, %12 ] +ether_aton_r.exit: ; preds = %12, %25, %32, %37 + %.0.i = phi ptr [ %..i, %37 ], [ null, %32 ], [ null, %25 ], [ null, %12 ] ret ptr %.0.i } diff --git a/bench/openblas/optimized/dbdsqr.ll b/bench/openblas/optimized/dbdsqr.ll index 418bede31a3..92f7112b510 100644 --- a/bench/openblas/optimized/dbdsqr.ll +++ b/bench/openblas/optimized/dbdsqr.ll @@ -415,8 +415,9 @@ define void @dbdsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %211 = getelementptr inbounds nuw double, ptr %33, i64 %209 %212 = add nuw i32 %.0850.ph1222, 1 %213 = zext nneg i32 %.0850.ph1222 to i64 + %smax = call i32 @llvm.smax.i32(i32 %.0850.ph1222, i32 2) %214 = zext nneg i32 %208 to i64 - %wide.trip.count1381 = zext nneg i32 %.0850.ph1222 to i64 + %wide.trip.count1381 = zext nneg i32 %smax to i64 br label %.lr.ph1194 .lr.ph1194: ; preds = %.lr.ph1194.backedge, %.lr.ph1194.lr.ph @@ -576,7 +577,7 @@ define void @dbdsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef .outer.backedge: ; preds = %249, %290 %.0850.ph.be = phi i32 [ %291, %290 ], [ %208, %249 ] - %292 = icmp slt i32 %.0850.ph.be, 2 + %292 = icmp ult i32 %.0850.ph.be, 2 br i1 %292, label %.loopexit976, label %.lr.ph1194.lr.ph 293: ; preds = %253 @@ -1750,6 +1751,9 @@ declare double @llvm.fabs.f64(double) #5 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umax.i32(i32, i32) #5 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #5 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="skylake-avx512" "target-features"="+adx,+aes,+avx,+avx2,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512vl,+bmi,+bmi2,+clflushopt,+clwb,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdrnd,+rdseed,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsavec,+xsaveopt,+xsaves" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="skylake-avx512" "target-features"="+adx,+aes,+avx,+avx2,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512vl,+bmi,+bmi2,+clflushopt,+clwb,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdrnd,+rdseed,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsavec,+xsaveopt,+xsaves" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(errnomem: write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="skylake-avx512" "target-features"="+adx,+aes,+avx,+avx2,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512vl,+bmi,+bmi2,+clflushopt,+clwb,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdrnd,+rdseed,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsavec,+xsaveopt,+xsaves" } diff --git a/bench/opencv/optimized/rmat.ll b/bench/opencv/optimized/rmat.ll index 8db90ebd834..52fd361701c 100644 --- a/bench/opencv/optimized/rmat.ll +++ b/bench/opencv/optimized/rmat.ll @@ -350,10 +350,10 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i: ; preds = %15 br label %.critedge .critedge: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i, %8 - %.sroa.039.052 = phi ptr [ %20, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %13, %8 ] - %.sroa.12.050 = phi ptr [ %21, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %14, %8 ] - %22 = ptrtoint ptr %.sroa.12.050 to i64 - %23 = ptrtoint ptr %.sroa.039.052 to i64 + %.sroa.038.051 = phi ptr [ %20, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %13, %8 ] + %.sroa.12.049 = phi ptr [ %21, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %14, %8 ] + %22 = ptrtoint ptr %.sroa.12.049 to i64 + %23 = ptrtoint ptr %.sroa.038.051 to i64 %24 = sub i64 %22, %23 %25 = ashr exact i64 %24, 2 %26 = icmp ugt i64 %25, 1152921504606846975 @@ -361,84 +361,81 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i: ; preds = %15 27: ; preds = %.critedge invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.4) #16 - to label %.noexc33 unwind label %_ZNSt6vectorIiSaIiEED2Ev.exit + to label %.noexc32 unwind label %_ZNSt6vectorIiSaIiEED2Ev.exit -.noexc33: ; preds = %27 +.noexc32: ; preds = %27 unreachable _ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %.critedge tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %.not.i.i.i.i31 = icmp ne ptr %.sroa.12.050, %.sroa.039.052 - tail call void @llvm.assume(i1 %.not.i.i.i.i31) - %28 = shl nuw nsw i64 %24, 1 - %29 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %28) #19 - to label %.noexc34 unwind label %_ZNSt6vectorIiSaIiEED2Ev.exit - -.noexc34: ; preds = %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i - store ptr %29, ptr %0, align 8, !tbaa !33 - %30 = getelementptr inbounds nuw i64, ptr %29, i64 %25 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %30, ptr %31, align 8, !tbaa !45 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 %28 - %33 = shl i64 %22, 1 - %34 = add i64 %33, -8 - %35 = shl i64 %23, 1 - %36 = sub i64 %34, %35 - %37 = and i64 %36, -8 - %38 = add i64 %37, 8 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %29, i8 0, i64 %38, i1 false), !tbaa !34 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %32, ptr %39, align 8, !tbaa !43 + %28 = icmp ne ptr %.sroa.12.049, %.sroa.038.051 + tail call void @llvm.assume(i1 %28) + %29 = shl nuw nsw i64 %24, 1 + %30 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %29) #19 + to label %.noexc33 unwind label %_ZNSt6vectorIiSaIiEED2Ev.exit + +.noexc33: ; preds = %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i + store ptr %30, ptr %0, align 8, !tbaa !33 + %31 = getelementptr inbounds nuw i64, ptr %30, i64 %25 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %31, ptr %32, align 8, !tbaa !45 + %33 = getelementptr inbounds nuw i8, ptr %30, i64 %29 + %34 = shl i64 %22, 1 + %35 = add i64 %34, -8 + %36 = shl i64 %23, 1 + %37 = sub i64 %35, %36 + %38 = and i64 %37, -8 + %39 = add i64 %38, 8 + tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %30, i8 0, i64 %39, i1 false), !tbaa !34 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %33, ptr %40, align 8, !tbaa !43 %.val = load i32, ptr %1, align 8, !tbaa !49 - %40 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %.val29 = load i32, ptr %40, align 4, !tbaa !50 - %41 = icmp eq i32 %.val29, -1 - %42 = add i32 %.val29, 511 - %43 = and i32 %42, 511 - %44 = add nuw nsw i32 %43, 1 - %45 = select i1 %41, i32 1, i32 %44 - %46 = shl i32 %.val, 2 - %47 = and i32 %46, 28 - %48 = lshr i32 675553809, %47 - %49 = and i32 %48, 15 - %50 = mul nuw nsw i32 %45, %49 - %51 = zext nneg i32 %50 to i64 - %52 = getelementptr inbounds i8, ptr %32, i64 -8 - store i64 %51, ptr %52, align 8, !tbaa !34 - %53 = trunc i64 %25 to i32 - %54 = icmp sgt i32 %53, 1 - br i1 %54, label %.lr.ph, label %_ZNSt6vectorIiSaIiEED2Ev.exit36 - -.lr.ph: ; preds = %.noexc34 - %55 = add nuw nsw i64 %25, 4294967294 - %56 = and i64 %55, 4294967295 - %57 = shl nuw nsw i64 %56, 3 - %58 = getelementptr i8, ptr %29, i64 %57 - %scevgep = getelementptr i8, ptr %58, i64 8 - %load_initial = load i64, ptr %scevgep, align 8 - br label %60 + %41 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %.val29 = load i32, ptr %41, align 4, !tbaa !50 + %42 = icmp eq i32 %.val29, -1 + %43 = add i32 %.val29, 511 + %44 = and i32 %43, 511 + %45 = add nuw nsw i32 %44, 1 + %46 = select i1 %42, i32 1, i32 %45 + %47 = shl i32 %.val, 2 + %48 = and i32 %47, 28 + %49 = lshr i32 675553809, %48 + %50 = and i32 %49, 15 + %51 = mul nuw nsw i32 %46, %50 + %52 = zext nneg i32 %51 to i64 + %53 = getelementptr inbounds i8, ptr %33, i64 -8 + store i64 %52, ptr %53, align 8, !tbaa !34 + %54 = trunc i64 %25 to i32 + %55 = icmp sgt i32 %54, 1 + br i1 %55, label %.lr.ph, label %_ZNSt6vectorIiSaIiEED2Ev.exit35 + +.lr.ph: ; preds = %.noexc33 + %56 = add nuw nsw i64 %25, 4294967294 + %57 = and i64 %56, 4294967295 + br label %59 _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i, %27 - %59 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %.sroa.039.052) #17 - resume { ptr, i32 } %59 - -60: ; preds = %.lr.ph, %60 - %store_forwarded = phi i64 [ %load_initial, %.lr.ph ], [ %65, %60 ] - %indvars.iv = phi i64 [ %56, %.lr.ph ], [ %indvars.iv.next, %60 ] - %61 = getelementptr inbounds nuw i64, ptr %29, i64 %indvars.iv - %62 = getelementptr inbounds nuw i32, ptr %.sroa.039.052, i64 %indvars.iv - %63 = load i32, ptr %62, align 4, !tbaa !51 - %64 = sext i32 %63 to i64 - %65 = mul i64 %store_forwarded, %64 - store i64 %65, ptr %61, align 8, !tbaa !34 + tail call void @_ZdlPv(ptr noundef nonnull %.sroa.038.051) #17 + resume { ptr, i32 } %58 + +59: ; preds = %.lr.ph, %59 + %indvars.iv = phi i64 [ %57, %.lr.ph ], [ %indvars.iv.next, %59 ] + %60 = getelementptr inbounds nuw i64, ptr %30, i64 %indvars.iv + %61 = getelementptr inbounds nuw i8, ptr %60, i64 8 + %62 = load i64, ptr %61, align 8, !tbaa !34 + %63 = getelementptr inbounds nuw i32, ptr %.sroa.038.051, i64 %indvars.iv + %64 = load i32, ptr %63, align 4, !tbaa !51 + %65 = sext i32 %64 to i64 + %66 = mul i64 %62, %65 + store i64 %66, ptr %60, align 8, !tbaa !34 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not = icmp eq i64 %indvars.iv, 0 - br i1 %.not, label %_ZNSt6vectorIiSaIiEED2Ev.exit36, label %60, !llvm.loop !52 + %67 = icmp ult i64 %indvars.iv.next, 2147483646 + br i1 %67, label %59, label %_ZNSt6vectorIiSaIiEED2Ev.exit35, !llvm.loop !52 -_ZNSt6vectorIiSaIiEED2Ev.exit36: ; preds = %60, %.noexc34 - tail call void @_ZdlPv(ptr noundef nonnull %.sroa.039.052) #17 +_ZNSt6vectorIiSaIiEED2Ev.exit35: ; preds = %59, %.noexc33 + tail call void @_ZdlPv(ptr noundef nonnull %.sroa.038.051) #17 ret void } diff --git a/bench/openjdk/optimized/NetworkInterface.ll b/bench/openjdk/optimized/NetworkInterface.ll index a06afbce77b..903a48a2d0d 100644 --- a/bench/openjdk/optimized/NetworkInterface.ll +++ b/bench/openjdk/optimized/NetworkInterface.ll @@ -1073,7 +1073,7 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range 9: ; preds = %2 call void @JNU_ThrowByNameWithMessageAndLastError(ptr noundef %0, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.31) #15 - br label %60 + br label %61 10: ; preds = %2 %11 = load i32, ptr %3, align 8 @@ -1084,7 +1084,7 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range 15: ; preds = %10 call void @JNU_ThrowOutOfMemoryError(ptr noundef %0, ptr noundef nonnull @.str.32) #15 - br label %60 + br label %61 16: ; preds = %10 store ptr %13, ptr %6, align 8 @@ -1095,7 +1095,7 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range 19: ; preds = %16 call void @JNU_ThrowByNameWithMessageAndLastError(ptr noundef %0, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.31) #15 call void @free(ptr noundef nonnull %13) #15 - br label %60 + br label %61 20: ; preds = %16 %21 = load i32, ptr %3, align 8 @@ -1106,95 +1106,95 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range %22 = load ptr, ptr %6, align 8 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %52 - %23 = phi i32 [ %53, %52 ], [ %21, %.lr.ph.preheader ] - %.0405 = phi i32 [ %54, %52 ], [ 0, %.lr.ph.preheader ] - %.0413 = phi ptr [ %55, %52 ], [ %22, %.lr.ph.preheader ] - %.0422 = phi ptr [ %.1, %52 ], [ null, %.lr.ph.preheader ] +.lr.ph: ; preds = %.lr.ph.preheader, %53 + %23 = phi i32 [ %54, %53 ], [ %21, %.lr.ph.preheader ] + %.0405 = phi i32 [ %55, %53 ], [ 0, %.lr.ph.preheader ] + %.0413 = phi ptr [ %56, %53 ], [ %22, %.lr.ph.preheader ] + %.0422 = phi ptr [ %.1, %53 ], [ null, %.lr.ph.preheader ] %24 = getelementptr inbounds nuw i8, ptr %.0413, i64 16 %25 = load i16, ptr %24, align 8 %.not = icmp eq i16 %25, 2 - br i1 %.not, label %26, label %52 + br i1 %.not, label %26, label %53 26: ; preds = %.lr.ph call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %24, i64 16, i1 false) %27 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35091, ptr noundef nonnull %.0413) #15 %28 = icmp eq i32 %27, 0 - br i1 %28, label %29, label %36 + br i1 %28, label %29, label %37 29: ; preds = %26 %30 = load i16, ptr %24, align 8 %31 = and i16 %30, 2 - %.not45 = icmp eq i16 %31, 0 - br i1 %.not45, label %36, label %32 + %32 = icmp eq i16 %31, 0 + br i1 %32, label %37, label %33 -32: ; preds = %29 +33: ; preds = %29 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 2 dereferenceable(16) %4, i64 16, i1 false) - %33 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35097, ptr noundef nonnull %.0413) #15 - %34 = icmp eq i32 %33, 0 - br i1 %34, label %35, label %36 + %34 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35097, ptr noundef nonnull %.0413) #15 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %36, label %37 -35: ; preds = %32 +36: ; preds = %33 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %24, i64 16, i1 false) - br label %36 + br label %37 -36: ; preds = %32, %35, %29, %26 - %.039 = phi ptr [ %5, %35 ], [ null, %32 ], [ null, %29 ], [ null, %26 ] +37: ; preds = %33, %36, %29, %26 + %.039 = phi ptr [ %5, %36 ], [ null, %33 ], [ null, %29 ], [ null, %26 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 2 dereferenceable(16) %4, i64 16, i1 false) - %37 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35099, ptr noundef nonnull %.0413) #15 - %38 = icmp eq i32 %37, 0 - br i1 %38, label %39, label %translateIPv4AddressToPrefix.exit - -39: ; preds = %36 - %40 = getelementptr inbounds nuw i8, ptr %.0413, i64 20 - %41 = load i32, ptr %40, align 4 - %42 = call i32 @ntohl(i32 noundef %41) #17 - %.not9.i = icmp eq i32 %42, 0 + %38 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35099, ptr noundef nonnull %.0413) #15 + %39 = icmp eq i32 %38, 0 + br i1 %39, label %40, label %translateIPv4AddressToPrefix.exit + +40: ; preds = %37 + %41 = getelementptr inbounds nuw i8, ptr %.0413, i64 20 + %42 = load i32, ptr %41, align 4 + %43 = call i32 @ntohl(i32 noundef %42) #17 + %.not9.i = icmp eq i32 %43, 0 br i1 %.not9.i, label %translateIPv4AddressToPrefix.exit, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %39 - %43 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %42, i1 true) - %44 = trunc nuw nsw i32 %43 to i16 - %45 = sub nuw nsw i16 32, %44 +.lr.ph.preheader.i: ; preds = %40 + %44 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %43, i1 true) + %45 = trunc nuw nsw i32 %44 to i16 + %46 = sub nuw nsw i16 32, %45 br label %translateIPv4AddressToPrefix.exit -translateIPv4AddressToPrefix.exit: ; preds = %.lr.ph.preheader.i, %39, %36 - %.0 = phi i16 [ 0, %36 ], [ 0, %39 ], [ %45, %.lr.ph.preheader.i ] - %46 = call fastcc ptr @addif(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %.0413, ptr noundef %.0422, ptr noundef %4, ptr noundef %.039, i32 noundef 2, i16 noundef signext %.0) - %47 = load ptr, ptr %0, align 8 - %48 = getelementptr inbounds nuw i8, ptr %47, i64 120 - %49 = load ptr, ptr %48, align 8 - %50 = call ptr %49(ptr noundef nonnull %0) #15 - %.not46 = icmp eq ptr %50, null - br i1 %.not46, label %translateIPv4AddressToPrefix.exit._crit_edge, label %51 +translateIPv4AddressToPrefix.exit: ; preds = %.lr.ph.preheader.i, %40, %37 + %.0 = phi i16 [ 0, %37 ], [ 0, %40 ], [ %46, %.lr.ph.preheader.i ] + %47 = call fastcc ptr @addif(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %.0413, ptr noundef %.0422, ptr noundef %4, ptr noundef %.039, i32 noundef 2, i16 noundef signext %.0) + %48 = load ptr, ptr %0, align 8 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 120 + %50 = load ptr, ptr %49, align 8 + %51 = call ptr %50(ptr noundef nonnull %0) #15 + %.not46 = icmp eq ptr %51, null + br i1 %.not46, label %translateIPv4AddressToPrefix.exit._crit_edge, label %52 translateIPv4AddressToPrefix.exit._crit_edge: ; preds = %translateIPv4AddressToPrefix.exit %.pre = load i32, ptr %3, align 8 - br label %52 + br label %53 -51: ; preds = %translateIPv4AddressToPrefix.exit +52: ; preds = %translateIPv4AddressToPrefix.exit call void @free(ptr noundef %13) #15 - call fastcc void @freeif(ptr noundef %46) - br label %60 - -52: ; preds = %translateIPv4AddressToPrefix.exit._crit_edge, %.lr.ph - %53 = phi i32 [ %23, %.lr.ph ], [ %.pre, %translateIPv4AddressToPrefix.exit._crit_edge ] - %.1 = phi ptr [ %.0422, %.lr.ph ], [ %46, %translateIPv4AddressToPrefix.exit._crit_edge ] - %54 = add i32 %.0405, 1 - %55 = getelementptr inbounds nuw i8, ptr %.0413, i64 40 - %56 = zext i32 %54 to i64 - %57 = sext i32 %53 to i64 - %58 = udiv i64 %57, 40 - %59 = icmp samesign ugt i64 %58, %56 - br i1 %59, label %.lr.ph, label %._crit_edge, !llvm.loop !18 - -._crit_edge: ; preds = %52, %20 - %.042.lcssa = phi ptr [ null, %20 ], [ %.1, %52 ] + call fastcc void @freeif(ptr noundef %47) + br label %61 + +53: ; preds = %translateIPv4AddressToPrefix.exit._crit_edge, %.lr.ph + %54 = phi i32 [ %23, %.lr.ph ], [ %.pre, %translateIPv4AddressToPrefix.exit._crit_edge ] + %.1 = phi ptr [ %.0422, %.lr.ph ], [ %47, %translateIPv4AddressToPrefix.exit._crit_edge ] + %55 = add i32 %.0405, 1 + %56 = getelementptr inbounds nuw i8, ptr %.0413, i64 40 + %57 = zext i32 %55 to i64 + %58 = sext i32 %54 to i64 + %59 = udiv i64 %58, 40 + %60 = icmp samesign ugt i64 %59, %57 + br i1 %60, label %.lr.ph, label %._crit_edge, !llvm.loop !18 + +._crit_edge: ; preds = %53, %20 + %.042.lcssa = phi ptr [ null, %20 ], [ %.1, %53 ] call void @free(ptr noundef %13) #15 - br label %60 + br label %61 -60: ; preds = %._crit_edge, %51, %19, %15, %9 - %.043 = phi ptr [ null, %9 ], [ null, %15 ], [ null, %19 ], [ null, %51 ], [ %.042.lcssa, %._crit_edge ] +61: ; preds = %._crit_edge, %52, %19, %15, %9 + %.043 = phi ptr [ null, %9 ], [ null, %15 ], [ null, %19 ], [ null, %52 ], [ %.042.lcssa, %._crit_edge ] ret ptr %.043 } @@ -1295,8 +1295,8 @@ define internal fastcc ptr @find_bound_interface(ptr noundef %0, ptr noundef rea 41: ; preds = %42 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 16 - br i1 %exitcond.not, label %.thread, label %42, !llvm.loop !19 + %.not = icmp eq i64 %indvars.iv.next, 16 + br i1 %.not, label %.thread, label %42, !llvm.loop !19 42: ; preds = %.preheader, %41 %indvars.iv = phi i64 [ %indvars.iv.next, %41 ], [ 0, %.preheader ] @@ -1556,20 +1556,22 @@ getFlags.exit: ; preds = %24, %18 %35 = icmp slt i32 %34, 0 %36 = load i16, ptr %31, align 8 %37 = zext i16 %36 to i32 + %.028 = select i1 %35, i32 0, i32 %37 call void @llvm.lifetime.end.p0(ptr nonnull %3) %38 = call i32 @close(i32 noundef %.03.i.ph) #15 %39 = load ptr, ptr %0, align 8 %40 = getelementptr inbounds nuw i8, ptr %39, i64 1360 %41 = load ptr, ptr %40, align 8 call void %41(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %9) #15 - br i1 %35, label %42, label %43 + %.not31 = icmp sgt i32 %34, -1 + br i1 %.not31, label %43, label %42 42: ; preds = %getFlags.exit call void @JNU_ThrowByNameWithMessageAndLastError(ptr noundef nonnull %0, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.27) #15 br label %43 43: ; preds = %getFlags.exit, %12, %17, %42, %27, %11 - %.0 = phi i32 [ -1, %27 ], [ -1, %42 ], [ -1, %11 ], [ -1, %17 ], [ -1, %12 ], [ %37, %getFlags.exit ] + %.0 = phi i32 [ -1, %27 ], [ -1, %42 ], [ -1, %11 ], [ -1, %17 ], [ -1, %12 ], [ %.028, %getFlags.exit ] ret i32 %.0 } @@ -1726,8 +1728,8 @@ openSocketWithFallback.exit: ; preds = %7, %10 23: ; preds = %24 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 6 - br i1 %exitcond.not, label %.loopexit, label %24, !llvm.loop !23 + %.not7 = icmp eq i64 %indvars.iv.next, 6 + br i1 %.not7, label %.loopexit, label %24, !llvm.loop !23 24: ; preds = %20, %23 %indvars.iv = phi i64 [ 0, %20 ], [ %indvars.iv.next, %23 ] diff --git a/bench/openjdk/optimized/ProcessHandleImpl_linux.ll b/bench/openjdk/optimized/ProcessHandleImpl_linux.ll index 597b770ae2f..9be3b0cfd31 100644 --- a/bench/openjdk/optimized/ProcessHandleImpl_linux.ll +++ b/bench/openjdk/optimized/ProcessHandleImpl_linux.ll @@ -91,54 +91,54 @@ define hidden i32 @os_getParentPidAndTimings(ptr noundef readnone captures(none) %11 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 32, ptr noundef nonnull @.str, i32 noundef %1) #13 %12 = call noalias ptr @fopen64(ptr noundef nonnull %6, ptr noundef nonnull @.str.1) %13 = icmp eq ptr %12, null - br i1 %13, label %43, label %14 + br i1 %13, label %44, label %14 14: ; preds = %4 %15 = call i64 @fread(ptr noundef nonnull %5, i64 noundef 1, i64 noundef 2047, ptr noundef nonnull %12) %16 = tail call i32 @fclose(ptr noundef nonnull %12) %17 = and i64 %15, 2147483648 - %.not = icmp eq i64 %17, 0 - br i1 %.not, label %18, label %43 - -18: ; preds = %14 - %19 = and i64 %15, 2147483647 - %20 = getelementptr inbounds nuw i8, ptr %5, i64 %19 - store i8 0, ptr %20, align 1 - %21 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 40) #14 - %22 = icmp eq ptr %21, null - br i1 %22, label %43, label %23 - -23: ; preds = %18 - %24 = getelementptr inbounds nuw i8, ptr %21, i64 1 - %25 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %24, i32 noundef 41) #14 - %26 = icmp eq ptr %25, null - br i1 %26, label %43, label %27 - -27: ; preds = %23 - %28 = getelementptr inbounds nuw i8, ptr %25, i64 1 - %29 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %28, ptr noundef nonnull @.str.2, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10) #13 - %.not18 = icmp eq i32 %29, 4 - br i1 %.not18, label %30, label %43 - -30: ; preds = %27 - %31 = load i64, ptr %8, align 8 - %32 = load i64, ptr %9, align 8 - %33 = add i64 %32, %31 - %34 = load i64, ptr @clock_ticks_per_second, align 8 - %35 = sdiv i64 1000000000, %34 - %36 = mul i64 %35, %33 - store i64 %36, ptr %2, align 8 - %37 = load i64, ptr @bootTime_ms, align 8 - %38 = load i64, ptr %10, align 8 - %39 = mul i64 %38, 1000 - %40 = udiv i64 %39, %34 - %41 = add i64 %40, %37 - store i64 %41, ptr %3, align 8 - %42 = load i32, ptr %7, align 4 - br label %43 - -43: ; preds = %27, %23, %18, %14, %4, %30 - %.0 = phi i32 [ %42, %30 ], [ -1, %4 ], [ -1, %14 ], [ -1, %18 ], [ -1, %23 ], [ 0, %27 ] + %18 = icmp eq i64 %17, 0 + br i1 %18, label %19, label %44 + +19: ; preds = %14 + %20 = and i64 %15, 2147483647 + %21 = getelementptr inbounds nuw i8, ptr %5, i64 %20 + store i8 0, ptr %21, align 1 + %22 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 40) #14 + %23 = icmp eq ptr %22, null + br i1 %23, label %44, label %24 + +24: ; preds = %19 + %25 = getelementptr inbounds nuw i8, ptr %22, i64 1 + %26 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %25, i32 noundef 41) #14 + %27 = icmp eq ptr %26, null + br i1 %27, label %44, label %28 + +28: ; preds = %24 + %29 = getelementptr inbounds nuw i8, ptr %26, i64 1 + %30 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %29, ptr noundef nonnull @.str.2, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10) #13 + %.not18 = icmp eq i32 %30, 4 + br i1 %.not18, label %31, label %44 + +31: ; preds = %28 + %32 = load i64, ptr %8, align 8 + %33 = load i64, ptr %9, align 8 + %34 = add i64 %33, %32 + %35 = load i64, ptr @clock_ticks_per_second, align 8 + %36 = sdiv i64 1000000000, %35 + %37 = mul i64 %36, %34 + store i64 %37, ptr %2, align 8 + %38 = load i64, ptr @bootTime_ms, align 8 + %39 = load i64, ptr %10, align 8 + %40 = mul i64 %39, 1000 + %41 = udiv i64 %40, %35 + %42 = add i64 %41, %38 + store i64 %42, ptr %3, align 8 + %43 = load i32, ptr %7, align 4 + br label %44 + +44: ; preds = %28, %24, %19, %14, %4, %31 + %.0 = phi i32 [ %43, %31 ], [ -1, %4 ], [ -1, %14 ], [ -1, %19 ], [ -1, %24 ], [ 0, %28 ] ret i32 %.0 } @@ -198,7 +198,7 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 %26 = zext nneg i32 %25 to i64 %27 = call noalias ptr @malloc(i64 noundef %26) #15 %28 = icmp eq ptr %27, null - br i1 %28, label %.thread96, label %29 + br i1 %28, label %.thread95, label %29 29: ; preds = %22 %30 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 32, ptr noundef nonnull @.str.5, i32 noundef %2) #13 @@ -230,11 +230,11 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 .lr.ph: ; preds = %41, %.lr.ph %47 = phi i32 [ %56, %.lr.ph ], [ %45, %41 ] %48 = phi i64 [ %55, %.lr.ph ], [ %44, %41 ] - %.0104 = phi ptr [ %51, %.lr.ph ], [ %27, %41 ] - %.067103 = phi i32 [ %49, %.lr.ph ], [ 0, %41 ] - %49 = add nuw nsw i32 %47, %.067103 + %.0103 = phi ptr [ %51, %.lr.ph ], [ %27, %41 ] + %.067102 = phi i32 [ %49, %.lr.ph ], [ 0, %41 ] + %49 = add nuw nsw i32 %47, %.067102 %50 = and i64 %48, 2147483647 - %51 = getelementptr inbounds nuw i8, ptr %.0104, i64 %50 + %51 = getelementptr inbounds nuw i8, ptr %.0103, i64 %50 %52 = load i32, ptr @pageSize, align 4 %53 = sub nsw i32 %52, %49 %54 = sext i32 %53 to i64 @@ -247,7 +247,7 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 %.067.lcssa = phi i32 [ 0, %41 ], [ %49, %.lr.ph ] %.lcssa = phi i32 [ %45, %41 ], [ %56, %.lr.ph ] %58 = icmp slt i32 %.lcssa, 0 - br i1 %58, label %.thread96.sink.split, label %59 + br i1 %58, label %.thread95.sink.split, label %59 59: ; preds = %._crit_edge %60 = zext i32 %.067.lcssa to i64 @@ -270,90 +270,89 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 70: ; preds = %64, %69 %71 = phi i1 [ false, %69 ], [ true, %64 ] - %.not87 = phi i1 [ true, %69 ], [ false, %64 ] %72 = icmp sgt i32 %.067.lcssa, 0 %73 = icmp eq ptr %.071, null %or.cond = or i1 %73, %71 - %or.cond90 = select i1 %72, i1 %or.cond, i1 false - br i1 %or.cond90, label %74, label %.loopexit102 + %or.cond89 = select i1 %72, i1 %or.cond, i1 false + br i1 %or.cond89, label %74, label %.loopexit101 74: ; preds = %70 %75 = add nsw i32 %62, 1 %76 = sext i32 %75 to i64 %77 = call noalias ptr @malloc(i64 noundef %76) #15 %.not86 = icmp eq ptr %77, null - br i1 %.not86, label %.loopexit102, label %.lr.ph108.preheader + br i1 %.not86, label %.loopexit101, label %.lr.ph107.preheader -.lr.ph108.preheader: ; preds = %74 +.lr.ph107.preheader: ; preds = %74 %78 = add nuw nsw i32 %.067.lcssa, 1 %79 = zext nneg i32 %78 to i64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 1 dereferenceable(1) %27, i64 %79, i1 false) - br label %.lr.ph108 + br label %.lr.ph107 -.lr.ph108: ; preds = %.lr.ph108.preheader, %84 - %indvars.iv = phi i64 [ 0, %.lr.ph108.preheader ], [ %indvars.iv.next, %84 ] +.lr.ph107: ; preds = %.lr.ph107.preheader, %84 + %indvars.iv = phi i64 [ 0, %.lr.ph107.preheader ], [ %indvars.iv.next, %84 ] %80 = getelementptr inbounds nuw i8, ptr %77, i64 %indvars.iv %81 = load i8, ptr %80, align 1 %82 = icmp eq i8 %81, 0 br i1 %82, label %83, label %84 -83: ; preds = %.lr.ph108 +83: ; preds = %.lr.ph107 store i8 32, ptr %80, align 1 br label %84 -84: ; preds = %.lr.ph108, %83 +84: ; preds = %.lr.ph107, %83 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %60 - br i1 %exitcond.not, label %.loopexit102, label %.lr.ph108, !llvm.loop !9 + br i1 %exitcond.not, label %.loopexit101, label %.lr.ph107, !llvm.loop !9 -.loopexit102: ; preds = %84, %74, %70 +.loopexit101: ; preds = %84, %74, %70 %.173 = phi ptr [ null, %74 ], [ null, %70 ], [ %77, %84 ] - br i1 %.not87, label %.preheader, label %.loopexit + br i1 %71, label %.loopexit, label %.preheader -.preheader: ; preds = %.loopexit102 +.preheader: ; preds = %.loopexit101 %85 = load i8, ptr %27, align 1 %86 = icmp ne i8 %85, 0 %87 = icmp ne i32 %.067.lcssa, 0 %88 = and i1 %87, %86 - br i1 %88, label %.lr.ph111, label %.loopexit + br i1 %88, label %.lr.ph110, label %.loopexit -.lr.ph111: ; preds = %.preheader +.lr.ph110: ; preds = %.preheader %89 = ptrtoint ptr %61 to i64 br label %90 -90: ; preds = %.lr.ph111, %90 - %.1110 = phi ptr [ %27, %.lr.ph111 ], [ %95, %90 ] - %.2109 = phi i32 [ 0, %.lr.ph111 ], [ %96, %90 ] - %91 = ptrtoint ptr %.1110 to i64 +90: ; preds = %.lr.ph110, %90 + %.1109 = phi ptr [ %27, %.lr.ph110 ], [ %95, %90 ] + %.2108 = phi i32 [ 0, %.lr.ph110 ], [ %96, %90 ] + %91 = ptrtoint ptr %.1109 to i64 %92 = sub i64 %89, %91 - %93 = call i64 @strnlen(ptr noundef nonnull %.1110, i64 noundef %92) #14 - %94 = getelementptr i8, ptr %.1110, i64 %93 + %93 = call i64 @strnlen(ptr noundef nonnull %.1109, i64 noundef %92) #14 + %94 = getelementptr i8, ptr %.1109, i64 %93 %95 = getelementptr i8, ptr %94, i64 1 - %96 = add nuw nsw i32 %.2109, 1 + %96 = add nuw nsw i32 %.2108, 1 %97 = load i8, ptr %95, align 1 %98 = icmp ne i8 %97, 0 %99 = icmp ult ptr %95, %61 %100 = and i1 %99, %98 br i1 %100, label %90, label %.loopexit, !llvm.loop !10 -.loopexit: ; preds = %90, %.preheader, %.loopexit102 - %.074 = phi ptr [ null, %.loopexit102 ], [ %61, %.preheader ], [ %61, %90 ] - %.170 = phi i32 [ 0, %.loopexit102 ], [ 0, %.preheader ], [ %96, %90 ] +.loopexit: ; preds = %90, %.preheader, %.loopexit101 + %.074 = phi ptr [ null, %.loopexit101 ], [ %61, %.preheader ], [ %61, %90 ] + %.170 = phi i32 [ 0, %.loopexit101 ], [ 0, %.preheader ], [ %96, %90 ] call void @unix_fillArgArray(ptr noundef %0, ptr noundef %1, i32 noundef %.170, ptr noundef nonnull %27, ptr noundef %.074, ptr noundef %.071, ptr noundef %.173) #13 call void @free(ptr noundef %27) #13 - %.not89 = icmp eq ptr %.173, null - br i1 %.not89, label %.thread96, label %.thread96.sink.split + %.not88 = icmp eq ptr %.173, null + br i1 %.not88, label %.thread95, label %.thread95.sink.split -.thread96.sink.split: ; preds = %.loopexit, %._crit_edge +.thread95.sink.split: ; preds = %.loopexit, %._crit_edge %.sink = phi ptr [ %27, %._crit_edge ], [ %.173, %.loopexit ] call void @free(ptr noundef nonnull %.sink) #13 - br label %.thread96 + br label %.thread95 -.thread96: ; preds = %.thread96.sink.split, %22, %.loopexit +.thread95: ; preds = %.thread95.sink.split, %22, %.loopexit %101 = call i32 @close(i32 noundef %20) #13 br label %102 -102: ; preds = %16, %9, %.thread96 +102: ; preds = %16, %9, %.thread95 ret void } diff --git a/bench/openjdk/optimized/compileLog.ll b/bench/openjdk/optimized/compileLog.ll index dfd548ebe0c..be55ccfaf76 100644 --- a/bench/openjdk/optimized/compileLog.ll +++ b/bench/openjdk/optimized/compileLog.ll @@ -606,49 +606,49 @@ define hidden void @_ZN10CompileLog16clear_identitiesEv(ptr noundef nonnull writ ; Function Attrs: mustprogress nounwind uwtable define hidden void @_ZN10CompileLog19finish_log_on_errorEP12outputStreamPci(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 align 2 { %.b = load i1, ptr @_ZZN10CompileLog19finish_log_on_errorEP12outputStreamPciE11called_exit, align 1 - br i1 %.b, label %63, label %4 + br i1 %.b, label %62, label %4 4: ; preds = %3 store i1 true, ptr @_ZZN10CompileLog19finish_log_on_errorEP12outputStreamPciE11called_exit, align 1 %5 = load ptr, ptr @_ZN10CompileLog6_firstE, align 8 - %.not96 = icmp eq ptr %5, null - br i1 %.not96, label %._crit_edge100, label %.lr.ph99 + %.not97 = icmp eq ptr %5, null + br i1 %.not97, label %._crit_edge101, label %.lr.ph100 -.lr.ph99: ; preds = %4 +.lr.ph100: ; preds = %4 %6 = sext i32 %2 to i64 %7 = add nsw i32 %2, -1 %8 = sext i32 %7 to i64 %9 = getelementptr inbounds i8, ptr %1, i64 %8 br label %10 -10: ; preds = %.lr.ph99, %57 - %.097 = phi ptr [ %5, %.lr.ph99 ], [ %59, %57 ] - %11 = load ptr, ptr %.097, align 8 +10: ; preds = %.lr.ph100, %56 + %.098 = phi ptr [ %5, %.lr.ph100 ], [ %58, %56 ] + %11 = load ptr, ptr %.098, align 8 %12 = load ptr, ptr %11, align 8 - tail call void %12(ptr noundef nonnull align 8 dereferenceable(152) %.097) #11 - %13 = getelementptr inbounds nuw i8, ptr %.097, i64 152 + tail call void %12(ptr noundef nonnull align 8 dereferenceable(152) %.098) #11 + %13 = getelementptr inbounds nuw i8, ptr %.098, i64 152 %14 = load ptr, ptr %13, align 8 %15 = tail call i32 (ptr, i32, ...) @open64(ptr noundef %14, i32 noundef 0) #11 %.not76 = icmp eq i32 %15, -1 - br i1 %.not76, label %57, label %16 + br i1 %.not76, label %56, label %16 16: ; preds = %10 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.20, i64 noundef 25) #11 - %17 = getelementptr inbounds nuw i8, ptr %.097, i64 168 + %17 = getelementptr inbounds nuw i8, ptr %.098, i64 168 %18 = load i64, ptr %17, align 8 %19 = tail call i32 (ptr, i64, ptr, ...) @jio_snprintf(ptr noundef %1, i64 noundef %6, ptr noundef nonnull @.str.21, i64 noundef %18) #11 %20 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #12 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %1, i64 noundef %20) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.22, i64 noundef 2) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 - %21 = getelementptr inbounds nuw i8, ptr %.097, i64 160 + %21 = getelementptr inbounds nuw i8, ptr %.098, i64 160 %22 = load i64, ptr %21, align 8 - %.not7783 = icmp eq i64 %22, 0 - br i1 %.not7783, label %._crit_edge, label %.lr.ph + %.not7784 = icmp eq i64 %22, 0 + br i1 %.not7784, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %16, %26 - %.06984 = phi i64 [ %27, %26 ], [ %22, %16 ] - %.07079 = tail call i64 @llvm.umin.i64(i64 %.06984, i64 %6) + %.06985 = phi i64 [ %27, %26 ], [ %22, %16 ] + %.07079 = tail call i64 @llvm.umin.i64(i64 %.06985, i64 %6) %sext = shl i64 %.07079, 32 %23 = ashr exact i64 %sext, 32 %24 = tail call i64 @read(i32 noundef %15, ptr noundef nonnull %1, i64 noundef %23) #11 @@ -656,7 +656,7 @@ define hidden void @_ZN10CompileLog19finish_log_on_errorEP12outputStreamPci(ptr br i1 %25, label %._crit_edge, label %26 26: ; preds = %.lr.ph - %27 = sub i64 %.06984, %24 + %27 = sub i64 %.06985, %24 %28 = load ptr, ptr %0, align 8 %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 %30 = load ptr, ptr %29, align 8 @@ -667,112 +667,112 @@ define hidden void @_ZN10CompileLog19finish_log_on_errorEP12outputStreamPci(ptr ._crit_edge: ; preds = %26, %.lr.ph, %16 %31 = tail call i64 @read(i32 noundef %15, ptr noundef nonnull %1, i64 noundef %8) #11 %32 = icmp sgt i64 %31, 0 - br i1 %32, label %.lr.ph94, label %.critedge101 + br i1 %32, label %.lr.ph95, label %.critedge102 -.loopexit: ; preds = %53 +.loopexit: ; preds = %52 %33 = tail call i64 @read(i32 noundef %15, ptr noundef nonnull %1, i64 noundef %8) #11 %34 = icmp sgt i64 %33, 0 - br i1 %34, label %.lr.ph94, label %._crit_edge95, !llvm.loop !11 + br i1 %34, label %.lr.ph95, label %._crit_edge96, !llvm.loop !11 -.lr.ph94: ; preds = %._crit_edge, %.loopexit +.lr.ph95: ; preds = %._crit_edge, %.loopexit %35 = phi i64 [ %33, %.loopexit ], [ %31, %._crit_edge ] - %.06692 = phi i32 [ %.4, %.loopexit ], [ 0, %._crit_edge ] - %.06791 = phi i1 [ true, %.loopexit ], [ false, %._crit_edge ] + %.06693 = phi i32 [ %.4, %.loopexit ], [ 0, %._crit_edge ] + %.06792 = phi i1 [ true, %.loopexit ], [ false, %._crit_edge ] store i8 0, ptr %9, align 1 - br i1 %.06791, label %.preheader.preheader, label %36 + br i1 %.06792, label %.preheader.preheader, label %36 -36: ; preds = %.lr.ph94 +36: ; preds = %.lr.ph95 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.23, i64 noundef 10) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.24, i64 noundef 9) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 br label %.preheader.preheader -.preheader.preheader: ; preds = %36, %.lr.ph94 +.preheader.preheader: ; preds = %36, %.lr.ph95 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %53 - %.06590 = phi ptr [ %55, %53 ], [ %1, %.preheader.preheader ] - %.189 = phi i32 [ %.4, %53 ], [ %.06692, %.preheader.preheader ] - %.17188 = phi i64 [ %54, %53 ], [ %35, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %52 + %.06591 = phi ptr [ %54, %52 ], [ %1, %.preheader.preheader ] + %.190 = phi i32 [ %.4, %52 ], [ %.06693, %.preheader.preheader ] + %.17189 = phi i64 [ %53, %52 ], [ %35, %.preheader.preheader ] br label %37 -37: ; preds = %.preheader, %44 - %.06487 = phi i64 [ 0, %.preheader ], [ %45, %44 ] - %.286 = phi i32 [ %.189, %.preheader ], [ %.3, %44 ] - %38 = getelementptr inbounds i8, ptr %.06590, i64 %.06487 +37: ; preds = %.preheader, %43 + %.06488 = phi i64 [ 0, %.preheader ], [ %44, %43 ] + %.287 = phi i32 [ %.190, %.preheader ], [ %.3, %43 ] + %38 = getelementptr inbounds i8, ptr %.06591, i64 %.06488 %39 = load i8, ptr %38, align 1 - switch i8 %39, label %44 [ + switch i8 %39, label %43 [ i8 93, label %40 - i8 62, label %42 + i8 62, label %41 ] 40: ; preds = %37 - %41 = tail call i32 @llvm.smin.i32(i32 %.286, i32 1) - %spec.select = add nuw nsw i32 %41, 1 - br label %44 - -42: ; preds = %37 - %43 = icmp eq i32 %.286, 2 - br i1 %43, label %46, label %44 - -44: ; preds = %40, %37, %42 - %.3 = phi i32 [ %spec.select, %40 ], [ 0, %42 ], [ 0, %37 ] - %45 = add nuw i64 %.06487, 1 - %exitcond.not = icmp eq i64 %45, %.17188 + %.not80 = icmp eq i32 %.287, 0 + %spec.select = select i1 %.not80, i32 1, i32 2 + br label %43 + +41: ; preds = %37 + %42 = icmp eq i32 %.287, 2 + br i1 %42, label %45, label %43 + +43: ; preds = %40, %37, %41 + %.3 = phi i32 [ %spec.select, %40 ], [ 0, %41 ], [ 0, %37 ] + %44 = add nuw i64 %.06488, 1 + %exitcond.not = icmp eq i64 %44, %.17189 br i1 %exitcond.not, label %.critedge, label %37, !llvm.loop !12 -46: ; preds = %42 - %47 = load ptr, ptr %0, align 8 - %48 = getelementptr inbounds nuw i8, ptr %47, i64 8 - %49 = load ptr, ptr %48, align 8 - tail call void %49(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06590, i64 noundef %.06487) #11 +45: ; preds = %41 + %46 = load ptr, ptr %0, align 8 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 + %48 = load ptr, ptr %47, align 8 + tail call void %48(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06591, i64 noundef %.06488) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.25, i64 noundef 12) #11 - br label %53 - -.critedge: ; preds = %44 - %50 = load ptr, ptr %0, align 8 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %52 = load ptr, ptr %51, align 8 - tail call void %52(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06590, i64 noundef %.17188) #11 - br label %53 - -53: ; preds = %.critedge, %46 - %.06481 = phi i64 [ %.06487, %46 ], [ %.17188, %.critedge ] - %.4 = phi i32 [ 0, %46 ], [ %.3, %.critedge ] - %54 = sub i64 %.17188, %.06481 - %55 = getelementptr inbounds i8, ptr %.06590, i64 %.06481 - %.not78 = icmp eq i64 %54, 0 + br label %52 + +.critedge: ; preds = %43 + %49 = load ptr, ptr %0, align 8 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 8 + %51 = load ptr, ptr %50, align 8 + tail call void %51(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06591, i64 noundef %.17189) #11 + br label %52 + +52: ; preds = %.critedge, %45 + %.06482 = phi i64 [ %.06488, %45 ], [ %.17189, %.critedge ] + %.4 = phi i32 [ 0, %45 ], [ %.3, %.critedge ] + %53 = sub i64 %.17189, %.06482 + %54 = getelementptr inbounds i8, ptr %.06591, i64 %.06482 + %.not78 = icmp eq i64 %53, 0 br i1 %.not78, label %.loopexit, label %.preheader, !llvm.loop !13 -._crit_edge95: ; preds = %.loopexit +._crit_edge96: ; preds = %.loopexit tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.26, i64 noundef 3) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.27, i64 noundef 11) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 - br label %.critedge101 + br label %.critedge102 -.critedge101: ; preds = %._crit_edge, %._crit_edge95 +.critedge102: ; preds = %._crit_edge, %._crit_edge96 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.28, i64 noundef 18) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 - %56 = tail call i32 @close(i32 noundef %15) #11 - br label %57 - -57: ; preds = %.critedge101, %10 - %58 = getelementptr inbounds nuw i8, ptr %.097, i64 432 - %59 = load ptr, ptr %58, align 8 - %60 = load ptr, ptr %.097, align 8 - %61 = getelementptr inbounds nuw i8, ptr %60, i64 32 - %62 = load ptr, ptr %61, align 8 - tail call void %62(ptr noundef nonnull align 8 dereferenceable(440) %.097) #11 - %.not = icmp eq ptr %59, null - br i1 %.not, label %._crit_edge100, label %10, !llvm.loop !14 - -._crit_edge100: ; preds = %57, %4 + %55 = tail call i32 @close(i32 noundef %15) #11 + br label %56 + +56: ; preds = %.critedge102, %10 + %57 = getelementptr inbounds nuw i8, ptr %.098, i64 432 + %58 = load ptr, ptr %57, align 8 + %59 = load ptr, ptr %.098, align 8 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 32 + %61 = load ptr, ptr %60, align 8 + tail call void %61(ptr noundef nonnull align 8 dereferenceable(440) %.098) #11 + %.not = icmp eq ptr %58, null + br i1 %.not, label %._crit_edge101, label %10, !llvm.loop !14 + +._crit_edge101: ; preds = %56, %4 store ptr null, ptr @_ZN10CompileLog6_firstE, align 8 - br label %63 + br label %62 -63: ; preds = %3, %._crit_edge100 +62: ; preds = %3, %._crit_edge101 ret void } @@ -868,9 +868,6 @@ declare void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #10 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #10 - attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openmpi/optimized/pmix_vmem.ll b/bench/openmpi/optimized/pmix_vmem.ll index 5022b41eaed..850dbf97282 100644 --- a/bench/openmpi/optimized/pmix_vmem.ll +++ b/bench/openmpi/optimized/pmix_vmem.ll @@ -15,17 +15,17 @@ define range(i32 -1, 1) i32 @pmix_vmem_find_hole(i32 noundef %0, ptr noundef wri call void @llvm.lifetime.start.p0(ptr nonnull %5) %6 = tail call noalias ptr @fopen(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) %.not = icmp eq ptr %6, null - br i1 %.not, label %use_hole.exit84, label %use_hole.exit - -use_hole.exit: ; preds = %3, %92 - %.047 = phi i64 [ %.148, %92 ], [ 0, %3 ] - %.043 = phi i64 [ %.144, %92 ], [ 0, %3 ] - %.041 = phi i64 [ %.094102, %92 ], [ 0, %3 ] - %.039 = phi i32 [ %.093104, %92 ], [ 4, %3 ] - %.036 = phi i32 [ %.137, %92 ], [ 0, %3 ] + br i1 %.not, label %use_hole.exit82, label %use_hole.exit + +use_hole.exit: ; preds = %3, %95 + %.047 = phi i64 [ %.148, %95 ], [ 0, %3 ] + %.043 = phi i64 [ %.144, %95 ], [ 0, %3 ] + %.041 = phi i64 [ %.092100, %95 ], [ 0, %3 ] + %.039 = phi i32 [ %.091102, %95 ], [ 4, %3 ] + %.036 = phi i32 [ %.137, %95 ], [ 0, %3 ] %7 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 96, ptr noundef nonnull %6) %.not53 = icmp eq ptr %7, null - br i1 %.not53, label %use_hole.exit.thread114, label %8 + br i1 %.not53, label %use_hole.exit.thread111, label %8 8: ; preds = %use_hole.exit call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -82,35 +82,36 @@ use_hole.exit: ; preds = %3, %92 br label %33 parse_map_line.exit: ; preds = %8, %12, %14, %19 - %.094 = phi i64 [ 0, %8 ], [ 0, %14 ], [ %16, %19 ], [ 0, %12 ] + %.092 = phi i64 [ 0, %8 ], [ 0, %14 ], [ %16, %19 ], [ 0, %12 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %87 + br label %90 33: ; preds = %32, %30, %28, %26, %24, %21 + %not. = phi i1 [ true, %24 ], [ true, %30 ], [ true, %32 ], [ false, %28 ], [ true, %26 ], [ true, %21 ] %34 = phi i1 [ false, %24 ], [ false, %30 ], [ false, %32 ], [ true, %28 ], [ false, %26 ], [ false, %21 ] %35 = phi i1 [ true, %24 ], [ true, %30 ], [ true, %32 ], [ true, %28 ], [ false, %26 ], [ true, %21 ] - %.093.ph = phi i32 [ 1, %24 ], [ 4, %30 ], [ 4, %32 ], [ 3, %28 ], [ 2, %26 ], [ 0, %21 ] + %.091.ph = phi i32 [ 1, %24 ], [ 4, %30 ], [ 4, %32 ], [ 3, %28 ], [ 2, %26 ], [ 0, %21 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - switch i32 %0, label %87 [ + switch i32 %0, label %90 [ i32 0, label %36 i32 1, label %49 i32 2, label %66 i32 4, label %82 - i32 3, label %84 + i32 3, label %87 ] 36: ; preds = %33 %37 = call i32 @fclose(ptr noundef nonnull %6) %38 = lshr i64 %9, 1 %39 = icmp ult i64 %9, %2 - br i1 %39, label %use_hole.exit84, label %40 + br i1 %39, label %use_hole.exit82, label %40 40: ; preds = %36 %41 = and i64 %38, 9223372036787666944 %42 = add nuw i64 %41, 67108864 %43 = add i64 %42, %2 - %.not.i60 = icmp ugt i64 %43, %9 - br i1 %.not.i60, label %44, label %use_hole.exit84.sink.split + %.not.i58 = icmp ugt i64 %43, %9 + br i1 %.not.i58, label %44, label %use_hole.exit82.sink.split 44: ; preds = %40 %45 = and i64 %38, 9223372036852678656 @@ -119,12 +120,12 @@ parse_map_line.exit: ; preds = %8, %12, %14, %19 %.not25.i = icmp ugt i64 %47, %9 %48 = sub i64 %9, %2 %spec.select.i = select i1 %.not25.i, i64 %48, i64 %46 - br label %use_hole.exit84.sink.split + br label %use_hole.exit82.sink.split 49: ; preds = %33 %50 = icmp eq i32 %.039, 2 %or.cond = and i1 %50, %35 - br i1 %or.cond, label %51, label %87 + br i1 %or.cond, label %51, label %90 51: ; preds = %49 %52 = call i32 @fclose(ptr noundef nonnull %6) @@ -132,26 +133,26 @@ parse_map_line.exit: ; preds = %8, %12, %14, %19 %54 = lshr i64 %53, 1 %55 = add i64 %54, %.041 %56 = icmp ult i64 %53, %2 - br i1 %56, label %use_hole.exit84, label %57 + br i1 %56, label %use_hole.exit82, label %57 57: ; preds = %51 %58 = and i64 %55, -67108864 %59 = add i64 %58, 67108864 %60 = add i64 %59, %2 - %.not.i64 = icmp ugt i64 %60, %9 - br i1 %.not.i64, label %61, label %use_hole.exit84.sink.split + %.not.i62 = icmp ugt i64 %60, %9 + br i1 %.not.i62, label %61, label %use_hole.exit82.sink.split 61: ; preds = %57 %62 = and i64 %55, -2097152 %63 = add i64 %62, 2097152 %64 = add i64 %63, %2 - %.not25.i68 = icmp ugt i64 %64, %9 + %.not25.i66 = icmp ugt i64 %64, %9 %65 = sub i64 %9, %2 - %spec.select.i69 = select i1 %.not25.i68, i64 %65, i64 %63 - br label %use_hole.exit84.sink.split + %spec.select.i67 = select i1 %.not25.i66, i64 %65, i64 %63 + br label %use_hole.exit82.sink.split 66: ; preds = %33 - br i1 %34, label %67, label %87 + br i1 %34, label %67, label %90 67: ; preds = %66 %68 = call i32 @fclose(ptr noundef nonnull %6) @@ -159,99 +160,99 @@ parse_map_line.exit: ; preds = %8, %12, %14, %19 %70 = lshr i64 %69, 1 %71 = add i64 %70, %.041 %72 = icmp ult i64 %69, %2 - br i1 %72, label %use_hole.exit84, label %73 + br i1 %72, label %use_hole.exit82, label %73 73: ; preds = %67 %74 = and i64 %71, -67108864 %75 = add i64 %74, 67108864 %76 = add i64 %75, %2 - %.not.i71 = icmp ugt i64 %76, %9 - br i1 %.not.i71, label %77, label %use_hole.exit84.sink.split + %.not.i69 = icmp ugt i64 %76, %9 + br i1 %.not.i69, label %77, label %use_hole.exit82.sink.split 77: ; preds = %73 %78 = and i64 %71, -2097152 %79 = add i64 %78, 2097152 %80 = add i64 %79, %2 - %.not25.i75 = icmp ugt i64 %80, %9 + %.not25.i73 = icmp ugt i64 %80, %9 %81 = sub i64 %9, %2 - %spec.select.i76 = select i1 %.not25.i75, i64 %81, i64 %79 - br label %use_hole.exit84.sink.split + %spec.select.i74 = select i1 %.not25.i73, i64 %81, i64 %79 + br label %use_hole.exit82.sink.split 82: ; preds = %33 - %83 = icmp ne i32 %.039, 2 - %.not55122123 = icmp eq i32 %.036, 0 - %.not55122 = select i1 %83, i1 %.not55122123, i1 false - %.not55 = select i1 %34, i1 true, i1 %.not55122 - br i1 %.not55, label %87, label %84 + %83 = icmp eq i32 %.039, 2 + %84 = icmp eq i32 %.036, 1 + %85 = select i1 %83, i1 true, i1 %84 + %86 = select i1 %not., i1 %85, i1 false + br i1 %86, label %87, label %90 -84: ; preds = %82, %33 +87: ; preds = %82, %33 %.238 = phi i32 [ 1, %82 ], [ %.036, %33 ] - %85 = sub i64 %9, %.041 - %86 = icmp ugt i64 %85, %.043 - %spec.select58 = select i1 %86, i64 %.041, i64 %.047 - %spec.select59 = call i64 @llvm.umax.i64(i64 %85, i64 %.043) - br label %87 - -87: ; preds = %parse_map_line.exit, %84, %49, %66, %82, %33 - %.093104 = phi i32 [ 4, %parse_map_line.exit ], [ %.093.ph, %33 ], [ %.093.ph, %49 ], [ %.093.ph, %66 ], [ %.093.ph, %82 ], [ %.093.ph, %84 ] - %.094102 = phi i64 [ %.094, %parse_map_line.exit ], [ %16, %33 ], [ %16, %49 ], [ %16, %66 ], [ %16, %82 ], [ %16, %84 ] - %.148 = phi i64 [ %.047, %parse_map_line.exit ], [ %.047, %33 ], [ %.047, %49 ], [ %.047, %66 ], [ %.047, %82 ], [ %spec.select58, %84 ] - %.144 = phi i64 [ %.043, %parse_map_line.exit ], [ %.043, %33 ], [ %.043, %49 ], [ %.043, %66 ], [ %.043, %82 ], [ %spec.select59, %84 ] - %.137 = phi i32 [ %.036, %parse_map_line.exit ], [ %.036, %33 ], [ %.036, %49 ], [ %.036, %66 ], [ 0, %82 ], [ %.238, %84 ] - br label %88 - -88: ; preds = %90, %87 - %89 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 10) #7 - %.not56 = icmp eq ptr %89, null - br i1 %.not56, label %90, label %92 - -90: ; preds = %88 - %91 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 96, ptr noundef nonnull %6) - %.not57 = icmp eq ptr %91, null - br i1 %.not57, label %use_hole.exit.thread114, label %88, !llvm.loop !9 - -92: ; preds = %88 - %93 = icmp eq i32 %.093104, 3 - br i1 %93, label %use_hole.exit.thread114, label %use_hole.exit - -use_hole.exit.thread114: ; preds = %92, %use_hole.exit, %90 - %.350 = phi i64 [ %.148, %90 ], [ %.148, %92 ], [ %.047, %use_hole.exit ] - %.346 = phi i64 [ %.144, %90 ], [ %.144, %92 ], [ %.043, %use_hole.exit ] - %94 = call i32 @fclose(ptr noundef nonnull %6) - %95 = add i32 %0, -3 - %or.cond3 = icmp ult i32 %95, 2 - br i1 %or.cond3, label %96, label %use_hole.exit84 - -96: ; preds = %use_hole.exit.thread114 - %97 = lshr i64 %.346, 1 - %98 = add i64 %97, %.350 - %99 = icmp ult i64 %.346, %2 - br i1 %99, label %use_hole.exit84, label %100 - -100: ; preds = %96 - %101 = and i64 %98, -67108864 - %102 = add i64 %101, 67108864 - %103 = add i64 %102, %2 - %104 = add i64 %.346, %.350 - %.not.i78 = icmp ugt i64 %103, %104 - br i1 %.not.i78, label %105, label %use_hole.exit84.sink.split - -105: ; preds = %100 - %106 = and i64 %98, -2097152 - %107 = add i64 %106, 2097152 - %108 = add i64 %107, %2 - %.not25.i82 = icmp ugt i64 %108, %104 - %109 = sub i64 %104, %2 - %spec.select.i83 = select i1 %.not25.i82, i64 %109, i64 %107 - br label %use_hole.exit84.sink.split - -use_hole.exit84.sink.split: ; preds = %100, %105, %73, %77, %57, %61, %40, %44 - %.sink.i73.sink = phi i64 [ %42, %40 ], [ %spec.select.i, %44 ], [ %59, %57 ], [ %spec.select.i69, %61 ], [ %75, %73 ], [ %spec.select.i76, %77 ], [ %102, %100 ], [ %spec.select.i83, %105 ] - store i64 %.sink.i73.sink, ptr %1, align 8, !tbaa !11 - br label %use_hole.exit84 - -use_hole.exit84: ; preds = %use_hole.exit84.sink.split, %67, %51, %36, %96, %use_hole.exit.thread114, %3 - %.035 = phi i32 [ -1, %3 ], [ -1, %use_hole.exit.thread114 ], [ -1, %96 ], [ -1, %67 ], [ -1, %51 ], [ -1, %36 ], [ 0, %use_hole.exit84.sink.split ] + %88 = sub i64 %9, %.041 + %89 = icmp ugt i64 %88, %.043 + %spec.select56 = select i1 %89, i64 %.041, i64 %.047 + %spec.select57 = call i64 @llvm.umax.i64(i64 %88, i64 %.043) + br label %90 + +90: ; preds = %parse_map_line.exit, %87, %49, %66, %82, %33 + %.091102 = phi i32 [ 4, %parse_map_line.exit ], [ %.091.ph, %33 ], [ %.091.ph, %49 ], [ %.091.ph, %66 ], [ %.091.ph, %82 ], [ %.091.ph, %87 ] + %.092100 = phi i64 [ %.092, %parse_map_line.exit ], [ %16, %33 ], [ %16, %49 ], [ %16, %66 ], [ %16, %82 ], [ %16, %87 ] + %.148 = phi i64 [ %.047, %parse_map_line.exit ], [ %.047, %33 ], [ %.047, %49 ], [ %.047, %66 ], [ %.047, %82 ], [ %spec.select56, %87 ] + %.144 = phi i64 [ %.043, %parse_map_line.exit ], [ %.043, %33 ], [ %.043, %49 ], [ %.043, %66 ], [ %.043, %82 ], [ %spec.select57, %87 ] + %.137 = phi i32 [ %.036, %parse_map_line.exit ], [ %.036, %33 ], [ %.036, %49 ], [ %.036, %66 ], [ 0, %82 ], [ %.238, %87 ] + br label %91 + +91: ; preds = %93, %90 + %92 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 10) #7 + %.not54 = icmp eq ptr %92, null + br i1 %.not54, label %93, label %95 + +93: ; preds = %91 + %94 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 96, ptr noundef nonnull %6) + %.not55 = icmp eq ptr %94, null + br i1 %.not55, label %use_hole.exit.thread111, label %91, !llvm.loop !9 + +95: ; preds = %91 + %96 = icmp eq i32 %.091102, 3 + br i1 %96, label %use_hole.exit.thread111, label %use_hole.exit + +use_hole.exit.thread111: ; preds = %95, %use_hole.exit, %93 + %.350 = phi i64 [ %.148, %93 ], [ %.148, %95 ], [ %.047, %use_hole.exit ] + %.346 = phi i64 [ %.144, %93 ], [ %.144, %95 ], [ %.043, %use_hole.exit ] + %97 = call i32 @fclose(ptr noundef nonnull %6) + %98 = add i32 %0, -3 + %or.cond3 = icmp ult i32 %98, 2 + br i1 %or.cond3, label %99, label %use_hole.exit82 + +99: ; preds = %use_hole.exit.thread111 + %100 = lshr i64 %.346, 1 + %101 = add i64 %100, %.350 + %102 = icmp ult i64 %.346, %2 + br i1 %102, label %use_hole.exit82, label %103 + +103: ; preds = %99 + %104 = and i64 %101, -67108864 + %105 = add i64 %104, 67108864 + %106 = add i64 %105, %2 + %107 = add i64 %.346, %.350 + %.not.i76 = icmp ugt i64 %106, %107 + br i1 %.not.i76, label %108, label %use_hole.exit82.sink.split + +108: ; preds = %103 + %109 = and i64 %101, -2097152 + %110 = add i64 %109, 2097152 + %111 = add i64 %110, %2 + %.not25.i80 = icmp ugt i64 %111, %107 + %112 = sub i64 %107, %2 + %spec.select.i81 = select i1 %.not25.i80, i64 %112, i64 %110 + br label %use_hole.exit82.sink.split + +use_hole.exit82.sink.split: ; preds = %103, %108, %73, %77, %57, %61, %40, %44 + %.sink.i71.sink = phi i64 [ %42, %40 ], [ %spec.select.i, %44 ], [ %59, %57 ], [ %spec.select.i67, %61 ], [ %75, %73 ], [ %spec.select.i74, %77 ], [ %105, %103 ], [ %spec.select.i81, %108 ] + store i64 %.sink.i71.sink, ptr %1, align 8, !tbaa !11 + br label %use_hole.exit82 + +use_hole.exit82: ; preds = %use_hole.exit82.sink.split, %67, %51, %36, %99, %use_hole.exit.thread111, %3 + %.035 = phi i32 [ -1, %3 ], [ -1, %use_hole.exit.thread111 ], [ -1, %99 ], [ -1, %67 ], [ -1, %51 ], [ -1, %36 ], [ 0, %use_hole.exit82.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.035 } diff --git a/bench/openssl/optimized/algorithmid_test.ll b/bench/openssl/optimized/algorithmid_test.ll index 151a5a97650..a488be27ffd 100644 --- a/bench/openssl/optimized/algorithmid_test.ll +++ b/bench/openssl/optimized/algorithmid_test.ll @@ -115,8 +115,9 @@ define dso_local range(i32 0, 2) i32 @setup_tests() local_unnamed_addr #1 { 5: ; preds = %1 %6 = add nuw nsw i32 %.0, %.022 - switch i32 %6, label %10 [ + switch i32 %6, label %default.unreachable [ i32 0, label %7 + i32 2, label %10 i32 1, label %13 ] @@ -136,67 +137,78 @@ define dso_local range(i32 0, 2) i32 @setup_tests() local_unnamed_addr #1 { %16 = icmp ne i32 %.0, 0 %17 = icmp eq i32 %15, 1 %or.cond = select i1 %16, i1 %17, i1 false - br i1 %or.cond, label %.sink.split, label %18 + br i1 %or.cond, label %18, label %20 18: ; preds = %13 - %19 = icmp ne i32 %.022, 0 - %20 = icmp eq i32 %15, 2 - %or.cond3 = select i1 %19, i1 %20, i1 false - br i1 %or.cond3, label %21, label %24 - -21: ; preds = %18 - %22 = tail call ptr @test_get_argument(i64 noundef 0) #6 - store ptr %22, ptr @eecert_filename, align 8, !tbaa !11 - br label %.sink.split - -.sink.split: ; preds = %13, %21 - %.sink37 = phi i64 [ 1, %21 ], [ 0, %13 ] - %cacert_filename.sink = phi ptr [ @cacert_filename, %21 ], [ @pubkey_filename, %13 ] - %23 = tail call ptr @test_get_argument(i64 noundef %.sink37) #6 - store ptr %23, ptr %cacert_filename.sink, align 8, !tbaa !11 - br label %24 - -24: ; preds = %.sink.split, %18 - %25 = load ptr, ptr @pubkey_filename, align 8 - %26 = icmp eq ptr %25, null - %or.cond5 = select i1 %16, i1 %26, i1 false - br i1 %or.cond5, label %27, label %30 - -27: ; preds = %24 - %28 = load ptr, ptr @bio_err, align 8, !tbaa !6 - %29 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %28, ptr noundef nonnull @.str.21) #6 + %19 = tail call ptr @test_get_argument(i64 noundef 0) #6 + store ptr %19, ptr @pubkey_filename, align 8, !tbaa !11 + br label %23 + +20: ; preds = %13 + %21 = icmp ne i32 %.022, 0 + %22 = icmp eq i32 %15, 2 + %or.cond3 = select i1 %21, i1 %22, i1 false + br i1 %or.cond3, label %.thread, label %._crit_edge + +._crit_edge: ; preds = %20 + %.pre = load ptr, ptr @pubkey_filename, align 8 + br label %23 + +23: ; preds = %._crit_edge, %18 + %24 = phi ptr [ %.pre, %._crit_edge ], [ %19, %18 ] + %25 = icmp eq ptr %24, null + %or.cond5 = select i1 %16, i1 %25, i1 false + br i1 %or.cond5, label %28, label %31 + +.thread: ; preds = %20 + %26 = tail call ptr @test_get_argument(i64 noundef 0) #6 + store ptr %26, ptr @eecert_filename, align 8, !tbaa !11 + %27 = tail call ptr @test_get_argument(i64 noundef 1) #6 + store ptr %27, ptr @cacert_filename, align 8, !tbaa !11 + br label %.thread29 + +28: ; preds = %23 + %29 = load ptr, ptr @bio_err, align 8, !tbaa !6 + %30 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %29, ptr noundef nonnull @.str.21) #6 br label %.loopexit -30: ; preds = %24 - %.not29 = icmp eq i32 %.022, 0 - br i1 %.not29, label %.critedge, label %31 +31: ; preds = %23 + %.not = icmp eq i32 %.022, 0 + br i1 %.not, label %.critedge, label %..thread29_crit_edge -31: ; preds = %30 - %32 = load ptr, ptr @eecert_filename, align 8, !tbaa !11 - %33 = icmp eq ptr %32, null - %34 = load ptr, ptr @cacert_filename, align 8 - %35 = icmp eq ptr %34, null - %or.cond7 = select i1 %33, i1 true, i1 %35 +..thread29_crit_edge: ; preds = %31 + %.pre34 = load ptr, ptr @cacert_filename, align 8 + br label %.thread29 + +.thread29: ; preds = %.thread, %..thread29_crit_edge + %32 = phi ptr [ %.pre34, %..thread29_crit_edge ], [ %27, %.thread ] + %33 = load ptr, ptr @eecert_filename, align 8, !tbaa !11 + %34 = icmp eq ptr %33, null + %35 = icmp eq ptr %32, null + %or.cond7 = select i1 %34, i1 true, i1 %35 br i1 %or.cond7, label %36, label %39 -36: ; preds = %31 +36: ; preds = %.thread29 %37 = load ptr, ptr @bio_err, align 8, !tbaa !6 %38 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %37, ptr noundef nonnull @.str.22) #6 br label %.loopexit -39: ; preds = %31 +39: ; preds = %.thread29 tail call void @add_test(ptr noundef nonnull @.str.23, ptr noundef nonnull @test_x509_files) #6 br label %.critedge -.critedge: ; preds = %30, %39 +.critedge: ; preds = %31, %39 br i1 %16, label %40, label %.loopexit 40: ; preds = %.critedge tail call void @add_test(ptr noundef nonnull @.str.24, ptr noundef nonnull @test_spki_file) #6 br label %.loopexit -.loopexit: ; preds = %1, %7, %10, %.critedge, %40, %36, %27 - %.024 = phi i32 [ 0, %27 ], [ 0, %36 ], [ 1, %40 ], [ 1, %.critedge ], [ 0, %10 ], [ 0, %7 ], [ 0, %1 ] +default.unreachable: ; preds = %5 + unreachable + +.loopexit: ; preds = %1, %7, %10, %.critedge, %40, %36, %28 + %.024 = phi i32 [ 0, %28 ], [ 0, %36 ], [ 1, %40 ], [ 1, %.critedge ], [ 0, %10 ], [ 0, %7 ], [ 0, %1 ] ret i32 %.024 } diff --git a/bench/openssl/optimized/rsa_sp800_56b_gen.ll b/bench/openssl/optimized/rsa_sp800_56b_gen.ll index e155d434b92..a84bc29e915 100644 --- a/bench/openssl/optimized/rsa_sp800_56b_gen.ll +++ b/bench/openssl/optimized/rsa_sp800_56b_gen.ll @@ -17,7 +17,7 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu tail call void @ERR_new() #2 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 89, ptr noundef nonnull @__func__.ossl_rsa_fips186_4_gen_prob_primes) #2 tail call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 4, i32 noundef 120, ptr noundef null) #2 - br label %64 + br label %65 9: ; preds = %6 %10 = tail call i32 @ossl_rsa_check_public_exponent(ptr noundef %3) #2 @@ -28,7 +28,7 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu tail call void @ERR_new() #2 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 94, ptr noundef nonnull @__func__.ossl_rsa_fips186_4_gen_prob_primes) #2 tail call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 4, i32 noundef 178, ptr noundef null) #2 - br label %64 + br label %65 12: ; preds = %9 tail call void @BN_CTX_start(ptr noundef %4) #2 @@ -69,13 +69,13 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu %32 = icmp eq ptr %31, null %33 = icmp eq ptr %.pre, null %brmerge = select i1 %33, i1 true, i1 %32 - br i1 %brmerge, label %.loopexit, label %.thread90 + br i1 %brmerge, label %.loopexit, label %.thread89 .thread: ; preds = %25 %34 = icmp eq ptr %26, null - br i1 %34, label %.loopexit, label %.thread90 + br i1 %34, label %.loopexit, label %.thread89 -.thread90: ; preds = %30, %.thread +.thread89: ; preds = %30, %.thread %35 = phi ptr [ %26, %.thread ], [ %.pre, %30 ] tail call void @BN_set_flags(ptr noundef nonnull %35, i32 noundef 4) #2 %36 = load ptr, ptr %27, align 8, !tbaa !22 @@ -85,11 +85,11 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu %.not75 = icmp eq i32 %38, 0 br i1 %.not75, label %.loopexit, label %.preheader -.preheader: ; preds = %.thread90 +.preheader: ; preds = %.thread89 %39 = load ptr, ptr %27, align 8, !tbaa !22 %40 = tail call i32 @ossl_bn_rsa_fips186_4_gen_prob_primes(ptr noundef %39, ptr noundef nonnull %15, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #2 - %.not7678 = icmp eq i32 %40, 0 - br i1 %.not7678, label %.loopexit, label %.lr.ph + %.not7677 = icmp eq i32 %40, 0 + br i1 %.not7677, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader, %.backedge %41 = tail call i32 @ossl_rsa_check_pminusq_diff(ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, i32 noundef %2) #2 @@ -124,31 +124,31 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu store i32 %57, ptr %55, align 8, !tbaa !23 br label %.loopexit -.loopexit: ; preds = %.backedge, %.lr.ph, %47, %30, %.thread, %.preheader, %.thread90, %12, %54 - %.not77 = phi i1 [ false, %12 ], [ false, %30 ], [ true, %54 ], [ false, %.thread90 ], [ false, %.preheader ], [ false, %.thread ], [ false, %47 ], [ false, %.lr.ph ], [ false, %.backedge ] - %.067 = phi i32 [ 0, %12 ], [ 0, %30 ], [ 1, %54 ], [ 0, %.thread90 ], [ 0, %.preheader ], [ 0, %.thread ], [ 0, %47 ], [ 0, %.lr.ph ], [ 0, %.backedge ] +.loopexit: ; preds = %.backedge, %.lr.ph, %47, %30, %.thread, %.preheader, %.thread89, %12, %54 + %58 = phi i1 [ true, %12 ], [ true, %30 ], [ false, %54 ], [ true, %.thread89 ], [ true, %.preheader ], [ true, %.thread ], [ true, %47 ], [ true, %.lr.ph ], [ true, %.backedge ] + %.067 = phi i32 [ 0, %12 ], [ 0, %30 ], [ 1, %54 ], [ 0, %.thread89 ], [ 0, %.preheader ], [ 0, %.thread ], [ 0, %47 ], [ 0, %.lr.ph ], [ 0, %.backedge ] tail call void @BN_clear(ptr noundef %14) #2 tail call void @BN_clear(ptr noundef %15) #2 tail call void @BN_clear(ptr noundef %13) #2 - br i1 %.not77, label %63, label %58 - -58: ; preds = %.loopexit - %59 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %60 = load ptr, ptr %59, align 8, !tbaa !3 - tail call void @BN_clear_free(ptr noundef %60) #2 - store ptr null, ptr %59, align 8, !tbaa !3 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %62 = load ptr, ptr %61, align 8, !tbaa !22 - tail call void @BN_clear_free(ptr noundef %62) #2 - store ptr null, ptr %61, align 8, !tbaa !22 - br label %63 - -63: ; preds = %58, %.loopexit - tail call void @BN_CTX_end(ptr noundef %4) #2 + br i1 %58, label %59, label %64 + +59: ; preds = %.loopexit + %60 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %61 = load ptr, ptr %60, align 8, !tbaa !3 + tail call void @BN_clear_free(ptr noundef %61) #2 + store ptr null, ptr %60, align 8, !tbaa !3 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %63 = load ptr, ptr %62, align 8, !tbaa !22 + tail call void @BN_clear_free(ptr noundef %63) #2 + store ptr null, ptr %62, align 8, !tbaa !22 br label %64 -64: ; preds = %63, %11, %8 - %.0 = phi i32 [ 0, %8 ], [ %.067, %63 ], [ 0, %11 ] +64: ; preds = %59, %.loopexit + tail call void @BN_CTX_end(ptr noundef %4) #2 + br label %65 + +65: ; preds = %64, %11, %8 + %.0 = phi i32 [ 0, %8 ], [ %.067, %64 ], [ 0, %11 ] ret i32 %.0 } @@ -411,13 +411,13 @@ define range(i32 0, 2) i32 @ossl_rsa_sp800_56b_generate_key(ptr noundef captures %7 = load ptr, ptr %6, align 8, !tbaa !30 %8 = tail call ptr @RAND_get0_private(ptr noundef %7) #2 %.not = icmp eq ptr %8, null - br i1 %.not, label %40, label %9 + br i1 %.not, label %39, label %9 9: ; preds = %4 %10 = load ptr, ptr %6, align 8, !tbaa !30 %11 = tail call ptr @BN_CTX_new_ex(ptr noundef %10) #2 %12 = icmp eq ptr %11, null - br i1 %12, label %40, label %13 + br i1 %12, label %39, label %13 13: ; preds = %9 %14 = icmp eq ptr %2, null @@ -439,55 +439,53 @@ define range(i32 0, 2) i32 @ossl_rsa_sp800_56b_generate_key(ptr noundef captures %22 = getelementptr inbounds nuw i8, ptr %0, i64 72 br label %23 -23: ; preds = %36, %20 +23: ; preds = %34, %20 %24 = tail call i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef nonnull %0, ptr poison, i32 noundef %1, ptr noundef nonnull %.1, ptr noundef nonnull %11, ptr noundef %3) - %.not44 = icmp eq i32 %24, 0 - br i1 %.not44, label %.loopexit, label %25 - -25: ; preds = %23 - %26 = load ptr, ptr %21, align 8, !tbaa !3 - %27 = load ptr, ptr %22, align 8, !tbaa !22 - %28 = tail call i32 @BN_cmp(ptr noundef %26, ptr noundef %27) #2 - %29 = icmp slt i32 %28, 0 - br i1 %29, label %30, label %33 - -30: ; preds = %25 - %31 = load ptr, ptr %21, align 8, !tbaa !3 - %32 = load ptr, ptr %22, align 8, !tbaa !22 - store ptr %32, ptr %21, align 8, !tbaa !3 - store ptr %31, ptr %22, align 8, !tbaa !22 - br label %33 - -33: ; preds = %30, %25 - %34 = tail call i32 @ossl_rsa_sp800_56b_derive_params_from_pq(ptr noundef nonnull %0, i32 noundef %1, ptr noundef nonnull %.1, ptr noundef nonnull %11) - %35 = icmp slt i32 %34, 0 - br i1 %35, label %.loopexit, label %36 - -36: ; preds = %33 - %.not45 = icmp eq i32 %34, 0 - br i1 %.not45, label %23, label %37 - -37: ; preds = %36 - %38 = tail call i32 @ossl_rsa_sp800_56b_pairwise_test(ptr noundef nonnull %0, ptr noundef nonnull %11) + %25 = icmp eq i32 %24, 0 + br i1 %25, label %.loopexit, label %26 + +26: ; preds = %23 + %27 = load ptr, ptr %21, align 8, !tbaa !3 + %28 = load ptr, ptr %22, align 8, !tbaa !22 + %29 = tail call i32 @BN_cmp(ptr noundef %27, ptr noundef %28) #2 + %30 = icmp slt i32 %29, 0 + br i1 %30, label %31, label %34 + +31: ; preds = %26 + %32 = load ptr, ptr %21, align 8, !tbaa !3 + %33 = load ptr, ptr %22, align 8, !tbaa !22 + store ptr %33, ptr %21, align 8, !tbaa !3 + store ptr %32, ptr %22, align 8, !tbaa !22 + br label %34 + +34: ; preds = %31, %26 + %35 = tail call i32 @ossl_rsa_sp800_56b_derive_params_from_pq(ptr noundef nonnull %0, i32 noundef %1, ptr noundef nonnull %.1, ptr noundef nonnull %11) + switch i32 %35, label %23 [ + i32 -1, label %.loopexit + i32 1, label %36 + ] + +36: ; preds = %34 + %37 = tail call i32 @ossl_rsa_sp800_56b_pairwise_test(ptr noundef nonnull %0, ptr noundef nonnull %11) br label %.loopexit -.loopexit: ; preds = %33, %23, %37 - %.035 = phi i32 [ %38, %37 ], [ 0, %23 ], [ 0, %33 ] - br i1 %14, label %.thread, label %39 +.loopexit: ; preds = %34, %23, %36 + %.035 = phi i32 [ %37, %36 ], [ 0, %23 ], [ 0, %34 ] + br i1 %14, label %.thread, label %38 .thread: ; preds = %18, %15, %.loopexit - %.03550 = phi i32 [ %.035, %.loopexit ], [ 0, %15 ], [ 0, %18 ] - %.03648 = phi ptr [ %.1, %.loopexit ], [ null, %15 ], [ %16, %18 ] - tail call void @BN_free(ptr noundef %.03648) #2 - br label %39 + %.03549 = phi i32 [ %.035, %.loopexit ], [ 0, %15 ], [ 0, %18 ] + %.03647 = phi ptr [ %.1, %.loopexit ], [ null, %15 ], [ %16, %18 ] + tail call void @BN_free(ptr noundef %.03647) #2 + br label %38 -39: ; preds = %.thread, %.loopexit - %.03549 = phi i32 [ %.03550, %.thread ], [ %.035, %.loopexit ] +38: ; preds = %.thread, %.loopexit + %.03548 = phi i32 [ %.03549, %.thread ], [ %.035, %.loopexit ] tail call void @BN_CTX_free(ptr noundef nonnull %11) #2 - br label %40 + br label %39 -40: ; preds = %9, %4, %39 - %.0 = phi i32 [ %.03549, %39 ], [ 0, %4 ], [ 0, %9 ] +39: ; preds = %9, %4, %38 + %.0 = phi i32 [ %.03548, %38 ], [ 0, %4 ], [ 0, %9 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/rsa_x931.ll b/bench/openssl/optimized/rsa_x931.ll index 316890b3057..d7ae7f8965d 100644 --- a/bench/openssl/optimized/rsa_x931.ll +++ b/bench/openssl/optimized/rsa_x931.ll @@ -10,53 +10,54 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define range(i32 -1, 2) i32 @RSA_padding_add_X931(ptr noundef writeonly captures(none) %0, i32 noundef %1, ptr noundef readonly captures(none) %2, i32 noundef %3) local_unnamed_addr #0 { %5 = sub nsw i32 %1, %3 - %6 = icmp slt i32 %5, 2 - br i1 %6, label %7, label %8 + %6 = add nsw i32 %5, -2 + %7 = icmp slt i32 %5, 2 + br i1 %7, label %8, label %9 -7: ; preds = %4 +8: ; preds = %4 tail call void @ERR_new() #5 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 56, ptr noundef nonnull @__func__.RSA_padding_add_X931) #5 tail call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 4, i32 noundef 110, ptr noundef null) #5 - br label %23 + br label %24 -8: ; preds = %4 - %9 = icmp eq i32 %5, 2 - br i1 %9, label %10, label %11 +9: ; preds = %4 + %10 = icmp eq i32 %6, 0 + br i1 %10, label %11, label %12 -10: ; preds = %8 +11: ; preds = %9 store i8 106, ptr %0, align 1, !tbaa !3 - br label %19 + br label %20 -11: ; preds = %8 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 1 +12: ; preds = %9 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 1 store i8 107, ptr %0, align 1, !tbaa !3 - %13 = icmp samesign ugt i32 %5, 3 - br i1 %13, label %14, label %18 - -14: ; preds = %11 - %15 = add nsw i32 %5, -3 - %16 = zext nneg i32 %15 to i64 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %12, i8 -69, i64 %16, i1 false) - %17 = getelementptr inbounds nuw i8, ptr %12, i64 %16 - br label %18 - -18: ; preds = %14, %11 - %.1 = phi ptr [ %17, %14 ], [ %12, %11 ] - store i8 -70, ptr %.1, align 1, !tbaa !3 + %14 = icmp eq i32 %6, 1 + br i1 %14, label %19, label %15 + +15: ; preds = %12 + %16 = add nsw i32 %5, -3 + %17 = zext nneg i32 %16 to i64 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %13, i8 -69, i64 %17, i1 false) + %18 = getelementptr inbounds nuw i8, ptr %13, i64 %17 br label %19 -19: ; preds = %18, %10 - %.pn = phi ptr [ %0, %10 ], [ %.1, %18 ] +19: ; preds = %15, %12 + %.1 = phi ptr [ %18, %15 ], [ %13, %12 ] + store i8 -70, ptr %.1, align 1, !tbaa !3 + br label %20 + +20: ; preds = %19, %11 + %.pn = phi ptr [ %0, %11 ], [ %.1, %19 ] %.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 1 - %20 = zext i32 %3 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.0, ptr align 1 %2, i64 %20, i1 false) - %21 = sext i32 %3 to i64 - %22 = getelementptr inbounds i8, ptr %.0, i64 %21 - store i8 -52, ptr %22, align 1, !tbaa !3 - br label %23 - -23: ; preds = %19, %7 - %.019 = phi i32 [ -1, %7 ], [ 1, %19 ] + %21 = zext i32 %3 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.0, ptr align 1 %2, i64 %21, i1 false) + %22 = sext i32 %3 to i64 + %23 = getelementptr inbounds i8, ptr %.0, i64 %22 + store i8 -52, ptr %23, align 1, !tbaa !3 + br label %24 + +24: ; preds = %20, %8 + %.019 = phi i32 [ -1, %8 ], [ 1, %20 ] ret i32 %.019 } diff --git a/bench/ozz-animation/optimized/local_to_model_job.ll b/bench/ozz-animation/optimized/local_to_model_job.ll index 61d85e866cc..85a892cae96 100644 --- a/bench/ozz-animation/optimized/local_to_model_job.ll +++ b/bench/ozz-animation/optimized/local_to_model_job.ll @@ -87,21 +87,21 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %36 = add nsw i32 %32, %35 %37 = tail call noundef i32 @llvm.smax.i32(i32 %36, i32 0) %38 = icmp slt i32 %37, %30 - br i1 %38, label %39, label %._crit_edge64 + br i1 %38, label %39, label %._crit_edge63 39: ; preds = %17 %40 = trunc nuw i8 %34 to i1 - br i1 %40, label %41, label %.lr.ph63 + br i1 %40, label %41, label %.lr.ph62 41: ; preds = %39 %42 = zext nneg i32 %37 to i64 %43 = getelementptr inbounds nuw i16, ptr %19, i64 %42 %44 = load i16, ptr %43, align 2, !tbaa !33 %45 = sext i16 %44 to i32 - %.not65 = icmp sgt i32 %32, %45 - br i1 %.not65, label %._crit_edge64, label %.lr.ph63 + %.not64 = icmp sgt i32 %32, %45 + br i1 %.not64, label %._crit_edge63, label %.lr.ph62 -.lr.ph63: ; preds = %39, %41 +.lr.ph62: ; preds = %39, %41 %46 = getelementptr inbounds nuw i8, ptr %0, i64 32 %47 = getelementptr inbounds nuw i8, ptr %3, i64 64 %48 = getelementptr inbounds nuw i8, ptr %3, i64 128 @@ -122,7 +122,7 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %63 = zext nneg i32 %30 to i64 br label %.outer -._crit_edge64: ; preds = %._crit_edge.loopexit, %._crit_edge.loopexit.thread, %17, %41 +._crit_edge63: ; preds = %._crit_edge.loopexit, %._crit_edge.loopexit.thread, %17, %41 call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit.thread @@ -147,18 +147,18 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 br i1 %158, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %64 - %65 = zext nneg i32 %.02761.ph to i64 + %65 = zext nneg i32 %.02760.ph to i64 %66 = zext nneg i32 %157 to i64 br label %.lr.ph ._crit_edge.loopexit: ; preds = %225 %67 = trunc nuw nsw i64 %indvars.iv.next to i32 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br i1 %230, label %.outer, label %._crit_edge64, !llvm.loop !35 + br i1 %230, label %.outer, label %._crit_edge63, !llvm.loop !35 -.outer: ; preds = %._crit_edge.loopexit, %.lr.ph63 - %.02761.ph = phi i32 [ %67, %._crit_edge.loopexit ], [ %37, %.lr.ph63 ] - %68 = lshr i32 %.02761.ph, 2 +.outer: ; preds = %._crit_edge.loopexit, %.lr.ph62 + %.02760.ph = phi i32 [ %67, %._crit_edge.loopexit ], [ %37, %.lr.ph62 ] + %68 = lshr i32 %.02760.ph, 2 %69 = zext nneg i32 %68 to i64 %70 = load ptr, ptr %46, align 8, !tbaa !37 %71 = getelementptr inbounds nuw %"struct.ozz::math::SoaTransform", ptr %70, i64 %69 @@ -246,9 +246,9 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %153 = shufflevector <4 x float> %121, <4 x float> , <4 x i32> %154 = shufflevector <4 x float> %152, <4 x float> %153, <4 x i32> %155 = shufflevector <4 x float> %152, <4 x float> %153, <4 x i32> - %156 = and i32 %.02761.ph, -4 + %156 = and i32 %.02760.ph, -4 %157 = add nuw nsw i32 %156, 4 - %158 = icmp slt i32 %.02761.ph, %157 + %158 = icmp slt i32 %.02760.ph, %157 br label %64 ._crit_edge: ; preds = %64 @@ -271,14 +271,14 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %170 = load <4 x float>, ptr %165, align 16, !tbaa !23, !noalias !41 %171 = fmul <4 x float> %169, %170 %172 = shufflevector <4 x float> %168, <4 x float> poison, <4 x i32> - %.sroa.sel73.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 - %.sroa.sel73.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel73.v.sroa.sel.v, i64 32 - %173 = load <4 x float>, ptr %.sroa.sel73.v.sroa.sel, align 16, !tbaa !23, !noalias !41 + %.sroa.sel72.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 + %.sroa.sel72.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel72.v.sroa.sel.v, i64 32 + %173 = load <4 x float>, ptr %.sroa.sel72.v.sroa.sel, align 16, !tbaa !23, !noalias !41 %174 = fmul <4 x float> %172, %173 %175 = shufflevector <4 x float> %168, <4 x float> poison, <4 x i32> - %.sroa.sel70.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 - %.sroa.sel70.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel70.v.sroa.sel.v, i64 16 - %176 = load <4 x float>, ptr %.sroa.sel70.v.sroa.sel, align 16, !tbaa !23, !noalias !41 + %.sroa.sel69.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 + %.sroa.sel69.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel69.v.sroa.sel.v, i64 16 + %176 = load <4 x float>, ptr %.sroa.sel69.v.sroa.sel, align 16, !tbaa !23, !noalias !41 %177 = fmul <4 x float> %175, %176 %178 = fadd <4 x float> %171, %177 %179 = shufflevector <4 x float> %168, <4 x float> poison, <4 x i32> @@ -341,7 +341,7 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 ._crit_edge.loopexit.thread: ; preds = %.lr.ph call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %._crit_edge64 + br label %._crit_edge63 225: ; preds = %.lr.ph %226 = getelementptr inbounds nuw i16, ptr %19, i64 %indvars.iv.next @@ -353,8 +353,8 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %232 = select i1 %231, i1 %230, i1 false br i1 %232, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !44 -_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit.thread: ; preds = %1, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit, %._crit_edge64 - %.0.i57 = phi i1 [ false, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit ], [ true, %._crit_edge64 ], [ false, %1 ] +_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit.thread: ; preds = %1, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit, %._crit_edge63 + %.0.i57 = phi i1 [ false, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit ], [ true, %._crit_edge63 ], [ false, %1 ] ret i1 %.0.i57 } diff --git a/bench/pbrt-v4/optimized/lowdiscrepancy.ll b/bench/pbrt-v4/optimized/lowdiscrepancy.ll index 78bd6de6d56..e955a6a9a48 100644 --- a/bench/pbrt-v4/optimized/lowdiscrepancy.ll +++ b/bench/pbrt-v4/optimized/lowdiscrepancy.ll @@ -595,29 +595,29 @@ _ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE7r %31 = getelementptr inbounds nuw %"class.pbrt::DigitPermutation", ptr %30, i64 %.015.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %31, i8 0, i64 16, i1 false) %32 = add nuw i64 %.015.i, 1 - %exitcond.not.i = icmp eq i64 %32, 1000 - br i1 %exitcond.not.i, label %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, label %.lr.ph.i, !llvm.loop !52 + %33 = icmp eq i64 %32, 1000 + br i1 %33, label %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, label %.lr.ph.i, !llvm.loop !52 _ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit: ; preds = %.lr.ph.i, %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE7reserveEm.exit.i store i64 1000, ptr %10, align 8, !tbaa !42 - br label %34 + br label %35 -33: ; preds = %34 +34: ; preds = %35 ret ptr %7 -34: ; preds = %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, %34 - %indvars.iv = phi i64 [ 0, %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit ], [ %indvars.iv.next, %34 ] +35: ; preds = %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, %35 + %indvars.iv = phi i64 [ 0, %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit ], [ %indvars.iv.next, %35 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) - %35 = getelementptr inbounds nuw i32, ptr @_ZN4pbrt6PrimesE, i64 %indvars.iv - %36 = load i32, ptr %35, align 4, !tbaa !18 - call void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %36, i32 noundef %0, ptr nonnull %1) - %37 = load ptr, ptr %9, align 8, !tbaa !46 - %38 = getelementptr inbounds nuw %"class.pbrt::DigitPermutation", ptr %37, i64 %indvars.iv - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false), !tbaa.struct !49 + %36 = getelementptr inbounds nuw i32, ptr @_ZN4pbrt6PrimesE, i64 %indvars.iv + %37 = load i32, ptr %36, align 4, !tbaa !18 + call void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %37, i32 noundef %0, ptr nonnull %1) + %38 = load ptr, ptr %9, align 8, !tbaa !46 + %39 = getelementptr inbounds nuw %"class.pbrt::DigitPermutation", ptr %38, i64 %indvars.iv + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false), !tbaa.struct !49 call void @llvm.lifetime.end.p0(ptr nonnull %3) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 1000 - br i1 %exitcond.not, label %33, label %34, !llvm.loop !53 + %.not = icmp eq i64 %indvars.iv.next, 1000 + br i1 %.not, label %34, label %35, !llvm.loop !53 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/php/optimized/is_csv.ll b/bench/php/optimized/is_csv.ll index 278b030f3bb..15b0f985d0a 100644 --- a/bench/php/optimized/is_csv.ll +++ b/bench/php/optimized/is_csv.ll @@ -22,10 +22,10 @@ define hidden range(i32 -1, 2) i32 @file_is_csv(ptr noundef %0, ptr noundef read %12 = and i32 %11, 1040 %.not = icmp ne i32 %2, 0 %13 = and i32 %11, 16779264 - %.not16 = icmp eq i32 %13, 0 - %or.cond = select i1 %.not, i1 %.not16, i1 false - %14 = icmp ne i64 %8, 0 - %or.cond24 = select i1 %or.cond, i1 %14, i1 false + %14 = icmp eq i32 %13, 0 + %or.cond = select i1 %.not, i1 %14, i1 false + %15 = icmp ne i64 %8, 0 + %or.cond24 = select i1 %or.cond, i1 %15, i1 false br i1 %or.cond24, label %.lr.ph.i, label %csv_parse.exit.thread .lr.ph.i: ; preds = %4, %eatquote.exit.i @@ -33,105 +33,106 @@ define hidden range(i32 -1, 2) i32 @file_is_csv(ptr noundef %0, ptr noundef read %.01835.i = phi i64 [ %.119.i, %eatquote.exit.i ], [ 0, %4 ] %.02034.i = phi i64 [ %.121.i, %eatquote.exit.i ], [ 0, %4 ] %.02333.i = phi ptr [ %.124.i, %eatquote.exit.i ], [ %6, %4 ] - %15 = getelementptr inbounds nuw i8, ptr %.02333.i, i64 1 - %16 = load i8, ptr %.02333.i, align 1, !tbaa !22 - switch i8 %16, label %eatquote.exit.i [ - i8 34, label %17 - i8 44, label %23 - i8 10, label %25 + %16 = getelementptr inbounds nuw i8, ptr %.02333.i, i64 1 + %17 = load i8, ptr %.02333.i, align 1, !tbaa !22 + switch i8 %17, label %eatquote.exit.i [ + i8 34, label %18 + i8 44, label %26 + i8 10, label %28 ] -17: ; preds = %.lr.ph.i - %18 = icmp ult ptr %15, %9 - br i1 %18, label %.lr.ph.i.i, label %csv_parse.exit +18: ; preds = %.lr.ph.i + %19 = icmp ult ptr %16, %9 + br i1 %19, label %.lr.ph.i.i, label %csv_parse.exit -.lr.ph.i.i: ; preds = %17, %select.unfold.i.i - %.01026.i.i = phi i32 [ %.111.i.i, %select.unfold.i.i ], [ 0, %17 ] - %.01225.i.i = phi ptr [ %19, %select.unfold.i.i ], [ %15, %17 ] - %19 = getelementptr inbounds nuw i8, ptr %.01225.i.i, i64 1 - %20 = load i8, ptr %.01225.i.i, align 1, !tbaa !22 - %.not.i.i = icmp eq i8 %20, 34 - %.not15.i.i = icmp eq i32 %.01026.i.i, 0 - br i1 %.not.i.i, label %22, label %21 - -21: ; preds = %.lr.ph.i.i - br i1 %.not15.i.i, label %select.unfold.i.i, label %eatquote.exit.i +.lr.ph.i.i: ; preds = %18, %select.unfold18.i.i + %.01024.i.i = phi i32 [ %.111.i.i, %select.unfold18.i.i ], [ 0, %18 ] + %.01223.i.i = phi ptr [ %20, %select.unfold18.i.i ], [ %16, %18 ] + %20 = getelementptr inbounds nuw i8, ptr %.01223.i.i, i64 1 + %21 = load i8, ptr %.01223.i.i, align 1, !tbaa !22 + %.not.i.i = icmp eq i8 %21, 34 + br i1 %.not.i.i, label %24, label %22 22: ; preds = %.lr.ph.i.i - %.18.i.i = zext i1 %.not15.i.i to i32 - br label %select.unfold.i.i + %23 = icmp eq i32 %.01024.i.i, 1 + br i1 %23, label %eatquote.exit.i, label %select.unfold18.i.i + +24: ; preds = %.lr.ph.i.i + %25 = icmp eq i32 %.01024.i.i, 0 + %.16.i.i = zext i1 %25 to i32 + br label %select.unfold18.i.i -select.unfold.i.i: ; preds = %22, %21 - %.111.i.i = phi i32 [ 0, %21 ], [ %.18.i.i, %22 ] - %exitcond.not.i.i = icmp eq ptr %19, %9 +select.unfold18.i.i: ; preds = %24, %22 + %.111.i.i = phi i32 [ 0, %22 ], [ %.16.i.i, %24 ] + %exitcond.not.i.i = icmp eq ptr %20, %9 br i1 %exitcond.not.i.i, label %csv_parse.exit, label %.lr.ph.i.i -23: ; preds = %.lr.ph.i - %24 = add i64 %.02034.i, 1 +26: ; preds = %.lr.ph.i + %27 = add i64 %.02034.i, 1 br label %eatquote.exit.i -25: ; preds = %.lr.ph.i - %26 = add i64 %.036.i, 1 - %27 = icmp eq i64 %26, 10 - br i1 %27, label %28, label %32 +28: ; preds = %.lr.ph.i + %29 = add i64 %.036.i, 1 + %30 = icmp eq i64 %29, 10 + br i1 %30, label %31, label %35 -28: ; preds = %25 - %29 = icmp ugt i64 %.01835.i, 1 - %30 = icmp eq i64 %.01835.i, %.02034.i - %31 = select i1 %29, i1 %30, i1 false - br i1 %31, label %41, label %csv_parse.exit.thread +31: ; preds = %28 + %32 = icmp ugt i64 %.01835.i, 1 + %33 = icmp eq i64 %.01835.i, %.02034.i + %34 = select i1 %32, i1 %33, i1 false + br i1 %34, label %44, label %csv_parse.exit.thread -32: ; preds = %25 - %33 = icmp eq i64 %.01835.i, 0 - br i1 %33, label %34, label %36 +35: ; preds = %28 + %36 = icmp eq i64 %.01835.i, 0 + br i1 %36, label %37, label %39 -34: ; preds = %32 - %35 = icmp eq i64 %.02034.i, 0 - br i1 %35, label %csv_parse.exit.thread, label %eatquote.exit.i +37: ; preds = %35 + %38 = icmp eq i64 %.02034.i, 0 + br i1 %38, label %csv_parse.exit.thread, label %eatquote.exit.i -36: ; preds = %32 +39: ; preds = %35 %.not.i = icmp eq i64 %.01835.i, %.02034.i br i1 %.not.i, label %eatquote.exit.i, label %csv_parse.exit.thread -eatquote.exit.i: ; preds = %21, %36, %34, %23, %.lr.ph.i - %.124.i = phi ptr [ %15, %.lr.ph.i ], [ %15, %23 ], [ %15, %34 ], [ %15, %36 ], [ %.01225.i.i, %21 ] - %.121.i = phi i64 [ %.02034.i, %.lr.ph.i ], [ %24, %23 ], [ 0, %34 ], [ 0, %36 ], [ %.02034.i, %21 ] - %.119.i = phi i64 [ %.01835.i, %.lr.ph.i ], [ %.01835.i, %23 ], [ %.02034.i, %34 ], [ %.01835.i, %36 ], [ %.01835.i, %21 ] - %.1.i = phi i64 [ %.036.i, %.lr.ph.i ], [ %.036.i, %23 ], [ %26, %34 ], [ %26, %36 ], [ %.036.i, %21 ] - %37 = icmp ult ptr %.124.i, %9 - br i1 %37, label %.lr.ph.i, label %csv_parse.exit - -csv_parse.exit: ; preds = %17, %eatquote.exit.i, %select.unfold.i.i - %.151.i = phi i64 [ %.036.i, %select.unfold.i.i ], [ %.1.i, %eatquote.exit.i ], [ %.036.i, %17 ] - %.11950.i = phi i64 [ %.01835.i, %select.unfold.i.i ], [ %.119.i, %eatquote.exit.i ], [ %.01835.i, %17 ] - %38 = icmp ugt i64 %.11950.i, 1 - %39 = icmp ugt i64 %.151.i, 1 - %40 = select i1 %38, i1 %39, i1 false - br i1 %40, label %41, label %csv_parse.exit.thread - -41: ; preds = %28, %csv_parse.exit - switch i32 %12, label %42 [ +eatquote.exit.i: ; preds = %22, %39, %37, %26, %.lr.ph.i + %.124.i = phi ptr [ %16, %.lr.ph.i ], [ %16, %26 ], [ %16, %37 ], [ %16, %39 ], [ %.01223.i.i, %22 ] + %.121.i = phi i64 [ %.02034.i, %.lr.ph.i ], [ %27, %26 ], [ 0, %37 ], [ 0, %39 ], [ %.02034.i, %22 ] + %.119.i = phi i64 [ %.01835.i, %.lr.ph.i ], [ %.01835.i, %26 ], [ %.02034.i, %37 ], [ %.01835.i, %39 ], [ %.01835.i, %22 ] + %.1.i = phi i64 [ %.036.i, %.lr.ph.i ], [ %.036.i, %26 ], [ %29, %37 ], [ %29, %39 ], [ %.036.i, %22 ] + %40 = icmp ult ptr %.124.i, %9 + br i1 %40, label %.lr.ph.i, label %csv_parse.exit + +csv_parse.exit: ; preds = %18, %eatquote.exit.i, %select.unfold18.i.i + %.151.i = phi i64 [ %.036.i, %select.unfold18.i.i ], [ %.1.i, %eatquote.exit.i ], [ %.036.i, %18 ] + %.11950.i = phi i64 [ %.01835.i, %select.unfold18.i.i ], [ %.119.i, %eatquote.exit.i ], [ %.01835.i, %18 ] + %41 = icmp ugt i64 %.11950.i, 1 + %42 = icmp ugt i64 %.151.i, 1 + %43 = select i1 %41, i1 %42, i1 false + br i1 %43, label %44, label %csv_parse.exit.thread + +44: ; preds = %31, %csv_parse.exit + switch i32 %12, label %45 [ i32 1024, label %csv_parse.exit.thread - i32 0, label %45 + i32 0, label %48 ] -42: ; preds = %41 - %43 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str) #2 - %44 = icmp eq i32 %43, -1 - %. = select i1 %44, i32 -1, i32 1 +45: ; preds = %44 + %46 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str) #2 + %47 = icmp eq i32 %46, -1 + %. = select i1 %47, i32 -1, i32 1 br label %csv_parse.exit.thread -45: ; preds = %41 +48: ; preds = %44 %.not19 = icmp eq ptr %3, null - %46 = select i1 %.not19, ptr @.str.2, ptr %3 - %47 = select i1 %.not19, ptr @.str.2, ptr @.str.3 - %48 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef nonnull %46, ptr noundef nonnull %47) #2 - %49 = icmp eq i32 %48, -1 - %.20 = select i1 %49, i32 -1, i32 1 + %49 = select i1 %.not19, ptr @.str.2, ptr %3 + %50 = select i1 %.not19, ptr @.str.2, ptr @.str.3 + %51 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef nonnull %49, ptr noundef nonnull %50) #2 + %52 = icmp eq i32 %51, -1 + %.20 = select i1 %52, i32 -1, i32 1 br label %csv_parse.exit.thread -csv_parse.exit.thread: ; preds = %36, %34, %28, %45, %42, %41, %csv_parse.exit, %4 - %.0 = phi i32 [ 0, %4 ], [ 0, %csv_parse.exit ], [ 1, %41 ], [ %., %42 ], [ %.20, %45 ], [ 0, %28 ], [ 0, %34 ], [ 0, %36 ] +csv_parse.exit.thread: ; preds = %39, %37, %31, %48, %45, %44, %csv_parse.exit, %4 + %.0 = phi i32 [ 0, %4 ], [ 0, %csv_parse.exit ], [ 1, %44 ], [ %., %45 ], [ %.20, %48 ], [ 0, %31 ], [ 0, %37 ], [ 0, %39 ] ret i32 %.0 } diff --git a/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll b/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll index 43d252334f3..28a9032474d 100644 --- a/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll +++ b/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll @@ -28,20 +28,21 @@ define internal fastcc noundef nonnull ptr @_ZN4core5slice4sort6shared5pivot11me %.sroa.04.0 = phi ptr [ %15, %6 ], [ %1, %4 ] %.sroa.0.0 = phi ptr [ %12, %6 ], [ %0, %4 ] %20 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.0.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.04.0) - %21 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.0.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.08.0) - %22 = xor i8 %21, %20 - %23 = icmp slt i8 %22, 0 - br i1 %23, label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit, label %24 - -24: ; preds = %19 - %25 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.04.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.08.0) - %26 = xor i8 %25, %20 - %27 = icmp slt i8 %26, 0 - %..i = select i1 %27, ptr %.sroa.08.0, ptr %.sroa.04.0 + %21 = icmp eq i8 %20, -1 + %22 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.0.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.08.0) + %23 = icmp eq i8 %22, -1 + %24 = xor i1 %21, %23 + br i1 %24, label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit, label %25 + +25: ; preds = %19 + %26 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.04.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.08.0) + %27 = icmp eq i8 %26, -1 + %28 = xor i1 %21, %27 + %..i = select i1 %28, ptr %.sroa.08.0, ptr %.sroa.04.0 br label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit -_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %19, %24 - %.sroa.0.0.i = phi ptr [ %.sroa.0.0, %19 ], [ %..i, %24 ] +_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %19, %25 + %.sroa.0.0.i = phi ptr [ %.sroa.0.0, %19 ], [ %..i, %25 ] ret ptr %.sroa.0.0.i } @@ -69,24 +70,25 @@ define hidden noundef range(i64 0, 2305843009213693952) i64 @_ZN4core5slice4sort 13: ; preds = %5 %14 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %7) - %15 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %8) - %16 = xor i8 %15, %14 - %17 = icmp slt i8 %16, 0 - br i1 %17, label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit, label %18 - -18: ; preds = %13 - %19 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %7, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %8) - %20 = xor i8 %19, %14 - %21 = icmp slt i8 %20, 0 - %..i = select i1 %21, ptr %8, ptr %7 + %15 = icmp eq i8 %14, -1 + %16 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %8) + %17 = icmp eq i8 %16, -1 + %18 = xor i1 %15, %17 + br i1 %18, label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit, label %19 + +19: ; preds = %13 + %20 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %7, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %8) + %21 = icmp eq i8 %20, -1 + %22 = xor i1 %15, %21 + %..i = select i1 %22, ptr %8, ptr %7 br label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit -_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %18, %13, %11 - %.sroa.0.0.i.sink = phi ptr [ %12, %11 ], [ %0, %13 ], [ %..i, %18 ] - %22 = ptrtoint ptr %.sroa.0.0.i.sink to i64 - %23 = ptrtoint ptr %0 to i64 - %24 = sub nuw i64 %22, %23 - %.sroa.0.0 = lshr exact i64 %24, 3 +_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %19, %13, %11 + %.sroa.0.0.i.sink = phi ptr [ %12, %11 ], [ %0, %13 ], [ %..i, %19 ] + %23 = ptrtoint ptr %.sroa.0.0.i.sink to i64 + %24 = ptrtoint ptr %0 to i64 + %25 = sub nuw i64 %23, %24 + %.sroa.0.0 = lshr exact i64 %25, 3 ret i64 %.sroa.0.0 } diff --git a/bench/pocketpy/optimized/easing.ll b/bench/pocketpy/optimized/easing.ll index 053f6bb0469..47734ec2722 100644 --- a/bench/pocketpy/optimized/easing.ll +++ b/bench/pocketpy/optimized/easing.ll @@ -2908,40 +2908,40 @@ _ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = % %28 = icmp ult i64 %27, %26 %29 = tail call i64 @llvm.umin.i64(i64 %27, i64 1152921504606846975) %30 = select i1 %28, i64 1152921504606846975, i64 %29 - %.not.i.i.i = icmp ne i64 %30, 0 - tail call void @llvm.assume(i1 %.not.i.i.i) - %31 = shl nuw nsw i64 %30, 3 - %32 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %31) #24 - %33 = getelementptr inbounds i8, ptr %32, i64 %23 - store ptr %4, ptr %33, align 8 - %34 = icmp sgt i64 %23, 0 - br i1 %34, label %35, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - -35: ; preds = %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %32, ptr align 8 %20, i64 %23, i1 false) + %31 = icmp ne i64 %30, 0 + tail call void @llvm.assume(i1 %31) + %32 = shl nuw nsw i64 %30, 3 + %33 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %32) #24 + %34 = getelementptr inbounds i8, ptr %33, i64 %23 + store ptr %4, ptr %34, align 8 + %35 = icmp sgt i64 %23, 0 + br i1 %35, label %36, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + +36: ; preds = %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %33, ptr align 8 %20, i64 %23, i1 false) br label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i -_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %35, %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %36 = getelementptr inbounds nuw i8, ptr %33, i64 8 +_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %36, %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i + %37 = getelementptr inbounds nuw i8, ptr %34, i64 8 %.not.i17.i.i = icmp eq ptr %20, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %37 + br i1 %.not.i17.i.i, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %38 -37: ; preds = %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i +38: ; preds = %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i tail call void @_ZdlPvm(ptr noundef nonnull %20, i64 noundef %23) #25 br label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i -_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %37, %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - store ptr %32, ptr %11, align 8 - store ptr %36, ptr %12, align 8 - %38 = getelementptr inbounds nuw ptr, ptr %32, i64 %30 - store ptr %38, ptr %14, align 8 +_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %38, %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + store ptr %33, ptr %11, align 8 + store ptr %37, ptr %12, align 8 + %39 = getelementptr inbounds nuw ptr, ptr %33, i64 %30 + store ptr %39, ptr %14, align 8 br label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE9push_backERKS2_.exit _ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE9push_backERKS2_.exit: ; preds = %16, %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i - %39 = getelementptr inbounds nuw i8, ptr %0, i64 76 - %40 = load i32, ptr %39, align 4 - %41 = add nsw i32 %40, 1 - store i32 %41, ptr %39, align 4 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 76 + %41 = load i32, ptr %40, align 4 + %42 = add nsw i32 %41, 1 + store i32 %42, ptr %40, align 4 ret ptr %4 } diff --git a/bench/postgres/optimized/binaryheap.ll b/bench/postgres/optimized/binaryheap.ll index 9a680fa526a..d9699f668bb 100644 --- a/bench/postgres/optimized/binaryheap.ll +++ b/bench/postgres/optimized/binaryheap.ll @@ -76,78 +76,77 @@ declare void @exit(i32 noundef) local_unnamed_addr #3 define void @binaryheap_build(ptr noundef captures(none) %0) local_unnamed_addr #0 { %2 = load i32, ptr %0, align 8 %3 = add i32 %2, -2 - %4 = icmp sgt i32 %3, -2 - br i1 %4, label %.lr.ph, label %._crit_edge + %4 = sdiv i32 %3, 2 + %5 = icmp ult i32 %4, 1073741824 + br i1 %5, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %1 - %5 = sdiv i32 %3, 2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %9 = zext nneg i32 %5 to i64 - br label %10 + br label %9 -10: ; preds = %.lr.ph, %sift_down.exit - %indvars.iv = phi i64 [ %9, %.lr.ph ], [ %indvars.iv.next, %sift_down.exit ] - %11 = getelementptr inbounds nuw ptr, ptr %6, i64 %indvars.iv +9: ; preds = %.lr.ph, %sift_down.exit + %.05 = phi i32 [ %4, %.lr.ph ], [ %46, %sift_down.exit ] + %10 = zext nneg i32 %.05 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %6, i64 %10 %12 = load ptr, ptr %11, align 8 - %13 = trunc nuw nsw i64 %indvars.iv to i32 - br label %14 + br label %13 -14: ; preds = %41, %10 - %.030.i = phi i32 [ %13, %10 ], [ %.029.i, %41 ] - %15 = shl i32 %.030.i, 1 - %16 = or disjoint i32 %15, 1 - %17 = add i32 %15, 2 - %18 = load i32, ptr %0, align 8 - %19 = icmp slt i32 %17, %18 - br i1 %19, label %20, label %31 +13: ; preds = %40, %9 + %.030.i = phi i32 [ %.05, %9 ], [ %.029.i, %40 ] + %14 = shl i32 %.030.i, 1 + %15 = or disjoint i32 %14, 1 + %16 = add i32 %14, 2 + %17 = load i32, ptr %0, align 8 + %18 = icmp slt i32 %16, %17 + br i1 %18, label %19, label %30 -20: ; preds = %14 - %21 = load ptr, ptr %7, align 8 - %22 = sext i32 %16 to i64 - %23 = getelementptr inbounds ptr, ptr %6, i64 %22 - %24 = load ptr, ptr %23, align 8 - %25 = sext i32 %17 to i64 - %26 = getelementptr inbounds ptr, ptr %6, i64 %25 - %27 = load ptr, ptr %26, align 8 - %28 = load ptr, ptr %8, align 8 - %29 = tail call i32 %21(ptr noundef %24, ptr noundef %27, ptr noundef %28) #5 - %30 = icmp slt i32 %29, 0 - %spec.select.i = select i1 %30, i32 %17, i32 %16 +19: ; preds = %13 + %20 = load ptr, ptr %7, align 8 + %21 = sext i32 %15 to i64 + %22 = getelementptr inbounds ptr, ptr %6, i64 %21 + %23 = load ptr, ptr %22, align 8 + %24 = sext i32 %16 to i64 + %25 = getelementptr inbounds ptr, ptr %6, i64 %24 + %26 = load ptr, ptr %25, align 8 + %27 = load ptr, ptr %8, align 8 + %28 = tail call i32 %20(ptr noundef %23, ptr noundef %26, ptr noundef %27) #5 + %29 = icmp slt i32 %28, 0 + %spec.select.i = select i1 %29, i32 %16, i32 %15 %.pre.i = load i32, ptr %0, align 8 - br label %31 - -31: ; preds = %20, %14 - %32 = phi i32 [ %18, %14 ], [ %.pre.i, %20 ] - %.029.i = phi i32 [ %16, %14 ], [ %spec.select.i, %20 ] - %.not.i = icmp slt i32 %16, %32 - br i1 %.not.i, label %33, label %sift_down.exit - -33: ; preds = %31 - %34 = load ptr, ptr %7, align 8 - %35 = sext i32 %.029.i to i64 - %36 = getelementptr inbounds ptr, ptr %6, i64 %35 - %37 = load ptr, ptr %36, align 8 - %38 = load ptr, ptr %8, align 8 - %39 = tail call i32 %34(ptr noundef %12, ptr noundef %37, ptr noundef %38) #5 - %40 = icmp sgt i32 %39, -1 - br i1 %40, label %sift_down.exit, label %41 - -41: ; preds = %33 - %42 = load ptr, ptr %36, align 8 - %43 = sext i32 %.030.i to i64 - %44 = getelementptr inbounds ptr, ptr %6, i64 %43 - store ptr %42, ptr %44, align 8 - br label %14 - -sift_down.exit: ; preds = %31, %33 - %45 = sext i32 %.030.i to i64 - %46 = getelementptr inbounds ptr, ptr %6, i64 %45 - store ptr %12, ptr %46, align 8 - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %47 = icmp sgt i64 %indvars.iv, 0 - br i1 %47, label %10, label %._crit_edge, !llvm.loop !3 + br label %30 + +30: ; preds = %19, %13 + %31 = phi i32 [ %17, %13 ], [ %.pre.i, %19 ] + %.029.i = phi i32 [ %15, %13 ], [ %spec.select.i, %19 ] + %.not.i = icmp slt i32 %15, %31 + br i1 %.not.i, label %32, label %sift_down.exit + +32: ; preds = %30 + %33 = load ptr, ptr %7, align 8 + %34 = sext i32 %.029.i to i64 + %35 = getelementptr inbounds ptr, ptr %6, i64 %34 + %36 = load ptr, ptr %35, align 8 + %37 = load ptr, ptr %8, align 8 + %38 = tail call i32 %33(ptr noundef %12, ptr noundef %36, ptr noundef %37) #5 + %39 = icmp sgt i32 %38, -1 + br i1 %39, label %sift_down.exit, label %40 + +40: ; preds = %32 + %41 = load ptr, ptr %35, align 8 + %42 = sext i32 %.030.i to i64 + %43 = getelementptr inbounds ptr, ptr %6, i64 %42 + store ptr %41, ptr %43, align 8 + br label %13 + +sift_down.exit: ; preds = %30, %32 + %44 = sext i32 %.030.i to i64 + %45 = getelementptr inbounds ptr, ptr %6, i64 %44 + store ptr %12, ptr %45, align 8 + %46 = add nsw i32 %.05, -1 + %47 = icmp ult i32 %46, 1073741823 + br i1 %47, label %9, label %._crit_edge, !llvm.loop !3 ._crit_edge: ; preds = %sift_down.exit, %1 %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/postgres/optimized/c_keywords.ll b/bench/postgres/optimized/c_keywords.ll index 618bb5085b9..bce0289bfab 100644 --- a/bench/postgres/optimized/c_keywords.ll +++ b/bench/postgres/optimized/c_keywords.ll @@ -12,66 +12,68 @@ target triple = "x86_64-pc-linux-gnu" define dso_local range(i32 -1, 65536) i32 @ScanCKeywordLookup(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { %2 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #2 %3 = icmp ugt i64 %2, 8 - br i1 %3, label %36, label %4 + br i1 %3, label %39, label %4 4: ; preds = %1 - %.not11.i = icmp eq i64 %2, 0 - br i1 %.not11.i, label %ScanCKeywords_hash_func.exit, label %.lr.ph.i + %5 = icmp eq i64 %2, 0 + br i1 %5, label %ScanCKeywords_hash_func.exit, label %.lr.ph.i .lr.ph.i: ; preds = %4, %.lr.ph.i - %.015.i = phi i64 [ %5, %.lr.ph.i ], [ %2, %4 ] - %.0814.i = phi i32 [ %12, %.lr.ph.i ], [ 0, %4 ] - %.0913.i = phi i32 [ %10, %.lr.ph.i ], [ 0, %4 ] - %.01012.i = phi ptr [ %6, %.lr.ph.i ], [ %0, %4 ] - %5 = add i64 %.015.i, -1 - %6 = getelementptr inbounds nuw i8, ptr %.01012.i, i64 1 - %7 = load i8, ptr %.01012.i, align 1 - %8 = mul i32 %.0913.i, 257 - %9 = zext i8 %7 to i32 - %10 = add i32 %8, %9 - %11 = mul i32 %.0814.i, 17 - %12 = add i32 %11, %9 - %.not.i = icmp eq i64 %5, 0 + %.015.i = phi i64 [ %6, %.lr.ph.i ], [ %2, %4 ] + %.0814.i = phi i32 [ %13, %.lr.ph.i ], [ 0, %4 ] + %.0913.i = phi i32 [ %11, %.lr.ph.i ], [ 0, %4 ] + %.01012.i = phi ptr [ %7, %.lr.ph.i ], [ %0, %4 ] + %6 = add i64 %.015.i, -1 + %7 = getelementptr inbounds nuw i8, ptr %.01012.i, i64 1 + %8 = load i8, ptr %.01012.i, align 1 + %9 = mul i32 %.0913.i, 257 + %10 = zext i8 %8 to i32 + %11 = add i32 %9, %10 + %12 = mul i32 %.0814.i, 17 + %13 = add i32 %12, %10 + %.not.i = icmp eq i64 %6, 0 br i1 %.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !4 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i - %13 = urem i32 %10, 53 - %14 = zext nneg i32 %13 to i64 - %15 = urem i32 %12, 53 - %16 = zext nneg i32 %15 to i64 + %14 = urem i32 %11, 53 + %15 = zext nneg i32 %14 to i64 + %16 = urem i32 %13, 53 + %17 = zext nneg i32 %16 to i64 br label %ScanCKeywords_hash_func.exit ScanCKeywords_hash_func.exit: ; preds = %4, %._crit_edge.loopexit.i - %.09.lcssa.i = phi i64 [ 0, %4 ], [ %14, %._crit_edge.loopexit.i ] - %.08.lcssa.i = phi i64 [ 0, %4 ], [ %16, %._crit_edge.loopexit.i ] - %17 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.09.lcssa.i - %18 = load i8, ptr %17, align 1 - %19 = sext i8 %18 to i32 - %20 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.08.lcssa.i - %21 = load i8, ptr %20, align 1 - %22 = sext i8 %21 to i32 - %23 = add nsw i32 %22, %19 - %or.cond = icmp ugt i32 %23, 25 - br i1 %or.cond, label %36, label %24 + %.09.lcssa.i = phi i64 [ 0, %4 ], [ %15, %._crit_edge.loopexit.i ] + %.08.lcssa.i = phi i64 [ 0, %4 ], [ %17, %._crit_edge.loopexit.i ] + %18 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.09.lcssa.i + %19 = load i8, ptr %18, align 1 + %20 = sext i8 %19 to i32 + %21 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.08.lcssa.i + %22 = load i8, ptr %21, align 1 + %23 = sext i8 %22 to i32 + %24 = add nsw i32 %23, %20 + %25 = icmp ugt i32 %24, -257 + %26 = icmp sgt i32 %24, 25 + %or.cond = or i1 %25, %26 + br i1 %or.cond, label %39, label %27 -24: ; preds = %ScanCKeywords_hash_func.exit - %25 = zext nneg i32 %23 to i64 - %26 = getelementptr inbounds nuw i16, ptr @ScanCKeywords_kw_offsets, i64 %25 - %27 = load i16, ptr %26, align 2 - %28 = zext i16 %27 to i64 - %29 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_kw_string, i64 %28 - %30 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %0) #2 - %31 = icmp eq i32 %30, 0 - br i1 %31, label %32, label %36 +27: ; preds = %ScanCKeywords_hash_func.exit + %28 = zext nneg i32 %24 to i64 + %29 = getelementptr inbounds nuw i16, ptr @ScanCKeywords_kw_offsets, i64 %28 + %30 = load i16, ptr %29, align 2 + %31 = zext i16 %30 to i64 + %32 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_kw_string, i64 %31 + %33 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) %0) #2 + %34 = icmp eq i32 %33, 0 + br i1 %34, label %35, label %39 -32: ; preds = %24 - %33 = getelementptr inbounds nuw i16, ptr @ScanCKeywordTokens, i64 %25 - %34 = load i16, ptr %33, align 2 - %35 = zext i16 %34 to i32 - br label %36 +35: ; preds = %27 + %36 = getelementptr inbounds nuw i16, ptr @ScanCKeywordTokens, i64 %28 + %37 = load i16, ptr %36, align 2 + %38 = zext i16 %37 to i32 + br label %39 -36: ; preds = %24, %ScanCKeywords_hash_func.exit, %1, %32 - %.0 = phi i32 [ %35, %32 ], [ -1, %1 ], [ -1, %ScanCKeywords_hash_func.exit ], [ -1, %24 ] +39: ; preds = %27, %ScanCKeywords_hash_func.exit, %1, %35 + %.0 = phi i32 [ %38, %35 ], [ -1, %1 ], [ -1, %ScanCKeywords_hash_func.exit ], [ -1, %27 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/int8.ll b/bench/postgres/optimized/int8.ll index 6c7efc56ee8..3d8473bebb0 100644 --- a/bench/postgres/optimized/int8.ll +++ b/bench/postgres/optimized/int8.ll @@ -699,7 +699,7 @@ define dso_local i64 @int8div(ptr noundef readonly captures(none) %0) local_unna } ; Function Attrs: nounwind uwtable -define dso_local range(i64 0, -9223372036854775808) i64 @int8abs(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { +define dso_local range(i64 -9223372036854775807, -9223372036854775808) i64 @int8abs(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 %3 = load i64, ptr %2, align 8 %4 = icmp eq i64 %3, -9223372036854775808 @@ -713,8 +713,10 @@ define dso_local range(i64 0, -9223372036854775808) i64 @int8abs(ptr noundef rea unreachable 9: ; preds = %1 - %10 = tail call i64 @llvm.abs.i64(i64 %3, i1 true) - ret i64 %10 + %10 = icmp ugt i64 %3, -9223372036854775808 + %11 = sub nsw i64 0, %3 + %12 = select i1 %10, i64 %11, i64 %3 + ret i64 %12 } ; Function Attrs: nounwind uwtable @@ -758,45 +760,45 @@ define dso_local range(i64 0, -9223372036854775807) i64 @int8gcd(ptr noundef rea %spec.select.i = select i1 %10, i64 %3, i64 %5 %spec.select28.i = select i1 %10, i64 %5, i64 %3 %11 = icmp eq i64 %spec.select28.i, -9223372036854775808 - br i1 %11, label %12, label %19 + br i1 %11, label %12, label %20 12: ; preds = %1 %13 = and i64 %spec.select.i, 9223372036854775807 - %or.cond.i = icmp eq i64 %13, 0 - br i1 %or.cond.i, label %14, label %18 + %14 = icmp eq i64 %13, 0 + br i1 %14, label %15, label %19 -14: ; preds = %12 - %15 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %16 = tail call i32 @errcode(i32 noundef 50331778) #10 - %17 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +15: ; preds = %12 + %16 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %17 = tail call i32 @errcode(i32 noundef 50331778) #10 + %18 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 636, ptr noundef nonnull @__func__.int8gcd_internal) #10 unreachable -18: ; preds = %12 +19: ; preds = %12 %cond.i = icmp eq i64 %spec.select.i, -1 br i1 %cond.i, label %int8gcd_internal.exit, label %.lr.ph.i.preheader -19: ; preds = %1 +20: ; preds = %1 %.not30.i = icmp eq i64 %spec.select.i, 0 br i1 %.not30.i, label %._crit_edge.i, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %19, %18 +.lr.ph.i.preheader: ; preds = %20, %19 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %.132.i = phi i64 [ %.12731.i, %.lr.ph.i ], [ %spec.select28.i, %.lr.ph.i.preheader ] - %.12731.i = phi i64 [ %20, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] - %20 = srem i64 %.132.i, %.12731.i - %.not.i = icmp eq i64 %20, 0 + %.12731.i = phi i64 [ %21, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] + %21 = srem i64 %.132.i, %.12731.i + %.not.i = icmp eq i64 %21, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !9 -._crit_edge.i: ; preds = %.lr.ph.i, %19 - %.1.lcssa.i = phi i64 [ %spec.select28.i, %19 ], [ %.12731.i, %.lr.ph.i ] +._crit_edge.i: ; preds = %.lr.ph.i, %20 + %.1.lcssa.i = phi i64 [ %spec.select28.i, %20 ], [ %.12731.i, %.lr.ph.i ] %spec.select29.i = tail call i64 @llvm.abs.i64(i64 %.1.lcssa.i, i1 false) br label %int8gcd_internal.exit -int8gcd_internal.exit: ; preds = %18, %._crit_edge.i - %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %18 ] +int8gcd_internal.exit: ; preds = %19, %._crit_edge.i + %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %19 ] ret i64 %.0.i } @@ -809,7 +811,7 @@ define dso_local range(i64 0, -9223372036854775808) i64 @int8lcm(ptr noundef rea %6 = icmp eq i64 %3, 0 %7 = icmp eq i64 %5, 0 %or.cond = select i1 %6, i1 true, i1 %7 - br i1 %or.cond, label %38, label %8 + br i1 %or.cond, label %42, label %8 8: ; preds = %1 %9 = tail call i64 @llvm.abs.i64(i64 %3, i1 false) @@ -824,66 +826,68 @@ define dso_local range(i64 0, -9223372036854775808) i64 @int8lcm(ptr noundef rea 15: ; preds = %8 %16 = and i64 %spec.select.i, 9223372036854775807 - %or.cond.i = icmp eq i64 %16, 0 - br i1 %or.cond.i, label %17, label %21 + %17 = icmp eq i64 %16, 0 + br i1 %17, label %18, label %22 -17: ; preds = %15 - %18 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %19 = tail call i32 @errcode(i32 noundef 50331778) #10 - %20 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +18: ; preds = %15 + %19 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %20 = tail call i32 @errcode(i32 noundef 50331778) #10 + %21 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 636, ptr noundef nonnull @__func__.int8gcd_internal) #10 unreachable -21: ; preds = %15 - %cond.i = icmp eq i64 %spec.select.i, -1 - br i1 %cond.i, label %int8gcd_internal.exit, label %.lr.ph.i.preheader +22: ; preds = %15 + %23 = icmp eq i64 %spec.select.i, -1 + br i1 %23, label %int8gcd_internal.exit, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %8, %21 +.lr.ph.i.preheader: ; preds = %8, %22 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %.132.i = phi i64 [ %.12731.i, %.lr.ph.i ], [ %spec.select28.i, %.lr.ph.i.preheader ] - %.12731.i = phi i64 [ %22, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] - %22 = srem i64 %.132.i, %.12731.i - %.not.i = icmp eq i64 %22, 0 + %.12731.i = phi i64 [ %24, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] + %24 = srem i64 %.132.i, %.12731.i + %.not.i = icmp eq i64 %24, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !9 ._crit_edge.i: ; preds = %.lr.ph.i %spec.select29.i = tail call i64 @llvm.abs.i64(i64 %.12731.i, i1 false) br label %int8gcd_internal.exit -int8gcd_internal.exit: ; preds = %21, %._crit_edge.i - %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %21 ] - %23 = sdiv i64 %3, %.0.i - %24 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %23, i64 %5) - %25 = extractvalue { i64, i1 } %24, 1 - %26 = extractvalue { i64, i1 } %24, 0 - br i1 %25, label %27, label %31, !prof !7 - -27: ; preds = %int8gcd_internal.exit - %28 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %29 = tail call i32 @errcode(i32 noundef 50331778) #10 - %30 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +int8gcd_internal.exit: ; preds = %22, %._crit_edge.i + %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %22 ] + %25 = sdiv i64 %3, %.0.i + %26 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %25, i64 %5) + %27 = extractvalue { i64, i1 } %26, 1 + %28 = extractvalue { i64, i1 } %26, 0 + br i1 %27, label %29, label %33, !prof !7 + +29: ; preds = %int8gcd_internal.exit + %30 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %31 = tail call i32 @errcode(i32 noundef 50331778) #10 + %32 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 704, ptr noundef nonnull @__func__.int8lcm) #10 unreachable -31: ; preds = %int8gcd_internal.exit - %32 = icmp eq i64 %26, -9223372036854775808 - br i1 %32, label %33, label %37, !prof !7 +33: ; preds = %int8gcd_internal.exit + %34 = icmp eq i64 %28, -9223372036854775808 + br i1 %34, label %35, label %39, !prof !7 -33: ; preds = %31 - %34 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %35 = tail call i32 @errcode(i32 noundef 50331778) #10 - %36 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +35: ; preds = %33 + %36 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %37 = tail call i32 @errcode(i32 noundef 50331778) #10 + %38 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 710, ptr noundef nonnull @__func__.int8lcm) #10 unreachable -37: ; preds = %31 - %spec.select = tail call i64 @llvm.abs.i64(i64 %26, i1 true) - br label %38 +39: ; preds = %33 + %40 = icmp ugt i64 %28, -9223372036854775808 + %41 = sub nsw i64 0, %28 + %spec.select = select i1 %40, i64 %41, i64 %28 + br label %42 -38: ; preds = %37, %1 - %.0 = phi i64 [ 0, %1 ], [ %spec.select, %37 ] +42: ; preds = %39, %1 + %.0 = phi i64 [ 0, %1 ], [ %spec.select, %39 ] ret i64 %.0 } diff --git a/bench/postgres/optimized/inval.ll b/bench/postgres/optimized/inval.ll index 6698cc91600..712c9209899 100644 --- a/bench/postgres/optimized/inval.ll +++ b/bench/postgres/optimized/inval.ll @@ -138,14 +138,14 @@ define dso_local void @LocalExecuteInvalidationMessage(ptr noundef readonly capt %22 = zext nneg i32 %16 to i64 %23 = getelementptr inbounds nuw i16, ptr @syscache_callback_links, i64 %22 %.0.in.in12.i = load i16, ptr %23, align 2 - %24 = icmp sgt i16 %.0.in.in12.i, 0 + %.0.in13.i = sext i16 %.0.in.in12.i to i32 + %.014.i = add nsw i32 %.0.in13.i, -1 + %24 = icmp ult i32 %.014.i, 32767 br i1 %24, label %.lr.ph.i, label %CallSyscacheCallbacks.exit .lr.ph.i: ; preds = %21, %.lr.ph.i - %.0.in.in13.i = phi i16 [ %.0.in.in.i, %.lr.ph.i ], [ %.0.in.in12.i, %21 ] - %.0.in.i = zext nneg i16 %.0.in.in13.i to i64 - %.0.i = add nuw nsw i64 %.0.in.i, 4294967295 - %25 = and i64 %.0.i, 4294967295 + %.015.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.014.i, %21 ] + %25 = zext nneg i32 %.015.i to i64 %26 = getelementptr inbounds nuw %struct.SYSCACHECALLBACK, ptr @syscache_callback_list, i64 %25 %27 = getelementptr inbounds nuw i8, ptr %26, i64 8 %28 = load ptr, ptr %27, align 8 @@ -154,7 +154,9 @@ define dso_local void @LocalExecuteInvalidationMessage(ptr noundef readonly capt tail call void %28(i64 noundef %30, i32 noundef %16, i32 noundef %17) #6 %31 = getelementptr inbounds nuw i8, ptr %26, i64 2 %.0.in.in.i = load i16, ptr %31, align 2 - %32 = icmp sgt i16 %.0.in.in.i, 0 + %.0.in.i = sext i16 %.0.in.in.i to i32 + %.0.i = add nsw i32 %.0.in.i, -1 + %32 = icmp ult i32 %.0.i, 32767 br i1 %32, label %.lr.ph.i, label %CallSyscacheCallbacks.exit, !llvm.loop !7 33: ; preds = %1 @@ -311,14 +313,14 @@ define dso_local void @CallSyscacheCallbacks(i32 noundef %0, i32 noundef %1) loc %7 = zext nneg i32 %0 to i64 %8 = getelementptr inbounds nuw i16, ptr @syscache_callback_links, i64 %7 %.0.in.in12 = load i16, ptr %8, align 2 - %9 = icmp sgt i16 %.0.in.in12, 0 + %.0.in13 = sext i16 %.0.in.in12 to i32 + %.014 = add nsw i32 %.0.in13, -1 + %9 = icmp ult i32 %.014, 32767 br i1 %9, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %6, %.lr.ph - %.0.in.in13 = phi i16 [ %.0.in.in, %.lr.ph ], [ %.0.in.in12, %6 ] - %.0.in = zext nneg i16 %.0.in.in13 to i64 - %.0 = add nuw nsw i64 %.0.in, 4294967295 - %10 = and i64 %.0, 4294967295 + %.015 = phi i32 [ %.0, %.lr.ph ], [ %.014, %6 ] + %10 = zext nneg i32 %.015 to i64 %11 = getelementptr inbounds nuw %struct.SYSCACHECALLBACK, ptr @syscache_callback_list, i64 %10 %12 = getelementptr inbounds nuw i8, ptr %11, i64 8 %13 = load ptr, ptr %12, align 8 @@ -327,7 +329,9 @@ define dso_local void @CallSyscacheCallbacks(i32 noundef %0, i32 noundef %1) loc tail call void %13(i64 noundef %15, i32 noundef %0, i32 noundef %1) #6 %16 = getelementptr inbounds nuw i8, ptr %11, i64 2 %.0.in.in = load i16, ptr %16, align 2 - %17 = icmp sgt i16 %.0.in.in, 0 + %.0.in = sext i16 %.0.in.in to i32 + %.0 = add nsw i32 %.0.in, -1 + %17 = icmp ult i32 %.0, 32767 br i1 %17, label %.lr.ph, label %._crit_edge, !llvm.loop !7 ._crit_edge: ; preds = %.lr.ph, %6 diff --git a/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll b/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll index 174ae21c363..40fe148c583 100644 --- a/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll +++ b/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll @@ -184,7 +184,7 @@ define hidden range(i32 -2147483648, 2) i32 @indonesian_ISO_8859_1_stem(ptr noun 79: ; preds = %73 %80 = tail call fastcc i32 @r_remove_first_order_prefix(ptr noundef nonnull %0) %81 = icmp eq i32 %80, 0 - br i1 %81, label %.thread194, label %82 + br i1 %81, label %.thread190, label %82 82: ; preds = %79 %83 = icmp slt i32 %80, 0 @@ -203,66 +203,64 @@ define hidden range(i32 -2147483648, 2) i32 @indonesian_ISO_8859_1_stem(ptr noun %91 = load i32, ptr %25, align 4 store i32 %91, ptr %5, align 8 %92 = tail call fastcc i32 @r_remove_suffix(ptr noundef nonnull %0) - %93 = icmp eq i32 %92, 0 - br i1 %93, label %r_remove_particle.exit.sink.split, label %94 - -94: ; preds = %90 - %95 = icmp sgt i32 %92, -1 - br i1 %95, label %.thread174, label %r_remove_particle.exit + switch i32 %92, label %r_remove_particle.exit [ + i32 0, label %r_remove_particle.exit.sink.split + i32 1, label %.thread172 + ] -.thread174: ; preds = %94 +.thread172: ; preds = %90 store i32 %85, ptr %5, align 8 - %96 = load ptr, ptr %2, align 8 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 4 - %98 = load i32, ptr %97, align 4 - %99 = icmp sgt i32 %98, 2 - br i1 %99, label %100, label %r_remove_particle.exit.sink.split - -100: ; preds = %.thread174 - %101 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) - %102 = icmp eq i32 %101, 0 - %103 = icmp slt i32 %101, 0 - %..5 = select i1 %103, i32 %101, i32 %.016.i.ph - %.9 = select i1 %102, i32 %.016.i.ph, i32 %..5 - %.not = icmp sgt i32 %101, -1 + %93 = load ptr, ptr %2, align 8 + %94 = getelementptr inbounds nuw i8, ptr %93, i64 4 + %95 = load i32, ptr %94, align 4 + %96 = icmp sgt i32 %95, 2 + br i1 %96, label %97, label %r_remove_particle.exit.sink.split + +97: ; preds = %.thread172 + %98 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) + %99 = icmp eq i32 %98, 0 + %100 = icmp slt i32 %98, 0 + %..5 = select i1 %100, i32 %98, i32 %.016.i.ph + %.9 = select i1 %99, i32 %.016.i.ph, i32 %..5 + %.not = icmp sgt i32 %98, -1 br i1 %.not, label %r_remove_particle.exit.sink.split, label %r_remove_particle.exit -.thread194: ; preds = %79 +.thread190: ; preds = %79 store i32 %74, ptr %5, align 8 - %104 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) - %105 = icmp sgt i32 %104, -1 - br i1 %105, label %106, label %r_remove_particle.exit + %101 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) + %102 = icmp ult i32 %101, 2 + br i1 %102, label %103, label %r_remove_particle.exit -106: ; preds = %.thread194 +103: ; preds = %.thread190 store i32 %74, ptr %5, align 8 - %107 = load ptr, ptr %2, align 8 - %108 = getelementptr inbounds nuw i8, ptr %107, i64 4 - %109 = load i32, ptr %108, align 4 - %110 = icmp sgt i32 %109, 2 - br i1 %110, label %111, label %r_remove_particle.exit.sink.split + %104 = load ptr, ptr %2, align 8 + %105 = getelementptr inbounds nuw i8, ptr %104, i64 4 + %106 = load i32, ptr %105, align 4 + %107 = icmp sgt i32 %106, 2 + br i1 %107, label %108, label %r_remove_particle.exit.sink.split -111: ; preds = %106 +108: ; preds = %103 store i32 %74, ptr %24, align 8 - %112 = load i32, ptr %25, align 4 - store i32 %112, ptr %5, align 8 - %113 = tail call fastcc i32 @r_remove_suffix(ptr noundef nonnull %0) - %.fr = freeze i32 %113 - %.lobit207 = lshr i32 %.fr, 31 - %114 = add nsw i32 %.lobit207, -1 - %switch221 = icmp ult i32 %114, 7 - br i1 %switch221, label %.critedge, label %r_remove_particle.exit.sink.split - -.critedge: ; preds = %111 - %.not216 = icmp sgt i32 %.fr, -1 - %spec.select = select i1 %.not216, i32 1, i32 %.fr + %109 = load i32, ptr %25, align 4 + store i32 %109, ptr %5, align 8 + %110 = tail call fastcc i32 @r_remove_suffix(ptr noundef nonnull %0) + %.fr = freeze i32 %110 + %.lobit203 = lshr i32 %.fr, 31 + %111 = add nsw i32 %.lobit203, -1 + %switch217 = icmp ult i32 %111, 7 + br i1 %switch217, label %.critedge, label %r_remove_particle.exit.sink.split + +.critedge: ; preds = %108 + %.not212 = icmp sgt i32 %.fr, -1 + %spec.select = select i1 %.not212, i32 1, i32 %.fr br label %r_remove_particle.exit -r_remove_particle.exit.sink.split: ; preds = %106, %111, %90, %84, %100, %.thread174 +r_remove_particle.exit.sink.split: ; preds = %103, %108, %84, %97, %.thread172, %90 store i32 %74, ptr %5, align 8 br label %r_remove_particle.exit -r_remove_particle.exit: ; preds = %.critedge, %r_remove_particle.exit.sink.split, %82, %100, %94, %63, %.thread194, %37, %73, %47, %._crit_edge - %.0 = phi i32 [ 0, %._crit_edge ], [ 0, %47 ], [ 0, %73 ], [ %40, %37 ], [ %104, %.thread194 ], [ %66, %63 ], [ %.9, %100 ], [ %80, %82 ], [ %92, %94 ], [ %spec.select, %.critedge ], [ 1, %r_remove_particle.exit.sink.split ] +r_remove_particle.exit: ; preds = %.critedge, %r_remove_particle.exit.sink.split, %90, %82, %97, %63, %.thread190, %37, %73, %47, %._crit_edge + %.0 = phi i32 [ 0, %._crit_edge ], [ 0, %47 ], [ 0, %73 ], [ %40, %37 ], [ %101, %.thread190 ], [ %66, %63 ], [ %.9, %97 ], [ %80, %82 ], [ %92, %90 ], [ %spec.select, %.critedge ], [ 1, %r_remove_particle.exit.sink.split ] ret i32 %.0 } diff --git a/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll b/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll index 3d1a2bdc468..014ee588af6 100644 --- a/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll +++ b/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll @@ -110,64 +110,66 @@ declare void @proj_cleanup() local_unnamed_addr #9 ; Function Attrs: mustprogress norecurse uwtable define hidden noundef range(i32 -1, 1) i32 @main(i32 noundef %0, ptr noundef readonly captures(none) %1) local_unnamed_addr #10 { %3 = icmp slt i32 %0, 2 - br i1 %3, label %4, label %6 + br i1 %3, label %4, label %7 4: ; preds = %2 %5 = tail call i32 @LLVMFuzzerTestOneInput(ptr noundef nonnull @__const.main.str, i64 noundef 69) - br label %33 - -6: ; preds = %2 - %7 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %8 = load ptr, ptr %7, align 8, !tbaa !10 - %9 = tail call noalias ptr @fopen(ptr noundef %8, ptr noundef nonnull @.str.5) - %.not = icmp eq ptr %9, null - br i1 %.not, label %10, label %14 - -10: ; preds = %6 - %11 = load ptr, ptr @stderr, align 8, !tbaa !13 - %12 = load ptr, ptr %7, align 8, !tbaa !10 - %13 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11, ptr noundef nonnull @.str.6, ptr noundef %12) #17 + %6 = icmp eq i32 %5, -1 + %. = sext i1 %6 to i32 + br label %34 + +7: ; preds = %2 + %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %9 = load ptr, ptr %8, align 8, !tbaa !10 + %10 = tail call noalias ptr @fopen(ptr noundef %9, ptr noundef nonnull @.str.5) + %.not = icmp eq ptr %10, null + br i1 %.not, label %11, label %15 + +11: ; preds = %7 + %12 = load ptr, ptr @stderr, align 8, !tbaa !13 + %13 = load ptr, ptr %8, align 8, !tbaa !10 + %14 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.6, ptr noundef %13) #17 tail call void @exit(i32 noundef 1) #18 unreachable -14: ; preds = %6 - %15 = tail call i32 @fseek(ptr noundef nonnull %9, i64 noundef 0, i32 noundef 2) - %16 = tail call i64 @ftell(ptr noundef nonnull %9) - %17 = tail call i32 @fseek(ptr noundef nonnull %9, i64 noundef 0, i32 noundef 0) - %sext = shl i64 %16, 32 - %18 = ashr exact i64 %sext, 32 - %19 = tail call noalias ptr @malloc(i64 noundef %18) #16 - %.not25 = icmp eq ptr %19, null - br i1 %.not25, label %20, label %24 - -20: ; preds = %14 - %21 = load ptr, ptr @stderr, align 8, !tbaa !13 - %22 = tail call i64 @fwrite(ptr nonnull @.str.7, i64 15, i64 1, ptr %21) #15 - %23 = tail call i32 @fclose(ptr noundef nonnull %9) +15: ; preds = %7 + %16 = tail call i32 @fseek(ptr noundef nonnull %10, i64 noundef 0, i32 noundef 2) + %17 = tail call i64 @ftell(ptr noundef nonnull %10) + %18 = tail call i32 @fseek(ptr noundef nonnull %10, i64 noundef 0, i32 noundef 0) + %sext = shl i64 %17, 32 + %19 = ashr exact i64 %sext, 32 + %20 = tail call noalias ptr @malloc(i64 noundef %19) #16 + %.not25 = icmp eq ptr %20, null + br i1 %.not25, label %21, label %25 + +21: ; preds = %15 + %22 = load ptr, ptr @stderr, align 8, !tbaa !13 + %23 = tail call i64 @fwrite(ptr nonnull @.str.7, i64 15, i64 1, ptr %22) #15 + %24 = tail call i32 @fclose(ptr noundef nonnull %10) tail call void @exit(i32 noundef 1) #18 unreachable -24: ; preds = %14 - %25 = tail call i64 @fread(ptr noundef nonnull %19, i64 noundef %18, i64 noundef 1, ptr noundef nonnull %9) - %.not26 = icmp eq i64 %25, 1 - br i1 %.not26, label %30, label %26 +25: ; preds = %15 + %26 = tail call i64 @fread(ptr noundef nonnull %20, i64 noundef %19, i64 noundef 1, ptr noundef nonnull %10) + %.not26 = icmp eq i64 %26, 1 + br i1 %.not26, label %31, label %27 -26: ; preds = %24 - %27 = load ptr, ptr @stderr, align 8, !tbaa !13 - %28 = tail call i64 @fwrite(ptr nonnull @.str.8, i64 14, i64 1, ptr %27) #15 - %29 = tail call i32 @fclose(ptr noundef nonnull %9) - tail call void @free(ptr noundef nonnull %19) #13 +27: ; preds = %25 + %28 = load ptr, ptr @stderr, align 8, !tbaa !13 + %29 = tail call i64 @fwrite(ptr nonnull @.str.8, i64 14, i64 1, ptr %28) #15 + %30 = tail call i32 @fclose(ptr noundef nonnull %10) + tail call void @free(ptr noundef nonnull %20) #13 tail call void @exit(i32 noundef 1) #18 unreachable -30: ; preds = %24 - %31 = tail call i32 @fclose(ptr noundef nonnull %9) - %32 = tail call i32 @LLVMFuzzerTestOneInput(ptr noundef nonnull %19, i64 noundef %18) - tail call void @free(ptr noundef nonnull %19) #13 - br label %33 +31: ; preds = %25 + %32 = tail call i32 @fclose(ptr noundef nonnull %10) + %33 = tail call i32 @LLVMFuzzerTestOneInput(ptr noundef nonnull %20, i64 noundef %19) + tail call void @free(ptr noundef nonnull %20) #13 + br label %34 -33: ; preds = %30, %4 - %.1 = phi i32 [ %5, %4 ], [ %32, %30 ] +34: ; preds = %31, %4 + %.1 = phi i32 [ %., %4 ], [ %33, %31 ] ret i32 %.1 } diff --git a/bench/protobuf/optimized/name_resolver.ll b/bench/protobuf/optimized/name_resolver.ll index 1aee9c505a1..21932bcab78 100644 --- a/bench/protobuf/optimized/name_resolver.ll +++ b/bench/protobuf/optimized/name_resolver.ll @@ -190,27 +190,27 @@ if.then: ; preds = %entry %_has_bits_.i = getelementptr inbounds nuw i8, ptr %3, i64 40 %4 = load i32, ptr %_has_bits_.i, align 4 %and.i = and i32 %4, 2 - %cmp.i.not = icmp eq i32 %and.i, 0 - br i1 %cmp.i.not, label %if.else, label %if.then5 + %5 = icmp eq i32 %and.i, 0 + br i1 %5, label %if.else, label %if.then5 if.then5: ; preds = %if.then %java_outer_classname_.i.i = getelementptr inbounds nuw i8, ptr %3, i64 80 - %5 = load ptr, ptr %java_outer_classname_.i.i, align 8 - %6 = ptrtoint ptr %5 to i64 - %and.i.i.i = and i64 %6, -4 - %7 = inttoptr i64 %and.i.i.i to ptr - %call8 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i, ptr noundef nonnull align 8 dereferenceable(32) %7) + %6 = load ptr, ptr %java_outer_classname_.i.i, align 8 + %7 = ptrtoint ptr %6 to i64 + %and.i.i.i = and i64 %7, -4 + %8 = inttoptr i64 %and.i.i.i to ptr + %call8 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i, ptr noundef nonnull align 8 dereferenceable(32) %8) br label %if.end15 if.else: ; preds = %if.then call void @_ZN6google8protobuf8compiler4java17ClassNameResolver32GetFileDefaultImmutableClassNameB5cxx11EPKNS0_14FileDescriptorE(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, ptr nonnull align 8 poison, ptr noundef nonnull %2) %call9 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #18 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #18 - %8 = load ptr, ptr %file.addr, align 8 + %9 = load ptr, ptr %file.addr, align 8 %call10 = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i) #18 - %9 = extractvalue { i64, ptr } %call10, 0 - %10 = extractvalue { i64, ptr } %call10, 1 - %call11 = call noundef zeroext i1 @_ZN6google8protobuf8compiler4java17ClassNameResolver23HasConflictingClassNameEPKNS0_14FileDescriptorESt17basic_string_viewIcSt11char_traitsIcEENS2_12NameEqualityE(ptr nonnull align 8 poison, ptr noundef %8, i64 %9, ptr %10, i32 noundef 1) + %10 = extractvalue { i64, ptr } %call10, 0 + %11 = extractvalue { i64, ptr } %call10, 1 + %call11 = call noundef zeroext i1 @_ZN6google8protobuf8compiler4java17ClassNameResolver23HasConflictingClassNameEPKNS0_14FileDescriptorESt17basic_string_viewIcSt11char_traitsIcEENS2_12NameEqualityE(ptr nonnull align 8 poison, ptr noundef %9, i64 %10, ptr %11, i32 noundef 1) br i1 %call11, label %if.then12, label %if.end15 if.then12: ; preds = %if.else @@ -2093,13 +2093,13 @@ for.body.i: ; preds = %for.inc.i, %for.bod for.inc.i: ; preds = %for.body.i %sub.i.i = add nsw i32 %__begin0.sroa.0.027.i, -1 %and.i10.i = and i32 %sub.i.i, %__begin0.sroa.0.027.i - %cmp.i.not.i = icmp eq i32 %and.i10.i, 0 - br i1 %cmp.i.not.i, label %for.end.i, label %for.body.i + %12 = icmp eq i32 %and.i10.i, 0 + br i1 %12, label %for.end.i, label %for.body.i for.end.i: ; preds = %for.inc.i, %while.body.i %cmp.i.i11.i = icmp eq <16 x i8> %7, splat (i8 -128) - %12 = bitcast <16 x i1> %cmp.i.i11.i to i16 - %cmp.i12.not.i = icmp eq i16 %12, 0 + %13 = bitcast <16 x i1> %cmp.i.i11.i to i16 + %cmp.i12.not.i = icmp eq i16 %13, 0 br i1 %cmp.i12.not.i, label %if.end36.i, label %if.then if.end36.i: ; preds = %for.end.i @@ -2109,10 +2109,10 @@ if.end36.i: ; preds = %for.end.i if.then: ; preds = %for.end.i %call38.i = tail call noundef i64 @_ZN4absl12lts_2023080218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPKN6google8protobuf14FileDescriptorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_6HashEqIS8_vE4HashENSH_2EqESaISt4pairIKS8_SE_EEE14prepare_insertEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %conv1.i.i.i.i.i.i.i.i.i.i.i.i.i) - %13 = load ptr, ptr %slots_.i.i.i, align 8 - %add.ptr.i3 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %13, i64 %call38.i - %14 = load ptr, ptr %k, align 8 - store ptr %14, ptr %add.ptr.i3, align 8 + %14 = load ptr, ptr %slots_.i.i.i, align 8 + %add.ptr.i3 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %14, i64 %call38.i + %15 = load ptr, ptr %k, align 8 + store ptr %15, ptr %add.ptr.i3, align 8 %second.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i3, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i.i.i) #18 %.pre = load ptr, ptr %this, align 8 @@ -2120,12 +2120,12 @@ if.then: ; preds = %for.end.i br label %if.end if.end: ; preds = %for.body.i, %if.then - %15 = phi ptr [ %.pre20, %if.then ], [ %6, %for.body.i ] - %16 = phi ptr [ %.pre, %if.then ], [ %0, %for.body.i ] + %16 = phi ptr [ %.pre20, %if.then ], [ %6, %for.body.i ] + %17 = phi ptr [ %.pre, %if.then ], [ %0, %for.body.i ] %retval.sroa.3.0.i16 = phi i8 [ 1, %if.then ], [ 0, %for.body.i ] %retval.sroa.0.0.i15 = phi i64 [ %call38.i, %if.then ], [ %and.i.i, %for.body.i ] - %add.ptr.i4 = getelementptr inbounds i8, ptr %16, i64 %retval.sroa.0.0.i15 - %add.ptr3.i = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %15, i64 %retval.sroa.0.0.i15 + %add.ptr.i4 = getelementptr inbounds i8, ptr %17, i64 %retval.sroa.0.0.i15 + %add.ptr3.i = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %16, i64 %retval.sroa.0.0.i15 store ptr %add.ptr.i4, ptr %agg.result, align 8 %ref.tmp3.sroa.2.0.agg.result.sroa_idx = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store ptr %add.ptr3.i, ptr %ref.tmp3.sroa.2.0.agg.result.sroa_idx, align 8 diff --git a/bench/protobuf/optimized/strtod.ll b/bench/protobuf/optimized/strtod.ll index 8ad5abf8340..4be1e4653f5 100644 --- a/bench/protobuf/optimized/strtod.ll +++ b/bench/protobuf/optimized/strtod.ll @@ -287,22 +287,22 @@ if.end14.i: ; preds = %if.else8.i store i32 0, ptr %call.i.i, align 4 %call1.i.i = call float @strtof(ptr noundef nonnull %buffer, ptr noundef nonnull %endptr.i.i) #13 %3 = load i8, ptr %buffer, align 16 - %cmp.not.i.i = icmp eq i8 %3, 0 - br i1 %cmp.not.i.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i, label %land.lhs.true.i.i + %.not.i.i = icmp eq i8 %3, 0 + br i1 %.not.i.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i, label %land.lhs.true.i.i land.lhs.true.i.i: ; preds = %if.end14.i %4 = load ptr, ptr %endptr.i.i, align 8 %5 = load i8, ptr %4, align 1 - %cmp3.i.i = icmp eq i8 %5, 0 - br i1 %cmp3.i.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i + %6 = icmp eq i8 %5, 0 + br i1 %6, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i _ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i: ; preds = %land.lhs.true.i.i, %if.end14.i call void @llvm.lifetime.end.p0(ptr nonnull %endptr.i.i) br label %if.then20.i _ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.i: ; preds = %land.lhs.true.i.i - %6 = load i32, ptr %call.i.i, align 4 - %cmp5.i.i = icmp ne i32 %6, 0 + %7 = load i32, ptr %call.i.i, align 4 + %cmp5.i.i = icmp ne i32 %7, 0 call void @llvm.lifetime.end.p0(ptr nonnull %endptr.i.i) %cmp19.i = fcmp une float %call1.i.i, %value %or.cond.i = select i1 %cmp5.i.i, i1 true, i1 %cmp19.i @@ -341,7 +341,7 @@ call.i.noexc: ; preds = %_ZN6google8protobuf to label %invoke.cont unwind label %lpad.i lpad.i: ; preds = %.noexc - %7 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) #13 br label %lpad.body @@ -351,12 +351,12 @@ invoke.cont: ; preds = %.noexc ret void lpad: ; preds = %call.i.noexc, %_ZN6google8protobuf2io12_GLOBAL__N_113FloatToBufferEfPc.exit - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %lpad.body lpad.body: ; preds = %lpad.i, %lpad - %eh.lpad-body = phi { ptr, i32 } [ %8, %lpad ], [ %7, %lpad.i ] + %eh.lpad-body = phi { ptr, i32 } [ %9, %lpad ], [ %8, %lpad.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #13 resume { ptr, i32 } %eh.lpad-body } @@ -393,10 +393,10 @@ if.end4: ; preds = %switch.early.test.i %incdec.ptr5 = getelementptr inbounds nuw i8, ptr %buffer.addr.0, i64 1 %2 = load i8, ptr %incdec.ptr5, align 1 %3 = add i8 %2, -48 - %or.cond.i14 = icmp ult i8 %3, 10 - br i1 %or.cond.i14, label %if.end15, label %switch.early.test.i15 + %or.cond.i15 = icmp ult i8 %3, 10 + br i1 %or.cond.i15, label %if.end15, label %switch.early.test.i16 -switch.early.test.i15: ; preds = %if.end4 +switch.early.test.i16: ; preds = %if.end4 switch i8 %2, label %do.body [ i8 101, label %if.end15 i8 69, label %if.end15 @@ -405,15 +405,15 @@ switch.early.test.i15: ; preds = %if.end4 i8 0, label %if.end15 ] -do.body: ; preds = %switch.early.test.i15, %switch.early.test.i19 - %buffer.addr.1 = phi ptr [ %incdec.ptr10, %switch.early.test.i19 ], [ %incdec.ptr5, %switch.early.test.i15 ] +do.body: ; preds = %switch.early.test.i16, %switch.early.test.i20 + %buffer.addr.1 = phi ptr [ %incdec.ptr10, %switch.early.test.i20 ], [ %incdec.ptr5, %switch.early.test.i16 ] %incdec.ptr10 = getelementptr inbounds nuw i8, ptr %buffer.addr.1, i64 1 %4 = load i8, ptr %incdec.ptr10, align 1 %5 = add i8 %4, -48 - %or.cond.i18 = icmp ult i8 %5, 10 - br i1 %or.cond.i18, label %do.end, label %switch.early.test.i19 + %or.cond.i19 = icmp ult i8 %5, 10 + br i1 %or.cond.i19, label %do.end, label %switch.early.test.i20 -switch.early.test.i19: ; preds = %do.body +switch.early.test.i20: ; preds = %do.body switch i8 %4, label %do.body [ i8 101, label %do.end i8 69, label %do.end @@ -422,13 +422,13 @@ switch.early.test.i19: ; preds = %do.body i8 0, label %do.end ] -do.end: ; preds = %switch.early.test.i19, %switch.early.test.i19, %switch.early.test.i19, %switch.early.test.i19, %switch.early.test.i19, %do.body +do.end: ; preds = %switch.early.test.i20, %switch.early.test.i20, %switch.early.test.i20, %switch.early.test.i20, %switch.early.test.i20, %do.body %call14 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %incdec.ptr10) #15 %add = add i64 %call14, 1 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %incdec.ptr5, ptr nonnull align 1 %incdec.ptr10, i64 %add, i1 false) br label %if.end15 -if.end15: ; preds = %switch.early.test.i, %switch.early.test.i15, %switch.early.test.i15, %switch.early.test.i15, %switch.early.test.i15, %switch.early.test.i15, %if.end4, %entry, %do.end +if.end15: ; preds = %switch.early.test.i, %switch.early.test.i16, %switch.early.test.i16, %switch.early.test.i16, %switch.early.test.i16, %switch.early.test.i16, %if.end4, %entry, %do.end ret void } diff --git a/bench/qemu/optimized/user.ll b/bench/qemu/optimized/user.ll index 35ebc09b434..425962e86c8 100644 --- a/bench/qemu/optimized/user.ll +++ b/bench/qemu/optimized/user.ll @@ -157,31 +157,30 @@ define dso_local zeroext i1 @gdb_got_immediate_ack() local_unnamed_addr #0 { 12: ; preds = %11, %7 %13 = phi i32 [ %.pr.i, %11 ], [ %9, %7 ] %.not.i = icmp eq i32 %13, 4 - br i1 %.not.i, label %2, label %gdb_get_char.exit.thread + br i1 %.not.i, label %2, label %gdb_get_char.exit 14: ; preds = %2 %15 = icmp eq i32 %5, 0 - br i1 %15, label %16, label %gdb_get_char.exit + br i1 %15, label %16, label %19 16: ; preds = %14 %17 = load i32, ptr @gdbserver_user_state, align 8 %18 = call i32 @close(i32 noundef %17) #16 store i32 -1, ptr @gdbserver_user_state, align 8 - br label %gdb_get_char.exit.thread + br label %gdb_get_char.exit -gdb_get_char.exit.thread: ; preds = %12, %16 - call void @llvm.lifetime.end.p0(ptr nonnull %1) - br label %21 +19: ; preds = %14 + %20 = load i8, ptr %1, align 1 + %21 = zext i8 %20 to i32 + br label %gdb_get_char.exit -gdb_get_char.exit: ; preds = %14 - %19 = load i8, ptr %1, align 1 +gdb_get_char.exit: ; preds = %12, %16, %19 + %.0.i = phi i32 [ -1, %16 ], [ %21, %19 ], [ -1, %12 ] call void @llvm.lifetime.end.p0(ptr nonnull %1) - %20 = icmp eq i8 %19, 43 - br label %21 - -21: ; preds = %gdb_get_char.exit.thread, %gdb_get_char.exit - %.0 = phi i1 [ %20, %gdb_get_char.exit ], [ true, %gdb_get_char.exit.thread ] - ret i1 %.0 + %22 = icmp eq i32 %.0.i, -1 + %23 = icmp eq i32 %.0.i, 43 + %switch.selectcmp = or i1 %22, %23 + ret i1 %switch.selectcmp } ; Function Attrs: nounwind sspstrong uwtable @@ -230,7 +229,7 @@ define dso_local void @gdb_exit(i32 noundef %0) local_unnamed_addr #0 { call void @llvm.lifetime.start.p0(ptr nonnull %3) %4 = load i8, ptr @gdbserver_state, align 8, !range !7, !noundef !8 %5 = trunc nuw i8 %4 to i1 - br i1 %5, label %6, label %38 + br i1 %5, label %6, label %39 6: ; preds = %1 %7 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_user_state, i64 8), align 8 @@ -244,7 +243,7 @@ define dso_local void @gdb_exit(i32 noundef %0) local_unnamed_addr #0 { 10: ; preds = %8, %6 %11 = load i32, ptr @gdbserver_user_state, align 8 %12 = icmp slt i32 %11, 0 - br i1 %12, label %38, label %13 + br i1 %12, label %39, label %13 13: ; preds = %10 store i32 0, ptr %3, align 4, !annotation !4 @@ -260,45 +259,45 @@ define dso_local void @gdb_exit(i32 noundef %0) local_unnamed_addr #0 { 17: ; preds = %15 %18 = load i32, ptr @qemu_loglevel, align 4 %19 = and i32 %18, 32768 - %.not3.i.i = icmp eq i32 %19, 0 - br i1 %.not3.i.i, label %trace_gdbstub_op_exiting.exit, label %20 + %20 = icmp eq i32 %19, 0 + br i1 %20, label %trace_gdbstub_op_exiting.exit, label %21 -20: ; preds = %17 - %21 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 - %22 = trunc nuw i8 %21 to i1 - br i1 %22, label %23, label %30 +21: ; preds = %17 + %22 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 + %23 = trunc nuw i8 %22 to i1 + br i1 %23, label %24, label %31 -23: ; preds = %20 +24: ; preds = %21 call void @llvm.lifetime.start.p0(ptr nonnull %2) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false), !annotation !4 - %24 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 - %25 = tail call i32 @qemu_get_thread_id() #16 - %26 = load i64, ptr %2, align 8 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %28 = load i64, ptr %27, align 8 - %29 = and i32 %0, 255 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.27, i32 noundef %25, i64 noundef %26, i64 noundef %28, i32 noundef %29) #16 + %25 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 + %26 = tail call i32 @qemu_get_thread_id() #16 + %27 = load i64, ptr %2, align 8 + %28 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %29 = load i64, ptr %28, align 8 + %30 = and i32 %0, 255 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.27, i32 noundef %26, i64 noundef %27, i64 noundef %29, i32 noundef %30) #16 call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %trace_gdbstub_op_exiting.exit -30: ; preds = %20 - %31 = and i32 %0, 255 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.28, i32 noundef %31) #16 +31: ; preds = %21 + %32 = and i32 %0, 255 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.28, i32 noundef %32) #16 br label %trace_gdbstub_op_exiting.exit -trace_gdbstub_op_exiting.exit: ; preds = %13, %15, %17, %23, %30 - %32 = load i8, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4200), align 8, !range !7, !noundef !8 - %33 = trunc nuw i8 %32 to i1 - br i1 %33, label %34, label %38 +trace_gdbstub_op_exiting.exit: ; preds = %13, %15, %17, %24, %31 + %33 = load i8, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4200), align 8, !range !7, !noundef !8 + %34 = trunc nuw i8 %33 to i1 + br i1 %34, label %35, label %39 -34: ; preds = %trace_gdbstub_op_exiting.exit - %35 = and i32 %0, 255 - %36 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %3, i64 noundef 4, i32 noundef 1, i64 noundef 4, ptr noundef nonnull @.str, i32 noundef %35) #16 - %37 = call i32 @gdb_put_packet(ptr noundef nonnull %3) #16 +35: ; preds = %trace_gdbstub_op_exiting.exit + %36 = and i32 %0, 255 + %37 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %3, i64 noundef 4, i32 noundef 1, i64 noundef 4, ptr noundef nonnull @.str, i32 noundef %36) #16 + %38 = call i32 @gdb_put_packet(ptr noundef nonnull %3) #16 store i8 0, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4200), align 8 - br label %38 + br label %39 -38: ; preds = %trace_gdbstub_op_exiting.exit, %34, %10, %1 +39: ; preds = %trace_gdbstub_op_exiting.exit, %35, %10, %1 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void } @@ -1285,31 +1284,31 @@ define dso_local void @gdb_continue() local_unnamed_addr #0 { 5: ; preds = %3 %6 = load i32, ptr @qemu_loglevel, align 4 %7 = and i32 %6, 32768 - %.not2.i.i = icmp eq i32 %7, 0 - br i1 %.not2.i.i, label %trace_gdbstub_op_continue.exit, label %8 + %8 = icmp eq i32 %7, 0 + br i1 %8, label %trace_gdbstub_op_continue.exit, label %9 -8: ; preds = %5 - %9 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 - %10 = trunc nuw i8 %9 to i1 - br i1 %10, label %11, label %17 +9: ; preds = %5 + %10 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 + %11 = trunc nuw i8 %10 to i1 + br i1 %11, label %12, label %18 -11: ; preds = %8 +12: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 0, i64 16, i1 false), !annotation !4 - %12 = call i32 @gettimeofday(ptr noundef nonnull %1, ptr noundef null) #16 - %13 = tail call i32 @qemu_get_thread_id() #16 - %14 = load i64, ptr %1, align 8 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %16 = load i64, ptr %15, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.37, i32 noundef %13, i64 noundef %14, i64 noundef %16) #16 + %13 = call i32 @gettimeofday(ptr noundef nonnull %1, ptr noundef null) #16 + %14 = tail call i32 @qemu_get_thread_id() #16 + %15 = load i64, ptr %1, align 8 + %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %17 = load i64, ptr %16, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.37, i32 noundef %14, i64 noundef %15, i64 noundef %17) #16 call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %trace_gdbstub_op_continue.exit -17: ; preds = %8 +18: ; preds = %9 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.38) #16 br label %trace_gdbstub_op_continue.exit -trace_gdbstub_op_continue.exit: ; preds = %0, %3, %5, %11, %17 +trace_gdbstub_op_continue.exit: ; preds = %0, %3, %5, %12, %18 ret void } @@ -1325,8 +1324,8 @@ define dso_local noundef i32 @gdb_continue_partial(ptr noundef readonly captures %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 br label %5 -5: ; preds = %.lr.ph, %29 - %.012.in = phi i64 [ %3, %.lr.ph ], [ %31, %29 ] +5: ; preds = %.lr.ph, %30 + %.012.in = phi i64 [ %3, %.lr.ph ], [ %32, %30 ] %.012 = inttoptr i64 %.012.in to ptr %6 = getelementptr inbounds nuw i8, ptr %.012, i64 704 %7 = load i32, ptr %6, align 16 @@ -1334,7 +1333,7 @@ define dso_local noundef i32 @gdb_continue_partial(ptr noundef readonly captures %9 = getelementptr inbounds i8, ptr %0, i64 %8 %10 = load i8, ptr %9, align 1 %11 = icmp eq i8 %10, 115 - br i1 %11, label %12, label %29 + br i1 %11, label %12, label %30 12: ; preds = %5 %13 = load i32, ptr @trace_events_enabled_count, align 4 @@ -1349,42 +1348,42 @@ define dso_local noundef i32 @gdb_continue_partial(ptr noundef readonly captures 16: ; preds = %14 %17 = load i32, ptr @qemu_loglevel, align 4 %18 = and i32 %17, 32768 - %.not3.i.i = icmp eq i32 %18, 0 - br i1 %.not3.i.i, label %trace_gdbstub_op_stepping.exit, label %19 + %19 = icmp eq i32 %18, 0 + br i1 %19, label %trace_gdbstub_op_stepping.exit, label %20 -19: ; preds = %16 - %20 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 - %21 = trunc nuw i8 %20 to i1 - br i1 %21, label %22, label %27 +20: ; preds = %16 + %21 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 + %22 = trunc nuw i8 %21 to i1 + br i1 %22, label %23, label %28 -22: ; preds = %19 +23: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %2) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false), !annotation !4 - %23 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 - %24 = tail call i32 @qemu_get_thread_id() #16 - %25 = load i64, ptr %2, align 8 - %26 = load i64, ptr %4, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.39, i32 noundef %24, i64 noundef %25, i64 noundef %26, i32 noundef %7) #16 + %24 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 + %25 = tail call i32 @qemu_get_thread_id() #16 + %26 = load i64, ptr %2, align 8 + %27 = load i64, ptr %4, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.39, i32 noundef %25, i64 noundef %26, i64 noundef %27, i32 noundef %7) #16 call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %trace_gdbstub_op_stepping.exit -27: ; preds = %19 +28: ; preds = %20 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.40, i32 noundef %7) #16 br label %trace_gdbstub_op_stepping.exit -trace_gdbstub_op_stepping.exit: ; preds = %12, %14, %16, %22, %27 - %28 = load i32, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4192), align 8 - tail call void @cpu_single_step(ptr noundef nonnull %.012, i32 noundef %28) #16 - br label %29 +trace_gdbstub_op_stepping.exit: ; preds = %12, %14, %16, %23, %28 + %29 = load i32, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4192), align 8 + tail call void @cpu_single_step(ptr noundef nonnull %.012, i32 noundef %29) #16 + br label %30 -29: ; preds = %5, %trace_gdbstub_op_stepping.exit - %30 = getelementptr inbounds nuw i8, ptr %.012, i64 560 - %31 = load atomic i64, ptr %30 monotonic, align 16 +30: ; preds = %5, %trace_gdbstub_op_stepping.exit + %31 = getelementptr inbounds nuw i8, ptr %.012, i64 560 + %32 = load atomic i64, ptr %31 monotonic, align 16 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #16, !srcloc !23 - %.not = icmp eq i64 %31, 0 + %.not = icmp eq i64 %32, 0 br i1 %.not, label %._crit_edge, label %5, !llvm.loop !24 -._crit_edge: ; preds = %29, %1 +._crit_edge: ; preds = %30, %1 store i32 1, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_user_state, i64 16), align 8 ret i32 0 } @@ -1549,14 +1548,14 @@ should_catch_syscall.exit: ; preds = %5 %10 = and i64 %6, 63 %11 = shl nuw i64 1, %10 %12 = and i64 %9, %11 - %.not = icmp eq i64 %12, 0 - br i1 %.not, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread + %13 = icmp eq i64 %12, 0 + br i1 %13, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread should_catch_syscall.exit.thread: ; preds = %2, %should_catch_syscall.exit - %13 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.21, i32 noundef %1) #16 - %14 = tail call i32 @gdb_target_sigtrap() #16 - %15 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %14, ptr noundef %13, ptr noundef null, i32 noundef 0) - tail call void @g_free(ptr noundef %13) #16 + %14 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.21, i32 noundef %1) #16 + %15 = tail call i32 @gdb_target_sigtrap() #16 + %16 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %15, ptr noundef %14, ptr noundef null, i32 noundef 0) + tail call void @g_free(ptr noundef %14) #16 br label %should_catch_syscall.exit.thread3 should_catch_syscall.exit.thread3: ; preds = %5, %should_catch_syscall.exit.thread, %should_catch_syscall.exit @@ -1583,14 +1582,14 @@ should_catch_syscall.exit: ; preds = %5 %10 = and i64 %6, 63 %11 = shl nuw i64 1, %10 %12 = and i64 %9, %11 - %.not = icmp eq i64 %12, 0 - br i1 %.not, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread + %13 = icmp eq i64 %12, 0 + br i1 %13, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread should_catch_syscall.exit.thread: ; preds = %2, %should_catch_syscall.exit - %13 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %1) #16 - %14 = tail call i32 @gdb_target_sigtrap() #16 - %15 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %14, ptr noundef %13, ptr noundef null, i32 noundef 0) - tail call void @g_free(ptr noundef %13) #16 + %14 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %1) #16 + %15 = tail call i32 @gdb_target_sigtrap() #16 + %16 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %15, ptr noundef %14, ptr noundef null, i32 noundef 0) + tail call void @g_free(ptr noundef %14) #16 br label %should_catch_syscall.exit.thread3 should_catch_syscall.exit.thread3: ; preds = %5, %should_catch_syscall.exit.thread, %should_catch_syscall.exit diff --git a/bench/qoi/optimized/qoi.ll b/bench/qoi/optimized/qoi.ll index 68f0e4d13b6..a4fa107d9f3 100644 --- a/bench/qoi/optimized/qoi.ll +++ b/bench/qoi/optimized/qoi.ll @@ -426,14 +426,14 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a store i8 %72, ptr %73, align 1, !tbaa !11 %74 = icmp eq i32 %48, 0 %75 = icmp eq i32 %66, 0 - %or.cond124 = select i1 %74, i1 true, i1 %75 - br i1 %or.cond124, label %.loopexit, label %76 + %or.cond125 = select i1 %74, i1 true, i1 %75 + br i1 %or.cond125, label %.loopexit, label %76 76: ; preds = %13 %77 = zext i8 %69 to i32 %78 = add i8 %69, -5 - %or.cond116 = icmp ult i8 %78, -2 - br i1 %or.cond116, label %.loopexit, label %79 + %or.cond117 = icmp ult i8 %78, -2 + br i1 %or.cond117, label %.loopexit, label %79 79: ; preds = %76 %80 = icmp ugt i8 %72, 1 @@ -469,26 +469,26 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a 95: ; preds = %.lr.ph, %185 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %185 ] - %.sroa.31.0131 = phi i8 [ -1, %.lr.ph ], [ %.sroa.31.1, %185 ] - %.0102130 = phi i32 [ 0, %.lr.ph ], [ %.1, %185 ] - %.sroa.22.0128 = phi i8 [ 0, %.lr.ph ], [ %.sroa.22.1, %185 ] - %.sroa.13.0127 = phi i8 [ 0, %.lr.ph ], [ %.sroa.13.1, %185 ] - %.sroa.0.0126 = phi i8 [ 0, %.lr.ph ], [ %.sroa.0.1, %185 ] - %.0121125 = phi i32 [ 14, %.lr.ph ], [ %.1122, %185 ] - %96 = icmp sgt i32 %.0102130, 0 - br i1 %96, label %97, label %99 + %.sroa.31.0132 = phi i8 [ -1, %.lr.ph ], [ %.sroa.31.1, %185 ] + %.0102131 = phi i32 [ 0, %.lr.ph ], [ %.1, %185 ] + %.sroa.22.0129 = phi i8 [ 0, %.lr.ph ], [ %.sroa.22.1, %185 ] + %.sroa.13.0128 = phi i8 [ 0, %.lr.ph ], [ %.sroa.13.1, %185 ] + %.sroa.0.0127 = phi i8 [ 0, %.lr.ph ], [ %.sroa.0.1, %185 ] + %.0122126 = phi i32 [ 14, %.lr.ph ], [ %.1123, %185 ] + %96 = icmp eq i32 %.0102131, 0 + br i1 %96, label %99, label %97 97: ; preds = %95 - %98 = add nsw i32 %.0102130, -1 + %98 = add nsw i32 %.0102131, -1 br label %179 99: ; preds = %95 - %100 = icmp slt i32 %.0121125, %91 + %100 = icmp slt i32 %.0122126, %91 br i1 %100, label %101, label %179 101: ; preds = %99 - %102 = add nsw i32 %.0121125, 1 - %103 = sext i32 %.0121125 to i64 + %102 = add nsw i32 %.0122126, 1 + %103 = sext i32 %.0122126 to i64 %104 = getelementptr i8, ptr %0, i64 %103 %105 = load i8, ptr %104, align 1, !tbaa !12 %106 = zext i8 %105 to i32 @@ -503,7 +503,7 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a %110 = load i8, ptr %109, align 1, !tbaa !12 %111 = getelementptr i8, ptr %104, i64 2 %112 = load i8, ptr %111, align 1, !tbaa !12 - %113 = add nsw i32 %.0121125, 4 + %113 = add nsw i32 %.0122126, 4 %114 = getelementptr i8, ptr %104, i64 3 %115 = load i8, ptr %114, align 1, !tbaa !12 br label %165 @@ -516,7 +516,7 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a %121 = load i8, ptr %120, align 1, !tbaa !12 %122 = getelementptr i8, ptr %104, i64 3 %123 = load i8, ptr %122, align 1, !tbaa !12 - %124 = add nsw i32 %.0121125, 5 + %124 = add nsw i32 %.0122126, 5 %125 = getelementptr i8, ptr %104, i64 4 %126 = load i8, ptr %125, align 1, !tbaa !12 br label %165 @@ -545,19 +545,19 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a 132: ; preds = %127 %133 = lshr i8 %105, 4 %134 = and i8 %133, 3 - %135 = add i8 %.sroa.0.0126, -2 + %135 = add i8 %.sroa.0.0127, -2 %136 = add i8 %135, %134 %137 = lshr i8 %105, 2 %138 = and i8 %137, 3 - %139 = add i8 %.sroa.13.0127, -2 + %139 = add i8 %.sroa.13.0128, -2 %140 = add i8 %139, %138 %141 = and i8 %105, 3 - %142 = add i8 %.sroa.22.0128, -2 + %142 = add i8 %.sroa.22.0129, -2 %143 = add i8 %142, %141 br label %165 144: ; preds = %127 - %145 = add nsw i32 %.0121125, 2 + %145 = add nsw i32 %.0122126, 2 %146 = sext i32 %102 to i64 %147 = getelementptr inbounds i8, ptr %0, i64 %146 %148 = load i8, ptr %147, align 1, !tbaa !12 @@ -567,14 +567,14 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a %152 = lshr i32 %149, 4 %153 = add nsw i32 %152, %151 %154 = trunc nsw i32 %153 to i8 - %155 = add i8 %.sroa.0.0126, %154 + %155 = add i8 %.sroa.0.0127, %154 %156 = trunc nuw nsw i32 %150 to i8 - %157 = add i8 %.sroa.13.0127, -32 + %157 = add i8 %.sroa.13.0128, -32 %158 = add i8 %157, %156 %159 = and i32 %149, 15 %160 = add nsw i32 %159, %151 %161 = trunc nsw i32 %160 to i8 - %162 = add i8 %.sroa.22.0128, %161 + %162 = add i8 %.sroa.22.0129, %161 br label %165 163: ; preds = %127 @@ -585,12 +585,12 @@ default.unreachable: ; preds = %127 unreachable 165: ; preds = %116, %132, %163, %144, %129, %107 - %.2123 = phi i32 [ %102, %129 ], [ %102, %132 ], [ %145, %144 ], [ %102, %163 ], [ %113, %107 ], [ %124, %116 ] - %.sroa.0.2 = phi i8 [ %.sroa.0.0.copyload, %129 ], [ %136, %132 ], [ %155, %144 ], [ %.sroa.0.0126, %163 ], [ %110, %107 ], [ %119, %116 ] - %.sroa.13.2 = phi i8 [ %.sroa.13.0.copyload, %129 ], [ %140, %132 ], [ %158, %144 ], [ %.sroa.13.0127, %163 ], [ %112, %107 ], [ %121, %116 ] - %.sroa.22.2 = phi i8 [ %.sroa.22.0.copyload, %129 ], [ %143, %132 ], [ %162, %144 ], [ %.sroa.22.0128, %163 ], [ %115, %107 ], [ %123, %116 ] + %.2124 = phi i32 [ %102, %129 ], [ %102, %132 ], [ %145, %144 ], [ %102, %163 ], [ %113, %107 ], [ %124, %116 ] + %.sroa.0.2 = phi i8 [ %.sroa.0.0.copyload, %129 ], [ %136, %132 ], [ %155, %144 ], [ %.sroa.0.0127, %163 ], [ %110, %107 ], [ %119, %116 ] + %.sroa.13.2 = phi i8 [ %.sroa.13.0.copyload, %129 ], [ %140, %132 ], [ %158, %144 ], [ %.sroa.13.0128, %163 ], [ %112, %107 ], [ %121, %116 ] + %.sroa.22.2 = phi i8 [ %.sroa.22.0.copyload, %129 ], [ %143, %132 ], [ %162, %144 ], [ %.sroa.22.0129, %163 ], [ %115, %107 ], [ %123, %116 ] %.2 = phi i32 [ 0, %129 ], [ 0, %132 ], [ 0, %144 ], [ %164, %163 ], [ 0, %107 ], [ 0, %116 ] - %.sroa.31.2 = phi i8 [ %.sroa.31.0.copyload, %129 ], [ %.sroa.31.0131, %132 ], [ %.sroa.31.0131, %144 ], [ %.sroa.31.0131, %163 ], [ %.sroa.31.0131, %107 ], [ %126, %116 ] + %.sroa.31.2 = phi i8 [ %.sroa.31.0.copyload, %129 ], [ %.sroa.31.0132, %132 ], [ %.sroa.31.0132, %144 ], [ %.sroa.31.0132, %163 ], [ %.sroa.31.0132, %107 ], [ %126, %116 ] %166 = zext i8 %.sroa.0.2 to i64 %167 = mul nuw nsw i64 %166, 3 %168 = zext i8 %.sroa.13.2 to i64 @@ -614,12 +614,12 @@ default.unreachable: ; preds = %127 br label %179 179: ; preds = %99, %165, %97 - %.1122 = phi i32 [ %.0121125, %97 ], [ %.2123, %165 ], [ %.0121125, %99 ] - %.sroa.0.1 = phi i8 [ %.sroa.0.0126, %97 ], [ %.sroa.0.2, %165 ], [ %.sroa.0.0126, %99 ] - %.sroa.13.1 = phi i8 [ %.sroa.13.0127, %97 ], [ %.sroa.13.2, %165 ], [ %.sroa.13.0127, %99 ] - %.sroa.22.1 = phi i8 [ %.sroa.22.0128, %97 ], [ %.sroa.22.2, %165 ], [ %.sroa.22.0128, %99 ] - %.1 = phi i32 [ %98, %97 ], [ %.2, %165 ], [ 0, %99 ] - %.sroa.31.1 = phi i8 [ %.sroa.31.0131, %97 ], [ %.sroa.31.2, %165 ], [ %.sroa.31.0131, %99 ] + %.1123 = phi i32 [ %.2124, %165 ], [ %.0122126, %99 ], [ %.0122126, %97 ] + %.sroa.0.1 = phi i8 [ %.sroa.0.2, %165 ], [ %.sroa.0.0127, %99 ], [ %.sroa.0.0127, %97 ] + %.sroa.13.1 = phi i8 [ %.sroa.13.2, %165 ], [ %.sroa.13.0128, %99 ], [ %.sroa.13.0128, %97 ] + %.sroa.22.1 = phi i8 [ %.sroa.22.2, %165 ], [ %.sroa.22.0129, %99 ], [ %.sroa.22.0129, %97 ] + %.1 = phi i32 [ %.2, %165 ], [ 0, %99 ], [ %98, %97 ] + %.sroa.31.1 = phi i8 [ %.sroa.31.2, %165 ], [ %.sroa.31.0132, %99 ], [ %.sroa.31.0132, %97 ] %180 = getelementptr inbounds nuw i8, ptr %89, i64 %indvars.iv store i8 %.sroa.0.1, ptr %180, align 1, !tbaa !12 %181 = getelementptr i8, ptr %180, i64 1 diff --git a/bench/quantlib/optimized/asx.ll b/bench/quantlib/optimized/asx.ll index bd6e8fe1608..20f486efd2a 100644 --- a/bench/quantlib/optimized/asx.ll +++ b/bench/quantlib/optimized/asx.ll @@ -75,8 +75,8 @@ define noundef zeroext i1 @_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb(ptr noundef n entry: %0 = load i64, ptr %date, align 8, !tbaa !3 %rem.i = srem i64 %0, 7 - %cmp.not4 = icmp eq i64 %rem.i, 6 - br i1 %cmp.not4, label %if.end, label %return + %1 = icmp eq i64 %rem.i, 6 + br i1 %1, label %if.end, label %return if.end: ; preds = %entry %call.i.i = tail call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %date) @@ -88,15 +88,15 @@ if.end: ; preds = %entry %call4.i = tail call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call3.i) %call5.i = tail call noundef i32 @_ZN8QuantLib4Date11monthOffsetENS_5MonthEb(i32 noundef %call2.i, i1 noundef zeroext %call4.i) %sub.i = add i32 %conv.i.i, -8 - %1 = sub i32 %sub.i, %call5.i - %or.cond = icmp ult i32 %1, 7 + %2 = sub i32 %sub.i, %call5.i + %or.cond = icmp ult i32 %2, 7 %brmerge.not = and i1 %mainCycle, %or.cond br i1 %brmerge.not, label %if.end7, label %return if.end7: ; preds = %if.end %call8 = tail call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %date) - %2 = icmp ult i32 %call8, 13 - br i1 %2, label %switch.lookup, label %return + %3 = icmp ult i32 %call8, 13 + br i1 %3, label %switch.lookup, label %return switch.lookup: ; preds = %if.end7 %switch.cast = trunc nuw i32 %call8 to i13 @@ -166,8 +166,8 @@ entry: %ref.tmp11 = alloca %"class.std::__cxx11::basic_string", align 8 %0 = load i64, ptr %date, align 8, !tbaa !3 %rem.i.i = srem i64 %0, 7 - %cmp.not4.i = icmp eq i64 %rem.i.i, 6 - br i1 %cmp.not4.i, label %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit, label %if.then + %1 = icmp eq i64 %rem.i.i, 6 + br i1 %1, label %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit, label %if.then _ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit: ; preds = %entry %call.i.i.i = tail call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %date) @@ -179,8 +179,8 @@ _ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit: ; preds = %entry %call4.i.i = tail call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call3.i.i) %call5.i.i = tail call noundef i32 @_ZN8QuantLib4Date11monthOffsetENS_5MonthEb(i32 noundef %call2.i.i, i1 noundef zeroext %call4.i.i) %sub.i.i = add i32 %conv.i.i.i, -8 - %1 = sub i32 %sub.i.i, %call5.i.i - %or.cond.i = icmp ult i32 %1, 7 + %2 = sub i32 %sub.i.i, %call5.i.i + %or.cond.i = icmp ult i32 %2, 7 br i1 %or.cond.i, label %invoke.cont34, label %if.then if.then: ; preds = %entry, %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit @@ -220,72 +220,72 @@ invoke.cont15: ; preds = %invoke.cont13 to label %unreachable unwind label %lpad14 lpad: ; preds = %invoke.cont, %if.then - %2 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup br label %ehcleanup25 ehcleanup21.thread: ; preds = %invoke.cont2 - %3 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup br label %cleanup.action.sink.split lpad12: ; preds = %invoke.cont10 - %4 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad14: ; preds = %invoke.cont15, %invoke.cont13 %cleanup.isactive.0 = phi i1 [ false, %invoke.cont15 ], [ true, %invoke.cont13 ] - %5 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup - %6 = load ptr, ptr %ref.tmp11, align 8, !tbaa !12 - %7 = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 16 - %cmp.i.i.i = icmp eq ptr %6, %7 + %7 = load ptr, ptr %ref.tmp11, align 8, !tbaa !12 + %8 = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 16 + %cmp.i.i.i = icmp eq ptr %7, %8 br i1 %cmp.i.i.i, label %ehcleanup, label %if.then.i.i if.then.i.i: ; preds = %lpad14 - %8 = load i64, ptr %7, align 8, !tbaa !13 - %add.i.i.i = add i64 %8, 1 - call void @_ZdlPvm(ptr noundef %6, i64 noundef %add.i.i.i) #20 + %9 = load i64, ptr %8, align 8, !tbaa !13 + %add.i.i.i = add i64 %9, 1 + call void @_ZdlPvm(ptr noundef %7, i64 noundef %add.i.i.i) #20 br label %ehcleanup ehcleanup: ; preds = %lpad14, %if.then.i.i, %lpad12 %cleanup.isactive.3 = phi i1 [ true, %lpad12 ], [ %cleanup.isactive.0, %if.then.i.i ], [ %cleanup.isactive.0, %lpad14 ] - %.pn = phi { ptr, i32 } [ %4, %lpad12 ], [ %5, %if.then.i.i ], [ %5, %lpad14 ] + %.pn = phi { ptr, i32 } [ %5, %lpad12 ], [ %6, %if.then.i.i ], [ %6, %lpad14 ] call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp11) - %9 = load ptr, ptr %ref.tmp7, align 8, !tbaa !12 - %10 = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 16 - %cmp.i.i.i12 = icmp eq ptr %9, %10 + %10 = load ptr, ptr %ref.tmp7, align 8, !tbaa !12 + %11 = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 16 + %cmp.i.i.i12 = icmp eq ptr %10, %11 br i1 %cmp.i.i.i12, label %ehcleanup17, label %if.then.i.i13 if.then.i.i13: ; preds = %ehcleanup - %11 = load i64, ptr %10, align 8, !tbaa !13 - %add.i.i.i14 = add i64 %11, 1 - call void @_ZdlPvm(ptr noundef %9, i64 noundef %add.i.i.i14) #20 + %12 = load i64, ptr %11, align 8, !tbaa !13 + %add.i.i.i14 = add i64 %12, 1 + call void @_ZdlPvm(ptr noundef %10, i64 noundef %add.i.i.i14) #20 br label %ehcleanup17 ehcleanup17: ; preds = %ehcleanup, %if.then.i.i13 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp8) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp7) - %12 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 - %13 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i19 = icmp eq ptr %12, %13 + %13 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 + %14 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i19 = icmp eq ptr %13, %14 br i1 %cmp.i.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %ehcleanup21 ehcleanup17.thread: ; preds = %invoke.cont6 - %14 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp8) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp7) - %15 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 - %16 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i1932 = icmp eq ptr %15, %16 + %16 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 + %17 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i1932 = icmp eq ptr %16, %17 br i1 %cmp.i.i.i1932, label %cleanup.action.sink.split, label %ehcleanup21.thread41 ehcleanup21.thread41: ; preds = %ehcleanup17.thread - %17 = load i64, ptr %16, align 8, !tbaa !13 - %add.i.i.i2144 = add i64 %17, 1 - call void @_ZdlPvm(ptr noundef %15, i64 noundef %add.i.i.i2144) #20 + %18 = load i64, ptr %17, align 8, !tbaa !13 + %add.i.i.i2144 = add i64 %18, 1 + call void @_ZdlPvm(ptr noundef %16, i64 noundef %add.i.i.i2144) #20 br label %cleanup.action.sink.split _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22: ; preds = %ehcleanup17 @@ -294,15 +294,15 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br i1 %cleanup.isactive.3, label %cleanup.action, label %ehcleanup25 ehcleanup21: ; preds = %ehcleanup17 - %18 = load i64, ptr %13, align 8, !tbaa !13 - %add.i.i.i21 = add i64 %18, 1 - call void @_ZdlPvm(ptr noundef %12, i64 noundef %add.i.i.i21) #20 + %19 = load i64, ptr %14, align 8, !tbaa !13 + %add.i.i.i21 = add i64 %19, 1 + call void @_ZdlPvm(ptr noundef %13, i64 noundef %add.i.i.i21) #20 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp4) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) br i1 %cleanup.isactive.3, label %cleanup.action, label %ehcleanup25 cleanup.action.sink.split: ; preds = %ehcleanup17.thread, %ehcleanup21.thread, %ehcleanup21.thread41 - %.pn.pn.pn29.ph = phi { ptr, i32 } [ %14, %ehcleanup21.thread41 ], [ %3, %ehcleanup21.thread ], [ %14, %ehcleanup17.thread ] + %.pn.pn.pn29.ph = phi { ptr, i32 } [ %15, %ehcleanup21.thread41 ], [ %4, %ehcleanup21.thread ], [ %15, %ehcleanup17.thread ] call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp4) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) br label %cleanup.action @@ -313,24 +313,24 @@ cleanup.action: ; preds = %cleanup.action.sink br label %ehcleanup25 ehcleanup25: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, %ehcleanup21, %cleanup.action, %lpad - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn29, %cleanup.action ], [ %.pn, %ehcleanup21 ], [ %2, %lpad ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn29, %cleanup.action ], [ %.pn, %ehcleanup21 ], [ %3, %lpad ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %_ql_msg_stream) #16 call void @llvm.lifetime.end.p0(ptr nonnull %_ql_msg_stream) resume { ptr, i32 } %.pn.pn.pn.pn invoke.cont34: ; preds = %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit %call27 = tail call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %date) - %19 = sext i32 %call27 to i64 - %20 = getelementptr i8, ptr @.str.7, i64 %19 - %arrayidx.i = getelementptr i8, ptr %20, i64 -1 - %21 = load i8, ptr %arrayidx.i, align 1, !tbaa !13 + %20 = sext i32 %call27 to i64 + %21 = getelementptr i8, ptr @.str.7, i64 %20 + %arrayidx.i = getelementptr i8, ptr %21, i64 -1 + %22 = load i8, ptr %arrayidx.i, align 1, !tbaa !13 %call29 = tail call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %date) %rem = srem i32 %call29, 10 - %22 = trunc nsw i32 %rem to i8 - %conv30 = add nsw i8 %22, 48 - %23 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 - store ptr %23, ptr %agg.result, align 8, !tbaa !14 - store i8 %21, ptr %23, align 8 + %23 = trunc nsw i32 %rem to i8 + %conv30 = add nsw i8 %23, 48 + %24 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 + store ptr %24, ptr %agg.result, align 8, !tbaa !14 + store i8 %22, ptr %24, align 8 %ref.tmp31.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %agg.result, i64 17 store i8 %conv30, ptr %ref.tmp31.sroa.5.0..sroa_idx, align 1 %_M_string_length.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 @@ -903,8 +903,11 @@ do.end79: ; preds = %cond.end %conv80 = add i32 %60, 1 %arrayidx.i = getelementptr inbounds nuw i8, ptr %32, i64 1 %61 = load i8, ptr %arrayidx.i, align 1, !tbaa !13 - %62 = add i8 %61, -48 - %or.cond = icmp ult i8 %62, 10 + %conv82 = sext i8 %61 to i32 + %sub = add nsw i32 %conv82, -48 + %62 = icmp ult i32 %sub, 80 + %cmp85 = icmp slt i8 %61, 58 + %or.cond = and i1 %cmp85, %62 br i1 %or.cond, label %do.end129, label %if.then86 if.then86: ; preds = %do.end79 @@ -1079,10 +1082,8 @@ ehcleanup125: ; preds = %_ZNKSt7__cxx1112bas br label %ehcleanup154 do.end129: ; preds = %do.end79 - %conv82 = zext nneg i8 %61 to i32 - %sub = add nsw i32 %conv82, -48 - %cmp130 = icmp eq i32 %sub, 0 - br i1 %cmp130, label %land.lhs.true131, label %if.end136 + %89 = icmp eq i32 %sub, 0 + br i1 %89, label %land.lhs.true131, label %if.end136 land.lhs.true131: ; preds = %do.end129 %call132 = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %referenceDate) @@ -1101,8 +1102,8 @@ if.end136: ; preds = %land.lhs.true131, % call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp141, i32 noundef 1, i32 noundef %conv80, i32 noundef %add140) %call142 = call i64 @_ZN8QuantLib3ASX8nextDateERKNS_4DateEb(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp141, i1 noundef zeroext false) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp141) - %89 = load i64, ptr %referenceDate, align 8, !tbaa !3 - %cmp.i143.not = icmp slt i64 %call142, %89 + %90 = load i64, ptr %referenceDate, align 8, !tbaa !3 + %cmp.i143.not = icmp slt i64 %call142, %90 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp147) br i1 %cmp.i143.not, label %cond.false146, label %cond.end151 @@ -1258,14 +1259,14 @@ cond.end: ; preds = %entry, %if.then.i, %rem17 = urem i32 %call5, %rem.rhs.trunc %rem.zext = zext nneg i32 %rem17 to i64 %sub = sub nsw i64 %conv, %rem.zext - %cmp.not = icmp eq i32 %rem17, 0 - br i1 %cmp.not, label %lor.lhs.false, label %if.then + %8 = icmp eq i32 %rem17, 0 + br i1 %8, label %lor.lhs.false, label %if.then lor.lhs.false: ; preds = %cond.end - %8 = load i64, ptr %refDate, align 8, !tbaa !3 + %9 = load i64, ptr %refDate, align 8, !tbaa !3 %call.i.i = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %refDate) %call2.i.i = call noundef i64 @_ZN8QuantLib4Date10yearOffsetEi(i32 noundef %call.i.i) - %sub.i.i = sub nsw i64 %8, %call2.i.i + %sub.i.i = sub nsw i64 %9, %call2.i.i %conv.i.i = trunc i64 %sub.i.i to i32 %call2.i = call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %refDate) %call3.i14 = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %refDate) @@ -1277,9 +1278,9 @@ lor.lhs.false: ; preds = %cond.end if.then: ; preds = %lor.lhs.false, %cond.end %add = add nsw i64 %sub, %conv6 - %cmp10 = icmp ult i64 %add, 13 + %10 = icmp ult i64 %add, 13 %conv12 = trunc i64 %add to i32 - br i1 %cmp10, label %if.end16, label %if.else + br i1 %10, label %if.end16, label %if.else if.else: ; preds = %if.then %conv14 = add i32 %conv12, -12 @@ -1290,8 +1291,8 @@ if.end16: ; preds = %if.then, %if.else, %m.0 = phi i32 [ %conv14, %if.else ], [ %call5, %lor.lhs.false ], [ %conv12, %if.then ] %y.0 = phi i32 [ %add15, %if.else ], [ %call4, %lor.lhs.false ], [ %call4, %if.then ] %call17 = call i64 @_ZN8QuantLib4Date10nthWeekdayEmNS_7WeekdayENS_5MonthEi(i64 noundef 2, i32 noundef 6, i32 noundef %m.0, i32 noundef %y.0) - %9 = load i64, ptr %refDate, align 8, !tbaa !3 - %cmp.i15.not = icmp sgt i64 %call17, %9 + %11 = load i64, ptr %refDate, align 8, !tbaa !3 + %cmp.i15.not = icmp sgt i64 %call17, %11 br i1 %cmp.i15.not, label %if.end26, label %if.then20 if.then20: ; preds = %if.end16 diff --git a/bench/quantlib/optimized/cashflows.ll b/bench/quantlib/optimized/cashflows.ll index 9efa9bca4e3..52f272c3d68 100644 --- a/bench/quantlib/optimized/cashflows.ll +++ b/bench/quantlib/optimized/cashflows.ll @@ -7143,8 +7143,9 @@ _ZNK5boost10shared_ptrIN8QuantLib8CashFlowEEptEv.exit19: ; preds = %if.then, %co %..i22 = select i1 %cmp1.i21, i32 1, i32 -1 %retval.0.i23 = select i1 %cmp.i20, i32 0, i32 %..i22 %mul = mul nsw i32 %retval.0.i23, %lastSign.062 - %14 = lshr i32 %mul, 31 - %spec.select = add nsw i32 %14, %signChanges.061 + %14 = icmp eq i32 %mul, -1 + %inc = zext i1 %14 to i32 + %spec.select = add nsw i32 %signChanges.061, %inc %lastSign.2 = select i1 %cmp.i20, i32 %lastSign.062, i32 %..i22 br label %if.end22 diff --git a/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll b/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll index 1eb7f1dc468..6c003e8a658 100644 --- a/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll +++ b/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll @@ -1061,18 +1061,18 @@ define internal fastcc void @"_ZN4core3ptr70drop_in_place$LT$core..option..Optio call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3dc25cc0e3e701f7E.llvm.4661854399685404667"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0) %7 = getelementptr inbounds nuw i8, ptr %2, i64 8 %8 = load i64, ptr %7, align 8, !range !9, !noalias !227, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %8, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit", label %9 - -9: ; preds = %6 - %10 = load ptr, ptr %2, align 8, !noalias !227, !nonnull !4, !noundef !4 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %12 = load i64, ptr %11, align 8, !noalias !227, !noundef !4 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.4661854399685404667"(ptr noalias noundef nonnull readonly align 1 %13, ptr noundef nonnull %10, i64 noundef %8, i64 noundef %12) + %9 = icmp eq i64 %8, 0 + br i1 %9, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit", label %10 + +10: ; preds = %6 + %11 = load ptr, ptr %2, align 8, !noalias !227, !nonnull !4, !noundef !4 + %12 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %13 = load i64, ptr %12, align 8, !noalias !227, !noundef !4 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.4661854399685404667"(ptr noalias noundef nonnull readonly align 1 %14, ptr noundef nonnull %11, i64 noundef %8, i64 noundef %13) br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit": ; preds = %6, %9 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit": ; preds = %6, %10 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !227 br label %5 } diff --git a/bench/redis/optimized/luac.ll b/bench/redis/optimized/luac.ll index 5d593b23900..8ad9754aa2e 100644 --- a/bench/redis/optimized/luac.ll +++ b/bench/redis/optimized/luac.ll @@ -414,109 +414,110 @@ sub_1: ; preds = %sub_0 store ptr %63, ptr %64, align 8, !tbaa !43 %65 = getelementptr inbounds nuw i8, ptr %28, i64 88 store i32 %3, ptr %65, align 8, !tbaa !44 + %66 = icmp sgt i32 %3, 1 %.pre55.i = load ptr, ptr %59, align 8, !tbaa !41 - br i1 %7, label %.lr.ph.i, label %._crit_edge.i + br i1 %66, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %55 - %66 = load ptr, ptr %29, align 8, !tbaa !21 - %67 = xor i32 %3, -1 - %68 = sext i32 %67 to i64 + %67 = load ptr, ptr %29, align 8, !tbaa !21 + %68 = xor i32 %3, -1 + %69 = sext i32 %68 to i64 %wide.trip.count.i = zext nneg i32 %3 to i64 - %invariant.gep.i = getelementptr %struct.lua_TValue, ptr %66, i64 %68 - br label %69 + %invariant.gep.i = getelementptr %struct.lua_TValue, ptr %67, i64 %69 + br label %70 -69: ; preds = %69, %.lr.ph.i - %indvars.iv50.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next51.i, %69 ] - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %69 ] +70: ; preds = %70, %.lr.ph.i + %indvars.iv50.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next51.i, %70 ] + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %70 ] %gep.i = getelementptr %struct.lua_TValue, ptr %invariant.gep.i, i64 %indvars.iv.i - %70 = load ptr, ptr %gep.i, align 8, !tbaa !9 - %71 = getelementptr inbounds nuw i8, ptr %70, i64 32 - %72 = load ptr, ptr %71, align 8, !tbaa !9 - %73 = getelementptr inbounds nuw ptr, ptr %63, i64 %indvars.iv.i - store ptr %72, ptr %73, align 8, !tbaa !45 - %74 = trunc nuw nsw i64 %indvars.iv.i to i32 - %75 = shl i32 %74, 14 - %76 = or disjoint i32 %75, 36 - %77 = getelementptr inbounds nuw i32, ptr %.pre55.i, i64 %indvars.iv50.i - store i32 %76, ptr %77, align 4, !tbaa !10 + %71 = load ptr, ptr %gep.i, align 8, !tbaa !9 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 32 + %73 = load ptr, ptr %72, align 8, !tbaa !9 + %74 = getelementptr inbounds nuw ptr, ptr %63, i64 %indvars.iv.i + store ptr %73, ptr %74, align 8, !tbaa !45 + %75 = trunc nuw nsw i64 %indvars.iv.i to i32 + %76 = shl i32 %75, 14 + %77 = or disjoint i32 %76, 36 + %78 = getelementptr inbounds nuw i32, ptr %.pre55.i, i64 %indvars.iv50.i + store i32 %77, ptr %78, align 4, !tbaa !10 %indvars.iv.next51.i = add nuw nsw i64 %indvars.iv50.i, 2 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 4 - store i32 8405020, ptr %78, align 4, !tbaa !10 + %79 = getelementptr inbounds nuw i8, ptr %78, i64 4 + store i32 8405020, ptr %79, align 4, !tbaa !10 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %69, !llvm.loop !47 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %70, !llvm.loop !47 -._crit_edge.loopexit.i: ; preds = %69 - %79 = and i64 %indvars.iv.next51.i, 4294967294 +._crit_edge.loopexit.i: ; preds = %70 + %80 = and i64 %indvars.iv.next51.i, 4294967294 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %55, %.thread.i %.pre5558.i = phi ptr [ %.pre55.i, %55 ], [ %.pre55.i, %._crit_edge.loopexit.i ], [ %.pre5557.i, %.thread.i ] - %.046.lcssa.i = phi i64 [ 0, %55 ], [ %79, %._crit_edge.loopexit.i ], [ 0, %.thread.i ] - %80 = getelementptr inbounds nuw i32, ptr %.pre5558.i, i64 %.046.lcssa.i - store i32 8388638, ptr %80, align 4, !tbaa !10 + %.046.lcssa.i = phi i64 [ 0, %55 ], [ %80, %._crit_edge.loopexit.i ], [ 0, %.thread.i ] + %81 = getelementptr inbounds nuw i32, ptr %.pre5558.i, i64 %.046.lcssa.i + store i32 8388638, ptr %81, align 4, !tbaa !10 br label %combine.exit combine.exit: ; preds = %21, %._crit_edge.i %.0.i = phi ptr [ %27, %21 ], [ %28, %._crit_edge.i ] - %81 = load i32, ptr @listing, align 4, !tbaa !10 - %.not27 = icmp eq i32 %81, 0 - br i1 %.not27, label %85, label %82 + %82 = load i32, ptr @listing, align 4, !tbaa !10 + %.not27 = icmp eq i32 %82, 0 + br i1 %.not27, label %86, label %83 -82: ; preds = %combine.exit - %83 = icmp sgt i32 %81, 1 - %84 = zext i1 %83 to i32 - tail call void @luaU_print(ptr noundef %.0.i, i32 noundef %84) #12 - br label %85 +83: ; preds = %combine.exit + %84 = icmp sgt i32 %82, 1 + %85 = zext i1 %84 to i32 + tail call void @luaU_print(ptr noundef %.0.i, i32 noundef %85) #12 + br label %86 -85: ; preds = %82, %combine.exit +86: ; preds = %83, %combine.exit %.b = load i1, ptr @dumping, align 4 - br i1 %.b, label %105, label %86 + br i1 %.b, label %106, label %87 -86: ; preds = %85 - %87 = load ptr, ptr @output, align 8, !tbaa !4 - %88 = icmp eq ptr %87, null - br i1 %88, label %89, label %91 +87: ; preds = %86 + %88 = load ptr, ptr @output, align 8, !tbaa !4 + %89 = icmp eq ptr %88, null + br i1 %89, label %90, label %92 -89: ; preds = %86 - %90 = load ptr, ptr @stdout, align 8, !tbaa !18 - br label %93 +90: ; preds = %87 + %91 = load ptr, ptr @stdout, align 8, !tbaa !18 + br label %94 -91: ; preds = %86 - %92 = tail call noalias ptr @fopen(ptr noundef nonnull %87, ptr noundef nonnull @.str.18) - br label %93 +92: ; preds = %87 + %93 = tail call noalias ptr @fopen(ptr noundef nonnull %88, ptr noundef nonnull @.str.18) + br label %94 -93: ; preds = %91, %89 - %94 = phi ptr [ %90, %89 ], [ %92, %91 ] - %95 = icmp eq ptr %94, null - br i1 %95, label %96, label %97 +94: ; preds = %92, %90 + %95 = phi ptr [ %91, %90 ], [ %93, %92 ] + %96 = icmp eq ptr %95, null + br i1 %96, label %97, label %98 -96: ; preds = %93 +97: ; preds = %94 tail call fastcc void @cannot(ptr noundef nonnull @.str.19) unreachable -97: ; preds = %93 +98: ; preds = %94 %.b26 = load i1, ptr @stripping, align 4 - %98 = zext i1 %.b26 to i32 - %99 = tail call i32 @luaU_dump(ptr noundef nonnull %0, ptr noundef %.0.i, ptr noundef nonnull @writer, ptr noundef nonnull %94, i32 noundef %98) #12 - %100 = tail call i32 @ferror(ptr noundef nonnull %94) #12 - %.not28 = icmp eq i32 %100, 0 - br i1 %.not28, label %102, label %101 + %99 = zext i1 %.b26 to i32 + %100 = tail call i32 @luaU_dump(ptr noundef nonnull %0, ptr noundef %.0.i, ptr noundef nonnull @writer, ptr noundef nonnull %95, i32 noundef %99) #12 + %101 = tail call i32 @ferror(ptr noundef nonnull %95) #12 + %.not28 = icmp eq i32 %101, 0 + br i1 %.not28, label %103, label %102 -101: ; preds = %97 +102: ; preds = %98 tail call fastcc void @cannot(ptr noundef nonnull @.str.20) unreachable -102: ; preds = %97 - %103 = tail call i32 @fclose(ptr noundef nonnull %94) - %.not29 = icmp eq i32 %103, 0 - br i1 %.not29, label %105, label %104 +103: ; preds = %98 + %104 = tail call i32 @fclose(ptr noundef nonnull %95) + %.not29 = icmp eq i32 %104, 0 + br i1 %.not29, label %106, label %105 -104: ; preds = %102 +105: ; preds = %103 tail call fastcc void @cannot(ptr noundef nonnull @.str.21) unreachable -105: ; preds = %102, %85 +106: ; preds = %103, %86 ret i32 0 } diff --git a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll index 45c478257a6..26e9e36352a 100644 --- a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll +++ b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll @@ -199,16 +199,16 @@ define hidden noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$13tr %2 = load atomic i8, ptr %0 acquire, align 1 %3 = icmp ult i8 %2, 4 tail call void @llvm.assume(i1 %3) - %.not = icmp eq i8 %2, 2 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 1 - br i1 %.not, label %7, label %5 + %4 = icmp eq i8 %2, 2 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 1 + br i1 %4, label %8, label %6 -5: ; preds = %1 - %6 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 %0) - br label %7 +6: ; preds = %1 + %7 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 %0) + br label %8 -7: ; preds = %1, %5 - %.0 = phi ptr [ %6, %5 ], [ %4, %1 ] +8: ; preds = %1, %6 + %.0 = phi ptr [ %7, %6 ], [ %5, %1 ] ret ptr %.0 } @@ -1775,14 +1775,14 @@ define hidden void @_ZN4ring3rsa7keypair7KeyPair15from_components17hcabd923a430a %47 = load atomic i8, ptr @_ZN4ring3cpu8features4INIT17hdec16924e286df23E acquire, align 1 %48 = icmp ult i8 %47, 4 tail call void @llvm.assume(i1 %48) - %.not.i = icmp eq i8 %47, 2 - br i1 %.not.i, label %"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit", label %49 + %49 = icmp eq i8 %47, 2 + br i1 %49, label %"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit", label %50 -49: ; preds = %2 - %50 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 @_ZN4ring3cpu8features4INIT17hdec16924e286df23E) +50: ; preds = %2 + %51 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 @_ZN4ring3cpu8features4INIT17hdec16924e286df23E) br label %"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit" -"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit": ; preds = %2, %49 +"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit": ; preds = %2, %50 call void @_ZN4ring3rsa7keypair7KeyPair16from_components_17h4ff4502bb2b5f3b2E(ptr noalias noundef nonnull sret({ ptr, [29 x i64] }) align 8 captures(none) dereferenceable(240) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(128) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void diff --git a/bench/rocksdb/optimized/hash_skiplist_rep.ll b/bench/rocksdb/optimized/hash_skiplist_rep.ll index 0a4680619ca..5fe9707cb4b 100644 --- a/bench/rocksdb/optimized/hash_skiplist_rep.ll +++ b/bench/rocksdb/optimized/hash_skiplist_rep.ll @@ -1737,31 +1737,30 @@ define internal noundef zeroext i1 @_ZNK7rocksdb12_GLOBAL__N_115HashSkipListRep8 br i1 %or.cond.i.i, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i, label %54 54: ; preds = %.thread.i.i - %55 = icmp sgt i32 %51, -1 - %56 = sext i1 %55 to i32 - %.226.i.i = add nsw i32 %.024.i.i, %56 - %.223.i.i = select i1 %55, ptr %.0.i.i.i.i.i, ptr %.021.i.i - %.2.i.i = select i1 %55, ptr %.019.i.i, ptr %.0.i.i.i.i.i + %55 = sext i1 %52 to i32 + %.226.i.i = add nsw i32 %.024.i.i, %55 + %.223.i.i = select i1 %52, ptr %.0.i.i.i.i.i, ptr %.021.i.i + %.2.i.i = select i1 %52, ptr %.019.i.i, ptr %.0.i.i.i.i.i br label %36, !llvm.loop !109 _ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i: ; preds = %.thread.i.i - br i1 %41, label %64, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i + br i1 %41, label %63, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i _ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i: ; preds = %43, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i - %57 = load ptr, ptr %35, align 8, !tbaa !108 - %58 = load ptr, ptr %.0.i.i.i.i.i, align 8, !tbaa !88 - %59 = load ptr, ptr %57, align 8, !tbaa !49 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 8 - %61 = load ptr, ptr %60, align 8 - %62 = call noundef i32 %61(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef %1, ptr noundef %58) - %63 = icmp eq i32 %62, 0 - br i1 %63, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit, label %64 - -64: ; preds = %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i + %56 = load ptr, ptr %35, align 8, !tbaa !108 + %57 = load ptr, ptr %.0.i.i.i.i.i, align 8, !tbaa !88 + %58 = load ptr, ptr %56, align 8, !tbaa !49 + %59 = getelementptr inbounds nuw i8, ptr %58, i64 8 + %60 = load ptr, ptr %59, align 8 + %61 = call noundef i32 %60(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef %1, ptr noundef %57) + %62 = icmp eq i32 %61, 0 + br i1 %62, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit, label %63 + +63: ; preds = %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i br label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit -_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit: ; preds = %64, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %2 - %.0 = phi i1 [ false, %2 ], [ false, %64 ], [ true, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i ] +_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit: ; preds = %63, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %2 + %.0 = phi i1 [ false, %2 ], [ false, %63 ], [ true, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i ] ret i1 %.0 } @@ -1854,11 +1853,10 @@ define internal void @_ZN7rocksdb12_GLOBAL__N_115HashSkipListRep3GetERKNS_9Looku br i1 %or.cond.i.i, label %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, label %57 57: ; preds = %.thread.i.i - %58 = icmp sgt i32 %54, -1 - %59 = sext i1 %58 to i32 - %.226.i.i = add nsw i32 %.024.i.i, %59 - %.223.i.i = select i1 %58, ptr %.0.i.i.i.i.i, ptr %.021.i.i - %.2.i.i = select i1 %58, ptr %.019.i.i, ptr %.0.i.i.i.i.i + %58 = sext i1 %55 to i32 + %.226.i.i = add nsw i32 %.024.i.i, %58 + %.223.i.i = select i1 %55, ptr %.0.i.i.i.i.i, ptr %.021.i.i + %.2.i.i = select i1 %55, ptr %.019.i.i, ptr %.0.i.i.i.i.i br label %39, !llvm.loop !109 _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit: ; preds = %.thread.i.i @@ -1867,20 +1865,20 @@ _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_. .lr.ph.preheader: ; preds = %46, %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %62 - %.sroa.412.019 = phi ptr [ %.0.i.i.i.i10, %62 ], [ %.0.i.i.i.i.i, %.lr.ph.preheader ] - %60 = load ptr, ptr %.sroa.412.019, align 8, !tbaa !88 - %61 = call noundef zeroext i1 %3(ptr noundef %2, ptr noundef %60) - br i1 %61, label %62, label %.critedge - -62: ; preds = %.lr.ph - %63 = getelementptr inbounds nuw i8, ptr %.sroa.412.019, i64 8 - %64 = load atomic i64, ptr %63 acquire, align 8 - %.0.i.i.i.i10 = inttoptr i64 %64 to ptr - %.not17 = icmp eq i64 %64, 0 +.lr.ph: ; preds = %.lr.ph.preheader, %61 + %.sroa.412.019 = phi ptr [ %.0.i.i.i.i10, %61 ], [ %.0.i.i.i.i.i, %.lr.ph.preheader ] + %59 = load ptr, ptr %.sroa.412.019, align 8, !tbaa !88 + %60 = call noundef zeroext i1 %3(ptr noundef %2, ptr noundef %59) + br i1 %60, label %61, label %.critedge + +61: ; preds = %.lr.ph + %62 = getelementptr inbounds nuw i8, ptr %.sroa.412.019, i64 8 + %63 = load atomic i64, ptr %62 acquire, align 8 + %.0.i.i.i.i10 = inttoptr i64 %63 to ptr + %.not17 = icmp eq i64 %63, 0 br i1 %.not17, label %.critedge, label %.lr.ph, !llvm.loop !114 -.critedge: ; preds = %62, %.lr.ph, %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %4 +.critedge: ; preds = %61, %.lr.ph, %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %4 ret void } @@ -2347,7 +2345,7 @@ _ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE12FindLessThanERKS2_ %97 = and i64 %95, 2147483647 %98 = add nuw nsw i64 %96, %97 %99 = trunc nuw i64 %98 to i32 - %100 = icmp slt i32 %99, 0 + %100 = icmp slt i32 %99, -2147450035 %101 = add i32 %99, -2147483647 %spec.select.i.i = select i1 %100, i32 %101, i32 %99 %102 = icmp ult i32 %spec.select.i.i, %92 @@ -2636,7 +2634,7 @@ define internal void @_ZN7rocksdb12_GLOBAL__N_115HashSkipListRep8Iterator4SeekER %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8, !tbaa !120 %.not = icmp eq ptr %5, null - br i1 %.not, label %42, label %6 + br i1 %.not, label %41, label %6 6: ; preds = %3 %.not4 = icmp eq ptr %2, null @@ -2691,19 +2689,18 @@ define internal void @_ZN7rocksdb12_GLOBAL__N_115HashSkipListRep8Iterator4SeekER br i1 %or.cond.i.i, label %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, label %38 38: ; preds = %.thread.i.i - %39 = icmp sgt i32 %35, -1 - %40 = sext i1 %39 to i32 - %.226.i.i = add nsw i32 %.024.i.i, %40 - %.223.i.i = select i1 %39, ptr %.0.i.i.i.i.i, ptr %.021.i.i - %.2.i.i = select i1 %39, ptr %.019.i.i, ptr %.0.i.i.i.i.i + %39 = sext i1 %36 to i32 + %.226.i.i = add nsw i32 %.024.i.i, %39 + %.223.i.i = select i1 %36, ptr %.0.i.i.i.i.i, ptr %.021.i.i + %.2.i.i = select i1 %36, ptr %.019.i.i, ptr %.0.i.i.i.i.i br label %20, !llvm.loop !109 _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit: ; preds = %27, %.thread.i.i - %41 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %.0.i.i.i.i.i, ptr %41, align 8, !tbaa !134 - br label %42 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %.0.i.i.i.i.i, ptr %40, align 8, !tbaa !134 + br label %41 -42: ; preds = %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %3 +41: ; preds = %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %3 ret void } @@ -3027,11 +3024,10 @@ _ZN7rocksdb12_GLOBAL__N_115HashSkipListRep8Iterator5ResetEPNS_8SkipListIPKcRKNS_ br i1 %or.cond.i.i.i, label %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit.i, label %72 72: ; preds = %.thread.i.i.i - %73 = icmp sgt i32 %69, -1 - %74 = sext i1 %73 to i32 - %.226.i.i.i = add nsw i32 %.024.i.i.i, %74 - %.223.i.i.i = select i1 %73, ptr %.0.i.i.i.i.i.i, ptr %.021.i.i.i - %.2.i.i.i = select i1 %73, ptr %.019.i.i.i, ptr %.0.i.i.i.i.i.i + %73 = sext i1 %70 to i32 + %.226.i.i.i = add nsw i32 %.024.i.i.i, %73 + %.223.i.i.i = select i1 %70, ptr %.0.i.i.i.i.i.i, ptr %.021.i.i.i + %.2.i.i.i = select i1 %70, ptr %.019.i.i.i, ptr %.0.i.i.i.i.i.i br label %54, !llvm.loop !109 _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit.i: ; preds = %.thread.i.i.i, %61 diff --git a/bench/ruby/optimized/emacs_mule.ll b/bench/ruby/optimized/emacs_mule.ll index d1312462845..e5af66f7d5d 100644 --- a/bench/ruby/optimized/emacs_mule.ll +++ b/bench/ruby/optimized/emacs_mule.ll @@ -179,25 +179,26 @@ select.unfold: ; preds = %9, %13 ; Function Attrs: mustprogress nofree norecurse nosync nounwind sspstrong willreturn memory(none) uwtable define internal range(i32 -400, 5) i32 @code_to_mbclen(i32 noundef %0, ptr readnone captures(none) %1) #3 { %3 = icmp ult i32 %0, 128 - br i1 %3, label %10, label %4 + br i1 %3, label %13, label %4 4: ; preds = %2 - %5 = icmp slt i32 %0, 0 - br i1 %5, label %10, label %6 - -6: ; preds = %4 - %7 = and i32 %0, 8388608 - %.not = icmp eq i32 %7, 0 - br i1 %.not, label %8, label %10 - -8: ; preds = %6 - %9 = and i32 %0, 32768 - %.not7 = icmp eq i32 %9, 0 - %. = select i1 %.not7, i32 -400, i32 2 - br label %10 - -10: ; preds = %8, %6, %4, %2 - %.0 = phi i32 [ 1, %2 ], [ 4, %4 ], [ 3, %6 ], [ %., %8 ] + %5 = and i32 %0, -16777216 + %6 = icmp slt i32 %5, -16777215 + br i1 %6, label %13, label %7 + +7: ; preds = %4 + %8 = and i32 %0, 8388608 + %9 = icmp eq i32 %8, 0 + br i1 %9, label %10, label %13 + +10: ; preds = %7 + %11 = and i32 %0, 32768 + %12 = icmp eq i32 %11, 0 + %. = select i1 %12, i32 -400, i32 2 + br label %13 + +13: ; preds = %10, %7, %4, %2 + %.0 = phi i32 [ 1, %2 ], [ 4, %4 ], [ 3, %7 ], [ %., %10 ] ret i32 %.0 } @@ -216,59 +217,59 @@ define internal i32 @code_to_mbc(i32 noundef %0, ptr noundef %1, ptr noundef %2) 8: ; preds = %4, %3 %.0 = phi ptr [ %7, %4 ], [ %1, %3 ] %9 = and i32 %0, 16711680 - %.not27 = icmp eq i32 %9, 0 - br i1 %.not27, label %14, label %10 - -10: ; preds = %8 - %11 = lshr i32 %0, 16 - %12 = trunc i32 %11 to i8 - %13 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - store i8 %12, ptr %.0, align 1, !tbaa !6 - br label %14 - -14: ; preds = %10, %8 - %.1 = phi ptr [ %13, %10 ], [ %.0, %8 ] - %15 = and i32 %0, 65280 - %.not28 = icmp eq i32 %15, 0 - br i1 %.not28, label %20, label %16 - -16: ; preds = %14 - %17 = lshr i32 %0, 8 - %18 = trunc i32 %17 to i8 - %19 = getelementptr inbounds nuw i8, ptr %.1, i64 1 - store i8 %18, ptr %.1, align 1, !tbaa !6 - br label %20 - -20: ; preds = %16, %14 - %.2 = phi ptr [ %19, %16 ], [ %.1, %14 ] - %21 = trunc i32 %0 to i8 - %22 = getelementptr inbounds nuw i8, ptr %.2, i64 1 - store i8 %21, ptr %.2, align 1, !tbaa !6 - %23 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %24 = load i32, ptr %23, align 8, !tbaa !11 - %25 = getelementptr inbounds nuw i8, ptr %2, i64 20 - %26 = load i32, ptr %25, align 4, !tbaa !15 - %27 = icmp eq i32 %24, %26 - br i1 %27, label %28, label %30 - -28: ; preds = %20 - %29 = icmp ult ptr %1, %22 - %spec.select = select i1 %29, i32 %24, i32 0 - br label %32 - -30: ; preds = %20 - %31 = tail call i32 @onigenc_mbclen(ptr noundef %1, ptr noundef nonnull %22, ptr noundef nonnull %2) #6 - br label %32 - -32: ; preds = %28, %30 - %33 = phi i32 [ %31, %30 ], [ %spec.select, %28 ] - %34 = sext i32 %33 to i64 - %35 = ptrtoint ptr %22 to i64 - %36 = ptrtoint ptr %1 to i64 - %37 = sub i64 %35, %36 - %.not29 = icmp eq i64 %37, %34 - %38 = trunc nsw i64 %37 to i32 - %.024 = select i1 %.not29, i32 %38, i32 -400 + %10 = icmp eq i32 %9, 0 + br i1 %10, label %15, label %11 + +11: ; preds = %8 + %12 = lshr i32 %0, 16 + %13 = trunc i32 %12 to i8 + %14 = getelementptr inbounds nuw i8, ptr %.0, i64 1 + store i8 %13, ptr %.0, align 1, !tbaa !6 + br label %15 + +15: ; preds = %11, %8 + %.1 = phi ptr [ %14, %11 ], [ %.0, %8 ] + %16 = and i32 %0, 65280 + %17 = icmp eq i32 %16, 0 + br i1 %17, label %22, label %18 + +18: ; preds = %15 + %19 = lshr i32 %0, 8 + %20 = trunc i32 %19 to i8 + %21 = getelementptr inbounds nuw i8, ptr %.1, i64 1 + store i8 %20, ptr %.1, align 1, !tbaa !6 + br label %22 + +22: ; preds = %18, %15 + %.2 = phi ptr [ %21, %18 ], [ %.1, %15 ] + %23 = trunc i32 %0 to i8 + %24 = getelementptr inbounds nuw i8, ptr %.2, i64 1 + store i8 %23, ptr %.2, align 1, !tbaa !6 + %25 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %26 = load i32, ptr %25, align 8, !tbaa !11 + %27 = getelementptr inbounds nuw i8, ptr %2, i64 20 + %28 = load i32, ptr %27, align 4, !tbaa !15 + %29 = icmp eq i32 %26, %28 + br i1 %29, label %30, label %32 + +30: ; preds = %22 + %31 = icmp ult ptr %1, %24 + %spec.select = select i1 %31, i32 %26, i32 0 + br label %34 + +32: ; preds = %22 + %33 = tail call i32 @onigenc_mbclen(ptr noundef %1, ptr noundef nonnull %24, ptr noundef nonnull %2) #6 + br label %34 + +34: ; preds = %30, %32 + %35 = phi i32 [ %33, %32 ], [ %spec.select, %30 ] + %36 = sext i32 %35 to i64 + %37 = ptrtoint ptr %24 to i64 + %38 = ptrtoint ptr %1 to i64 + %39 = sub i64 %37, %38 + %.not29 = icmp eq i64 %39, %36 + %40 = trunc nsw i64 %39 to i32 + %.024 = select i1 %.not29, i32 %40, i32 -400 ret i32 %.024 } diff --git a/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll b/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll index ee854dd728a..66c9ea20e77 100644 --- a/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll +++ b/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll @@ -588,158 +588,157 @@ define void @_ZN5paths7AbsPath9normalize17h54d05f3dece16b61E(ptr noalias noundef call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef nonnull align 8 dereferenceable(56) %4, i64 56, i1 false), !noalias !69 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !66 %.pre.i.i = load i8, ptr %10, align 8, !alias.scope !63, !noalias !69 - %12 = icmp ne i8 %.pre.i.i, 11 + %12 = icmp samesign ult i8 %.pre.i.i, 11 call void @llvm.assume(i1 %12) - %13 = add i8 %.pre.i.i, -6 - %14 = icmp ult i8 %13, 5 - br i1 %14, label %.thread.i, label %16 + %13 = icmp samesign ugt i8 %.pre.i.i, 5 + br i1 %13, label %.thread.i, label %15 -15: ; preds = %37 +14: ; preds = %36 unreachable -16: ; preds = %3 +15: ; preds = %3 %.sroa.gep.i = getelementptr inbounds nuw i8, ptr %10, i64 1 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !58 store i8 %.pre.i.i, ptr %8, align 8, !noalias !58 %.sroa.7.0..sroa_idx3.i = getelementptr inbounds nuw i8, ptr %8, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(55) %.sroa.7.0..sroa_idx3.i, ptr noundef nonnull align 1 dereferenceable(55) %.sroa.gep.i, i64 55, i1 false), !noalias !58 store i8 11, ptr %10, align 8, !noalias !58 - %17 = call { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %8), !noalias !62 - %18 = extractvalue { ptr, i64 } %17, 0 - %19 = extractvalue { ptr, i64 } %17, 1 - %20 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h28dde44bbc4c4023E"(i64 noundef %19, i1 noundef zeroext false), !noalias !70 - %21 = extractvalue { i64, ptr } %20, 0 - %22 = extractvalue { i64, ptr } %20, 1 - %23 = icmp ne ptr %22, null - call void @llvm.assume(i1 %23) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %22, ptr nonnull readonly align 1 %18, i64 %19, i1 false), !noalias !74 + %16 = call { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %8), !noalias !62 + %17 = extractvalue { ptr, i64 } %16, 0 + %18 = extractvalue { ptr, i64 } %16, 1 + %19 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h28dde44bbc4c4023E"(i64 noundef %18, i1 noundef zeroext false), !noalias !70 + %20 = extractvalue { i64, ptr } %19, 0 + %21 = extractvalue { i64, ptr } %19, 1 + %22 = icmp ne ptr %21, null + call void @llvm.assume(i1 %22) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %21, ptr nonnull readonly align 1 %17, i64 %18, i1 false), !noalias !74 call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !58 br label %.thread.i -.thread.i: ; preds = %3, %16 - %.sink3 = phi i64 [ %21, %16 ], [ 0, %3 ] - %.sink2 = phi ptr [ %22, %16 ], [ inttoptr (i64 1 to ptr), %3 ] - %.sink = phi i64 [ %19, %16 ], [ 0, %3 ] - store i64 %.sink3, ptr %9, align 8, !noalias !58 - %24 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %.sink2, ptr %24, align 8, !noalias !58 - %25 = getelementptr inbounds nuw i8, ptr %9, i64 16 - store i64 %.sink, ptr %25, align 8, !noalias !58 +.thread.i: ; preds = %3, %15 + %.sink2 = phi i64 [ %20, %15 ], [ 0, %3 ] + %.sink1 = phi ptr [ %21, %15 ], [ inttoptr (i64 1 to ptr), %3 ] + %.sink = phi i64 [ %18, %15 ], [ 0, %3 ] + store i64 %.sink2, ptr %9, align 8, !noalias !58 + %23 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store ptr %.sink1, ptr %23, align 8, !noalias !58 + %24 = getelementptr inbounds nuw i8, ptr %9, i64 16 + store i64 %.sink, ptr %24, align 8, !noalias !58 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %7, ptr noundef nonnull align 8 dereferenceable(120) %10, i64 120, i1 false), !noalias !58 %.sroa.522.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %7, i64 1 %.sroa.522.0..sroa_idx23.i = getelementptr inbounds nuw i8, ptr %5, i64 1 - %26 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %27 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %28 = getelementptr inbounds nuw i8, ptr %6, i64 16 - br label %29 + %25 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %26 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %27 = getelementptr inbounds nuw i8, ptr %6, i64 16 + br label %28 -29: ; preds = %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i, %.thread.i +28: ; preds = %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i, %.thread.i %.sroa.020.0.copyload.i = load i8, ptr %7, align 8, !noalias !58 store i8 11, ptr %7, align 8, !noalias !58 - %30 = icmp eq i8 %.sroa.020.0.copyload.i, 11 - br i1 %30, label %31, label %32 + %29 = icmp eq i8 %.sroa.020.0.copyload.i, 11 + br i1 %29, label %30, label %31 -31: ; preds = %29 - invoke void @"_ZN81_$LT$camino..Utf8Components$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h13a6c03a00f603f1E"(ptr noalias noundef nonnull sret({ i8, [55 x i8] }) align 8 captures(none) dereferenceable(56) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %26) +30: ; preds = %28 + invoke void @"_ZN81_$LT$camino..Utf8Components$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h13a6c03a00f603f1E"(ptr noalias noundef nonnull sret({ i8, [55 x i8] }) align 8 captures(none) dereferenceable(56) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %25) to label %thread-pre-split.i unwind label %.loopexit.i, !noalias !62 -32: ; preds = %29 +31: ; preds = %28 store i8 %.sroa.020.0.copyload.i, ptr %5, align 8, !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(55) %.sroa.522.0..sroa_idx23.i, ptr noundef nonnull align 1 dereferenceable(55) %.sroa.522.0..sroa_idx.i, i64 55, i1 false), !noalias !58 - br label %34 + br label %33 -.loopexit.i: ; preds = %.noexc.invoke.i, %.invoke.i, %46, %44, %31 +.loopexit.i: ; preds = %.noexc.invoke.i, %.invoke.i, %45, %43, %30 %lpad.loopexit.i = landingpad { ptr, i32 } cleanup - br label %33 + br label %32 -.loopexit.split-lp.i: ; preds = %43 +.loopexit.split-lp.i: ; preds = %42 %lpad.loopexit.split-lp.i = landingpad { ptr, i32 } cleanup - br label %33 + br label %32 -33: ; preds = %.loopexit.split-lp.i, %.loopexit.i +32: ; preds = %.loopexit.split-lp.i, %.loopexit.i %lpad.phi.i = phi { ptr, i32 } [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] invoke void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haaeb7dae211bd4c7E.llvm.18162065724549059738"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) - to label %"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i" unwind label %60, !noalias !62 + to label %"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i" unwind label %59, !noalias !62 -thread-pre-split.i: ; preds = %31 +thread-pre-split.i: ; preds = %30 %.pr.i = load i8, ptr %5, align 8, !noalias !58 - br label %34 + br label %33 -34: ; preds = %thread-pre-split.i, %32 - %35 = phi i8 [ %.pr.i, %thread-pre-split.i ], [ %.sroa.020.0.copyload.i, %32 ] - %36 = icmp eq i8 %35, 10 - br i1 %36, label %_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit, label %37 +33: ; preds = %thread-pre-split.i, %31 + %34 = phi i8 [ %.pr.i, %thread-pre-split.i ], [ %.sroa.020.0.copyload.i, %31 ] + %35 = icmp eq i8 %34, 10 + br i1 %35, label %_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit, label %36 -37: ; preds = %34 +36: ; preds = %33 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(56) %5, i64 56, i1 false), !noalias !58 - %38 = load i8, ptr %6, align 8, !range !75, !noalias !58, !noundef !7 - %39 = icmp samesign ugt i8 %38, 5 - %40 = zext nneg i8 %38 to i64 - %41 = add nsw i64 %40, -5 - %42 = select i1 %39, i64 %41, i64 0 - switch i64 %42, label %15 [ - i64 0, label %43 - i64 1, label %44 + %37 = load i8, ptr %6, align 8, !range !75, !noalias !58, !noundef !7 + %38 = icmp samesign ugt i8 %37, 5 + %39 = zext nneg i8 %37 to i64 + %40 = add nsw i64 %39, -5 + %41 = select i1 %38, i64 %40, i64 0 + switch i64 %41, label %14 [ + i64 0, label %42 + i64 1, label %43 i64 2, label %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i - i64 3, label %46 - i64 4, label %48 + i64 3, label %45 + i64 4, label %47 ] -43: ; preds = %37 +42: ; preds = %36 invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.fe1bb7944afa79976b224b8f2f69f3c4.26, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fe1bb7944afa79976b224b8f2f69f3c4.27) #10 - to label %56 unwind label %.loopexit.split-lp.i, !noalias !62 + to label %55 unwind label %.loopexit.split-lp.i, !noalias !62 -44: ; preds = %37 - %45 = invoke { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %6) - to label %57 unwind label %.loopexit.i, !noalias !62 +43: ; preds = %36 + %44 = invoke { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %6) + to label %56 unwind label %.loopexit.i, !noalias !62 -_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i: ; preds = %.noexc.invoke.i, %46, %37 +_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i: ; preds = %.noexc.invoke.i, %45, %36 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !58 - br label %29 + br label %28 -46: ; preds = %37 - %47 = invoke noundef zeroext i1 @_ZN6camino11Utf8PathBuf3pop17hceb85ab0ada1cefbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) +45: ; preds = %36 + %46 = invoke noundef zeroext i1 @_ZN6camino11Utf8PathBuf3pop17hceb85ab0ada1cefbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) to label %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i unwind label %.loopexit.i, !noalias !62 -48: ; preds = %37 - %49 = load ptr, ptr %27, align 8, !noalias !58, !nonnull !7, !align !76, !noundef !7 - %50 = load i64, ptr %28, align 8, !noalias !58, !noundef !7 +47: ; preds = %36 + %48 = load ptr, ptr %26, align 8, !noalias !58, !nonnull !7, !align !76, !noundef !7 + %49 = load i64, ptr %27, align 8, !noalias !58, !noundef !7 br label %.invoke.i -.invoke.i: ; preds = %57, %48 - %51 = phi ptr [ %49, %48 ], [ %58, %57 ] - %52 = phi i64 [ %50, %48 ], [ %59, %57 ] - %53 = invoke { ptr, i64 } @"_ZN6camino78_$LT$impl$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$u20$for$u20$str$GT$6as_ref17h02821cf3bf4b2a93E"(ptr noalias noundef nonnull readonly align 1 %51, i64 noundef %52) +.invoke.i: ; preds = %56, %47 + %50 = phi ptr [ %48, %47 ], [ %57, %56 ] + %51 = phi i64 [ %49, %47 ], [ %58, %56 ] + %52 = invoke { ptr, i64 } @"_ZN6camino78_$LT$impl$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$u20$for$u20$str$GT$6as_ref17h02821cf3bf4b2a93E"(ptr noalias noundef nonnull readonly align 1 %50, i64 noundef %51) to label %.noexc.invoke.i unwind label %.loopexit.i, !noalias !62 .noexc.invoke.i: ; preds = %.invoke.i - %54 = extractvalue { ptr, i64 } %53, 0 - %55 = extractvalue { ptr, i64 } %53, 1 - invoke void @_ZN3std4path7PathBuf5_push17h98f2c6a7c69395cbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 1 %54, i64 noundef %55) + %53 = extractvalue { ptr, i64 } %52, 0 + %54 = extractvalue { ptr, i64 } %52, 1 + invoke void @_ZN3std4path7PathBuf5_push17h98f2c6a7c69395cbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 1 %53, i64 noundef %54) to label %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i unwind label %.loopexit.i, !noalias !62 -56: ; preds = %43 +55: ; preds = %42 unreachable -57: ; preds = %44 - %58 = extractvalue { ptr, i64 } %45, 0 - %59 = extractvalue { ptr, i64 } %45, 1 +56: ; preds = %43 + %57 = extractvalue { ptr, i64 } %44, 0 + %58 = extractvalue { ptr, i64 } %44, 1 br label %.invoke.i -60: ; preds = %33 - %61 = landingpad { ptr, i32 } +59: ; preds = %32 + %60 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #11, !noalias !62 unreachable -"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i": ; preds = %33 +"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i": ; preds = %32 resume { ptr, i32 } %lpad.phi.i -_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit: ; preds = %34 +_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit: ; preds = %33 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !noalias !77 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !58 diff --git a/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll b/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll index 980a1bed23e..6b3f9106239 100644 --- a/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll +++ b/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll @@ -284,7 +284,7 @@ define hidden void @_ZN4core9panicking13assert_failed17h4a6a04f254648330E(i8 nou %7 = alloca ptr, align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 + call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #15 unreachable } @@ -294,7 +294,7 @@ define hidden void @_ZN4core9panicking13assert_failed17h4e9382beb42ffb7fE(i8 nou %7 = alloca ptr, align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 + call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #15 unreachable } @@ -304,7 +304,7 @@ define hidden void @_ZN4core9panicking13assert_failed17hdc032fdcb945adf5E(i8 nou %7 = alloca ptr, align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 + call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #15 unreachable } @@ -354,13 +354,13 @@ define hidden void @"_ZN75_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$c 5: ; preds = %2 %6 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr96drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$salsa..DatabaseKeyIndex$C$$LP$$RP$$GT$$GT$17hdb5332a5fb62873fE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %3) #17 + invoke void @"_ZN4core3ptr96drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$salsa..DatabaseKeyIndex$C$$LP$$RP$$GT$$GT$17hdb5332a5fb62873fE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %3) #16 to label %9 unwind label %7, !noalias !63 7: ; preds = %5 %8 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #18, !noalias !63 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #17, !noalias !63 unreachable 9: ; preds = %5 @@ -384,11 +384,11 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h01f3cfb6dada2721 4: ; preds = %1 %5 = landingpad { ptr, i32 } cleanup - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #19 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #18 resume { ptr, i32 } %5 "_ZN4core3ptr104drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$salsa..runtime..SharedState$GT$$GT$$GT$17h3b005481cf0555f3E.exit": ; preds = %1 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #19 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #18 ret void } @@ -399,31 +399,31 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h1332530d5bcbb41f %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !65 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h394fb9a6b9a5484aE.llvm.12611796297594801985"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) - to label %.noexc.i unwind label %12 + to label %.noexc.i unwind label %13 .noexc.i: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 %6 = load i64, ptr %5, align 8, !range !74, !noalias !65, !noundef !4 - %.not.i.i.i.i.i = icmp eq i64 %6, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit", label %7 - -7: ; preds = %.noexc.i - %8 = load ptr, ptr %2, align 8, !noalias !65, !nonnull !4, !noundef !4 - %9 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %10 = load i64, ptr %9, align 8, !noalias !65, !noundef !4 - %11 = getelementptr inbounds nuw i8, ptr %3, i64 24 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.12611796297594801985"(ptr noalias noundef nonnull readonly align 1 %11, ptr noundef nonnull %8, i64 noundef %6, i64 noundef %10) - to label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit" unwind label %12 - -12: ; preds = %7, %1 - %13 = landingpad { ptr, i32 } + %7 = icmp eq i64 %6, 0 + br i1 %7, label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit", label %8 + +8: ; preds = %.noexc.i + %9 = load ptr, ptr %2, align 8, !noalias !65, !nonnull !4, !noundef !4 + %10 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %11 = load i64, ptr %10, align 8, !noalias !65, !noundef !4 + %12 = getelementptr inbounds nuw i8, ptr %3, i64 24 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.12611796297594801985"(ptr noalias noundef nonnull readonly align 1 %12, ptr noundef nonnull %9, i64 noundef %6, i64 noundef %11) + to label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit" unwind label %13 + +13: ; preds = %8, %1 + %14 = landingpad { ptr, i32 } cleanup - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #19 - resume { ptr, i32 } %13 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #18 + resume { ptr, i32 } %14 -"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit": ; preds = %.noexc.i, %7 +"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit": ; preds = %.noexc.i, %8 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !65 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #19 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #18 ret void } @@ -441,7 +441,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h61fc90ac14b35aee 10: ; preds = %1 %11 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef range(i64 1, -7) %8, i64 noundef 8) #19 + tail call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef range(i64 1, -7) %8, i64 noundef 8) #18 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17habdebe92190134ecE.exit" "_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17habdebe92190134ecE.exit": ; preds = %1, %10 @@ -451,7 +451,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h61fc90ac14b35aee ; Function Attrs: nounwind nonlazybind uwtable define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hcfddfe30c7c7b901E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #5 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 16, i64 noundef 8) #19 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 16, i64 noundef 8) #18 ret void } @@ -465,90 +465,87 @@ define hidden { ptr, i64 } @"_ZN8triomphe6header96_$LT$impl$u20$triomphe..arc..A %7 = ptrtoint ptr %2 to i64 %8 = ptrtoint ptr %1 to i64 %9 = sub nuw i64 %7, %8 - %10 = lshr i64 %9, 4 - %11 = lshr exact i64 %9, 1 - %12 = icmp eq i64 %9, -16 - br i1 %12, label %13, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i" - -13: ; preds = %3 - call void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.4, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.14) #16, !noalias !75 + %10 = lshr exact i64 %9, 4 + switch i64 %10, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" [ + i64 1152921504606846975, label %11 + i64 1152921504606846974, label %12 + ] + +11: ; preds = %3 + call void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.4, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.14) #15, !noalias !75 unreachable -"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i": ; preds = %3 - %14 = icmp ugt i64 %9, -48 - br i1 %14, label %15, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" - -15: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i" - call void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.4, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.11) #16, !noalias !79 +12: ; preds = %3 + call void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.4, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.11) #15, !noalias !79 unreachable -"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i" - %16 = add nuw i64 %11, 15 +"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i": ; preds = %3 + %13 = lshr exact i64 %9, 1 + %14 = add nuw i64 %13, 15 + %15 = and i64 %14, -8 + %16 = add nuw i64 %15, 15 %17 = and i64 %16, -8 - %18 = add nuw i64 %17, 15 - %19 = and i64 %18, -8 - %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %21 = tail call noundef align 8 ptr @__rust_alloc(i64 noundef %19, i64 noundef 8) #19 - %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" - -23: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef %19) #16 + %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %19 = tail call noundef align 8 ptr @__rust_alloc(i64 noundef %17, i64 noundef 8) #18 + %20 = icmp eq ptr %19, null + br i1 %20, label %21, label %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" + +21: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef %17) #15 unreachable "_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" - store i64 1, ptr %21, align 8 - %24 = getelementptr i8, ptr %21, i64 8 - store i64 %0, ptr %24, align 8 - %25 = icmp eq ptr %2, %1 - br i1 %25, label %26, label %.lr.ph.preheader + store i64 1, ptr %19, align 8 + %22 = getelementptr i8, ptr %19, i64 8 + store i64 %0, ptr %22, align 8 + %23 = icmp eq ptr %2, %1 + br i1 %23, label %24, label %.lr.ph.preheader -26: ; preds = %._crit_edge, %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" - %27 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !83 - %28 = icmp eq ptr %27, null - br i1 %28, label %36, label %35 +24: ; preds = %._crit_edge, %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" + %25 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !83 + %26 = icmp eq ptr %25, null + br i1 %26, label %34, label %33 .lr.ph.preheader: ; preds = %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" - %29 = getelementptr i8, ptr %21, i64 16 - %umax = tail call i64 @llvm.umax.i64(i64 %10, i64 1) + %27 = getelementptr i8, ptr %19, i64 16 br label %.lr.ph -._crit_edge: ; preds = %40 - %30 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !86 - %31 = icmp eq ptr %30, null - br i1 %31, label %26, label %34 +._crit_edge: ; preds = %38 + %28 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !86 + %29 = icmp eq ptr %28, null + br i1 %29, label %24, label %32 -.lr.ph: ; preds = %.lr.ph.preheader, %40 - %.034 = phi ptr [ %44, %40 ], [ %29, %.lr.ph.preheader ] - %.sroa.07.033 = phi i64 [ %41, %40 ], [ 0, %.lr.ph.preheader ] - %32 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !89 - %33 = icmp eq ptr %32, null - br i1 %33, label %39, label %40 +.lr.ph: ; preds = %.lr.ph.preheader, %38 + %.034 = phi ptr [ %42, %38 ], [ %27, %.lr.ph.preheader ] + %.sroa.07.033 = phi i64 [ %39, %38 ], [ 0, %.lr.ph.preheader ] + %30 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !89 + %31 = icmp eq ptr %30, null + br i1 %31, label %37, label %38 -34: ; preds = %._crit_edge - call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.23) #16 +32: ; preds = %._crit_edge + call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.23) #15 unreachable -35: ; preds = %26 - call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.24) #16 +33: ; preds = %24 + call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.24) #15 unreachable -36: ; preds = %26 - %37 = insertvalue { ptr, i64 } poison, ptr %21, 0 - %38 = insertvalue { ptr, i64 } %37, i64 %10, 1 - ret { ptr, i64 } %38 +34: ; preds = %24 + %35 = insertvalue { ptr, i64 } poison, ptr %19, 0 + %36 = insertvalue { ptr, i64 } %35, i64 %10, 1 + ret { ptr, i64 } %36 -39: ; preds = %.lr.ph - call void @_ZN4core6option13expect_failed17hea24986454718b4fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.25, i64 noundef 38, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.26) #16 +37: ; preds = %.lr.ph + call void @_ZN4core6option13expect_failed17hea24986454718b4fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.25, i64 noundef 38, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.26) #15 unreachable -40: ; preds = %.lr.ph - %41 = add nuw nsw i64 %.sroa.07.033, 1 - %42 = getelementptr inbounds nuw i8, ptr %32, i64 8 - %43 = load i64, ptr %42, align 8, !noalias !89 - store i64 %43, ptr %.034, align 4 - %44 = getelementptr inbounds nuw i8, ptr %.034, i64 8 - %exitcond.not = icmp eq i64 %41, %umax +38: ; preds = %.lr.ph + %39 = add nuw nsw i64 %.sroa.07.033, 1 + %40 = getelementptr inbounds nuw i8, ptr %30, i64 8 + %41 = load i64, ptr %40, align 8, !noalias !89 + store i64 %41, ptr %.034, align 4 + %42 = getelementptr inbounds nuw i8, ptr %.034, i64 8 + %exitcond.not = icmp eq i64 %39, %10 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph } @@ -598,7 +595,7 @@ define noundef range(i32 1, -255) i32 @"_ZN77_$LT$salsa..intern_id..InternId$u20 br i1 %2, label %4, label %3 3: ; preds = %1 - tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.27, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.29) #16 + tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.27, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.29) #15 unreachable 4: ; preds = %1 @@ -612,7 +609,7 @@ define noundef range(i32 1, -255) i32 @"_ZN79_$LT$salsa..intern_id..InternId$u20 br i1 %2, label %4, label %3 3: ; preds = %1 - tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.30, i64 noundef 47, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.31) #16 + tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.30, i64 noundef 47, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.31) #15 unreachable 4: ; preds = %1 @@ -814,9 +811,6 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #13 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #14 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #15 - attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -832,11 +826,10 @@ attributes #11 = { nounwind nonlazybind allockind("free") uwtable "alloc-family" attributes #12 = { nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { noreturn } -attributes #17 = { cold } -attributes #18 = { cold noreturn nounwind } -attributes #19 = { nounwind } +attributes #15 = { noreturn } +attributes #16 = { cold } +attributes #17 = { cold noreturn nounwind } +attributes #18 = { nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/sdl/optimized/SDL_asyncio_generic.ll b/bench/sdl/optimized/SDL_asyncio_generic.ll index 40f3f3b4c35..d6e87fe4b0d 100644 --- a/bench/sdl/optimized/SDL_asyncio_generic.ll +++ b/bench/sdl/optimized/SDL_asyncio_generic.ll @@ -70,87 +70,88 @@ define hidden noundef zeroext i1 @SDL_SYS_CreateAsyncIOQueue_Generic(ptr noundef define internal fastcc noundef zeroext i1 @PrepareThreadpool() unnamed_addr #0 { %1 = alloca [32 x i8], align 16 %2 = tail call zeroext i1 @SDL_ShouldInit_REAL(ptr noundef nonnull @threadpool_init) #8 - br i1 %2, label %3, label %31 + br i1 %2, label %3, label %32 3: ; preds = %0 %4 = tail call i32 @SDL_GetNumLogicalCPUCores_REAL() #8 %5 = shl nsw i32 %4, 1 %6 = or disjoint i32 %5, 1 - %7 = tail call i32 @llvm.smax.i32(i32 %6, i32 1) - %8 = tail call i32 @llvm.umin.i32(i32 %7, i32 8) - store i32 %8, ptr @max_threadpool_threads, align 4 - %9 = tail call ptr @SDL_CreateMutex_REAL() #8 - store ptr %9, ptr @threadpool_lock, align 8 - %.not = icmp eq ptr %9, null - br i1 %.not, label %.critedge.thread11, label %10 - -10: ; preds = %3 - %11 = tail call ptr @SDL_CreateCondition_REAL() #8 - store ptr %11, ptr @threadpool_condition, align 8 - %.not14 = icmp eq ptr %11, null - br i1 %.not14, label %.critedge.thread11.thread, label %12 - -12: ; preds = %10 - %13 = load i32, ptr @idle_threadpool_threads, align 4 - %14 = icmp eq i32 %13, 0 - br i1 %14, label %15, label %.critedge.thread - -15: ; preds = %12 - %16 = load i32, ptr @running_threadpool_threads, align 4 - %17 = load i32, ptr @max_threadpool_threads, align 4 - %18 = icmp slt i32 %16, %17 - br i1 %18, label %19, label %.critedge.thread - -19: ; preds = %15 + %7 = icmp slt i32 %4, 0 + %8 = tail call i32 @llvm.smin.i32(i32 %6, i32 8) + %9 = select i1 %7, i32 1, i32 %8 + store i32 %9, ptr @max_threadpool_threads, align 4 + %10 = tail call ptr @SDL_CreateMutex_REAL() #8 + store ptr %10, ptr @threadpool_lock, align 8 + %.not = icmp eq ptr %10, null + br i1 %.not, label %.critedge.thread11, label %11 + +11: ; preds = %3 + %12 = tail call ptr @SDL_CreateCondition_REAL() #8 + store ptr %12, ptr @threadpool_condition, align 8 + %.not14 = icmp eq ptr %12, null + br i1 %.not14, label %.critedge.thread11.thread, label %13 + +13: ; preds = %11 + %14 = load i32, ptr @idle_threadpool_threads, align 4 + %15 = icmp eq i32 %14, 0 + br i1 %15, label %16, label %.critedge.thread + +16: ; preds = %13 + %17 = load i32, ptr @running_threadpool_threads, align 4 + %18 = load i32, ptr @max_threadpool_threads, align 4 + %19 = icmp slt i32 %17, %18 + br i1 %19, label %20, label %.critedge.thread + +20: ; preds = %16 call void @llvm.lifetime.start.p0(ptr nonnull %1) - %20 = load i32, ptr @threadpool_threads_spun, align 4 - %21 = call i32 (ptr, i64, ptr, ...) @SDL_snprintf_REAL(ptr noundef nonnull %1, i64 noundef 32, ptr noundef nonnull @.str, i32 noundef %20) #8 - %22 = call ptr @SDL_CreateThreadRuntime_REAL(ptr noundef nonnull @AsyncIOThreadpoolWorker, ptr noundef nonnull %1, ptr noundef null, ptr noundef null, ptr noundef null) #8 - %.not15 = icmp eq ptr %22, null + %21 = load i32, ptr @threadpool_threads_spun, align 4 + %22 = call i32 (ptr, i64, ptr, ...) @SDL_snprintf_REAL(ptr noundef nonnull %1, i64 noundef 32, ptr noundef nonnull @.str, i32 noundef %21) #8 + %23 = call ptr @SDL_CreateThreadRuntime_REAL(ptr noundef nonnull @AsyncIOThreadpoolWorker, ptr noundef nonnull %1, ptr noundef null, ptr noundef null, ptr noundef null) #8 + %.not15 = icmp eq ptr %23, null br i1 %.not15, label %.critedge, label %.critedge.thread12 -.critedge.thread12: ; preds = %19 - call void @SDL_DetachThread_REAL(ptr noundef nonnull %22) #8 - %23 = load i32, ptr @running_threadpool_threads, align 4 - %24 = add nsw i32 %23, 1 - store i32 %24, ptr @running_threadpool_threads, align 4 - %25 = load i32, ptr @threadpool_threads_spun, align 4 - %26 = add nsw i32 %25, 1 - store i32 %26, ptr @threadpool_threads_spun, align 4 +.critedge.thread12: ; preds = %20 + call void @SDL_DetachThread_REAL(ptr noundef nonnull %23) #8 + %24 = load i32, ptr @running_threadpool_threads, align 4 + %25 = add nsw i32 %24, 1 + store i32 %25, ptr @running_threadpool_threads, align 4 + %26 = load i32, ptr @threadpool_threads_spun, align 4 + %27 = add nsw i32 %26, 1 + store i32 %27, ptr @threadpool_threads_spun, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %.critedge.thread -.critedge: ; preds = %19 +.critedge: ; preds = %20 call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %.critedge.thread11 .critedge.thread11: ; preds = %3, %.critedge %.pr = load ptr, ptr @threadpool_condition, align 8 %.not8 = icmp eq ptr %.pr, null - br i1 %.not8, label %.critedge.thread11.thread, label %27 + br i1 %.not8, label %.critedge.thread11.thread, label %28 -27: ; preds = %.critedge.thread11 +28: ; preds = %.critedge.thread11 call void @SDL_DestroyCondition_REAL(ptr noundef nonnull %.pr) #8 store ptr null, ptr @threadpool_condition, align 8 br label %.critedge.thread11.thread -.critedge.thread11.thread: ; preds = %10, %27, %.critedge.thread11 - %28 = load ptr, ptr @threadpool_lock, align 8 - %.not9 = icmp eq ptr %28, null - br i1 %.not9, label %.critedge.thread, label %29 +.critedge.thread11.thread: ; preds = %11, %28, %.critedge.thread11 + %29 = load ptr, ptr @threadpool_lock, align 8 + %.not9 = icmp eq ptr %29, null + br i1 %.not9, label %.critedge.thread, label %30 -29: ; preds = %.critedge.thread11.thread - call void @SDL_DestroyMutex_REAL(ptr noundef nonnull %28) #8 +30: ; preds = %.critedge.thread11.thread + call void @SDL_DestroyMutex_REAL(ptr noundef nonnull %29) #8 store ptr null, ptr @threadpool_lock, align 8 br label %.critedge.thread -.critedge.thread: ; preds = %12, %15, %.critedge.thread12, %.critedge.thread11.thread, %29 - %30 = phi i1 [ false, %.critedge.thread11.thread ], [ false, %29 ], [ true, %.critedge.thread12 ], [ true, %15 ], [ true, %12 ] - call void @SDL_SetInitialized_REAL(ptr noundef nonnull @threadpool_init, i1 noundef zeroext %30) #8 - br label %31 +.critedge.thread: ; preds = %13, %16, %.critedge.thread12, %.critedge.thread11.thread, %30 + %31 = phi i1 [ false, %.critedge.thread11.thread ], [ false, %30 ], [ true, %.critedge.thread12 ], [ true, %16 ], [ true, %13 ] + call void @SDL_SetInitialized_REAL(ptr noundef nonnull @threadpool_init, i1 noundef zeroext %31) #8 + br label %32 -31: ; preds = %.critedge.thread, %0 - %.0 = phi i1 [ %30, %.critedge.thread ], [ true, %0 ] +32: ; preds = %.critedge.thread, %0 + %.0 = phi i1 [ %31, %.critedge.thread ], [ true, %0 ] ret i1 %.0 } @@ -867,14 +868,11 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #4 declare void @llvm.lifetime.end.p0(ptr captures(none)) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #5 +declare i32 @llvm.smin.i32(i32, i32) #5 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #6 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #5 - attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { allocsize(0,1) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/slurm/optimized/auth_munge.ll b/bench/slurm/optimized/auth_munge.ll index 1646e008234..2f72d3c2257 100644 --- a/bench/slurm/optimized/auth_munge.ll +++ b/bench/slurm/optimized/auth_munge.ll @@ -67,11 +67,11 @@ define dso_local range(i32 -1, 1) i32 @init() local_unnamed_addr #0 { %storemerge = phi i32 [ %6, %4 ], [ 0, %0 ] store i32 %storemerge, ptr @bad_cred_test, align 4 %8 = tail call zeroext i1 @slurm_running_in_slurmstepd() #13 - br i1 %8, label %38, label %9 + br i1 %8, label %39, label %9 9: ; preds = %7 %10 = tail call zeroext i1 @slurm_running_in_daemon() #13 - br i1 %10, label %11, label %38 + br i1 %10, label %11, label %39 11: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %2) @@ -83,78 +83,78 @@ define dso_local range(i32 -1, 1) i32 @init() local_unnamed_addr #0 { %16 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 144), align 8 %17 = tail call ptr @auth_p_create(ptr noundef %16, i32 noundef %15, ptr noundef null, i32 noundef 0) %.not8 = icmp eq ptr %17, null - br i1 %.not8, label %22, label %18 + br i1 %.not8, label %23, label %18 18: ; preds = %11 %19 = tail call fastcc i32 @_decode_cred(ptr noundef %17, ptr noundef %13, i1 noundef zeroext true) - %.not9 = icmp eq i32 %19, 0 - br i1 %.not9, label %20, label %24 + %20 = icmp eq i32 %19, -1 + br i1 %20, label %25, label %21 -20: ; preds = %18 - %21 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.2) #13 - br label %24 +21: ; preds = %18 + %22 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.2) #13 + br label %25 -22: ; preds = %11 - %23 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.1) #13 +23: ; preds = %11 + %24 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.1) #13 call void @slurm_xfree(ptr noundef nonnull %2) #13 call void @llvm.lifetime.start.p0(ptr nonnull %1) br label %auth_p_destroy.exit -24: ; preds = %18, %20 - %.0.ph = phi i32 [ -1, %20 ], [ 0, %18 ] +25: ; preds = %18, %21 + %.0.ph = phi i32 [ -1, %21 ], [ 0, %18 ] call void @slurm_xfree(ptr noundef nonnull %2) #13 call void @llvm.lifetime.start.p0(ptr nonnull %1) store ptr %17, ptr %1, align 8 - %25 = getelementptr inbounds nuw i8, ptr %17, i64 16 - %26 = load i8, ptr %25, align 8, !range !8, !noundef !9 - %27 = trunc nuw i8 %26 to i1 - %28 = getelementptr inbounds nuw i8, ptr %17, i64 8 - br i1 %27, label %29, label %30 - -29: ; preds = %24 - call void @slurm_xfree(ptr noundef nonnull %28) #13 - br label %33 + %26 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %27 = load i8, ptr %26, align 8, !range !8, !noundef !9 + %28 = trunc nuw i8 %27 to i1 + %29 = getelementptr inbounds nuw i8, ptr %17, i64 8 + br i1 %28, label %30, label %31 + +30: ; preds = %25 + call void @slurm_xfree(ptr noundef nonnull %29) #13 + br label %34 -30: ; preds = %24 - %31 = load ptr, ptr %28, align 8 - %.not3.i = icmp eq ptr %31, null - br i1 %.not3.i, label %33, label %32 +31: ; preds = %25 + %32 = load ptr, ptr %29, align 8 + %.not3.i = icmp eq ptr %32, null + br i1 %.not3.i, label %34, label %33 -32: ; preds = %30 - call void @free(ptr noundef nonnull %31) #13 - br label %33 +33: ; preds = %31 + call void @free(ptr noundef nonnull %32) #13 + br label %34 -33: ; preds = %32, %30, %29 - %34 = getelementptr inbounds nuw i8, ptr %17, i64 40 - %35 = load ptr, ptr %34, align 8 - %.not4.i = icmp eq ptr %35, null - br i1 %.not4.i, label %37, label %36 +34: ; preds = %33, %31, %30 + %35 = getelementptr inbounds nuw i8, ptr %17, i64 40 + %36 = load ptr, ptr %35, align 8 + %.not4.i = icmp eq ptr %36, null + br i1 %.not4.i, label %38, label %37 -36: ; preds = %33 - call void @free(ptr noundef nonnull %35) #13 - br label %37 +37: ; preds = %34 + call void @free(ptr noundef nonnull %36) #13 + br label %38 -37: ; preds = %36, %33 +38: ; preds = %37, %34 call void @slurm_xfree(ptr noundef nonnull %1) #13 br label %auth_p_destroy.exit -auth_p_destroy.exit: ; preds = %22, %37 - %.012 = phi i32 [ -1, %22 ], [ %.0.ph, %37 ] +auth_p_destroy.exit: ; preds = %23, %38 + %.011 = phi i32 [ -1, %23 ], [ %.0.ph, %38 ] call void @llvm.lifetime.end.p0(ptr nonnull %1) call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %38 + br label %39 -38: ; preds = %auth_p_destroy.exit, %9, %7 - %.1 = phi i32 [ 0, %7 ], [ %.012, %auth_p_destroy.exit ], [ 0, %9 ] - %39 = call i32 @slurm_get_log_level() #13 - %40 = icmp sgt i32 %39, 4 - br i1 %40, label %41, label %42 +39: ; preds = %auth_p_destroy.exit, %9, %7 + %.1 = phi i32 [ 0, %7 ], [ %.011, %auth_p_destroy.exit ], [ 0, %9 ] + %40 = call i32 @slurm_get_log_level() #13 + %41 = icmp sgt i32 %40, 4 + br i1 %41, label %42, label %43 -41: ; preds = %38 +42: ; preds = %39 call void (i32, ptr, ...) @slurm_log_var(i32 noundef 5, ptr noundef nonnull @.str.3, ptr noundef nonnull @plugin_type, ptr noundef nonnull @__func__.init) #13 - br label %42 + br label %43 -42: ; preds = %41, %38 +43: ; preds = %42, %39 ret i32 %.1 } @@ -611,23 +611,25 @@ define dso_local range(i32 -1, 1) i32 @auth_p_verify(ptr noundef %0, ptr noundef 4: ; preds = %2 %5 = tail call ptr @__errno_location() #14 store i32 6004, ptr %5, align 4 - br label %13 + br label %14 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 %8 = load i8, ptr %7, align 8, !range !8, !noundef !9 %9 = trunc nuw i8 %8 to i1 - br i1 %9, label %13, label %10 + br i1 %9, label %14, label %10 10: ; preds = %6 %11 = tail call ptr @slurm_auth_opts_to_socket(ptr noundef %1) #13 store ptr %11, ptr %3, align 8 %12 = tail call fastcc i32 @_decode_cred(ptr noundef %0, ptr noundef %11, i1 noundef zeroext false) call void @slurm_xfree(ptr noundef nonnull %3) #13 - br label %13 + %13 = icmp eq i32 %12, -1 + %. = sext i1 %13 to i32 + br label %14 -13: ; preds = %10, %6, %4 - %.0 = phi i32 [ -1, %4 ], [ 0, %6 ], [ %12, %10 ] +14: ; preds = %10, %6, %4 + %.0 = phi i32 [ -1, %4 ], [ 0, %6 ], [ %., %10 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } @@ -677,7 +679,7 @@ define dso_local ptr @auth_p_get_host(ptr noundef readonly captures(address_is_n 7: ; preds = %3, %1 %8 = tail call ptr @__errno_location() #14 store i32 6004, ptr %8, align 4 - br label %26 + br label %27 9: ; preds = %3 store i16 2, ptr %2, align 8 @@ -687,7 +689,7 @@ define dso_local ptr @auth_p_get_host(ptr noundef readonly captures(address_is_n store i32 %11, ptr %12, align 4 %.mask = and i32 %11, 255 %13 = icmp eq i32 %.mask, 127 - br i1 %13, label %26, label %14 + br i1 %13, label %27, label %14 14: ; preds = %9 %.not19 = icmp eq i32 %11, 0 @@ -701,26 +703,26 @@ define dso_local ptr @auth_p_get_host(ptr noundef readonly captures(address_is_n 17: ; preds = %15 %18 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %16, i32 noundef 46) #15 %.not21 = icmp eq ptr %18, null - br i1 %.not21, label %26, label %19 + br i1 %.not21, label %27, label %19 19: ; preds = %17 store i8 0, ptr %18, align 1 - br label %26 + br label %27 20: ; preds = %15, %14 %21 = call ptr @slurm_xcalloc(i64 noundef 1, i64 noundef 16, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull @.str.8, i32 noundef 391, ptr noundef nonnull @__func__.auth_p_get_host) #13 call void @slurm_get_ip_str(ptr noundef nonnull %2, ptr noundef %21, i32 noundef 16) #13 %22 = load i32, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 268), align 4 %23 = and i32 %22, 128 - %.not23 = icmp eq i32 %23, 0 - br i1 %.not23, label %24, label %26 + %24 = icmp eq i32 %23, 0 + br i1 %24, label %25, label %27 -24: ; preds = %20 - %25 = call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.12, ptr noundef nonnull @__func__.auth_p_get_host, ptr noundef %21) #13 - br label %26 +25: ; preds = %20 + %26 = call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.12, ptr noundef nonnull @__func__.auth_p_get_host, ptr noundef %21) #13 + br label %27 -26: ; preds = %19, %17, %24, %20, %9, %7 - %.014 = phi ptr [ null, %7 ], [ null, %9 ], [ %21, %20 ], [ %21, %24 ], [ %16, %19 ], [ %16, %17 ] +27: ; preds = %19, %17, %25, %20, %9, %7 + %.014 = phi ptr [ null, %7 ], [ null, %9 ], [ %21, %20 ], [ %21, %25 ], [ %16, %19 ], [ %16, %17 ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret ptr %.014 } diff --git a/bench/smol-rs/optimized/38abr5s50jd6yipr.ll b/bench/smol-rs/optimized/38abr5s50jd6yipr.ll index a63e63f140b..50b9846125e 100644 --- a/bench/smol-rs/optimized/38abr5s50jd6yipr.ll +++ b/bench/smol-rs/optimized/38abr5s50jd6yipr.ll @@ -159,30 +159,30 @@ define hidden noundef nonnull align 8 ptr @"_ZN3std3sys6common12thread_local4laz define hidden noundef nonnull align 8 ptr @"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h4c5efc12cb945857E"(ptr noundef nonnull writeonly align 8 captures(ret: address, provenance) initializes((0, 16)) %0, ptr noalias noundef align 8 captures(address_is_null) dereferenceable_or_null(16) %1) unnamed_addr #0 personality ptr @rust_eh_personality { tail call void @llvm.experimental.noalias.scope.decl(metadata !48) %.not.i = icmp eq ptr %1, null - br i1 %.not.i, label %7, label %3 + br i1 %.not.i, label %8, label %3 3: ; preds = %2 %4 = load i64, ptr %1, align 8, !range !11, !alias.scope !48, !noundef !4 %5 = getelementptr inbounds nuw i8, ptr %1, i64 8 %6 = load i64, ptr %5, align 8, !alias.scope !48 store i64 0, ptr %1, align 8, !alias.scope !48 - %.not9.i = icmp eq i64 %4, 0 - br i1 %.not9.i, label %7, label %"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit" - -7: ; preds = %3, %2 - %8 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE(), !noalias !48 - %.fca.0.extract.i = extractvalue { i64, i64 } %8, 0 - %9 = icmp eq i64 %.fca.0.extract.i, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 - %.0.i = select i1 %9, i64 1078321422319462234, i64 %.fca.1.extract.i + %7 = icmp eq i64 %4, 0 + br i1 %7, label %8, label %"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit" + +8: ; preds = %3, %2 + %9 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE(), !noalias !48 + %.fca.0.extract.i = extractvalue { i64, i64 } %9, 0 + %10 = icmp eq i64 %.fca.0.extract.i, 0 + %.fca.1.extract.i = extractvalue { i64, i64 } %9, 1 + %.0.i = select i1 %10, i64 1078321422319462234, i64 %.fca.1.extract.i br label %"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit" -"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit": ; preds = %3, %7 - %.08.i = phi i64 [ %.0.i, %7 ], [ %6, %3 ] +"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit": ; preds = %3, %8 + %.08.i = phi i64 [ %.0.i, %8 ], [ %6, %3 ] store i64 1, ptr %0, align 8 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.08.i, ptr %10, align 8 - ret ptr %10 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.08.i, ptr %11, align 8 + ret ptr %11 } ; Function Attrs: nonlazybind uwtable @@ -756,26 +756,26 @@ define hidden void @"_ZN8async_io6driver8block_on5CACHE7__getit28_$u7b$$u7b$clos ; Function Attrs: inlinehint nonlazybind uwtable define hidden noundef i64 @"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439"(ptr noalias noundef align 8 captures(address_is_null) dereferenceable_or_null(16) %0) unnamed_addr #3 { %.not = icmp eq ptr %0, null - br i1 %.not, label %6, label %2 + br i1 %.not, label %7, label %2 2: ; preds = %1 %3 = load i64, ptr %0, align 8, !range !11, !noundef !4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8 store i64 0, ptr %0, align 8 - %.not9 = icmp eq i64 %3, 0 - br i1 %.not9, label %6, label %9 - -6: ; preds = %2, %1 - %7 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE() - %.fca.0.extract = extractvalue { i64, i64 } %7, 0 - %8 = icmp eq i64 %.fca.0.extract, 0 - %.fca.1.extract = extractvalue { i64, i64 } %7, 1 - %.0 = select i1 %8, i64 1078321422319462234, i64 %.fca.1.extract - br label %9 - -9: ; preds = %2, %6 - %.08 = phi i64 [ %.0, %6 ], [ %5, %2 ] + %6 = icmp eq i64 %3, 0 + br i1 %6, label %7, label %10 + +7: ; preds = %2, %1 + %8 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE() + %.fca.0.extract = extractvalue { i64, i64 } %8, 0 + %9 = icmp eq i64 %.fca.0.extract, 0 + %.fca.1.extract = extractvalue { i64, i64 } %8, 1 + %.0 = select i1 %9, i64 1078321422319462234, i64 %.fca.1.extract + br label %10 + +10: ; preds = %2, %7 + %.08 = phi i64 [ %.0, %7 ], [ %5, %2 ] ret i64 %.08 } diff --git a/bench/stat-rs/optimized/n94tvlll45kxl7r.ll b/bench/stat-rs/optimized/n94tvlll45kxl7r.ll index 2485b915330..7a96ea81fe2 100644 --- a/bench/stat-rs/optimized/n94tvlll45kxl7r.ll +++ b/bench/stat-rs/optimized/n94tvlll45kxl7r.ll @@ -462,54 +462,57 @@ _ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.e %13 = load double, ptr %12, align 8, !noundef !4 %14 = fmul double %1, %13 tail call void @llvm.experimental.noalias.scope.decl(metadata !51) - %15 = add i64 %.val1, -1 - %.not16.i = icmp slt i64 %15, 0 - br i1 %.not16.i, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit, label %.lr.ph.i + %15 = icmp ugt i64 %.val1, -9223372036854775808 + br i1 %15, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit, label %.lr.ph.i.preheader -._crit_edge.loopexit.i: ; preds = %32 - %16 = tail call range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %.sroa.06.1.i, i64 0) - %17 = tail call i64 @llvm.umin.i64(i64 %.val1, i64 %16) +.lr.ph.i.preheader: ; preds = %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit + %16 = add i64 %.val1, -1 + br label %.lr.ph.i + +._crit_edge.loopexit.i: ; preds = %33 + %17 = tail call range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %.sroa.06.1.i, i64 0) + %18 = tail call i64 @llvm.umin.i64(i64 %.val1, i64 %17) br label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit -.lr.ph.i: ; preds = %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit, %32 - %.sroa.02.018.i = phi i64 [ %.sroa.02.1.i, %32 ], [ %15, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit ] - %.sroa.06.017.i = phi i64 [ %.sroa.06.1.i, %32 ], [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit ] - %18 = sub i64 %.sroa.02.018.i, %.sroa.06.017.i - %19 = sdiv i64 %18, 2 - %20 = add i64 %19, %.sroa.06.017.i - %.not12.i = icmp ult i64 %20, %.val1 - br i1 %.not12.i, label %22, label %21 +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %33 + %.sroa.02.018.i = phi i64 [ %.sroa.02.1.i, %33 ], [ %16, %.lr.ph.i.preheader ] + %.sroa.06.017.i = phi i64 [ %.sroa.06.1.i, %33 ], [ 0, %.lr.ph.i.preheader ] + %19 = sub i64 %.sroa.02.018.i, %.sroa.06.017.i + %20 = sdiv i64 %19, 2 + %21 = add i64 %20, %.sroa.06.017.i + %.not12.i = icmp ult i64 %21, %.val1 + br i1 %.not12.i, label %23, label %22 -21: ; preds = %.lr.ph.i +22: ; preds = %.lr.ph.i tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4768d052527bd36a73bfd89d5da159b4.18) #19, !noalias !51 unreachable -22: ; preds = %.lr.ph.i - %23 = getelementptr inbounds double, ptr %.val, i64 %20 - %24 = load double, ptr %23, align 8, !alias.scope !51, !noundef !4 - %25 = fcmp ogt double %24, %14 - br i1 %25, label %28, label %26 +23: ; preds = %.lr.ph.i + %24 = getelementptr inbounds double, ptr %.val, i64 %21 + %25 = load double, ptr %24, align 8, !alias.scope !51, !noundef !4 + %26 = fcmp ogt double %25, %14 + br i1 %26, label %29, label %27 -26: ; preds = %22 - %27 = fcmp olt double %24, %14 - br i1 %27, label %30, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit +27: ; preds = %23 + %28 = fcmp olt double %25, %14 + br i1 %28, label %31, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit -28: ; preds = %22 - %29 = add i64 %20, -1 - br label %32 +29: ; preds = %23 + %30 = add i64 %21, -1 + br label %33 -30: ; preds = %26 - %31 = tail call i64 @llvm.sadd.sat.i64(i64 %20, i64 1) - br label %32 +31: ; preds = %27 + %32 = tail call i64 @llvm.sadd.sat.i64(i64 %21, i64 1) + br label %33 -32: ; preds = %30, %28 - %.sroa.06.1.i = phi i64 [ %.sroa.06.017.i, %28 ], [ %31, %30 ] - %.sroa.02.1.i = phi i64 [ %29, %28 ], [ %.sroa.02.018.i, %30 ] +33: ; preds = %31, %29 + %.sroa.06.1.i = phi i64 [ %.sroa.06.017.i, %29 ], [ %32, %31 ] + %.sroa.02.1.i = phi i64 [ %30, %29 ], [ %.sroa.02.018.i, %31 ] %.not.i2 = icmp sgt i64 %.sroa.06.1.i, %.sroa.02.1.i br i1 %.not.i2, label %._crit_edge.loopexit.i, label %.lr.ph.i -_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit: ; preds = %26, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit, %._crit_edge.loopexit.i - %.sroa.0.0.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit ], [ %17, %._crit_edge.loopexit.i ], [ %20, %26 ] +_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit: ; preds = %27, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit, %._crit_edge.loopexit.i + %.sroa.0.0.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit ], [ %18, %._crit_edge.loopexit.i ], [ %21, %27 ] ret i64 %.sroa.0.0.i } @@ -653,56 +656,59 @@ _ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.e %8 = load double, ptr %7, align 8, !noalias !63, !noundef !4 %9 = fmul double %8, 5.000000e-01 tail call void @llvm.experimental.noalias.scope.decl(metadata !66) - %10 = add i64 %.val1.i, -1 - %.not16.i.i = icmp slt i64 %10, 0 - br i1 %.not16.i.i, label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit", label %.lr.ph.i.i + %10 = icmp ugt i64 %.val1.i, -9223372036854775808 + br i1 %10, label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit", label %.lr.ph.i.preheader.i + +.lr.ph.i.preheader.i: ; preds = %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i + %11 = add i64 %.val1.i, -1 + br label %.lr.ph.i.i -._crit_edge.loopexit.i.i: ; preds = %27 - %11 = tail call range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %.sroa.06.1.i.i, i64 0) - %12 = tail call i64 @llvm.umin.i64(i64 %.val1.i, i64 %11) +._crit_edge.loopexit.i.i: ; preds = %28 + %12 = tail call range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %.sroa.06.1.i.i, i64 0) + %13 = tail call i64 @llvm.umin.i64(i64 %.val1.i, i64 %12) br label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit" -.lr.ph.i.i: ; preds = %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i, %27 - %.sroa.02.018.i.i = phi i64 [ %.sroa.02.1.i.i, %27 ], [ %10, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i ] - %.sroa.06.017.i.i = phi i64 [ %.sroa.06.1.i.i, %27 ], [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i ] - %13 = sub i64 %.sroa.02.018.i.i, %.sroa.06.017.i.i - %14 = sdiv i64 %13, 2 - %15 = add i64 %14, %.sroa.06.017.i.i - %.not12.i.i = icmp ult i64 %15, %.val1.i - br i1 %.not12.i.i, label %17, label %16 +.lr.ph.i.i: ; preds = %28, %.lr.ph.i.preheader.i + %.sroa.02.018.i.i = phi i64 [ %.sroa.02.1.i.i, %28 ], [ %11, %.lr.ph.i.preheader.i ] + %.sroa.06.017.i.i = phi i64 [ %.sroa.06.1.i.i, %28 ], [ 0, %.lr.ph.i.preheader.i ] + %14 = sub nsw i64 %.sroa.02.018.i.i, %.sroa.06.017.i.i + %15 = sdiv i64 %14, 2 + %16 = add i64 %15, %.sroa.06.017.i.i + %.not12.i.i = icmp ult i64 %16, %.val1.i + br i1 %.not12.i.i, label %18, label %17 -16: ; preds = %.lr.ph.i.i +17: ; preds = %.lr.ph.i.i tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4768d052527bd36a73bfd89d5da159b4.18) #19, !noalias !69 unreachable -17: ; preds = %.lr.ph.i.i - %18 = getelementptr inbounds double, ptr %.val.i, i64 %15 - %19 = load double, ptr %18, align 8, !alias.scope !66, !noalias !63, !noundef !4 - %20 = fcmp ogt double %19, %9 - br i1 %20, label %23, label %21 - -21: ; preds = %17 - %22 = fcmp olt double %19, %9 - br i1 %22, label %25, label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit" - -23: ; preds = %17 - %24 = add i64 %15, -1 - br label %27 - -25: ; preds = %21 - %26 = tail call i64 @llvm.sadd.sat.i64(i64 %15, i64 1) - br label %27 - -27: ; preds = %25, %23 - %.sroa.06.1.i.i = phi i64 [ %.sroa.06.017.i.i, %23 ], [ %26, %25 ] - %.sroa.02.1.i.i = phi i64 [ %24, %23 ], [ %.sroa.02.018.i.i, %25 ] +18: ; preds = %.lr.ph.i.i + %19 = getelementptr inbounds nuw double, ptr %.val.i, i64 %16 + %20 = load double, ptr %19, align 8, !alias.scope !66, !noalias !63, !noundef !4 + %21 = fcmp ogt double %20, %9 + br i1 %21, label %24, label %22 + +22: ; preds = %18 + %23 = fcmp olt double %20, %9 + br i1 %23, label %26, label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit" + +24: ; preds = %18 + %25 = add nsw i64 %16, -1 + br label %28 + +26: ; preds = %22 + %27 = tail call i64 @llvm.sadd.sat.i64(i64 %16, i64 1) + br label %28 + +28: ; preds = %26, %24 + %.sroa.06.1.i.i = phi i64 [ %.sroa.06.017.i.i, %24 ], [ %27, %26 ] + %.sroa.02.1.i.i = phi i64 [ %25, %24 ], [ %.sroa.02.018.i.i, %26 ] %.not.i2.i = icmp sgt i64 %.sroa.06.1.i.i, %.sroa.02.1.i.i br i1 %.not.i2.i, label %._crit_edge.loopexit.i.i, label %.lr.ph.i.i -"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit": ; preds = %21, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i, %._crit_edge.loopexit.i.i - %.sroa.0.0.i.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i ], [ %12, %._crit_edge.loopexit.i.i ], [ %15, %21 ] - %28 = uitofp i64 %.sroa.0.0.i.i to double - ret double %28 +"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit": ; preds = %22, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i, %._crit_edge.loopexit.i.i + %.sroa.0.0.i.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i ], [ %13, %._crit_edge.loopexit.i.i ], [ %16, %22 ] + %29 = uitofp nneg i64 %.sroa.0.0.i.i to double + ret double %29 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable diff --git a/bench/stb/optimized/stb_hexwave.ll b/bench/stb/optimized/stb_hexwave.ll index a9fccd62e90..2e472ecf83d 100644 --- a/bench/stb/optimized/stb_hexwave.ll +++ b/bench/stb/optimized/stb_hexwave.ll @@ -255,8 +255,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 %32 = getelementptr inbounds nuw i8, ptr %28, i64 4 store float %31, ptr %32, align 4, !tbaa !29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 8 - br i1 %exitcond.not, label %.loopexit83, label %.preheader84, !llvm.loop !34 + %.not113 = icmp eq i64 %indvars.iv.next, 8 + br i1 %.not113, label %.loopexit83, label %.preheader84, !llvm.loop !34 .preheader82: ; preds = %3, %.preheader82 %indvars.iv93 = phi i64 [ %indvars.iv.next94, %.preheader82 ], [ 4, %3 ] @@ -271,8 +271,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 %40 = getelementptr inbounds nuw i8, ptr %33, i64 4 store float %39, ptr %40, align 4, !tbaa !29 %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1 - %exitcond96.not = icmp eq i64 %indvars.iv.next94, 8 - br i1 %exitcond96.not, label %.loopexit83.loopexit, label %.preheader82, !llvm.loop !35 + %.not114 = icmp eq i64 %indvars.iv.next94, 8 + br i1 %.not114, label %.loopexit83.loopexit, label %.preheader82, !llvm.loop !35 .loopexit83.loopexit: ; preds = %.preheader82 %.pre.pre = load float, ptr %0, align 4, !tbaa !27 @@ -302,8 +302,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 50: ; preds = %43, %49 %51 = phi float [ %46, %43 ], [ %44, %49 ] - %exitcond100.not = icmp eq i64 %indvars.iv.next98, 8 - br i1 %exitcond100.not, label %52, label %43, !llvm.loop !36 + %.not115 = icmp eq i64 %indvars.iv.next98, 8 + br i1 %.not115, label %52, label %43, !llvm.loop !36 52: ; preds = %50 %53 = load float, ptr %41, align 4, !tbaa !27 @@ -323,8 +323,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 59: ; preds = %.preheader, %58 %indvars.iv.next102 = add nuw nsw i64 %indvars.iv101, 1 - %exitcond104.not = icmp eq i64 %indvars.iv.next102, 9 - br i1 %exitcond104.not, label %.loopexit.preheader, label %.preheader, !llvm.loop !37 + %.not116 = icmp eq i64 %indvars.iv.next102, 9 + br i1 %.not116, label %.loopexit.preheader, label %.preheader, !llvm.loop !37 .loopexit.preheader: ; preds = %59, %52 br label %.loopexit @@ -353,8 +353,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 %.sink = phi float [ %72, %65 ], [ 0.000000e+00, %.loopexit ] %74 = getelementptr inbounds nuw i8, ptr %63, i64 8 store float %.sink, ptr %74, align 4, !tbaa !38 - %exitcond108.not = icmp eq i64 %indvars.iv.next106, 8 - br i1 %exitcond108.not, label %75, label %.loopexit, !llvm.loop !39 + %.not117 = icmp eq i64 %indvars.iv.next106, 8 + br i1 %.not117, label %75, label %.loopexit, !llvm.loop !39 75: ; preds = %73 store float 1.000000e+00, ptr %41, align 4, !tbaa !27 @@ -399,8 +399,8 @@ define void @hexwave_generate_samples(ptr noundef captures(none) %0, i32 noundef 23: ; preds = %.preheader180 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 6 - br i1 %exitcond.not, label %24, label %.preheader180, !llvm.loop !41 + %.not266 = icmp eq i64 %indvars.iv.next, 6 + br i1 %.not266, label %24, label %.preheader180, !llvm.loop !41 24: ; preds = %.preheader180, %23 %.0124.lcssa = phi i64 [ %indvars.iv, %.preheader180 ], [ 6, %23 ] @@ -503,7 +503,7 @@ hex_blamp.exit: ; preds = %.lr.ph.i.i, %30, %2 .preheader205: ; preds = %77, %80 %indvars.iv209 = phi i64 [ %indvars.iv.next210, %80 ], [ 0, %77 ] %exitcond212.not = icmp eq i64 %indvars.iv209, 8 - br i1 %exitcond212.not, label %.split.loop.exit278, label %80 + br i1 %exitcond212.not, label %.split.loop.exit279, label %80 80: ; preds = %.preheader205 %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 @@ -514,9 +514,9 @@ hex_blamp.exit: ; preds = %.lr.ph.i.i, %30, %2 .split.loop.exit: ; preds = %80 %84 = trunc nuw nsw i64 %indvars.iv209 to i32 - br label %.split.loop.exit278 + br label %.split.loop.exit279 -.split.loop.exit278: ; preds = %.preheader205, %.split.loop.exit +.split.loop.exit279: ; preds = %.preheader205, %.split.loop.exit %.1125.lcssa = phi i32 [ %84, %.split.loop.exit ], [ 8, %.preheader205 ] %85 = load i32, ptr @hexblep, align 8 %86 = load i32, ptr getelementptr inbounds nuw (i8, ptr @hexblep, i64 4), align 4 @@ -528,10 +528,10 @@ hex_blamp.exit: ; preds = %.lr.ph.i.i, %30, %2 %invariant.gep = getelementptr float, ptr %.mux, i64 %76 br label %hex_blamp.exit178 -hex_blamp.exit178: ; preds = %hex_blamp.exit178.backedge, %.split.loop.exit278 - %.2130 = phi float [ %.0128195, %.split.loop.exit278 ], [ %.2130.be, %hex_blamp.exit178.backedge ] - %.2126 = phi i32 [ %.1125.lcssa, %.split.loop.exit278 ], [ %.2126.be, %hex_blamp.exit178.backedge ] - %.0120 = phi i32 [ 0, %.split.loop.exit278 ], [ %.1.lcssa, %hex_blamp.exit178.backedge ] +hex_blamp.exit178: ; preds = %hex_blamp.exit178.backedge, %.split.loop.exit279 + %.2130 = phi float [ %.0128195, %.split.loop.exit279 ], [ %.2130.be, %hex_blamp.exit178.backedge ] + %.2126 = phi i32 [ %.1125.lcssa, %.split.loop.exit279 ], [ %.2126.be, %hex_blamp.exit178.backedge ] + %.0120 = phi i32 [ 0, %.split.loop.exit279 ], [ %.1.lcssa, %hex_blamp.exit178.backedge ] %90 = add nsw i32 %.2126, 1 %91 = sext i32 %90 to i64 %92 = getelementptr inbounds %struct.hexvert, ptr %5, i64 %91 @@ -608,9 +608,9 @@ hex_blamp.exit178: ; preds = %hex_blamp.exit178.b %136 = sitofp i32 %spec.select.i.i148 to float %137 = fneg float %136 %138 = tail call float @llvm.fmuladd.f32(float %120, float %87, float %137) - br i1 %89, label %.lr.ph.i.i151, label %hex_blep.exit.thread271 + br i1 %89, label %.lr.ph.i.i151, label %hex_blep.exit.thread272 -hex_blep.exit.thread271: ; preds = %117 +hex_blep.exit.thread272: ; preds = %117 %139 = getelementptr inbounds float, ptr %.mux, i64 %116 br label %hex_blamp.exit162 @@ -672,7 +672,7 @@ hex_blep.exit: ; preds = %._crit_edge %168 = phi ptr [ %156, %hex_blep.exit.thread ], [ %165, %hex_blep.exit ] %.pn = phi float [ %154, %hex_blep.exit.thread ], [ %163, %hex_blep.exit ] %169 = phi ptr [ %149, %hex_blep.exit.thread ], [ %158, %hex_blep.exit ] - %.pre-phi251270 = phi float [ %138, %hex_blep.exit.thread ], [ %.pre250, %hex_blep.exit ] + %.pre-phi251271 = phi float [ %138, %hex_blep.exit.thread ], [ %.pre250, %hex_blep.exit ] %170 = fmul float %10, %.pn %171 = getelementptr inbounds float, ptr %.mux, i64 %116 br label %.lr.ph.i.i158 @@ -684,7 +684,7 @@ hex_blep.exit: ; preds = %._crit_edge %174 = getelementptr inbounds nuw float, ptr %167, i64 %indvars.iv.i.i159 %175 = load float, ptr %174, align 4, !tbaa !16 %176 = fsub float %175, %173 - %177 = tail call float @llvm.fmuladd.f32(float %176, float %.pre-phi251270, float %173) + %177 = tail call float @llvm.fmuladd.f32(float %176, float %.pre-phi251271, float %173) %178 = getelementptr inbounds nuw float, ptr %171, i64 %indvars.iv.i.i159 %179 = load float, ptr %178, align 4, !tbaa !16 %180 = tail call float @llvm.fmuladd.f32(float %170, float %177, float %179) @@ -693,8 +693,8 @@ hex_blep.exit: ; preds = %._crit_edge %exitcond.not.i.i161 = icmp eq i64 %indvars.iv.next.i.i160, %wide.trip.count.i.i150 br i1 %exitcond.not.i.i161, label %hex_blamp.exit162, label %.lr.ph.i.i158, !llvm.loop !23 -hex_blamp.exit162: ; preds = %.lr.ph.i.i158, %hex_blep.exit.thread271, %hex_blep.exit - %181 = phi ptr [ %158, %hex_blep.exit ], [ %139, %hex_blep.exit.thread271 ], [ %169, %.lr.ph.i.i158 ] +hex_blamp.exit162: ; preds = %.lr.ph.i.i158, %hex_blep.exit.thread272, %hex_blep.exit + %181 = phi ptr [ %158, %hex_blep.exit ], [ %139, %hex_blep.exit.thread272 ], [ %169, %.lr.ph.i.i158 ] %182 = icmp eq i32 %90, 8 br i1 %182, label %183, label %hex_blamp.exit178.backedge @@ -812,17 +812,17 @@ hex_blamp.exit178.backedge: ; preds = %.lr.ph.i.i174, %218 %247 = sub nsw i32 %1, %245 %248 = sext i32 %247 to i64 %wide.trip.count = zext nneg i32 %245 to i64 - %invariant.gep280 = getelementptr float, ptr %0, i64 %248 + %invariant.gep281 = getelementptr float, ptr %0, i64 %248 br label %249 249: ; preds = %.lr.ph198, %249 %indvars.iv216 = phi i64 [ 0, %.lr.ph198 ], [ %indvars.iv.next217, %249 ] %250 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv216 %251 = load float, ptr %250, align 4, !tbaa !16 - %gep281 = getelementptr float, ptr %invariant.gep280, i64 %indvars.iv216 - %252 = load float, ptr %gep281, align 4, !tbaa !16 + %gep282 = getelementptr float, ptr %invariant.gep281, i64 %indvars.iv216 + %252 = load float, ptr %gep282, align 4, !tbaa !16 %253 = fadd float %251, %252 - store float %253, ptr %gep281, align 4, !tbaa !16 + store float %253, ptr %gep282, align 4, !tbaa !16 %indvars.iv.next217 = add nuw nsw i64 %indvars.iv216, 1 %exitcond219.not = icmp eq i64 %indvars.iv.next217, %wide.trip.count br i1 %exitcond219.not, label %._crit_edge199, label %249, !llvm.loop !45 @@ -839,9 +839,9 @@ hex_blamp.exit178.backedge: ; preds = %.lr.ph.i.i174, %218 br label %257 257: ; preds = %._crit_edge202, %._crit_edge199 - %.sink284 = phi i64 [ %57, %._crit_edge202 ], [ %254, %._crit_edge199 ] + %.sink285 = phi i64 [ %57, %._crit_edge202 ], [ %254, %._crit_edge199 ] %.sink = getelementptr inbounds nuw i8, ptr %2, i64 44 - %258 = getelementptr inbounds float, ptr %6, i64 %.sink284 + %258 = getelementptr inbounds float, ptr %6, i64 %.sink285 %259 = sext i32 %9 to i64 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sink, ptr nonnull align 4 %258, i64 %259, i1 false) store float %.1129, ptr %2, align 4, !tbaa !40 @@ -960,8 +960,8 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ %57 = fmul double %56, 6.250000e-02 %58 = fadd double %.1120144.us, %57 %59 = add nuw nsw i32 %.0121143.us, 1 - %exitcond178.not = icmp eq i32 %59, 16 - br i1 %exitcond178.not, label %.split.us, label %.preheader142.split.us, !llvm.loop !46 + %.not217 = icmp eq i32 %59, 16 + br i1 %.not217, label %.split.us, label %.preheader142.split.us, !llvm.loop !46 .lr.ph: ; preds = %.split.us %60 = zext nneg i32 %8 to i64 @@ -994,8 +994,8 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ %79 = fmul double %78, 6.250000e-02 %80 = fadd double %.1120144, %79 %81 = add nuw nsw i32 %.0121143, 1 - %exitcond.not = icmp eq i32 %81, 16 - br i1 %exitcond.not, label %.split.us, label %.preheader142.split, !llvm.loop !46 + %.not216 = icmp eq i32 %81, 16 + br i1 %.not216, label %.split.us, label %.preheader142.split, !llvm.loop !46 .split.us: ; preds = %.preheader142.split, %.preheader142.split.us %.us-phi = phi double [ %58, %.preheader142.split.us ], [ %80, %.preheader142.split ] @@ -1087,11 +1087,11 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ %118 = mul i32 %1, %117 %119 = add i32 %128, %118 %120 = sitofp i32 %119 to float - %gep222 = getelementptr float, ptr %invariant.gep221, i64 %indvars.iv202 - %121 = load float, ptr %gep222, align 4, !tbaa !16 + %gep224 = getelementptr float, ptr %invariant.gep223, i64 %indvars.iv202 + %121 = load float, ptr %gep224, align 4, !tbaa !16 %122 = fneg float %120 %123 = tail call float @llvm.fmuladd.f32(float %122, float %113, float %121) - store float %123, ptr %gep222, align 4, !tbaa !16 + store float %123, ptr %gep224, align 4, !tbaa !16 %indvars.iv.next203 = add nsw i64 %indvars.iv202, 1 %exitcond206.not = icmp eq i64 %indvars.iv.next203, %115 br i1 %exitcond206.not, label %._crit_edge.us164, label %116, !llvm.loop !51 @@ -1109,7 +1109,7 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ .preheader.us: ; preds = %124 %127 = trunc nuw nsw i64 %indvars.iv207 to i32 %128 = sub i32 %127, %5 - %invariant.gep221 = getelementptr float, ptr %.0117, i64 %129 + %invariant.gep223 = getelementptr float, ptr %.0117, i64 %129 br label %116 .lr.ph158.us: ; preds = %._crit_edge.us164, %.preheader137.us.preheader diff --git a/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll b/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll index 0817f115c75..f2b3c917eed 100644 --- a/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll +++ b/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll @@ -2135,7 +2135,7 @@ define void @_RINvMsi_NtCs68wO5nsWeTG_5alloc3vecINtB6_3VecTNtNtCseG2FYMysgNb_3wa ; Function Attrs: nonlazybind uwtable define void @_RINvMsi_NtCs68wO5nsWeTG_5alloc3vecINtB6_3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtBJ_5TokenEE14extend_trustedINtNtCs1LoaDTb72WA_4core6option8IntoIterBG_EEBL_(ptr noalias noundef align 8 dereferenceable(24) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %.val = load i64, ptr %1, align 8, !range !54, !noundef !4 - %3 = icmp ne i64 %.val, 2 + %3 = icmp samesign ult i64 %.val, 2 %4 = zext i1 %3 to i64 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i64, ptr %5, align 8, !noundef !4 @@ -6206,7 +6206,7 @@ define void @_RNvXs_NtNtCs68wO5nsWeTG_5alloc3vec11spec_extendINtB6_3VecTNtNtCseG tail call void @llvm.experimental.noalias.scope.decl(metadata !1489) tail call void @llvm.experimental.noalias.scope.decl(metadata !1492) %.val.i = load i64, ptr %1, align 8, !range !54, !alias.scope !1492, !noalias !1489, !noundef !4 - %3 = icmp ne i64 %.val.i, 2 + %3 = icmp samesign ult i64 %.val.i, 2 %4 = zext i1 %3 to i64 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i64, ptr %5, align 8, !alias.scope !1489, !noalias !1492, !noundef !4 @@ -7665,7 +7665,7 @@ define void @_RNvXs_NtNtCs68wO5nsWeTG_5alloc3vec21spec_from_iter_nestedINtB6_3Ve %4 = alloca [24 x i8], align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) %.val = load i64, ptr %1, align 8, !range !54, !noundef !4 - %5 = icmp ne i64 %.val, 2 + %5 = icmp samesign ult i64 %.val, 2 %6 = zext i1 %5 to i64 call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtBP_5TokenEE15try_allocate_inBR_(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %3, i64 noundef %6, i1 noundef zeroext false) @@ -7674,7 +7674,7 @@ define void @_RNvXs_NtNtCs68wO5nsWeTG_5alloc3vec21spec_from_iter_nestedINtB6_3Ve %8 = getelementptr inbounds nuw i8, ptr %3, i64 8 %9 = load i64, ptr %8, align 8, !range !173, !noundef !4 %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - br i1 %trunc2, label %23, label %11 + br i1 %trunc2, label %25, label %11 11: ; preds = %2 %12 = load ptr, ptr %10, align 8, !nonnull !4, !noundef !4 @@ -7685,61 +7685,63 @@ define void @_RNvXs_NtNtCs68wO5nsWeTG_5alloc3vec21spec_from_iter_nestedINtB6_3Ve %14 = getelementptr inbounds nuw i8, ptr %4, i64 16 store i64 0, ptr %14, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 - %15 = icmp samesign ult i64 %9, %6 - br i1 %15, label %22, label %16 - -16: ; preds = %.noexc, %11 - %17 = phi i64 [ %.pre.i.i, %.noexc ], [ 0, %11 ] - %18 = icmp eq i64 %.val, 2 - br i1 %18, label %32, label %.lr.ph.split.us.i.i.i.i - -.lr.ph.split.us.i.i.i.i: ; preds = %16 - %19 = load ptr, ptr %13, align 8, !alias.scope !1817, !noalias !1822, !nonnull !4, !noundef !4 - %20 = getelementptr inbounds { { i64, [2 x i64] }, ptr }, ptr %19, i64 %17 - store i64 %.val, ptr %20, align 8, !noalias !1825 - %.sroa.4.0..sroa_idx.us.i.i.i.i = getelementptr inbounds nuw i8, ptr %20, i64 8 + %15 = icmp samesign ult i64 %.val, 2 + %16 = icmp eq i64 %9, 0 + %17 = and i1 %16, %15 + br i1 %17, label %24, label %18 + +18: ; preds = %11 + %19 = icmp eq i64 %.val, 2 + br i1 %19, label %34, label %.lr.ph.split.us.i.i.i.i + +.lr.ph.split.us.i.i.i.i: ; preds = %.thread, %18 + %20 = phi i64 [ %.pre.i.i, %.thread ], [ 0, %18 ] + %21 = load ptr, ptr %13, align 8, !alias.scope !1817, !noalias !1822, !nonnull !4, !noundef !4 + %22 = getelementptr inbounds { { i64, [2 x i64] }, ptr }, ptr %21, i64 %20 + store i64 %.val, ptr %22, align 8, !noalias !1825 + %.sroa.4.0..sroa_idx.us.i.i.i.i = getelementptr inbounds nuw i8, ptr %22, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx.us.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx, i64 24, i1 false) - %21 = add i64 %17, 1 - br label %32 + %23 = add i64 %20, 1 + br label %34 -22: ; preds = %11 +24: ; preds = %11 invoke void @_RINvNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB8_6RawVecppE7reserve21do_reserve_and_handleTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1q_5TokenENtNtBa_5alloc6GlobalEB1s_(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0, i64 noundef 1) - to label %.noexc unwind label %25 + to label %.thread unwind label %27 -.noexc: ; preds = %22 +.thread: ; preds = %24 %.pre.i.i = load i64, ptr %14, align 8, !alias.scope !1817, !noalias !1822 - br label %16 + br label %.lr.ph.split.us.i.i.i.i -23: ; preds = %2 - %24 = load i64, ptr %10, align 8 - tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %9, i64 %24) #22 +25: ; preds = %2 + %26 = load i64, ptr %10, align 8 + tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %9, i64 %26) #22 unreachable -25: ; preds = %22 - %26 = landingpad { ptr, i32 } +27: ; preds = %24 + %28 = landingpad { ptr, i32 } cleanup call void @llvm.experimental.noalias.scope.decl(metadata !1836) call void @llvm.experimental.noalias.scope.decl(metadata !1839) call void @llvm.experimental.noalias.scope.decl(metadata !1842) - %27 = load i64, ptr %4, align 8, !alias.scope !1845, !noalias !1848, !noundef !4 - %28 = icmp eq i64 %27, 0 - br i1 %28, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit, label %29 - -29: ; preds = %25 - %30 = shl nuw i64 %27, 5 - %31 = load ptr, ptr %13, align 8, !alias.scope !1845, !noalias !1848, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %30, i64 noundef 8) #23, !noalias !1850 + %29 = load i64, ptr %4, align 8, !alias.scope !1845, !noalias !1848, !noundef !4 + %30 = icmp eq i64 %29, 0 + br i1 %30, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit, label %31 + +31: ; preds = %27 + %32 = shl nuw i64 %29, 5 + %33 = load ptr, ptr %13, align 8, !alias.scope !1845, !noalias !1848, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %32, i64 noundef 8) #23, !noalias !1850 br label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit -32: ; preds = %.lr.ph.split.us.i.i.i.i, %16 - %.val3.i.i.i.i = phi i64 [ %21, %.lr.ph.split.us.i.i.i.i ], [ %17, %16 ] +34: ; preds = %.lr.ph.split.us.i.i.i.i, %18 + %.val3.i.i.i.i = phi i64 [ %23, %.lr.ph.split.us.i.i.i.i ], [ 0, %18 ] store i64 %.val3.i.i.i.i, ptr %14, align 8, !alias.scope !1817, !noalias !1851 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit: ; preds = %29, %25 - resume { ptr, i32 } %26 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit: ; preds = %31, %27 + resume { ptr, i32 } %28 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll index 0f97396be4e..6849dcedccd 100644 --- a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll +++ b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll @@ -631,17 +631,15 @@ define hidden void @_RNvMs_NtCs8mTrBI1stz4_15turborepo_vt1004cellNtB4_4Cell3set( %34 = lshr i8 %31, %33 %.fr = freeze i8 %34 %35 = and i8 %.fr, 3 - %36 = icmp ne i8 %35, 3 - %37 = icmp samesign ugt i8 %35, 1 - %38 = and i1 %36, %37 - %39 = select i1 %38, i8 -127, i8 1 + %36 = icmp eq i8 %35, 2 + %37 = select i1 %36, i8 -127, i8 1 br label %.thread .thread: ; preds = %3, %29 - %.sink.i = phi i8 [ %39, %29 ], [ 1, %3 ] + %.sink.i = phi i8 [ %37, %29 ], [ 1, %3 ] store i8 %.sink.i, ptr %4, align 2, !alias.scope !32 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 25 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %40, ptr noundef nonnull align 1 dereferenceable(9) %2, i64 9, i1 false) + %38 = getelementptr inbounds nuw i8, ptr %0, i64 25 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %38, ptr noundef nonnull align 1 dereferenceable(9) %2, i64 9, i1 false) ret void } diff --git a/bench/uv-rs/optimized/60j53jvfo3q6evfl1azfnvp1c.ll b/bench/uv-rs/optimized/60j53jvfo3q6evfl1azfnvp1c.ll index e34ad30370d..2b24b3fc254 100644 --- a/bench/uv-rs/optimized/60j53jvfo3q6evfl1azfnvp1c.ll +++ b/bench/uv-rs/optimized/60j53jvfo3q6evfl1azfnvp1c.ll @@ -1124,10 +1124,9 @@ common.resume: ; preds = %97, %87, %67, %.bod call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(200) %.sroa.11, ptr noundef nonnull align 8 dereferenceable(200) %.sroa.237.152..sroa_idx, i64 200, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.632) %62 = load i64, ptr %25, align 8, !range !130, !alias.scope !147, !noundef !3 - %63 = add i64 %62, 9223372036854775800 - %64 = icmp ugt i64 %63, 2 - %cond4.i = icmp eq i64 %63, 1 - %cond.i = or i1 %64, %cond4.i + %63 = icmp ult i64 %62, -9223372036854775800 + %64 = icmp eq i64 %62, -9223372036854775799 + %cond.i = or i1 %63, %64 br i1 %cond.i, label %66, label %.invoke.i .invoke.i: ; preds = %61 @@ -1192,10 +1191,9 @@ common.resume: ; preds = %97, %87, %67, %.bod call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.632) %82 = load i64, ptr %25, align 8, !range !130, !alias.scope !155, !noundef !3 - %83 = add i64 %82, 9223372036854775800 - %84 = icmp ugt i64 %83, 2 - %cond4.i66 = icmp eq i64 %83, 1 - %cond.i67 = or i1 %84, %cond4.i66 + %83 = icmp ult i64 %82, -9223372036854775800 + %84 = icmp eq i64 %82, -9223372036854775799 + %cond.i67 = or i1 %83, %84 br i1 %cond.i67, label %86, label %.invoke.i68 .invoke.i68: ; preds = %80 diff --git a/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll b/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll index a6e8a6429b1..9c27b30b4bb 100644 --- a/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll +++ b/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll @@ -430,48 +430,50 @@ define hidden { ptr, i64 } @"_ZN44_$LT$$RF$T$u20$as$u20$core..error..Error$GT$11 define hidden { ptr, ptr } @"_ZN44_$LT$$RF$T$u20$as$u20$core..error..Error$GT$5cause17h3a0fb851c60f504eE"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #4 { %2 = load ptr, ptr %0, align 8, !nonnull !3, !align !6, !noundef !3 %3 = load i8, ptr %2, align 1, !range !10, !alias.scope !14, !noundef !3 - %4 = add nsw i8 %3, -3 - %5 = icmp ugt i8 %4, 2 - %6 = icmp eq i8 %4, 1 - %7 = or i1 %5, %6 - br i1 %7, label %8, label %_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit + switch i8 %3, label %_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit [ + i8 4, label %4 + i8 2, label %4 + i8 1, label %4 + i8 0, label %4 + ] -8: ; preds = %1 - %9 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) - %10 = extractvalue { ptr, ptr } %9, 0 - %11 = extractvalue { ptr, ptr } %9, 1 +4: ; preds = %1, %1, %1, %1 + %5 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) + %6 = extractvalue { ptr, ptr } %5, 0 + %7 = extractvalue { ptr, ptr } %5, 1 br label %_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit -_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit: ; preds = %1, %8 - %.sroa.4.0.i.i = phi ptr [ %11, %8 ], [ undef, %1 ] - %.sroa.0.0.i.i = phi ptr [ %10, %8 ], [ null, %1 ] - %12 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i.i, 0 - %13 = insertvalue { ptr, ptr } %12, ptr %.sroa.4.0.i.i, 1 - ret { ptr, ptr } %13 +_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit: ; preds = %1, %4 + %.sroa.4.0.i.i = phi ptr [ %7, %4 ], [ undef, %1 ] + %.sroa.0.0.i.i = phi ptr [ %6, %4 ], [ null, %1 ] + %8 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i.i, 0 + %9 = insertvalue { ptr, ptr } %8, ptr %.sroa.4.0.i.i, 1 + ret { ptr, ptr } %9 } ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @"_ZN44_$LT$$RF$T$u20$as$u20$core..error..Error$GT$6source17h6c96b82e15576d02E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #4 { %2 = load ptr, ptr %0, align 8, !nonnull !3, !align !6, !noundef !3 %3 = load i8, ptr %2, align 1, !range !10, !alias.scope !19, !noundef !3 - %4 = add nsw i8 %3, -3 - %5 = icmp ugt i8 %4, 2 - %6 = icmp eq i8 %4, 1 - %7 = or i1 %5, %6 - br i1 %7, label %8, label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" + switch i8 %3, label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" [ + i8 4, label %4 + i8 2, label %4 + i8 1, label %4 + i8 0, label %4 + ] -8: ; preds = %1 - %9 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) - %10 = extractvalue { ptr, ptr } %9, 0 - %11 = extractvalue { ptr, ptr } %9, 1 +4: ; preds = %1, %1, %1, %1 + %5 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) + %6 = extractvalue { ptr, ptr } %5, 0 + %7 = extractvalue { ptr, ptr } %5, 1 br label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" -"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %8 - %.sroa.4.0.i = phi ptr [ %11, %8 ], [ undef, %1 ] - %.sroa.0.0.i = phi ptr [ %10, %8 ], [ null, %1 ] - %12 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 - %13 = insertvalue { ptr, ptr } %12, ptr %.sroa.4.0.i, 1 - ret { ptr, ptr } %13 +"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %4 + %.sroa.4.0.i = phi ptr [ %7, %4 ], [ undef, %1 ] + %.sroa.0.0.i = phi ptr [ %6, %4 ], [ null, %1 ] + %8 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 + %9 = insertvalue { ptr, ptr } %8, ptr %.sroa.4.0.i, 1 + ret { ptr, ptr } %9 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -837,24 +839,25 @@ define internal { ptr, i64 } @_ZN4core5error5Error11description17hc5588fdb99178b ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN4core5error5Error5cause17h08cc55bf3a145667E(ptr noalias noundef readonly align 1 dereferenceable(1) %0) unnamed_addr #4 { %2 = load i8, ptr %0, align 1, !range !10, !alias.scope !92, !noundef !3 - %3 = add nsw i8 %2, -3 - %4 = icmp ugt i8 %3, 2 - %5 = icmp eq i8 %3, 1 - %6 = or i1 %4, %5 - br i1 %6, label %7, label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" + switch i8 %2, label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" [ + i8 4, label %3 + i8 2, label %3 + i8 1, label %3 + i8 0, label %3 + ] -7: ; preds = %1 - %8 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %0) - %9 = extractvalue { ptr, ptr } %8, 0 - %10 = extractvalue { ptr, ptr } %8, 1 +3: ; preds = %1, %1, %1, %1 + %4 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %0) + %5 = extractvalue { ptr, ptr } %4, 0 + %6 = extractvalue { ptr, ptr } %4, 1 br label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" -"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %7 - %.sroa.4.0.i = phi ptr [ %10, %7 ], [ undef, %1 ] - %.sroa.0.0.i = phi ptr [ %9, %7 ], [ null, %1 ] - %11 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 - %12 = insertvalue { ptr, ptr } %11, ptr %.sroa.4.0.i, 1 - ret { ptr, ptr } %12 +"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %3 + %.sroa.4.0.i = phi ptr [ %6, %3 ], [ undef, %1 ] + %.sroa.0.0.i = phi ptr [ %5, %3 ], [ null, %1 ] + %7 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 + %8 = insertvalue { ptr, ptr } %7, ptr %.sroa.4.0.i, 1 + ret { ptr, ptr } %8 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/wireshark/optimized/iana-ip.ll b/bench/wireshark/optimized/iana-ip.ll index 7447f8d194b..b9d31d40385 100644 --- a/bench/wireshark/optimized/iana-ip.ll +++ b/bench/wireshark/optimized/iana-ip.ll @@ -52,9 +52,9 @@ target triple = "x86_64-pc-linux-gnu" define ptr @ws_iana_ipv4_special_block_lookup(i32 noundef %0) local_unnamed_addr #0 { br label %.lr.ph.i -.lr.ph.i: ; preds = %15, %1 - %.01621.i = phi i64 [ %.1.i, %15 ], [ 0, %1 ] - %.01720.i = phi i64 [ %.118.i, %15 ], [ 24, %1 ] +.lr.ph.i: ; preds = %16, %1 + %.01621.i = phi i64 [ %.1.i, %16 ], [ 0, %1 ] + %.01720.i = phi i64 [ %.118.i, %16 ], [ 24, %1 ] %2 = add i64 %.01720.i, %.01621.i %3 = lshr i64 %2, 1 %4 = mul i64 %3, 56 @@ -65,24 +65,24 @@ define ptr @ws_iana_ipv4_special_block_lookup(i32 noundef %0) local_unnamed_addr %9 = and i32 %8, %0 %10 = load i32, ptr %6, align 4 %11 = icmp ult i32 %9, %10 - br i1 %11, label %15, label %12 + br i1 %11, label %16, label %12 12: ; preds = %.lr.ph.i - %.not.i = icmp eq i32 %9, %10 - br i1 %.not.i, label %bsearch.exit, label %13 + %13 = icmp eq i32 %9, %10 + br i1 %13, label %bsearch.exit, label %14 -13: ; preds = %12 - %14 = add nuw i64 %3, 1 - br label %15 +14: ; preds = %12 + %15 = add nuw i64 %3, 1 + br label %16 -15: ; preds = %13, %.lr.ph.i - %.118.i = phi i64 [ %.01720.i, %13 ], [ %3, %.lr.ph.i ] - %.1.i = phi i64 [ %14, %13 ], [ %.01621.i, %.lr.ph.i ] - %16 = icmp ult i64 %.1.i, %.118.i - br i1 %16, label %.lr.ph.i, label %bsearch.exit, !llvm.loop !6 +16: ; preds = %14, %.lr.ph.i + %.118.i = phi i64 [ %.01720.i, %14 ], [ %3, %.lr.ph.i ] + %.1.i = phi i64 [ %15, %14 ], [ %.01621.i, %.lr.ph.i ] + %17 = icmp ult i64 %.1.i, %.118.i + br i1 %17, label %.lr.ph.i, label %bsearch.exit, !llvm.loop !6 -bsearch.exit: ; preds = %12, %15 - %.0.i = phi ptr [ null, %15 ], [ %5, %12 ] +bsearch.exit: ; preds = %12, %16 + %.0.i = phi ptr [ null, %16 ], [ %5, %12 ] ret ptr %.0.i } @@ -109,9 +109,9 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none %12 = add nuw nsw i32 %11, 1 %13 = zext nneg i32 %11 to i64 %14 = and i32 %8, 7 - br label %.lr.ph.i2 + br label %.lr.ph.i1 -.lr.ph.i2: ; preds = %19, %.lr.ph.preheader.i +.lr.ph.i1: ; preds = %19, %.lr.ph.preheader.i %indvars.iv = phi i64 [ %indvars.iv.next, %19 ], [ 0, %.lr.ph.preheader.i ] %15 = getelementptr i8, ptr %0, i64 %indvars.iv %16 = load i8, ptr %15, align 1 @@ -120,10 +120,10 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none %.not31.i = icmp eq i8 %16, %18 br i1 %.not31.i, label %19, label %compare_ipv6_block.exit -19: ; preds = %.lr.ph.i2 +19: ; preds = %.lr.ph.i1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not.i = icmp eq i64 %indvars.iv, %13 - br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i2, !llvm.loop !8 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i1, !llvm.loop !8 ._crit_edge.loopexit.i: ; preds = %19 %20 = zext nneg i32 %12 to i64 @@ -132,8 +132,8 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %.lr.ph.i %.024.lcssa.i = phi i32 [ %8, %.lr.ph.i ], [ %14, %._crit_edge.loopexit.i ] %.0.lcssa.i = phi i64 [ 0, %.lr.ph.i ], [ %20, %._crit_edge.loopexit.i ] - %.not.i1 = icmp eq i32 %.024.lcssa.i, 0 - br i1 %.not.i1, label %bsearch.exit, label %21 + %.not.i = icmp eq i32 %.024.lcssa.i, 0 + br i1 %.not.i, label %bsearch.exit, label %21 21: ; preds = %._crit_edge.i %22 = getelementptr i8, ptr %0, i64 %.0.lcssa.i @@ -147,15 +147,18 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none %.not30.i = icmp eq i8 %27, %29 br i1 %.not30.i, label %bsearch.exit, label %compare_ipv6_block.exit -compare_ipv6_block.exit: ; preds = %.lr.ph.i2, %21 - %.lcssa.sink = phi i8 [ %29, %21 ], [ %18, %.lr.ph.i2 ] - %.lcssa21.sink = phi i8 [ %27, %21 ], [ %16, %.lr.ph.i2 ] - %30 = icmp ult i8 %.lcssa21.sink, %.lcssa.sink - %31 = add nuw i64 %3, 1 - %.118.i = select i1 %30, i64 %3, i64 %.01720.i - %.1.i = select i1 %30, i64 %.01621.i, i64 %31 - %32 = icmp ult i64 %.1.i, %.118.i - br i1 %32, label %.lr.ph.i, label %bsearch.exit, !llvm.loop !6 +compare_ipv6_block.exit: ; preds = %.lr.ph.i1, %21 + %.lcssa.sink = phi i8 [ %29, %21 ], [ %18, %.lr.ph.i1 ] + %.lcssa19.sink = phi i8 [ %27, %21 ], [ %16, %.lr.ph.i1 ] + %30 = zext i8 %.lcssa.sink to i32 + %31 = zext i8 %.lcssa19.sink to i32 + %32 = sub nsw i32 %31, %30 + %33 = icmp ugt i32 %32, -256 + %34 = add nuw i64 %3, 1 + %.118.i = select i1 %33, i64 %3, i64 %.01720.i + %.1.i = select i1 %33, i64 %.01621.i, i64 %34 + %35 = icmp ult i64 %.1.i, %.118.i + br i1 %35, label %.lr.ph.i, label %bsearch.exit, !llvm.loop !6 bsearch.exit: ; preds = %21, %._crit_edge.i, %compare_ipv6_block.exit %.0.i = phi ptr [ null, %compare_ipv6_block.exit ], [ %5, %._crit_edge.i ], [ %5, %21 ] diff --git a/bench/wireshark/optimized/wscbor.ll b/bench/wireshark/optimized/wscbor.ll index fcf8a9afdeb..f791ee02272 100644 --- a/bench/wireshark/optimized/wscbor.ll +++ b/bench/wireshark/optimized/wscbor.ll @@ -239,7 +239,7 @@ wscbor_head_read.exit: ; preds = %32, %35, %.sink.spl store i32 %43, ptr %66, align 8 %67 = and i32 %60, 254 %switch = icmp eq i32 %67, 2 - br i1 %switch, label %68, label %163 + br i1 %switch, label %68, label %164 68: ; preds = %59 %.not117 = icmp eq i8 %62, 31 @@ -271,15 +271,15 @@ wscbor_get_length.exit: ; preds = %71, %74 %80 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef %79, i32 noundef %.0.i) %81 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %80, ptr %81, align 8 - br label %163 + br label %164 82: ; preds = %68 %83 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr null, ptr %83, align 8 br label %84 -84: ; preds = %150, %82 - %85 = phi i32 [ %151, %150 ], [ %43, %82 ] +84: ; preds = %151, %82 + %85 = phi i32 [ %152, %151 ], [ %43, %82 ] %86 = tail call noalias dereferenceable_or_null(32) ptr @wmem_alloc0(ptr noundef nonnull %0, i64 noundef 32) #8 %87 = load i32, ptr %2, align 4 store i32 %87, ptr %86, align 8 @@ -349,7 +349,7 @@ wscbor_head_read.exit126: ; preds = %96, %99, %.sink.spl 114: ; preds = %111 %115 = load i8, ptr %95, align 1 %116 = icmp eq i8 %115, 31 - br i1 %116, label %152, label %.thread130 + br i1 %116, label %153, label %.thread130 .thread130: ; preds = %111, %114 %117 = zext i8 %112 to i32 @@ -362,7 +362,7 @@ wscbor_head_read.exit126: ; preds = %96, %99, %.sink.spl %121 = load ptr, ptr %120, align 8 %122 = tail call ptr (ptr, ptr, ptr, ...) @wscbor_error_new(ptr noundef %121, ptr noundef nonnull @ei_cbor_wrong_type, ptr noundef nonnull @.str.6, i32 noundef %117, i32 noundef %118) tail call void @wmem_list_append(ptr noundef %14, ptr noundef %122) - br label %150 + br label %151 123: ; preds = %.thread130 %124 = getelementptr inbounds nuw i8, ptr %86, i64 24 @@ -381,7 +381,7 @@ wscbor_get_length.exit128.thread: ; preds = %123 store i32 %131, ptr %2, align 4 %132 = add i32 %106, 2147483647 store i32 %132, ptr %66, align 8 - br label %137 + br label %138 wscbor_get_length.exit128: ; preds = %123 %133 = trunc nuw nsw i64 %125 to i32 @@ -390,65 +390,65 @@ wscbor_get_length.exit128: ; preds = %123 store i32 %135, ptr %2, align 4 %136 = add i32 %106, %133 store i32 %136, ptr %66, align 8 - %.not120 = icmp eq i64 %125, 0 - br i1 %.not120, label %150, label %wscbor_get_length.exit128._crit_edge + %137 = icmp eq i64 %125, 0 + br i1 %137, label %151, label %wscbor_get_length.exit128._crit_edge wscbor_get_length.exit128._crit_edge: ; preds = %wscbor_get_length.exit128 %.pre = load ptr, ptr %10, align 8 - br label %137 + br label %138 -137: ; preds = %wscbor_get_length.exit128._crit_edge, %wscbor_get_length.exit128.thread - %138 = phi ptr [ %127, %wscbor_get_length.exit128.thread ], [ %.pre, %wscbor_get_length.exit128._crit_edge ] - %139 = phi i32 [ %132, %wscbor_get_length.exit128.thread ], [ %136, %wscbor_get_length.exit128._crit_edge ] +138: ; preds = %wscbor_get_length.exit128._crit_edge, %wscbor_get_length.exit128.thread + %139 = phi ptr [ %127, %wscbor_get_length.exit128.thread ], [ %.pre, %wscbor_get_length.exit128._crit_edge ] + %140 = phi i32 [ %132, %wscbor_get_length.exit128.thread ], [ %136, %wscbor_get_length.exit128._crit_edge ] %.0.i127133 = phi i32 [ 2147483647, %wscbor_get_length.exit128.thread ], [ %133, %wscbor_get_length.exit128._crit_edge ] - %140 = getelementptr inbounds nuw i8, ptr %138, i64 16 - %141 = load ptr, ptr %140, align 8 - %.not121 = icmp eq ptr %141, null - br i1 %.not121, label %142, label %144 - -142: ; preds = %137 - %143 = tail call ptr @tvb_new_composite() - store ptr %143, ptr %140, align 8 - br label %144 - -144: ; preds = %142, %137 - %145 = phi ptr [ %143, %142 ], [ %141, %137 ] - %146 = load i32, ptr %86, align 8 - %147 = load i32, ptr %89, align 4 - %148 = add i32 %147, %146 - %149 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef %148, i32 noundef %.0.i127133) - tail call void @tvb_composite_append(ptr noundef %145, ptr noundef %149) - br label %150 - -150: ; preds = %wscbor_get_length.exit128, %144, %119 - %151 = phi i32 [ %136, %wscbor_get_length.exit128 ], [ %139, %144 ], [ %106, %119 ] + %141 = getelementptr inbounds nuw i8, ptr %139, i64 16 + %142 = load ptr, ptr %141, align 8 + %.not121 = icmp eq ptr %142, null + br i1 %.not121, label %143, label %145 + +143: ; preds = %138 + %144 = tail call ptr @tvb_new_composite() + store ptr %144, ptr %141, align 8 + br label %145 + +145: ; preds = %143, %138 + %146 = phi ptr [ %144, %143 ], [ %142, %138 ] + %147 = load i32, ptr %86, align 8 + %148 = load i32, ptr %89, align 4 + %149 = add i32 %148, %147 + %150 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef %149, i32 noundef %.0.i127133) + tail call void @tvb_composite_append(ptr noundef %146, ptr noundef %150) + br label %151 + +151: ; preds = %wscbor_get_length.exit128, %145, %119 + %152 = phi i32 [ %136, %wscbor_get_length.exit128 ], [ %140, %145 ], [ %106, %119 ] tail call void @wmem_free(ptr noundef nonnull %0, ptr noundef %86) br label %84 -152: ; preds = %114 +153: ; preds = %114 tail call void @wmem_free(ptr noundef nonnull %0, ptr noundef %86) - %153 = load ptr, ptr %10, align 8 - %154 = getelementptr inbounds nuw i8, ptr %153, i64 8 - %155 = load ptr, ptr %154, align 8 - %156 = load ptr, ptr %153, align 8 - %157 = tail call noalias dereferenceable_or_null(16) ptr @wmem_alloc0(ptr noundef %156, i64 noundef 16) #8 - store ptr @ei_cbor_indef_string, ptr %157, align 8 - tail call void @wmem_list_append(ptr noundef %155, ptr noundef %157) - %158 = getelementptr inbounds nuw i8, ptr %153, i64 16 - %159 = load ptr, ptr %158, align 8 - %.not122 = icmp eq ptr %159, null - br i1 %.not122, label %161, label %160 - -160: ; preds = %152 - tail call void @tvb_composite_finalize(ptr noundef nonnull %159) - br label %163 - -161: ; preds = %152 - %162 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) - store ptr %162, ptr %158, align 8 - br label %163 - -163: ; preds = %59, %wscbor_get_length.exit, %161, %160 + %154 = load ptr, ptr %10, align 8 + %155 = getelementptr inbounds nuw i8, ptr %154, i64 8 + %156 = load ptr, ptr %155, align 8 + %157 = load ptr, ptr %154, align 8 + %158 = tail call noalias dereferenceable_or_null(16) ptr @wmem_alloc0(ptr noundef %157, i64 noundef 16) #8 + store ptr @ei_cbor_indef_string, ptr %158, align 8 + tail call void @wmem_list_append(ptr noundef %156, ptr noundef %158) + %159 = getelementptr inbounds nuw i8, ptr %154, i64 16 + %160 = load ptr, ptr %159, align 8 + %.not122 = icmp eq ptr %160, null + br i1 %.not122, label %162, label %161 + +161: ; preds = %153 + tail call void @tvb_composite_finalize(ptr noundef nonnull %160) + br label %164 + +162: ; preds = %153 + %163 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) + store ptr %163, ptr %159, align 8 + br label %164 + +164: ; preds = %59, %wscbor_get_length.exit, %162, %161 ret ptr %10 } @@ -1348,37 +1348,39 @@ switch.lookup: ; preds = %8 %20 = zext nneg i32 %switch.load to i64 %21 = tail call noalias ptr @wmem_alloc0(ptr noundef %19, i64 noundef %20) #8 %.not = icmp eq ptr %7, null - br i1 %.not, label %.preheader, label %22 + br i1 %.not, label %.lr.ph.preheader, label %22 22: ; preds = %switch.lookup %23 = load i64, ptr %7, align 8 - br label %.preheader + br label %.lr.ph.preheader -.preheader: ; preds = %switch.lookup, %22 - %.03133.ph = phi i64 [ %23, %22 ], [ 0, %switch.lookup ] - br label %26 +.lr.ph.preheader: ; preds = %22, %switch.lookup + %24 = phi i64 [ %23, %22 ], [ 0, %switch.lookup ] + %.03033 = add nsw i32 %switch.load, -1 + br label %.lr.ph -24: ; preds = %26 +._crit_edge: ; preds = %.lr.ph %25 = tail call ptr @tvb_new_child_real_data(ptr noundef %5, ptr noundef %21, i32 noundef %switch.load, i32 noundef %switch.load) br i1 %.not, label %33, label %31 -26: ; preds = %.preheader, %26 - %indvars.iv = phi i64 [ %indvars.iv.next, %26 ], [ %20, %.preheader ] - %.03133 = phi i64 [ %29, %26 ], [ %.03133.ph, %.preheader ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %27 = trunc i64 %.03133 to i8 - %28 = getelementptr i8, ptr %21, i64 %indvars.iv.next - store i8 %27, ptr %28, align 1 - %29 = lshr i64 %.03133, 8 - %30 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %30, label %26, label %24, !llvm.loop !13 - -31: ; preds = %24 +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.03035 = phi i32 [ %.030, %.lr.ph ], [ %.03033, %.lr.ph.preheader ] + %.03134 = phi i64 [ %29, %.lr.ph ], [ %24, %.lr.ph.preheader ] + %26 = trunc i64 %.03134 to i8 + %27 = zext nneg i32 %.03035 to i64 + %28 = getelementptr i8, ptr %21, i64 %27 + store i8 %26, ptr %28, align 1 + %29 = lshr i64 %.03134, 8 + %.030 = add nsw i32 %.03035, -1 + %30 = icmp ult i32 %.030, 8 + br i1 %30, label %.lr.ph, label %._crit_edge, !llvm.loop !13 + +31: ; preds = %._crit_edge %32 = load i64, ptr %7, align 8 br label %33 -33: ; preds = %24, %31 - %34 = phi i64 [ %32, %31 ], [ 0, %24 ] +33: ; preds = %._crit_edge, %31 + %34 = phi i64 [ %32, %31 ], [ 0, %._crit_edge ] %35 = tail call ptr @proto_tree_add_bitmask_value(ptr noundef %0, ptr noundef %25, i32 noundef 0, i32 noundef %1, i32 noundef %2, ptr noundef %3, i64 noundef %34) call void @llvm.lifetime.start.p0(ptr nonnull %9) store ptr %4, ptr %9, align 8 diff --git a/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll b/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll index 6fd871fb2c0..eb06b90504c 100644 --- a/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll +++ b/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll @@ -407,60 +407,60 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ define internal fastcc void @_ZN5alloc7raw_vec11finish_grow17hc454ce43bb6a28efE(ptr dead_on_unwind noalias noundef nonnull writable writeonly align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #3 { %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load i64, ptr %5, align 8, !range !19, !noundef !6 - %.not = icmp eq i64 %6, 0 - br i1 %.not, label %22, label %7 - -7: ; preds = %4 - %8 = load ptr, ptr %3, align 8, !nonnull !6, !noundef !6 - %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %10 = load i64, ptr %9, align 8, !noundef !6 - %11 = icmp eq i64 %6, %1 - tail call void @llvm.assume(i1 %11) - %12 = icmp eq i64 %10, 0 - br i1 %12, label %13, label %19 - -13: ; preds = %7 - %14 = icmp eq i64 %2, 0 - br i1 %14, label %15, label %17 - -15: ; preds = %13 - %16 = getelementptr i8, ptr null, i64 %1 + %7 = icmp eq i64 %6, 0 + br i1 %7, label %23, label %8 + +8: ; preds = %4 + %9 = load ptr, ptr %3, align 8, !nonnull !6, !noundef !6 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %11 = load i64, ptr %10, align 8, !noundef !6 + %12 = icmp eq i64 %6, %1 + tail call void @llvm.assume(i1 %12) + %13 = icmp eq i64 %11, 0 + br i1 %13, label %14, label %20 + +14: ; preds = %8 + %15 = icmp eq i64 %2, 0 + br i1 %15, label %16, label %18 + +16: ; preds = %14 + %17 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -17: ; preds = %13 +18: ; preds = %14 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #22 - %18 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 + %19 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -19: ; preds = %7 - %20 = icmp uge i64 %2, %10 - tail call void @llvm.assume(i1 %20) - %21 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %8, i64 noundef %10, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #22 +20: ; preds = %8 + %21 = icmp uge i64 %2, %11 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %9, i64 noundef %11, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -22: ; preds = %4 - %23 = icmp eq i64 %2, 0 - br i1 %23, label %24, label %26 +23: ; preds = %4 + %24 = icmp eq i64 %2, 0 + br i1 %24, label %25, label %27 -24: ; preds = %22 - %25 = getelementptr i8, ptr null, i64 %1 +25: ; preds = %23 + %26 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -26: ; preds = %22 +27: ; preds = %23 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #22 - %27 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 + %28 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %26, %24, %19, %17, %15 - %.sroa.012.0.i.i.pn = phi ptr [ %21, %19 ], [ %16, %15 ], [ %18, %17 ], [ %25, %24 ], [ %27, %26 ] - %28 = icmp eq ptr %.sroa.012.0.i.i.pn, null - %29 = inttoptr i64 %1 to ptr - %spec.select = select i1 %28, ptr %29, ptr %.sroa.012.0.i.i.pn - %spec.select6 = zext i1 %28 to i64 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %spec.select, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %2, ptr %31, align 8 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %27, %25, %20, %18, %16 + %.sroa.012.0.i.i.pn = phi ptr [ %22, %20 ], [ %17, %16 ], [ %19, %18 ], [ %26, %25 ], [ %28, %27 ] + %29 = icmp eq ptr %.sroa.012.0.i.i.pn, null + %30 = inttoptr i64 %1 to ptr + %spec.select = select i1 %29, ptr %30, ptr %.sroa.012.0.i.i.pn + %spec.select6 = zext i1 %29 to i64 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %spec.select, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %2, ptr %32, align 8 store i64 %spec.select6, ptr %0, align 8 ret void } @@ -520,8 +520,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !21, !nonnull !6, !noundef !6 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !21 store ptr %24, ptr %10, align 8, !alias.scope !21 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !21 ret void } @@ -581,8 +579,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !28, !nonnull !6, !noundef !6 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !28 store ptr %24, ptr %10, align 8, !alias.scope !28 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !28 ret void } @@ -754,7 +750,7 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %12 %42 = load ptr, ptr %35, align 8, !noalias !34, !nonnull !6, !noundef !6 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !34 store ptr %42, ptr %28, align 8, !alias.scope !34 - %43 = icmp sgt i64 %.sroa.0.0.sroa.speculated.i40.i, -1 + %43 = icmp sgt i64 %.sroa.0.0.sroa.speculated.i40.i, 0 tail call void @llvm.assume(i1 %43) store i64 %.sroa.0.0.sroa.speculated.i40.i, ptr %0, align 8, !alias.scope !34 ret void @@ -788,22 +784,22 @@ define internal noundef zeroext i1 @"_ZN66_$LT$core..option..Option$LT$T$GT$$u20 define internal noundef zeroext i1 @"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h75fe55cd240af7bfE"(ptr noalias noundef readonly align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(24) %1) unnamed_addr #6 { %3 = alloca [8 x i8], align 8 %4 = load i64, ptr %0, align 8, !range !19, !noundef !6 - %.not = icmp eq i64 %4, -9223372036854775808 - br i1 %.not, label %7, label %5 + %5 = icmp eq i64 %4, -9223372036854775808 + br i1 %5, label %8, label %6 -5: ; preds = %2 +6: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr %0, ptr %3, align 8 - %6 = call noundef zeroext i1 @_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h262e6421f0e66e33E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.34, i64 noundef 4, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.a812db04629ac4e7ffa519935094a828.35) + %7 = call noundef zeroext i1 @_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h262e6421f0e66e33E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.34, i64 noundef 4, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.a812db04629ac4e7ffa519935094a828.35) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %9 + br label %10 -7: ; preds = %2 - %8 = tail call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17hf872a87fa5f13d84E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.32, i64 noundef 4) - br label %9 +8: ; preds = %2 + %9 = tail call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17hf872a87fa5f13d84E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.32, i64 noundef 4) + br label %10 -9: ; preds = %7, %5 - %.sroa.0.0.in = phi i1 [ %6, %5 ], [ %8, %7 ] +10: ; preds = %8, %6 + %.sroa.0.0.in = phi i1 [ %7, %6 ], [ %9, %8 ] ret i1 %.sroa.0.0.in } diff --git a/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll b/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll index 6f658c922a9..1db90b8a153 100644 --- a/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll +++ b/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll @@ -10,60 +10,60 @@ target triple = "x86_64-unknown-linux-gnu" define internal fastcc void @_ZN5alloc7raw_vec11finish_grow17h026474110b2d97c8E(ptr dead_on_unwind noalias noundef nonnull writable writeonly align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #0 { %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load i64, ptr %5, align 8, !range !3, !noundef !4 - %.not = icmp eq i64 %6, 0 - br i1 %.not, label %22, label %7 - -7: ; preds = %4 - %8 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 - %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %10 = load i64, ptr %9, align 8, !noundef !4 - %11 = icmp eq i64 %6, %1 - tail call void @llvm.assume(i1 %11) - %12 = icmp eq i64 %10, 0 - br i1 %12, label %13, label %19 - -13: ; preds = %7 - %14 = icmp eq i64 %2, 0 - br i1 %14, label %15, label %17 - -15: ; preds = %13 - %16 = getelementptr i8, ptr null, i64 %1 + %7 = icmp eq i64 %6, 0 + br i1 %7, label %23, label %8 + +8: ; preds = %4 + %9 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %11 = load i64, ptr %10, align 8, !noundef !4 + %12 = icmp eq i64 %6, %1 + tail call void @llvm.assume(i1 %12) + %13 = icmp eq i64 %11, 0 + br i1 %13, label %14, label %20 + +14: ; preds = %8 + %15 = icmp eq i64 %2, 0 + br i1 %15, label %16, label %18 + +16: ; preds = %14 + %17 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -17: ; preds = %13 +18: ; preds = %14 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15 - %18 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 + %19 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -19: ; preds = %7 - %20 = icmp uge i64 %2, %10 - tail call void @llvm.assume(i1 %20) - %21 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %8, i64 noundef %10, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #15 +20: ; preds = %8 + %21 = icmp uge i64 %2, %11 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %9, i64 noundef %11, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #15 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -22: ; preds = %4 - %23 = icmp eq i64 %2, 0 - br i1 %23, label %24, label %26 +23: ; preds = %4 + %24 = icmp eq i64 %2, 0 + br i1 %24, label %25, label %27 -24: ; preds = %22 - %25 = getelementptr i8, ptr null, i64 %1 +25: ; preds = %23 + %26 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -26: ; preds = %22 +27: ; preds = %23 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15 - %27 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 + %28 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %26, %24, %19, %17, %15 - %.sroa.012.0.i.i.pn = phi ptr [ %21, %19 ], [ %16, %15 ], [ %18, %17 ], [ %25, %24 ], [ %27, %26 ] - %28 = icmp eq ptr %.sroa.012.0.i.i.pn, null - %29 = inttoptr i64 %1 to ptr - %spec.select = select i1 %28, ptr %29, ptr %.sroa.012.0.i.i.pn - %spec.select6 = zext i1 %28 to i64 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %spec.select, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %2, ptr %31, align 8 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %27, %25, %20, %18, %16 + %.sroa.012.0.i.i.pn = phi ptr [ %22, %20 ], [ %17, %16 ], [ %19, %18 ], [ %26, %25 ], [ %28, %27 ] + %29 = icmp eq ptr %.sroa.012.0.i.i.pn, null + %30 = inttoptr i64 %1 to ptr + %spec.select = select i1 %29, ptr %30, ptr %.sroa.012.0.i.i.pn + %spec.select6 = zext i1 %29 to i64 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %spec.select, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %2, ptr %32, align 8 store i64 %spec.select6, ptr %0, align 8 ret void } @@ -123,8 +123,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !6, !nonnull !4, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !6 store ptr %24, ptr %10, align 8, !alias.scope !6 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !6 ret void } @@ -296,7 +294,7 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %12 %42 = load ptr, ptr %35, align 8, !noalias !13, !nonnull !4, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !13 store ptr %42, ptr %28, align 8, !alias.scope !13 - %43 = icmp sgt i64 %.sroa.0.0.sroa.speculated.i40.i, -1 + %43 = icmp sgt i64 %.sroa.0.0.sroa.speculated.i40.i, 0 tail call void @llvm.assume(i1 %43) store i64 %.sroa.0.0.sroa.speculated.i40.i, ptr %0, align 8, !alias.scope !13 ret void diff --git a/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll b/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll index 94c11450a0c..4121f56265f 100644 --- a/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll +++ b/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll @@ -73,7 +73,7 @@ default.unreachable: ; preds = %_ZN4core4iter6trait 10: ; preds = %2 %11 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %11, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" + br i1 %11, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" 12: ; preds = %2 br label %14 @@ -174,59 +174,59 @@ _ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.thread.i.i.thread.i.i: ; preds = % %51 = sub nuw i64 %.sroa.3.025.i.i.i, %.sroa.6.1.i1621.i.i8.i.i %52 = getelementptr inbounds nuw i8, ptr %.sroa.0.0626.i.i.i, i64 %.sroa.6.1.i1621.i.i8.i.i %53 = add i64 %.sroa.0.027.i.i.i, 1 - %.not.i.i.i.i.i = icmp eq i64 %51, 0 - br i1 %.not.i.i.i.i.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i, label %.lr.ph.i.i.i + %54 = icmp eq i64 %51, 0 + br i1 %54, label %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i, label %.lr.ph.i.i.i _ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i: ; preds = %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.thread.i.i.thread.i.i, %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.i.i.i.i %.sroa.0.0.lcssa.i.ph.i.i = phi i64 [ %.sroa.0.027.i.i.i, %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.i.i.i.i ], [ %53, %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.thread.i.i.thread.i.i ] - %54 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %.sroa.0.0.lcssa.i.ph.i.i) + %55 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %.sroa.0.0.lcssa.i.ph.i.i) br label %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i _ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i, %14 - %.sroa.0.0.lcssa.i.i.i = phi i64 [ %19, %14 ], [ %54, %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i ] - %55 = select i1 %16, i64 0, i64 %.sroa.0.0.lcssa.i.i.i + %.sroa.0.0.lcssa.i.i.i = phi i64 [ %19, %14 ], [ %55, %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i ] + %56 = select i1 %16, i64 0, i64 %.sroa.0.0.lcssa.i.i.i switch i64 %.sroa.01.0.i.i, label %default.unreachable [ - i64 0, label %56 - i64 1, label %58 - i64 2, label %60 + i64 0, label %57 + i64 1, label %59 + i64 2, label %61 ] -56: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i - %57 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %57, label %72, label %64 +57: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i + %58 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) + br i1 %58, label %73, label %65 -58: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i - %59 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %55), !noalias !8 - br i1 %59, label %72, label %66 +59: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i + %60 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %56), !noalias !8 + br i1 %60, label %73, label %67 -60: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i - %61 = lshr i64 %55, 1 - %62 = and i64 %55, 1 - %.sroa.03.0.i.i = add nuw nsw i64 %61, %62 - %63 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %61), !noalias !8 - br i1 %63, label %72, label %68 +61: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i + %62 = lshr i64 %56, 1 + %63 = and i64 %56, 1 + %.sroa.03.0.i.i = add nuw nsw i64 %62, %63 + %64 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %62), !noalias !8 + br i1 %64, label %73, label %69 -64: ; preds = %56 - %65 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %55) - br i1 %65, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" +65: ; preds = %57 + %66 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %56) + br i1 %66, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -66: ; preds = %58 - %67 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %67, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" +67: ; preds = %59 + %68 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) + br i1 %68, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -68: ; preds = %60 - %69 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %69, label %72, label %70 +69: ; preds = %61 + %70 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) + br i1 %70, label %73, label %71 -70: ; preds = %68 - %71 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.sroa.03.0.i.i) - br i1 %71, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" +71: ; preds = %69 + %72 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.sroa.03.0.i.i) + br i1 %72, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -72: ; preds = %70, %68, %66, %64, %60, %58, %56, %10 +73: ; preds = %71, %69, %67, %65, %61, %59, %57, %10 br label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit": ; preds = %10, %64, %66, %70, %72 - %.sroa.0.2.i.i = phi i1 [ true, %72 ], [ false, %64 ], [ false, %66 ], [ false, %70 ], [ false, %10 ] +"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit": ; preds = %10, %65, %67, %71, %73 + %.sroa.0.2.i.i = phi i1 [ true, %73 ], [ false, %65 ], [ false, %67 ], [ false, %71 ], [ false, %10 ] ret i1 %.sroa.0.2.i.i } @@ -750,60 +750,60 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17ha1d6c62e80ed3eb7E.exit: define internal fastcc void @_ZN5alloc7raw_vec11finish_grow17h8954d1e43706f9f3E(ptr dead_on_unwind noalias noundef nonnull writable writeonly align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #1 { %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load i64, ptr %5, align 8, !range !122, !noundef !3 - %.not = icmp eq i64 %6, 0 - br i1 %.not, label %22, label %7 - -7: ; preds = %4 - %8 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 - %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %10 = load i64, ptr %9, align 8, !noundef !3 - %11 = icmp eq i64 %6, %1 - tail call void @llvm.assume(i1 %11) - %12 = icmp eq i64 %10, 0 - br i1 %12, label %13, label %19 - -13: ; preds = %7 - %14 = icmp eq i64 %2, 0 - br i1 %14, label %15, label %17 - -15: ; preds = %13 - %16 = getelementptr i8, ptr null, i64 %1 + %7 = icmp eq i64 %6, 0 + br i1 %7, label %23, label %8 + +8: ; preds = %4 + %9 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %11 = load i64, ptr %10, align 8, !noundef !3 + %12 = icmp eq i64 %6, %1 + tail call void @llvm.assume(i1 %12) + %13 = icmp eq i64 %11, 0 + br i1 %13, label %14, label %20 + +14: ; preds = %8 + %15 = icmp eq i64 %2, 0 + br i1 %15, label %16, label %18 + +16: ; preds = %14 + %17 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -17: ; preds = %13 +18: ; preds = %14 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #21 - %18 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 + %19 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -19: ; preds = %7 - %20 = icmp uge i64 %2, %10 - tail call void @llvm.assume(i1 %20) - %21 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %8, i64 noundef %10, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #21 +20: ; preds = %8 + %21 = icmp uge i64 %2, %11 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %9, i64 noundef %11, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -22: ; preds = %4 - %23 = icmp eq i64 %2, 0 - br i1 %23, label %24, label %26 +23: ; preds = %4 + %24 = icmp eq i64 %2, 0 + br i1 %24, label %25, label %27 -24: ; preds = %22 - %25 = getelementptr i8, ptr null, i64 %1 +25: ; preds = %23 + %26 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -26: ; preds = %22 +27: ; preds = %23 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #21 - %27 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 + %28 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %26, %24, %19, %17, %15 - %.sroa.012.0.i.i.pn = phi ptr [ %21, %19 ], [ %16, %15 ], [ %18, %17 ], [ %25, %24 ], [ %27, %26 ] - %28 = icmp eq ptr %.sroa.012.0.i.i.pn, null - %29 = inttoptr i64 %1 to ptr - %spec.select = select i1 %28, ptr %29, ptr %.sroa.012.0.i.i.pn - %spec.select6 = zext i1 %28 to i64 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %spec.select, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %2, ptr %31, align 8 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %27, %25, %20, %18, %16 + %.sroa.012.0.i.i.pn = phi ptr [ %22, %20 ], [ %17, %16 ], [ %19, %18 ], [ %26, %25 ], [ %28, %27 ] + %29 = icmp eq ptr %.sroa.012.0.i.i.pn, null + %30 = inttoptr i64 %1 to ptr + %spec.select = select i1 %29, ptr %30, ptr %.sroa.012.0.i.i.pn + %spec.select6 = zext i1 %29 to i64 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %spec.select, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %2, ptr %32, align 8 store i64 %spec.select6, ptr %0, align 8 ret void } @@ -863,8 +863,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !124, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !124 store ptr %24, ptr %10, align 8, !alias.scope !124 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !124 ret void } @@ -924,8 +922,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !131, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !131 store ptr %24, ptr %10, align 8, !alias.scope !131 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !131 ret void } @@ -987,8 +983,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !137, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !137 store ptr %26, ptr %12, align 8, !alias.scope !137 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !137 ret void } @@ -1050,8 +1044,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !143, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !143 store ptr %26, ptr %12, align 8, !alias.scope !143 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !143 ret void } @@ -1111,8 +1103,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !149, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !149 store ptr %24, ptr %10, align 8, !alias.scope !149 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !149 ret void } @@ -1172,8 +1162,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !155, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !155 store ptr %24, ptr %10, align 8, !alias.scope !155 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !155 ret void } @@ -1233,8 +1221,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !161, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !161 store ptr %24, ptr %10, align 8, !alias.scope !161 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !161 ret void } @@ -1296,8 +1282,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !167, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !167 store ptr %26, ptr %12, align 8, !alias.scope !167 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !167 ret void } @@ -1359,8 +1343,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !173, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !173 store ptr %26, ptr %12, align 8, !alias.scope !173 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !173 ret void } @@ -1420,8 +1402,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !179, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !179 store ptr %24, ptr %10, align 8, !alias.scope !179 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !179 ret void } @@ -1481,8 +1461,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !185, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !185 store ptr %24, ptr %10, align 8, !alias.scope !185 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !185 ret void } @@ -1542,8 +1520,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !191, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !191 store ptr %24, ptr %10, align 8, !alias.scope !191 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !191 ret void } @@ -1603,8 +1579,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !197, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !197 store ptr %24, ptr %10, align 8, !alias.scope !197 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !197 ret void } @@ -1666,8 +1640,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !203, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !203 store ptr %26, ptr %12, align 8, !alias.scope !203 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !203 ret void } @@ -1729,8 +1701,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !209, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !209 store ptr %26, ptr %12, align 8, !alias.scope !209 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !209 ret void } @@ -1792,8 +1762,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !215, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !215 store ptr %26, ptr %12, align 8, !alias.scope !215 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !215 ret void } @@ -1855,8 +1823,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %26 = load ptr, ptr %19, align 8, !noalias !221, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !221 store ptr %26, ptr %12, align 8, !alias.scope !221 - %27 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %27) store i64 %7, ptr %0, align 8, !alias.scope !221 ret void } @@ -1916,8 +1882,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !227, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !227 store ptr %24, ptr %10, align 8, !alias.scope !227 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !227 ret void } @@ -1977,8 +1941,6 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %2 %24 = load ptr, ptr %17, align 8, !noalias !233, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !233 store ptr %24, ptr %10, align 8, !alias.scope !233 - %25 = icmp sgt i64 %7, -1 - tail call void @llvm.assume(i1 %25) store i64 %7, ptr %0, align 8, !alias.scope !233 ret void } @@ -2321,7 +2283,7 @@ _ZN4core5alloc6layout6Layout6repeat17hd65d76358cebe8e2E.exit.i: ; preds = %12 %42 = load ptr, ptr %35, align 8, !noalias !255, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !255 store ptr %42, ptr %28, align 8, !alias.scope !255 - %43 = icmp sgt i64 %.sroa.0.0.sroa.speculated.i40.i, -1 + %43 = icmp sgt i64 %.sroa.0.0.sroa.speculated.i40.i, 0 tail call void @llvm.assume(i1 %43) store i64 %.sroa.0.0.sroa.speculated.i40.i, ptr %0, align 8, !alias.scope !255 ret void diff --git a/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll b/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll index c6ea103d2fb..e783450b52c 100644 --- a/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll +++ b/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll @@ -3698,65 +3698,62 @@ define void @"_ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u 15: ; preds = %3 %16 = getelementptr inbounds nuw i8, ptr %1, i64 43 %17 = load i8, ptr %16, align 1, !range !386, !noundef !4 - %18 = icmp ne i8 %17, 8 + %18 = icmp samesign ult i8 %17, 8 %or.cond = select i1 %18, i1 %9, i1 false br i1 %or.cond, label %20, label %19 19: ; preds = %15 - br i1 %9, label %26, label %25 + br i1 %9, label %23, label %22 20: ; preds = %15 - %21 = add nsw i8 %17, -4 - %22 = icmp ugt i8 %21, 3 - %23 = icmp eq i8 %21, 1 - %24 = or i1 %22, %23 - br i1 %24, label %switch.lookup, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" + %21 = icmp samesign ult i8 %17, 4 + br i1 %21, label %switch.lookup, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" -25: ; preds = %19 +22: ; preds = %19 %.sroa.0.0.copyload = load i32, ptr %1, align 4 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6.0..sroa_idx, i64 16, i1 false) br label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" -26: ; preds = %19 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 20 - %.sroa.05.0.copyload = load i32, ptr %27, align 4 - %28 = icmp eq i32 %.sroa.05.0.copyload, 19 - br i1 %28, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit", label %29 +23: ; preds = %19 + %24 = getelementptr inbounds nuw i8, ptr %1, i64 20 + %.sroa.05.0.copyload = load i32, ptr %24, align 4 + %25 = icmp eq i32 %.sroa.05.0.copyload, 19 + br i1 %25, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit", label %26 -29: ; preds = %26 +26: ; preds = %23 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.5.0..sroa_idx, i64 16, i1 false) br label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" switch.lookup: ; preds = %20 - %30 = zext nneg i8 %17 to i64 - %switch.gep = getelementptr inbounds nuw i32, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E", i64 %30 + %27 = zext nneg i8 %17 to i64 + %switch.gep = getelementptr inbounds nuw i32, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E", i64 %27 %switch.load = load i32, ptr %switch.gep, align 4 br label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" -"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit": ; preds = %29, %26, %switch.lookup, %20, %3, %25 - %.sroa.0.0 = phi i32 [ %.sroa.0.0.copyload, %25 ], [ 4, %3 ], [ 0, %20 ], [ %switch.load, %switch.lookup ], [ 15, %26 ], [ %.sroa.05.0.copyload, %29 ] - %31 = icmp eq i8 %6, -88 +"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit": ; preds = %26, %23, %switch.lookup, %20, %3, %22 + %.sroa.0.0 = phi i32 [ %.sroa.0.0.copyload, %22 ], [ 4, %3 ], [ 0, %20 ], [ %switch.load, %switch.lookup ], [ 15, %23 ], [ %.sroa.05.0.copyload, %26 ] + %28 = icmp eq i8 %6, -88 %spec.select.i = select i1 %9, i8 %6, i8 -88 - %.sroa.05.0.i = select i1 %31, i8 -88, i8 %spec.select.i - %32 = icmp eq i8 %.sroa.05.0.i, -88 - %spec.select = select i1 %32, i8 %11, i8 %.sroa.05.0.i + %.sroa.05.0.i = select i1 %28, i8 -88, i8 %spec.select.i + %29 = icmp eq i8 %.sroa.05.0.i, -88 + %spec.select = select i1 %29, i8 %11, i8 %.sroa.05.0.i call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.11) call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %spec.select, ptr %4, align 1, !noalias !387 - %33 = call { ptr, i64 } @_ZN2ui10components4icon8IconName4path17hbf39b26447d409b5E(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %4), !noalias !387 - %34 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef 1.000000e+00), !noalias !387 + %30 = call { ptr, i64 } @_ZN2ui10components4icon8IconName4path17hbf39b26447d409b5E(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %4), !noalias !387 + %31 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef 1.000000e+00), !noalias !387 call void @"_ZN78_$LT$gpui..elements..svg..Transformation$u20$as$u20$core..default..Default$GT$7default17h80aa629d9609e625E"(ptr noalias noundef nonnull sret([20 x i8]) align 4 captures(none) dereferenceable(20) %.sroa.11) call void @llvm.lifetime.end.p0(ptr nonnull %4) - %35 = getelementptr inbounds nuw i8, ptr %1, i64 42 - %36 = load i8, ptr %35, align 2, !range !390, !noundef !4 - %37 = zext nneg i8 %36 to i64 - %switch.gep26 = getelementptr inbounds nuw float, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E.22", i64 %37 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 42 + %33 = load i8, ptr %32, align 2, !range !390, !noundef !4 + %34 = zext nneg i8 %33 to i64 + %switch.gep26 = getelementptr inbounds nuw float, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E.22", i64 %34 %switch.load27 = load float, ptr %switch.gep26, align 4 - %38 = extractvalue { ptr, i64 } %33, 1 - %39 = extractvalue { ptr, i64 } %33, 0 - %40 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef %switch.load27), !noalias !391 + %35 = extractvalue { ptr, i64 } %30, 1 + %36 = extractvalue { ptr, i64 } %30, 0 + %37 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef %switch.load27), !noalias !391 %.sroa.617.sroa.4.0..sroa.617.0..sroa_idx18.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %.sroa.617.sroa.4.0..sroa.617.0..sroa_idx18.sroa_idx, ptr noundef nonnull align 8 dereferenceable(20) %.sroa.11, i64 20, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.11) @@ -3765,13 +3762,13 @@ switch.lookup: ; preds = %20 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.515.0..sroa_idx16, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6, i64 16, i1 false), !alias.scope !398, !noalias !4 store i64 0, ptr %0, align 8, !alias.scope !401, !noalias !395 %.sroa.012.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %39, ptr %.sroa.012.sroa.4.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 + store ptr %36, ptr %.sroa.012.sroa.4.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 %.sroa.012.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %38, ptr %.sroa.012.sroa.5.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 + store i64 %35, ptr %.sroa.012.sroa.5.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 %.sroa.4.0..sroa_idx13 = getelementptr inbounds nuw i8, ptr %0, i64 24 store i32 %.sroa.0.0, ptr %.sroa.4.0..sroa_idx13, align 8, !alias.scope !401, !noalias !395 %.sroa.617.0..sroa_idx18 = getelementptr inbounds nuw i8, ptr %0, i64 44 - store float %40, ptr %.sroa.617.0..sroa_idx18, align 4, !alias.scope !401, !noalias !395 + store float %37, ptr %.sroa.617.0..sroa_idx18, align 4, !alias.scope !401, !noalias !395 ret void } From db0cf0930be6caee4a3490949d7c9b6594e9dad4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 12:31:22 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/extraUtilFile.ll | 56 ++--- bench/abc/optimized/mapperTime.ll | 20 +- bench/abc/optimized/mvcApi.ll | 16 +- .../optimized/cordz_functions_test.ll | 4 +- bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll | 102 ++++----- bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll | 36 +-- bench/arrow/optimized/stats.ll | 158 ++++++------- bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll | 16 +- bench/base64-rs/optimized/r7oyewqnuirpg2o.ll | 52 ++--- bench/bdwgc/optimized/cordxtra.ll | 82 +++---- bench/box2d/optimized/window.ll | 118 +++++----- bench/chibicc/optimized/codegen.ll | 168 +++++++------- bench/clamav/optimized/regex_pcre.ll | 140 ++++++------ bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll | 42 ++-- .../archive_write_add_filter_bzip2.ll | 164 +++++++------- .../optimized/3z39203exqv32wuh.ll | 6 +- bench/csmith/optimized/StatementContinue.ll | 40 ++-- bench/darktable/optimized/OrfDecoder.ll | 172 +++++++-------- bench/darktable/optimized/TableLookUp.ll | 100 ++++----- bench/eastl/optimized/EACallback.ll | 126 +++++------ bench/entt/optimized/delegate.ll | 8 +- bench/ffmpeg/optimized/ac3enc_float.ll | 4 +- bench/ffmpeg/optimized/bitpacked_enc.ll | 10 +- bench/ffmpeg/optimized/framequeue.ll | 32 +-- bench/ffmpeg/optimized/h266_metadata.ll | 52 ++--- bench/ffmpeg/optimized/lclenc.ll | 54 ++--- .../optimized/edge_project_xyz_onlypose.ll | 12 +- bench/g2o/optimized/estimate_propagator.ll | 26 +-- bench/glslang/optimized/Logger.ll | 60 ++--- bench/hdf5/optimized/h5format_convert.ll | 6 +- bench/hwloc/optimized/topology-xml-libxml.ll | 34 +-- bench/icu/optimized/csrmbcs.ll | 104 ++++----- bench/icu/optimized/ucmndata.ll | 126 +++++------ bench/icu/optimized/uset.ll | 66 +++--- .../influxdb-rs/optimized/4j71xiofmorb5iag.ll | 18 +- .../optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll | 208 +++++++++--------- bench/jsonnet/optimized/to_c_array.ll | 60 ++--- bench/libdeflate/optimized/prog_util.ll | 28 +-- .../optimized/unicodestring_test.ll | 22 +- bench/libquic/optimized/pem_info.ll | 182 +++++++-------- bench/libwebp/optimized/filters.ll | 30 +-- bench/libwebp/optimized/filters_utils.ll | 46 ++-- bench/lief/optimized/MemoryStream.ll | 20 +- bench/linux/optimized/cdrom.ll | 126 +++++------ bench/linux/optimized/drm_mipi_dsi.ll | 36 +-- bench/linux/optimized/early_printk.ll | 74 +++---- bench/linux/optimized/xt_TCPMSS.ll | 32 +-- bench/lua/optimized/lmathlib.ll | 32 +-- bench/luajit/optimized/lib_bit.ll | 82 +++---- .../optimized/nd5rqkzol64hjfl.ll | 36 +-- .../meshoptimizer/optimized/vfetchanalyzer.ll | 14 +- bench/mimalloc/optimized/stats.ll | 134 +++++------ .../mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll | 56 ++--- .../ms-gsl/optimized/strict_notnull_tests.ll | 24 +- .../nanobind/optimized/nb_static_property.ll | 10 +- bench/nuttx/optimized/lib_etheraton.ll | 158 ++++++------- bench/opencv/optimized/rmat.ll | 112 +++++----- bench/openjdk/optimized/NetworkInterface.ll | 126 +++++------ .../optimized/ProcessHandleImpl_linux.ll | 152 ++++++------- bench/openjdk/optimized/compileLog.ll | 158 ++++++------- bench/openmpi/optimized/pmix_vmem.ll | 180 +++++++-------- bench/openssl/optimized/algorithmid_test.ll | 26 +-- bench/openssl/optimized/rsa_sp800_56b_gen.ll | 106 ++++----- bench/openssl/optimized/rsa_x931.ll | 50 ++--- .../optimized/local_to_model_job.ll | 42 ++-- bench/pbrt-v4/optimized/lowdiscrepancy.ll | 26 +-- bench/php/optimized/is_csv.ll | 128 +++++------ .../optimized/2646m1km3n3yt2qymmhrklrgn.ll | 16 +- bench/pocketpy/optimized/easing.ll | 48 ++-- bench/postgres/optimized/binaryheap.ll | 112 +++++----- bench/postgres/optimized/c_keywords.ll | 92 ++++---- bench/postgres/optimized/int8.ll | 104 ++++----- bench/postgres/optimized/inval.ll | 8 +- .../optimized/stem_ISO_8859_1_indonesian.ll | 82 +++---- .../proj/optimized/proj_crs_to_crs_fuzzer.ll | 64 +++--- bench/protobuf/optimized/name_resolver.ll | 46 ++-- bench/protobuf/optimized/strtod.ll | 36 +-- bench/qemu/optimized/user.ll | 172 +++++++-------- bench/qoi/optimized/qoi.ll | 68 +++--- bench/quantlib/optimized/asx.ll | 122 +++++----- bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll | 20 +- bench/redis/optimized/luac.ll | 124 +++++------ bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll | 26 +-- bench/rocksdb/optimized/hash_skiplist_rep.ll | 68 +++--- bench/ruby/optimized/emacs_mule.ll | 114 +++++----- .../optimized/1siyoufv1amkefl9.ll | 158 ++++++------- .../optimized/6ix1w6o1enhavym.ll | 140 ++++++------ bench/sdl/optimized/SDL_asyncio_generic.ll | 58 ++--- bench/slurm/optimized/auth_munge.ll | 120 +++++----- bench/smol-rs/optimized/38abr5s50jd6yipr.ll | 56 ++--- bench/stat-rs/optimized/n94tvlll45kxl7r.ll | 130 +++++------ bench/stb/optimized/stb_hexwave.ll | 70 +++--- .../optimized/74s3x9u7hld928rwmttmetb1y.ll | 52 ++--- .../optimized/7fw9xnh6zcxu0x094jeq6b04v.ll | 4 +- .../optimized/dcex2dbpz9063ood2sxvmfunc.ll | 62 +++--- bench/wireshark/optimized/iana-ip.ll | 40 ++-- bench/wireshark/optimized/wscbor.ll | 136 ++++++------ .../optimized/24by81cawhgy3ha68pxt0cn41.ll | 102 ++++----- .../optimized/8fmnxi5cxgxler9gfhr96spqd.ll | 82 +++---- .../optimized/b2pucgguwqp4qxkwg6j77083l.ll | 152 ++++++------- .../optimized/4u0dswi9tif78fn5u6xqz5z9a.ll | 54 ++--- 101 files changed, 3742 insertions(+), 3742 deletions(-) diff --git a/bench/abc/optimized/extraUtilFile.ll b/bench/abc/optimized/extraUtilFile.ll index e9f45824ac3..9ed74034b4e 100644 --- a/bench/abc/optimized/extraUtilFile.ll +++ b/bench/abc/optimized/extraUtilFile.ll @@ -916,7 +916,7 @@ define void @Extra_PrintHexadecimal(ptr noundef captures(none) %0, ptr noundef r br i1 %6, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3, %20 - %.013 = phi i32 [ %.0, %20 ], [ %.012, %3 ] + %.013.in = phi i32 [ %.0, %20 ], [ %.012, %3 ] %7 = lshr i32 %.013, 3 %8 = zext nneg i32 %7 to i64 %9 = getelementptr inbounds nuw i32, ptr %1, i64 %8 @@ -938,7 +938,7 @@ define void @Extra_PrintHexadecimal(ptr noundef captures(none) %0, ptr noundef r br label %20 20: ; preds = %16, %18 - %.0 = add nsw i32 %.013, -1 + %.0 = add nsw i32 %.013.in, -1 %21 = icmp ult i32 %.0, 536870910 br i1 %21, label %.lr.ph, label %._crit_edge, !llvm.loop !21 @@ -950,45 +950,45 @@ define void @Extra_PrintHexadecimal(ptr noundef captures(none) %0, ptr noundef r define void @Extra_PrintHexadecimalString(ptr noundef writeonly captures(none) %0, ptr noundef readonly captures(none) %1, i32 noundef %2) local_unnamed_addr #9 { switch i32 %2, label %.critedge31 [ i32 0, label %4 - i32 1, label %10 + i32 1, label %9 ] 4: ; preds = %3 %5 = load i32, ptr %1, align 4, !tbaa !16 %6 = and i32 %5, 1 - %7 = icmp eq i32 %6, 0 - br i1 %7, label %8, label %9 + %.not = icmp eq i32 %6, 0 + br i1 %.not, label %7, label %8 -8: ; preds = %4 +7: ; preds = %4 store i16 48, ptr %0, align 1 - br label %32 + br label %30 -9: ; preds = %4 +8: ; preds = %4 store i16 49, ptr %0, align 1 - br label %32 + br label %30 -10: ; preds = %3 - %11 = load i32, ptr %1, align 4, !tbaa !16 - %12 = and i32 %11, 1 - %13 = icmp eq i32 %12, 0 - br i1 %13, label %15, label %14 +9: ; preds = %3 + %10 = load i32, ptr %1, align 4, !tbaa !16 + %11 = and i32 %10, 1 + %.not28 = icmp eq i32 %11, 0 + br i1 %.not28, label %13, label %12 -14: ; preds = %10 +12: ; preds = %9 store i16 49, ptr %0, align 1 - br label %32 + br label %30 -15: ; preds = %10 +13: ; preds = %9 store i16 50, ptr %0, align 1 - br label %32 + br label %30 .critedge31: ; preds = %3 - %16 = shl nuw i32 1, %2 - %17 = sdiv i32 %16, 4 + %14 = shl nuw i32 1, %2 + %17 = sdiv i32 %14, 4 %.032 = add nsw i32 %17, -1 %18 = icmp ult i32 %.032, 536870911 br i1 %18, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %.critedge31, %.lr.ph +.lr.ph:; preds = %.critedge31, %.lr.ph %.034 = phi i32 [ %.0, %.lr.ph ], [ %.032, %.critedge31 ] %.02433 = phi ptr [ %.1, %.lr.ph ], [ %0, %.critedge31 ] %19 = lshr i32 %.034, 3 @@ -999,7 +999,7 @@ define void @Extra_PrintHexadecimalString(ptr noundef writeonly captures(none) % %24 = and i32 %23, 28 %25 = lshr i32 %22, %24 %26 = and i32 %25, 15 - %27 = icmp samesign ult i32 %26, 10 + %27 = icmp samesign ult i32 %26, 8 %28 = trunc nuw nsw i32 %26 to i8 %29 = add nuw nsw i8 %28, 87 %30 = or disjoint i8 %28, 48 @@ -1013,9 +1013,9 @@ define void @Extra_PrintHexadecimalString(ptr noundef writeonly captures(none) % ._crit_edge: ; preds = %.lr.ph, %.critedge31 %.024.lcssa = phi ptr [ %0, %.critedge31 ], [ %.1, %.lr.ph ] store i8 0, ptr %.024.lcssa, align 1, !tbaa !3 - br label %32 + br label %30 -32: ; preds = %._crit_edge, %15, %14, %9, %8 +30: ; preds = %._crit_edge, %13, %12, %8, %7 ret void } @@ -1033,7 +1033,7 @@ define void @Extra_PrintHex(ptr noundef captures(none) %0, ptr noundef readonly br i1 %11, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3, %24 - %.016 = phi i32 [ %.0, %24 ], [ %.015, %3 ] + %.016.in = phi i32 [ %.0, %24 ], [ %.015, %3 ] %12 = lshr i32 %.016, 3 %13 = zext nneg i32 %12 to i64 %14 = getelementptr inbounds nuw i32, ptr %1, i64 %13 @@ -1054,7 +1054,7 @@ define void @Extra_PrintHex(ptr noundef captures(none) %0, ptr noundef readonly br label %24 24: ; preds = %20, %22 - %.0 = add nsw i32 %.016, -1 + %.0 = add nsw i32 %.016.in, -1 %25 = icmp ult i32 %.0, 536870911 br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !23 @@ -1075,7 +1075,7 @@ define void @Extra_PrintHex2(ptr noundef captures(none) %0, ptr noundef readonly br i1 %10, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %3, %23 - %.015 = phi i32 [ %.0, %23 ], [ %.014, %3 ] + %.015.in = phi i32 [ %.0, %23 ], [ %.014, %3 ] %11 = lshr i32 %.015, 3 %12 = zext nneg i32 %11 to i64 %13 = getelementptr inbounds nuw i32, ptr %1, i64 %12 @@ -1096,7 +1096,7 @@ define void @Extra_PrintHex2(ptr noundef captures(none) %0, ptr noundef readonly br label %23 23: ; preds = %19, %21 - %.0 = add nsw i32 %.015, -1 + %.0 = add nsw i32 %.015.in, -1 %24 = icmp ult i32 %.0, 536870911 br i1 %24, label %.lr.ph, label %._crit_edge, !llvm.loop !24 diff --git a/bench/abc/optimized/mapperTime.ll b/bench/abc/optimized/mapperTime.ll index 122c4257c07..1513eb921c1 100644 --- a/bench/abc/optimized/mapperTime.ll +++ b/bench/abc/optimized/mapperTime.ll @@ -100,10 +100,10 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, br i1 %29, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %22 - %30 = xor i32 %11, -1 - %31 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %32 = getelementptr inbounds nuw i8, ptr %9, i64 80 - %33 = getelementptr inbounds nuw i8, ptr %9, i64 152 + %29 = xor i32 %11, -1 + %30 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %31 = getelementptr inbounds nuw i8, ptr %9, i64 80 + %32 = getelementptr inbounds nuw i8, ptr %9, i64 152 br label %34 34: ; preds = %.lr.ph, %102 @@ -111,16 +111,16 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, %36 = phi float [ 0.000000e+00, %.lr.ph ], [ %104, %102 ] %37 = phi float [ 0.000000e+00, %.lr.ph ], [ %74, %102 ] %38 = phi float [ 0.000000e+00, %.lr.ph ], [ %75, %102 ] - %.086 = phi i32 [ %.085, %.lr.ph ], [ %.0, %102 ] - %39 = lshr i32 %30, %.086 + %indvars.iv = phi i32 [ %.085, %.lr.ph ], [ %.0, %102 ] + %39 = lshr i32 %30, %indvars.iv %40 = and i32 %39, 1 %41 = zext nneg i32 %.086 to i64 - %42 = getelementptr inbounds nuw ptr, ptr %31, i64 %41 + %42 = getelementptr inbounds nuw ptr, ptr %30, i64 %41 %43 = load ptr, ptr %42, align 8, !tbaa !23 %44 = getelementptr inbounds nuw i8, ptr %43, i64 96 %45 = zext nneg i32 %40 to i64 %46 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %44, i64 %45 - %47 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %32, i64 %41 + %47 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %31, i64 %41 %48 = load float, ptr %47, align 4, !tbaa !40 %49 = fcmp ogt float %48, 0.000000e+00 br i1 %49, label %50, label %58 @@ -167,7 +167,7 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, 73: ; preds = %70, %72, %58 %74 = phi float [ %59, %70 ], [ %68, %72 ], [ %59, %58 ] %75 = phi float [ %59, %70 ], [ %68, %72 ], [ %60, %58 ] - %76 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %33, i64 %41 + %76 = getelementptr inbounds nuw %struct.Map_TimeStruct_t_, ptr %32, i64 %41 %77 = load float, ptr %76, align 4, !tbaa !40 %78 = fcmp ogt float %77, 0.000000e+00 br i1 %78, label %79, label %87 @@ -214,7 +214,7 @@ define float @Map_TimeCutComputeArrival(ptr noundef readonly captures(none) %0, 102: ; preds = %87, %101, %99 %103 = phi float [ %88, %87 ], [ %97, %101 ], [ %88, %99 ] %104 = phi float [ %89, %87 ], [ %97, %101 ], [ %88, %99 ] - %.0 = add nsw i32 %.086, -1 + %.0 = add nsw i32 %indvars.iv, -1 %105 = icmp ult i32 %.0, 126 br i1 %105, label %34, label %._crit_edge, !llvm.loop !43 diff --git a/bench/abc/optimized/mvcApi.ll b/bench/abc/optimized/mvcApi.ll index ec146b30f32..003137675e7 100644 --- a/bench/abc/optimized/mvcApi.ll +++ b/bench/abc/optimized/mvcApi.ll @@ -146,13 +146,13 @@ define range(i32 0, 2) i32 @Mvc_CoverIsBinaryBuffer(ptr noundef readonly capture %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i32, ptr %2, align 8, !tbaa !14 %.not = icmp eq i32 %3, 2 - br i1 %.not, label %4, label %14 + br i1 %.not, label %4, label %13 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 32 %6 = load i32, ptr %5, align 8, !tbaa !15 %.not5 = icmp eq i32 %6, 1 - br i1 %.not5, label %7, label %14 + br i1 %.not5, label %7, label %13 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -160,11 +160,11 @@ define range(i32 0, 2) i32 @Mvc_CoverIsBinaryBuffer(ptr noundef readonly capture %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 %11 = load i32, ptr %10, align 8, !tbaa !23 %12 = and i32 %11, 3 - %13 = icmp eq i32 %12, 2 - %spec.select = zext i1 %13 to i32 - br label %14 + %or.cond.not = icmp eq i32 %12, 2 + %spec.select = zext i1 %or.cond.not to i32 + br label %13 -14: ; preds = %7, %4, %1 +13: ; preds = %7, %4, %1 %.0 = phi i32 [ 0, %1 ], [ 0, %4 ], [ %spec.select, %7 ] ret i32 %.0 } @@ -244,7 +244,7 @@ Mvc_CoverMakeEmpty.exit: ; preds = %.lr.ph.i, %1 %.027 = add nsw i32 %8, -1 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.028 = phi i32 [ %.0, %.lr.ph ], [ %.027, %.lr.ph.preheader ] %26 = zext nneg i32 %.028 to i64 %27 = getelementptr inbounds nuw i32, ptr %23, i64 %26 @@ -338,7 +338,7 @@ define noundef ptr @Mvc_CoverCreateTautology(ptr noundef readonly captures(none) %.029 = add nsw i32 %10, -1 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.030 = phi i32 [ %.0, %.lr.ph ], [ %.029, %.lr.ph.preheader ] %28 = zext nneg i32 %.030 to i64 %29 = getelementptr inbounds nuw i32, ptr %25, i64 %28 diff --git a/bench/abseil-cpp/optimized/cordz_functions_test.ll b/bench/abseil-cpp/optimized/cordz_functions_test.ll index 0930fedae87..edcddf82094 100644 --- a/bench/abseil-cpp/optimized/cordz_functions_test.ll +++ b/bench/abseil-cpp/optimized/cordz_functions_test.ll @@ -6736,8 +6736,8 @@ _ZN4absl13cord_internal20cordz_should_profileEv.exit: ; preds = %20, %22 %24 = phi i64 [ %21, %20 ], [ %.pre, %22 ] %25 = add nsw i64 %17, %24 %26 = add nuw nsw i32 %.035, 1 - %.not = icmp eq i32 %26, 10000 - br i1 %.not, label %13, label %16, !llvm.loop !241 + %exitcond.not = icmp eq i32 %26, 10000 + br i1 %exitcond.not, label %13, label %16, !llvm.loop !241 27: ; preds = %13 call void @llvm.lifetime.start.p0(ptr nonnull %5) diff --git a/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll b/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll index 0c953b38ffe..aeccd17a86a 100644 --- a/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll +++ b/bench/actix-rs/optimized/3z8xs86q8mjw7jd4.ll @@ -273,9 +273,9 @@ define internal void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$ %6 = icmp ult i64 %5, 4 %7 = select i1 %6, i64 %5, i64 2 switch i64 %7, label %.unreachabledefault [ - i64 0, label %19 - i64 1, label %19 - i64 2, label %20 + i64 0, label %18 + i64 1, label %18 + i64 2, label %19 i64 3, label %8 ] @@ -288,49 +288,49 @@ define internal void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$ call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbb245e3ee45a3854E.llvm.1711877461099840233"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %9) %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 %11 = load i64, ptr %10, align 8, !range !35, !noalias !26, !noundef !4 - %12 = icmp eq i64 %11, 0 - br i1 %12, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %13 - -13: ; preds = %8 - %14 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %15 = load i64, ptr %14, align 8, !noalias !26, !noundef !4 - %16 = icmp eq i64 %15, 0 - br i1 %16, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %17 - -17: ; preds = %13 - %18 = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %15, i64 noundef %11) #17 + %.not.i.i.i.i = icmp eq i64 %11, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %12 + +12: ; preds = %8 + %13 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %14 = load i64, ptr %13, align 8, !noalias !26, !noundef !4 + %15 = icmp eq i64 %14, 0 + br i1 %15, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit", label %16 + +16: ; preds = %12 + %17 = load ptr, ptr %3, align 8, !noalias !26, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %17, i64 noundef %14, i64 noundef %11) #17 br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit": ; preds = %8, %13, %17 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit": ; preds = %8, %12, %16 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !26 - br label %19 + br label %18 -19: ; preds = %1, %1, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1", %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit" +18: ; preds = %1, %1, %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2", %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit" ret void -20: ; preds = %1 +19: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !36 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hbb245e3ee45a3854E.llvm.1711877461099840233"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0) - %21 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %22 = load i64, ptr %21, align 8, !range !35, !noalias !36, !noundef !4 - %23 = icmp eq i64 %22, 0 - br i1 %23, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1", label %24 - -24: ; preds = %20 - %25 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %26 = load i64, ptr %25, align 8, !noalias !36, !noundef !4 - %27 = icmp eq i64 %26, 0 - br i1 %27, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1", label %28 - -28: ; preds = %24 - %29 = load ptr, ptr %2, align 8, !noalias !36, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %29, i64 noundef %26, i64 noundef %22) #17 - br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1" - -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit1": ; preds = %20, %24, %28 + %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %21 = load i64, ptr %20, align 8, !range !35, !noalias !36, !noundef !4 + %.not.i.i.i.i1 = icmp eq i64 %21, 0 + br i1 %.not.i.i.i.i1, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2", label %22 + +22: ; preds = %19 + %23 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %24 = load i64, ptr %23, align 8, !noalias !36, !noundef !4 + %25 = icmp eq i64 %24, 0 + br i1 %25, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2", label %26 + +26: ; preds = %22 + %27 = load ptr, ptr %2, align 8, !noalias !36, !nonnull !4, !noundef !4 + tail call void @__rust_dealloc(ptr noundef nonnull %27, i64 noundef %24, i64 noundef %21) #17 + br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2" + +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h8b0b401650d5ef36E.exit2": ; preds = %19, %22, %26 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !36 - br label %19 + br label %18 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -361,12 +361,12 @@ define internal void @"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..tex %5 = or i1 %3, %4 br i1 %5, label %7, label %6 -6: ; preds = %1, %7 +5: ; preds = %1, %6 ret void -7: ; preds = %1 +6: ; preds = %1 tail call void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$GT$17h69b7813d61c189c1E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %0) - br label %6 + br label %5 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -938,7 +938,7 @@ define { ptr, ptr } @_ZN15actix_multipart4form4text10TextConfig9map_error17hb2fe %17 = load ptr, ptr %16, align 8, !invariant.load !4, !nonnull !4 %18 = call { ptr, ptr } %17(ptr noundef align 1 %14, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %35 + br label %34 19: ; preds = %3 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !173 @@ -962,27 +962,27 @@ define { ptr, ptr } @_ZN15actix_multipart4form4text10TextConfig9map_error17hb2fe %29 = or i1 %27, %28 br i1 %29, label %30, label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" -30: ; preds = %24 +29: ; preds = %24 invoke void @"_ZN4core3ptr46drop_in_place$LT$serde_plain..error..Error$GT$17h69b7813d61c189c1E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2) - to label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" unwind label %31 + to label %"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit" unwind label %30 -31: ; preds = %30 - %32 = landingpad { ptr, i32 } +30: ; preds = %29 + %31 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20 unreachable -"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit": ; preds = %24, %30 +"_ZN4core3ptr59drop_in_place$LT$actix_multipart..form..text..TextError$GT$17h4e6b60a93c3e3eeeE.exit": ; preds = %24, %29 resume { ptr, i32 } %25 "_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit": ; preds = %19 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull align 8 dereferenceable(40) %2, i64 40, i1 false) - %33 = insertvalue { ptr, ptr } poison, ptr %21, 0 - %34 = insertvalue { ptr, ptr } %33, ptr @anon.f756f0e7123b03624cceb0e3cdb83315.32, 1 - br label %35 + %32 = insertvalue { ptr, ptr } poison, ptr %21, 0 + %33 = insertvalue { ptr, ptr } %32, ptr @anon.f756f0e7123b03624cceb0e3cdb83315.32, 1 + br label %34 -35: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit", %6 - %.merged = phi { ptr, ptr } [ %18, %6 ], [ %34, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit" ] +34: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit", %6 + %.merged = phi { ptr, ptr } [ %18, %6 ], [ %33, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha46cb8b59559a365E.exit" ] ret { ptr, ptr } %.merged } diff --git a/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll b/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll index 67e50bdda29..e7bf7234936 100644 --- a/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll +++ b/bench/anki-rs/optimized/1uaqk007tqhuyb5l.ll @@ -100,35 +100,35 @@ define internal void @"_ZN4core3ptr43drop_in_place$LT$$RF$std..path..PathBuf$GT$ ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN4core3ptr43drop_in_place$LT$anki_io..error..FileOp$GT$17hc8f48f1b0acd5228E.llvm.14975624700125130854"(ptr noalias noundef align 8 dereferenceable(32) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = load i64, ptr %0, align 8, !range !9, !noundef !4 - %3 = icmp eq i64 %2, 5 - br i1 %3, label %5, label %4 + %cond = icmp eq i64 %2, 5 + br i1 %cond, label %4, label %3 -4: ; preds = %1, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" +3: ; preds = %1, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" ret void -5: ; preds = %1 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 - invoke void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h94b600fcc699398cE.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) - to label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" unwind label %7 +4: ; preds = %1 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 + invoke void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h94b600fcc699398cE.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) + to label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit" unwind label %6 -7: ; preds = %5 - %8 = landingpad { ptr, i32 } +6: ; preds = %4 + %7 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) - to label %"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i" unwind label %9 + invoke void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) + to label %"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i" unwind label %8 -9: ; preds = %7 - %10 = landingpad { ptr, i32 } +8: ; preds = %6 + %9 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #10 unreachable -"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i": ; preds = %7 - resume { ptr, i32 } %8 +"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17hcf56c937bf7385ceE.llvm.469525117986682804.exit.i.i.i.i": ; preds = %6 + resume { ptr, i32 } %7 -"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit": ; preds = %5 - tail call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) - br label %4 +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4bcb1ae30919003aE.exit": ; preds = %4 + tail call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2f673cce36a37ea0E.llvm.469525117986682804"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) + br label %3 } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/arrow/optimized/stats.ll b/bench/arrow/optimized/stats.ll index c5c4f108f80..3c2e24b4623 100644 --- a/bench/arrow/optimized/stats.ll +++ b/bench/arrow/optimized/stats.ll @@ -1192,7 +1192,7 @@ define internal fastcc void @mi_stat_print(ptr noundef readonly captures(none) % %5 = alloca [32 x i8], align 16 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.31, ptr noundef %1) #10 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %7 = load i64, ptr %6, align 8, !tbaa !13 + %7 = load i64, ptr %6, align 8, !tbaa !12 switch i64 %2, label %30 [ i64 1, label %8 i64 -1, label %19 @@ -1203,8 +1203,8 @@ define internal fastcc void @mi_stat_print(ptr noundef readonly captures(none) % %9 = load i64, ptr %0, align 8, !tbaa !14 tail call fastcc void @mi_printf_amount(i64 noundef %9, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %11 = load i64, ptr %10, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %11, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %10 = load i64, ptr %.not51, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %10, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) %12 = getelementptr inbounds nuw i8, ptr %0, i64 24 %13 = load i64, ptr %12, align 8, !tbaa !11 tail call fastcc void @mi_printf_amount(i64 noundef %13, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) @@ -1213,55 +1213,55 @@ define internal fastcc void @mi_stat_print(ptr noundef readonly captures(none) % call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.36, ptr noundef nonnull %5) #10 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.37) #10 - %14 = load i64, ptr %0, align 8, !tbaa !14 - %15 = load i64, ptr %10, align 8, !tbaa !15 - %16 = icmp sgt i64 %14, %15 - br i1 %16, label %17, label %18 + %15 = load i64, ptr %0, align 8, !tbaa !14 + %16 = load i64, ptr %10, align 8, !tbaa !15 + %17 = icmp sgt i64 %15, %16 + br i1 %17, label %18, label %19 -17: ; preds = %8 +18: ; preds = %8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.32) #10 - br label %34 + br label %39 -18: ; preds = %8 +19: ; preds = %8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.33) #10 - br label %34 + br label %39 -19: ; preds = %4 +24: ; preds = %4 tail call fastcc void @mi_printf_amount(i64 noundef %7, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - %20 = load i64, ptr %0, align 8, !tbaa !14 - tail call fastcc void @mi_printf_amount(i64 noundef %20, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %22 = load i64, ptr %21, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %22, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - %23 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %24 = load i64, ptr %23, align 8, !tbaa !11 - tail call fastcc void @mi_printf_amount(i64 noundef %24, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) - tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35) #10 %25 = load i64, ptr %0, align 8, !tbaa !14 - %26 = load i64, ptr %21, align 8, !tbaa !15 - %27 = icmp sgt i64 %25, %26 - br i1 %27, label %28, label %29 + tail call fastcc void @mi_printf_amount(i64 noundef %25, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) + %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %27 = load i64, ptr %26, align 8, !tbaa !15 + tail call fastcc void @mi_printf_amount(i64 noundef %27, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) + %28 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %29 = load i64, ptr %28, align 8, !tbaa !11 + tail call fastcc void @mi_printf_amount(i64 noundef %29, i64 noundef -1, ptr noundef nonnull %3, ptr noundef null) + tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35) #10 + %30 = load i64, ptr %0, align 8, !tbaa !14 + %31 = load i64, ptr %26, align 8, !tbaa !15 + %32 = icmp sgt i64 %30, %31 + br i1 %32, label %33, label %34 -28: ; preds = %19 +33: ; preds = %24 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.32) #10 - br label %34 + br label %39 -29: ; preds = %19 +34: ; preds = %24 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.33) #10 - br label %34 + br label %39 -30: ; preds = %4 +35: ; preds = %4 tail call fastcc void @mi_printf_amount(i64 noundef %7, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) - %31 = load i64, ptr %0, align 8, !tbaa !14 - tail call fastcc void @mi_printf_amount(i64 noundef %31, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %36 = load i64, ptr %0, align 8, !tbaa !14 + tail call fastcc void @mi_printf_amount(i64 noundef %36, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.37) #10 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %33 = load i64, ptr %32, align 8, !tbaa !11 - tail call fastcc void @mi_printf_amount(i64 noundef %33, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) + %37 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %38 = load i64, ptr %37, align 8, !tbaa !11 + tail call fastcc void @mi_printf_amount(i64 noundef %38, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.22) #10 - br label %34 + br label %39 -34: ; preds = %30, %29, %28, %17, %18 +39: ; preds = %35, %34, %33, %18, %19 ret void } @@ -1275,53 +1275,53 @@ define internal fastcc void @mi_printf_amount(i64 noundef %0, i64 noundef range( store i8 0, ptr %5, align 16, !tbaa !38 %7 = icmp eq i64 %1, 1 %8 = select i1 %7, ptr @.str.39, ptr @.str.37 - %9 = icmp eq i64 %1, 0 - %10 = select i1 %9, i64 1000, i64 1024 - %11 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) - %12 = icmp samesign ult i64 %11, %10 - br i1 %12, label %13, label %20 - -13: ; preds = %4 - %.not53 = icmp eq i64 %0, 1 - %14 = load i8, ptr %8, align 1 - %.not54 = icmp eq i8 %14, 66 - %or.cond = select i1 %.not53, i1 %.not54, i1 false - br i1 %or.cond, label %31, label %15 - -15: ; preds = %13 - %16 = trunc i64 %0 to i32 - %17 = icmp eq i64 %0, 0 - %18 = select i1 %17, ptr @.str.35, ptr %8 - %19 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.40, i32 noundef %16, ptr noundef nonnull %18) #10 - br label %31 - -20: ; preds = %4 - %21 = select i1 %9, i64 1000000, i64 1048576 - %.not50 = icmp samesign ult i64 %11, %21 - %spec.select = select i1 %.not50, ptr @.str.41, ptr @.str.42 - %spec.select55 = select i1 %.not50, i64 %10, i64 %21 - %22 = mul nuw nsw i64 %spec.select55, %10 - %.not51 = icmp samesign ult i64 %11, %22 - %.144 = select i1 %.not51, ptr %spec.select, ptr @.str.43 - %.1 = select i1 %.not51, i64 %spec.select55, i64 %22 + %.not51 = icmp eq i64 %1, 0 + %9 = select i1 %.not51, i64 1000, i64 1024 + %10 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) + %11 = icmp samesign ult i64 %10, %9 + br i1 %11, label %12, label %19 + +12: ; preds = %4 + %.not52 = icmp eq i64 %0, 1 + %13 = load i8, ptr %8, align 1 + %.not53 = icmp eq i8 %13, 66 + %or.cond = select i1 %.not52, i1 %.not53, i1 false + br i1 %or.cond, label %30, label %14 + +14: ; preds = %12 + %15 = trunc i64 %0 to i32 + %16 = icmp eq i64 %0, 0 + %17 = select i1 %16, ptr @.str.35, ptr %8 + %18 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.40, i32 noundef %15, ptr noundef nonnull %17) #10 + br label %30 + +19: ; preds = %4 + %20 = select i1 %.not51, i64 1000000, i64 1048576 + %.not = icmp samesign ult i64 %10, %20 + %spec.select = select i1 %.not, ptr @.str.41, ptr @.str.42 + %spec.select54 = select i1 %.not, i64 %9, i64 %20 + %21 = mul nuw nsw i64 %spec.select54, %9 + %.not50 = icmp samesign ult i64 %10, %21 + %.144 = select i1 %.not50, ptr %spec.select, ptr @.str.43 + %.1 = select i1 %.not50, i64 %spec.select54, i64 %21 %.lhs.trunc = trunc nuw nsw i64 %.1 to i32 - %23 = udiv i32 %.lhs.trunc, 10 - %.zext = zext nneg i32 %23 to i64 - %24 = sdiv i64 %0, %.zext - %25 = sdiv i64 %24, 10 - %26 = srem i64 %24, 10 + %22 = udiv i32 %.lhs.trunc, 10 + %.zext = zext nneg i32 %22 to i64 + %23 = sdiv i64 %0, %.zext + %24 = sdiv i64 %23, 10 + %25 = srem i64 %23, 10 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %27 = select i1 %9, ptr @.str.35, ptr @.str.45 - %28 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 8, ptr noundef nonnull @.str.44, ptr noundef nonnull %.144, ptr noundef nonnull %27, ptr noundef nonnull %8) #10 - %29 = tail call i64 @llvm.abs.i64(i64 %26, i1 true) - %30 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.46, i64 noundef %25, i64 noundef %29, ptr noundef nonnull %6) #10 + %26 = select i1 %.not51, ptr @.str.35, ptr @.str.45 + %27 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 8, ptr noundef nonnull @.str.44, ptr noundef nonnull %.144, ptr noundef nonnull %26, ptr noundef nonnull %8) #10 + %28 = tail call i64 @llvm.abs.i64(i64 %25, i1 true) + %29 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 32, ptr noundef nonnull @.str.46, i64 noundef %24, i64 noundef %28, ptr noundef nonnull %6) #10 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %31 + br label %30 -31: ; preds = %13, %15, %20 - %32 = icmp eq ptr %3, null - %33 = select i1 %32, ptr @.str.36, ptr %3 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %5) #10 +30: ; preds = %12, %14, %19 + %31 = icmp eq ptr %3, null + %32 = select i1 %31, ptr @.str.36, ptr %3 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef nonnull %5) #10 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll b/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll index 4ccf4f196d7..707cb2b1f49 100644 --- a/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll +++ b/bench/base64-rs/optimized/3i18zkzed1c7jyoe.ll @@ -40,14 +40,14 @@ define void @_ZN6base646engine15general_purpose14GeneralPurpose3new17h640681ee2b %10 = trunc nuw nsw i64 %.06.i to i8 store i8 %10, ptr %9, align 1, !alias.scope !4, !noalias !7 %11 = add nuw nsw i64 %.06.i, 1 - %12 = icmp eq i64 %11, 64 - br i1 %12, label %_ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174E.exit, label %5 + %exitcond.not.i = icmp eq i64 %11, 64 + br i1 %exitcond.not.i, label %_ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174E.exit, label %5 _ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174E.exit: ; preds = %5 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %13, ptr noundef nonnull align 1 dereferenceable(64) %1, i64 64, i1 false) - %14 = getelementptr inbounds nuw i8, ptr %0, i64 67 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %14, ptr noundef nonnull align 1 dereferenceable(256) %4, i64 256, i1 false) + %12 = getelementptr inbounds nuw i8, ptr %0, i64 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %12, ptr noundef nonnull align 1 dereferenceable(64) %1, i64 64, i1 false) + %13 = getelementptr inbounds nuw i8, ptr %0, i64 67 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %13, ptr noundef nonnull align 1 dereferenceable(256) %4, i64 256, i1 false) store i24 %2, ptr %0, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void @@ -1270,8 +1270,8 @@ define void @_ZN6base646engine15general_purpose12decode_table17h6ca45a74b044c174 %9 = trunc nuw nsw i64 %.06 to i8 store i8 %9, ptr %8, align 1 %10 = add nuw nsw i64 %.06, 1 - %.not = icmp eq i64 %10, 64 - br i1 %.not, label %3, label %4 + %exitcond.not = icmp eq i64 %10, 64 + br i1 %exitcond.not, label %3, label %4 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll b/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll index ee4efa5e4e1..2b6d661b30d 100644 --- a/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll +++ b/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll @@ -104,8 +104,8 @@ define void @_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8f %11 = getelementptr inbounds nuw i8, ptr %4, i64 %.010 store i8 %10, ptr %11, align 1 %12 = add nuw nsw i64 %.010, 1 - %.not = icmp eq i64 %12, 64 - br i1 %.not, label %5, label %6 + %exitcond12.not = icmp eq i64 %12, 64 + br i1 %exitcond12.not, label %5, label %6 } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite) uwtable @@ -156,8 +156,8 @@ _ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit: ; pre 19: ; preds = %.backedge %20 = add nuw nsw i64 %.01926, 1 - %.not33 = icmp eq i64 %20, 64 - br i1 %.not33, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit, label %.preheader22 + %exitcond30.not = icmp eq i64 %20, 64 + br i1 %exitcond30.not, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit, label %.preheader22 .preheader: ; preds = %14, %.backedge %.025 = phi i64 [ %.0.be, %.backedge ], [ 0, %14 ] @@ -166,8 +166,8 @@ _ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit: ; pre .backedge: ; preds = %22, %.preheader %.0.be = add nuw nsw i64 %.025, 1 - %.not32 = icmp eq i64 %.0.be, 64 - br i1 %.not32, label %19, label %.preheader + %exitcond.not = icmp eq i64 %.0.be, 64 + br i1 %exitcond.not, label %19, label %.preheader 22: ; preds = %.preheader %23 = getelementptr inbounds nuw i8, ptr %1, i64 %.025 @@ -257,33 +257,33 @@ _ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i: ; p 18: ; preds = %.backedge.i %19 = add nuw nsw i64 %.01926.i, 1 - %20 = icmp eq i64 %19, 64 - br i1 %20, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, label %.preheader22.i + %exitcond30.not.i = icmp eq i64 %19, 64 + br i1 %exitcond30.not.i, label %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, label %.preheader22.i .preheader.i: ; preds = %13, %.backedge.i %.025.i = phi i64 [ %.0.be.i, %.backedge.i ], [ 0, %13 ] - %21 = icmp eq i64 %.025.i, %.01926.i - br i1 %21, label %.backedge.i, label %23 + %20 = icmp eq i64 %.025.i, %.01926.i + br i1 %20, label %.backedge.i, label %21 -.backedge.i: ; preds = %23, %.preheader.i +.backedge.i: ; preds = %21, %.preheader.i %.0.be.i = add nuw nsw i64 %.025.i, 1 - %22 = icmp eq i64 %.0.be.i, 64 - br i1 %22, label %18, label %.preheader.i - -23: ; preds = %.preheader.i - %24 = getelementptr inbounds nuw i8, ptr %1, i64 %.025.i - %25 = load i8, ptr %24, align 1, !alias.scope !14, !noalias !11, !noundef !4 - %26 = icmp eq i8 %8, %25 - br i1 %26, label %27, label %.backedge.i - -27: ; preds = %23 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 1 - store i8 1, ptr %28, align 1, !alias.scope !11, !noalias !14 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 2 - store i8 %8, ptr %29, align 1, !alias.scope !11, !noalias !14 + %exitcond.not.i = icmp eq i64 %.0.be.i, 64 + br i1 %exitcond.not.i, label %18, label %.preheader.i + +21: ; preds = %.preheader.i + %22 = getelementptr inbounds nuw i8, ptr %1, i64 %.025.i + %23 = load i8, ptr %22, align 1, !alias.scope !14, !noalias !11, !noundef !4 + %24 = icmp eq i8 %8, %23 + br i1 %24, label %25, label %.backedge.i + +25: ; preds = %21 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 1 + store i8 1, ptr %26, align 1, !alias.scope !11, !noalias !14 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 2 + store i8 %8, ptr %27, align 1, !alias.scope !11, !noalias !14 br label %_ZN6base648alphabet8Alphabet3new17h146b96448e6c844eE.exit -_ZN6base648alphabet8Alphabet3new17h146b96448e6c844eE.exit: ; preds = %4, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, %10, %15, %27 +_ZN6base648alphabet8Alphabet3new17h146b96448e6c844eE.exit: ; preds = %4, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i, %10, %15, %25 %.sink = phi i8 [ 1, %4 ], [ 0, %_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8fE.exit.i ], [ 1, %10 ], [ 1, %15 ], [ 1, %27 ] store i8 %.sink, ptr %0, align 1, !alias.scope !11, !noalias !14 ret void diff --git a/bench/bdwgc/optimized/cordxtra.ll b/bench/bdwgc/optimized/cordxtra.ll index e45e0d8d4b7..64f6174e6de 100644 --- a/bench/bdwgc/optimized/cordxtra.ll +++ b/bench/bdwgc/optimized/cordxtra.ll @@ -171,8 +171,8 @@ define i32 @CORD_cmp(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { call void @CORD_set_pos(ptr noundef nonnull %4, ptr noundef nonnull %1, i64 noundef 0) #16 %18 = getelementptr inbounds nuw i8, ptr %3, i64 8 %19 = load i32, ptr %18, align 8, !tbaa !13 - %.not4358 = icmp eq i32 %19, 1431655765 - br i1 %.not4358, label %._crit_edge, label %.lr.ph + %.not4359 = icmp eq i32 %19, 1431655765 + br i1 %.not4359, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %17 %20 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -315,11 +315,11 @@ define i32 @CORD_cmp(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { 97: ; preds = %91 call void @CORD__next(ptr noundef nonnull %3) #16 %.pre = load i64, ptr %4, align 16, !tbaa !18 - %.pre59 = load i64, ptr %22, align 16, !tbaa !17 + %.pre60 = load i64, ptr %22, align 16, !tbaa !17 br label %98 98: ; preds = %97, %96 - %99 = phi i64 [ %.pre59, %97 ], [ %38, %96 ] + %99 = phi i64 [ %.pre60, %97 ], [ %38, %96 ] %100 = phi i64 [ %.pre, %97 ], [ %39, %96 ] %101 = add i64 %100, %92 store i64 %101, ptr %4, align 16, !tbaa !18 @@ -367,8 +367,8 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @CORD_set_pos(ptr noundef nonnull %6, ptr noundef %0, i64 noundef %1) #16 call void @CORD_set_pos(ptr noundef nonnull %7, ptr noundef %2, i64 noundef %3) #16 - %.not71 = icmp eq i64 %4, 0 - br i1 %.not71, label %.thread63, label %.lr.ph + %.not72 = icmp eq i64 %4, 0 + br i1 %.not72, label %.thread63, label %.lr.ph .lr.ph: ; preds = %5 %8 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -382,7 +382,7 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde br label %16 16: ; preds = %.lr.ph, %.thread60 - %.03166 = phi i64 [ 0, %.lr.ph ], [ %.132, %.thread60 ] + %.03167 = phi i64 [ 0, %.lr.ph ], [ %.132, %.thread60 ] %17 = load i32, ptr %8, align 8, !tbaa !13 %.not = icmp eq i32 %17, 1431655765 %18 = load i32, ptr %9, align 8, !tbaa !13 @@ -482,7 +482,7 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde br label %.thread .thread: ; preds = %65, %66 - %67 = add nuw i64 %.03166, 1 + %67 = add nuw i64 %.03167, 1 br label %.thread60 68: ; preds = %52 @@ -493,7 +493,7 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde 72: ; preds = %27 %spec.select = call i64 @llvm.umin.i64(i64 %25, i64 %30) - %73 = add i64 %spec.select, %.03166 + %73 = add i64 %spec.select, %.03167 %74 = call i64 @llvm.usub.sat.i64(i64 %73, i64 %4) %.136 = sub i64 %spec.select, %74 %75 = load ptr, ptr %12, align 16, !tbaa !19 @@ -523,11 +523,11 @@ define i32 @CORD_ncmp(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 nounde 90: ; preds = %84 call void @CORD__next(ptr noundef nonnull %6) #16 %.pre = load i64, ptr %7, align 16, !tbaa !18 - %.pre72 = load i64, ptr %11, align 16, !tbaa !17 + %.pre73 = load i64, ptr %11, align 16, !tbaa !17 br label %91 91: ; preds = %90, %89 - %92 = phi i64 [ %.pre72, %90 ], [ %28, %89 ] + %92 = phi i64 [ %.pre73, %90 ], [ %28, %89 ] %93 = phi i64 [ %.pre, %90 ], [ %29, %89 ] %94 = add i64 %93, %85 store i64 %94, ptr %7, align 16, !tbaa !18 @@ -1364,49 +1364,49 @@ define internal fastcc ptr @CORD_from_file_lazy_inner(ptr noundef %0, i64 nounde unreachable 9: ; preds = %2 - %10 = icmp eq i64 %1, 0 - br i1 %10, label %20, label %11 + %.not = icmp eq i64 %1, 0 + br i1 %.not, label %19, label %10 -11: ; preds = %9 +10: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %12 = call i64 @fread(ptr noundef nonnull %3, i64 noundef 1, i64 noundef 1, ptr noundef %0) - %13 = icmp ugt i64 %12, 1 - br i1 %13, label %16, label %14 - -14: ; preds = %11 - %15 = tail call i32 @fseek(ptr noundef %0, i64 noundef 0, i32 noundef 0) - %.not14 = icmp eq i32 %15, 0 - br i1 %.not14, label %19, label %16 - -16: ; preds = %14, %11 - %17 = load ptr, ptr @stderr, align 8, !tbaa !3 - %18 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %17, ptr noundef nonnull @.str, ptr noundef nonnull @.str.5) #18 + %11 = call i64 @fread(ptr noundef nonnull %3, i64 noundef 1, i64 noundef 1, ptr noundef %0) + %12 = icmp ugt i64 %11, 1 + br i1 %12, label %15, label %13 + +13: ; preds = %10 + %14 = tail call i32 @fseek(ptr noundef %0, i64 noundef 0, i32 noundef 0) + %.not14 = icmp eq i32 %14, 0 + br i1 %.not14, label %18, label %15 + +15: ; preds = %13, %10 + %16 = load ptr, ptr @stderr, align 8, !tbaa !3 + %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %16, ptr noundef nonnull @.str, ptr noundef nonnull @.str.5) #18 tail call void @abort() #19 unreachable -19: ; preds = %14 +18: ; preds = %13 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %20 + br label %19 -20: ; preds = %19, %9 +19: ; preds = %18, %9 store ptr %0, ptr %4, align 8, !tbaa !34 - %21 = getelementptr inbounds nuw i8, ptr %4, i64 16 - br label %22 + %20 = getelementptr inbounds nuw i8, ptr %4, i64 16 + br label %21 -22: ; preds = %20, %22 +21: ; preds = %19, %21 %indvars.iv = phi i64 [ 0, %20 ], [ %indvars.iv.next, %22 ] - %23 = getelementptr inbounds nuw ptr, ptr %21, i64 %indvars.iv - store volatile ptr null, ptr %23, align 8, !tbaa !36 + %22 = getelementptr inbounds nuw ptr, ptr %20, i64 %indvars.iv + store volatile ptr null, ptr %22, align 8, !tbaa !36 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not = icmp eq i64 %indvars.iv.next, 32 - br i1 %.not, label %24, label %22, !llvm.loop !37 + %exitcond.not = icmp eq i64 %indvars.iv.next, 32 + br i1 %exitcond.not, label %23, label %21, !llvm.loop !37 -24: ; preds = %22 - %25 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 0, ptr %25, align 8, !tbaa !38 +23: ; preds = %21 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i64 0, ptr %24, align 8, !tbaa !38 tail call void @GC_register_finalizer(ptr noundef nonnull %4, ptr noundef nonnull @CORD_lf_close_proc, ptr noundef null, ptr noundef null, ptr noundef null) #16 - %26 = tail call ptr @CORD_from_fn(ptr noundef nonnull @CORD_lf_func, ptr noundef nonnull %4, i64 noundef %1) #16 - ret ptr %26 + %25 = tail call ptr @CORD_from_fn(ptr noundef nonnull @CORD_lf_func, ptr noundef nonnull %4, i64 noundef %1) #16 + ret ptr %25 } ; Function Attrs: nounwind uwtable diff --git a/bench/box2d/optimized/window.ll b/bench/box2d/optimized/window.ll index ee114dcdac6..4d26a6a2279 100644 --- a/bench/box2d/optimized/window.ll +++ b/bench/box2d/optimized/window.ll @@ -114,8 +114,8 @@ define hidden void @_glfwInputWindowFocus(ptr noundef %0, i32 noundef %1) local_ 17: ; preds = %9, %13 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not29 = icmp eq i64 %indvars.iv.next, 349 - br i1 %.not29, label %.preheader, label %9 + %exitcond.not = icmp eq i64 %indvars.iv.next, 349 + br i1 %exitcond.not, label %.preheader, label %9 18: ; preds = %.preheader, %24 %indvars.iv25 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next26, %24 ] @@ -131,8 +131,8 @@ define hidden void @_glfwInputWindowFocus(ptr noundef %0, i32 noundef %1) local_ 24: ; preds = %18, %22 %indvars.iv.next26 = add nuw nsw i64 %indvars.iv25, 1 - %.not30 = icmp eq i64 %indvars.iv.next26, 8 - br i1 %.not30, label %.loopexit, label %18 + %exitcond28.not = icmp eq i64 %indvars.iv.next26, 8 + br i1 %exitcond28.not, label %.loopexit, label %18 .loopexit: ; preds = %24, %6 ret void @@ -959,52 +959,52 @@ define void @glfwSetWindowIcon(ptr noundef %0, i32 noundef %1, ptr noundef %2) l 5: ; preds = %3 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65537, ptr noundef null) #7 - br label %20 + br label %19 6: ; preds = %3 %7 = icmp slt i32 %1, 0 - br i1 %7, label %9, label %.preheader + br i1 %7, label %8, label %.preheader .preheader: ; preds = %6 - %8 = icmp eq i32 %1, 0 - br i1 %8, label %._crit_edge, label %.lr.ph.preheader + %.not13 = icmp eq i32 %1, 0 + br i1 %.not13, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.preheader %wide.trip.count = zext nneg i32 %1 to i64 br label %.lr.ph -9: ; preds = %6 +8: ; preds = %6 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.3) #7 - br label %20 + br label %19 -10: ; preds = %14 +9: ; preds = %13 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %10 +.lr.ph: ; preds = %.lr.ph.preheader, %9 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %10 ] - %11 = getelementptr inbounds nuw %struct.GLFWimage, ptr %2, i64 %indvars.iv - %12 = load i32, ptr %11, align 8, !tbaa !224 - %13 = icmp slt i32 %12, 1 - br i1 %13, label %18, label %14 - -14: ; preds = %.lr.ph - %15 = getelementptr inbounds nuw i8, ptr %11, i64 4 - %16 = load i32, ptr %15, align 4, !tbaa !226 - %17 = icmp slt i32 %16, 1 - br i1 %17, label %18, label %10 - -18: ; preds = %14, %.lr.ph + %10 = getelementptr inbounds nuw %struct.GLFWimage, ptr %2, i64 %indvars.iv + %11 = load i32, ptr %10, align 8, !tbaa !224 + %12 = icmp slt i32 %11, 1 + br i1 %12, label %17, label %13 + +13: ; preds = %.lr.ph + %14 = getelementptr inbounds nuw i8, ptr %10, i64 4 + %15 = load i32, ptr %14, align 4, !tbaa !226 + %16 = icmp slt i32 %15, 1 + br i1 %16, label %17, label %9 + +17: ; preds = %13, %.lr.ph tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.4) #7 - br label %20 + br label %19 -._crit_edge: ; preds = %10, %.preheader - %19 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 296), align 8, !tbaa !227 +._crit_edge: ; preds = %9, %.preheader + %18 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 296), align 8, !tbaa !227 tail call void %19(ptr noundef %0, i32 noundef %1, ptr noundef %2) #7 - br label %20 + br label %19 -20: ; preds = %._crit_edge, %18, %9, %5 +19: ; preds = %._crit_edge, %17, %8, %5 ret void } @@ -1134,7 +1134,7 @@ define void @glfwSetWindowSizeLimits(ptr noundef %0, i32 noundef %1, i32 noundef 7: ; preds = %5 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65537, ptr noundef null) #7 - br label %36 + br label %33 8: ; preds = %5 %9 = icmp ne i32 %1, -1 @@ -1142,13 +1142,13 @@ define void @glfwSetWindowSizeLimits(ptr noundef %0, i32 noundef %1, i32 noundef %or.cond = and i1 %9, %10 br i1 %or.cond, label %11, label %15 -11: ; preds = %8 +16: ; preds = %8 %12 = icmp slt i32 %1, -1 - %13 = icmp slt i32 %2, -1 + %or.cond7.not = icmp slt i32 %2, -1 %or.cond3 = or i1 %12, %13 br i1 %or.cond3, label %14, label %15 -14: ; preds = %11 +20: ; preds = %16 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.5, i32 noundef %1, i32 noundef %2) #7 br label %36 @@ -1170,34 +1170,34 @@ define void @glfwSetWindowSizeLimits(ptr noundef %0, i32 noundef %1, i32 noundef 23: ; preds = %18 tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65540, ptr noundef nonnull @.str.6, i32 noundef %3, i32 noundef %4) #7 - br label %36 - -24: ; preds = %18, %15 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 104 - store i32 %1, ptr %25, align 8, !tbaa !232 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 108 - store i32 %2, ptr %26, align 4, !tbaa !233 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 %3, ptr %27, align 8, !tbaa !234 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 116 - store i32 %4, ptr %28, align 4, !tbaa !235 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %30 = load ptr, ptr %29, align 8, !tbaa !137 - %.not41 = icmp eq ptr %30, null - br i1 %.not41, label %31, label %36 - -31: ; preds = %24 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %33 = load i32, ptr %32, align 8, !tbaa !163 - %.not42 = icmp eq i32 %33, 0 - br i1 %.not42, label %36, label %34 - -34: ; preds = %31 - %35 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 336), align 8, !tbaa !236 + br label %33 + +21: ; preds = %18, %15 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 104 + store i32 %1, ptr %22, align 8, !tbaa !232 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 108 + store i32 %2, ptr %23, align 4, !tbaa !233 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 %3, ptr %24, align 8, !tbaa !234 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 116 + store i32 %4, ptr %25, align 4, !tbaa !235 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %27 = load ptr, ptr %26, align 8, !tbaa !137 + %.not41 = icmp eq ptr %27, null + br i1 %.not41, label %28, label %33 + +28: ; preds = %21 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %30 = load i32, ptr %29, align 8, !tbaa !163 + %.not42 = icmp eq i32 %30, 0 + br i1 %.not42, label %33, label %31 + +31: ; preds = %28 + %32 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_glfw, i64 336), align 8, !tbaa !236 tail call void %35(ptr noundef nonnull %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #7 - br label %36 + br label %33 -36: ; preds = %24, %31, %34, %23, %14, %7 +33: ; preds = %21, %28, %31, %23, %14, %7 ret void } diff --git a/bench/chibicc/optimized/codegen.ll b/bench/chibicc/optimized/codegen.ll index 837a5d9ee5b..62e1a29d93b 100644 --- a/bench/chibicc/optimized/codegen.ll +++ b/bench/chibicc/optimized/codegen.ll @@ -363,38 +363,38 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add store ptr %1, ptr @output_file, align 8, !tbaa !7 %3 = tail call ptr @get_input_files() #13 %4 = load ptr, ptr %3, align 8, !tbaa !12 - %.not24 = icmp eq ptr %4, null - br i1 %.not24, label %._crit_edge, label %.lr.ph + %.not23 = icmp eq ptr %4, null + br i1 %.not23, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %2 - %.not81.i = icmp eq ptr %0, null - br i1 %.not81.i, label %emit_text.exit, label %.lr.ph84.i + %.not82.i = icmp eq ptr %0, null + br i1 %.not82.i, label %emit_text.exit, label %.lr.ph85.i -.lr.ph84.i: ; preds = %._crit_edge, %71 - %.082.i = phi ptr [ %72, %71 ], [ %0, %._crit_edge ] - %5 = getelementptr inbounds nuw i8, ptr %.082.i, i64 44 +.lr.ph85.i: ; preds = %._crit_edge, %71 + %.083.i = phi ptr [ %72, %71 ], [ %0, %._crit_edge ] + %5 = getelementptr inbounds nuw i8, ptr %.083.i, i64 44 %6 = load i8, ptr %5, align 4, !tbaa !13, !range !25, !noundef !26 %7 = trunc nuw i8 %6 to i1 br i1 %7, label %8, label %71 -8: ; preds = %.lr.ph84.i - %9 = getelementptr inbounds nuw i8, ptr %.082.i, i64 80 - %.05368.i = load ptr, ptr %9, align 8, !tbaa !27 - %.not6369.i = icmp eq ptr %.05368.i, null - br i1 %.not6369.i, label %._crit_edge.i, label %.lr.ph.i +8: ; preds = %.lr.ph85.i + %9 = getelementptr inbounds nuw i8, ptr %.083.i, i64 80 + %.05369.i = load ptr, ptr %9, align 8, !tbaa !27 + %.not6370.i = icmp eq ptr %.05369.i, null + br i1 %.not6370.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.i: ; preds = %47, %8 - %10 = getelementptr inbounds nuw i8, ptr %.082.i, i64 96 - %.04874.i = load ptr, ptr %10, align 8, !tbaa !27 - %.not6475.i = icmp eq ptr %.04874.i, null - br i1 %.not6475.i, label %._crit_edge80.i, label %.lr.ph79.i + %10 = getelementptr inbounds nuw i8, ptr %.083.i, i64 96 + %.04875.i = load ptr, ptr %10, align 8, !tbaa !27 + %.not6476.i = icmp eq ptr %.04875.i, null + br i1 %.not6476.i, label %._crit_edge81.i, label %.lr.ph80.i .lr.ph.i: ; preds = %8, %47 - %.05373.i = phi ptr [ %.053.i, %47 ], [ %.05368.i, %8 ] - %.05072.i = phi i32 [ %.1.i, %47 ], [ 16, %8 ] - %.05471.i = phi i32 [ %.3.i, %47 ], [ 0, %8 ] - %.05670.i = phi i32 [ %.359.i, %47 ], [ 0, %8 ] - %11 = getelementptr inbounds nuw i8, ptr %.05373.i, i64 16 + %.05374.i = phi ptr [ %.053.i, %47 ], [ %.05369.i, %8 ] + %.05073.i = phi i32 [ %.1.i, %47 ], [ 16, %8 ] + %.05472.i = phi i32 [ %.3.i, %47 ], [ 0, %8 ] + %.05671.i = phi i32 [ %.359.i, %47 ], [ 0, %8 ] + %11 = getelementptr inbounds nuw i8, ptr %.05374.i, i64 16 %12 = load ptr, ptr %11, align 8, !tbaa !28 %13 = load i32, ptr %12, align 8, !tbaa !29 switch i32 %13, label %37 [ @@ -415,7 +415,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %19 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %12, i32 noundef 0, i32 noundef 8, i32 noundef 0) %20 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %12, i32 noundef 8, i32 noundef 16, i32 noundef 8) %21 = zext i1 %19 to i32 - %22 = add nsw i32 %.05471.i, %21 + %22 = add nsw i32 %.05472.i, %21 %23 = zext i1 %20 to i32 %24 = add nsw i32 %22, %23 %25 = icmp slt i32 %24, 8 @@ -424,7 +424,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add 26: ; preds = %18 %27 = xor i1 %19, true %28 = zext i1 %27 to i32 - %29 = add nsw i32 %.05670.i, %28 + %29 = add nsw i32 %.05671.i, %28 %30 = xor i1 %20, true %31 = zext i1 %30 to i32 %32 = add nsw i32 %29, %31 @@ -432,22 +432,22 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br i1 %33, label %47, label %.thread.i 34: ; preds = %.lr.ph.i, %.lr.ph.i - %35 = add nsw i32 %.05471.i, 1 - %36 = icmp slt i32 %.05471.i, 8 + %35 = add nsw i32 %.05472.i, 1 + %36 = icmp slt i32 %.05472.i, 8 br i1 %36, label %47, label %.thread.i 37: ; preds = %.lr.ph.i - %38 = add nsw i32 %.05670.i, 1 - %39 = icmp slt i32 %.05670.i, 6 + %38 = add nsw i32 %.05671.i, 1 + %39 = icmp slt i32 %.05671.i, 6 br i1 %39, label %47, label %.thread.i .thread.i: ; preds = %37, %34, %26, %18, %14, %.lr.ph.i - %.157.i = phi i32 [ %38, %37 ], [ %.05670.i, %14 ], [ %.05670.i, %34 ], [ %.05670.i, %.lr.ph.i ], [ %.05670.i, %18 ], [ %.05670.i, %26 ] - %.155.i = phi i32 [ %.05471.i, %37 ], [ %.05471.i, %14 ], [ %35, %34 ], [ %.05471.i, %.lr.ph.i ], [ %.05471.i, %18 ], [ %.05471.i, %26 ] - %40 = add i32 %.05072.i, 7 + %.157.i = phi i32 [ %38, %37 ], [ %.05671.i, %14 ], [ %.05671.i, %34 ], [ %.05671.i, %.lr.ph.i ], [ %.05671.i, %18 ], [ %.05671.i, %26 ] + %.155.i = phi i32 [ %.05472.i, %37 ], [ %.05472.i, %14 ], [ %35, %34 ], [ %.05472.i, %.lr.ph.i ], [ %.05472.i, %18 ], [ %.05472.i, %26 ] + %40 = add i32 %.05073.i, 7 %41 = srem i32 %40, 8 %42 = sub nsw i32 %40, %41 - %43 = getelementptr inbounds nuw i8, ptr %.05373.i, i64 40 + %43 = getelementptr inbounds nuw i8, ptr %.05374.i, i64 40 store i32 %42, ptr %43, align 8, !tbaa !33 %44 = getelementptr inbounds nuw i8, ptr %12, i64 4 %45 = load i32, ptr %44, align 4, !tbaa !32 @@ -455,35 +455,35 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br label %47 47: ; preds = %.thread.i, %37, %34, %26 - %.359.i = phi i32 [ %.157.i, %.thread.i ], [ %.05670.i, %34 ], [ %38, %37 ], [ %32, %26 ] - %.3.i = phi i32 [ %.155.i, %.thread.i ], [ %35, %34 ], [ %.05471.i, %37 ], [ %24, %26 ] - %.1.i = phi i32 [ %46, %.thread.i ], [ %.05072.i, %34 ], [ %.05072.i, %37 ], [ %.05072.i, %26 ] - %.053.i = load ptr, ptr %.05373.i, align 8, !tbaa !27 + %.359.i = phi i32 [ %.157.i, %.thread.i ], [ %.05671.i, %34 ], [ %38, %37 ], [ %32, %26 ] + %.3.i = phi i32 [ %.155.i, %.thread.i ], [ %35, %34 ], [ %.05472.i, %37 ], [ %24, %26 ] + %.1.i = phi i32 [ %46, %.thread.i ], [ %.05073.i, %34 ], [ %.05073.i, %37 ], [ %.05073.i, %26 ] + %.053.i = load ptr, ptr %.05374.i, align 8, !tbaa !27 %.not63.i = icmp eq ptr %.053.i, null br i1 %.not63.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !34 -._crit_edge80.loopexit.i: ; preds = %70 +._crit_edge81.loopexit.i: ; preds = %70 %48 = add i32 %.152.i, 15 - br label %._crit_edge80.i + br label %._crit_edge81.i -._crit_edge80.i: ; preds = %._crit_edge80.loopexit.i, %._crit_edge.i +._crit_edge81.i: ; preds = %._crit_edge81.loopexit.i, %._crit_edge.i %.051.lcssa.i = phi i32 [ 15, %._crit_edge.i ], [ %48, %._crit_edge80.loopexit.i ] %49 = srem i32 %.051.lcssa.i, 16 %50 = sub nsw i32 %.051.lcssa.i, %49 - %51 = getelementptr inbounds nuw i8, ptr %.082.i, i64 120 + %51 = getelementptr inbounds nuw i8, ptr %.083.i, i64 120 store i32 %50, ptr %51, align 8, !tbaa !36 br label %71 -.lr.ph79.i: ; preds = %._crit_edge.i, %70 - %.04877.i = phi ptr [ %.048.i, %70 ], [ %.04874.i, %._crit_edge.i ] - %.05176.i = phi i32 [ %.152.i, %70 ], [ 0, %._crit_edge.i ] - %52 = getelementptr inbounds nuw i8, ptr %.04877.i, i64 40 +.lr.ph80.i: ; preds = %._crit_edge.i, %70 + %.04878.i = phi ptr [ %.048.i, %70 ], [ %.04875.i, %._crit_edge.i ] + %.05177.i = phi i32 [ %.152.i, %70 ], [ 0, %._crit_edge.i ] + %52 = getelementptr inbounds nuw i8, ptr %.04878.i, i64 40 %53 = load i32, ptr %52, align 8, !tbaa !33 %.not65.i = icmp eq i32 %53, 0 - br i1 %.not65.i, label %._crit_edge86.i, label %70 + br i1 %.not65.i, label %._crit_edge87.i, label %70 -._crit_edge86.i: ; preds = %.lr.ph79.i - %54 = getelementptr inbounds nuw i8, ptr %.04877.i, i64 16 +._crit_edge87.i: ; preds = %.lr.ph80.i + %54 = getelementptr inbounds nuw i8, ptr %.04878.i, i64 16 %55 = load ptr, ptr %54, align 8, !tbaa !28 %56 = load i32, ptr %55, align 8, !tbaa !29 %57 = icmp eq i32 %56, 12 @@ -491,11 +491,11 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %59 = load i32, ptr %58, align 4, !tbaa !32 %60 = icmp sgt i32 %59, 15 %or.cond.i = select i1 %57, i1 %60, i1 false - %61 = getelementptr inbounds nuw i8, ptr %.04877.i, i64 36 + %61 = getelementptr inbounds nuw i8, ptr %.04878.i, i64 36 %62 = load i32, ptr %61, align 4, !tbaa !37 %spec.select.i = tail call i32 @llvm.smax.i32(i32 %62, i32 16) %63 = select i1 %or.cond.i, i32 %spec.select.i, i32 %62 - %64 = add i32 %.05176.i, -1 + %64 = add i32 %.05177.i, -1 %65 = add i32 %64, %59 %66 = add i32 %65, %63 %67 = srem i32 %66, %63 @@ -504,16 +504,16 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add store i32 %69, ptr %52, align 8, !tbaa !33 br label %70 -70: ; preds = %._crit_edge86.i, %.lr.ph79.i - %.152.i = phi i32 [ %.05176.i, %.lr.ph79.i ], [ %68, %._crit_edge86.i ] - %.048.i = load ptr, ptr %.04877.i, align 8, !tbaa !27 +70: ; preds = %._crit_edge87.i, %.lr.ph80.i + %.152.i = phi i32 [ %.05177.i, %.lr.ph79.i ], [ %68, %._crit_edge86.i ] + %.048.i = load ptr, ptr %.04878.i, align 8, !tbaa !27 %.not64.i = icmp eq ptr %.048.i, null - br i1 %.not64.i, label %._crit_edge80.loopexit.i, label %.lr.ph79.i, !llvm.loop !38 + br i1 %.not64.i, label %._crit_edge81.loopexit.i, label %.lr.ph80.i, !llvm.loop !38 -71: ; preds = %._crit_edge80.i, %.lr.ph84.i - %72 = load ptr, ptr %.082.i, align 8, !tbaa !39 +71: ; preds = %._crit_edge81.i, %.lr.ph85.i + %72 = load ptr, ptr %.083.i, align 8, !tbaa !39 %.not.i = icmp eq ptr %72, null - br i1 %.not.i, label %.lr.ph49.i, label %.lr.ph84.i, !llvm.loop !40 + br i1 %.not.i, label %.lr.ph49.i, label %.lr.ph85.i, !llvm.loop !40 .lr.ph49.i: ; preds = %71, %.loopexit.i %.04148.i = phi ptr [ %160, %.loopexit.i ], [ %0, %71 ] @@ -722,16 +722,16 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %189 = getelementptr inbounds nuw i8, ptr %.0128.i, i64 80 %.082113.i = load ptr, ptr %189, align 8, !tbaa !27 %.not91114.i = icmp eq ptr %.082113.i, null - br i1 %.not91114.i, label %._crit_edge.i20, label %.lr.ph.i18 + br i1 %.not91114.i, label %._crit_edge.i19, label %.lr.ph.i18 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i18 %.pre.i = load ptr, ptr %186, align 8, !tbaa !61 %190 = shl nsw i32 %.186.i, 3 %191 = shl nsw i32 %.184.i, 3 %192 = add nuw nsw i32 %191, 48 - br label %._crit_edge.i20 + br label %._crit_edge.i19 -._crit_edge.i20: ; preds = %._crit_edge.loopexit.i, %188 +._crit_edge.i19: ; preds = %._crit_edge.loopexit.i, %188 %193 = phi ptr [ %187, %188 ], [ %.pre.i, %._crit_edge.loopexit.i ] %.085.lcssa.i = phi i32 [ 0, %188 ], [ %190, %._crit_edge.loopexit.i ] %.083.lcssa.i = phi i32 [ 48, %188 ], [ %192, %._crit_edge.loopexit.i ] @@ -777,7 +777,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add br label %218 .lr.ph.i18: ; preds = %188, %.lr.ph.i18 - %.082117.i = phi ptr [ %.082.i19, %.lr.ph.i18 ], [ %.082113.i, %188 ] + %.082117.i = phi ptr [ %.082.i, %.lr.ph.i18 ], [ %.082113.i, %188 ] %.083116.i = phi i32 [ %.184.i, %.lr.ph.i18 ], [ 0, %188 ] %.085115.i = phi i32 [ %.186.i, %.lr.ph.i18 ], [ 0, %188 ] %213 = getelementptr inbounds nuw i8, ptr %.082117.i, i64 16 @@ -788,11 +788,11 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %.186.i = add nuw nsw i32 %.085115.i, %216 %217 = zext i1 %215 to i32 %.184.i = add nuw nsw i32 %.083116.i, %217 - %.082.i19 = load ptr, ptr %.082117.i, align 8, !tbaa !27 - %.not91.i = icmp eq ptr %.082.i19, null + %.082.i = load ptr, ptr %.082117.i, align 8, !tbaa !27 + %.not91.i = icmp eq ptr %.082.i, null br i1 %.not91.i, label %._crit_edge.loopexit.i, label %.lr.ph.i18, !llvm.loop !62 -218: ; preds = %._crit_edge.i20, %172 +218: ; preds = %._crit_edge.i19, %172 %219 = getelementptr inbounds nuw i8, ptr %.0128.i, i64 80 %.076119.i = load ptr, ptr %219, align 8, !tbaa !27 %.not92120.i = icmp eq ptr %.076119.i, null @@ -809,7 +809,7 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add .lr.ph125.i: ; preds = %218, %store_gp.exit102.i %.076123.i = phi ptr [ %.076.i, %store_gp.exit102.i ], [ %.076119.i, %218 ] - %.077122.i = phi i32 [ %.1.i21, %store_gp.exit102.i ], [ 0, %218 ] + %.077122.i = phi i32 [ %.1.i20, %store_gp.exit102.i ], [ 0, %218 ] %.078121.i = phi i32 [ %.179.i, %store_gp.exit102.i ], [ 0, %218 ] %225 = getelementptr inbounds nuw i8, ptr %.076123.i, i64 40 %226 = load i32, ptr %225, align 8, !tbaa !33 @@ -831,12 +831,12 @@ define dso_local void @codegen(ptr noundef %0, ptr noundef %1) local_unnamed_add %233 = tail call fastcc zeroext i1 @has_flonum(ptr noundef nonnull %230, i32 noundef 0, i32 noundef 8, i32 noundef 0) %234 = getelementptr inbounds nuw i8, ptr %230, i64 4 %235 = load i32, ptr %234, align 4, !tbaa !32 - %spec.select.i22 = tail call i32 @llvm.smin.i32(i32 %235, i32 8) + %spec.select.i21 = tail call i32 @llvm.smin.i32(i32 %235, i32 8) br i1 %233, label %236, label %240 236: ; preds = %232 %237 = add nsw i32 %.077122.i, 1 - switch i32 %spec.select.i22, label %239 [ + switch i32 %spec.select.i21, label %239 [ i32 4, label %store_fp.exit.i i32 8, label %238 ] @@ -855,12 +855,12 @@ store_fp.exit.i: ; preds = %238, %236 240: ; preds = %232 %241 = add nsw i32 %.078121.i, 1 - %242 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %spec.select.i22) + %242 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %spec.select.i21) %243 = icmp eq i32 %242, 1 br i1 %243, label %.split.i.i, label %246 .split.i.i: ; preds = %240 - %244 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %spec.select.i22, i1 true) + %244 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %spec.select.i21, i1 true) %245 = icmp samesign ult i32 %244, 4 br i1 %245, label %switch.lookup, label %246 @@ -882,7 +882,7 @@ store_fp.exit.i: ; preds = %238, %236 %254 = load ptr, ptr %251, align 8, !tbaa !53 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.51, ptr noundef %254) %255 = add nuw nsw i32 %.016.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %255, %spec.select.i22 + %exitcond.not.i.i = icmp eq i32 %255, %spec.select.i21 br i1 %exitcond.not.i.i, label %store_gp.exit.i, label %252, !llvm.loop !64 switch.lookup: ; preds = %.split.i.i @@ -937,7 +937,7 @@ store_fp.exit95.i: ; preds = %268, %266 .split.i99.i: ; preds = %270 %275 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %272, i1 true) %276 = icmp samesign ult i32 %275, 4 - br i1 %276, label %switch.lookup40, label %.lr.ph.i96.i + br i1 %276, label %switch.lookup39, label %.lr.ph.i96.i .lr.ph.i96.i: ; preds = %.split.i99.i, %270 %277 = sext i32 %.280.i to i64 @@ -956,12 +956,12 @@ store_fp.exit95.i: ; preds = %268, %266 %exitcond.not.i98.i = icmp eq i32 %284, %272 br i1 %exitcond.not.i98.i, label %store_gp.exit102.i, label %281, !llvm.loop !64 -switch.lookup40: ; preds = %.split.i99.i +switch.lookup39: ; preds = %.split.i99.i %285 = zext nneg i32 %275 to i64 - %switch.gep41 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %285 - %switch.load42 = load ptr, ptr %switch.gep41, align 8 + %switch.gep40 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %285 + %switch.load41 = load ptr, ptr %switch.gep40, align 8 %286 = sext i32 %.280.i to i64 - %287 = getelementptr inbounds ptr, ptr %switch.load42, i64 %286 + %287 = getelementptr inbounds ptr, ptr %switch.load41, i64 %286 %288 = load ptr, ptr %287, align 8, !tbaa !53 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %288, i32 noundef %265) br label %store_gp.exit102.i @@ -998,7 +998,7 @@ store_fp.exit104.i: ; preds = %293, %289 .split.i108.i: ; preds = %295 %301 = tail call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %298, i1 true) %302 = icmp samesign ult i32 %301, 4 - br i1 %302, label %switch.lookup43, label %303 + br i1 %302, label %switch.lookup42, label %303 303: ; preds = %.split.i108.i, %295 %304 = icmp sgt i32 %298, 0 @@ -1021,19 +1021,19 @@ store_fp.exit104.i: ; preds = %293, %289 %exitcond.not.i107.i = icmp eq i32 %312, %298 br i1 %exitcond.not.i107.i, label %store_gp.exit102.i, label %309, !llvm.loop !64 -switch.lookup43: ; preds = %.split.i108.i +switch.lookup42: ; preds = %.split.i108.i %313 = zext nneg i32 %301 to i64 - %switch.gep44 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %313 - %switch.load45 = load ptr, ptr %switch.gep44, align 8 + %switch.gep43 = getelementptr inbounds nuw ptr, ptr @switch.table.codegen.2, i64 %313 + %switch.load44 = load ptr, ptr %switch.gep43, align 8 %314 = sext i32 %.078121.i to i64 - %315 = getelementptr inbounds ptr, ptr %switch.load45, i64 %314 + %315 = getelementptr inbounds ptr, ptr %switch.load44, i64 %314 %316 = load ptr, ptr %315, align 8, !tbaa !53 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.50, ptr noundef %316, i32 noundef %226) br label %store_gp.exit102.i -store_gp.exit102.i: ; preds = %281, %309, %switch.lookup43, %303, %store_fp.exit104.i, %switch.lookup40, %store_fp.exit95.i, %store_gp.exit.i, %.lr.ph125.i +store_gp.exit102.i: ; preds = %281, %309, %switch.lookup42, %303, %store_fp.exit104.i, %switch.lookup39, %store_fp.exit95.i, %store_gp.exit.i, %.lr.ph125.i %.179.i = phi i32 [ %.078121.i, %.lr.ph125.i ], [ %.280.i, %store_fp.exit95.i ], [ %.280.i, %store_gp.exit.i ], [ %.078121.i, %store_fp.exit104.i ], [ %271, %switch.lookup40 ], [ %296, %303 ], [ %296, %switch.lookup43 ], [ %296, %309 ], [ %271, %281 ] - %.1.i21 = phi i32 [ %.077122.i, %.lr.ph125.i ], [ %267, %store_fp.exit95.i ], [ %.2.i, %store_gp.exit.i ], [ %290, %store_fp.exit104.i ], [ %.2.i, %switch.lookup40 ], [ %.077122.i, %303 ], [ %.077122.i, %switch.lookup43 ], [ %.077122.i, %309 ], [ %.2.i, %281 ] + %.1.i20 = phi i32 [ %.077122.i, %.lr.ph125.i ], [ %267, %store_fp.exit95.i ], [ %.2.i, %store_gp.exit.i ], [ %290, %store_fp.exit104.i ], [ %.2.i, %switch.lookup40 ], [ %.077122.i, %303 ], [ %.077122.i, %switch.lookup43 ], [ %.077122.i, %309 ], [ %.2.i, %281 ] %.076.i = load ptr, ptr %.076123.i, align 8, !tbaa !27 %.not92.i = icmp eq ptr %.076.i, null br i1 %.not92.i, label %._crit_edge126.i, label %.lr.ph125.i, !llvm.loop !65 @@ -3235,7 +3235,7 @@ define internal fastcc void @copy_struct_reg() unnamed_addr #3 { %14 = icmp ult i32 %.02532, 8 br i1 %14, label %select.unfold, label %.loopexit31 -select.unfold: ; preds = %10, %select.unfold +select.unfold.preheader: ; preds = %10, %select.unfold %.02533 = phi i32 [ %.025, %select.unfold ], [ %.02532, %10 ] tail call void (ptr, ...) @println(ptr noundef nonnull @.str.271) tail call void (ptr, ...) @println(ptr noundef nonnull @.str.272, i32 noundef %.02533) @@ -3271,11 +3271,11 @@ select.unfold29.preheader: ; preds = %22 br label %select.unfold29 select.unfold29: ; preds = %select.unfold29.preheader, %select.unfold29 - %.0.in34 = phi i32 [ %.0, %select.unfold29 ], [ %27, %select.unfold29.preheader ] - %.0 = add nsw i32 %.0.in34, -1 + %.0.in33 = phi i32 [ %.0, %select.unfold29 ], [ %27, %select.unfold29.preheader ] + %.0 = add nsw i32 %.0.in33, -1 tail call void (ptr, ...) @println(ptr noundef nonnull @.str.275, ptr noundef nonnull %24) tail call void (ptr, ...) @println(ptr noundef nonnull @.str.276, i32 noundef %.0, ptr noundef nonnull %23) - %28 = icmp samesign ugt i32 %.0.in34, 9 + %28 = icmp samesign ugt i32 %.0.in33, 9 br i1 %28, label %select.unfold29, label %.loopexit, !llvm.loop !127 .loopexit: ; preds = %select.unfold29, %22, %21, %.loopexit31 diff --git a/bench/clamav/optimized/regex_pcre.ll b/bench/clamav/optimized/regex_pcre.ll index eb78ee6eed7..9c33fdf2189 100644 --- a/bench/clamav/optimized/regex_pcre.ll +++ b/bench/clamav/optimized/regex_pcre.ll @@ -30,7 +30,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define ptr @cli_pcre_malloc(i64 noundef %0, ptr readnone captures(none) %1) #0 { - %3 = tail call ptr @cli_max_malloc(i64 noundef %0) #7 + %3 = tail call ptr @cli_max_malloc(i64 noundef %0) #6 ret ptr %3 } @@ -38,7 +38,7 @@ declare ptr @cli_max_malloc(i64 noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable define void @cli_pcre_free(ptr noundef captures(none) %0, ptr readnone captures(none) %1) #2 { - tail call void @free(ptr noundef %0) #7 + tail call void @free(ptr noundef %0) #6 ret void } @@ -99,7 +99,7 @@ define range(i32 0, 28) i32 @cli_pcre_addoptions(ptr noundef captures(address_is 19: ; preds = %18 %20 = sext i8 %11 to i32 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str, i32 noundef %20) #7 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str, i32 noundef %20) #6 br label %.loopexit 21: ; preds = %9, %17, %16, %15, %14, %13, %12 @@ -135,26 +135,26 @@ define range(i32 0, 21) i32 @cli_pcre_compile(ptr noundef captures(address_is_nu br i1 %.not33, label %12, label %13 12: ; preds = %9, %5 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.1) #7 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.1) #6 br label %41 13: ; preds = %9 - %14 = tail call ptr @pcre2_general_context_create_8(ptr noundef nonnull @cli_pcre_malloc, ptr noundef nonnull @cli_pcre_free, ptr noundef null) #7 + %14 = tail call ptr @pcre2_general_context_create_8(ptr noundef nonnull @cli_pcre_malloc, ptr noundef nonnull @cli_pcre_free, ptr noundef null) #6 %.not34 = icmp eq ptr %14, null br i1 %.not34, label %15, label %16 15: ; preds = %13 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.2) #7 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.2) #6 br label %41 16: ; preds = %13 - %17 = tail call ptr @pcre2_compile_context_create_8(ptr noundef nonnull %14) #7 + %17 = tail call ptr @pcre2_compile_context_create_8(ptr noundef nonnull %14) #6 %.not35 = icmp eq ptr %17, null br i1 %.not35, label %18, label %19 18: ; preds = %16 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.3) #7 - tail call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.3) #6 + tail call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 br label %41 19: ; preds = %16 @@ -169,7 +169,7 @@ define range(i32 0, 21) i32 @cli_pcre_compile(ptr noundef captures(address_is_nu 24: ; preds = %19, %21 %.sink = phi i32 [ %23, %21 ], [ %3, %19 ] - %25 = call ptr @pcre2_compile_8(ptr noundef %20, i64 noundef -1, i32 noundef %.sink, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %17) #7 + %25 = call ptr @pcre2_compile_8(ptr noundef %20, i64 noundef -1, i32 noundef %.sink, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %17) #6 store ptr %25, ptr %0, align 8, !tbaa !15 %26 = icmp eq ptr %25, null br i1 %26, label %27, label %31 @@ -177,35 +177,35 @@ define range(i32 0, 21) i32 @cli_pcre_compile(ptr noundef captures(address_is_nu 27: ; preds = %24 call void @llvm.lifetime.start.p0(ptr nonnull %8) %28 = load i32, ptr %6, align 4, !tbaa !16 - %29 = call i32 @pcre2_get_error_message_8(i32 noundef %28, ptr noundef nonnull %8, i64 noundef 256) #7 + %29 = call i32 @pcre2_get_error_message_8(i32 noundef %28, ptr noundef nonnull %8, i64 noundef 256) #6 %30 = load i64, ptr %7, align 8, !tbaa !17 - call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.4, i64 noundef %30, ptr noundef nonnull %8) #7 - call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #7 - call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 + call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.4, i64 noundef %30, ptr noundef nonnull %8) #6 + call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #6 + call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %41 31: ; preds = %24 - %32 = call ptr @pcre2_match_context_create_8(ptr noundef nonnull %14) #7 + %32 = call ptr @pcre2_match_context_create_8(ptr noundef nonnull %14) #6 %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %32, ptr %33, align 8, !tbaa !19 %.not37 = icmp eq ptr %32, null br i1 %.not37, label %34, label %35 34: ; preds = %31 - call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.5) #7 - call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #7 - call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 + call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.5) #6 + call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #6 + call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 br label %41 35: ; preds = %31 %36 = trunc i64 %1 to i32 - %37 = call i32 @pcre2_set_match_limit_8(ptr noundef nonnull %32, i32 noundef %36) #7 + %37 = call i32 @pcre2_set_match_limit_8(ptr noundef nonnull %32, i32 noundef %36) #6 %38 = load ptr, ptr %33, align 8, !tbaa !19 %39 = trunc i64 %2 to i32 - %40 = call i32 @pcre2_set_recursion_limit_8(ptr noundef %38, i32 noundef %39) #7 - call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #7 - call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #7 + %40 = call i32 @pcre2_set_recursion_limit_8(ptr noundef %38, i32 noundef %39) #6 + call void @pcre2_compile_context_free_8(ptr noundef nonnull %17) #6 + call void @pcre2_general_context_free_8(ptr noundef nonnull %14) #6 br label %41 41: ; preds = %35, %34, %27, %18, %15, %12 @@ -240,7 +240,7 @@ define i32 @cli_pcre_match(ptr noundef readonly captures(none) %0, ptr noundef % %9 = load ptr, ptr %8, align 8, !tbaa !20 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 %11 = load ptr, ptr %10, align 8, !tbaa !19 - %12 = tail call i32 @pcre2_match_8(ptr noundef %7, ptr noundef %1, i64 noundef %2, i64 noundef %3, i32 noundef %4, ptr noundef %9, ptr noundef %11) #7 + %12 = tail call i32 @pcre2_match_8(ptr noundef %7, ptr noundef %1, i64 noundef %2, i64 noundef %3, i32 noundef %4, ptr noundef %9, ptr noundef %11) #6 %or.cond = icmp slt i32 %12, -1 br i1 %or.cond, label %13, label %18 @@ -253,20 +253,20 @@ define i32 @cli_pcre_match(ptr noundef readonly captures(none) %0, ptr noundef % ] 14: ; preds = %13 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.6) #7 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.6) #6 store i32 20, ptr %5, align 8, !tbaa !23 br label %33 15: ; preds = %13 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.7) #6 br label %33 16: ; preds = %13 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.8) #6 br label %33 17: ; preds = %13 - tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i32 noundef %12) #7 + tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.9, i32 noundef %12) #6 store i32 22, ptr %5, align 8, !tbaa !23 br label %33 @@ -276,7 +276,7 @@ define i32 @cli_pcre_match(ptr noundef readonly captures(none) %0, ptr noundef % 20: ; preds = %18 %21 = load ptr, ptr %8, align 8, !tbaa !20 - %22 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %21) #7 + %22 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %21) #6 %23 = load i64, ptr %22, align 8, !tbaa !17 %24 = trunc i64 %23 to i32 %25 = getelementptr inbounds nuw i8, ptr %5, i64 4 @@ -315,12 +315,12 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %10) %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 %12 = load ptr, ptr %11, align 8, !tbaa !20 - %13 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %12) #7 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #7 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11) #7 + %13 = tail call ptr @pcre2_get_ovector_pointer_8(ptr noundef %12) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #6 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.11) #6 %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 %15 = load ptr, ptr %14, align 8, !tbaa !14 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, ptr noundef %15, i32 noundef %3) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, ptr noundef %15, i32 noundef %3) #6 %16 = icmp sgt i32 %3, 0 br i1 %16, label %.preheader.preheader, label %86 @@ -340,7 +340,7 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef br i1 %22, label %23, label %24 23: ; preds = %.preheader - call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.13) #7 + call void (ptr, ...) @cli_warnmsg(ptr noundef nonnull @.str.13) #6 br label %37 24: ; preds = %.preheader @@ -350,23 +350,23 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %24, %.lr.ph - %.03438 = phi i64 [ %33, %.lr.ph ], [ 0, %24 ] - %26 = shl nuw nsw i64 %.03438, 1 - %27 = getelementptr inbounds nuw i8, ptr %10, i64 %26 - %28 = sub nuw nsw i64 2057, %26 - %29 = getelementptr inbounds nuw i8, ptr %19, i64 %.03438 - %30 = load i8, ptr %29, align 1, !tbaa !8 - %31 = sext i8 %30 to i32 - %32 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %27, i64 noundef %28, ptr noundef nonnull @.str.14, i32 noundef %31) #7 - %33 = add nuw nsw i64 %.03438, 1 - %exitcond.not = icmp eq i64 %33, %spec.select + %.03438 = phi i64 [ %34, %.lr.ph ], [ 0, %24 ] + %27 = shl nuw nsw i64 %.03438, 1 + %28 = getelementptr inbounds nuw i8, ptr %10, i64 %27 + %29 = sub nuw nsw i64 2057, %27 + %30 = getelementptr inbounds nuw i8, ptr %19, i64 %.03438 + %31 = load i8, ptr %30, align 1, !tbaa !8 + %32 = sext i8 %31 to i32 + %33 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %28, i64 noundef %29, ptr noundef nonnull @.str.14, i32 noundef %32) #6 + %34 = add nuw nsw i64 %.03438, 1 + %exitcond.not = icmp eq i64 %34, %spec.select br i1 %exitcond.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %24 %34 = icmp ugt i64 %25, 1028 %35 = select i1 %34, ptr @.str.16, ptr @.str.17 %36 = trunc nuw nsw i64 %indvars.iv to i32 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15, i32 noundef %36, ptr noundef nonnull %10, ptr noundef nonnull %35) #7 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15, i32 noundef %36, ptr noundef nonnull %10, ptr noundef nonnull %35) #6 br label %37 37: ; preds = %._crit_edge, %23 @@ -380,21 +380,21 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) %39 = load ptr, ptr %0, align 8, !tbaa !15 - %40 = call i32 @pcre2_pattern_info_8(ptr noundef %39, i32 noundef 17, ptr noundef nonnull %6) #7 + %40 = call i32 @pcre2_pattern_info_8(ptr noundef %39, i32 noundef 17, ptr noundef nonnull %6) #6 %41 = load i32, ptr %6, align 4, !tbaa !16 %42 = icmp slt i32 %41, 1 br i1 %42, label %43, label %44 43: ; preds = %38 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.21) #7 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.21) #6 br label %named_substr_print.exit 44: ; preds = %38 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22) #7 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.22) #6 %45 = load ptr, ptr %0, align 8, !tbaa !15 - %46 = call i32 @pcre2_pattern_info_8(ptr noundef %45, i32 noundef 19, ptr noundef nonnull %8) #7 + %46 = call i32 @pcre2_pattern_info_8(ptr noundef %45, i32 noundef 19, ptr noundef nonnull %8) #6 %47 = load ptr, ptr %0, align 8, !tbaa !15 - %48 = call i32 @pcre2_pattern_info_8(ptr noundef %47, i32 noundef 18, ptr noundef nonnull %7) #7 + %48 = call i32 @pcre2_pattern_info_8(ptr noundef %47, i32 noundef 18, ptr noundef nonnull %7) #6 %49 = load i32, ptr %6, align 4, !tbaa !16 %50 = icmp sgt i32 %49, 0 br i1 %50, label %.lr.ph34.preheader.i, label %named_substr_print.exit @@ -426,16 +426,16 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph34.i, %.lr.ph.i - %.02730.i = phi i64 [ %74, %.lr.ph.i ], [ 0, %.lr.ph34.i ] - %67 = shl nuw nsw i64 %.02730.i, 1 - %68 = getelementptr inbounds nuw i8, ptr %9, i64 %67 - %69 = sub nuw nsw i64 2057, %67 - %70 = getelementptr inbounds nuw i8, ptr %63, i64 %.02730.i - %71 = load i8, ptr %70, align 1, !tbaa !8 - %72 = sext i8 %71 to i32 - %73 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %68, i64 noundef %69, ptr noundef nonnull @.str.14, i32 noundef %72) #7 - %74 = add nuw nsw i64 %.02730.i, 1 - %exitcond.not.i = icmp eq i64 %74, %spec.select.i + %.02730.i = phi i64 [ %75, %.lr.ph.i ], [ 0, %.lr.ph34.i ] + %68 = shl nuw nsw i64 %.02730.i, 1 + %69 = getelementptr inbounds nuw i8, ptr %9, i64 %68 + %70 = sub nuw nsw i64 2057, %68 + %71 = getelementptr inbounds nuw i8, ptr %63, i64 %.02730.i + %72 = load i8, ptr %71, align 1, !tbaa !8 + %73 = sext i8 %72 to i32 + %74 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %69, i64 noundef %70, ptr noundef nonnull @.str.14, i32 noundef %73) #6 + %75 = add nuw nsw i64 %.02730.i, 1 + %exitcond.not.i = icmp eq i64 %75, %spec.select.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph34.i @@ -444,7 +444,7 @@ define void @cli_pcre_report(ptr noundef readonly captures(none) %0, ptr noundef %77 = add nsw i32 %76, -3 %78 = getelementptr inbounds nuw i8, ptr %.02631.i, i64 2 %79 = select i1 %75, ptr @.str.16, ptr @.str.17 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %58, i32 noundef %77, ptr noundef nonnull %78, ptr noundef nonnull %9, ptr noundef nonnull %79) #7 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.23, i32 noundef %58, i32 noundef %77, ptr noundef nonnull %78, ptr noundef nonnull %9, ptr noundef nonnull %79) #6 %80 = load i32, ptr %7, align 4, !tbaa !16 %81 = sext i32 %80 to i64 %82 = getelementptr inbounds i8, ptr %.02631.i, i64 %81 @@ -465,16 +465,16 @@ named_substr_print.exit: ; preds = %._crit_edge.i, %43, br i1 %87, label %88, label %89 88: ; preds = %86 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.18) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.18) #6 br label %90 89: ; preds = %86 - tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.19, i32 noundef %3) #7 + tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.19, i32 noundef %3) #6 br label %90 90: ; preds = %88, %89, %named_substr_print.exit - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.20) #7 - call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #7 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.20) #6 + call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #6 call void @llvm.lifetime.end.p0(ptr nonnull %10) ret void } @@ -497,12 +497,12 @@ define range(i32 0, 21) i32 @cli_pcre_results_reset(ptr noundef captures(none) i br i1 %.not, label %8, label %7 7: ; preds = %2 - tail call void @pcre2_match_data_free_8(ptr noundef nonnull %6) #7 + tail call void @pcre2_match_data_free_8(ptr noundef nonnull %6) #6 br label %8 8: ; preds = %7, %2 %9 = load ptr, ptr %1, align 8, !tbaa !15 - %10 = tail call ptr @pcre2_match_data_create_from_pattern_8(ptr noundef %9, ptr noundef null) #7 + %10 = tail call ptr @pcre2_match_data_create_from_pattern_8(ptr noundef %9, ptr noundef null) #6 store ptr %10, ptr %5, align 8, !tbaa !20 %.not9 = icmp eq ptr %10, null %. = select i1 %.not9, i32 20, i32 0 @@ -521,7 +521,7 @@ define void @cli_pcre_results_free(ptr noundef readonly captures(none) %0) local br i1 %.not, label %5, label %4 4: ; preds = %1 - tail call void @pcre2_match_data_free_8(ptr noundef nonnull %3) #7 + tail call void @pcre2_match_data_free_8(ptr noundef nonnull %3) #6 br label %5 5: ; preds = %4, %1 @@ -535,7 +535,7 @@ define void @cli_pcre_free_single(ptr noundef captures(none) %0) local_unnamed_a br i1 %.not, label %4, label %3 3: ; preds = %1 - tail call void @pcre2_code_free_8(ptr noundef nonnull %2) #7 + tail call void @pcre2_code_free_8(ptr noundef nonnull %2) #6 store ptr null, ptr %0, align 8, !tbaa !15 br label %4 @@ -546,7 +546,7 @@ define void @cli_pcre_free_single(ptr noundef captures(none) %0) local_unnamed_a br i1 %.not11, label %8, label %7 7: ; preds = %4 - tail call void @pcre2_match_context_free_8(ptr noundef nonnull %6) #7 + tail call void @pcre2_match_context_free_8(ptr noundef nonnull %6) #6 store ptr null, ptr %5, align 8, !tbaa !19 br label %8 @@ -557,7 +557,7 @@ define void @cli_pcre_free_single(ptr noundef captures(none) %0) local_unnamed_a br i1 %.not12, label %12, label %11 11: ; preds = %8 - tail call void @free(ptr noundef nonnull %10) #7 + tail call void @free(ptr noundef nonnull %10) #6 store ptr null, ptr %9, align 8, !tbaa !14 br label %12 diff --git a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll index 7e74064a667..5d607e52b66 100644 --- a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll +++ b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll @@ -520,16 +520,16 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(pt br i1 %5, label %6, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" 6: ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" - %7 = icmp eq i64 %4, 2 - br i1 %7, label %8, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" + %.not.i.i1 = icmp eq i64 %4, 2 + br i1 %.not.i.i1, label %7, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" -8: ; preds = %6 +7: ; preds = %6 %bcmp.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %2, ptr noundef nonnull dereferenceable(2) @anon.248846a2e22cbdbe35d199858cf2b949.26, i64 2), !alias.scope !65, !noalias !69 - %9 = icmp ne i32 %bcmp.i.i, 0 + %8 = icmp ne i32 %bcmp.i.i, 0 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" -"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread": ; preds = %8, %6, %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" - %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %9, %8 ], [ true, %6 ] +"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread": ; preds = %7, %6, %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" + %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %8, %8 ], [ true, %6 ] ret i1 %.0 } @@ -653,17 +653,17 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(p "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit": ; preds = %1 %rhsc = load i8, ptr %2, align 1 %5 = icmp ne i8 %rhsc, 45 - %6 = icmp eq i64 %4, 1 - %or.cond = or i1 %5, %6 + %.not.i.i1 = icmp eq i64 %4, 1 + %or.cond = or i1 %5, %.not.i.i1 br i1 %or.cond, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4": ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" %bcmp.i.i.i5 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) @anon.248846a2e22cbdbe35d199858cf2b949.26, ptr noundef nonnull readonly align 1 dereferenceable(2) %2, i64 2), !alias.scope !89 - %7 = icmp ne i32 %bcmp.i.i.i5, 0 + %6 = icmp ne i32 %bcmp.i.i.i5, 0 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4", %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" - %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %7, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" ] + %.0 = phi i1 [ false, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" ], [ false, %1 ], [ %6, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" ] ret i1 %.0 } @@ -727,7 +727,7 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt 7: ; preds = %.lr.ph, %.thread53 %8 = phi i64 [ %.promoted75, %.lr.ph ], [ %46, %.thread53 ] - %9 = phi ptr [ %.promoted, %.lr.ph ], [ %.sink22.i.i, %.thread53 ] + %9 = phi ptr [ %.promoted, %.lr.ph ], [ %.sink23.i.i, %.thread53 ] %.sroa.02.074 = phi i64 [ 0, %.lr.ph ], [ %10, %.thread53 ] %10 = add nuw i64 %.sroa.02.074, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !112) @@ -787,8 +787,8 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt br i1 %43, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i.i", label %.thread53 .thread53: ; preds = %13, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i", %25 - %.sink22.i.i = phi ptr [ %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i.i" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i" ], [ %32, %25 ], [ %14, %13 ] - %44 = ptrtoint ptr %.sink22.i.i to i64 + %.sink23.i.i = phi ptr [ %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i.i" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i" ], [ %32, %25 ], [ %14, %13 ] + %44 = ptrtoint ptr %.sink23.i.i to i64 %45 = sub i64 %44, %11 %46 = add i64 %45, %8 store i64 %46, ptr %6, align 8, !alias.scope !111, !noalias !108 @@ -973,18 +973,18 @@ define void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias br i1 %46, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread", label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16": ; preds = %35, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i", %23 - %.sink22 = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %10, %23 ], [ %37, %35 ] - %.sroa.4.0.i.ph9.i18 = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %24, %23 ], [ %45, %35 ] + %.sink23 = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %10, %23 ], [ %37, %35 ] + %.sroa.4.0.i.ph9.i19 = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i" ], [ %24, %23 ], [ %45, %35 ] %47 = getelementptr inbounds nuw i8, ptr %1, i64 32 %48 = load i64, ptr %47, align 8, !alias.scope !138, !noundef !4 - %49 = ptrtoint ptr %.sink22 to i64 + %49 = ptrtoint ptr %.sink23 to i64 %50 = sub i64 %49, %7 %51 = add i64 %50, %48 store i64 %51, ptr %47, align 8, !alias.scope !138 %52 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr null, ptr %52, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %.sroa.4.0.i.ph9.i18, ptr %.sroa.43.0..sroa_idx, align 8 + store i32 %.sroa.4.0.i.ph9.i19, ptr %.sroa.43.0..sroa_idx, align 8 br label %55 "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread": ; preds = %2, %35 @@ -1178,18 +1178,18 @@ define void @"_ZN79_$LT$clap_lex..ShortFlags$u20$as$u20$core..iter..traits..iter br i1 %46, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i", label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16.i" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread16.i": ; preds = %35, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i", %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" - %.sink22.i = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %10, %23 ], [ %37, %35 ] - %.sroa.4.0.i.ph9.i18.i = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %24, %23 ], [ %45, %35 ] + %.sink23.i = phi ptr [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %10, %23 ], [ %37, %35 ] + %.sroa.4.0.i.ph9.i19.i = phi i32 [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit13.i.i.i" ], [ %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i" ], [ %24, %23 ], [ %45, %35 ] %47 = getelementptr inbounds nuw i8, ptr %1, i64 32 %48 = load i64, ptr %47, align 8, !alias.scope !204, !noalias !177, !noundef !4 - %49 = ptrtoint ptr %.sink22.i to i64 + %49 = ptrtoint ptr %.sink23.i to i64 %50 = sub i64 %49, %7 %51 = add i64 %50, %48 store i64 %51, ptr %47, align 8, !alias.scope !204, !noalias !177 %52 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr null, ptr %52, align 8, !alias.scope !177, !noalias !180 %.sroa.43.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %.sroa.4.0.i.ph9.i18.i, ptr %.sroa.43.0..sroa_idx.i, align 8, !alias.scope !177, !noalias !180 + store i32 %.sroa.4.0.i.ph9.i19.i, ptr %.sroa.43.0..sroa_idx.i, align 8, !alias.scope !177, !noalias !180 br label %_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E.exit "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i": ; preds = %35, %2 diff --git a/bench/cmake/optimized/archive_write_add_filter_bzip2.ll b/bench/cmake/optimized/archive_write_add_filter_bzip2.ll index d77f086893d..f81be6de51e 100644 --- a/bench/cmake/optimized/archive_write_add_filter_bzip2.ll +++ b/bench/cmake/optimized/archive_write_add_filter_bzip2.ll @@ -17,19 +17,19 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define dso_local range(i32 -30, 1) i32 @archive_write_set_compression_bzip2(ptr noundef %0) local_unnamed_addr #0 { - tail call void @__archive_write_filters_free(ptr noundef %0) #10 - %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #10 - %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #10 + tail call void @__archive_write_filters_free(ptr noundef %0) #9 + %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #9 + %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #9 %.not.i = icmp eq i32 %3, -30 br i1 %.not.i, label %archive_write_add_filter_bzip2.exit, label %4 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #11 + %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #10 %6 = icmp eq ptr %5, null br i1 %6, label %7, label %8 7: ; preds = %4 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #10 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #9 br label %archive_write_add_filter_bzip2.exit 8: ; preds = %4 @@ -59,18 +59,18 @@ declare void @__archive_write_filters_free(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define dso_local range(i32 -30, 1) i32 @archive_write_add_filter_bzip2(ptr noundef %0) local_unnamed_addr #0 { - %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #10 - %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #10 + %2 = tail call ptr @__archive_write_allocate_filter(ptr noundef %0) #9 + %3 = tail call i32 @__archive_check_magic(ptr noundef %0, i32 noundef -1329217314, i32 noundef 1, ptr noundef nonnull @.str) #9 %.not = icmp eq i32 %3, -30 br i1 %.not, label %16, label %4 4: ; preds = %1 - %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #11 + %5 = tail call noalias dereferenceable_or_null(112) ptr @calloc(i64 noundef 1, i64 noundef 112) #10 %6 = icmp eq ptr %5, null br i1 %6, label %7, label %8 7: ; preds = %4 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #10 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %0, i32 noundef 12, ptr noundef nonnull @.str.1) #9 br label %16 8: ; preds = %4 @@ -109,31 +109,31 @@ declare void @archive_set_error(ptr noundef, i32 noundef, ptr noundef, ...) loca define internal range(i32 -20, 1) i32 @archive_compressor_bzip2_options(ptr noundef readonly captures(none) %0, ptr noundef readonly captures(none) %1, ptr noundef readonly captures(address_is_null) %2) #3 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 72 %5 = load ptr, ptr %4, align 8, !tbaa !13 - %6 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(18) @.str.3) #12 + %6 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(18) @.str.3) #11 %7 = icmp ne i32 %6, 0 %8 = icmp eq ptr %2, null %or.cond12 = or i1 %8, %7 - br i1 %or.cond12, label %16, label %9 + br i1 %or.cond12, label %17, label %9 9: ; preds = %3 %10 = load i8, ptr %2, align 1, !tbaa !23 %11 = add i8 %10, -48 %or.cond = icmp ult i8 %11, 10 - br i1 %or.cond, label %12, label %16 + br i1 %or.cond, label %12, label %17 12: ; preds = %9 %13 = getelementptr inbounds nuw i8, ptr %2, i64 1 %14 = load i8, ptr %13, align 1, !tbaa !23 %.not = icmp eq i8 %14, 0 - br i1 %.not, label %15, label %16 + br i1 %.not, label %15, label %17 15: ; preds = %12 %narrow13 = tail call i8 @llvm.umax.i8(i8 %11, i8 1) %spec.select = zext nneg i8 %narrow13 to i32 store i32 %spec.select, ptr %5, align 8, !tbaa !4 - br label %16 + br label %17 -16: ; preds = %3, %9, %12, %15 +17: ; preds = %3, %9, %12, %15 %.0 = phi i32 [ 0, %15 ], [ -20, %12 ], [ -20, %9 ], [ -20, %3 ] ret i32 %.0 } @@ -159,7 +159,7 @@ define internal i32 @archive_compressor_bzip2_close(ptr noundef readonly capture %13 = load ptr, ptr %6, align 8, !tbaa !25 %14 = load ptr, ptr %7, align 8, !tbaa !26 %15 = load i64, ptr %8, align 8, !tbaa !27 - %16 = tail call i32 @__archive_write_filter(ptr noundef %13, ptr noundef %14, i64 noundef %15) #10 + %16 = tail call i32 @__archive_write_filter(ptr noundef %13, ptr noundef %14, i64 noundef %15) #9 %.not.i = icmp eq i32 %16, 0 br i1 %.not.i, label %17, label %drive_compressor.exit.thread @@ -172,7 +172,7 @@ define internal i32 @archive_compressor_bzip2_close(ptr noundef readonly capture br label %21 21: ; preds = %17, %.split.i - %22 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %4, i32 noundef 2) #10 + %22 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %4, i32 noundef 2) #9 switch i32 %22, label %.split20.us.i [ i32 1, label %.split.i.backedge i32 3, label %.split.i.backedge @@ -185,7 +185,7 @@ define internal i32 @archive_compressor_bzip2_close(ptr noundef readonly capture .split20.us.i: ; preds = %21 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 %24 = load ptr, ptr %23, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %24, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %22) #10 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %24, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %22) #9 br label %drive_compressor.exit.thread drive_compressor.exit: ; preds = %21 @@ -195,19 +195,19 @@ drive_compressor.exit: ; preds = %21 %28 = load i32, ptr %5, align 8, !tbaa !24 %29 = zext i32 %28 to i64 %30 = sub i64 %27, %29 - %31 = tail call i32 @__archive_write_filter(ptr noundef %25, ptr noundef %26, i64 noundef %30) #10 + %31 = tail call i32 @__archive_write_filter(ptr noundef %25, ptr noundef %26, i64 noundef %30) #9 br label %drive_compressor.exit.thread drive_compressor.exit.thread: ; preds = %12, %.split20.us.i, %drive_compressor.exit %.0 = phi i32 [ %31, %drive_compressor.exit ], [ -30, %.split20.us.i ], [ -30, %12 ] - %32 = tail call i32 @BZ2_bzCompressEnd(ptr noundef nonnull %4) #10 + %32 = tail call i32 @BZ2_bzCompressEnd(ptr noundef nonnull %4) #9 %cond = icmp eq i32 %32, 0 br i1 %cond, label %36, label %33 33: ; preds = %drive_compressor.exit.thread %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 %35 = load ptr, ptr %34, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %35, i32 noundef 22, ptr noundef nonnull @.str.10) #10 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %35, i32 noundef 22, ptr noundef nonnull @.str.10) #9 br label %36 36: ; preds = %drive_compressor.exit.thread, %33 @@ -221,8 +221,8 @@ define internal noundef i32 @archive_compressor_bzip2_free(ptr noundef captures( %3 = load ptr, ptr %2, align 8, !tbaa !13 %4 = getelementptr inbounds nuw i8, ptr %3, i64 96 %5 = load ptr, ptr %4, align 8, !tbaa !26 - tail call void @free(ptr noundef %5) #10 - tail call void @free(ptr noundef %3) #10 + tail call void @free(ptr noundef %5) #9 + tail call void @free(ptr noundef %3) #9 store ptr null, ptr %2, align 8, !tbaa !13 ret i32 0 } @@ -246,60 +246,60 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_open(ptr noundef %9 = load ptr, ptr %8, align 8, !tbaa !29 %10 = load i32, ptr %9, align 8, !tbaa !30 %11 = icmp eq i32 %10, -1329217314 - br i1 %11, label %12, label %21 + br i1 %11, label %12, label %20 12: ; preds = %7 - %13 = tail call i32 @archive_write_get_bytes_per_block(ptr noundef nonnull %9) #10 + %13 = tail call i32 @archive_write_get_bytes_per_block(ptr noundef nonnull %9) #9 %14 = sext i32 %13 to i64 %15 = icmp ugt i32 %13, 65536 - br i1 %15, label %21, label %16 + br i1 %15, label %20, label %16 16: ; preds = %12 - %17 = icmp eq i32 %13, 0 - br i1 %17, label %21, label %18 - -18: ; preds = %16 - %19 = urem i32 65536, %13 - %narrow = sub nuw nsw i32 65536, %19 - %20 = zext nneg i32 %narrow to i64 - br label %21 - -21: ; preds = %12, %18, %16, %7 - %.035 = phi i64 [ %20, %18 ], [ 65536, %16 ], [ 65536, %7 ], [ %14, %12 ] - %22 = getelementptr inbounds nuw i8, ptr %3, i64 104 - store i64 %.035, ptr %22, align 8, !tbaa !27 - %23 = tail call noalias ptr @malloc(i64 noundef %.035) #13 - store ptr %23, ptr %4, align 8, !tbaa !26 - %.not39 = icmp eq ptr %23, null - br i1 %.not39, label %24, label %.critedge - -24: ; preds = %21 - %25 = load ptr, ptr %8, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %25, i32 noundef 12, ptr noundef nonnull @.str.4) #10 - br label %46 - -.critedge: ; preds = %..critedge_crit_edge, %21 - %26 = phi i64 [ %.035, %21 ], [ %.pre, %..critedge_crit_edge ] - %27 = phi ptr [ %23, %21 ], [ %5, %..critedge_crit_edge ] - %28 = getelementptr inbounds nuw i8, ptr %3, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %28, i8 0, i64 80, i1 false) - %29 = getelementptr inbounds nuw i8, ptr %3, i64 32 - store ptr %27, ptr %29, align 8, !tbaa !28 - %30 = trunc i64 %26 to i32 - %31 = getelementptr inbounds nuw i8, ptr %3, i64 40 - store i32 %30, ptr %31, align 8, !tbaa !24 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr @archive_compressor_bzip2_write, ptr %32, align 8, !tbaa !35 - %33 = load i32, ptr %3, align 8, !tbaa !4 - %34 = tail call i32 @BZ2_bzCompressInit(ptr noundef nonnull %28, i32 noundef %33, i32 noundef 0, i32 noundef 30) #10 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %36, label %37 + %.not = icmp eq i32 %13, 0 + br i1 %.not, label %20, label %17 + +17: ; preds = %16 + %18 = urem i32 65536, %13 + %narrow = sub nuw nsw i32 65536, %18 + %19 = zext nneg i32 %narrow to i64 + br label %20 + +20: ; preds = %12, %17, %16, %7 + %.035 = phi i64 [ %19, %18 ], [ 65536, %16 ], [ 65536, %7 ], [ %14, %12 ] + %21 = getelementptr inbounds nuw i8, ptr %3, i64 104 + store i64 %.035, ptr %21, align 8, !tbaa !27 + %22 = tail call noalias ptr @malloc(i64 noundef %.035) #12 + store ptr %22, ptr %4, align 8, !tbaa !26 + %.not39 = icmp eq ptr %22, null + br i1 %.not39, label %23, label %.critedge + +23: ; preds = %20 + %24 = load ptr, ptr %8, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %24, i32 noundef 12, ptr noundef nonnull @.str.4) #9 + br label %45 + +.critedge: ; preds = %..critedge_crit_edge, %20 + %25 = phi i64 [ %.035, %21 ], [ %.pre, %..critedge_crit_edge ] + %26 = phi ptr [ %22, %21 ], [ %5, %..critedge_crit_edge ] + %27 = getelementptr inbounds nuw i8, ptr %3, i64 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %27, i8 0, i64 80, i1 false) + %28 = getelementptr inbounds nuw i8, ptr %3, i64 32 + store ptr %26, ptr %28, align 8, !tbaa !28 + %29 = trunc i64 %25 to i32 + %30 = getelementptr inbounds nuw i8, ptr %3, i64 40 + store i32 %29, ptr %30, align 8, !tbaa !24 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store ptr @archive_compressor_bzip2_write, ptr %31, align 8, !tbaa !35 + %32 = load i32, ptr %3, align 8, !tbaa !4 + %33 = tail call i32 @BZ2_bzCompressInit(ptr noundef nonnull %27, i32 noundef %32, i32 noundef 0, i32 noundef 30) #9 + %34 = icmp eq i32 %33, 0 + br i1 %34, label %36, label %37 36: ; preds = %.critedge store ptr %3, ptr %2, align 8, !tbaa !13 br label %46 -37: ; preds = %.critedge +37:; preds = %.critedge %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 %39 = load ptr, ptr %38, align 8, !tbaa !29 tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %39, i32 noundef -1, ptr noundef nonnull @.str.5) #10 @@ -309,22 +309,22 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_open(ptr noundef i32 -9, label %44 ] -40: ; preds = %37 - %41 = load ptr, ptr %38, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %41, i32 noundef -1, ptr noundef nonnull @.str.6) #10 - br label %46 +39: ; preds = %37 + %40 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %40, i32 noundef -1, ptr noundef nonnull @.str.6) #9 + br label %45 -42: ; preds = %37 - %43 = load ptr, ptr %38, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %43, i32 noundef 12, ptr noundef nonnull @.str.7) #10 - br label %46 +41: ; preds = %37 + %42 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %42, i32 noundef 12, ptr noundef nonnull @.str.7) #9 + br label %45 -44: ; preds = %37 - %45 = load ptr, ptr %38, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %45, i32 noundef -1, ptr noundef nonnull @.str.8) #10 - br label %46 +43: ; preds = %37 + %44 = load ptr, ptr %38, align 8, !tbaa !29 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %44, i32 noundef -1, ptr noundef nonnull @.str.8) #9 + br label %45 -46: ; preds = %24, %37, %40, %42, %44, %36 +45: ; preds = %23, %37, %39, %41, %43, %36 %.1 = phi i32 [ 0, %36 ], [ -30, %24 ], [ -30, %44 ], [ -30, %42 ], [ -30, %40 ], [ -30, %37 ] ret i32 %.1 } @@ -369,7 +369,7 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_write(ptr nounde %20 = load ptr, ptr %13, align 8, !tbaa !25 %21 = load ptr, ptr %14, align 8, !tbaa !26 %22 = load i64, ptr %15, align 8, !tbaa !27 - %23 = tail call i32 @__archive_write_filter(ptr noundef %20, ptr noundef %21, i64 noundef %22) #10 + %23 = tail call i32 @__archive_write_filter(ptr noundef %20, ptr noundef %21, i64 noundef %22) #9 %.not.us.i = icmp eq i32 %23, 0 br i1 %.not.us.i, label %24, label %drive_compressor.exit @@ -387,7 +387,7 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_write(ptr nounde br i1 %30, label %drive_compressor.exit, label %31 31: ; preds = %28 - %32 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %9, i32 noundef 0) #10 + %32 = tail call i32 @BZ2_bzCompress(ptr noundef nonnull %9, i32 noundef 0) #9 switch i32 %32, label %.split20.us.i [ i32 1, label %33 i32 3, label %.split.us.i.backedge @@ -405,7 +405,7 @@ define internal range(i32 -30, 1) i32 @archive_compressor_bzip2_write(ptr nounde .split20.us.i: ; preds = %31 %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 %37 = load ptr, ptr %36, align 8, !tbaa !29 - tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %37, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %32) #10 + tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef %37, i32 noundef 22, ptr noundef nonnull @.str.9, i32 noundef %32) #9 br label %drive_compressor.exit drive_compressor.exit: ; preds = %28, %33, %31, %19, %.split20.us.i diff --git a/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll b/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll index 1103d9fcfb7..45cabc68a5a 100644 --- a/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll +++ b/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll @@ -621,8 +621,8 @@ define hidden void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11collections5btree8navigate39LazyLeafRange$LT$BorrowType$C$K$C$V$GT$10init_front17h2d44940c0bd438f5E"(ptr noalias noundef align 8 captures(ret: address, provenance) dereferenceable(64) %0) unnamed_addr #12 { %2 = load i64, ptr %0, align 8, !range !17, !noundef !4 - %.not = icmp eq i64 %2, 0 - br i1 %.not, label %7, label %3 + %.not.not = icmp eq i64 %2, 0 + br i1 %.not.not, label %7, label %3 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -632,7 +632,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 7: ; preds = %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h7fc820e956e8d6a6E.llvm.14303161345558456588.exit", %3, %1 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %spec.select = select i1 %.not, ptr null, ptr %8 + %spec.select = select i1 %.not.not, ptr null, ptr %8 ret ptr %spec.select 9: ; preds = %3 diff --git a/bench/csmith/optimized/StatementContinue.ll b/bench/csmith/optimized/StatementContinue.ll index 6c1ace485db..f798dda577f 100644 --- a/bench/csmith/optimized/StatementContinue.ll +++ b/bench/csmith/optimized/StatementContinue.ll @@ -413,33 +413,33 @@ _ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %1 %20 = icmp ult i64 %19, %18 %21 = tail call i64 @llvm.umin.i64(i64 %19, i64 1152921504606846975) %22 = select i1 %20, i64 1152921504606846975, i64 %21 - %23 = icmp ne i64 %22, 0 - tail call void @llvm.assume(i1 %23) - %24 = shl nuw nsw i64 %22, 3 - %25 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %24) #16 - %26 = getelementptr inbounds i8, ptr %25, i64 %15 - store ptr %4, ptr %26, align 8, !tbaa !47 - %27 = icmp sgt i64 %15, 0 - br i1 %27, label %28, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i - -28: ; preds = %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %25, ptr align 8 %12, i64 %15, i1 false) + %.not.i.i.i.i = icmp ne i64 %22, 0 + tail call void @llvm.assume(i1 %.not.i.i.i.i) + %23 = shl nuw nsw i64 %22, 3 + %24 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %23) #16 + %25 = getelementptr inbounds i8, ptr %24, i64 %15 + store ptr %4, ptr %25, align 8, !tbaa !47 + %26 = icmp sgt i64 %15, 0 + br i1 %26, label %27, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i + +27: ; preds = %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %24, ptr align 8 %12, i64 %15, i1 false) br label %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i -_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i: ; preds = %28, %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i - %29 = getelementptr inbounds nuw i8, ptr %26, i64 8 +_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i: ; preds = %27, %_ZNKSt6vectorIPK10ExpressionSaIS2_EE12_M_check_lenEmPKc.exit.i.i.i + %28 = getelementptr inbounds nuw i8, ptr %25, i64 8 %.not.i17.i.i.i = icmp eq ptr %12, null - br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %30 + br i1 %.not.i17.i.i.i, label %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %29 -30: ; preds = %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i +29: ; preds = %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i tail call void @_ZdlPvm(ptr noundef nonnull %12, i64 noundef %15) #17 br label %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i -_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %30, %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i - store ptr %25, ptr %1, align 8, !tbaa !82 - store ptr %29, ptr %5, align 8, !tbaa !78 - %31 = getelementptr inbounds nuw ptr, ptr %25, i64 %22 - store ptr %31, ptr %7, align 8, !tbaa !81 +_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %29, %_ZNSt6vectorIPK10ExpressionSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i.i + store ptr %24, ptr %1, align 8, !tbaa !82 + store ptr %28, ptr %5, align 8, !tbaa !78 + %30 = getelementptr inbounds nuw ptr, ptr %24, i64 %22 + store ptr %30, ptr %7, align 8, !tbaa !81 br label %_ZNSt6vectorIPK10ExpressionSaIS2_EE9push_backEOS2_.exit _ZNSt6vectorIPK10ExpressionSaIS2_EE9push_backEOS2_.exit: ; preds = %9, %_ZNSt6vectorIPK10ExpressionSaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i diff --git a/bench/darktable/optimized/OrfDecoder.ll b/bench/darktable/optimized/OrfDecoder.ll index 598fa4462fc..7535ef30f00 100644 --- a/bench/darktable/optimized/OrfDecoder.ll +++ b/bench/darktable/optimized/OrfDecoder.ll @@ -1974,18 +1974,18 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen .preheader177.lr.ph: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader %.not52184 = icmp eq i32 %2, 0 - %64 = add nuw nsw i32 %11, 8 + %65 = add nuw nsw i32 %11, 8 br i1 %.not52184, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %.preheader177.preheader .preheader177.preheader: ; preds = %.preheader177.lr.ph - %65 = zext nneg i32 %55 to i64 - %66 = zext i32 %2 to i64 - %67 = zext nneg i32 %57 to i64 - %68 = zext nneg i32 %60 to i64 - %69 = zext i32 %narrow to i64 + %66 = zext nneg i32 %55 to i64 + %67 = zext i32 %2 to i64 + %68 = zext nneg i32 %57 to i64 + %69 = zext nneg i32 %60 to i64 + %70 = zext i32 %narrow to i64 br label %.preheader177 -70: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit70 +71: ; preds = %_ZNK8rawspeed10ByteStream19peekRemainingBufferEv.exit70 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.21, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE) #13 unreachable @@ -1994,15 +1994,15 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen %.sroa.13103.0193 = phi i32 [ 0, %.preheader177.preheader ], [ %.sroa.13103.2, %._crit_edge ] %.sroa.698.0192 = phi i32 [ 0, %.preheader177.preheader ], [ %110, %._crit_edge ] %.sroa.096.0191 = phi i64 [ 0, %.preheader177.preheader ], [ %111, %._crit_edge ] - %71 = shl nuw nsw i64 %indvars.iv216, 1 - %72 = icmp samesign ult i64 %71, %67 - %73 = mul nuw nsw i64 %71, %68 - %74 = getelementptr inbounds nuw i16, ptr %50, i64 %73 - br label %83 + %72 = shl nuw nsw i64 %indvars.iv216, 1 + %73 = icmp samesign ult i64 %72, %68 + %74 = mul nuw nsw i64 %72, %69 + %75 = getelementptr inbounds nuw i16, ptr %50, i64 %74 + br label %84 _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge: ; preds = %._crit_edge, %.preheader177.lr.ph, %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit.preheader - %75 = icmp samesign ult i32 %37, 4 - br i1 %75, label %82, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader + %76 = icmp samesign ult i32 %37, 4 + br i1 %76, label %83, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge %.not50204 = icmp eq i32 %3, %narrow176 @@ -2010,35 +2010,35 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen .preheader.lr.ph: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74.preheader %.not51195 = icmp eq i32 %2, 0 - %76 = add nuw nsw i32 %37, 8 + %77 = add nuw nsw i32 %37, 8 br i1 %.not51195, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74._crit_edge, label %.preheader.preheader .preheader.preheader: ; preds = %.preheader.lr.ph - %77 = zext nneg i32 %55 to i64 - %78 = zext i32 %2 to i64 - %79 = zext nneg i32 %57 to i64 - %80 = zext nneg i32 %60 to i64 - %81 = zext i32 %33 to i64 + %78 = zext nneg i32 %55 to i64 + %79 = zext i32 %2 to i64 + %80 = zext nneg i32 %57 to i64 + %81 = zext nneg i32 %60 to i64 + %82 = zext i32 %33 to i64 br label %.preheader -82: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge +83: ; preds = %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.21, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed26BitStreamerReplenisherBaseINS_14BitStreamerMSBEEC2ENS_10Array1DRefIKSt4byteEE) #13 unreachable ._crit_edge: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit %indvars.iv.next217 = add nuw nsw i64 %indvars.iv216, 1 - %.not = icmp eq i64 %indvars.iv.next217, %69 + %.not = icmp eq i64 %indvars.iv.next217, %70 br i1 %.not, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit._crit_edge, label %.preheader177, !llvm.loop !168 -83: ; preds = %.preheader177, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit +84: ; preds = %.preheader177, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit %indvars.iv = phi i64 [ 0, %.preheader177 ], [ %indvars.iv.next, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] %.sroa.13103.1187 = phi i32 [ %.sroa.13103.0193, %.preheader177 ], [ %.sroa.13103.2, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] %.sroa.698.1186 = phi i32 [ %.sroa.698.0192, %.preheader177 ], [ %110, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] %.sroa.096.1185 = phi i64 [ %.sroa.096.0191, %.preheader177 ], [ %111, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit ] - %84 = icmp samesign ult i32 %.sroa.698.1186, 12 - br i1 %84, label %85, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit + %.not.i.i75 = icmp samesign ult i32 %.sroa.698.1186, 12 + br i1 %.not.i.i75, label %85, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit -85: ; preds = %83 +85: ; preds = %84 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i) %86 = add nuw nsw i32 %.sroa.13103.1187, 4 %.not.i.i.i = icmp samesign ugt i32 %86, %11 @@ -2050,7 +2050,7 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i 90: ; preds = %85 - %91 = icmp samesign ugt i32 %.sroa.13103.1187, %64 + %91 = icmp samesign ugt i32 %.sroa.13103.1187, %65 br i1 %91, label %92, label %93, !prof !73 92: ; preds = %90 @@ -2084,7 +2084,7 @@ _ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getI %106 = or i64 %105, %.sroa.096.1185 br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit -_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit: ; preds = %83, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i +_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit: ; preds = %84, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i %.sroa.13103.2 = phi i32 [ %86, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.13103.1187, %83 ] %107 = phi i64 [ %106, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.096.1185, %83 ] %108 = phi i32 [ %102, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i ], [ %.sroa.698.1186, %83 ] @@ -2095,24 +2095,24 @@ _ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialR %113 = and i64 %indvars.iv, 2147483648 %114 = icmp eq i64 %113, 0 tail call void @llvm.assume(i1 %114) - %115 = icmp samesign ult i64 %indvars.iv, %65 + %115 = icmp samesign ult i64 %indvars.iv, %66 tail call void @llvm.assume(i1 %115) - tail call void @llvm.assume(i1 %72) - %116 = getelementptr inbounds nuw i16, ptr %74, i64 %indvars.iv + tail call void @llvm.assume(i1 %73) + %116 = getelementptr inbounds nuw i16, ptr %75, i64 %indvars.iv store i16 %112, ptr %116, align 2, !tbaa !169 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not52 = icmp eq i64 %indvars.iv.next, %66 - br i1 %.not52, label %._crit_edge, label %83, !llvm.loop !171 + %.not52 = icmp eq i64 %indvars.iv.next, %67 + br i1 %.not52, label %._crit_edge, label %84, !llvm.loop !171 .preheader: ; preds = %.preheader.preheader, %._crit_edge200 %indvars.iv222 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next223, %._crit_edge200 ] - %.sroa.090.0207 = phi i64 [ 0, %.preheader.preheader ], [ %150, %._crit_edge200 ] - %.sroa.6.0206 = phi i32 [ 0, %.preheader.preheader ], [ %149, %._crit_edge200 ] + %.sroa.090.0207 = phi i64 [ 0, %.preheader.preheader ], [ %149, %._crit_edge200 ] + %.sroa.6.0206 = phi i32 [ 0, %.preheader.preheader ], [ %148, %._crit_edge200 ] %.sroa.1393.0205 = phi i32 [ 0, %.preheader.preheader ], [ %.sroa.1393.2, %._crit_edge200 ] %117 = shl nuw nsw i64 %indvars.iv222, 1 %118 = or disjoint i64 %117, 1 - %119 = icmp samesign ult i64 %118, %79 - %120 = mul nuw nsw i64 %118, %80 + %119 = icmp samesign ult i64 %118, %80 + %120 = mul nuw nsw i64 %118, %81 %121 = getelementptr inbounds nuw i16, ptr %50, i64 %120 br label %122 @@ -2121,81 +2121,81 @@ _ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequen ._crit_edge200: ; preds = %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1 - %.not50 = icmp eq i64 %indvars.iv.next223, %81 + %.not50 = icmp eq i64 %indvars.iv.next223, %82 br i1 %.not50, label %_ZN8rawspeed14BitStreamerMSBCI2NS_11BitStreamerIS0_NS_39BitStreamerForwardSequentialReplenisherIS0_EEEEENS_10Array1DRefIKSt4byteEE.exit74._crit_edge, label %.preheader, !llvm.loop !172 122: ; preds = %.preheader, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 %indvars.iv219 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next220, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] - %.sroa.090.1198 = phi i64 [ %.sroa.090.0207, %.preheader ], [ %150, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] - %.sroa.6.1197 = phi i32 [ %.sroa.6.0206, %.preheader ], [ %149, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] + %.sroa.090.1198 = phi i64 [ %.sroa.090.0207, %.preheader ], [ %149, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] + %.sroa.6.1197 = phi i32 [ %.sroa.6.0206, %.preheader ], [ %148, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] %.sroa.1393.1196 = phi i32 [ %.sroa.1393.0205, %.preheader ], [ %.sroa.1393.2, %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 ] - %123 = icmp samesign ult i32 %.sroa.6.1197, 12 - br i1 %123, label %124, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 + %.not.i.i77 = icmp samesign ult i32 %.sroa.6.1197, 12 + br i1 %.not.i.i77, label %123, label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 -124: ; preds = %122 +123: ; preds = %122 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i76) - %125 = add nuw nsw i32 %.sroa.1393.1196, 4 - %.not.i.i.i80 = icmp samesign ugt i32 %125, %37 - br i1 %.not.i.i.i80, label %129, label %126, !prof !73 + %124 = add nuw nsw i32 %.sroa.1393.1196, 4 + %.not.i.i.i80 = icmp samesign ugt i32 %124, %37 + br i1 %.not.i.i.i80, label %128, label %125, !prof !73 -126: ; preds = %124 - %127 = zext nneg i32 %.sroa.1393.1196 to i64 - %128 = getelementptr inbounds nuw i8, ptr %45, i64 %127 +125: ; preds = %123 + %126 = zext nneg i32 %.sroa.1393.1196 to i64 + %127 = getelementptr inbounds nuw i8, ptr %45, i64 %126 br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 -129: ; preds = %124 - %130 = icmp samesign ugt i32 %.sroa.1393.1196, %76 - br i1 %130, label %131, label %132, !prof !73 +128: ; preds = %123 + %129 = icmp samesign ugt i32 %.sroa.1393.1196, %77 + br i1 %129, label %130, label %131, !prof !73 -131: ; preds = %129 +130: ; preds = %128 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.25, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv) #13 unreachable -132: ; preds = %129 +131: ; preds = %128 store i32 0, ptr %.sroa.0.i.i.i76, align 4 %.sroa.speculated26.i.i.i.i85 = tail call i32 @llvm.umin.i32(i32 %37, i32 %.sroa.1393.1196) - %133 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i85, 4 - %.sroa.speculated.i.i.i.i86 = tail call i32 @llvm.umin.i32(i32 %37, i32 %133) - %134 = sub nsw i32 %.sroa.speculated.i.i.i.i86, %.sroa.speculated26.i.i.i.i85 - %135 = icmp ult i32 %134, 5 - tail call void @llvm.assume(i1 %135) - %136 = zext nneg i32 %.sroa.speculated26.i.i.i.i85 to i64 - %137 = getelementptr inbounds nuw i8, ptr %45, i64 %136 - %138 = zext nneg i32 %134 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i76, ptr nonnull align 1 %137, i64 %138, i1 false) + %132 = add nuw nsw i32 %.sroa.speculated26.i.i.i.i85, 4 + %.sroa.speculated.i.i.i.i86 = tail call i32 @llvm.umin.i32(i32 %37, i32 %132) + %133 = sub nsw i32 %.sroa.speculated.i.i.i.i86, %.sroa.speculated26.i.i.i.i85 + %134 = icmp ult i32 %133, 5 + tail call void @llvm.assume(i1 %134) + %135 = zext nneg i32 %.sroa.speculated26.i.i.i.i85 to i64 + %136 = getelementptr inbounds nuw i8, ptr %45, i64 %135 + %137 = zext nneg i32 %133 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.0.i.i.i76, ptr nonnull align 1 %136, i64 %137, i1 false) br label %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 -_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81: ; preds = %132, %126 - %.sroa.0.0..sroa.0.0..in.i.i.i82 = phi ptr [ %.sroa.0.i.i.i76, %132 ], [ %128, %126 ] +_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81: ; preds = %131, %125 + %.sroa.0.0..sroa.0.0..in.i.i.i82 = phi ptr [ %.sroa.0.i.i.i76, %132 ], [ %127, %126 ] %.sroa.0.0..sroa.0.0..i.i.i83 = load i32, ptr %.sroa.0.0..sroa.0.0..in.i.i.i82, align 1 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0.i.i.i76) - %139 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i83) - %140 = zext i32 %139 to i64 - %141 = or disjoint i32 %.sroa.6.1197, 32 - %142 = sub nuw nsw i32 32, %.sroa.6.1197 - %143 = zext nneg i32 %142 to i64 - %144 = shl nuw i64 %140, %143 - %145 = or i64 %144, %.sroa.090.1198 + %138 = tail call i32 @llvm.bswap.i32(i32 %.sroa.0.0..sroa.0.0..i.i.i83) + %139 = zext i32 %138 to i64 + %140 = or disjoint i32 %.sroa.6.1197, 32 + %141 = sub nuw nsw i32 32, %.sroa.6.1197 + %142 = zext nneg i32 %141 to i64 + %143 = shl nuw i64 %139, %142 + %144 = or i64 %143, %.sroa.090.1198 br label %_ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87 _ZN8rawspeed11BitStreamerINS_14BitStreamerMSBENS_39BitStreamerForwardSequentialReplenisherIS1_EEE7getBitsEi.exit87: ; preds = %122, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 - %.sroa.1393.2 = phi i32 [ %125, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.1393.1196, %122 ] - %146 = phi i64 [ %145, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.090.1198, %122 ] - %147 = phi i32 [ %141, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.6.1197, %122 ] - %148 = lshr i64 %146, 52 - %149 = add nsw i32 %147, -12 - %150 = shl i64 %146, 12 - %151 = trunc nuw nsw i64 %148 to i16 - %152 = and i64 %indvars.iv219, 2147483648 - %153 = icmp eq i64 %152, 0 + %.sroa.1393.2 = phi i32 [ %124, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.1393.1196, %122 ] + %145 = phi i64 [ %144, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.090.1198, %122 ] + %146 = phi i32 [ %140, %_ZN8rawspeed39BitStreamerForwardSequentialReplenisherINS_14BitStreamerMSBEE8getInputEv.exit.i.i81 ], [ %.sroa.6.1197, %122 ] + %147 = lshr i64 %145, 52 + %148 = add nsw i32 %146, -12 + %149 = shl i64 %145, 12 + %150 = trunc nuw nsw i64 %147 to i16 + %151 = and i64 %indvars.iv219, 2147483648 + %152 = icmp eq i64 %151, 0 tail call void @llvm.assume(i1 %153) %154 = icmp samesign ult i64 %indvars.iv219, %77 tail call void @llvm.assume(i1 %154) tail call void @llvm.assume(i1 %119) - %155 = getelementptr inbounds nuw i16, ptr %121, i64 %indvars.iv219 - store i16 %151, ptr %155, align 2, !tbaa !169 + %154 = getelementptr inbounds nuw i16, ptr %121, i64 %indvars.iv219 + store i16 %150, ptr %154, align 2, !tbaa !169 %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1 - %.not51 = icmp eq i64 %indvars.iv.next220, %78 + %.not51 = icmp eq i64 %indvars.iv.next220, %79 br i1 %.not51, label %._crit_edge200, label %122, !llvm.loop !173 } @@ -2755,8 +2755,8 @@ _ZNK8rawspeed7TiffIFD8hasEntryENS_7TiffTagE.exit60: ; preds = %_ZNKSt8_Rb_treeIN %150 = getelementptr inbounds nuw i32, ptr %116, i64 %indvars.iv store i32 %149, ptr %150, align 4, !tbaa !48 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not132 = icmp eq i64 %indvars.iv.next, 4 - br i1 %.not132, label %151, label %129, !llvm.loop !186 + %exitcond.not = icmp eq i64 %indvars.iv.next, 4 + br i1 %exitcond.not, label %151, label %129, !llvm.loop !186 151: ; preds = %148 %152 = load ptr, ptr %7, align 8, !tbaa !42 diff --git a/bench/darktable/optimized/TableLookUp.ll b/bench/darktable/optimized/TableLookUp.ll index 29ba8caab1a..50bc9b76cc2 100644 --- a/bench/darktable/optimized/TableLookUp.ll +++ b/bench/darktable/optimized/TableLookUp.ll @@ -192,19 +192,19 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr %39 = getelementptr inbounds nuw i16, ptr %26, i64 %indvars.iv store i16 %38, ptr %39, align 2, !tbaa !19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not113 = icmp eq i64 %indvars.iv.next, 65536 - br i1 %.not113, label %.loopexit, label %36, !llvm.loop !26 + %exitcond.not = icmp eq i64 %indvars.iv.next, 65536 + br i1 %exitcond.not, label %.loopexit, label %36, !llvm.loop !26 .preheader: ; preds = %62 - %40 = icmp eq i32 %11, 65536 - br i1 %40, label %.loopexit, label %.lr.ph98 + %.not99 = icmp eq i32 %11, 65536 + br i1 %.not99, label %.loopexit, label %.lr.ph98 .lr.ph98: ; preds = %.preheader92, %.preheader - %41 = shl i64 %9, 31 - %sext91 = add i64 %41, -4294967296 - %42 = ashr i64 %sext91, 32 - %43 = getelementptr inbounds nuw i16, ptr %6, i64 %42 - %44 = and i64 %10, 65535 + %40 = shl i64 %9, 31 + %sext91 = add i64 %40, -4294967296 + %41 = ashr i64 %sext91, 32 + %42 = getelementptr inbounds nuw i16, ptr %6, i64 %41 + %43 = and i64 %10, 65535 %45 = icmp ult i32 %11, 65536 tail call void @llvm.assume(i1 %45) br label %73 @@ -259,10 +259,10 @@ define hidden void @_ZN8rawspeed11TableLookUp8setTableEiRKSt6vectorItSaItEE(ptr br i1 %exitcond105.not, label %.preheader, label %46, !llvm.loop !28 73: ; preds = %.lr.ph98, %73 - %indvars.iv106 = phi i64 [ %44, %.lr.ph98 ], [ %indvars.iv.next107, %73 ] - %74 = load i16, ptr %43, align 2, !tbaa !19 - %.idx114 = shl nuw nsw i64 %indvars.iv106, 2 - %75 = getelementptr inbounds nuw i8, ptr %26, i64 %.idx114 + %indvars.iv106 = phi i64 [ %43, %.lr.ph98 ], [ %indvars.iv.next107, %73 ] + %74 = load i16, ptr %42, align 2, !tbaa !19 + %.idx113 = shl nuw nsw i64 %indvars.iv106, 2 + %75 = getelementptr inbounds nuw i8, ptr %26, i64 %.idx113 store i16 %74, ptr %75, align 2, !tbaa !19 %76 = getelementptr inbounds nuw i8, ptr %75, i64 2 store i16 0, ptr %76, align 2, !tbaa !19 @@ -433,62 +433,62 @@ _ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit: ; preds = %44 %55 = select i1 %53, i64 4611686018427387903, i64 %54 %56 = ptrtoint ptr %1 to i64 %57 = sub i64 %56, %46 - %58 = icmp eq i64 %55, 0 - br i1 %58, label %62, label %59 + %.not.i = icmp eq i64 %55, 0 + br i1 %.not.i, label %61, label %58 -59: ; preds = %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit - %60 = shl nuw nsw i64 %55, 1 - %61 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %60) #21 - br label %62 +58: ; preds = %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit + %59 = shl nuw nsw i64 %55, 1 + %60 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %59) #21 + br label %61 -62: ; preds = %59, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit - %63 = phi ptr [ %61, %59 ], [ null, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit ] - %64 = getelementptr inbounds i8, ptr %63, i64 %57 +61: ; preds = %58, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit + %62 = phi ptr [ %60, %59 ], [ null, %_ZNKSt6vectorItSaItEE12_M_check_lenEmPKc.exit ] + %63 = getelementptr inbounds i8, ptr %62, i64 %57 %.idx.i.i.i.i.i75 = shl nuw nsw i64 %2, 1 - %65 = getelementptr inbounds nuw i8, ptr %64, i64 %.idx.i.i.i.i.i75 - %66 = load i16, ptr %3, align 2, !tbaa !19 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 %.idx.i.i.i.i.i75 + %65 = load i16, ptr %3, align 2, !tbaa !19 br label %.lr.ph.i.i.i.i.i.i.i76 -.lr.ph.i.i.i.i.i.i.i76: ; preds = %.lr.ph.i.i.i.i.i.i.i76, %62 - %.06.i.i.i.i.i.i.i77 = phi ptr [ %67, %.lr.ph.i.i.i.i.i.i.i76 ], [ %64, %62 ] - store i16 %66, ptr %.06.i.i.i.i.i.i.i77, align 2, !tbaa !19 - %67 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i.i.i.i77, i64 2 - %.not.i.i.i.i.i.i.i78 = icmp eq ptr %67, %65 +.lr.ph.i.i.i.i.i.i.i76: ; preds = %.lr.ph.i.i.i.i.i.i.i76, %61 + %.06.i.i.i.i.i.i.i77 = phi ptr [ %66, %.lr.ph.i.i.i.i.i.i.i76 ], [ %63, %62 ] + store i16 %65, ptr %.06.i.i.i.i.i.i.i77, align 2, !tbaa !19 + %66 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i.i.i.i77, i64 2 + %.not.i.i.i.i.i.i.i78 = icmp eq ptr %66, %64 br i1 %.not.i.i.i.i.i.i.i78, label %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80, label %.lr.ph.i.i.i.i.i.i.i76, !llvm.loop !30 _ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80: ; preds = %.lr.ph.i.i.i.i.i.i.i76 %.not.i.i.i.i.i.i.i.i.i81 = icmp eq ptr %1, %45 - br i1 %.not.i.i.i.i.i.i.i.i.i81, label %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit, label %68 + br i1 %.not.i.i.i.i.i.i.i.i.i81, label %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit, label %67 -68: ; preds = %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %63, ptr align 2 %45, i64 %57, i1 false) +67: ; preds = %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %62, ptr align 2 %45, i64 %57, i1 false) br label %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit -_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit: ; preds = %68, %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 - %69 = getelementptr inbounds nuw i16, ptr %64, i64 %2 - %70 = sub i64 %11, %56 +_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit: ; preds = %67, %_ZSt24__uninitialized_fill_n_aIPtmttET_S1_T0_RKT1_RSaIT2_E.exit80 + %68 = getelementptr inbounds nuw i16, ptr %63, i64 %2 + %69 = sub i64 %11, %56 %.not.i.i.i.i.i.i.i.i.i82 = icmp eq ptr %9, %1 - br i1 %.not.i.i.i.i.i.i.i.i.i82, label %72, label %71 + br i1 %.not.i.i.i.i.i.i.i.i.i82, label %71, label %70 -71: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 2 %69, ptr align 2 %1, i64 %70, i1 false) - br label %72 +70: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 2 %68, ptr align 2 %1, i64 %69, i1 false) + br label %71 -72: ; preds = %71, %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit - %73 = getelementptr inbounds i8, ptr %69, i64 %70 +71: ; preds = %70, %_ZSt34__uninitialized_move_if_noexcept_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit + %72 = getelementptr inbounds i8, ptr %68, i64 %69 %.not.i84 = icmp eq ptr %45, null - br i1 %.not.i84, label %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit, label %74 + br i1 %.not.i84, label %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit, label %73 -74: ; preds = %72 - %75 = sub i64 %10, %46 - tail call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %75) #18 +73: ; preds = %71 + %74 = sub i64 %10, %46 + tail call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %74) #18 br label %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit -_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit: ; preds = %72, %74 - store ptr %63, ptr %0, align 8, !tbaa !21 - store ptr %73, ptr %8, align 8, !tbaa !23 - %76 = getelementptr inbounds nuw i16, ptr %63, i64 %55 - store ptr %76, ptr %6, align 8, !tbaa !22 +_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit: ; preds = %71, %73 + store ptr %62, ptr %0, align 8, !tbaa !21 + store ptr %72, ptr %8, align 8, !tbaa !23 + %75 = getelementptr inbounds nuw i16, ptr %62, i64 %55 + store ptr %75, ptr %6, align 8, !tbaa !22 br label %_ZSt4fillIPttEvT_S1_RKT0_.exit _ZSt4fillIPttEvT_S1_RKT0_.exit: ; preds = %.lr.ph.i.i.i71, %.lr.ph.i.i.i, %_ZSt22__uninitialized_move_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit69.thread, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit, %4 diff --git a/bench/eastl/optimized/EACallback.ll b/bench/eastl/optimized/EACallback.ll index 4d6dc9b529e..dc85089c345 100644 --- a/bench/eastl/optimized/EACallback.ll +++ b/bench/eastl/optimized/EACallback.ll @@ -565,24 +565,24 @@ if.then: ; preds = %entry %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.lhs.cast5 = ptrtoint ptr %1 to i64 %sub.ptr.sub7 = sub i64 %sub.ptr.lhs.cast5, %sub.ptr.rhs.cast - %3 = icmp ugt i64 %sub.ptr.sub7, 8 + %cmp9 = icmp ugt i64 %sub.ptr.sub7, 8 %mul = ashr exact i64 %sub.ptr.sub7, 2 - %cond = select i1 %3, i64 %mul, i64 4 - %4 = icmp ugt i64 %cond, -2305843009213693953 - %5 = shl i64 %cond, 3 - %6 = select i1 %4, i64 -1, i64 %5 - %call = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %6, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) + %cond = select i1 %cmp9, i64 %mul, i64 4 + %3 = icmp ugt i64 %cond, -2305843009213693953 + %4 = shl i64 %cond, 3 + %5 = select i1 %3, i64 -1, i64 %4 + %call = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %5, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %7 = load ptr, ptr %this, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %call, ptr align 8 %7, i64 %sub.ptr.sub, i1 false) %8 = load ptr, ptr %this, align 8 %mLocalBuffer = getelementptr inbounds nuw i8, ptr %this, i64 24 - %cmp13.not = icmp eq ptr %8, %mLocalBuffer - %isnull = icmp eq ptr %8, null + %cmp13.not = icmp eq ptr %7, %mLocalBuffer + %isnull = icmp eq ptr %7, null %or.cond = or i1 %cmp13.not, %isnull br i1 %or.cond, label %if.end, label %delete.notnull delete.notnull: ; preds = %if.then - tail call void @_ZdaPv(ptr noundef nonnull %8) #20 + tail call void @_ZdaPv(ptr noundef nonnull %7) #20 br label %if.end if.end: ; preds = %delete.notnull, %if.then @@ -594,10 +594,10 @@ if.end: ; preds = %delete.notnull, %if br label %if.end21 if.end21: ; preds = %if.end, %entry - %9 = phi ptr [ %add.ptr17, %if.end ], [ %0, %entry ] - store ptr %value, ptr %9, align 8 - %10 = load ptr, ptr %mpEnd, align 8 - %incdec.ptr = getelementptr inbounds nuw i8, ptr %10, i64 8 + %8 = phi ptr [ %add.ptr17, %if.end ], [ %0, %entry ] + store ptr %value, ptr %8, align 8 + %9 = load ptr, ptr %mpEnd, align 8 + %incdec.ptr = getelementptr inbounds nuw i8, ptr %9, i64 8 store ptr %incdec.ptr, ptr %mpEnd, align 8 ret ptr %incdec.ptr } @@ -1293,8 +1293,8 @@ entry: %ref.tmp = alloca %"struct.EA::Thread::ThreadTime", align 8 %mbRunning = getelementptr inbounds nuw i8, ptr %this, i64 137 %0 = load volatile i8, ptr %mbRunning, align 1 - %tobool12 = trunc i8 %0 to i1 - br i1 %tobool12, label %while.body.lr.ph, label %while.end + %tobool9 = trunc i8 %0 to i1 + br i1 %tobool9, label %while.body.lr.ph, label %while.end while.body.lr.ph: ; preds = %entry %mNSecPerTickLastTimeMeasured = getelementptr inbounds nuw i8, ptr %this, i64 152 @@ -1351,14 +1351,14 @@ if.end14: ; preds = %if.then11, %if.then %9 = load i64, ptr %mNextCallbackEventTick, align 8 %10 = load i64, ptr %curTick, align 8 %cmp15 = icmp slt i64 %9, %10 - br i1 %cmp15, label %if.then16, label %if.end19 + br i1 %cmp15, label %if.then16, label %if.end33 if.then16: ; preds = %if.end14 %add17 = add nsw i64 %10, 1000 store i64 %add17, ptr %mNextCallbackEventTick, align 8 - br label %if.end19 + br label %if.end33 -if.end19: ; preds = %if.then16, %if.end14 +if.end33: ; preds = %if.then16, %if.end14 %11 = phi i64 [ %add17, %if.then16 ], [ %9, %if.end14 ] %sub21 = sub nsw i64 %8, %1 %sub23 = sub nsw i64 %11, %10 @@ -1368,13 +1368,13 @@ if.end19: ; preds = %if.then16, %if.end1 %conv26 = fptosi double %mul to i64 %..i = call noundef i64 @llvm.smin.i64(i64 %sub21, i64 %conv26) %div29 = sdiv i64 %..i, 2000000 - %13 = icmp ugt i64 %div29, -4611686018428 + %cmp34 = icmp ugt i64 %div29, -4611686018428 %..i.off = add i64 %..i, 1999999 %cmp34 = icmp ult i64 %..i.off, 3999999 %or.cond = or i1 %13, %cmp34 br i1 %or.cond, label %if.end36, label %if.else -if.else: ; preds = %if.end19, %if.end +if.else:; preds = %if.end19, %if.end %timeToNextEventMs.010 = phi i64 [ 50, %if.end ], [ %div29, %if.end19 ] %div.i11 = udiv i64 %timeToNextEventMs.010, 1000 store i64 %div.i11, ptr %ref.tmp, align 8 @@ -1384,11 +1384,11 @@ if.else: ; preds = %if.end19, %if.end store i64 %mul3.i, ptr %tv_nsec.i, align 8 br label %if.end36 -if.end36: ; preds = %if.end19, %if.else +if.end36: ; preds = %if.end33, %if.else %ref.tmp.sink = phi ptr [ %ref.tmp, %if.else ], [ @_ZN2EA6ThreadL13kTimeoutYieldE, %if.end19 ] call void @_ZN2EA6Thread11ThreadSleepERKNS0_10ThreadTimeE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.sink) - %14 = load volatile i8, ptr %mbRunning, align 1 - %tobool = trunc i8 %14 to i1 + %13 = load volatile i8, ptr %mbRunning, align 1 + %tobool = trunc i8 %13 to i1 br i1 %tobool, label %while.body, label %while.end, !llvm.loop !8 while.end: ; preds = %if.end36, %entry @@ -1465,13 +1465,13 @@ if.then14: ; preds = %if.then, %if.then12 if.then.i: ; preds = %if.then14 %sub.ptr.lhs.cast5.i = ptrtoint ptr %5 to i64 %sub.ptr.sub7.i = sub i64 %sub.ptr.lhs.cast5.i, %sub.ptr.rhs.cast.i - %6 = icmp ugt i64 %sub.ptr.sub7.i, 8 + %cmp9.i = icmp ugt i64 %sub.ptr.sub7.i, 8 %mul.i = ashr exact i64 %sub.ptr.sub7.i, 2 - %cond.i = select i1 %6, i64 %mul.i, i64 4 - %7 = icmp ugt i64 %cond.i, -2305843009213693953 - %8 = shl i64 %cond.i, 3 - %9 = select i1 %7, i64 -1, i64 %8 - %call.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %9, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) + %cond.i = select i1 %cmp9.i, i64 %mul.i, i64 4 + %6 = icmp ugt i64 %cond.i, -2305843009213693953 + %7 = shl i64 %cond.i, 3 + %8 = select i1 %6, i64 -1, i64 %7 + %call.i = tail call noundef ptr @_ZnamPKcijS0_i(i64 noundef %8, ptr noundef nonnull @.str, i32 noundef 0, i32 noundef 0, ptr noundef null, i32 noundef 0) %10 = load ptr, ptr %mCallbackArray, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %call.i, ptr align 8 %10, i64 %sub.ptr.sub.i, i1 false) %11 = load ptr, ptr %mCallbackArray, align 8 @@ -1494,10 +1494,10 @@ if.end.i: ; preds = %delete.notnull.i, % br label %_ZN2EA4StdC15CallbackManager14CallbackVector9push_backEPNS0_8CallbackE.exit _ZN2EA4StdC15CallbackManager14CallbackVector9push_backEPNS0_8CallbackE.exit: ; preds = %if.then14, %if.end.i - %12 = phi ptr [ %add.ptr17.i, %if.end.i ], [ %1, %if.then14 ] - store ptr %pCallback, ptr %12, align 8 - %13 = load ptr, ptr %mpEnd.i, align 8 - %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %13, i64 8 + %11 = phi ptr [ %add.ptr17.i, %if.end.i ], [ %1, %if.then14 ] + store ptr %pCallback, ptr %11, align 8 + %12 = load ptr, ptr %mpEnd.i, align 8 + %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %12, i64 8 store ptr %incdec.ptr.i, ptr %mpEnd.i, align 8 br label %if.end20 @@ -1509,13 +1509,13 @@ if.else17: ; preds = %if.then12 if.end20: ; preds = %if.else17, %_ZN2EA4StdC15CallbackManager14CallbackVector9push_backEPNS0_8CallbackE.exit store i64 0, ptr %nextUnits, align 8 %mPrecision.i = getelementptr inbounds nuw i8, ptr %pCallback, i64 16 - %14 = load i64, ptr %mPrecision.i, align 8 - %conv = trunc i64 %14 to i32 + %13 = load i64, ptr %mPrecision.i, align 8 + %conv = trunc i64 %13 to i32 %mPeriod.i = getelementptr inbounds nuw i8, ptr %pCallback, i64 8 - %15 = load i64, ptr %mPeriod.i, align 8 + %14 = load i64, ptr %mPeriod.i, align 8 %mType.i = getelementptr inbounds nuw i8, ptr %pCallback, i64 48 - %16 = load i32, ptr %mType.i, align 8 - switch i32 %16, label %sw.epilog [ + %15 = load i32, ptr %mType.i, align 8 + switch i32 %15, label %sw.epilog [ i32 0, label %sw.bb i32 1, label %sw.bb25 ] @@ -1528,16 +1528,16 @@ sw.bb: ; preds = %if.end20 sw.bb25: ; preds = %if.end20 %mTickCounter = getelementptr inbounds nuw i8, ptr %this, i64 120 - %17 = load atomic i64, ptr %mTickCounter seq_cst, align 8 + %16 = load atomic i64, ptr %mTickCounter seq_cst, align 8 %mNextCallbackEventTick = getelementptr inbounds nuw i8, ptr %this, i64 176 br label %sw.epilog sw.epilog: ; preds = %if.end20, %sw.bb25, %sw.bb - %units.0 = phi i64 [ 0, %if.end20 ], [ %call24, %sw.bb ], [ %17, %sw.bb25 ] + %units.0 = phi i64 [ 0, %if.end20 ], [ %call24, %sw.bb ], [ %16, %sw.bb25 ] %pNextEventUnits.0 = phi ptr [ %nextUnits, %if.end20 ], [ %mNextCallbackEventTime, %sw.bb ], [ %mNextCallbackEventTick, %sw.bb25 ] %mbOneShot = getelementptr inbounds nuw i8, ptr %pCallback, i64 56 store i8 %frombool, ptr %mbOneShot, align 8 - %add = add nsw i64 %units.0, %15 + %add = add nsw i64 %units.0, %14 %mNextCallbackEvent = getelementptr inbounds nuw i8, ptr %pCallback, i64 64 store i64 %add, ptr %mNextCallbackEvent, align 8 %mLastCallbackEvent = getelementptr inbounds nuw i8, ptr %pCallback, i64 72 @@ -1556,48 +1556,48 @@ if.then31: ; preds = %sw.epilog if.then39: ; preds = %if.then31 %conv35 = zext nneg i32 %add.i to i64 - %18 = load i64, ptr %mNextCallbackEvent, align 8 - %add36 = add nsw i64 %18, %conv35 + %17 = load i64, ptr %mNextCallbackEvent, align 8 + %add36 = add nsw i64 %17, %conv35 store i64 %add36, ptr %mNextCallbackEvent, align 8 br label %if.end42 if.end42: ; preds = %if.then31, %if.then39, %sw.epilog %mbAsync = getelementptr inbounds nuw i8, ptr %this, i64 138 - %19 = load i8, ptr %mbAsync, align 2 - %tobool43 = trunc i8 %19 to i1 + %18 = load i8, ptr %mbAsync, align 2 + %tobool43 = trunc i8 %18 to i1 br i1 %tobool43, label %if.then44, label %if.end51 if.then44: ; preds = %if.end42 - %20 = load i64, ptr %pNextEventUnits.0, align 8 - %21 = load i64, ptr %mNextCallbackEvent, align 8 - %cmp46 = icmp slt i64 %20, %21 + %19 = load i64, ptr %pNextEventUnits.0, align 8 + %20 = load i64, ptr %mNextCallbackEvent, align 8 + %cmp46 = icmp slt i64 %19, %20 br i1 %cmp46, label %if.then47, label %if.end51 if.then47: ; preds = %if.then44 - store i64 %21, ptr %pNextEventUnits.0, align 8 + store i64 %20, ptr %pNextEventUnits.0, align 8 br label %if.end51 if.end51: ; preds = %if.then6.if.end51_crit_edge, %if.end42, %if.then47, %if.then44 - %22 = phi i8 [ %.pre, %if.then6.if.end51_crit_edge ], [ %19, %if.end42 ], [ %19, %if.then47 ], [ %19, %if.then44 ] + %21 = phi i8 [ %.pre, %if.then6.if.end51_crit_edge ], [ %18, %if.end42 ], [ %18, %if.then47 ], [ %18, %if.then44 ] %mbAsync52 = getelementptr inbounds nuw i8, ptr %this, i64 138 - %tobool53 = trunc i8 %22 to i1 + %tobool53 = trunc i8 %21 to i1 br i1 %tobool53, label %if.then54, label %if.end72 if.then54: ; preds = %if.end51 %mbThreadStarted = getelementptr inbounds nuw i8, ptr %this, i64 240 - %23 = load atomic i32, ptr %mbThreadStarted seq_cst, align 8 - %cmp56 = icmp eq i32 %23, 0 + %22 = load atomic i32, ptr %mbThreadStarted seq_cst, align 8 + %cmp56 = icmp eq i32 %22, 0 br i1 %cmp56, label %if.then57, label %if.end60 if.then57: ; preds = %if.then54 - %24 = load i8, ptr %mbAsync52, align 2 - %tobool.i = trunc i8 %24 to i1 + %23 = load i8, ptr %mbAsync52, align 2 + %tobool.i = trunc i8 %23 to i1 br i1 %tobool.i, label %if.then.i33, label %if.end60 if.then.i33: ; preds = %if.then57 - %25 = cmpxchg ptr %mbThreadStarted, i32 0, i32 1 seq_cst seq_cst, align 4 - %26 = extractvalue { i32, i1 } %25, 1 - br i1 %26, label %if.then2.i, label %if.end60 + %24 = cmpxchg ptr %mbThreadStarted, i32 0, i32 1 seq_cst seq_cst, align 4 + %25 = extractvalue { i32, i1 } %24, 1 + br i1 %25, label %if.then2.i, label %if.end60 if.then2.i: ; preds = %if.then.i33 %mThreadParam.i = getelementptr inbounds nuw i8, ptr %this, i64 248 @@ -1612,18 +1612,18 @@ if.then2.i: ; preds = %if.then.i33 if.end60: ; preds = %if.then2.i, %if.then.i33, %if.then57, %if.then54 %bReturnValue.1 = phi i1 [ true, %if.then54 ], [ %cmp.i, %if.then2.i ], [ true, %if.then.i33 ], [ false, %if.then57 ] %mNextCallbackEventTime61 = getelementptr inbounds nuw i8, ptr %this, i64 168 - %27 = load i64, ptr %mNextCallbackEventTime61, align 8 + %26 = load i64, ptr %mNextCallbackEventTime61, align 8 %mStopwatch62 = getelementptr inbounds nuw i8, ptr %this, i64 96 %call63 = tail call noundef i64 @_ZNK2EA4StdC9Stopwatch14GetElapsedTimeEv(ptr noundef nonnull align 8 dereferenceable(24) %mStopwatch62) - %cmp64 = icmp slt i64 %27, %call63 + %cmp64 = icmp slt i64 %26, %call63 br i1 %cmp64, label %if.then69, label %lor.lhs.false lor.lhs.false: ; preds = %if.end60 %mNextCallbackEventTick65 = getelementptr inbounds nuw i8, ptr %this, i64 176 - %28 = load i64, ptr %mNextCallbackEventTick65, align 8 + %27 = load i64, ptr %mNextCallbackEventTick65, align 8 %mTickCounter66 = getelementptr inbounds nuw i8, ptr %this, i64 120 - %29 = load atomic i64, ptr %mTickCounter66 seq_cst, align 8 - %cmp68 = icmp slt i64 %28, %29 + %28 = load atomic i64, ptr %mTickCounter66 seq_cst, align 8 + %cmp68 = icmp slt i64 %27, %28 br i1 %cmp68, label %if.then69, label %if.end72 if.then69: ; preds = %lor.lhs.false, %if.end60 diff --git a/bench/entt/optimized/delegate.ll b/bench/entt/optimized/delegate.ll index 2b3a850c038..1fa9d92a9d4 100644 --- a/bench/entt/optimized/delegate.ll +++ b/bench/entt/optimized/delegate.ll @@ -3548,7 +3548,7 @@ _ZNK7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsI unreachable _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit93: ; preds = %158, %_ZNK7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE8IsSharedEv.exit.i.i91, %163, %168 - br i1 %157, label %178, label %.thread127 + br i1 %157, label %178, label %.thread129 176: ; preds = %156 %177 = landingpad { ptr, i32 } @@ -3749,7 +3749,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %272 = getelementptr inbounds nuw i8, ptr %271, i64 8 %273 = load ptr, ptr %272, align 8 call void %273(ptr noundef nonnull align 8 dereferenceable(8) %179) #27 - br label %.thread127 + br label %.thread129 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit105: ; preds = %261, %186 %.pn58 = phi { ptr, i32 } [ %187, %186 ], [ %.pn56, %261 ] @@ -3759,7 +3759,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %276(ptr noundef nonnull align 8 dereferenceable(8) %179) #27 br label %278 -.thread127: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit102, %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit93 +.thread129: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit102, %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit93 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %279 @@ -3772,7 +3772,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %298 -279: ; preds = %.thread127, %154 +279: ; preds = %.thread129, %154 call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @_ZN7testing7MessageC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) call void @llvm.lifetime.start.p0(ptr nonnull %11) diff --git a/bench/ffmpeg/optimized/ac3enc_float.ll b/bench/ffmpeg/optimized/ac3enc_float.ll index 2355f02e344..18f4bd0112d 100644 --- a/bench/ffmpeg/optimized/ac3enc_float.ll +++ b/bench/ffmpeg/optimized/ac3enc_float.ll @@ -873,8 +873,8 @@ calc_cpl_coord.exit335.us.us.i: ; preds = %219, %.critedge.us. %344 = zext i8 %343 to i32 %345 = sub nsw i32 %344, %339 %346 = icmp ugt i32 %345, -241 - %..i.i = call i32 @llvm.smin.i32(i32 %345, i32 15) - %347 = trunc nuw nsw i32 %..i.i to i8 + %347 = call i32 @llvm.smin.i32(i32 %345, i32 15) + %348 = trunc nuw nsw i32 %347 to i8 %348 = select i1 %346, i8 0, i8 %347 store i8 %348, ptr %342, align 1, !tbaa !43 %indvars.iv.next620.i = add nuw nsw i64 %indvars.iv619.i, 1 diff --git a/bench/ffmpeg/optimized/bitpacked_enc.ll b/bench/ffmpeg/optimized/bitpacked_enc.ll index 38a99602bd8..3605f94268a 100644 --- a/bench/ffmpeg/optimized/bitpacked_enc.ll +++ b/bench/ffmpeg/optimized/bitpacked_enc.ll @@ -26,14 +26,14 @@ define internal range(i32 -22, 1) i32 @encode_init(ptr noundef %0) #0 { %7 = getelementptr inbounds nuw i8, ptr %0, i64 112 %8 = load i32, ptr %7, align 8, !tbaa !28 %9 = and i32 %8, 1 - %10 = icmp eq i32 %9, 0 - br i1 %10, label %12, label %11 + %.not = icmp eq i32 %9, 0 + br i1 %.not, label %12, label %11 11: ; preds = %1 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 16, ptr noundef nonnull @.str.2) #5 br label %20 -12: ; preds = %1 +12:; preds = %1 %13 = tail call i32 @av_get_bits_per_pixel(ptr noundef %6) #5 %14 = getelementptr inbounds nuw i8, ptr %0, i64 648 store i32 %13, ptr %14, align 8, !tbaa !29 @@ -46,9 +46,9 @@ define internal range(i32 -22, 1) i32 @encode_init(ptr noundef %0) #0 { 19: ; preds = %12 store ptr @encode_yuv422p10, ptr %3, align 8, !tbaa !31 - br label %20 + br label %19 -20: ; preds = %12, %19, %11 +19: ; preds = %12, %19, %11 %.0 = phi i32 [ -22, %11 ], [ 0, %19 ], [ -22, %12 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/framequeue.ll b/bench/ffmpeg/optimized/framequeue.ll index e8dbe8fb334..1e1c4e2824e 100644 --- a/bench/ffmpeg/optimized/framequeue.ll +++ b/bench/ffmpeg/optimized/framequeue.ll @@ -312,9 +312,9 @@ define void @ff_framequeue_skip_samples(ptr noundef captures(none) %0, i64 nound %wide.trip.count46 = zext nneg i32 %54 to i64 br label %59 -55: ; preds = %.lr.ph, %55 +55: ; preds = %.lr.ph, %55 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %55 ] - %56 = getelementptr inbounds nuw ptr, ptr %50, i64 %indvars.iv + %57 = getelementptr inbounds nuw ptr, ptr %50, i64 %indvars.iv %57 = load ptr, ptr %56, align 8, !tbaa !42 %58 = getelementptr inbounds nuw i8, ptr %57, i64 %.0 store ptr %58, ptr %56, align 8, !tbaa !42 @@ -322,23 +322,23 @@ define void @ff_framequeue_skip_samples(ptr noundef captures(none) %0, i64 nound %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.lr.ph41, label %55, !llvm.loop !44 -59: ; preds = %.lr.ph41, %59 +58: ; preds = %.lr.ph41, %58 %indvars.iv43 = phi i64 [ 0, %.lr.ph41 ], [ %indvars.iv.next44, %59 ] - %60 = getelementptr inbounds nuw ptr, ptr %52, i64 %indvars.iv43 - %61 = load ptr, ptr %60, align 8, !tbaa !42 - %62 = getelementptr inbounds nuw ptr, ptr %.pre48, i64 %indvars.iv43 - store ptr %61, ptr %62, align 8, !tbaa !42 + %59 = getelementptr inbounds nuw ptr, ptr %52, i64 %indvars.iv43 + %60 = load ptr, ptr %59, align 8, !tbaa !42 + %61 = getelementptr inbounds nuw ptr, ptr %.pre48, i64 %indvars.iv43 + store ptr %60, ptr %61, align 8, !tbaa !42 %indvars.iv.next44 = add nuw nsw i64 %indvars.iv43, 1 %exitcond47.not = icmp eq i64 %indvars.iv.next44, %wide.trip.count46 - br i1 %exitcond47.not, label %._crit_edge, label %59, !llvm.loop !45 - -._crit_edge: ; preds = %59, %39 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %64 = load i64, ptr %63, align 8, !tbaa !29 - %65 = add i64 %64, %1 - store i64 %65, ptr %63, align 8, !tbaa !29 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 72 - store i32 1, ptr %66, align 8, !tbaa !30 + br i1 %exitcond47.not, label %._crit_edge, label %58, !llvm.loop !45 + +._crit_edge: ; preds = %58, %39 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %63 = load i64, ptr %62, align 8, !tbaa !29 + %64 = add i64 %63, %1 + store i64 %64, ptr %62, align 8, !tbaa !29 + %65 = getelementptr inbounds nuw i8, ptr %0, i64 72 + store i32 1, ptr %65, align 8, !tbaa !30 ret void } diff --git a/bench/ffmpeg/optimized/h266_metadata.ll b/bench/ffmpeg/optimized/h266_metadata.ll index d9a97f34abb..735340a9c01 100644 --- a/bench/ffmpeg/optimized/h266_metadata.ll +++ b/bench/ffmpeg/optimized/h266_metadata.ll @@ -58,26 +58,26 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr %14 = getelementptr inbounds nuw i8, ptr %5, i64 88 %15 = load i32, ptr %14, align 8, !tbaa !23 %16 = icmp eq i32 %15, 2 - br i1 %16, label %17, label %.thread120 + br i1 %16, label %17, label %.thread121 17: ; preds = %13 tail call void @ff_cbs_delete_unit(ptr noundef nonnull %2, i32 noundef 0) #3 - br label %.thread120 + br label %.thread121 18: ; preds = %8, %3 %.not85 = icmp eq ptr %1, null - br i1 %.not85, label %.thread120, label %19 + br i1 %.not85, label %.thread121, label %19 19: ; preds = %18 %20 = getelementptr inbounds nuw i8, ptr %5, i64 88 %21 = load i32, ptr %20, align 8, !tbaa !23 %22 = icmp eq i32 %21, 1 - br i1 %22, label %23, label %.thread120 + br i1 %22, label %23, label %.thread121 23: ; preds = %19 %24 = getelementptr inbounds nuw i8, ptr %5, i64 80 %25 = icmp sgt i32 %7, 0 - br i1 %25, label %.lr.ph, label %.thread113 + br i1 %25, label %.lr.ph, label %.thread114 .lr.ph: ; preds = %23 %26 = getelementptr inbounds nuw i8, ptr %2, i64 40 @@ -87,11 +87,11 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr 28: ; preds = %.lr.ph, %54 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %54 ] - %.059131 = phi ptr [ null, %.lr.ph ], [ %.160.ph, %54 ] - %.061130 = phi ptr [ null, %.lr.ph ], [ %.263.ph, %54 ] - %.066129 = phi i32 [ 0, %.lr.ph ], [ %.268.ph, %54 ] - %.070128 = phi i32 [ 8, %.lr.ph ], [ %.272.ph, %54 ] - %.077127 = phi i8 [ 0, %.lr.ph ], [ %.279.ph, %54 ] + %.059133 = phi ptr [ null, %.lr.ph ], [ %.160.ph, %54 ] + %.061132 = phi ptr [ null, %.lr.ph ], [ %.263.ph, %54 ] + %.066131 = phi i32 [ 0, %.lr.ph ], [ %.268.ph, %54 ] + %.070130 = phi i32 [ 8, %.lr.ph ], [ %.272.ph, %54 ] + %.077129 = phi i8 [ 0, %.lr.ph ], [ %.279.ph, %54 ] %29 = getelementptr inbounds nuw %struct.CodedBitstreamUnit, ptr %27, i64 %indvars.iv %30 = getelementptr inbounds nuw i8, ptr %29, i64 40 %31 = load ptr, ptr %30, align 8, !tbaa !30 @@ -103,7 +103,7 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr %34 = load i8, ptr %33, align 1, !tbaa !31 %35 = zext i8 %34 to i32 %36 = add nsw i32 %35, -1 - %spec.select = tail call i32 @llvm.smin.i32(i32 %.070128, i32 %36) + %spec.select = tail call i32 @llvm.smin.i32(i32 %.070130, i32 %36) %37 = getelementptr inbounds nuw i8, ptr %31, i64 1 %38 = load i8, ptr %37, align 1, !tbaa !32 switch i8 %38, label %54 [ @@ -127,10 +127,10 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr %43 = getelementptr inbounds nuw i8, ptr %31, i64 1345 %44 = load i8, ptr %43, align 1, !tbaa !34 %45 = icmp eq i8 %44, 0 - %spec.store.select = select i1 %45, i32 2, i32 %.066129 + %spec.store.select = select i1 %45, i32 2, i32 %.066131 %46 = icmp eq i8 %44, 1 %47 = icmp eq i32 %spec.store.select, 0 - %or.cond4 = select i1 %46, i1 %47, i1 false + %spec.store.select5 = select i1 %46, i1 %47, i1 false %spec.store.select5 = select i1 %or.cond4, i32 1, i32 %spec.store.select %.not88 = icmp eq ptr %.059131, null br i1 %.not88, label %48, label %54 @@ -146,26 +146,26 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr br label %54 53: ; preds = %48 - %.not90 = icmp eq ptr %.061130, null - br i1 %.not90, label %.thread113, label %54 + %.not90 = icmp eq ptr %.061132, null + br i1 %.not90, label %.thread114, label %54 54: ; preds = %32, %53, %28, %39, %51, %41 - %.279.ph = phi i8 [ %42, %51 ], [ %42, %41 ], [ %.077127, %39 ], [ %.077127, %28 ], [ %42, %53 ], [ %.077127, %32 ] - %.272.ph = phi i32 [ %spec.select, %51 ], [ %spec.select, %41 ], [ %spec.select, %39 ], [ %.070128, %28 ], [ %spec.select, %53 ], [ %spec.select, %32 ] - %.268.ph = phi i32 [ %spec.store.select5, %51 ], [ %spec.store.select5, %41 ], [ %.066129, %39 ], [ %.066129, %28 ], [ %spec.store.select5, %53 ], [ %.066129, %32 ] - %.263.ph = phi ptr [ %52, %51 ], [ %.061130, %41 ], [ %40, %39 ], [ %.061130, %28 ], [ %.061130, %53 ], [ %.061130, %32 ] - %.160.ph = phi ptr [ %31, %51 ], [ %.059131, %41 ], [ %.059131, %39 ], [ %.059131, %28 ], [ %31, %53 ], [ %.059131, %32 ] + %.279.ph = phi i8 [ %42, %51 ], [ %42, %41 ], [ %.077129, %39 ], [ %.077129, %28 ], [ %42, %53 ], [ %.077129, %32 ] + %.272.ph = phi i32 [ %spec.select, %51 ], [ %spec.select, %41 ], [ %spec.select, %39 ], [ %.070130, %28 ], [ %spec.select, %53 ], [ %spec.select, %32 ] + %.268.ph = phi i32 [ %spec.store.select5, %51 ], [ %spec.store.select5, %41 ], [ %.066131, %39 ], [ %.066131, %28 ], [ %spec.store.select5, %53 ], [ %.066131, %32 ] + %.263.ph = phi ptr [ %52, %51 ], [ %.061132, %41 ], [ %40, %39 ], [ %.061132, %28 ], [ %.061132, %53 ], [ %.061132, %32 ] + %.160.ph = phi ptr [ %31, %51 ], [ %.059133, %41 ], [ %.059133, %39 ], [ %.059133, %28 ], [ %31, %53 ], [ %.059133, %32 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %28, !llvm.loop !42 ._crit_edge: ; preds = %54 %.not91 = icmp eq ptr %.263.ph, null - br i1 %.not91, label %.thread113, label %55 + br i1 %.not91, label %.thread114, label %55 -.thread113: ; preds = %53, %23, %._crit_edge +.thread114: ; preds = %53, %23, %._crit_edge tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.12) #3 - br label %.thread120 + br label %.thread121 55: ; preds = %._crit_edge %56 = trunc nuw nsw i32 %.268.ph to i8 @@ -185,13 +185,13 @@ define internal range(i32 -2147483648, 1) i32 @h266_metadata_update_fragment(ptr store i8 %60, ptr %61, align 1, !tbaa !47 %62 = tail call i32 @ff_cbs_insert_unit_content(ptr noundef nonnull %2, i32 noundef 0, i32 noundef 20, ptr noundef nonnull %24, ptr noundef null) #3 %63 = icmp slt i32 %62, 0 - br i1 %63, label %64, label %.thread120 + br i1 %63, label %64, label %.thread121 64: ; preds = %55 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %0, i32 noundef 16, ptr noundef nonnull @.str.13) #3 - br label %.thread120 + br label %.thread121 -.thread120: ; preds = %.thread113, %64, %17, %13, %19, %18, %55 +.thread121: ; preds = %.thread114, %64, %17, %13, %19, %18, %55 %.1 = phi i32 [ 0, %55 ], [ 0, %18 ], [ 0, %19 ], [ 0, %13 ], [ 0, %17 ], [ -1094995529, %.thread113 ], [ %62, %64 ] ret i32 %.1 } diff --git a/bench/ffmpeg/optimized/lclenc.ll b/bench/ffmpeg/optimized/lclenc.ll index 18b7f8ecd76..d264d34957c 100644 --- a/bench/ffmpeg/optimized/lclenc.ll +++ b/bench/ffmpeg/optimized/lclenc.ll @@ -42,14 +42,14 @@ define internal i32 @encode_init(ptr noundef %0) #0 { %12 = getelementptr inbounds nuw i8, ptr %0, i64 72 store ptr %11, ptr %12, align 8, !tbaa !35 %.not30 = icmp eq ptr %11, null - br i1 %.not30, label %33, label %13 + br i1 %.not30, label %36, label %13 13: ; preds = %10 %14 = getelementptr inbounds nuw i8, ptr %0, i64 424 %15 = load i32, ptr %14, align 8, !tbaa !36 %16 = icmp slt i32 %15, -1 - %..i = tail call i32 @llvm.smin.i32(i32 %15, i32 9) - %.0.i = select i1 %16, i32 0, i32 %..i + %17 = tail call i32 @llvm.smin.i32(i32 %15, i32 9) + %.0.i = select i1 %16, i32 0, i32 %17 %17 = getelementptr inbounds nuw i8, ptr %3, i64 12 store i32 %.0.i, ptr %17, align 4, !tbaa !37 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -59,30 +59,30 @@ define internal i32 @encode_init(ptr noundef %0) #0 { %20 = getelementptr inbounds nuw i8, ptr %0, i64 648 store i32 24, ptr %20, align 8, !tbaa !40 store i8 4, ptr %11, align 1, !tbaa !41 - %21 = getelementptr inbounds nuw i8, ptr %11, i64 1 - store i8 0, ptr %21, align 1, !tbaa !41 - %22 = getelementptr inbounds nuw i8, ptr %11, i64 2 - store i8 0, ptr %22, align 1, !tbaa !41 - %23 = getelementptr inbounds nuw i8, ptr %11, i64 3 - store i8 0, ptr %23, align 1, !tbaa !41 - %24 = getelementptr inbounds nuw i8, ptr %11, i64 4 - store i8 2, ptr %24, align 1, !tbaa !41 - %25 = trunc i32 %.0.i to i8 - %26 = getelementptr inbounds nuw i8, ptr %11, i64 5 - store i8 %25, ptr %26, align 1, !tbaa !41 - %27 = getelementptr inbounds nuw i8, ptr %11, i64 6 - store i8 0, ptr %27, align 1, !tbaa !41 - %28 = getelementptr inbounds nuw i8, ptr %11, i64 7 - store i8 3, ptr %28, align 1, !tbaa !41 - %29 = load ptr, ptr %3, align 8, !tbaa !27 - %30 = getelementptr inbounds nuw i8, ptr %29, i64 80 - store i32 8, ptr %30, align 8, !tbaa !42 - %31 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %32 = tail call i32 @ff_deflate_init(ptr noundef nonnull %31, i32 noundef %.0.i, ptr noundef nonnull %0) #5 - br label %33 - -33: ; preds = %10, %13 - %.0 = phi i32 [ %32, %13 ], [ -12, %10 ] + %24 = getelementptr inbounds nuw i8, ptr %11, i64 1 + store i8 0, ptr %24, align 1, !tbaa !41 + %25 = getelementptr inbounds nuw i8, ptr %11, i64 2 + store i8 0, ptr %25, align 1, !tbaa !41 + %26 = getelementptr inbounds nuw i8, ptr %11, i64 3 + store i8 0, ptr %26, align 1, !tbaa !41 + %27 = getelementptr inbounds nuw i8, ptr %11, i64 4 + store i8 2, ptr %27, align 1, !tbaa !41 + %28 = trunc i32 %.0.i to i8 + %29 = getelementptr inbounds nuw i8, ptr %11, i64 5 + store i8 %28, ptr %29, align 1, !tbaa !41 + %30 = getelementptr inbounds nuw i8, ptr %11, i64 6 + store i8 0, ptr %30, align 1, !tbaa !41 + %31 = getelementptr inbounds nuw i8, ptr %11, i64 7 + store i8 3, ptr %31, align 1, !tbaa !41 + %32 = load ptr, ptr %3, align 8, !tbaa !27 + %33 = getelementptr inbounds nuw i8, ptr %32, i64 80 + store i32 8, ptr %33, align 8, !tbaa !42 + %34 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %35 = tail call i32 @ff_deflate_init(ptr noundef nonnull %34, i32 noundef %.0.i, ptr noundef nonnull %0) #5 + br label %36 + +36: ; preds = %10, %13 + %.0 = phi i32 [ %35, %13 ], [ -12, %10 ] ret i32 %.0 } diff --git a/bench/g2o/optimized/edge_project_xyz_onlypose.ll b/bench/g2o/optimized/edge_project_xyz_onlypose.ll index 32c9b7ee0ee..c0c199c01c5 100644 --- a/bench/g2o/optimized/edge_project_xyz_onlypose.ll +++ b/bench/g2o/optimized/edge_project_xyz_onlypose.ll @@ -825,7 +825,7 @@ define linkonce_odr void @_ZN3g2o18BaseFixedSizedEdgeILi2EN5Eigen6MatrixIdLi2ELi %8 = getelementptr inbounds nuw i8, ptr %7, i64 100 %9 = load i8, ptr %8, align 4, !tbaa !148, !range !164, !noundef !165 %10 = trunc nuw i8 %9 to i1 - br i1 %10, label %174, label %11 + br i1 %10, label %173, label %11 11: ; preds = %3 %12 = getelementptr inbounds nuw i8, ptr %0, i64 248 @@ -1056,14 +1056,14 @@ define linkonce_odr void @_ZN3g2o18BaseFixedSizedEdgeILi2EN5Eigen6MatrixIdLi2ELi %170 = fadd <2 x double> %169, %168 store <2 x double> %170, ptr %151, align 1, !tbaa !46 %171 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i, 1 - %172 = icmp eq i64 %171, 6 - br i1 %172, label %173, label %111, !llvm.loop !203 + %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %171, 6 + br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %172, label %111, !llvm.loop !203 -173: ; preds = %111 +172: ; preds = %111 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %174 + br label %173 -174: ; preds = %173, %3 +173: ; preds = %172, %3 ret void } diff --git a/bench/g2o/optimized/estimate_propagator.ll b/bench/g2o/optimized/estimate_propagator.ll index 8525ba90aae..093b135e4c0 100644 --- a/bench/g2o/optimized/estimate_propagator.ll +++ b/bench/g2o/optimized/estimate_propagator.ll @@ -1786,18 +1786,18 @@ define noundef double @_ZNK3g2o30EstimatePropagatorCostOdometryclEPNS_16Optimiza %13 = load i32, ptr %12, align 8, !tbaa !70 %14 = sub nsw i32 %11, %13 %15 = tail call i32 @llvm.abs.i32(i32 %14, i1 true) - %16 = icmp eq i32 %15, 1 - br i1 %16, label %17, label %30 - -17: ; preds = %4 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %19 = load ptr, ptr %18, align 8, !tbaa !120 - %20 = tail call ptr @_ZNK3g2o15SparseOptimizer14findActiveEdgeEPKNS_16OptimizableGraph4EdgeE(ptr noundef nonnull align 8 dereferenceable(409) %19, ptr noundef %1) - %21 = load ptr, ptr %18, align 8, !tbaa !120 - %22 = getelementptr inbounds nuw i8, ptr %21, i64 360 - %23 = load ptr, ptr %22, align 8, !tbaa !123 - %24 = icmp eq ptr %20, %23 - br i1 %24, label %30, label %25 + %.not = icmp eq i32 %15, 1 + br i1 %.not, label %16, label %24 + +16: ; preds = %4 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %18 = load ptr, ptr %17, align 8, !tbaa !120 + %19 = tail call ptr @_ZNK3g2o15SparseOptimizer14findActiveEdgeEPKNS_16OptimizableGraph4EdgeE(ptr noundef nonnull align 8 dereferenceable(409) %18, ptr noundef %1) + %20 = load ptr, ptr %17, align 8, !tbaa !120 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 360 + %22 = load ptr, ptr %21, align 8, !tbaa !123 + %23 = icmp eq ptr %19, %22 + br i1 %23, label %24, label %25 25: ; preds = %17 %26 = load ptr, ptr %1, align 8, !tbaa !92 @@ -1806,7 +1806,7 @@ define noundef double @_ZNK3g2o30EstimatePropagatorCostOdometryclEPNS_16Optimiza %29 = tail call noundef double %28(ptr noundef nonnull align 8 dereferenceable(176) %1, ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull %3) br label %30 -30: ; preds = %25, %17, %4 +24: ; preds = %25, %16, %4 %.0 = phi double [ 0x7FEFFFFFFFFFFFFF, %4 ], [ %29, %25 ], [ 0x7FEFFFFFFFFFFFFF, %17 ] ret double %.0 } diff --git a/bench/glslang/optimized/Logger.ll b/bench/glslang/optimized/Logger.ll index c95fc396319..08b2dca7dfd 100644 --- a/bench/glslang/optimized/Logger.ll +++ b/bench/glslang/optimized/Logger.ll @@ -204,59 +204,59 @@ _ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_c %16 = select i1 %14, i64 288230376151711743, i64 %15 %17 = ptrtoint ptr %1 to i64 %18 = sub i64 %17, %8 - %19 = icmp ne i64 %16, 0 - tail call void @llvm.assume(i1 %19) - %20 = shl nuw nsw i64 %16, 5 - %21 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %20) #11 - %22 = getelementptr inbounds i8, ptr %21, i64 %18 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %2) #9 + %.not.i = icmp ne i64 %16, 0 + tail call void @llvm.assume(i1 %.not.i) + %19 = shl nuw nsw i64 %16, 5 + %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #11 + %21 = getelementptr inbounds i8, ptr %20, i64 %18 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %2) #9 %.not10.i.i.i = icmp eq ptr %6, %1 br i1 %.not10.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit, %.lr.ph.i.i.i - %.012.i.i.i = phi ptr [ %24, %.lr.ph.i.i.i ], [ %21, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] - %.0911.i.i.i = phi ptr [ %23, %.lr.ph.i.i.i ], [ %6, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] + %.012.i.i.i = phi ptr [ %23, %.lr.ph.i.i.i ], [ %20, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] + %.0911.i.i.i = phi ptr [ %22, %.lr.ph.i.i.i ], [ %6, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %.012.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i) #9 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i) #9 - %23 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 32 - %24 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 - %.not.i.i.i = icmp eq ptr %23, %1 + %22 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 32 + %23 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 + %.not.i.i.i = icmp eq ptr %22, %1 br i1 %.not.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %.lr.ph.i.i.i, !llvm.loop !9 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit: ; preds = %.lr.ph.i.i.i, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit - %.0.lcssa.i.i.i = phi ptr [ %21, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ], [ %24, %.lr.ph.i.i.i ] - %25 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i, i64 32 + %.0.lcssa.i.i.i = phi ptr [ %20, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ], [ %23, %.lr.ph.i.i.i ] + %24 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i, i64 32 %.not10.i.i.i16 = icmp eq ptr %1, %5 br i1 %.not10.i.i.i16, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, label %.lr.ph.i.i.i17 .lr.ph.i.i.i17: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, %.lr.ph.i.i.i17 - %.012.i.i.i18 = phi ptr [ %27, %.lr.ph.i.i.i17 ], [ %25, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] - %.0911.i.i.i19 = phi ptr [ %26, %.lr.ph.i.i.i17 ], [ %1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] + %.012.i.i.i18 = phi ptr [ %26, %.lr.ph.i.i.i17 ], [ %24, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] + %.0911.i.i.i19 = phi ptr [ %25, %.lr.ph.i.i.i17 ], [ %1, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %.012.i.i.i18, ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i19) #9 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.0911.i.i.i19) #9 - %26 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i19, i64 32 - %27 = getelementptr inbounds nuw i8, ptr %.012.i.i.i18, i64 32 - %.not.i.i.i20 = icmp eq ptr %26, %5 + %25 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i19, i64 32 + %26 = getelementptr inbounds nuw i8, ptr %.012.i.i.i18, i64 32 + %.not.i.i.i20 = icmp eq ptr %25, %5 br i1 %.not.i.i.i20, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, label %.lr.ph.i.i.i17, !llvm.loop !9 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22: ; preds = %.lr.ph.i.i.i17, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit - %.0.lcssa.i.i.i21 = phi ptr [ %25, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ], [ %27, %.lr.ph.i.i.i17 ] - %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %.0.lcssa.i.i.i21 = phi ptr [ %24, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ], [ %26, %.lr.ph.i.i.i17 ] + %27 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.not.i23 = icmp eq ptr %6, null - br i1 %.not.i23, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, label %29 + br i1 %.not.i23, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, label %28 -29: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22 - %30 = load ptr, ptr %28, align 8 - %31 = ptrtoint ptr %30 to i64 - %32 = sub i64 %31, %8 - tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef %32) #12 +28: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22 + %29 = load ptr, ptr %27, align 8 + %30 = ptrtoint ptr %29 to i64 + %31 = sub i64 %30, %8 + tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef %31) #12 br label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit -_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, %29 - store ptr %21, ptr %0, align 8 +_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit22, %28 + store ptr %20, ptr %0, align 8 store ptr %.0.lcssa.i.i.i21, ptr %4, align 8 - %33 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %21, i64 %16 - store ptr %33, ptr %28, align 8 + %32 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %20, i64 %16 + store ptr %32, ptr %27, align 8 ret void } diff --git a/bench/hdf5/optimized/h5format_convert.ll b/bench/hdf5/optimized/h5format_convert.ll index 8068950c3ef..ba21b7b60b5 100644 --- a/bench/hdf5/optimized/h5format_convert.ll +++ b/bench/hdf5/optimized/h5format_convert.ll @@ -665,13 +665,13 @@ declare i32 @h5trav_visit(i64 noundef, ptr noundef, i1 noundef zeroext, i1 nound define internal range(i32 -1, 1) i32 @convert_dsets_cb(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef readnone captures(address_is_null) %2, ptr noundef readonly captures(none) %3) #3 { %5 = load i64, ptr %3, align 8, !tbaa !4 %6 = icmp eq ptr %2, null - br i1 %6, label %7, label %18 + br i1 %6, label %7, label %17 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %1, i64 24 %9 = load i32, ptr %8, align 8, !tbaa !19 %10 = icmp eq i32 %9, 1 - br i1 %10, label %11, label %18 + br i1 %10, label %11, label %17 11: ; preds = %7 %.b = load i1, ptr @verbose_g, align 4 @@ -688,7 +688,7 @@ define internal range(i32 -1, 1) i32 @convert_dsets_cb(ptr noundef %0, ptr nound %spec.select = sext i1 %17 to i32 br label %18 -18: ; preds = %15, %4, %7 +17: ; preds = %15, %4, %7 %.0 = phi i32 [ 0, %7 ], [ 0, %4 ], [ %spec.select, %15 ] ret i32 %.0 } diff --git a/bench/hwloc/optimized/topology-xml-libxml.ll b/bench/hwloc/optimized/topology-xml-libxml.ll index d6b3d5feb57..52037786039 100644 --- a/bench/hwloc/optimized/topology-xml-libxml.ll +++ b/bench/hwloc/optimized/topology-xml-libxml.ll @@ -1013,23 +1013,23 @@ hwloc_libxml2_init_once.exit: ; preds = %3, %14 %15 = tail call ptr @xmlNewDoc(ptr noundef nonnull @.str.17) #11 %16 = tail call ptr @xmlNewNode(ptr noundef null, ptr noundef nonnull @.str.8) #11 %17 = and i64 %2, 2 - %18 = icmp eq i64 %17, 0 - %.str.19..str.18 = select i1 %18, ptr @.str.19, ptr @.str.18 - %19 = tail call ptr @xmlNewProp(ptr noundef %16, ptr noundef nonnull @.str.9, ptr noundef nonnull %.str.19..str.18) #11 - %20 = getelementptr inbounds nuw i8, ptr %4, i64 48 - %21 = tail call ptr @xmlDocSetRootElement(ptr noundef %15, ptr noundef %16) #11 - %22 = tail call ptr @xmlCreateIntSubset(ptr noundef %15, ptr noundef nonnull @.str.8, ptr noundef null, ptr noundef nonnull @.str.5) #11 - %23 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr @hwloc__libxml_export_new_child, ptr %23, align 8, !tbaa !54 - %24 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr @hwloc__libxml_export_new_prop, ptr %24, align 8, !tbaa !58 - %25 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store ptr @hwloc__libxml_export_add_content, ptr %25, align 8, !tbaa !59 - %26 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store ptr @hwloc__libxml_export_end_object, ptr %26, align 8, !tbaa !60 - %27 = getelementptr inbounds nuw i8, ptr %4, i64 40 - store ptr %1, ptr %27, align 8, !tbaa !61 - store ptr %16, ptr %20, align 8, !tbaa !39 + %.not = icmp eq i64 %17, 0 + %.str.19..str.18 = select i1 %.not, ptr @.str.19, ptr @.str.18 + %18 = tail call ptr @xmlNewProp(ptr noundef %16, ptr noundef nonnull @.str.9, ptr noundef nonnull %.str.19..str.18) #11 + %19 = getelementptr inbounds nuw i8, ptr %4, i64 48 + %20 = tail call ptr @xmlDocSetRootElement(ptr noundef %15, ptr noundef %16) #11 + %21 = tail call ptr @xmlCreateIntSubset(ptr noundef %15, ptr noundef nonnull @.str.8, ptr noundef null, ptr noundef nonnull @.str.5) #11 + %22 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr @hwloc__libxml_export_new_child, ptr %22, align 8, !tbaa !54 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr @hwloc__libxml_export_new_prop, ptr %23, align 8, !tbaa !58 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store ptr @hwloc__libxml_export_add_content, ptr %24, align 8, !tbaa !59 + %25 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store ptr @hwloc__libxml_export_end_object, ptr %25, align 8, !tbaa !60 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 40 + store ptr %1, ptr %26, align 8, !tbaa !61 + store ptr %16, ptr %19, align 8, !tbaa !39 call void @hwloc__xml_export_topology(ptr noundef nonnull %4, ptr noundef %0, i64 noundef %2) #11 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret ptr %15 diff --git a/bench/icu/optimized/csrmbcs.ll b/bench/icu/optimized/csrmbcs.ll index f3377f611b1..1b5c54bb38b 100644 --- a/bench/icu/optimized/csrmbcs.ll +++ b/bench/icu/optimized/csrmbcs.ll @@ -386,10 +386,10 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 br i1 %or.cond28, label %33, label %20 20: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit - %.not.i29 = icmp slt i32 %13, %9 - br i1 %.not.i29, label %22, label %.thread39 + %.not.i30 = icmp slt i32 %13, %9 + br i1 %.not.i30, label %22, label %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32 -.thread39: ; preds = %20 +_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32: ; preds = %20 %21 = getelementptr inbounds nuw i8, ptr %1, i64 13 store i8 1, ptr %21, align 1, !tbaa !11 br label %32 @@ -410,7 +410,7 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 %or.cond42 = or i1 %or.cond5, %31 br i1 %or.cond42, label %33, label %32 -32: ; preds = %22, %.thread39 +32: ; preds = %22, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit32 store i8 1, ptr %7, align 4, !tbaa !10 br label %33 @@ -728,7 +728,7 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 13 store i8 1, ptr %10, align 1, !tbaa !11 store i32 -1, ptr %1, align 4, !tbaa !3 - br label %60 + br label %56 _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 %11 = getelementptr inbounds nuw i8, ptr %2, i64 40 @@ -741,7 +741,7 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit: ; preds = %3 %17 = zext i8 %16 to i32 store i32 %17, ptr %1, align 4, !tbaa !3 %18 = icmp ult i8 %16, -127 - br i1 %18, label %60, label %19 + br i1 %18, label %56, label %19 19: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit %.not.i50 = icmp slt i32 %13, %9 @@ -768,15 +768,15 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52: ; preds = %19 %30 = phi i32 [ %28, %21 ], [ %17, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52 ] %31 = phi i32 [ %22, %21 ], [ %13, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52 ] %.0.i5161 = phi i32 [ %26, %21 ], [ -1, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52 ] - %32 = icmp eq i8 %16, -1 - %33 = add nsw i32 %.0.i5161, -64 - %or.cond3 = icmp ult i32 %33, 63 - %or.cond = select i1 %32, i1 true, i1 %or.cond3 - br i1 %or.cond, label %60, label %34 + %.not = icmp eq i8 %16, -1 + %32 = add nsw i32 %.0.i5161, -64 + %or.cond = icmp ult i32 %32, 63 + %or.cond67 = select i1 %.not, i1 true, i1 %or.cond + br i1 %or.cond67, label %56, label %33 -34: ; preds = %29 +33: ; preds = %29 %35 = icmp sgt i32 %.0.i5161, 79 - %36 = icmp ne i32 %.0.i5161, 255 + %or.cond7 = icmp ne i32 %.0.i5161, 255 %or.cond5 = and i1 %35, %36 br i1 %or.cond5, label %60, label %37 @@ -790,49 +790,49 @@ _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit52: ; preds = %19 br i1 %.not.i53, label %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55, label %.sink.split _ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55: ; preds = %39 - %40 = add nsw i32 %31, 1 - store i32 %40, ptr %4, align 4, !tbaa !9 - %41 = sext i32 %31 to i64 - %42 = getelementptr inbounds i8, ptr %12, i64 %41 - %43 = load i8, ptr %42, align 1, !tbaa !18 - %44 = zext i8 %43 to i32 - %45 = add i8 %43, 127 - %or.cond9 = icmp ult i8 %45, 126 - br i1 %or.cond9, label %46, label %59 - -46: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55 - %.not.i56 = icmp slt i32 %40, %9 + %36 = add nsw i32 %31, 1 + store i32 %36, ptr %4, align 4, !tbaa !9 + %37 = sext i32 %31 to i64 + %38 = getelementptr inbounds i8, ptr %12, i64 %37 + %39 = load i8, ptr %38, align 1, !tbaa !18 + %40 = zext i8 %39 to i32 + %41 = add i8 %39, 127 + %or.cond9 = icmp ult i8 %41, 126 + br i1 %or.cond9, label %42, label %55 + +42: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55 + %.not.i56 = icmp slt i32 %36, %9 br i1 %.not.i56, label %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58, label %.sink.split -_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58: ; preds = %46 - %47 = add nsw i32 %31, 2 - store i32 %47, ptr %4, align 4, !tbaa !9 - %48 = sext i32 %40 to i64 - %49 = getelementptr inbounds i8, ptr %12, i64 %48 - %50 = load i8, ptr %49, align 1, !tbaa !18 - %51 = add i8 %50, -48 - %or.cond11 = icmp ult i8 %51, 10 - br i1 %or.cond11, label %52, label %59 - -52: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58 - %53 = zext nneg i8 %50 to i32 - %54 = shl nuw i32 %30, 16 - %55 = shl nuw nsw i32 %44, 8 - %56 = or disjoint i32 %55, %53 - %57 = or disjoint i32 %56, %54 - store i32 %57, ptr %1, align 4, !tbaa !3 - br label %60 - -.sink.split: ; preds = %46, %39 - %58 = getelementptr inbounds nuw i8, ptr %1, i64 13 - store i8 1, ptr %58, align 1, !tbaa !11 - br label %59 - -59: ; preds = %.sink.split, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58, %37 +_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58: ; preds = %42 + %43 = add nsw i32 %31, 2 + store i32 %43, ptr %4, align 4, !tbaa !9 + %44 = sext i32 %36 to i64 + %45 = getelementptr inbounds i8, ptr %12, i64 %44 + %46 = load i8, ptr %45, align 1, !tbaa !18 + %47 = add i8 %46, -48 + %or.cond11 = icmp ult i8 %47, 10 + br i1 %or.cond11, label %48, label %55 + +48: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58 + %49 = zext nneg i8 %46 to i32 + %50 = shl nuw i32 %30, 16 + %51 = shl nuw nsw i32 %40, 8 + %52 = or disjoint i32 %51, %49 + %53 = or disjoint i32 %52, %50 + store i32 %53, ptr %1, align 4, !tbaa !3 + br label %56 + +.sink.split: ; preds = %42, %39 + %54 = getelementptr inbounds nuw i8, ptr %1, i64 13 + store i8 1, ptr %54, align 1, !tbaa !11 + br label %55 + +55: ; preds = %.sink.split, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit55, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit58, %37 store i8 1, ptr %7, align 4, !tbaa !10 - br label %60 + br label %56 -60: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread, %29, %59, %34, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit, %52 +56: ; preds = %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread, %29, %55, %34, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit, %48 %.0 = phi i8 [ 1, %52 ], [ 1, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit ], [ 1, %34 ], [ 1, %59 ], [ 1, %29 ], [ 0, %_ZN6icu_7712IteratedChar8nextByteEPNS_9InputTextE.exit.thread ] ret i8 %.0 } diff --git a/bench/icu/optimized/ucmndata.ll b/bench/icu/optimized/ucmndata.ll index 78b46cd676c..66e923471f0 100644 --- a/bench/icu/optimized/ucmndata.ll +++ b/bench/icu/optimized/ucmndata.ll @@ -178,7 +178,7 @@ define internal noundef ptr @_ZL17offsetTOCLookupFnPK11UDataMemoryPKcPiP10UError %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !24 %.not = icmp eq ptr %6, null - br i1 %.not, label %86, label %7 + br i1 %.not, label %83, label %7 7: ; preds = %4 %8 = load i32, ptr %6, align 4, !tbaa !25 @@ -241,14 +241,14 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit39.i: ; preds = %31 %40 = icmp sgt i32 %8, 2 br i1 %40, label %.lr.ph.i, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread -.lr.ph.i: ; preds = %.preheader.i, %68 - %.02668.i = phi i32 [ %.228.i, %68 ], [ 1, %.preheader.i ] - %.03067.i = phi i32 [ %.232.i, %68 ], [ %25, %.preheader.i ] - %.05166.i = phi i32 [ %.152.i, %68 ], [ %.018.i35.i, %.preheader.i ] - %.05365.i = phi i32 [ %.154.i, %68 ], [ %.018.i.i, %.preheader.i ] - %41 = add nuw nsw i32 %.03067.i, %.02668.i +.lr.ph.i: ; preds = %.preheader.i, %65 + %.02669.i = phi i32 [ %.228.i, %65 ], [ 1, %.preheader.i ] + %.03068.i = phi i32 [ %.232.i, %65 ], [ %25, %.preheader.i ] + %.05167.i = phi i32 [ %.152.i, %65 ], [ %.018.i35.i, %.preheader.i ] + %.05366.i = phi i32 [ %.154.i, %65 ], [ %.018.i.i, %.preheader.i ] + %41 = add nuw nsw i32 %.03068.i, %.02669.i %42 = lshr i32 %41, 1 - %43 = tail call i32 @llvm.smin.i32(i32 %.05365.i, i32 %.05166.i) + %43 = tail call i32 @llvm.smin.i32(i32 %.05366.i, i32 %.05167.i) %44 = zext nneg i32 %42 to i64 %45 = getelementptr inbounds nuw %struct.UDataOffsetTOCEntry, ptr %9, i64 %44 %46 = load i32, ptr %45, align 4, !tbaa !27 @@ -282,14 +282,14 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i: ; preds = %52 64: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i %65 = icmp eq i8 %54, %56 - br i1 %65, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %66 + br i1 %62, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %66 66: ; preds = %64 %67 = add nuw nsw i32 %42, 1 - br label %68 + br label %65 -68: ; preds = %66, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i - %.154.i = phi i32 [ %.018.i40.i, %66 ], [ %.05365.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] +68:; preds = %63, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i + %.228.i = phi i32 [ %.018.i40.i, %63 ], [ %.05366.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] %.152.i = phi i32 [ %.05166.i, %66 ], [ %.018.i40.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] %.232.i = phi i32 [ %.03067.i, %66 ], [ %42, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] %.228.i = phi i32 [ %67, %66 ], [ %.02668.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i ] @@ -297,41 +297,41 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit44.i: ; preds = %52 br i1 %69, label %.lr.ph.i, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread, !llvm.loop !29 _ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit39.i - %70 = icmp sgt i32 %8, 0 - br i1 %70, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread - -_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24: ; preds = %64, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit - %.0.i26 = phi i32 [ %25, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %42, %64 ] - %71 = zext nneg i32 %.0.i26 to i64 - %72 = getelementptr inbounds nuw %struct.UDataOffsetTOCEntry, ptr %9, i64 %71 - %73 = add nuw nsw i32 %.0.i26, 1 - %74 = icmp slt i32 %73, %8 - br i1 %74, label %75, label %81 - -75: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 - %76 = getelementptr inbounds nuw i8, ptr %72, i64 12 - %77 = load i32, ptr %76, align 4, !tbaa !31 - %78 = getelementptr inbounds nuw i8, ptr %72, i64 4 - %79 = load i32, ptr %78, align 4, !tbaa !31 - %80 = sub i32 %77, %79 - br label %81 - -81: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, %75 - %storemerge = phi i32 [ %80, %75 ], [ -1, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 ] + %67 = icmp sgt i32 %8, 0 + br i1 %67, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread + +_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24: ; preds = %61, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit + %.0.i26 = phi i32 [ %25, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %42, %61 ] + %68 = zext nneg i32 %.0.i26 to i64 + %69 = getelementptr inbounds nuw %struct.UDataOffsetTOCEntry, ptr %9, i64 %68 + %70 = add nuw nsw i32 %.0.i26, 1 + %71 = icmp slt i32 %70, %8 + br i1 %71, label %72, label %78 + +72: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 + %73 = getelementptr inbounds nuw i8, ptr %69, i64 12 + %74 = load i32, ptr %73, align 4, !tbaa !31 + %75 = getelementptr inbounds nuw i8, ptr %69, i64 4 + %76 = load i32, ptr %75, align 4, !tbaa !31 + %77 = sub i32 %74, %76 + br label %78 + +78: ; preds = %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24, %72 + %storemerge = phi i32 [ %77, %75 ], [ -1, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread24 ] store i32 %storemerge, ptr %2, align 4, !tbaa !32 - %82 = getelementptr inbounds nuw i8, ptr %72, i64 4 - %83 = load i32, ptr %82, align 4, !tbaa !31 - %84 = zext i32 %83 to i64 - %85 = getelementptr inbounds nuw i8, ptr %6, i64 %84 + %79 = getelementptr inbounds nuw i8, ptr %69, i64 4 + %80 = load i32, ptr %79, align 4, !tbaa !31 + %81 = zext i32 %80 to i64 + %82 = getelementptr inbounds nuw i8, ptr %6, i64 %81 br label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread -86: ; preds = %4 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %88 = load ptr, ptr %87, align 8, !tbaa !15 +83: ; preds = %4 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %85 = load ptr, ptr %84, align 8, !tbaa !15 br label %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread -_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread: ; preds = %68, %.preheader.i, %7, %81, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit, %86 - %.1 = phi ptr [ %88, %86 ], [ %85, %81 ], [ null, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %68 ] +_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit.thread: ; preds = %65, %.preheader.i, %7, %78, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit, %83 + %.1 = phi ptr [ %85, %86 ], [ %82, %81 ], [ null, %_ZL27offsetTOCPrefixBinarySearchPKcS0_PK19UDataOffsetTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %65 ] ret ptr %.1 } @@ -356,7 +356,7 @@ define internal noundef ptr @_ZL18pointerTOCLookupFnPK11UDataMemoryPKcPiP10UErro %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !24 %.not = icmp eq ptr %6, null - br i1 %.not, label %70, label %7 + br i1 %.not, label %67, label %7 7: ; preds = %4 %8 = load i32, ptr %6, align 8, !tbaa !33 @@ -416,13 +416,13 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit36.i: ; preds = %27 br i1 %36, label %.lr.ph.i, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread .lr.ph.i: ; preds = %.preheader.i, %62 - %.02365.i = phi i32 [ %.225.i, %62 ], [ 1, %.preheader.i ] - %.02764.i = phi i32 [ %.229.i, %62 ], [ %23, %.preheader.i ] - %.04863.i = phi i32 [ %.149.i, %62 ], [ %.018.i32.i, %.preheader.i ] - %.05062.i = phi i32 [ %.151.i, %62 ], [ %.018.i.i, %.preheader.i ] - %37 = add nuw nsw i32 %.02764.i, %.02365.i + %.02366.i = phi i32 [ %.225.i, %62 ], [ 1, %.preheader.i ] + %.02765.i = phi i32 [ %.229.i, %62 ], [ %23, %.preheader.i ] + %.04864.i = phi i32 [ %.149.i, %62 ], [ %.018.i32.i, %.preheader.i ] + %.05063.i = phi i32 [ %.151.i, %62 ], [ %.018.i.i, %.preheader.i ] + %37 = add nuw nsw i32 %.02765.i, %.02366.i %38 = lshr i32 %37, 1 - %39 = tail call i32 @llvm.smin.i32(i32 %.05062.i, i32 %.04863.i) + %39 = tail call i32 @llvm.smin.i32(i32 %.05063.i, i32 %.04864.i) %40 = zext nneg i32 %38 to i64 %41 = getelementptr inbounds nuw %struct.PointerTOCEntry, ptr %9, i64 %40 %42 = load ptr, ptr %41, align 8, !tbaa !35 @@ -460,8 +460,8 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i: ; preds = %46 %61 = add nuw nsw i32 %38, 1 br label %62 -62: ; preds = %60, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i - %.151.i = phi i32 [ %.018.i37.i, %60 ], [ %.05062.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] +62:; preds = %60, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i + %.225.i = phi i32 [ %.018.i37.i, %60 ], [ %.05062.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] %.149.i = phi i32 [ %.04863.i, %60 ], [ %.018.i37.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] %.229.i = phi i32 [ %.02764.i, %60 ], [ %38, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] %.225.i = phi i32 [ %61, %60 ], [ %.02365.i, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i ] @@ -469,26 +469,26 @@ _ZL17strcmpAfterPrefixPKcS0_Pi.exit41.i: ; preds = %46 br i1 %63, label %.lr.ph.i, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread, !llvm.loop !38 _ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit: ; preds = %_ZL17strcmpAfterPrefixPKcS0_Pi.exit36.i - %64 = icmp sgt i32 %8, 0 - br i1 %64, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread + %61 = icmp sgt i32 %8, 0 + br i1 %61, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread _ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15: ; preds = %58, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit %.0.i17 = phi i32 [ %23, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ 0, %_ZL17strcmpAfterPrefixPKcS0_Pi.exit.i ], [ %38, %58 ] store i32 -1, ptr %2, align 4, !tbaa !32 - %65 = zext nneg i32 %.0.i17 to i64 - %66 = getelementptr inbounds nuw %struct.PointerTOCEntry, ptr %9, i64 %65 - %67 = getelementptr inbounds nuw i8, ptr %66, i64 8 - %68 = load ptr, ptr %67, align 8, !tbaa !39 - %69 = tail call ptr @UDataMemory_normalizeDataPointer_77(ptr noundef %68) + %62 = zext nneg i32 %.0.i17 to i64 + %63 = getelementptr inbounds nuw %struct.PointerTOCEntry, ptr %9, i64 %62 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 8 + %65 = load ptr, ptr %64, align 8, !tbaa !39 + %66 = tail call ptr @UDataMemory_normalizeDataPointer_77(ptr noundef %65) br label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread -70: ; preds = %4 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %72 = load ptr, ptr %71, align 8, !tbaa !15 +67: ; preds = %4 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %69 = load ptr, ptr %68, align 8, !tbaa !15 br label %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread -_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread: ; preds = %62, %.preheader.i, %7, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit, %70 - %.1 = phi ptr [ %72, %70 ], [ %69, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15 ], [ null, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %62 ] +_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread: ; preds = %62, %.preheader.i, %7, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit, %67 + %.1 = phi ptr [ %69, %67 ], [ %66, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit.thread15 ], [ null, %_ZL28pointerTOCPrefixBinarySearchPKcPK15PointerTOCEntryi.exit ], [ null, %7 ], [ null, %.preheader.i ], [ null, %62 ] ret ptr %.1 } diff --git a/bench/icu/optimized/uset.ll b/bench/icu/optimized/uset.ll index 5643ae424bd..263b62b1d2e 100644 --- a/bench/icu/optimized/uset.ll +++ b/bench/icu/optimized/uset.ll @@ -800,7 +800,7 @@ define i32 @uset_getItemCount_77(ptr noundef nonnull %0) local_unnamed_addr #0 { ; Function Attrs: mustprogress uwtable define ptr @uset_getString_77(ptr noundef %0, i32 noundef %1, ptr noundef writeonly captures(address_is_null) %2) local_unnamed_addr #0 { %4 = icmp eq ptr %2, null - br i1 %4, label %30, label %5 + br i1 %4, label %28, label %5 5: ; preds = %3 %6 = tail call noundef i32 @_ZNK6icu_7710UnicodeSet11stringsSizeEv(ptr noundef nonnull align 8 dereferenceable(200) %0) @@ -811,7 +811,7 @@ define ptr @uset_getString_77(ptr noundef %0, i32 noundef %1, ptr noundef writeo 8: ; preds = %5 store i32 0, ptr %2, align 4, !tbaa !21 - br label %30 + br label %28 9: ; preds = %5 %10 = tail call noundef ptr @_ZNK6icu_7710UnicodeSet9getStringEi(ptr noundef nonnull align 8 dereferenceable(200) %0, i32 noundef %1) @@ -826,29 +826,29 @@ define ptr @uset_getString_77(ptr noundef %0, i32 noundef %1, ptr noundef writeo store i32 %18, ptr %2, align 4, !tbaa !21 %19 = load i16, ptr %11, align 8, !tbaa !22 %20 = and i16 %19, 17 - %21 = icmp eq i16 %20, 0 - br i1 %21, label %22, label %_ZNK6icu_7713UnicodeString9getBufferEv.exit + %.not.i = icmp eq i16 %20, 0 + br i1 %.not.i, label %21, label %_ZNK6icu_7713UnicodeString9getBufferEv.exit -22: ; preds = %9 - %23 = and i16 %19, 2 - %24 = icmp eq i16 %23, 0 - br i1 %24, label %27, label %25 +21: ; preds = %9 + %22 = and i16 %19, 2 + %.not2.i = icmp eq i16 %22, 0 + br i1 %.not2.i, label %25, label %23 -25: ; preds = %22 - %26 = getelementptr inbounds nuw i8, ptr %10, i64 10 +23: ; preds = %21 + %24 = getelementptr inbounds nuw i8, ptr %10, i64 10 br label %_ZNK6icu_7713UnicodeString9getBufferEv.exit -27: ; preds = %22 - %28 = getelementptr inbounds nuw i8, ptr %10, i64 24 - %29 = load ptr, ptr %28, align 8, !tbaa !22 +25: ; preds = %21 + %26 = getelementptr inbounds nuw i8, ptr %10, i64 24 + %27 = load ptr, ptr %26, align 8, !tbaa !22 br label %_ZNK6icu_7713UnicodeString9getBufferEv.exit -_ZNK6icu_7713UnicodeString9getBufferEv.exit: ; preds = %9, %25, %27 - %.0.i = phi ptr [ %26, %25 ], [ %29, %27 ], [ null, %9 ] +_ZNK6icu_7713UnicodeString9getBufferEv.exit: ; preds = %9, %23, %25 + %.0.i = phi ptr [ %24, %25 ], [ %27, %27 ], [ null, %9 ] tail call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %.0.i) #10, !srcloc !23 - br label %30 + br label %28 -30: ; preds = %8, %_ZNK6icu_7713UnicodeString9getBufferEv.exit, %3 +28: ; preds = %8, %_ZNK6icu_7713UnicodeString9getBufferEv.exit, %3 %.0 = phi ptr [ null, %3 ], [ null, %8 ], [ %.0.i, %_ZNK6icu_7713UnicodeString9getBufferEv.exit ] ret ptr %.0 } @@ -1018,7 +1018,7 @@ define void @uset_setSerializedToOne_77(ptr noundef %0, i32 noundef %1) local_un %3 = icmp eq ptr %0, null %4 = icmp ugt i32 %1, 1114111 %or.cond = or i1 %3, %4 - br i1 %or.cond, label %33, label %5 + br i1 %or.cond, label %38, label %5 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1036,7 +1036,7 @@ define void @uset_setSerializedToOne_77(ptr noundef %0, i32 noundef %1) local_un %12 = add nuw i16 %11, 1 %13 = getelementptr inbounds nuw i8, ptr %0, i64 18 store i16 %12, ptr %13, align 2, !tbaa !32 - br label %33 + br label %38 14: ; preds = %5 %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1046,24 +1046,24 @@ define void @uset_setSerializedToOne_77(ptr noundef %0, i32 noundef %1) local_un i32 1114111, label %31 ] -17: ; preds = %14 +17: ; preds = %14 store i32 1, ptr %15, align 8, !tbaa !29 store i32 3, ptr %16, align 4, !tbaa !35 store i16 -1, ptr %6, align 8, !tbaa !32 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 18 - store i16 1, ptr %18, align 2, !tbaa !32 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i16 0, ptr %19, align 4, !tbaa !32 - br label %33 + %19 = getelementptr inbounds nuw i8, ptr %0, i64 18 + store i16 1, ptr %19, align 2, !tbaa !32 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i16 0, ptr %20, align 4, !tbaa !32 + br label %38 -20: ; preds = %14 +21: ; preds = %14 store i32 0, ptr %15, align 8, !tbaa !29 store i32 4, ptr %16, align 4, !tbaa !35 %21 = lshr i32 %1, 16 %22 = trunc nuw nsw i32 %21 to i16 store i16 %22, ptr %6, align 8, !tbaa !32 %23 = trunc i32 %1 to i16 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 18 + %.not2.i = getelementptr inbounds nuw i8, ptr %0, i64 18 store i16 %23, ptr %24, align 2, !tbaa !32 %25 = add nuw nsw i32 %1, 1 %26 = lshr i32 %25, 16 @@ -1072,18 +1072,18 @@ define void @uset_setSerializedToOne_77(ptr noundef %0, i32 noundef %1) local_un store i16 %27, ptr %28, align 4, !tbaa !32 %29 = trunc i32 %25 to i16 %30 = getelementptr inbounds nuw i8, ptr %0, i64 22 - store i16 %29, ptr %30, align 2, !tbaa !32 + store i16 %29, ptr %28, align 2, !tbaa !32 br label %33 -31: ; preds = %14 +31: ; preds = %14 store i32 0, ptr %15, align 8, !tbaa !29 store i32 2, ptr %16, align 4, !tbaa !35 store i16 16, ptr %6, align 8, !tbaa !32 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 18 - store i16 -1, ptr %32, align 2, !tbaa !32 - br label %33 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 18 + store i16 -1, ptr %37, align 2, !tbaa !32 + br label %38 -33: ; preds = %17, %31, %20, %2, %8 +38: ; preds = %17, %31, %20, %2, %8 ret void } diff --git a/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll b/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll index 2c61b199d47..7ffd1cd11fd 100644 --- a/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll +++ b/bench/influxdb-rs/optimized/4j71xiofmorb5iag.ll @@ -2069,18 +2069,18 @@ define internal fastcc void @"_ZN4core3ptr74drop_in_place$LT$core..option..Optio call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a6f3122bc871979E.llvm.9135219245553044050"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0) %7 = getelementptr inbounds nuw i8, ptr %2, i64 8 %8 = load i64, ptr %7, align 8, !range !480, !noalias !473, !noundef !15 - %9 = icmp eq i64 %8, 0 - br i1 %9, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit", label %10 + %.not.i.i.i = icmp eq i64 %8, 0 + br i1 %.not.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit", label %9 -10: ; preds = %6 - %11 = load ptr, ptr %2, align 8, !noalias !473, !nonnull !15, !noundef !15 - %12 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %13 = load i64, ptr %12, align 8, !noalias !473, !noundef !15 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.9135219245553044050"(ptr noalias noundef nonnull readonly align 1 %14, ptr noundef nonnull %11, i64 noundef %8, i64 noundef %13) +9: ; preds = %6 + %10 = load ptr, ptr %2, align 8, !noalias !473, !nonnull !15, !noundef !15 + %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %12 = load i64, ptr %11, align 8, !noalias !473, !noundef !15 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.9135219245553044050"(ptr noalias noundef nonnull readonly align 1 %13, ptr noundef nonnull %10, i64 noundef %8, i64 noundef %12) br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit": ; preds = %6, %10 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE.exit": ; preds = %6, %9 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !473 br label %5 } diff --git a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll index 17221d97f54..42698aab74b 100644 --- a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll +++ b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll @@ -1373,7 +1373,7 @@ define internal fastcc noundef range(i128 -9223458436854775805, 9223458436854775 9: ; preds = %4 %10 = srem i128 %0, %1 %11 = icmp ugt i128 %10, -9223458436854775806 - br i1 %11, label %13, label %17 + br i1 %11, label %13, label %15 12: ; preds = %4 tail call void @_ZN4core9panicking11panic_const24panic_const_rem_overflow17ha0f84a9d583a94feE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fdf300760c0b958a8147d50c9fbb92a5.6) #22 @@ -1386,7 +1386,7 @@ define internal fastcc noundef range(i128 -9223458436854775805, 9223458436854775 %16 = add nsw i128 %10, %.sroa.01.0 br label %17 -17: ; preds = %9, %13 +15: ; preds = %9, %13 %.sroa.0.0 = phi i128 [ %16, %13 ], [ %10, %9 ] ret i128 %.sroa.0.0 } @@ -2431,7 +2431,7 @@ define void @_ZN4jiff5civil4time9TimeRound5round17h8bd8b12d120a1ba7E(ptr dead_on call void @llvm.lifetime.end.p0(ptr nonnull %4) %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %12, ptr %13, align 8 - br label %59 + br label %57 14: ; preds = %3 %15 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -2470,58 +2470,58 @@ define void @_ZN4jiff5civil4time9TimeRound5round17h8bd8b12d120a1ba7E(ptr dead_on %37 = srem i128 %31, %34 %38 = icmp ugt i128 %37, -9223458436854775806 %extract.t35 = trunc nuw i128 %37 to i64 - br i1 %38, label %39, label %43 + br i1 %38, label %39, label %41 39: ; preds = %36 %40 = icmp ugt i128 %34, -9223285636854775810 - %41 = sub nsw i128 18446657673709551617, %33 - %.sroa.01.0.i = select i1 %40, i128 %41, i128 %34 + %40 = sub nsw i128 18446657673709551617, %33 + %.sroa.01.0.i = select i1 %40, i128 %40, i128 %34 %42 = add nsw i128 %37, %.sroa.01.0.i %extract.t34 = trunc i128 %42 to i64 br label %43 -43: ; preds = %39, %36 +41: ; preds = %39, %36 %.sroa.0.0.i.off0 = phi i64 [ %extract.t34, %39 ], [ %extract.t35, %36 ] - %44 = icmp eq i64 %.sroa.0.0.i.off0, 0 - br i1 %44, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %45 + %42 = icmp eq i64 %.sroa.0.0.i.off0, 0 + br i1 %42, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %43 -45: ; preds = %43 - %46 = sdiv i64 %.sroa.0.0.i.off0, 3600000000000 - %47 = srem i64 %.sroa.0.0.i.off0, 3600000000000 - %48 = icmp eq i64 %47, 0 - br i1 %48, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %49 +43: ; preds = %41 + %44 = sdiv i64 %.sroa.0.0.i.off0, 3600000000000 + %45 = srem i64 %.sroa.0.0.i.off0, 3600000000000 + %46 = icmp eq i64 %45, 0 + br i1 %46, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %47 -49: ; preds = %45 - %50 = sdiv i64 %47, 60000000000 - %51 = srem i64 %47, 60000000000 - %52 = icmp eq i64 %51, 0 - br i1 %52, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %53 +47: ; preds = %43 + %48 = sdiv i64 %45, 60000000000 + %49 = srem i64 %45, 60000000000 + %50 = icmp eq i64 %49, 0 + br i1 %50, label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", label %51 -53: ; preds = %49 - %54 = sdiv i64 %51, 1000000000 - %55 = srem i64 %51, 1000000000 - %56 = trunc nsw i64 %55 to i32 - %57 = trunc nsw i64 %54 to i8 +51: ; preds = %47 + %52 = sdiv i64 %49, 1000000000 + %53 = srem i64 %49, 1000000000 + %54 = trunc nsw i64 %53 to i32 + %55 = trunc nsw i64 %52 to i8 br label %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit" -"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit": ; preds = %14, %43, %45, %49, %53 - %.sroa.5.0.i.i.i = phi i8 [ 0, %43 ], [ 0, %45 ], [ 0, %49 ], [ %57, %53 ], [ 0, %14 ] - %.sroa.4.0.i.i.i = phi i64 [ 0, %43 ], [ 0, %45 ], [ %50, %49 ], [ %50, %53 ], [ 0, %14 ] - %.sroa.3.0.i.i.i = phi i64 [ 0, %43 ], [ %46, %45 ], [ %46, %49 ], [ %46, %53 ], [ 0, %14 ] - %.sroa.0.0.i.i.i = phi i32 [ 0, %43 ], [ 0, %45 ], [ 0, %49 ], [ %56, %53 ], [ 0, %14 ] +"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit": ; preds = %14, %41, %43, %47, %51 + %.sroa.5.0.i.i.i = phi i8 [ 0, %42 ], [ 0, %45 ], [ 0, %49 ], [ %55, %53 ], [ 0, %14 ] + %.sroa.4.0.i.i.i = phi i64 [ 0, %43 ], [ 0, %45 ], [ %48, %49 ], [ %48, %53 ], [ 0, %14 ] + %.sroa.3.0.i.i.i = phi i64 [ 0, %42 ], [ %44, %45 ], [ %44, %49 ], [ %44, %53 ], [ 0, %14 ] + %.sroa.0.0.i.i.i = phi i32 [ 0, %42 ], [ 0, %45 ], [ 0, %49 ], [ %54, %53 ], [ 0, %14 ] %.sroa.429.0.extract.trunc = trunc i64 %.sroa.3.0.i.i.i to i8 %.sroa.530.0.extract.trunc = trunc nsw i64 %.sroa.4.0.i.i.i to i8 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %.sroa.0.0.i.i.i, ptr %58, align 4 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 %.sroa.0.0.i.i.i, ptr %56, align 4 %.sroa.49.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 %.sroa.429.0.extract.trunc, ptr %.sroa.49.0..sroa_idx, align 8 %.sroa.510.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 %.sroa.530.0.extract.trunc, ptr %.sroa.510.0..sroa_idx, align 1 %.sroa.611.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 10 store i8 %.sroa.5.0.i.i.i, ptr %.sroa.611.0..sroa_idx, align 2 - br label %59 + br label %57 -59: ; preds = %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", %10 +57: ; preds = %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit", %10 %storemerge = phi i32 [ 0, %"_ZN4jiff4util8rangeint18Composite$LT$T$GT$3map17h695f56c718284842E.exit" ], [ 1, %10 ] store i32 %storemerge, ptr %0, align 8 ret void @@ -2605,13 +2605,13 @@ define noundef ptr @_ZN4jiff5error5Error12context_impl17hbda6a31ae441b165E(ptr n %13 = invoke noundef ptr @_ZN4jiff5error5Error15adhoc_from_args17hb38b2a9143298703E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5) to label %16 unwind label %14 -"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10": ; preds = %53, %57, %36, %17, %14 +"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10": ; preds = %52, %56, %35, %17, %14 %.sroa.03.0 = phi i1 [ false, %36 ], [ true, %14 ], [ true, %17 ], [ false, %57 ], [ false, %53 ] - %.pn.pn = phi { ptr, i32 } [ %37, %36 ], [ %15, %14 ], [ %18, %17 ], [ %54, %57 ], [ %54, %53 ] + %.pn.pn = phi { ptr, i32 } [ %36, %36 ], [ %15, %14 ], [ %18, %17 ], [ %53, %57 ], [ %53, %53 ] invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %6) #23 - to label %60 unwind label %58 + to label %60 unwind label %57 -14: ; preds = %26, %8 +14: ; preds = %25, %8 %15 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" @@ -2635,108 +2635,108 @@ define noundef ptr @_ZN4jiff5error5Error12context_impl17hbda6a31ae441b165E(ptr n %21 = phi ptr [ %13, %19 ], [ %1, %2 ] %22 = getelementptr inbounds nuw i8, ptr %21, i64 16 %23 = load i64, ptr %22, align 16, !range !234, !noundef !3 - %24 = icmp eq i64 %23, 0 - br i1 %24, label %31, label %26, !prof !268 + %.not6 = icmp eq i64 %23, 0 + br i1 %.not6, label %30, label %25, !prof !268 -25: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", %26 +24: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", %25 unreachable -26: ; preds = %20 +25: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr @anon.fdf300760c0b958a8147d50c9fbb92a5.60, ptr %4, align 8 - %27 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 1, ptr %27, align 8 - %28 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store ptr null, ptr %28, align 8 - %29 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %29, align 8 - %30 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store i64 0, ptr %30, align 8 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i64 1, ptr %26, align 8 + %27 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store ptr null, ptr %27, align 8 + %28 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %28, align 8 + %29 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store i64 0, ptr %29, align 8 invoke void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fdf300760c0b958a8147d50c9fbb92a5.61) #22 to label %25 unwind label %14 -31: ; preds = %20 +30: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %32 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %0, ptr %32, align 8 + %31 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %0, ptr %31, align 8 store i64 1, ptr %3, align 8 - %33 = getelementptr inbounds nuw i8, ptr %21, i64 8 - %34 = cmpxchg ptr %33, i64 1, i64 -1 acquire monotonic, align 8, !noalias !269 - %35 = extractvalue { i64, i1 } %34, 1 - br i1 %35, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit", label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !272 + %32 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %33 = cmpxchg ptr %32, i64 1, i64 -1 acquire monotonic, align 8, !noalias !269 + %34 = extractvalue { i64, i1 } %33, 1 + br i1 %34, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit", label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !272 -36: ; preds = %47 - %37 = landingpad { ptr, i32 } +35: ; preds = %46 + %36 = landingpad { ptr, i32 } cleanup - %38 = load i64, ptr %3, align 8, !range !234, !noundef !3 - %39 = load ptr, ptr %32, align 8 - store i64 %38, ptr %44, align 16 - store ptr %39, ptr %48, align 8 + %37 = load i64, ptr %3, align 8, !range !234, !noundef !3 + %38 = load ptr, ptr %31, align 8 + store i64 %37, ptr %43, align 16 + store ptr %38, ptr %47, align 8 br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" -"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit": ; preds = %31 - %40 = load atomic i64, ptr %21 acquire, align 8, !noalias !269 - %41 = icmp eq i64 %40, 1 - store atomic i64 1, ptr %33 release, align 8, !noalias !269 - br i1 %41, label %42, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !273 +"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit": ; preds = %30 + %39 = load atomic i64, ptr %21 acquire, align 8, !noalias !269 + %40 = icmp eq i64 %39, 1 + store atomic i64 1, ptr %32 release, align 8, !noalias !269 + br i1 %40, label %41, label %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread", !prof !273 -"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread": ; preds = %31, %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" +"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread": ; preds = %30, %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" invoke void @_ZN4core6option13unwrap_failed17h1fc5fce77a97a273E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fdf300760c0b958a8147d50c9fbb92a5.62) #22 - to label %25 unwind label %53 + to label %25 unwind label %52 -42: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" - %43 = load ptr, ptr %6, align 8, !nonnull !3, !noundef !3 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 16 - %45 = load i64, ptr %44, align 8, !range !234, !alias.scope !274, !noundef !3 - %46 = icmp eq i64 %45, 0 - br i1 %46, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit", label %47 +41: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit" + %42 = load ptr, ptr %6, align 8, !nonnull !3, !noundef !3 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 16 + %44 = load i64, ptr %43, align 8, !range !234, !alias.scope !274, !noundef !3 + %45 = icmp eq i64 %44, 0 + br i1 %45, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit", label %46 -47: ; preds = %42 - %48 = getelementptr inbounds nuw i8, ptr %43, i64 24 - invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %48) - to label %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" unwind label %36 +46: ; preds = %41 + %47 = getelementptr inbounds nuw i8, ptr %42, i64 24 + invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %47) + to label %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" unwind label %35 -"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge": ; preds = %47 +"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge": ; preds = %46 %.pre = load ptr, ptr %6, align 8 br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit" -"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit": ; preds = %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge", %42 - %49 = phi ptr [ %.pre, %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" ], [ %43, %42 ] - %50 = load i64, ptr %3, align 8, !range !234, !noundef !3 - %51 = load ptr, ptr %32, align 8 - store i64 %50, ptr %44, align 16 - %52 = getelementptr inbounds nuw i8, ptr %43, i64 24 - store ptr %51, ptr %52, align 8 +"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit": ; preds = %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge", %41 + %48 = phi ptr [ %.pre, %"._ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit_crit_edge" ], [ %42, %42 ] + %49 = load i64, ptr %3, align 8, !range !234, !noundef !3 + %50 = load ptr, ptr %31, align 8 + store i64 %49, ptr %43, align 16 + %51 = getelementptr inbounds nuw i8, ptr %42, i64 24 + store ptr %50, ptr %51, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %6) - ret ptr %49 + ret ptr %48 -53: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread" - %54 = landingpad { ptr, i32 } +52: ; preds = %"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9is_unique17h881939b4101f7473E.exit.thread" + %53 = landingpad { ptr, i32 } cleanup - %55 = load i64, ptr %3, align 8, !range !234, !alias.scope !277, !noundef !3 - %56 = icmp eq i64 %55, 0 - br i1 %56, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10", label %57 + %54 = load i64, ptr %3, align 8, !range !234, !alias.scope !277, !noundef !3 + %55 = icmp eq i64 %54, 0 + br i1 %55, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10", label %56 -57: ; preds = %53 - invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %32) - to label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" unwind label %58 +56: ; preds = %52 + invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %31) + to label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" unwind label %57 -58: ; preds = %57, %62, %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" - %59 = landingpad { ptr, i32 } +57: ; preds = %56, %61, %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" + %58 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24 unreachable -60: ; preds = %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" - br i1 %.sroa.03.0, label %62, label %61 +59: ; preds = %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$jiff..error..Error$GT$$GT$17h059b4129435b71f4E.exit10" + br i1 %.sroa.03.0, label %61, label %60 -61: ; preds = %62, %60 +60: ; preds = %61, %59 resume { ptr, i32 } %.pn.pn -62: ; preds = %60 +61: ; preds = %59 invoke void @"_ZN4core3ptr39drop_in_place$LT$jiff..error..Error$GT$17hf3ea909f0bc4c02dE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %7) #23 - to label %61 unwind label %58 + to label %61 unwind label %57 } ; Function Attrs: cold nonlazybind uwtable @@ -4067,7 +4067,7 @@ default.unreachable50: ; preds = %6 %32 = srem i128 %31, 60000000000 %33 = trunc nsw i128 %32 to i64 %34 = sdiv i64 %33, 60 - %35 = icmp ugt i64 %34, -1000000000 + %35 = icmp ugt i64 %33, -1000000000 %36 = sub nsw i64 0, %34 %.sroa.017.0 = select i1 %35, i64 %36, i64 %34 br label %61 diff --git a/bench/jsonnet/optimized/to_c_array.ll b/bench/jsonnet/optimized/to_c_array.ll index c2ddd4bdf7d..d0566c601ba 100644 --- a/bench/jsonnet/optimized/to_c_array.ll +++ b/bench/jsonnet/optimized/to_c_array.ll @@ -50,7 +50,7 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca 7: ; preds = %2 %8 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str, i64 noundef 37) - br label %54 + br label %53 9: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) @@ -68,7 +68,7 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca 16: ; preds = %14 %17 = landingpad { ptr, i32 } cleanup - br label %53 + br label %52 18: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -89,12 +89,12 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca 26: ; preds = %18 %27 = landingpad { ptr, i32 } cleanup - br label %52 + br label %51 28: ; preds = %24 %29 = landingpad { ptr, i32 } cleanup - br label %51 + br label %50 30: ; preds = %21 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -113,42 +113,42 @@ define noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr noundef readonly ca %38 = getelementptr inbounds nuw i8, ptr %37, i64 32 %39 = load i32, ptr %38, align 8, !tbaa !13 %40 = and i32 %39, 5 - %41 = icmp eq i32 %40, 0 - br i1 %41, label %42, label %49 + %.not.i = icmp eq i32 %40, 0 + br i1 %.not.i, label %41, label %48 -42: ; preds = %33 - br i1 %.0, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, label %44 +41: ; preds = %33 + br i1 %.0, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, label %43 -.loopexit: ; preds = %31, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %44 +.loopexit: ; preds = %31, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18, %43 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %43 + br label %42 -.loopexit.split-lp: ; preds = %49 +.loopexit.split-lp: ; preds = %48 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %43 + br label %42 -43: ; preds = %.loopexit.split-lp, %.loopexit +42: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %51 + br label %50 -44: ; preds = %42 - %45 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.3, i64 noundef 1) +43: ; preds = %41 + %44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.3, i64 noundef 1) to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18 unwind label %.loopexit -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %44, %42 - %46 = load i8, ptr %5, align 1, !tbaa !24 - %47 = sext i8 %46 to i32 - %48 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %47) +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit18: ; preds = %43, %41 + %45 = load i8, ptr %5, align 1, !tbaa !24 + %46 = sext i8 %45 to i32 + %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %4, i32 noundef %46) to label %31 unwind label %.loopexit, !llvm.loop !25 -49: ; preds = %33 - %50 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.4, i64 noundef 2) +48: ; preds = %33 + %49 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.4, i64 noundef 2) to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19 unwind label %.loopexit.split-lp -_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %49 +_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit19: ; preds = %48 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 @@ -158,29 +158,29 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17: ; preds = %24, % call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit -51: ; preds = %43, %28 +50: ; preds = %42, %28 %.pn = phi { ptr, i32 } [ %lpad.phi, %43 ], [ %29, %28 ] call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %4) #10 - br label %52 + br label %51 -52: ; preds = %51, %26 +51: ; preds = %50, %26 %.pn.pn = phi { ptr, i32 } [ %.pn, %51 ], [ %27, %26 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %53 + br label %52 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit: ; preds = %14, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 %.112 = phi i32 [ %.213, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit17 ], [ 1, %14 ] call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3) #10 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %54 + br label %53 -53: ; preds = %52, %16 +52: ; preds = %51, %16 %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %52 ], [ %17, %16 ] call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %3) #10 call void @llvm.lifetime.end.p0(ptr nonnull %3) resume { ptr, i32 } %.pn.pn.pn -54: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %7 +53: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %7 %.011 = phi i32 [ 1, %7 ], [ %.112, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit ] ret i32 %.011 } diff --git a/bench/libdeflate/optimized/prog_util.ll b/bench/libdeflate/optimized/prog_util.ll index 06c9ed32c2e..03b8f229a31 100644 --- a/bench/libdeflate/optimized/prog_util.ll +++ b/bench/libdeflate/optimized/prog_util.ll @@ -439,7 +439,7 @@ define internal fastcc range(i32 -2147483648, 1) i32 @read_full_contents(ptr nou xmalloc.exit.thread: ; preds = %1 tail call void (ptr, ...) @msg(ptr noundef nonnull @.str) - br label %41 + br label %40 xmalloc.exit: ; preds = %1, %32 %.037 = phi i64 [ %34, %32 ], [ 0, %1 ] @@ -517,29 +517,29 @@ xread.exit: ; preds = %.lr.ph.i, %28, %11 32: ; preds = %xread.exit %33 = and i64 %29, 2147483647 %34 = add i64 %33, %.037 - %35 = icmp eq i32 %30, 0 - br i1 %35, label %36, label %xmalloc.exit + %.not = icmp eq i32 %30, 0 + br i1 %.not, label %35, label %xmalloc.exit -36: ; preds = %32 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store ptr %.1, ptr %37, align 8, !tbaa !24 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i64 %34, ptr %38, align 8, !tbaa !26 - br label %41 +35: ; preds = %32 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr %.1, ptr %36, align 8, !tbaa !24 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store i64 %34, ptr %37, align 8, !tbaa !26 + br label %40 .loopexit: ; preds = %xread.exit, %xread.exit.thread, %select.unfold %.3 = phi ptr [ %.033, %select.unfold ], [ %.1, %xread.exit.thread ], [ %.1, %xread.exit ] %.032 = phi i32 [ -1, %select.unfold ], [ -1, %xread.exit.thread ], [ %30, %xread.exit ] tail call void @free(ptr noundef %.3) #20 - br label %41 + br label %40 select.unfold: ; preds = %7, %5 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %40 = load ptr, ptr %39, align 8, !tbaa !21 - tail call void (ptr, ...) @msg(ptr noundef nonnull @.str.21, ptr noundef %40) + %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %39 = load ptr, ptr %38, align 8, !tbaa !21 + tail call void (ptr, ...) @msg(ptr noundef nonnull @.str.21, ptr noundef %39) br label %.loopexit -41: ; preds = %xmalloc.exit.thread, %.loopexit, %36 +40: ; preds = %xmalloc.exit.thread, %.loopexit, %35 %.0 = phi i32 [ %.032, %.loopexit ], [ 0, %36 ], [ -1, %xmalloc.exit.thread ] ret i32 %.0 } diff --git a/bench/libphonenumber/optimized/unicodestring_test.ll b/bench/libphonenumber/optimized/unicodestring_test.ll index 96a846d2d36..6b60477425d 100644 --- a/bench/libphonenumber/optimized/unicodestring_test.ll +++ b/bench/libphonenumber/optimized/unicodestring_test.ll @@ -14093,8 +14093,8 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit: ; preds = %16, %18 call void @_ZNK4i18n12phonenumbers11UnicodeText3endEv(ptr dead_on_unwind nonnull writable sret(%"class.i18n::phonenumbers::UnicodeText::const_iterator") align 8 %9, ptr noundef nonnull align 8 dereferenceable(36) %0) %20 = load ptr, ptr %8, align 8, !tbaa !192 %21 = load ptr, ptr %9, align 8, !tbaa !192 - %.not3436 = icmp eq ptr %20, %21 - br i1 %.not3436, label %._crit_edge.thread, label %.lr.ph + %.not3537 = icmp eq ptr %20, %21 + br i1 %.not3537, label %._crit_edge.thread, label %.lr.ph ._crit_edge.thread: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -14102,9 +14102,9 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit: ; preds = %16, %18 br label %65 .lr.ph: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit, %47 - %.037 = phi i64 [ %49, %47 ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit ] + %.038 = phi i64 [ %49, %47 ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit ] %22 = call noundef i32 @_ZNK4i18n12phonenumbers11UnicodeText14const_iteratordeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) - %.not = icmp eq i64 %.037, 0 + %.not = icmp eq i64 %.038, 0 br i1 %.not, label %35, label %23 23: ; preds = %.lr.ph @@ -14129,8 +14129,8 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit: ; preds = %16, %18 _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %34 = icmp eq i64 %.037, 32 - br i1 %34, label %.thread31, label %35 + %34 = icmp eq i64 %.038, 32 + br i1 %34, label %.thread32, label %35 35: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19, %.lr.ph call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -14152,7 +14152,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %1, i8 noundef signext 32) br label %47 -.thread31: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19 +.thread32: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19 %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.146, i64 noundef 4) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) @@ -14161,12 +14161,12 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 47: ; preds = %44, %42 call void @llvm.lifetime.end.p0(ptr nonnull %5) %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %1, i32 noundef %22) - %49 = add i64 %.037, 1 + %49 = add i64 %.038, 1 %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4i18n12phonenumbers11UnicodeText14const_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) %51 = load ptr, ptr %8, align 8, !tbaa !192 %52 = load ptr, ptr %9, align 8, !tbaa !192 - %.not34 = icmp eq ptr %51, %52 - br i1 %.not34, label %._crit_edge, label %.lr.ph + %.not35 = icmp eq ptr %51, %52 + br i1 %.not35, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %47 %53 = icmp eq i64 %49, 0 @@ -14174,7 +14174,7 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit19: ; preds = %30, %32 call void @llvm.lifetime.end.p0(ptr nonnull %8) br i1 %53, label %65, label %54 -54: ; preds = %.thread31, %._crit_edge +54: ; preds = %.thread32, %._crit_edge call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 32, ptr %4, align 1, !tbaa !13 %55 = load ptr, ptr %1, align 8, !tbaa !26 diff --git a/bench/libquic/optimized/pem_info.ll b/bench/libquic/optimized/pem_info.ll index e97b44474b5..6218ec219dc 100644 --- a/bench/libquic/optimized/pem_info.ll +++ b/bench/libquic/optimized/pem_info.ll @@ -77,57 +77,57 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %.1 = phi ptr [ %13, %12 ], [ %1, %4 ] %17 = tail call ptr @X509_INFO_new() #5 %18 = icmp eq ptr %17, null - br i1 %18, label %.preheader, label %.preheader170 + br i1 %18, label %.preheader, label %.preheader179 -.preheader170: ; preds = %16 +.preheader179: ; preds = %16 %19 = call i32 @PEM_read_bio(ptr noundef %0, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %9) #5 %20 = icmp eq i32 %19, 0 - br i1 %20, label %._crit_edge, label %.preheader169.outer + br i1 %20, label %._crit_edge, label %.preheader178.outer -._crit_edge: ; preds = %156, %.preheader170 +._crit_edge: ; preds = %156, %.preheader179 %.178.lcssa = phi ptr [ %17, %.preheader170 ], [ %.279.ph, %156 ] %21 = call i32 @ERR_peek_last_error() #5 %22 = and i32 %21, 4095 %23 = icmp eq i32 %22, 110 - br i1 %23, label %24, label %.thread152 + br i1 %23, label %24, label %.thread155 24: ; preds = %._crit_edge call void @ERR_clear_error() #5 %25 = load ptr, ptr %.178.lcssa, align 8, !tbaa !11 - %.not125 = icmp eq ptr %25, null - br i1 %.not125, label %159, label %168 + %.not126 = icmp eq ptr %25, null + br i1 %.not126, label %159, label %168 -.preheader169: ; preds = %.preheader169.outer, %156 +.preheader178: ; preds = %.preheader178.outer, %156 %26 = load ptr, ptr %5, align 8, !tbaa !6 %27 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(12) @.str.1) #6 %28 = icmp eq i32 %27, 0 br i1 %28, label %32, label %29 -29: ; preds = %.preheader169 +29: ; preds = %.preheader178 %30 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(17) @.str.2) #6 %31 = icmp eq i32 %30, 0 br i1 %31, label %32, label %56 -32: ; preds = %29, %.preheader169 +32: ; preds = %29, %.preheader178 %33 = load ptr, ptr %.279.ph, align 8, !tbaa !11 %.not114 = icmp eq ptr %33, null br i1 %.not114, label %.thread, label %34 34: ; preds = %32 %35 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 - %.not124 = icmp eq i64 %35, 0 - br i1 %.not124, label %.thread152, label %36 + %.not125 = icmp eq i64 %35, 0 + br i1 %.not125, label %.thread155, label %36 36: ; preds = %34 %37 = call ptr @X509_INFO_new() #5 %38 = icmp eq ptr %37, null - br i1 %38, label %.preheader, label %.preheader169.outer.backedge + br i1 %38, label %.preheader, label %.preheader178.outer.backedge -.preheader169.outer.backedge: ; preds = %36, %63, %73, %83, %100, %117 +.preheader178.outer.backedge: ; preds = %36, %63, %73, %83, %100, %117 %.279.ph.be = phi ptr [ %118, %117 ], [ %101, %100 ], [ %84, %83 ], [ %74, %73 ], [ %64, %63 ], [ %37, %36 ] - br label %.preheader169.outer + br label %.preheader178.outer -.preheader169.outer: ; preds = %.preheader170, %.preheader169.outer.backedge +.preheader178.outer: ; preds = %.preheader179, %.preheader178.outer.backedge %.279.ph = phi ptr [ %.279.ph.be, %.preheader169.outer.backedge ], [ %17, %.preheader170 ] %39 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 16 %40 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 16 @@ -146,7 +146,7 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no %53 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 48 %54 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 8 %55 = getelementptr inbounds nuw i8, ptr %.279.ph, i64 8 - br label %.preheader169 + br label %.preheader178 56: ; preds = %29 %57 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(20) @.str.3) #6 @@ -161,12 +161,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 61: ; preds = %59 %62 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not113 = icmp eq i64 %62, 0 - br i1 %.not113, label %.thread152, label %63 + br i1 %.not113, label %.thread155, label %63 63: ; preds = %61 %64 = call ptr @X509_INFO_new() #5 %65 = icmp eq ptr %64, null - br i1 %65, label %.preheader, label %.preheader169.outer.backedge + br i1 %65, label %.preheader, label %.preheader178.outer.backedge 66: ; preds = %56 %67 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(9) @.str.4) #6 @@ -181,12 +181,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 71: ; preds = %69 %72 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not111 = icmp eq i64 %72, 0 - br i1 %.not111, label %.thread152, label %73 + br i1 %.not111, label %.thread155, label %73 73: ; preds = %71 %74 = call ptr @X509_INFO_new() #5 %75 = icmp eq ptr %74, null - br i1 %75, label %.preheader, label %.preheader169.outer.backedge + br i1 %75, label %.preheader, label %.preheader178.outer.backedge 76: ; preds = %66 %77 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(16) @.str.5) #6 @@ -201,12 +201,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 81: ; preds = %79 %82 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not109 = icmp eq i64 %82, 0 - br i1 %.not109, label %.thread152, label %83 + br i1 %.not109, label %.thread155, label %83 83: ; preds = %81 %84 = call ptr @X509_INFO_new() #5 %85 = icmp eq ptr %84, null - br i1 %85, label %.preheader, label %.preheader169.outer.backedge + br i1 %85, label %.preheader, label %.preheader178.outer.backedge 86: ; preds = %79 store ptr null, ptr %49, align 8, !tbaa !21 @@ -233,12 +233,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 98: ; preds = %96 %99 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not107 = icmp eq i64 %99, 0 - br i1 %.not107, label %.thread152, label %100 + br i1 %.not107, label %.thread155, label %100 100: ; preds = %98 %101 = call ptr @X509_INFO_new() #5 %102 = icmp eq ptr %101, null - br i1 %102, label %.preheader, label %.preheader169.outer.backedge + br i1 %102, label %.preheader, label %.preheader178.outer.backedge 103: ; preds = %96 store ptr null, ptr %45, align 8, !tbaa !21 @@ -265,12 +265,12 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 115: ; preds = %113 %116 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.279.ph) #5 %.not105 = icmp eq i64 %116, 0 - br i1 %.not105, label %.thread152, label %117 + br i1 %.not105, label %.thread155, label %117 117: ; preds = %115 %118 = call ptr @X509_INFO_new() #5 %119 = icmp eq ptr %118, null - br i1 %119, label %.preheader, label %.preheader169.outer.backedge + br i1 %119, label %.preheader, label %.preheader178.outer.backedge 120: ; preds = %113 store ptr null, ptr %41, align 8, !tbaa !21 @@ -285,44 +285,44 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no br i1 %126, label %141, label %.thread .thread: ; preds = %69, %59, %32, %103, %86, %120 - %.070147 = phi ptr [ @d2i_ECPrivateKey, %120 ], [ @d2i_RSAPrivateKey, %86 ], [ @d2i_DSAPrivateKey, %103 ], [ @d2i_X509, %32 ], [ @d2i_X509_AUX, %59 ], [ @d2i_X509_CRL, %69 ] - %.071146 = phi i32 [ 408, %120 ], [ 6, %86 ], [ 116, %103 ], [ 0, %32 ], [ 0, %59 ], [ 0, %69 ] - %.not118145 = phi i1 [ false, %120 ], [ false, %86 ], [ false, %103 ], [ true, %32 ], [ true, %59 ], [ true, %69 ] - %.076144 = phi ptr [ %122, %120 ], [ %88, %86 ], [ %105, %103 ], [ %.279.ph, %32 ], [ %.279.ph, %59 ], [ %55, %69 ] + %.070150 = phi ptr [ @d2i_ECPrivateKey, %120 ], [ @d2i_RSAPrivateKey, %86 ], [ @d2i_DSAPrivateKey, %103 ], [ @d2i_X509, %32 ], [ @d2i_X509_AUX, %59 ], [ @d2i_X509_CRL, %69 ] + %.071149 = phi i32 [ 408, %120 ], [ 6, %86 ], [ 116, %103 ], [ 0, %32 ], [ 0, %59 ], [ 0, %69 ] + %.not119148 = phi i1 [ false, %120 ], [ false, %86 ], [ false, %103 ], [ true, %32 ], [ true, %59 ], [ true, %69 ] + %.076147 = phi ptr [ %122, %120 ], [ %88, %86 ], [ %105, %103 ], [ %.279.ph, %32 ], [ %.279.ph, %59 ], [ %55, %69 ] call void @llvm.lifetime.start.p0(ptr nonnull %10) %127 = load ptr, ptr %6, align 8, !tbaa !6 %128 = call i32 @PEM_get_EVP_CIPHER_INFO(ptr noundef %127, ptr noundef nonnull %10) #5 - %.not116 = icmp eq i32 %128, 0 - br i1 %.not116, label %.thread149, label %129 + %.not117 = icmp eq i32 %128, 0 + br i1 %.not117, label %.thread152, label %129 129: ; preds = %.thread %130 = load ptr, ptr %7, align 8, !tbaa !6 %131 = call i32 @PEM_do_header(ptr noundef nonnull %10, ptr noundef %130, ptr noundef nonnull %9, ptr noundef %2, ptr noundef %3) #5 - %.not117 = icmp eq i32 %131, 0 - br i1 %.not117, label %.thread149, label %132 + %.not118 = icmp eq i32 %131, 0 + br i1 %.not118, label %.thread152, label %132 132: ; preds = %129 %133 = load ptr, ptr %7, align 8, !tbaa !6 store ptr %133, ptr %8, align 8, !tbaa !6 %134 = load i64, ptr %9, align 8, !tbaa !23 - br i1 %.not118145, label %137, label %135 + br i1 %.not119148, label %137, label %135 135: ; preds = %132 - %136 = call ptr @d2i_PrivateKey(i32 noundef %.071146, ptr noundef nonnull %.076144, ptr noundef nonnull %8, i64 noundef %134) #5 - %.not119 = icmp eq ptr %136, null - br i1 %.not119, label %.thread149.sink.split, label %140 + %136 = call ptr @d2i_PrivateKey(i32 noundef %.071149, ptr noundef nonnull %.076147, ptr noundef nonnull %8, i64 noundef %134) #5 + %.not120 = icmp eq ptr %136, null + br i1 %.not120, label %.thread152.sink.split, label %140 137: ; preds = %132 - %138 = call ptr %.070147(ptr noundef nonnull %.076144, ptr noundef nonnull %8, i64 noundef %134) #5 + %138 = call ptr %.070147(ptr noundef nonnull %.076147, ptr noundef nonnull %8, i64 noundef %134) #5 %139 = icmp eq ptr %138, null - br i1 %139, label %.thread149.sink.split, label %140 + br i1 %139, label %.thread152.sink.split, label %140 -.thread149.sink.split: ; preds = %137, %135 +.thread152.sink.split: ; preds = %137, %135 %.sink = phi i32 [ 234, %135 ], [ 238, %137 ] call void @ERR_put_error(i32 noundef 9, i32 noundef 0, i32 noundef 12, ptr noundef nonnull @.str, i32 noundef %.sink) #5 - br label %.thread149 + br label %.thread152 -.thread149: ; preds = %.thread, %129, %.thread149.sink.split +.thread152: ; preds = %.thread, %129, %.thread152.sink.split call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @X509_INFO_free(ptr noundef nonnull %.279.ph) #5 br label %.preheader @@ -334,8 +334,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 141: ; preds = %103, %86, %120 %142 = phi ptr [ %106, %103 ], [ %89, %86 ], [ %123, %120 ] %143 = call i32 @PEM_get_EVP_CIPHER_INFO(ptr noundef nonnull %142, ptr noundef nonnull %51) #5 - %.not120 = icmp eq i32 %143, 0 - br i1 %.not120, label %.thread152, label %144 + %.not121 = icmp eq i32 %143, 0 + br i1 %.not121, label %.thread155, label %144 144: ; preds = %141 %145 = load ptr, ptr %7, align 8, !tbaa !6 @@ -348,8 +348,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no .critedge: ; preds = %110, %140, %144 %148 = load ptr, ptr %5, align 8, !tbaa !6 - %.not121 = icmp eq ptr %148, null - br i1 %.not121, label %150, label %149 + %.not122 = icmp eq ptr %148, null + br i1 %.not122, label %150, label %149 149: ; preds = %.critedge call void @free(ptr noundef nonnull %148) #5 @@ -357,8 +357,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 150: ; preds = %149, %.critedge %151 = load ptr, ptr %6, align 8, !tbaa !6 - %.not122 = icmp eq ptr %151, null - br i1 %.not122, label %153, label %152 + %.not123 = icmp eq ptr %151, null + br i1 %.not123, label %153, label %152 152: ; preds = %150 call void @free(ptr noundef nonnull %151) #5 @@ -366,8 +366,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 153: ; preds = %152, %150 %154 = load ptr, ptr %7, align 8, !tbaa !6 - %.not123 = icmp eq ptr %154, null - br i1 %.not123, label %156, label %155 + %.not124 = icmp eq ptr %154, null + br i1 %.not124, label %156, label %155 155: ; preds = %153 call void @free(ptr noundef nonnull %154) #5 @@ -379,79 +379,79 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no store ptr null, ptr %7, align 8, !tbaa !6 %157 = call i32 @PEM_read_bio(ptr noundef %0, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %9) #5 %158 = icmp eq i32 %157, 0 - br i1 %158, label %._crit_edge, label %.preheader169 + br i1 %158, label %._crit_edge, label %.preheader178 159: ; preds = %24 %160 = getelementptr inbounds nuw i8, ptr %.178.lcssa, i64 8 %161 = load ptr, ptr %160, align 8, !tbaa !19 - %.not126 = icmp eq ptr %161, null - br i1 %.not126, label %162, label %168 + %.not127 = icmp eq ptr %161, null + br i1 %.not127, label %162, label %168 162: ; preds = %159 %163 = getelementptr inbounds nuw i8, ptr %.178.lcssa, i64 16 %164 = load ptr, ptr %163, align 8, !tbaa !20 - %.not127 = icmp eq ptr %164, null - br i1 %.not127, label %165, label %168 + %.not128 = icmp eq ptr %164, null + br i1 %.not128, label %165, label %168 165: ; preds = %162 %166 = getelementptr inbounds nuw i8, ptr %.178.lcssa, i64 56 %167 = load ptr, ptr %166, align 8, !tbaa !21 - %.not128 = icmp eq ptr %167, null - br i1 %.not128, label %.thread152.thread, label %168 + %.not129 = icmp eq ptr %167, null + br i1 %.not129, label %.thread155.thread, label %168 -.thread152.thread: ; preds = %165 +.thread155.thread: ; preds = %165 call void @X509_INFO_free(ptr noundef nonnull %.178.lcssa) #5 - br label %.critedge168 + br label %.thread167.thread 168: ; preds = %165, %162, %159, %24 %169 = call i64 @sk_push(ptr noundef nonnull %.1, ptr noundef nonnull %.178.lcssa) #5 - %.not129 = icmp eq i64 %169, 0 - br i1 %.not129, label %.thread152, label %.critedge168 + %.not130 = icmp eq i64 %169, 0 + br i1 %.not130, label %.thread155, label %.thread167.thread -.thread152: ; preds = %141, %115, %98, %81, %71, %61, %34, %._crit_edge, %168 - %.077156 = phi ptr [ %.178.lcssa, %168 ], [ %.178.lcssa, %._crit_edge ], [ %.279.ph, %34 ], [ %.279.ph, %61 ], [ %.279.ph, %71 ], [ %.279.ph, %81 ], [ %.279.ph, %98 ], [ %.279.ph, %115 ], [ %.279.ph, %141 ] - call void @X509_INFO_free(ptr noundef nonnull %.077156) #5 +.thread155: ; preds = %141, %115, %98, %81, %71, %61, %34, %._crit_edge, %168 + %.077160 = phi ptr [ %.178.lcssa, %168 ], [ %.178.lcssa, %._crit_edge ], [ %.279.ph, %34 ], [ %.279.ph, %61 ], [ %.279.ph, %71 ], [ %.279.ph, %81 ], [ %.279.ph, %98 ], [ %.279.ph, %115 ], [ %.279.ph, %141 ] + call void @X509_INFO_free(ptr noundef nonnull %.077160) #5 br label %.preheader -.preheader: ; preds = %117, %100, %83, %73, %63, %36, %16, %15, %.thread149, %.thread152 - %.074158165.ph = phi ptr [ %.1, %.thread149 ], [ null, %15 ], [ %.1, %.thread152 ], [ %.1, %16 ], [ %.1, %36 ], [ %.1, %63 ], [ %.1, %73 ], [ %.1, %83 ], [ %.1, %100 ], [ %.1, %117 ] - %170 = call i64 @sk_num(ptr noundef %.074158165.ph) #5 - %.not207 = icmp eq i64 %170, 0 - br i1 %.not207, label %._crit_edge206, label %.lr.ph +.preheader: ; preds = %117, %100, %83, %73, %63, %36, %16, %15, %.thread152, %.thread152 + %.074164172.ph = phi ptr [ %.1, %.thread149 ], [ null, %15 ], [ %.1, %.thread152 ], [ %.1, %16 ], [ %.1, %36 ], [ %.1, %63 ], [ %.1, %73 ], [ %.1, %83 ], [ %.1, %100 ], [ %.1, %117 ] + %170 = call i64 @sk_num(ptr noundef %.074164172.ph) #5 + %.not216 = icmp eq i64 %170, 0 + br i1 %.not216, label %._crit_edge215, label %.lr.ph .lr.ph: ; preds = %.preheader, %.lr.ph %171 = phi i64 [ %174, %.lr.ph ], [ 0, %.preheader ] - %.073205 = phi i32 [ %173, %.lr.ph ], [ 0, %.preheader ] - %172 = call ptr @sk_value(ptr noundef %.074158165.ph, i64 noundef %171) #5 + %.073214 = phi i32 [ %173, %.lr.ph ], [ 0, %.preheader ] + %172 = call ptr @sk_value(ptr noundef %.074164172.ph, i64 noundef %171) #5 call void @X509_INFO_free(ptr noundef %172) #5 - %173 = add i32 %.073205, 1 + %173 = add i32 %.073214, 1 %174 = zext i32 %173 to i64 - %175 = call i64 @sk_num(ptr noundef %.074158165.ph) #5 + %175 = call i64 @sk_num(ptr noundef %.074164172.ph) #5 %176 = icmp ugt i64 %175, %174 - br i1 %176, label %.lr.ph, label %._crit_edge206, !llvm.loop !25 + br i1 %176, label %.lr.ph, label %._crit_edge215, !llvm.loop !25 -._crit_edge206: ; preds = %.lr.ph, %.preheader - %.not131 = icmp eq ptr %.074158165.ph, %1 - br i1 %.not131, label %.critedge168, label %177 +._crit_edge215: ; preds = %.lr.ph, %.preheader + %.not133 = icmp eq ptr %.074164172.ph, %1 + br i1 %.not133, label %.thread167.thread, label %177 -177: ; preds = %._crit_edge206 - call void @sk_free(ptr noundef %.074158165.ph) #5 - br label %.critedge168 +177: ; preds = %._crit_edge215 + call void @sk_free(ptr noundef %.074164172.ph) #5 + br label %.thread167.thread -.critedge168: ; preds = %168, %.thread152.thread, %._crit_edge206, %177 +.thread167.thread: ; preds = %168, %.thread155.thread, %._crit_edge215, %177 %.2 = phi ptr [ null, %177 ], [ null, %._crit_edge206 ], [ %.1, %.thread152.thread ], [ %.1, %168 ] %178 = load ptr, ptr %5, align 8, !tbaa !6 - %.not132 = icmp eq ptr %178, null - br i1 %.not132, label %180, label %179 + %.not134 = icmp eq ptr %178, null + br i1 %.not134, label %180, label %179 -179: ; preds = %.critedge168 +179: ; preds = %.thread167.thread call void @free(ptr noundef nonnull %178) #5 br label %180 -180: ; preds = %179, %.critedge168 +180: ; preds = %179, %.thread167.thread %181 = load ptr, ptr %6, align 8, !tbaa !6 - %.not133 = icmp eq ptr %181, null - br i1 %.not133, label %183, label %182 + %.not135 = icmp eq ptr %181, null + br i1 %.not135, label %183, label %182 182: ; preds = %180 call void @free(ptr noundef nonnull %181) #5 @@ -459,8 +459,8 @@ define hidden ptr @PEM_X509_INFO_read_bio(ptr noundef %0, ptr noundef %1, ptr no 183: ; preds = %182, %180 %184 = load ptr, ptr %7, align 8, !tbaa !6 - %.not134 = icmp eq ptr %184, null - br i1 %.not134, label %186, label %185 + %.not136 = icmp eq ptr %184, null + br i1 %.not136, label %186, label %185 185: ; preds = %183 call void @free(ptr noundef nonnull %184) #5 diff --git a/bench/libwebp/optimized/filters.ll b/bench/libwebp/optimized/filters.ll index 992b3c41452..76cd9b59374 100644 --- a/bench/libwebp/optimized/filters.ll +++ b/bench/libwebp/optimized/filters.ll @@ -15,7 +15,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define hidden void @VP8FiltersInit() local_unnamed_addr #0 { - %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #8 + %1 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #9 %.not = icmp eq i32 %1, 0 br i1 %.not, label %2, label %11 @@ -38,18 +38,18 @@ define hidden void @VP8FiltersInit() local_unnamed_addr #0 { br i1 %.not.i, label %VP8FiltersInit_body.exit, label %6 6: ; preds = %5 - %7 = tail call i32 %4(i32 noundef 0) #8 + %7 = tail call i32 %4(i32 noundef 0) #9 %.not1.i = icmp eq i32 %7, 0 br i1 %.not1.i, label %VP8FiltersInit_body.exit, label %8 8: ; preds = %6 - tail call void @VP8FiltersInitSSE2() #8 + tail call void @VP8FiltersInitSSE2() #9 br label %VP8FiltersInit_body.exit VP8FiltersInit_body.exit: ; preds = %8, %6, %5, %2 %9 = load ptr, ptr @VP8GetCPUInfo, align 8, !tbaa !3 store volatile ptr %9, ptr @VP8FiltersInit.VP8FiltersInit_body_last_cpuinfo_used, align 8, !tbaa !3 - %10 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #8 + %10 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @VP8FiltersInit.VP8FiltersInit_body_lock) #9 br label %11 11: ; preds = %0, %VP8FiltersInit_body.exit @@ -454,7 +454,7 @@ PredictLine_C.exit.thread.i: ; preds = %5 %21 = phi i8 [ %22, %PredictLine_C.exit50._crit_edge.us.i ], [ %6, %.lr.ph57.i ] %.04456.us.pn.i = phi ptr [ %.04456.us.i, %PredictLine_C.exit50._crit_edge.us.i ], [ %4, %.lr.ph57.i ] %.055.us.pn.i = phi ptr [ %.055.us.i, %PredictLine_C.exit50._crit_edge.us.i ], [ %0, %.lr.ph57.i ] - %.04254.us.i = phi i32 [ %44, %PredictLine_C.exit50._crit_edge.us.i ], [ 1, %.lr.ph57.i ] + %.04254.us.i = phi i32 [ %42, %PredictLine_C.exit50._crit_edge.us.i ], [ 1, %.lr.ph57.i ] %.055.us.i = getelementptr i8, ptr %.055.us.pn.i, i64 %17 %.04456.us.i = getelementptr inbounds i8, ptr %.04456.us.pn.i, i64 %17 tail call void @llvm.experimental.noalias.scope.decl(metadata !105) @@ -492,24 +492,24 @@ PredictLine_C.exit50.us.i: ; preds = %PredictLine_C.exit5 br i1 %exitcond60.not.i, label %PredictLine_C.exit50._crit_edge.us.i, label %PredictLine_C.exit50.us.i, !llvm.loop !115 PredictLine_C.exit50._crit_edge.us.i: ; preds = %PredictLine_C.exit50.us.i - %44 = add nuw nsw i32 %.04254.us.i, 1 - %exitcond61.not.i = icmp eq i32 %44, %2 + %42 = add nuw nsw i32 %.04254.us.i, 1 + %exitcond61.not.i = icmp eq i32 %42, %2 br i1 %exitcond61.not.i, label %DoGradientFilter_C.exit, label %.lr.ph57.split.us.i, !llvm.loop !116 .lr.ph57.split.i: ; preds = %.lr.ph57.split.i, %.lr.ph57.thread.i - %45 = phi i8 [ %46, %.lr.ph57.split.i ], [ %6, %.lr.ph57.thread.i ] + %43 = phi i8 [ %44, %.lr.ph57.split.i ], [ %6, %.lr.ph57.thread.i ] %.04456.i.pn = phi ptr [ %.04456.i, %.lr.ph57.split.i ], [ %4, %.lr.ph57.thread.i ] %.055.i.pn = phi ptr [ %.055.i, %.lr.ph57.split.i ], [ %0, %.lr.ph57.thread.i ] - %.04254.i = phi i32 [ %48, %.lr.ph57.split.i ], [ 1, %.lr.ph57.thread.i ] + %.04254.i = phi i32 [ %46, %.lr.ph57.split.i ], [ 1, %.lr.ph57.thread.i ] %.055.i = getelementptr i8, ptr %.055.i.pn, i64 %20 %.04456.i = getelementptr inbounds i8, ptr %.04456.i.pn, i64 %20 tail call void @llvm.experimental.noalias.scope.decl(metadata !105) tail call void @llvm.experimental.noalias.scope.decl(metadata !108) - %46 = load i8, ptr %.055.i, align 1, !tbaa !7, !alias.scope !110, !noalias !111 - %47 = sub i8 %46, %45 - store i8 %47, ptr %.04456.i, align 1, !tbaa !7, !alias.scope !113, !noalias !114 - %48 = add nuw nsw i32 %.04254.i, 1 - %exitcond.not.i = icmp eq i32 %48, %2 + %44 = load i8, ptr %.055.i, align 1, !tbaa !7, !alias.scope !110, !noalias !111 + %45 = sub i8 %44, %43 + store i8 %45, ptr %.04456.i, align 1, !tbaa !7, !alias.scope !113, !noalias !114 + %46 = add nuw nsw i32 %.04254.i, 1 + %exitcond.not.i = icmp eq i32 %46, %2 br i1 %exitcond.not.i, label %DoGradientFilter_C.exit, label %.lr.ph57.split.i, !llvm.loop !116 DoGradientFilter_C.exit: ; preds = %.lr.ph57.split.i, %PredictLine_C.exit50._crit_edge.us.i, %PredictLine_C.exit.i, %PredictLine_C.exit.thread.i @@ -522,7 +522,7 @@ declare void @VP8FiltersInitSSE2() local_unnamed_addr #5 declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #6 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #7 +declare void @llvm.experimental.noalias.scope.decl(metadata) #8 attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/libwebp/optimized/filters_utils.ll b/bench/libwebp/optimized/filters_utils.ll index a1341c2fce3..0a265ed3234 100644 --- a/bench/libwebp/optimized/filters_utils.ll +++ b/bench/libwebp/optimized/filters_utils.ll @@ -86,47 +86,47 @@ define hidden i32 @WebPEstimateBestFilter(ptr noundef readonly captures(none) %0 %63 = add nuw nsw i32 %62, %24 %64 = lshr i32 %63, 2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 - %65 = icmp samesign ult i64 %indvars.iv.next, %14 - br i1 %65, label %21, label %._crit_edge.us, !llvm.loop !8 + %63 = icmp samesign ult i64 %indvars.iv.next, %14 + br i1 %63, label %21, label %._crit_edge.us, !llvm.loop !8 ._crit_edge.us: ; preds = %21 %indvars.iv.next77 = add nuw nsw i64 %indvars.iv76, 2 - %66 = icmp samesign ult i64 %indvars.iv.next77, %16 - br i1 %66, label %.lr.ph.us, label %.preheader.preheader, !llvm.loop !10 + %64 = icmp samesign ult i64 %indvars.iv.next77, %16 + br i1 %64, label %.lr.ph.us, label %.preheader.preheader, !llvm.loop !10 .preheader.preheader: ; preds = %._crit_edge.us, %.lr.ph68, %4 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %74 +.preheader: ; preds = %.preheader.preheader, %72 %indvars.iv82 = phi i64 [ %indvars.iv.next83, %74 ], [ 0, %.preheader.preheader ] %.05273 = phi i32 [ %spec.select62, %74 ], [ 2147483647, %.preheader.preheader ] %.05472 = phi i32 [ %spec.select61, %74 ], [ 0, %.preheader.preheader ] - %67 = getelementptr inbounds nuw [16 x i32], ptr %5, i64 %indvars.iv82 - br label %68 + %65 = getelementptr inbounds nuw [16 x i32], ptr %5, i64 %indvars.iv82 + br label %66 -68: ; preds = %.preheader, %68 +66: ; preds = %.preheader, %66 %indvars.iv79 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next80, %68 ] %.070 = phi i32 [ 0, %.preheader ], [ %spec.select, %68 ] - %69 = getelementptr inbounds nuw i32, ptr %67, i64 %indvars.iv79 - %70 = load i32, ptr %69, align 4, !tbaa !6 - %71 = icmp sgt i32 %70, 0 - %72 = trunc nuw nsw i64 %indvars.iv79 to i32 - %73 = select i1 %71, i32 %72, i32 0 - %spec.select = add nuw nsw i32 %73, %.070 + %67 = getelementptr inbounds nuw i32, ptr %65, i64 %indvars.iv79 + %68 = load i32, ptr %67, align 4, !tbaa !6 + %69 = icmp sgt i32 %68, 0 + %70 = trunc nuw nsw i64 %indvars.iv79 to i32 + %71 = select i1 %69, i32 %70, i32 0 + %spec.select = add nuw nsw i32 %71, %.070 %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 - %.not = icmp eq i64 %indvars.iv.next80, 16 - br i1 %.not, label %74, label %68, !llvm.loop !11 + %exitcond.not = icmp eq i64 %indvars.iv.next80, 16 + br i1 %exitcond.not, label %72, label %66, !llvm.loop !11 -74: ; preds = %68 - %75 = icmp slt i32 %spec.select, %.05273 - %76 = trunc nuw nsw i64 %indvars.iv82 to i32 - %spec.select61 = select i1 %75, i32 %76, i32 %.05472 +72: ; preds = %66 + %73 = icmp slt i32 %spec.select, %.05273 + %74 = trunc nuw nsw i64 %indvars.iv82 to i32 + %spec.select61 = select i1 %73, i32 %74, i32 %.05472 %spec.select62 = tail call i32 @llvm.smin.i32(i32 %spec.select, i32 %.05273) %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 - %.not86 = icmp eq i64 %indvars.iv.next83, 4 - br i1 %.not86, label %77, label %.preheader, !llvm.loop !12 + %exitcond85.not = icmp eq i64 %indvars.iv.next83, 4 + br i1 %exitcond85.not, label %75, label %.preheader, !llvm.loop !12 -77: ; preds = %74 +75: ; preds = %72 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %spec.select61 } diff --git a/bench/lief/optimized/MemoryStream.ll b/bench/lief/optimized/MemoryStream.ll index 326b967c20e..6351d3fd484 100644 --- a/bench/lief/optimized/MemoryStream.ll +++ b/bench/lief/optimized/MemoryStream.ll @@ -150,8 +150,8 @@ define linkonce_odr hidden i64 @_ZN4LIEF12BinaryStream9peek_dataERSt6vectorIhSaI %18 = icmp ule i64 %13, %17 %19 = icmp sgt i64 %2, -1 %or.cond = and i1 %19, %18 - %20 = icmp sgt i64 %3, 0 - %or.cond3 = and i1 %20, %or.cond + %21 = icmp sgt i64 %3, 0 + %spec.select = and i1 %21, %or.cond %21 = icmp sgt i64 %13, -1 %spec.select = and i1 %21, %or.cond3 br i1 %spec.select, label %22, label %.critedge @@ -181,16 +181,16 @@ define linkonce_odr hidden i64 @_ZN4LIEF12BinaryStream9read_dataERSt6vectorIhSaI %8 = load ptr, ptr %7, align 8 %9 = tail call i64 %8(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %5, i64 noundef %2, i64 noundef 0) #9 %10 = and i64 %9, 4294967296 - %11 = icmp eq i64 %10, 0 - br i1 %11, label %15, label %12 + %.not = icmp eq i64 %10, 0 + br i1 %.not, label %14, label %11 -12: ; preds = %3 - %13 = load i64, ptr %4, align 8, !tbaa !3 - %14 = add i64 %13, %2 - store i64 %14, ptr %4, align 8, !tbaa !3 - br label %15 +11: ; preds = %3 + %12 = load i64, ptr %4, align 8, !tbaa !3 + %13 = add i64 %12, %2 + store i64 %13, ptr %4, align 8, !tbaa !3 + br label %14 -15: ; preds = %3, %12 +14: ; preds = %3, %11 %.sroa.2.0 = phi i64 [ 4294967297, %12 ], [ 1, %3 ] ret i64 %.sroa.2.0 } diff --git a/bench/linux/optimized/cdrom.ll b/bench/linux/optimized/cdrom.ll index ab82cfee35d..3afaa76784a 100644 --- a/bench/linux/optimized/cdrom.ll +++ b/bench/linux/optimized/cdrom.ll @@ -4561,7 +4561,7 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_audio(ptr noundef %0, ptr nound call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %4, i8 0, i64 16, i1 false), !annotation !46 %12 = call i64 @_copy_from_user(ptr noundef nonnull %4, ptr noundef %1, i64 noundef 16) #17 %13 = icmp eq i64 %12, 0 - br i1 %13, label %14, label %126 + br i1 %13, label %14, label %130 14: ; preds = %11 %15 = load i32, ptr %4, align 4 @@ -4642,22 +4642,22 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_audio(ptr noundef %0, ptr nound 62: ; preds = %56 %63 = getelementptr inbounds nuw i8, ptr %0, i64 24 %64 = getelementptr inbounds nuw i8, ptr %0, i64 96 - %.not = icmp eq i32 %.fr7, 1 - br i1 %.not, label %.split.us, label %.split + %65 = icmp eq i32 %.fr7, 1 + br i1 %65, label %.split.us, label %.split .split.us: ; preds = %62 - %65 = load ptr, ptr %63, align 8 - %66 = getelementptr inbounds nuw i8, ptr %65, i64 80 - %67 = load ptr, ptr %66, align 8 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 156 - %69 = load i32, ptr %68, align 4 - %70 = shl i32 %69, 9 - %71 = udiv i32 %70, 2352 + %66 = load ptr, ptr %63, align 8 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 80 + %68 = load ptr, ptr %67, align 8 + %69 = getelementptr inbounds nuw i8, ptr %68, i64 156 + %70 = load i32, ptr %69, align 4 + %71 = shl i32 %70, 9 + %72 = udiv i32 %71, 2352 store i8 0, ptr %64, align 8 %72 = call i32 @llvm.smin.i32(i32 %71, i32 1) br label %73 -73: ; preds = %83, %.split.us +73: ; preds = %85, %.split.us %74 = phi ptr [ %87, %83 ], [ %58, %.split.us ] %75 = phi i32 [ %84, %83 ], [ %49, %.split.us ] %76 = load i32, ptr %59, align 4 @@ -4672,7 +4672,7 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_audio(ptr noundef %0, ptr nound i32 -5, label %.split6.us ] -83: ; preds = %73 +85: ; preds = %73 %84 = add nuw nsw i32 %78, %75 %85 = mul nuw nsw i32 %78, 2352 %86 = zext nneg i32 %85 to i64 @@ -4684,75 +4684,75 @@ define internal fastcc i32 @mmc_ioctl_cdrom_read_audio(ptr noundef %0, ptr nound %89 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) br label %.thread -.split: ; preds = %62, %119 - %90 = load ptr, ptr %63, align 8 - %91 = getelementptr inbounds nuw i8, ptr %90, i64 80 - %92 = load ptr, ptr %91, align 8 - %93 = getelementptr inbounds nuw i8, ptr %92, i64 156 - %94 = load i32, ptr %93, align 4 - %95 = shl i32 %94, 9 - %96 = udiv i32 %95, 2352 +.split: ; preds = %62, %123 + %94 = load ptr, ptr %63, align 8 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 80 + %96 = load ptr, ptr %95, align 8 + %97 = getelementptr inbounds nuw i8, ptr %96, i64 156 + %98 = load i32, ptr %97, align 4 + %99 = shl i32 %98, 9 + %100 = udiv i32 %99, 2352 store i8 0, ptr %64, align 8 - br label %97 - -97: ; preds = %.split, %109 - %98 = phi ptr [ %114, %109 ], [ %58, %.split ] - %99 = phi i32 [ %111, %109 ], [ %49, %.split ] - %100 = phi i32 [ %110, %109 ], [ %.fr7, %.split ] - %101 = load i32, ptr %59, align 4 - %102 = icmp eq i32 %101, 1 - %103 = call i32 @llvm.smin.i32(i32 %100, i32 %96) - %104 = select i1 %102, i32 1, i32 %103 - %105 = load ptr, ptr %0, align 8 - %106 = getelementptr inbounds nuw i8, ptr %105, i64 96 - %107 = load ptr, ptr %106, align 8 - %108 = call i32 %107(ptr noundef %0, ptr noundef %98, i32 noundef %99, i32 noundef %104, ptr noundef nonnull %64) #17 - switch i32 %108, label %.thread [ - i32 0, label %109 - i32 -5, label %116 + br label %101 + +101: ; preds = %.split, %113 + %102 = phi ptr [ %118, %109 ], [ %58, %.split ] + %103 = phi i32 [ %115, %109 ], [ %49, %.split ] + %104 = phi i32 [ %114, %109 ], [ %.fr7, %.split ] + %105 = load i32, ptr %59, align 4 + %106 = icmp eq i32 %105, 1 + %107 = call i32 @llvm.smin.i32(i32 %104, i32 %100) + %108 = select i1 %106, i32 1, i32 %107 + %109 = load ptr, ptr %0, align 8 + %110 = getelementptr inbounds nuw i8, ptr %109, i64 96 + %111 = load ptr, ptr %110, align 8 + %112 = call i32 %107(ptr noundef %0, ptr noundef %102, i32 noundef %103, i32 noundef %108, ptr noundef nonnull %64) #17 + switch i32 %112, label %.thread [ + i32 0, label %113 + i32 -5, label %120 ] -109: ; preds = %97 - %110 = sub i32 %100, %104 - %111 = add i32 %104, %99 - %112 = mul i32 %104, 2352 - %113 = sext i32 %112 to i64 - %114 = getelementptr i8, ptr %98, i64 %113 - %115 = icmp eq i32 %110, 0 - br i1 %115, label %.thread, label %97, !llvm.loop !51 +113: ; preds = %101 + %114 = sub i32 %104, %108 + %115 = add i32 %108, %103 + %116 = mul i32 %108, 2352 + %117 = sext i32 %116 to i64 + %118 = getelementptr i8, ptr %102, i64 %117 + %119 = icmp eq i32 %114, 0 + br i1 %119, label %.thread, label %101, !llvm.loop !51 -116: ; preds = %97 - %117 = load i32, ptr %59, align 4 - %118 = icmp eq i32 %117, 2 - br i1 %118, label %119, label %.split6.us +120: ; preds = %101 + %121 = load i32, ptr %59, align 4 + %122 = icmp eq i32 %121, 2 + br i1 %122, label %123, label %.split6.us -119: ; preds = %116 - %120 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.21) #16 +123: ; preds = %120 + %124 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.21) #16 store i32 1, ptr %59, align 4 br label %.split .split6.us: ; preds = %116, %73 - %121 = load i8, ptr %64, align 8 - switch i8 %121, label %.thread [ - i8 4, label %122 - i8 11, label %122 + %125 = load i8, ptr %64, align 8 + switch i8 %125, label %.thread [ + i8 4, label %126 + i8 11, label %126 ] -122: ; preds = %.split6.us, %.split6.us - %123 = zext nneg i8 %121 to i32 - %124 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.22, i32 noundef %123) #16 +126: ; preds = %.split6.us, %.split6.us + %127 = zext nneg i8 %125 to i32 + %128 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.22, i32 noundef %127) #16 store i32 0, ptr %59, align 4 - %125 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) + %129 = call fastcc i32 @cdrom_read_cdda_old(ptr noundef %0, ptr noundef %58, i32 noundef %49, i32 noundef %.fr7) br label %.thread -126: ; preds = %11 +130: ; preds = %11 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.thread -.thread: ; preds = %109, %97, %83, %73, %126, %122, %.split6.us, %88, %48, %30, %27 - %127 = phi i32 [ -14, %126 ], [ -14, %27 ], [ -22, %30 ], [ -22, %48 ], [ %89, %88 ], [ %125, %122 ], [ -5, %.split6.us ], [ %82, %73 ], [ 0, %83 ], [ %108, %97 ], [ 0, %109 ] +.thread: ; preds = %109, %97, %85, %73, %130, %126, %.split6.us, %88, %48, %30, %27 + %131 = phi i32 [ -14, %126 ], [ -14, %27 ], [ -22, %30 ], [ -22, %48 ], [ %89, %88 ], [ %129, %122 ], [ -5, %.split6.us ], [ %82, %73 ], [ 0, %83 ], [ %108, %97 ], [ 0, %109 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %127 + ret i32 %131 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/drm_mipi_dsi.ll b/bench/linux/optimized/drm_mipi_dsi.ll index 943de50e937..e411c0866ad 100644 --- a/bench/linux/optimized/drm_mipi_dsi.ll +++ b/bench/linux/optimized/drm_mipi_dsi.ll @@ -1532,7 +1532,7 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_power_mode(ptr noundef readonly c .thread3: ; preds = %2, %18 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %32 + br label %34 28: ; preds = %22, %27 %29 = call i64 %20(ptr noundef %14, ptr noundef nonnull %4) #14 @@ -1540,16 +1540,16 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_power_mode(ptr noundef readonly c call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) %30 = icmp eq i64 %.fr, 0 - br i1 %30, label %32, label %31 + br i1 %30, label %34, label %31 31: ; preds = %28 %spec.select7 = call i64 @llvm.smin.i64(i64 %.fr, i64 0) - %spec.select = trunc i64 %spec.select7 to i32 + %33 = trunc i64 %spec.select7 to i32 br label %32 -32: ; preds = %31, %.thread3, %28 - %33 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] - ret i32 %33 +34: ; preds = %31, %.thread3, %28 + %35 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] + ret i32 %35 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -1601,7 +1601,7 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_pixel_format(ptr noundef readonly .thread3: ; preds = %2, %18 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %32 + br label %34 28: ; preds = %22, %27 %29 = call i64 %20(ptr noundef %14, ptr noundef nonnull %4) #14 @@ -1609,16 +1609,16 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_pixel_format(ptr noundef readonly call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) %30 = icmp eq i64 %.fr, 0 - br i1 %30, label %32, label %31 + br i1 %30, label %34, label %31 31: ; preds = %28 %spec.select7 = call i64 @llvm.smin.i64(i64 %.fr, i64 0) - %spec.select = trunc i64 %spec.select7 to i32 + %33 = trunc i64 %spec.select7 to i32 br label %32 -32: ; preds = %31, %.thread3, %28 - %33 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] - ret i32 %33 +34: ; preds = %31, %.thread3, %28 + %35 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] + ret i32 %35 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -2350,7 +2350,7 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_display_brightness(ptr noundef re .thread3: ; preds = %2, %18 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %32 + br label %34 28: ; preds = %22, %27 %29 = call i64 %20(ptr noundef %14, ptr noundef nonnull %4) #14 @@ -2358,16 +2358,16 @@ define dso_local noundef i32 @mipi_dsi_dcs_get_display_brightness(ptr noundef re call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) %30 = icmp eq i64 %.fr, 0 - br i1 %30, label %32, label %31 + br i1 %30, label %34, label %31 31: ; preds = %28 %spec.select7 = call i64 @llvm.smin.i64(i64 %.fr, i64 0) - %spec.select = trunc i64 %spec.select7 to i32 + %33 = trunc i64 %spec.select7 to i32 br label %32 -32: ; preds = %31, %.thread3, %28 - %33 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] - ret i32 %33 +34: ; preds = %31, %.thread3, %28 + %35 = phi i32 [ -38, %.thread3 ], [ -61, %28 ], [ %spec.select, %31 ] + ret i32 %35 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/early_printk.ll b/bench/linux/optimized/early_printk.ll index 9f03f4389bd..01cc152abce 100644 --- a/bench/linux/optimized/early_printk.ll +++ b/bench/linux/optimized/early_printk.ll @@ -603,18 +603,18 @@ declare dso_local i32 @kstrtoull(ptr noundef, i32 noundef, ptr noundef) local_un define internal void @early_vga_write(ptr readnone captures(none) %0, ptr noundef readonly captures(none) %1, i32 noundef %2) #2 align 16 { %4 = load i8, ptr %1, align 1 %5 = icmp eq i8 %4, 0 - br i1 %5, label %.loopexit12, label %.preheader11 + br i1 %5, label %.loopexit11, label %.preheader10 -.preheader11: ; preds = %3, %93 +.preheader10: ; preds = %3, %93 %6 = phi i8 [ %94, %93 ], [ %4, %3 ] %7 = phi ptr [ %9, %93 ], [ %1, %3 ] %8 = phi i32 [ %10, %93 ], [ %2, %3 ] %9 = getelementptr i8, ptr %7, i64 1 %10 = add i32 %8, -1 %11 = icmp eq i32 %8, 0 - br i1 %11, label %.loopexit12, label %12 + br i1 %11, label %.loopexit11, label %12 -12: ; preds = %.preheader11 +12: ; preds = %.preheader10 %13 = load i32, ptr @current_ypos, align 4 %14 = load i32, ptr @max_ypos, align 4 %15 = icmp slt i32 %13, %14 @@ -622,31 +622,31 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde 16: ; preds = %12 %17 = icmp ugt i32 %14, 1 - %.pre15 = load i32, ptr @max_xpos, align 4 - br i1 %17, label %.preheader9, label %.loopexit10 + %.pre14 = load i32, ptr @max_xpos, align 4 + br i1 %17, label %.preheader8, label %.loopexit9 -.preheader9: ; preds = %16 - %18 = icmp eq i32 %.pre15, 0 - br i1 %18, label %.loopexit8, label %.preheader9.split +.preheader8: ; preds = %16 + %18 = icmp eq i32 %.pre14, 0 + br i1 %18, label %.loopexit8, label %.preheader8.split -.loopexit10: ; preds = %.loopexit, %16 +.loopexit9: ; preds = %.loopexit, %16 %19 = phi i32 [ %14, %16 ], [ %51, %.loopexit ] - %20 = phi i32 [ %.pre15, %16 ], [ %50, %.loopexit ] + %20 = phi i32 [ %.pre14, %16 ], [ %50, %.loopexit ] %21 = phi i32 [ 0, %16 ], [ %54, %.loopexit ] - %.not6 = icmp eq i32 %20, 0 - br i1 %.not6, label %.loopexit8, label %.preheader7 - -.preheader9.split: ; preds = %.preheader9, %.loopexit - %22 = phi i32 [ %50, %.loopexit ], [ %.pre15, %.preheader9 ] - %23 = phi i32 [ %51, %.loopexit ], [ %14, %.preheader9 ] - %24 = phi i32 [ %52, %.loopexit ], [ %.pre15, %.preheader9 ] - %25 = phi i32 [ %54, %.loopexit ], [ 0, %.preheader9 ] + %22 = icmp eq i32 %20, 0 + br i1 %22, label %.loopexit8, label %.preheader7 + +.preheader8.split: ; preds = %.preheader8, %.loopexit + %23 = phi i32 [ %51, %.loopexit ], [ %.pre14, %.preheader9 ] + %24 = phi i32 [ %52, %.loopexit ], [ %14, %.preheader9 ] + %25 = phi i32 [ %52, %.loopexit ], [ %.pre15, %.preheader9 ] + %26 = phi i32 [ %54, %.loopexit ], [ 0, %.preheader9 ] %26 = phi i32 [ %53, %.loopexit ], [ 1, %.preheader9 ] %.not = icmp eq i32 %24, 0 br i1 %.not, label %.loopexit, label %.preheader -.preheader: ; preds = %.preheader9.split, %.preheader - %27 = phi i32 [ %48, %.preheader ], [ %24, %.preheader9.split ] +.preheader: ; preds = %.preheader8.split, %.preheader + %29 = phi i32 [ %48, %.preheader ], [ %24, %.preheader9.split ] %28 = phi i32 [ %47, %.preheader ], [ 0, %.preheader9.split ] %29 = load i64, ptr @page_offset_base, align 8 %30 = inttoptr i64 %29 to ptr @@ -676,16 +676,16 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde %.pre = load i32, ptr @max_ypos, align 4 br label %.loopexit -.loopexit: ; preds = %.loopexit.loopexit, %.preheader9.split - %50 = phi i32 [ %48, %.loopexit.loopexit ], [ %22, %.preheader9.split ] - %51 = phi i32 [ %.pre, %.loopexit.loopexit ], [ %23, %.preheader9.split ] +.loopexit: ; preds = %.loopexit.loopexit, %.preheader8.split + %51 = phi i32 [ %48, %.loopexit.loopexit ], [ %23, %.preheader9.split ] + %52 = phi i32 [ %.pre, %.loopexit.loopexit ], [ %24, %.preheader9.split ] %52 = phi i32 [ %48, %.loopexit.loopexit ], [ 0, %.preheader9.split ] %53 = add nuw nsw i32 %26, 1 %54 = add nuw nsw i32 %25, 1 %55 = icmp slt i32 %53, %51 - br i1 %55, label %.preheader9.split, label %.loopexit10, !llvm.loop !21 + br i1 %55, label %.preheader8.split, label %.loopexit9, !llvm.loop !21 -.preheader7: ; preds = %.loopexit10, %.preheader7 +.preheader6: ; preds = %.loopexit9, %.preheader6 %56 = phi i32 [ %67, %.preheader7 ], [ %20, %.loopexit10 ] %57 = phi i32 [ %66, %.preheader7 ], [ 0, %.loopexit10 ] %58 = load i64, ptr @page_offset_base, align 8 @@ -700,19 +700,19 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde %66 = add nuw nsw i32 %57, 1 %67 = load i32, ptr @max_xpos, align 4 %68 = icmp slt i32 %66, %67 - br i1 %68, label %.preheader7, label %.loopexit8.loopexit, !llvm.loop !23 + br i1 %68, label %.preheader6, label %.loopexit7.loopexit, !llvm.loop !23 -.loopexit8.loopexit: ; preds = %.preheader7 - %.pre16 = load i32, ptr @max_ypos, align 4 - br label %.loopexit8 +.loopexit7.loopexit: ; preds = %.preheader6 + %.pre15 = load i32, ptr @max_ypos, align 4 + br label %.loopexit7 -.loopexit8: ; preds = %.preheader9, %.loopexit8.loopexit, %.loopexit10 - %69 = phi i32 [ %.pre16, %.loopexit8.loopexit ], [ %19, %.loopexit10 ], [ %14, %.preheader9 ] +.loopexit7: ; preds = %.preheader8, %.loopexit7.loopexit, %.loopexit9 + %69 = phi i32 [ %.pre15, %.loopexit8.loopexit ], [ %19, %.loopexit10 ], [ %14, %.preheader9 ] %70 = add nsw i32 %69, -1 store i32 %70, ptr @current_ypos, align 4 br label %71 -71: ; preds = %.loopexit8, %12 +71: ; preds = %.loopexit7, %12 %72 = phi i32 [ %70, %.loopexit8 ], [ %13, %12 ] switch i8 %6, label %73 [ i8 10, label %90 @@ -741,11 +741,11 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde br i1 %89, label %93, label %._crit_edge ._crit_edge: ; preds = %73 - %.pre17 = load i32, ptr @current_ypos, align 4 + %.pre16 = load i32, ptr @current_ypos, align 4 br label %90 90: ; preds = %._crit_edge, %71 - %91 = phi i32 [ %.pre17, %._crit_edge ], [ %72, %71 ] + %91 = phi i32 [ %.pre16, %._crit_edge ], [ %72, %71 ] store i32 0, ptr @current_xpos, align 4 %92 = add i32 %91, 1 store i32 %92, ptr @current_ypos, align 4 @@ -754,9 +754,9 @@ define internal void @early_vga_write(ptr readnone captures(none) %0, ptr nounde 93: ; preds = %90, %73, %71 %94 = load i8, ptr %9, align 1 %95 = icmp eq i8 %94, 0 - br i1 %95, label %.loopexit12, label %.preheader11, !llvm.loop !24 + br i1 %95, label %.loopexit11, label %.preheader10, !llvm.loop !24 -.loopexit12: ; preds = %93, %.preheader11, %3 +.loopexit11: ; preds = %93, %.preheader10, %3 ret void } diff --git a/bench/linux/optimized/xt_TCPMSS.ll b/bench/linux/optimized/xt_TCPMSS.ll index 8169672dedc..d6fd570967e 100644 --- a/bench/linux/optimized/xt_TCPMSS.ll +++ b/bench/linux/optimized/xt_TCPMSS.ll @@ -75,11 +75,11 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg4(ptr noundef %0, ptr nou %12 = zext nneg i8 %11 to i32 %13 = tail call fastcc i32 @tcpmss_mangle_packet(ptr noundef %0, ptr noundef %1, i32 noundef 2, i32 noundef %12, i32 noundef 40), !range !5 switch i32 %13, label %14 [ - i32 -1, label %38 + i32 -1, label %41 i32 0, label %.fold.split ] -14: ; preds = %2 +14:; preds = %2 %15 = load ptr, ptr %3, align 8 %16 = load i16, ptr %5, align 4 %17 = zext i16 %16 to i64 @@ -107,12 +107,12 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg4(ptr noundef %0, ptr nou store i16 %24, ptr %19, align 2 br label %38 -.fold.split: ; preds = %2 - br label %38 +.fold.split:; preds = %2 + br label %41 -38: ; preds = %2, %.fold.split, %14 - %39 = phi i32 [ 0, %2 ], [ -1, %14 ], [ -1, %.fold.split ] - ret i32 %39 +41: ; preds = %2, %.fold.split, %14 + %42 = phi i32 [ 0, %2 ], [ -1, %14 ], [ -1, %.fold.split ] + ret i32 %42 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -215,7 +215,7 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg6(ptr noundef %0, ptr nou store i8 %12, ptr %3, align 1 %13 = call i32 @ipv6_skip_exthdr(ptr noundef %0, i32 noundef 40, ptr noundef nonnull %3, ptr noundef nonnull %4) #10 %14 = icmp slt i32 %13, 0 - br i1 %14, label %41, label %15 + br i1 %14, label %44, label %15 15: ; preds = %2 %16 = call fastcc i32 @tcpmss_mangle_packet(ptr noundef %0, ptr noundef %1, i32 noundef 10, i32 noundef %13, i32 noundef 60), !range !5 @@ -224,7 +224,7 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg6(ptr noundef %0, ptr nou i32 0, label %.fold.split ] -17: ; preds = %15 +17:; preds = %15 %18 = load ptr, ptr %5, align 8 %19 = load i16, ptr %7, align 4 %20 = zext i16 %19 to i64 @@ -241,7 +241,7 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg6(ptr noundef %0, ptr nou %31 = icmp eq i8 %30, 64 br i1 %31, label %32, label %40 -32: ; preds = %17 +32:; preds = %17 %33 = getelementptr inbounds nuw i8, ptr %0, i64 136 %34 = load i32, ptr %33, align 8 %35 = zext i16 %23 to i32 @@ -252,18 +252,18 @@ define internal noundef range(i32 -1, 1) i32 @tcpmss_tg6(ptr noundef %0, ptr nou store i32 %39, ptr %33, align 8 br label %40 -40: ; preds = %32, %17 +40:; preds = %32, %17 store i16 %27, ptr %22, align 4 br label %41 -.fold.split: ; preds = %15 - br label %41 +.fold.split:; preds = %15 + br label %44 -41: ; preds = %15, %.fold.split, %40, %2 - %42 = phi i32 [ 0, %2 ], [ 0, %15 ], [ -1, %40 ], [ -1, %.fold.split ] +44: ; preds = %15, %.fold.split, %40, %2 + %45 = phi i32 [ 0, %2 ], [ 0, %15 ], [ -1, %40 ], [ -1, %.fold.split ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %42 + ret i32 %45 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/lua/optimized/lmathlib.ll b/bench/lua/optimized/lmathlib.ll index 51a1a760a90..99e2815cd2a 100644 --- a/bench/lua/optimized/lmathlib.ll +++ b/bench/lua/optimized/lmathlib.ll @@ -73,17 +73,17 @@ define dso_local noundef i32 @luaopen_math(ptr noundef %0) local_unnamed_addr #0 %15 = xor i64 %10, %14 %16 = tail call i64 @llvm.fshl.i64(i64 %11, i64 %11, i64 45) %17 = add nuw nsw i32 %.018.i.i, 1 - %18 = icmp eq i32 %17, 16 - br i1 %18, label %setrandfunc.exit, label %5 + %exitcond.not.i.i = icmp eq i32 %17, 16 + br i1 %exitcond.not.i.i, label %setrandfunc.exit, label %5 setrandfunc.exit: ; preds = %5 - %19 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %20 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %21 = getelementptr inbounds nuw i8, ptr %2, i64 24 + %18 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %19 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %20 = getelementptr inbounds nuw i8, ptr %2, i64 24 store i64 %12, ptr %2, align 8, !tbaa !4 - store i64 %13, ptr %19, align 8, !tbaa !4 - store i64 %15, ptr %20, align 8, !tbaa !4 - store i64 %16, ptr %21, align 8, !tbaa !4 + store i64 %13, ptr %18, align 8, !tbaa !4 + store i64 %15, ptr %19, align 8, !tbaa !4 + store i64 %16, ptr %20, align 8, !tbaa !4 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef %4) #6 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef 0) #6 tail call void @lua_settop(ptr noundef %0, i32 noundef -3) #6 @@ -775,17 +775,17 @@ define internal noundef i32 @math_randomseed(ptr noundef %0) #0 { %29 = xor i64 %24, %28 %30 = tail call i64 @llvm.fshl.i64(i64 %25, i64 %25, i64 45) %31 = add nuw nsw i32 %.018.i, 1 - %32 = icmp eq i32 %31, 16 - br i1 %32, label %setseed.exit, label %19 + %exitcond.not.i = icmp eq i32 %31, 16 + br i1 %exitcond.not.i, label %setseed.exit, label %19 setseed.exit: ; preds = %19 - %33 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %34 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %35 = getelementptr inbounds nuw i8, ptr %2, i64 24 + %32 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %33 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %34 = getelementptr inbounds nuw i8, ptr %2, i64 24 store i64 %26, ptr %2, align 8, !tbaa !4 - store i64 %27, ptr %33, align 8, !tbaa !4 - store i64 %29, ptr %34, align 8, !tbaa !4 - store i64 %30, ptr %35, align 8, !tbaa !4 + store i64 %27, ptr %32, align 8, !tbaa !4 + store i64 %29, ptr %33, align 8, !tbaa !4 + store i64 %30, ptr %34, align 8, !tbaa !4 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef %.09) #6 tail call void @lua_pushinteger(ptr noundef %0, i64 noundef %.0) #6 ret i32 2 diff --git a/bench/luajit/optimized/lib_bit.ll b/bench/luajit/optimized/lib_bit.ll index b9032a3a9d8..2ab307aab00 100644 --- a/bench/luajit/optimized/lib_bit.ll +++ b/bench/luajit/optimized/lib_bit.ll @@ -182,7 +182,7 @@ define internal range(i32 0, 3) i32 @lj_ffh_bit_band(ptr noundef %0) #0 { 13: ; preds = %8 %14 = load i32, ptr %2, align 4, !tbaa !4 %.not = icmp eq i32 %14, 0 - br i1 %.not, label %59, label %15 + br i1 %.not, label %57, label %15 15: ; preds = %13 %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -211,59 +211,59 @@ define internal range(i32 0, 3) i32 @lj_ffh_bit_band(ptr noundef %0) #0 { br i1 %35, label %.split.us, label %.split .split.us: ; preds = %15, %.split.us - %.125.us = phi ptr [ %38, %.split.us ], [ %26, %15 ] - %.0.us = phi i64 [ %37, %.split.us ], [ %34, %15 ] + %.125.us = phi ptr [ %36, %.split.us ], [ %26, %15 ] + %.0.us = phi i64 [ %35, %.split.us ], [ %34, %15 ] call void @lj_cconv_ct_tv(ptr noundef nonnull %21, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %.125.us, i32 noundef 0) #5 - %36 = load i64, ptr %3, align 8, !tbaa !20 - %37 = and i64 %36, %.0.us - %38 = getelementptr inbounds nuw i8, ptr %.125.us, i64 8 - %39 = icmp ult ptr %38, %7 - br i1 %39, label %.split.us, label %.split31.us, !llvm.loop !46 + %34 = load i64, ptr %3, align 8, !tbaa !20 + %35 = and i64 %34, %.0.us + %36 = getelementptr inbounds nuw i8, ptr %.125.us, i64 8 + %37 = icmp ult ptr %36, %7 + br i1 %37, label %.split.us, label %.split31.us, !llvm.loop !46 .split: ; preds = %15 - %40 = icmp eq i8 %.fr38, 73 - br i1 %40, label %.split.split.us, label %.split.split + %38 = icmp eq i8 %.fr38, 73 + br i1 %38, label %.split.split.us, label %.split.split .split.split.us: ; preds = %.split, %.split.split.us - %.125.us32 = phi ptr [ %43, %.split.split.us ], [ %26, %.split ] - %.0.us33 = phi i64 [ %42, %.split.split.us ], [ %34, %.split ] + %.125.us32 = phi ptr [ %41, %.split.split.us ], [ %26, %.split ] + %.0.us33 = phi i64 [ %40, %.split.split.us ], [ %34, %.split ] call void @lj_cconv_ct_tv(ptr noundef nonnull %21, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %.125.us32, i32 noundef 0) #5 - %41 = load i64, ptr %3, align 8, !tbaa !20 - %42 = or i64 %41, %.0.us33 - %43 = getelementptr inbounds nuw i8, ptr %.125.us32, i64 8 - %44 = icmp ult ptr %43, %7 - br i1 %44, label %.split.split.us, label %.split31.us, !llvm.loop !46 + %39 = load i64, ptr %3, align 8, !tbaa !20 + %40 = or i64 %39, %.0.us33 + %41 = getelementptr inbounds nuw i8, ptr %.125.us32, i64 8 + %42 = icmp ult ptr %41, %7 + br i1 %42, label %.split.split.us, label %.split31.us, !llvm.loop !46 .split.split: ; preds = %.split, %.split.split - %.125 = phi ptr [ %47, %.split.split ], [ %26, %.split ] - %.0 = phi i64 [ %46, %.split.split ], [ %34, %.split ] + %.125 = phi ptr [ %45, %.split.split ], [ %26, %.split ] + %.0 = phi i64 [ %44, %.split.split ], [ %34, %.split ] call void @lj_cconv_ct_tv(ptr noundef nonnull %21, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %.125, i32 noundef 0) #5 - %45 = load i64, ptr %3, align 8, !tbaa !20 - %46 = xor i64 %45, %.0 - %47 = getelementptr inbounds nuw i8, ptr %.125, i64 8 - %48 = icmp ult ptr %47, %7 - br i1 %48, label %.split.split, label %.split31.us, !llvm.loop !46 + %43 = load i64, ptr %3, align 8, !tbaa !20 + %44 = xor i64 %43, %.0 + %45 = getelementptr inbounds nuw i8, ptr %.125, i64 8 + %46 = icmp ult ptr %45, %7 + br i1 %46, label %.split.split, label %.split31.us, !llvm.loop !46 .split31.us: ; preds = %.split.split, %.split.split.us, %.split.us - %.us-phi = phi i64 [ %37, %.split.us ], [ %42, %.split.split.us ], [ %46, %.split.split ] - %49 = load i32, ptr %2, align 4, !tbaa !4 - %50 = call ptr @lj_mem_newgco(ptr noundef nonnull %0, i64 noundef 24) #5 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 9 - store i8 10, ptr %51, align 1, !tbaa !16 - %52 = trunc i32 %49 to i16 - %53 = getelementptr inbounds nuw i8, ptr %50, i64 10 - store i16 %52, ptr %53, align 2, !tbaa !19 - %54 = getelementptr inbounds nuw i8, ptr %50, i64 16 - store i64 %.us-phi, ptr %54, align 8, !tbaa !20 - %55 = load ptr, ptr %4, align 8, !tbaa !8 - %56 = getelementptr inbounds i8, ptr %55, i64 -16 - %57 = ptrtoint ptr %50 to i64 - %58 = or i64 %57, -1548112371908608 - store i64 %58, ptr %56, align 8, !tbaa !15 + %.us-phi = phi i64 [ %35, %.split.us ], [ %40, %.split.split.us ], [ %44, %.split.split ] + %47 = load i32, ptr %2, align 4, !tbaa !4 + %48 = call ptr @lj_mem_newgco(ptr noundef nonnull %0, i64 noundef 24) #5 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 9 + store i8 10, ptr %49, align 1, !tbaa !16 + %50 = trunc i32 %47 to i16 + %51 = getelementptr inbounds nuw i8, ptr %48, i64 10 + store i16 %50, ptr %51, align 2, !tbaa !19 + %52 = getelementptr inbounds nuw i8, ptr %48, i64 16 + store i64 %.us-phi, ptr %52, align 8, !tbaa !20 + %53 = load ptr, ptr %4, align 8, !tbaa !8 + %54 = getelementptr inbounds i8, ptr %53, i64 -16 + %55 = ptrtoint ptr %48 to i64 + %56 = or i64 %55, -1548112371908608 + store i64 %56, ptr %54, align 8, !tbaa !15 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %59 + br label %57 -59: ; preds = %13, %.split31.us +57: ; preds = %13, %.split31.us %.023 = phi i32 [ 2, %.split31.us ], [ 0, %13 ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.023 diff --git a/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll b/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll index 5f991684be2..2d35afdb950 100644 --- a/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll +++ b/bench/meilisearch-rs/optimized/nd5rqkzol64hjfl.ll @@ -260,8 +260,8 @@ _ZN4core4iter6traits8iterator8Iterator3zip17hd8c38152741f4af7E.exit.i: ; preds = %49 = load i32, ptr %48, align 4, !alias.scope !13, !noalias !21, !noundef !4 %50 = call i32 @llvm.bswap.i32(i32 %49) store i32 %50, ptr %47, align 1, !alias.scope !48, !noalias !52 - %51 = icmp eq i64 %45, 8 - br i1 %51, label %"_ZN86_$LT$sha2..core_api..Sha256VarCore$u20$as$u20$digest..core_api..VariableOutputCore$GT$22finalize_variable_core17hd25b9330b6b55406E.exit", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit12.i" + %exitcond.not.i = icmp eq i64 %45, 8 + br i1 %exitcond.not.i, label %"_ZN86_$LT$sha2..core_api..Sha256VarCore$u20$as$u20$digest..core_api..VariableOutputCore$GT$22finalize_variable_core17hd25b9330b6b55406E.exit", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit12.i" "_ZN86_$LT$sha2..core_api..Sha256VarCore$u20$as$u20$digest..core_api..VariableOutputCore$GT$22finalize_variable_core17hd25b9330b6b55406E.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17ha33db307e64c0f6aE.exit12.i" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %2, ptr noundef nonnull readonly align 1 dereferenceable(32) %12, i64 32, i1 false), !alias.scope !54, !noalias !58 @@ -593,14 +593,14 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.165 %20 = icmp ult i64 %17, %19 br i1 %20, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %43, %15 +._crit_edge: ; preds = %41, %15 %.sroa.09.1.lcssa = phi i64 [ %.sroa.09.032, %15 ], [ %31, %43 ] %.not = icmp eq i64 %.sroa.02.033, 4 br i1 %.not, label %14, label %22 -.lr.ph: ; preds = %15, %43 +.lr.ph: ; preds = %15, %41 %.sroa.09.131 = phi i64 [ %31, %43 ], [ %.sroa.09.032, %15 ] - %.sroa.013.030 = phi i64 [ %49, %43 ], [ %17, %15 ] + %.sroa.013.030 = phi i64 [ %47, %43 ], [ %17, %15 ] %21 = icmp ult i64 %.sroa.09.131, 16 br i1 %21, label %28, label %33, !prof !164 @@ -623,7 +623,7 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.165 %30 = load i8, ptr %29, align 1, !noundef !4 %31 = add nuw nsw i64 %.sroa.09.131, 1 %32 = icmp ult i64 %.sroa.013.030, 36 - br i1 %32, label %34, label %42, !prof !164 + br i1 %32, label %34, label %40, !prof !164 33: ; preds = %.lr.ph tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.09.131, i64 noundef 16, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.50) #18 @@ -640,22 +640,22 @@ define hidden void @_ZN4uuid3fmt17format_hyphenated17h907119b5f9fded53E.llvm.165 %41 = icmp eq i64 %40, 36 br i1 %41, label %51, label %43, !prof !165 -42: ; preds = %28 +40: ; preds = %28 tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.013.030, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.52) #18 unreachable -43: ; preds = %34 - %44 = and i8 %30, 15 - %45 = zext nneg i8 %44 to i64 - %46 = getelementptr inbounds nuw i8, ptr %anon.0cb9b3cd82a9bc1899a20c7efca9230d.46.anon.0cb9b3cd82a9bc1899a20c7efca9230d.45, i64 %45 - %47 = load i8, ptr %46, align 1, !noundef !4 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 %40 - store i8 %47, ptr %48, align 1 - %49 = add nuw nsw i64 %.sroa.013.030, 2 - %50 = icmp ult i64 %49, %19 - br i1 %50, label %.lr.ph, label %._crit_edge +41: ; preds = %34 + %42 = and i8 %30, 15 + %43 = zext nneg i8 %42 to i64 + %44 = getelementptr inbounds nuw i8, ptr %anon.0cb9b3cd82a9bc1899a20c7efca9230d.46.anon.0cb9b3cd82a9bc1899a20c7efca9230d.45, i64 %43 + %45 = load i8, ptr %44, align 1, !noundef !4 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 %40 + store i8 %45, ptr %46, align 1 + %47 = add nuw nsw i64 %.sroa.013.030, 2 + %48 = icmp ult i64 %47, %19 + br i1 %48, label %.lr.ph, label %._crit_edge -51: ; preds = %34 +49: ; preds = %34 tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef 36, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0cb9b3cd82a9bc1899a20c7efca9230d.54) #18 unreachable } diff --git a/bench/meshoptimizer/optimized/vfetchanalyzer.ll b/bench/meshoptimizer/optimized/vfetchanalyzer.ll index d687686d103..f0172066ff1 100644 --- a/bench/meshoptimizer/optimized/vfetchanalyzer.ll +++ b/bench/meshoptimizer/optimized/vfetchanalyzer.ll @@ -154,18 +154,18 @@ define linkonce_odr dso_local void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnu %6 = getelementptr i8, ptr %5, i64 -8 %7 = load ptr, ptr %6, align 8, !tbaa !4 invoke void %4(ptr noundef %7) - to label %8 unwind label %11 + to label %8 unwind label %10 8: ; preds = %.lr.ph %9 = add i64 %.04, -1 - %10 = icmp eq i64 %9, 0 - br i1 %10, label %._crit_edge, label %.lr.ph, !llvm.loop !19 + %.not = icmp eq i64 %9, 0 + br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !19 -11: ; preds = %.lr.ph - %12 = landingpad { ptr, i32 } +10: ; preds = %.lr.ph + %11 = landingpad { ptr, i32 } catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - tail call void @__clang_call_terminate(ptr %13) #9 + %12 = extractvalue { ptr, i32 } %11, 0 + tail call void @__clang_call_terminate(ptr %12) #9 unreachable } diff --git a/bench/mimalloc/optimized/stats.ll b/bench/mimalloc/optimized/stats.ll index 62fcf80909f..795d8a9d112 100644 --- a/bench/mimalloc/optimized/stats.ll +++ b/bench/mimalloc/optimized/stats.ll @@ -1267,13 +1267,13 @@ define internal fastcc void @mi_stat_print_ex(ptr noundef readonly captures(none 9: ; preds = %5 tail call fastcc void @mi_printf_amount(i64 noundef %8, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 %10 = load i64, ptr %0, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %10, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %12 = load i64, ptr %11, align 8, !tbaa !16 + tail call fastcc void @mi_printf_amount(i64 noundef %9, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %12 = load i64, ptr %10, align 8, !tbaa !16 tail call fastcc void @mi_printf_amount(i64 noundef %12, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 %14 = load i64, ptr %13, align 8, !tbaa !12 - tail call fastcc void @mi_printf_amount(i64 noundef %14, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + tail call fastcc void @mi_printf_amount(i64 noundef %13, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 call void @llvm.lifetime.start.p0(ptr nonnull %6) store i8 0, ptr %6, align 16, !tbaa !41 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.46, ptr noundef nonnull %6) #8 @@ -1294,37 +1294,37 @@ define internal fastcc void @mi_stat_print_ex(ptr noundef readonly captures(none tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1) #8 br label %21 -21: ; preds = %15, %9 - %22 = load i64, ptr %0, align 8, !tbaa !15 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %24 = load i64, ptr %23, align 8, !tbaa !16 - %25 = icmp sgt i64 %22, %24 - br i1 %25, label %26, label %29 +27: ; preds = %14, %.not51 + %28 = load i64, ptr %0, align 8, !tbaa !15 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %30 = load i64, ptr %29, align 8, !tbaa !16 + %31 = icmp sgt i64 %28, %30 + br i1 %31, label %32, label %35 -26: ; preds = %21 +32: ; preds = %27 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.41) #8 - %27 = icmp eq ptr %4, null - %28 = select i1 %27, ptr @.str.42, ptr %4 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull %28) #8 + %33 = icmp eq ptr %4, null + %34 = select i1 %33, ptr @.str.42, ptr %4 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull %34) #8 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.30) #8 - br label %34 + br label %42 -29: ; preds = %21 +35: ; preds = %27 call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.43) #8 - br label %34 + br label %42 -30: ; preds = %5 +36: ; preds = %5 tail call fastcc void @mi_printf_amount(i64 noundef %8, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 - %31 = load i64, ptr %0, align 8, !tbaa !15 - tail call fastcc void @mi_printf_amount(i64 noundef %31, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %38 = load i64, ptr %0, align 8, !tbaa !14 + tail call fastcc void @mi_printf_amount(i64 noundef %38, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.45) #8 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %33 = load i64, ptr %32, align 8, !tbaa !12 - tail call fastcc void @mi_printf_amount(i64 noundef %33, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %41 = load i64, ptr %40, align 8, !tbaa !12 + tail call fastcc void @mi_printf_amount(i64 noundef %41, i64 noundef 1, ptr noundef nonnull %3, ptr noundef null) #9 tail call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %3, ptr noundef nonnull @.str.30) #8 - br label %34 + br label %42 -34: ; preds = %26, %29, %30 +42: ; preds = %32, %35, %36 ret void } @@ -1338,52 +1338,52 @@ define internal fastcc void @mi_printf_amount(i64 noundef %0, i64 noundef range( store i8 0, ptr %5, align 16, !tbaa !41 %7 = icmp eq i64 %1, 1 %8 = select i1 %7, ptr @.str.48, ptr @.str.45 - %9 = icmp eq i64 %1, 0 - %10 = select i1 %9, i64 1000, i64 1024 - %11 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) - %12 = icmp samesign ult i64 %11, %10 - br i1 %12, label %13, label %19 - -13: ; preds = %4 - %.not53 = icmp eq i64 %0, 1 - %14 = load i8, ptr %8, align 1 - %.not54 = icmp eq i8 %14, 66 - %or.cond = select i1 %.not53, i1 %.not54, i1 false - br i1 %or.cond, label %30, label %15 - -15: ; preds = %13 - %16 = icmp eq i64 %0, 0 - %17 = select i1 %16, ptr @.str.1, ptr %8 - %18 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.49, i64 noundef %0, ptr noundef nonnull %17) #8 - br label %30 - -19: ; preds = %4 - %20 = select i1 %9, i64 1000000, i64 1048576 - %.not50 = icmp samesign ult i64 %11, %20 - %spec.select = select i1 %.not50, ptr @.str.50, ptr @.str.51 - %spec.select55 = select i1 %.not50, i64 %10, i64 %20 - %21 = mul nuw nsw i64 %spec.select55, %10 - %.not51 = icmp samesign ult i64 %11, %21 - %.144 = select i1 %.not51, ptr %spec.select, ptr @.str.52 - %.1 = select i1 %.not51, i64 %spec.select55, i64 %21 + %.not51 = icmp eq i64 %1, 0 + %9 = select i1 %.not51, i64 1000, i64 1024 + %10 = tail call i64 @llvm.abs.i64(i64 %0, i1 true) + %11 = icmp samesign ult i64 %10, %9 + br i1 %11, label %12, label %18 + +12: ; preds = %4 + %.not52 = icmp eq i64 %0, 1 + %13 = load i8, ptr %8, align 1 + %.not53 = icmp eq i8 %13, 66 + %or.cond = select i1 %.not52, i1 %.not53, i1 false + br i1 %or.cond, label %29, label %14 + +14: ; preds = %12 + %15 = icmp eq i64 %0, 0 + %16 = select i1 %15, ptr @.str.1, ptr %8 + %17 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.49, i64 noundef %0, ptr noundef nonnull %16) #8 + br label %29 + +18: ; preds = %4 + %19 = select i1 %.not51, i64 1000000, i64 1048576 + %.not = icmp samesign ult i64 %10, %19 + %spec.select = select i1 %.not, ptr @.str.50, ptr @.str.51 + %spec.select54 = select i1 %.not, i64 %9, i64 %19 + %20 = mul nuw nsw i64 %spec.select54, %9 + %.not50 = icmp samesign ult i64 %10, %20 + %.144 = select i1 %.not50, ptr %spec.select, ptr @.str.52 + %.1 = select i1 %.not50, i64 %spec.select54, i64 %20 %.lhs.trunc = trunc nuw nsw i64 %.1 to i32 - %22 = udiv i32 %.lhs.trunc, 10 - %.zext = zext nneg i32 %22 to i64 - %23 = sdiv i64 %0, %.zext - %24 = sdiv i64 %23, 10 - %25 = srem i64 %23, 10 + %21 = udiv i32 %.lhs.trunc, 10 + %.zext = zext nneg i32 %21 to i64 + %22 = sdiv i64 %0, %.zext + %23 = sdiv i64 %22, 10 + %24 = srem i64 %22, 10 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %26 = select i1 %9, ptr @.str.1, ptr @.str.54 - %27 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %6, i64 noundef 8, ptr noundef nonnull @.str.53, ptr noundef nonnull %.144, ptr noundef nonnull %26, ptr noundef nonnull %8) #8 - %28 = call i64 @llvm.abs.i64(i64 %25, i1 true) - %29 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.55, i64 noundef %24, i64 noundef %28, ptr noundef nonnull %6) #8 + %25 = select i1 %.not51, ptr @.str.1, ptr @.str.54 + %26 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %6, i64 noundef 8, ptr noundef nonnull @.str.53, ptr noundef nonnull %.144, ptr noundef nonnull %25, ptr noundef nonnull %8) #8 + %27 = call i64 @llvm.abs.i64(i64 %24, i1 true) + %28 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %5, i64 noundef 32, ptr noundef nonnull @.str.55, i64 noundef %23, i64 noundef %27, ptr noundef nonnull %6) #8 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %30 + br label %29 -30: ; preds = %13, %15, %19 - %31 = icmp eq ptr %3, null - %32 = select i1 %31, ptr @.str.46, ptr %3 - call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef nonnull %5) #8 +29: ; preds = %12, %14, %18 + %30 = icmp eq ptr %3, null + %31 = select i1 %30, ptr @.str.46, ptr %3 + call void (ptr, ptr, ptr, ...) @_mi_fprintf(ptr noundef nonnull @mi_buffered_out, ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef nonnull %5) #8 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll b/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll index 77b423cad43..3b08c3e079e 100644 --- a/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll +++ b/bench/mini-lsm-rs/optimized/2pljfrpd43hxhxjr.ll @@ -67,39 +67,39 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h01a92cccbd667f %11 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr98drop_in_place$LT$alloc..raw_vec..RawVec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$17ha4e28234531e7ca0E.llvm.8684371289217427975"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #18 - to label %21 unwind label %19 + to label %21 unwind label %18 "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i": ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !20 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h268d8b514e1ed877E.llvm.8684371289217427975"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5) %12 = getelementptr inbounds nuw i8, ptr %2, i64 8 %13 = load i64, ptr %12, align 8, !range !25, !noalias !20, !noundef !4 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit", label %15 - -15: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i" - %16 = load ptr, ptr %2, align 8, !noalias !20, !nonnull !4, !noundef !4 - %17 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %18 = load i64, ptr %17, align 8, !noalias !20, !noundef !4 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %8, ptr noundef nonnull %16, i64 noundef %13, i64 noundef %18) + %.not.i.i.i.i.i = icmp eq i64 %13, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit", label %14 + +14: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i" + %15 = load ptr, ptr %2, align 8, !noalias !20, !nonnull !4, !noundef !4 + %16 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %17 = load i64, ptr %16, align 8, !noalias !20, !noundef !4 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %8, ptr noundef nonnull %15, i64 noundef %13, i64 noundef %17) br label %"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit" -19: ; preds = %10 - %20 = landingpad { ptr, i32 } +18: ; preds = %10 + %19 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #19 unreachable -21: ; preds = %10 +20: ; preds = %10 resume { ptr, i32 } %11 -"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i", %15 +"_ZN4core3ptr156drop_in_place$LT$lock_api..mutex..Mutex$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$mini_lsm_starter..lsm_storage..CompactionFilter$GT$$GT$$GT$17h80719a4d6080ace0E.exit": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdf6cd7433f468da1E.llvm.8684371289217427975.exit.i.i.i", %14 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !20 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %4, ptr %3, align 8 - %23 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %22, ptr %23, align 8 + %22 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %21, ptr %22, align 8 call void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfcf0848e179ba379E.llvm.8684371289217427975"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void @@ -157,24 +157,24 @@ define hidden void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h072eaf7a409c9c call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hea2b1b7a9ac33d43E.llvm.8684371289217427975"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5) %6 = getelementptr inbounds nuw i8, ptr %2, i64 8 %7 = load i64, ptr %6, align 8, !range !25, !noalias !43, !noundef !4 - %8 = icmp eq i64 %7, 0 - br i1 %8, label %"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit", label %9 + %.not.i.i.i.i.i = icmp eq i64 %7, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit", label %8 -9: ; preds = %1 - %10 = load ptr, ptr %2, align 8, !noalias !43, !nonnull !4, !noundef !4 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %12 = load i64, ptr %11, align 8, !noalias !43, !noundef !4 - %13 = getelementptr inbounds nuw i8, ptr %4, i64 40 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %13, ptr noundef nonnull %10, i64 noundef %7, i64 noundef %12) +8: ; preds = %1 + %9 = load ptr, ptr %2, align 8, !noalias !43, !nonnull !4, !noundef !4 + %10 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %11 = load i64, ptr %10, align 8, !noalias !43, !noundef !4 + %12 = getelementptr inbounds nuw i8, ptr %4, i64 40 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8684371289217427975"(ptr noalias noundef nonnull readonly align 1 %12, ptr noundef nonnull %9, i64 noundef %7, i64 noundef %11) br label %"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit" -"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit": ; preds = %1, %9 +"_ZN4core3ptr77drop_in_place$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17h7d0e1c0f3134887dE.exit": ; preds = %1, %8 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !43 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %4, ptr %3, align 8 - %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %14, ptr %15, align 8 + %14 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %13, ptr %14, align 8 call void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5b5f3f4f5e3eacdcE.llvm.8684371289217427975"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void diff --git a/bench/ms-gsl/optimized/strict_notnull_tests.ll b/bench/ms-gsl/optimized/strict_notnull_tests.ll index c751c1d94d4..d0f56ea16b7 100644 --- a/bench/ms-gsl/optimized/strict_notnull_tests.ll +++ b/bench/ms-gsl/optimized/strict_notnull_tests.ll @@ -956,7 +956,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 233: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit200 %234 = load ptr, ptr %7, align 8 %.not108 = icmp eq ptr %234, null - br i1 %.not108, label %.thread411, label %235 + br i1 %.not108, label %.thread413, label %235 235: ; preds = %233 %236 = load ptr, ptr %234, align 8 @@ -1146,7 +1146,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %327 = getelementptr inbounds nuw i8, ptr %326, i64 8 %328 = load ptr, ptr %327, align 8 call void %328(ptr noundef nonnull align 8 dereferenceable(8) %234) #24 - br label %.thread411 + br label %.thread413 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit214: ; preds = %256 %329 = load ptr, ptr %234, align 8 @@ -1163,7 +1163,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %334(ptr noundef nonnull align 8 dereferenceable(8) %234) #24 br label %336 -.thread411: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit214.thread, %233 +.thread413: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit214.thread, %233 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN7testing15AssertionResultD2Ev.exit309 @@ -1247,7 +1247,7 @@ _ZN7testing7MessageD2Ev.exit223: ; preds = %_ZNKSt14default_del call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %_ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232 -_ZN7testing15AssertionResultD2Ev.exit309: ; preds = %.thread411, %_ZN7testing7MessageD2Ev.exit220 +_ZN7testing15AssertionResultD2Ev.exit309: ; preds = %.thread413, %_ZN7testing7MessageD2Ev.exit220 %358 = call noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() br i1 %358, label %359, label %485 @@ -1304,7 +1304,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 381: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit313 %382 = load ptr, ptr %12, align 8 %.not138 = icmp eq ptr %382, null - br i1 %.not138, label %.thread415, label %383 + br i1 %.not138, label %.thread418, label %383 383: ; preds = %381 %384 = load ptr, ptr %382, align 8 @@ -1494,7 +1494,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %475 = getelementptr inbounds nuw i8, ptr %474, i64 8 %476 = load ptr, ptr %475, align 8 call void %476(ptr noundef nonnull align 8 dereferenceable(8) %382) #24 - br label %.thread415 + br label %.thread418 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit322: ; preds = %404 %477 = load ptr, ptr %382, align 8 @@ -1511,7 +1511,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %482(ptr noundef nonnull align 8 dereferenceable(8) %382) #24 br label %484 -.thread415: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit322.thread, %381 +.thread418: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit322.thread, %381 call void @llvm.lifetime.end.p0(ptr nonnull %12) br label %503 @@ -1586,7 +1586,7 @@ _ZN7testing7MessageD2Ev.exit331: ; preds = %498, %_ZNKSt14defau call void @llvm.lifetime.end.p0(ptr nonnull %15) br label %_ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232 -503: ; preds = %.thread415, %_ZN7testing7MessageD2Ev.exit328 +503: ; preds = %.thread418, %_ZN7testing7MessageD2Ev.exit328 %504 = call noundef zeroext i1 @_ZN7testing8internal10AlwaysTrueEv() br i1 %504, label %505, label %629 @@ -1643,7 +1643,7 @@ _ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIc 527: ; preds = %_ZN7testing8internal11MatcherBaseIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit335 %528 = load ptr, ptr %17, align 8 %.not150 = icmp eq ptr %528, null - br i1 %.not150, label %.thread419, label %529 + br i1 %.not150, label %.thread423, label %529 529: ; preds = %527 %530 = load ptr, ptr %528, align 8 @@ -1833,7 +1833,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit %619 = getelementptr inbounds nuw i8, ptr %618, i64 8 %620 = load ptr, ptr %619, align 8 call void %620(ptr noundef nonnull align 8 dereferenceable(8) %528) #24 - br label %.thread419 + br label %.thread423 _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit345: ; preds = %550 %621 = load ptr, ptr %528, align 8 @@ -1850,7 +1850,7 @@ _ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit call void %626(ptr noundef nonnull align 8 dereferenceable(8) %528) #24 br label %628 -.thread419: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit345.thread, %527 +.thread423: ; preds = %_ZNSt10unique_ptrIN7testing8internal9DeathTestESt14default_deleteIS2_EED2Ev.exit345.thread, %527 call void @llvm.lifetime.end.p0(ptr nonnull %17) br label %647 @@ -1925,7 +1925,7 @@ _ZN7testing7MessageD2Ev.exit354: ; preds = %642, %_ZNKSt14defau call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %_ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232 -647: ; preds = %.thread419, %_ZN7testing7MessageD2Ev.exit351 +647: ; preds = %.thread423, %_ZN7testing7MessageD2Ev.exit351 ret void _ZN3gsl8not_nullISt10unique_ptrIiSt14default_deleteIiEEED2Ev.exit232: ; preds = %336, %_ZN7testing7MessageD2Ev.exit223, %_ZN7testing7MessageD2Ev.exit354, %628, %_ZN7testing7MessageD2Ev.exit331, %484, %228 diff --git a/bench/nanobind/optimized/nb_static_property.ll b/bench/nanobind/optimized/nb_static_property.ll index 9f564691861..9b3de19971c 100644 --- a/bench/nanobind/optimized/nb_static_property.ll +++ b/bench/nanobind/optimized/nb_static_property.ll @@ -134,11 +134,11 @@ define internal noundef i32 @_ZN8nanobind6detailL28nb_static_property_descr_setE %5 = getelementptr i8, ptr %.val, i64 168 %.val.val = load i64, ptr %5, align 8 %6 = and i64 %.val.val, 2147483648 - %7 = icmp eq i64 %6, 0 - %spec.select = select i1 %7, ptr %.val, ptr %1 - %8 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @PyProperty_Type, i64 280), align 8 - %9 = tail call noundef i32 %8(ptr noundef %0, ptr noundef nonnull %spec.select, ptr noundef %2) - ret i32 %9 + %.not6 = icmp eq i64 %6, 0 + %spec.select = select i1 %.not6, ptr %.val, ptr %1 + %7 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @PyProperty_Type, i64 280), align 8 + %8 = tail call noundef i32 %8(ptr noundef %0, ptr noundef nonnull %spec.select, ptr noundef %2) + ret i32 %8 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/nuttx/optimized/lib_etheraton.ll b/bench/nuttx/optimized/lib_etheraton.ll index 5265ae80b43..c3daa09a01e 100644 --- a/bench/nuttx/optimized/lib_etheraton.ll +++ b/bench/nuttx/optimized/lib_etheraton.ll @@ -11,9 +11,9 @@ target triple = "x86_64-pc-linux-gnu" define ptr @ether_aton_r(ptr noundef readonly captures(none) %0, ptr noundef writeonly captures(ret: address, provenance) %1) local_unnamed_addr #0 { br label %3 -3: ; preds = %36, %2 - %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %36 ] - %.01739 = phi ptr [ %0, %2 ], [ %37, %36 ] +3: ; preds = %40, %2 + %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %40 ] + %.01739 = phi ptr [ %0, %2 ], [ %41, %40 ] %4 = load i8, ptr %.01739, align 1 %5 = sext i8 %4 to i32 %6 = add nsw i32 %5, -48 @@ -37,56 +37,56 @@ define ptr @ether_aton_r(ptr noundef readonly captures(none) %0, ptr noundef wri xdigit.exit.thread: ; preds = %13, %3, %11 %.0.i27 = phi i32 [ %6, %3 ], [ %12, %11 ], [ %14, %13 ] - %16 = getelementptr inbounds nuw i8, ptr %.01739, i64 1 - %17 = load i8, ptr %16, align 1 - %18 = sext i8 %17 to i32 - %19 = add nsw i32 %18, -48 - %20 = icmp ult i32 %19, 10 - br i1 %20, label %xdigit.exit25.thread, label %21 - -21: ; preds = %xdigit.exit.thread - %22 = add nsw i32 %18, -97 - %23 = icmp ult i32 %22, 6 - br i1 %23, label %24, label %26 - -24: ; preds = %21 - %25 = add nsw i32 %18, -87 + %18 = getelementptr inbounds nuw i8, ptr %.01739, i64 1 + %19 = load i8, ptr %18, align 1 + %20 = sext i8 %19 to i32 + %21 = add nsw i32 %20, -48 + %22 = icmp ult i32 %21, 10 + br i1 %22, label %xdigit.exit25.thread, label %23 + +23: ; preds = %xdigit.exit.thread + %24 = add nsw i32 %20, -97 + %25 = icmp ult i32 %24, 6 + br i1 %25, label %26, label %28 + +26: ; preds = %23 + %27 = add nsw i32 %20, -87 br label %xdigit.exit25.thread -26: ; preds = %21 - %27 = add nsw i32 %18, -55 - %28 = add nsw i32 %18, -71 +28: ; preds = %23 + %29 = add nsw i32 %20, -55 + %32 = add nsw i32 %20, -71 %or.cond36 = icmp ult i32 %28, -6 br i1 %or.cond36, label %xdigit.exit.thread28, label %xdigit.exit25.thread -xdigit.exit25.thread: ; preds = %xdigit.exit.thread, %24, %26 - %.0.i2432 = phi i32 [ %27, %26 ], [ %19, %xdigit.exit.thread ], [ %25, %24 ] - %29 = getelementptr inbounds nuw i8, ptr %.01739, i64 2 - %30 = shl nsw i32 %.0.i27, 4 - %31 = add nuw nsw i32 %.0.i2432, %30 - %32 = trunc i32 %31 to i8 - %33 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv - store i8 %32, ptr %33, align 1 +xdigit.exit25.thread: ; preds = %xdigit.exit.thread, %26, %28 + %.0.i2432 = phi i32 [ %27, %28 ], [ %21, %xdigit.exit.thread ], [ %27, %26 ] + %33 = getelementptr inbounds nuw i8, ptr %.01739, i64 2 + %34 = shl nsw i32 %.0.i27, 4 + %35 = add nuw nsw i32 %.0.i2432, %34 + %36 = trunc i32 %35 to i8 + %37 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv + store i8 %36, ptr %37, align 1 %.not21 = icmp eq i64 %indvars.iv, 5 - %34 = load i8, ptr %29, align 1 - br i1 %.not21, label %38, label %35 + %38 = load i8, ptr %33, align 1 + br i1 %.not21, label %42, label %39 -35: ; preds = %xdigit.exit25.thread - %.not22 = icmp eq i8 %34, 58 - br i1 %.not22, label %36, label %xdigit.exit.thread28 +39: ; preds = %xdigit.exit25.thread + %.not22 = icmp eq i8 %38, 58 + br i1 %.not22, label %40, label %xdigit.exit.thread28 -36: ; preds = %35 - %37 = getelementptr inbounds nuw i8, ptr %.01739, i64 3 +40: ; preds = %39 + %41 = getelementptr inbounds nuw i8, ptr %.01739, i64 3 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 br label %3 -38: ; preds = %xdigit.exit25.thread - %.not = icmp eq i8 %34, 0 +42: ; preds = %xdigit.exit25.thread + %.not = icmp eq i8 %38, 0 %. = select i1 %.not, ptr %1, ptr null br label %xdigit.exit.thread28 -xdigit.exit.thread28: ; preds = %26, %13, %35, %38 - %.0 = phi ptr [ %., %38 ], [ null, %35 ], [ null, %13 ], [ null, %26 ] +xdigit.exit.thread28: ; preds = %28, %13, %39, %42 + %.0 = phi ptr [ %., %42 ], [ null, %35 ], [ null, %13 ], [ null, %28 ] ret ptr %.0 } @@ -95,9 +95,9 @@ define ptr @ether_aton(ptr noundef readonly captures(none) %0) local_unnamed_add %scevgep = getelementptr i8, ptr %0, i64 17 br label %2 -2: ; preds = %35, %1 +2: ; preds = %39, %1 %indvars.iv.i = phi i64 [ 0, %1 ], [ %indvars.iv.next.i, %35 ] - %.01739.i = phi ptr [ %0, %1 ], [ %36, %35 ] + %.01739.i = phi ptr [ %0, %1 ], [ %40, %35 ] %3 = load i8, ptr %.01739.i, align 1 %4 = sext i8 %3 to i32 %5 = add nsw i32 %4, -48 @@ -121,57 +121,57 @@ define ptr @ether_aton(ptr noundef readonly captures(none) %0) local_unnamed_add xdigit.exit.thread.i: ; preds = %12, %10, %2 %.0.i27.i = phi i32 [ %5, %2 ], [ %11, %10 ], [ %13, %12 ] - %15 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 1 - %16 = load i8, ptr %15, align 1 - %17 = sext i8 %16 to i32 - %18 = add nsw i32 %17, -48 - %19 = icmp ult i32 %18, 10 - br i1 %19, label %xdigit.exit25.thread.i, label %20 - -20: ; preds = %xdigit.exit.thread.i - %21 = add nsw i32 %17, -97 - %22 = icmp ult i32 %21, 6 - br i1 %22, label %23, label %25 - -23: ; preds = %20 - %24 = add nsw i32 %17, -87 + %17 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 1 + %18 = load i8, ptr %17, align 1 + %19 = sext i8 %18 to i32 + %20 = add nsw i32 %19, -48 + %21 = icmp ult i32 %20, 10 + br i1 %21, label %xdigit.exit25.thread.i, label %22 + +22: ; preds = %xdigit.exit.thread.i + %23 = add nsw i32 %19, -97 + %24 = icmp ult i32 %23, 6 + br i1 %24, label %25, label %27 + +25: ; preds = %22 + %26 = add nsw i32 %19, -87 br label %xdigit.exit25.thread.i -25: ; preds = %20 - %26 = add nsw i32 %17, -55 - %27 = add nsw i32 %17, -71 - %or.cond36.i = icmp ult i32 %27, -6 +27: ; preds = %22 + %28 = add nsw i32 %19, -55 + %29 = add nsw i32 %17, -71 + %or.cond36.i = icmp ult i32 %29, -6 br i1 %or.cond36.i, label %ether_aton_r.exit, label %xdigit.exit25.thread.i -xdigit.exit25.thread.i: ; preds = %25, %23, %xdigit.exit.thread.i - %.0.i2432.i = phi i32 [ %26, %25 ], [ %18, %xdigit.exit.thread.i ], [ %24, %23 ] - %28 = shl nsw i32 %.0.i27.i, 4 - %29 = add nuw nsw i32 %.0.i2432.i, %28 - %30 = trunc i32 %29 to i8 - %31 = getelementptr inbounds nuw i8, ptr @ether_aton.addr, i64 %indvars.iv.i - store i8 %30, ptr %31, align 1 +xdigit.exit25.thread.i: ; preds = %27, %25, %xdigit.exit.thread.i + %.0.i2432.i = phi i32 [ %26, %27 ], [ %20, %xdigit.exit.thread.i ], [ %26, %25 ] + %32 = shl nsw i32 %.0.i27.i, 4 + %33 = add nuw nsw i32 %.0.i2432.i, %32 + %34 = trunc i32 %33 to i8 + %35 = getelementptr inbounds nuw i8, ptr @ether_aton.addr, i64 %indvars.iv.i + store i8 %34, ptr %35, align 1 %.not21.i = icmp eq i64 %indvars.iv.i, 5 - br i1 %.not21.i, label %37, label %32 + br i1 %.not21.i, label %41, label %36 -32: ; preds = %xdigit.exit25.thread.i - %33 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 2 - %34 = load i8, ptr %33, align 1 - %.not22.i = icmp eq i8 %34, 58 - br i1 %.not22.i, label %35, label %ether_aton_r.exit +36: ; preds = %xdigit.exit25.thread.i + %37 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 2 + %38 = load i8, ptr %37, align 1 + %.not22.i = icmp eq i8 %38, 58 + br i1 %.not22.i, label %39, label %ether_aton_r.exit -35: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 3 +39: ; preds = %36 + %40 = getelementptr inbounds nuw i8, ptr %.01739.i, i64 3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 br label %2 -37: ; preds = %xdigit.exit25.thread.i - %38 = load i8, ptr %scevgep, align 1 - %.not.i = icmp eq i8 %38, 0 +41: ; preds = %xdigit.exit25.thread.i + %42 = load i8, ptr %scevgep, align 1 + %.not.i = icmp eq i8 %42, 0 %..i = select i1 %.not.i, ptr @ether_aton.addr, ptr null br label %ether_aton_r.exit -ether_aton_r.exit: ; preds = %12, %25, %32, %37 - %.0.i = phi ptr [ %..i, %37 ], [ null, %32 ], [ null, %25 ], [ null, %12 ] +ether_aton_r.exit: ; preds = %12, %27, %36, %41 + %.0.i = phi ptr [ %..i, %41 ], [ null, %36 ], [ null, %27 ], [ null, %12 ] ret ptr %.0.i } diff --git a/bench/opencv/optimized/rmat.ll b/bench/opencv/optimized/rmat.ll index 52fd361701c..51e54db6208 100644 --- a/bench/opencv/optimized/rmat.ll +++ b/bench/opencv/optimized/rmat.ll @@ -350,10 +350,10 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i: ; preds = %15 br label %.critedge .critedge: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i, %8 - %.sroa.038.051 = phi ptr [ %20, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %13, %8 ] - %.sroa.12.049 = phi ptr [ %21, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %14, %8 ] - %22 = ptrtoint ptr %.sroa.12.049 to i64 - %23 = ptrtoint ptr %.sroa.038.051 to i64 + %.sroa.039.052 = phi ptr [ %20, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %13, %8 ] + %.sroa.12.050 = phi ptr [ %21, %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i ], [ %14, %8 ] + %22 = ptrtoint ptr %.sroa.12.050 to i64 + %23 = ptrtoint ptr %.sroa.039.052 to i64 %24 = sub i64 %22, %23 %25 = ashr exact i64 %24, 2 %26 = icmp ugt i64 %25, 1152921504606846975 @@ -363,79 +363,79 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i: ; preds = %15 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.4) #16 to label %.noexc32 unwind label %_ZNSt6vectorIiSaIiEED2Ev.exit -.noexc32: ; preds = %27 +.noexc33: ; preds = %27 unreachable _ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %.critedge tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) - %28 = icmp ne ptr %.sroa.12.049, %.sroa.038.051 - tail call void @llvm.assume(i1 %28) - %29 = shl nuw nsw i64 %24, 1 - %30 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %29) #19 + %.not.i.i.i.i31 = icmp ne ptr %.sroa.12.050, %.sroa.039.052 + tail call void @llvm.assume(i1 %.not.i.i.i.i31) + %28 = shl nuw nsw i64 %24, 1 + %29 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %28) #19 to label %.noexc33 unwind label %_ZNSt6vectorIiSaIiEED2Ev.exit -.noexc33: ; preds = %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i - store ptr %30, ptr %0, align 8, !tbaa !33 - %31 = getelementptr inbounds nuw i64, ptr %30, i64 %25 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %31, ptr %32, align 8, !tbaa !45 - %33 = getelementptr inbounds nuw i8, ptr %30, i64 %29 - %34 = shl i64 %22, 1 - %35 = add i64 %34, -8 - %36 = shl i64 %23, 1 - %37 = sub i64 %35, %36 - %38 = and i64 %37, -8 - %39 = add i64 %38, 8 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %30, i8 0, i64 %39, i1 false), !tbaa !34 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %33, ptr %40, align 8, !tbaa !43 +.noexc34: ; preds = %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i + store ptr %29, ptr %0, align 8, !tbaa !33 + %30 = getelementptr inbounds nuw i64, ptr %29, i64 %25 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %30, ptr %31, align 8, !tbaa !45 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 %28 + %33 = shl i64 %22, 1 + %34 = add i64 %33, -8 + %35 = shl i64 %23, 1 + %36 = sub i64 %34, %35 + %37 = and i64 %36, -8 + %38 = add i64 %37, 8 + tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %29, i8 0, i64 %38, i1 false), !tbaa !34 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %32, ptr %39, align 8, !tbaa !43 %.val = load i32, ptr %1, align 8, !tbaa !49 - %41 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %.val29 = load i32, ptr %41, align 4, !tbaa !50 - %42 = icmp eq i32 %.val29, -1 - %43 = add i32 %.val29, 511 - %44 = and i32 %43, 511 - %45 = add nuw nsw i32 %44, 1 - %46 = select i1 %42, i32 1, i32 %45 - %47 = shl i32 %.val, 2 - %48 = and i32 %47, 28 - %49 = lshr i32 675553809, %48 - %50 = and i32 %49, 15 - %51 = mul nuw nsw i32 %46, %50 - %52 = zext nneg i32 %51 to i64 - %53 = getelementptr inbounds i8, ptr %33, i64 -8 - store i64 %52, ptr %53, align 8, !tbaa !34 - %54 = trunc i64 %25 to i32 - %55 = icmp sgt i32 %54, 1 - br i1 %55, label %.lr.ph, label %_ZNSt6vectorIiSaIiEED2Ev.exit35 - -.lr.ph: ; preds = %.noexc33 - %56 = add nuw nsw i64 %25, 4294967294 - %57 = and i64 %56, 4294967295 + %40 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %.val29 = load i32, ptr %40, align 4, !tbaa !50 + %41 = icmp eq i32 %.val29, -1 + %42 = add i32 %.val29, 511 + %43 = and i32 %42, 511 + %44 = add nuw nsw i32 %43, 1 + %45 = select i1 %41, i32 1, i32 %44 + %46 = shl i32 %.val, 2 + %47 = and i32 %46, 28 + %48 = lshr i32 675553809, %47 + %49 = and i32 %48, 15 + %50 = mul nuw nsw i32 %45, %49 + %51 = zext nneg i32 %50 to i64 + %52 = getelementptr inbounds i8, ptr %32, i64 -8 + store i64 %51, ptr %52, align 8, !tbaa !34 + %53 = trunc i64 %25 to i32 + %54 = icmp sgt i32 %53, 1 + br i1 %54, label %.lr.ph, label %_ZNSt6vectorIiSaIiEED2Ev.exit36 + +.lr.ph: ; preds = %.noexc34 + %55 = add nuw nsw i64 %25, 4294967294 + %56 = and i64 %55, 4294967295 br label %59 _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i, %27 - %58 = landingpad { ptr, i32 } + %59 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %.sroa.038.051) #17 - resume { ptr, i32 } %58 + tail call void @_ZdlPv(ptr noundef nonnull %.sroa.039.052) #17 + resume { ptr, i32 } %59 -59: ; preds = %.lr.ph, %59 - %indvars.iv = phi i64 [ %57, %.lr.ph ], [ %indvars.iv.next, %59 ] +60: ; preds = %.lr.ph, %60 + %store_forwarded = phi i64 [ %57, %.lr.ph ], [ %indvars.iv.next, %59 ] %60 = getelementptr inbounds nuw i64, ptr %30, i64 %indvars.iv %61 = getelementptr inbounds nuw i8, ptr %60, i64 8 %62 = load i64, ptr %61, align 8, !tbaa !34 - %63 = getelementptr inbounds nuw i32, ptr %.sroa.038.051, i64 %indvars.iv + %63 = getelementptr inbounds nuw i32, ptr %.sroa.039.052, i64 %indvars.iv %64 = load i32, ptr %63, align 4, !tbaa !51 %65 = sext i32 %64 to i64 %66 = mul i64 %62, %65 store i64 %66, ptr %60, align 8, !tbaa !34 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %67 = icmp ult i64 %indvars.iv.next, 2147483646 - br i1 %67, label %59, label %_ZNSt6vectorIiSaIiEED2Ev.exit35, !llvm.loop !52 + %.not = icmp ult i64 %indvars.iv.next, 2147483646 + br i1 %.not, label %59, label %_ZNSt6vectorIiSaIiEED2Ev.exit36, !llvm.loop !52 -_ZNSt6vectorIiSaIiEED2Ev.exit35: ; preds = %59, %.noexc33 - tail call void @_ZdlPv(ptr noundef nonnull %.sroa.038.051) #17 +_ZNSt6vectorIiSaIiEED2Ev.exit36: ; preds = %60, %.noexc34 + tail call void @_ZdlPv(ptr noundef nonnull %.sroa.039.052) #17 ret void } diff --git a/bench/openjdk/optimized/NetworkInterface.ll b/bench/openjdk/optimized/NetworkInterface.ll index 903a48a2d0d..45d500f363f 100644 --- a/bench/openjdk/optimized/NetworkInterface.ll +++ b/bench/openjdk/optimized/NetworkInterface.ll @@ -1073,7 +1073,7 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range 9: ; preds = %2 call void @JNU_ThrowByNameWithMessageAndLastError(ptr noundef %0, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.31) #15 - br label %61 + br label %60 10: ; preds = %2 %11 = load i32, ptr %3, align 8 @@ -1084,7 +1084,7 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range 15: ; preds = %10 call void @JNU_ThrowOutOfMemoryError(ptr noundef %0, ptr noundef nonnull @.str.32) #15 - br label %61 + br label %60 16: ; preds = %10 store ptr %13, ptr %6, align 8 @@ -1095,7 +1095,7 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range 19: ; preds = %16 call void @JNU_ThrowByNameWithMessageAndLastError(ptr noundef %0, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.31) #15 call void @free(ptr noundef nonnull %13) #15 - br label %61 + br label %60 20: ; preds = %16 %21 = load i32, ptr %3, align 8 @@ -1106,94 +1106,94 @@ define internal fastcc ptr @enumIPv4Interfaces(ptr noundef %0, i32 noundef range %22 = load ptr, ptr %6, align 8 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %53 - %23 = phi i32 [ %54, %53 ], [ %21, %.lr.ph.preheader ] - %.0405 = phi i32 [ %55, %53 ], [ 0, %.lr.ph.preheader ] - %.0413 = phi ptr [ %56, %53 ], [ %22, %.lr.ph.preheader ] +.lr.ph: ; preds = %.lr.ph.preheader, %52 + %23 = phi i32 [ %53, %53 ], [ %21, %.lr.ph.preheader ] + %.0405 = phi i32 [ %54, %53 ], [ 0, %.lr.ph.preheader ] + %.0413 = phi ptr [ %55, %53 ], [ %22, %.lr.ph.preheader ] %.0422 = phi ptr [ %.1, %53 ], [ null, %.lr.ph.preheader ] %24 = getelementptr inbounds nuw i8, ptr %.0413, i64 16 %25 = load i16, ptr %24, align 8 %.not = icmp eq i16 %25, 2 - br i1 %.not, label %26, label %53 + br i1 %.not, label %26, label %52 26: ; preds = %.lr.ph call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %24, i64 16, i1 false) %27 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35091, ptr noundef nonnull %.0413) #15 %28 = icmp eq i32 %27, 0 - br i1 %28, label %29, label %37 + br i1 %28, label %29, label %36 29: ; preds = %26 %30 = load i16, ptr %24, align 8 %31 = and i16 %30, 2 - %32 = icmp eq i16 %31, 0 - br i1 %32, label %37, label %33 + %.not45 = icmp eq i16 %31, 0 + br i1 %.not45, label %36, label %32 -33: ; preds = %29 +32: ; preds = %29 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 2 dereferenceable(16) %4, i64 16, i1 false) - %34 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35097, ptr noundef nonnull %.0413) #15 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %36, label %37 + %33 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35097, ptr noundef nonnull %.0413) #15 + %34 = icmp eq i32 %33, 0 + br i1 %34, label %35, label %36 -36: ; preds = %33 +35: ; preds = %32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %24, i64 16, i1 false) - br label %37 + br label %36 -37: ; preds = %33, %36, %29, %26 +36: ; preds = %32, %35, %29, %26 %.039 = phi ptr [ %5, %36 ], [ null, %33 ], [ null, %29 ], [ null, %26 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 2 dereferenceable(16) %4, i64 16, i1 false) - %38 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35099, ptr noundef nonnull %.0413) #15 - %39 = icmp eq i32 %38, 0 - br i1 %39, label %40, label %translateIPv4AddressToPrefix.exit - -40: ; preds = %37 - %41 = getelementptr inbounds nuw i8, ptr %.0413, i64 20 - %42 = load i32, ptr %41, align 4 - %43 = call i32 @ntohl(i32 noundef %42) #17 - %.not9.i = icmp eq i32 %43, 0 + %37 = call i32 (i32, i64, ...) @ioctl(i32 noundef %1, i64 noundef 35099, ptr noundef nonnull %.0413) #15 + %38 = icmp eq i32 %37, 0 + br i1 %38, label %39, label %translateIPv4AddressToPrefix.exit + +39: ; preds = %36 + %40 = getelementptr inbounds nuw i8, ptr %.0413, i64 20 + %41 = load i32, ptr %40, align 4 + %42 = call i32 @ntohl(i32 noundef %41) #17 + %.not9.i = icmp eq i32 %42, 0 br i1 %.not9.i, label %translateIPv4AddressToPrefix.exit, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %40 - %44 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %43, i1 true) - %45 = trunc nuw nsw i32 %44 to i16 - %46 = sub nuw nsw i16 32, %45 +.lr.ph.preheader.i: ; preds = %39 + %43 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %42, i1 true) + %44 = trunc nuw nsw i32 %43 to i16 + %45 = sub nuw nsw i16 32, %44 br label %translateIPv4AddressToPrefix.exit -translateIPv4AddressToPrefix.exit: ; preds = %.lr.ph.preheader.i, %40, %37 - %.0 = phi i16 [ 0, %37 ], [ 0, %40 ], [ %46, %.lr.ph.preheader.i ] - %47 = call fastcc ptr @addif(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %.0413, ptr noundef %.0422, ptr noundef %4, ptr noundef %.039, i32 noundef 2, i16 noundef signext %.0) - %48 = load ptr, ptr %0, align 8 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 120 - %50 = load ptr, ptr %49, align 8 - %51 = call ptr %50(ptr noundef nonnull %0) #15 - %.not46 = icmp eq ptr %51, null - br i1 %.not46, label %translateIPv4AddressToPrefix.exit._crit_edge, label %52 +translateIPv4AddressToPrefix.exit: ; preds = %.lr.ph.preheader.i, %39, %36 + %.0 = phi i16 [ 0, %37 ], [ 0, %40 ], [ %45, %.lr.ph.preheader.i ] + %46 = call fastcc ptr @addif(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %.0413, ptr noundef %.0422, ptr noundef %4, ptr noundef %.039, i32 noundef 2, i16 noundef signext %.0) + %47 = load ptr, ptr %0, align 8 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 120 + %49 = load ptr, ptr %48, align 8 + %50 = call ptr %50(ptr noundef nonnull %0) #15 + %.not46 = icmp eq ptr %50, null + br i1 %.not46, label %translateIPv4AddressToPrefix.exit._crit_edge, label %51 translateIPv4AddressToPrefix.exit._crit_edge: ; preds = %translateIPv4AddressToPrefix.exit %.pre = load i32, ptr %3, align 8 - br label %53 + br label %52 -52: ; preds = %translateIPv4AddressToPrefix.exit +51: ; preds = %translateIPv4AddressToPrefix.exit call void @free(ptr noundef %13) #15 - call fastcc void @freeif(ptr noundef %47) - br label %61 - -53: ; preds = %translateIPv4AddressToPrefix.exit._crit_edge, %.lr.ph - %54 = phi i32 [ %23, %.lr.ph ], [ %.pre, %translateIPv4AddressToPrefix.exit._crit_edge ] - %.1 = phi ptr [ %.0422, %.lr.ph ], [ %47, %translateIPv4AddressToPrefix.exit._crit_edge ] - %55 = add i32 %.0405, 1 - %56 = getelementptr inbounds nuw i8, ptr %.0413, i64 40 - %57 = zext i32 %55 to i64 - %58 = sext i32 %54 to i64 - %59 = udiv i64 %58, 40 - %60 = icmp samesign ugt i64 %59, %57 - br i1 %60, label %.lr.ph, label %._crit_edge, !llvm.loop !18 - -._crit_edge: ; preds = %53, %20 + call fastcc void @freeif(ptr noundef %46) + br label %60 + +52: ; preds = %translateIPv4AddressToPrefix.exit._crit_edge, %.lr.ph + %53 = phi i32 [ %23, %.lr.ph ], [ %.pre, %translateIPv4AddressToPrefix.exit._crit_edge ] + %.1 = phi ptr [ %.0422, %.lr.ph ], [ %46, %translateIPv4AddressToPrefix.exit._crit_edge ] + %54 = add i32 %.0405, 1 + %55 = getelementptr inbounds nuw i8, ptr %.0413, i64 40 + %56 = zext i32 %54 to i64 + %57 = sext i32 %53 to i64 + %58 = udiv i64 %57, 40 + %59 = icmp samesign ugt i64 %58, %56 + br i1 %59, label %.lr.ph, label %._crit_edge, !llvm.loop !18 + +._crit_edge: ; preds = %52, %20 %.042.lcssa = phi ptr [ null, %20 ], [ %.1, %53 ] call void @free(ptr noundef %13) #15 - br label %61 + br label %60 -61: ; preds = %._crit_edge, %52, %19, %15, %9 +60: ; preds = %._crit_edge, %51, %19, %15, %9 %.043 = phi ptr [ null, %9 ], [ null, %15 ], [ null, %19 ], [ null, %52 ], [ %.042.lcssa, %._crit_edge ] ret ptr %.043 } @@ -1295,8 +1295,8 @@ define internal fastcc ptr @find_bound_interface(ptr noundef %0, ptr noundef rea 41: ; preds = %42 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not = icmp eq i64 %indvars.iv.next, 16 - br i1 %.not, label %.thread, label %42, !llvm.loop !19 + %exitcond.not = icmp eq i64 %indvars.iv.next, 16 + br i1 %exitcond.not, label %.thread, label %42, !llvm.loop !19 42: ; preds = %.preheader, %41 %indvars.iv = phi i64 [ %indvars.iv.next, %41 ], [ 0, %.preheader ] @@ -1728,8 +1728,8 @@ openSocketWithFallback.exit: ; preds = %7, %10 23: ; preds = %24 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not7 = icmp eq i64 %indvars.iv.next, 6 - br i1 %.not7, label %.loopexit, label %24, !llvm.loop !23 + %exitcond.not = icmp eq i64 %indvars.iv.next, 6 + br i1 %exitcond.not, label %.loopexit, label %24, !llvm.loop !23 24: ; preds = %20, %23 %indvars.iv = phi i64 [ 0, %20 ], [ %indvars.iv.next, %23 ] diff --git a/bench/openjdk/optimized/ProcessHandleImpl_linux.ll b/bench/openjdk/optimized/ProcessHandleImpl_linux.ll index 9be3b0cfd31..1cfced150a7 100644 --- a/bench/openjdk/optimized/ProcessHandleImpl_linux.ll +++ b/bench/openjdk/optimized/ProcessHandleImpl_linux.ll @@ -91,54 +91,54 @@ define hidden i32 @os_getParentPidAndTimings(ptr noundef readnone captures(none) %11 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 32, ptr noundef nonnull @.str, i32 noundef %1) #13 %12 = call noalias ptr @fopen64(ptr noundef nonnull %6, ptr noundef nonnull @.str.1) %13 = icmp eq ptr %12, null - br i1 %13, label %44, label %14 + br i1 %13, label %43, label %14 14: ; preds = %4 %15 = call i64 @fread(ptr noundef nonnull %5, i64 noundef 1, i64 noundef 2047, ptr noundef nonnull %12) %16 = tail call i32 @fclose(ptr noundef nonnull %12) %17 = and i64 %15, 2147483648 - %18 = icmp eq i64 %17, 0 - br i1 %18, label %19, label %44 - -19: ; preds = %14 - %20 = and i64 %15, 2147483647 - %21 = getelementptr inbounds nuw i8, ptr %5, i64 %20 - store i8 0, ptr %21, align 1 - %22 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 40) #14 - %23 = icmp eq ptr %22, null - br i1 %23, label %44, label %24 - -24: ; preds = %19 - %25 = getelementptr inbounds nuw i8, ptr %22, i64 1 - %26 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %25, i32 noundef 41) #14 - %27 = icmp eq ptr %26, null - br i1 %27, label %44, label %28 - -28: ; preds = %24 - %29 = getelementptr inbounds nuw i8, ptr %26, i64 1 - %30 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %29, ptr noundef nonnull @.str.2, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10) #13 - %.not18 = icmp eq i32 %30, 4 - br i1 %.not18, label %31, label %44 - -31: ; preds = %28 - %32 = load i64, ptr %8, align 8 - %33 = load i64, ptr %9, align 8 - %34 = add i64 %33, %32 - %35 = load i64, ptr @clock_ticks_per_second, align 8 - %36 = sdiv i64 1000000000, %35 - %37 = mul i64 %36, %34 - store i64 %37, ptr %2, align 8 - %38 = load i64, ptr @bootTime_ms, align 8 - %39 = load i64, ptr %10, align 8 - %40 = mul i64 %39, 1000 - %41 = udiv i64 %40, %35 - %42 = add i64 %41, %38 - store i64 %42, ptr %3, align 8 - %43 = load i32, ptr %7, align 4 - br label %44 - -44: ; preds = %28, %24, %19, %14, %4, %31 - %.0 = phi i32 [ %43, %31 ], [ -1, %4 ], [ -1, %14 ], [ -1, %19 ], [ -1, %24 ], [ 0, %28 ] + %.not = icmp eq i64 %17, 0 + br i1 %.not, label %18, label %43 + +18: ; preds = %14 + %19 = and i64 %15, 2147483647 + %20 = getelementptr inbounds nuw i8, ptr %5, i64 %19 + store i8 0, ptr %20, align 1 + %21 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 40) #14 + %22 = icmp eq ptr %21, null + br i1 %22, label %43, label %23 + +23: ; preds = %18 + %24 = getelementptr inbounds nuw i8, ptr %21, i64 1 + %25 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %24, i32 noundef 41) #14 + %26 = icmp eq ptr %25, null + br i1 %26, label %43, label %27 + +27: ; preds = %23 + %28 = getelementptr inbounds nuw i8, ptr %25, i64 1 + %29 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %28, ptr noundef nonnull @.str.2, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10) #13 + %.not18 = icmp eq i32 %29, 4 + br i1 %.not18, label %30, label %43 + +30: ; preds = %27 + %31 = load i64, ptr %8, align 8 + %32 = load i64, ptr %9, align 8 + %33 = add i64 %32, %31 + %34 = load i64, ptr @clock_ticks_per_second, align 8 + %35 = sdiv i64 1000000000, %34 + %36 = mul i64 %35, %33 + store i64 %36, ptr %2, align 8 + %37 = load i64, ptr @bootTime_ms, align 8 + %38 = load i64, ptr %10, align 8 + %39 = mul i64 %38, 1000 + %40 = udiv i64 %39, %34 + %41 = add i64 %40, %37 + store i64 %41, ptr %3, align 8 + %42 = load i32, ptr %7, align 4 + br label %43 + +43: ; preds = %27, %23, %18, %14, %4, %30 + %.0 = phi i32 [ %42, %31 ], [ -1, %4 ], [ -1, %14 ], [ -1, %19 ], [ -1, %24 ], [ 0, %28 ] ret i32 %.0 } @@ -198,7 +198,7 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 %26 = zext nneg i32 %25 to i64 %27 = call noalias ptr @malloc(i64 noundef %26) #15 %28 = icmp eq ptr %27, null - br i1 %28, label %.thread95, label %29 + br i1 %28, label %.thread96, label %29 29: ; preds = %22 %30 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 32, ptr noundef nonnull @.str.5, i32 noundef %2) #13 @@ -230,11 +230,11 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 .lr.ph: ; preds = %41, %.lr.ph %47 = phi i32 [ %56, %.lr.ph ], [ %45, %41 ] %48 = phi i64 [ %55, %.lr.ph ], [ %44, %41 ] - %.0103 = phi ptr [ %51, %.lr.ph ], [ %27, %41 ] - %.067102 = phi i32 [ %49, %.lr.ph ], [ 0, %41 ] - %49 = add nuw nsw i32 %47, %.067102 + %.0104 = phi ptr [ %51, %.lr.ph ], [ %27, %41 ] + %.067103 = phi i32 [ %49, %.lr.ph ], [ 0, %41 ] + %49 = add nuw nsw i32 %47, %.067103 %50 = and i64 %48, 2147483647 - %51 = getelementptr inbounds nuw i8, ptr %.0103, i64 %50 + %51 = getelementptr inbounds nuw i8, ptr %.0104, i64 %50 %52 = load i32, ptr @pageSize, align 4 %53 = sub nsw i32 %52, %49 %54 = sext i32 %53 to i64 @@ -247,7 +247,7 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 %.067.lcssa = phi i32 [ 0, %41 ], [ %49, %.lr.ph ] %.lcssa = phi i32 [ %45, %41 ], [ %56, %.lr.ph ] %58 = icmp slt i32 %.lcssa, 0 - br i1 %58, label %.thread95.sink.split, label %59 + br i1 %58, label %.thread96.sink.split, label %59 59: ; preds = %._crit_edge %60 = zext i32 %.067.lcssa to i64 @@ -273,86 +273,86 @@ define hidden void @os_getCmdlineAndUserInfo(ptr noundef %0, ptr noundef %1, i32 %72 = icmp sgt i32 %.067.lcssa, 0 %73 = icmp eq ptr %.071, null %or.cond = or i1 %73, %71 - %or.cond89 = select i1 %72, i1 %or.cond, i1 false - br i1 %or.cond89, label %74, label %.loopexit101 + %or.cond90 = select i1 %72, i1 %or.cond, i1 false + br i1 %or.cond90, label %74, label %.loopexit102 74: ; preds = %70 %75 = add nsw i32 %62, 1 %76 = sext i32 %75 to i64 %77 = call noalias ptr @malloc(i64 noundef %76) #15 %.not86 = icmp eq ptr %77, null - br i1 %.not86, label %.loopexit101, label %.lr.ph107.preheader + br i1 %.not86, label %.loopexit102, label %.lr.ph108.preheader -.lr.ph107.preheader: ; preds = %74 +.lr.ph108.preheader: ; preds = %74 %78 = add nuw nsw i32 %.067.lcssa, 1 %79 = zext nneg i32 %78 to i64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 1 dereferenceable(1) %27, i64 %79, i1 false) - br label %.lr.ph107 + br label %.lr.ph108 -.lr.ph107: ; preds = %.lr.ph107.preheader, %84 +.lr.ph108: ; preds = %.lr.ph108.preheader, %84 %indvars.iv = phi i64 [ 0, %.lr.ph107.preheader ], [ %indvars.iv.next, %84 ] %80 = getelementptr inbounds nuw i8, ptr %77, i64 %indvars.iv %81 = load i8, ptr %80, align 1 %82 = icmp eq i8 %81, 0 br i1 %82, label %83, label %84 -83: ; preds = %.lr.ph107 +83: ; preds = %.lr.ph108 store i8 32, ptr %80, align 1 br label %84 -84: ; preds = %.lr.ph107, %83 +84: ; preds = %.lr.ph108, %83 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %60 - br i1 %exitcond.not, label %.loopexit101, label %.lr.ph107, !llvm.loop !9 + br i1 %exitcond.not, label %.loopexit102, label %.lr.ph108, !llvm.loop !9 -.loopexit101: ; preds = %84, %74, %70 +.loopexit102: ; preds = %84, %74, %70 %.173 = phi ptr [ null, %74 ], [ null, %70 ], [ %77, %84 ] br i1 %71, label %.loopexit, label %.preheader -.preheader: ; preds = %.loopexit101 +.preheader: ; preds = %.loopexit102 %85 = load i8, ptr %27, align 1 %86 = icmp ne i8 %85, 0 %87 = icmp ne i32 %.067.lcssa, 0 %88 = and i1 %87, %86 - br i1 %88, label %.lr.ph110, label %.loopexit + br i1 %88, label %.lr.ph111, label %.loopexit -.lr.ph110: ; preds = %.preheader +.lr.ph111: ; preds = %.preheader %89 = ptrtoint ptr %61 to i64 br label %90 -90: ; preds = %.lr.ph110, %90 - %.1109 = phi ptr [ %27, %.lr.ph110 ], [ %95, %90 ] - %.2108 = phi i32 [ 0, %.lr.ph110 ], [ %96, %90 ] - %91 = ptrtoint ptr %.1109 to i64 +90: ; preds = %.lr.ph111, %90 + %.1110 = phi ptr [ %27, %.lr.ph110 ], [ %95, %90 ] + %.2109 = phi i32 [ 0, %.lr.ph110 ], [ %96, %90 ] + %91 = ptrtoint ptr %.1110 to i64 %92 = sub i64 %89, %91 - %93 = call i64 @strnlen(ptr noundef nonnull %.1109, i64 noundef %92) #14 - %94 = getelementptr i8, ptr %.1109, i64 %93 + %93 = call i64 @strnlen(ptr noundef nonnull %.1110, i64 noundef %92) #14 + %94 = getelementptr i8, ptr %.1110, i64 %93 %95 = getelementptr i8, ptr %94, i64 1 - %96 = add nuw nsw i32 %.2108, 1 + %96 = add nuw nsw i32 %.2109, 1 %97 = load i8, ptr %95, align 1 %98 = icmp ne i8 %97, 0 %99 = icmp ult ptr %95, %61 %100 = and i1 %99, %98 br i1 %100, label %90, label %.loopexit, !llvm.loop !10 -.loopexit: ; preds = %90, %.preheader, %.loopexit101 +.loopexit: ; preds = %90, %.preheader, %.loopexit102 %.074 = phi ptr [ null, %.loopexit101 ], [ %61, %.preheader ], [ %61, %90 ] %.170 = phi i32 [ 0, %.loopexit101 ], [ 0, %.preheader ], [ %96, %90 ] call void @unix_fillArgArray(ptr noundef %0, ptr noundef %1, i32 noundef %.170, ptr noundef nonnull %27, ptr noundef %.074, ptr noundef %.071, ptr noundef %.173) #13 call void @free(ptr noundef %27) #13 - %.not88 = icmp eq ptr %.173, null - br i1 %.not88, label %.thread95, label %.thread95.sink.split + %.not89 = icmp eq ptr %.173, null + br i1 %.not89, label %.thread96, label %.thread96.sink.split -.thread95.sink.split: ; preds = %.loopexit, %._crit_edge +.thread96.sink.split: ; preds = %.loopexit, %._crit_edge %.sink = phi ptr [ %27, %._crit_edge ], [ %.173, %.loopexit ] call void @free(ptr noundef nonnull %.sink) #13 - br label %.thread95 + br label %.thread96 -.thread95: ; preds = %.thread95.sink.split, %22, %.loopexit +.thread96: ; preds = %.thread96.sink.split, %22, %.loopexit %101 = call i32 @close(i32 noundef %20) #13 br label %102 -102: ; preds = %16, %9, %.thread95 +102: ; preds = %16, %9, %.thread96 ret void } diff --git a/bench/openjdk/optimized/compileLog.ll b/bench/openjdk/optimized/compileLog.ll index be55ccfaf76..6a726c1cb92 100644 --- a/bench/openjdk/optimized/compileLog.ll +++ b/bench/openjdk/optimized/compileLog.ll @@ -606,49 +606,49 @@ define hidden void @_ZN10CompileLog16clear_identitiesEv(ptr noundef nonnull writ ; Function Attrs: mustprogress nounwind uwtable define hidden void @_ZN10CompileLog19finish_log_on_errorEP12outputStreamPci(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 align 2 { %.b = load i1, ptr @_ZZN10CompileLog19finish_log_on_errorEP12outputStreamPciE11called_exit, align 1 - br i1 %.b, label %62, label %4 + br i1 %.b, label %63, label %4 4: ; preds = %3 store i1 true, ptr @_ZZN10CompileLog19finish_log_on_errorEP12outputStreamPciE11called_exit, align 1 %5 = load ptr, ptr @_ZN10CompileLog6_firstE, align 8 - %.not97 = icmp eq ptr %5, null - br i1 %.not97, label %._crit_edge101, label %.lr.ph100 + %.not96 = icmp eq ptr %5, null + br i1 %.not96, label %._crit_edge100, label %.lr.ph99 -.lr.ph100: ; preds = %4 +.lr.ph99: ; preds = %4 %6 = sext i32 %2 to i64 %7 = add nsw i32 %2, -1 %8 = sext i32 %7 to i64 %9 = getelementptr inbounds i8, ptr %1, i64 %8 br label %10 -10: ; preds = %.lr.ph100, %56 - %.098 = phi ptr [ %5, %.lr.ph100 ], [ %58, %56 ] - %11 = load ptr, ptr %.098, align 8 +10: ; preds = %.lr.ph99, %57 + %.097 = phi ptr [ %5, %.lr.ph100 ], [ %59, %56 ] + %11 = load ptr, ptr %.097, align 8 %12 = load ptr, ptr %11, align 8 - tail call void %12(ptr noundef nonnull align 8 dereferenceable(152) %.098) #11 - %13 = getelementptr inbounds nuw i8, ptr %.098, i64 152 + tail call void %12(ptr noundef nonnull align 8 dereferenceable(152) %.097) #11 + %13 = getelementptr inbounds nuw i8, ptr %.097, i64 152 %14 = load ptr, ptr %13, align 8 %15 = tail call i32 (ptr, i32, ...) @open64(ptr noundef %14, i32 noundef 0) #11 %.not76 = icmp eq i32 %15, -1 - br i1 %.not76, label %56, label %16 + br i1 %.not76, label %57, label %16 16: ; preds = %10 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.20, i64 noundef 25) #11 - %17 = getelementptr inbounds nuw i8, ptr %.098, i64 168 + %17 = getelementptr inbounds nuw i8, ptr %.097, i64 168 %18 = load i64, ptr %17, align 8 %19 = tail call i32 (ptr, i64, ptr, ...) @jio_snprintf(ptr noundef %1, i64 noundef %6, ptr noundef nonnull @.str.21, i64 noundef %18) #11 %20 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #12 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %1, i64 noundef %20) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.22, i64 noundef 2) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 - %21 = getelementptr inbounds nuw i8, ptr %.098, i64 160 + %21 = getelementptr inbounds nuw i8, ptr %.097, i64 160 %22 = load i64, ptr %21, align 8 - %.not7784 = icmp eq i64 %22, 0 - br i1 %.not7784, label %._crit_edge, label %.lr.ph + %.not7783 = icmp eq i64 %22, 0 + br i1 %.not7783, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %16, %26 - %.06985 = phi i64 [ %27, %26 ], [ %22, %16 ] - %.07079 = tail call i64 @llvm.umin.i64(i64 %.06985, i64 %6) + %.06984 = phi i64 [ %27, %26 ], [ %22, %16 ] + %.07079 = tail call i64 @llvm.umin.i64(i64 %.06984, i64 %6) %sext = shl i64 %.07079, 32 %23 = ashr exact i64 %sext, 32 %24 = tail call i64 @read(i32 noundef %15, ptr noundef nonnull %1, i64 noundef %23) #11 @@ -656,7 +656,7 @@ define hidden void @_ZN10CompileLog19finish_log_on_errorEP12outputStreamPci(ptr br i1 %25, label %._crit_edge, label %26 26: ; preds = %.lr.ph - %27 = sub i64 %.06985, %24 + %27 = sub i64 %.06984, %24 %28 = load ptr, ptr %0, align 8 %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 %30 = load ptr, ptr %29, align 8 @@ -667,112 +667,112 @@ define hidden void @_ZN10CompileLog19finish_log_on_errorEP12outputStreamPci(ptr ._crit_edge: ; preds = %26, %.lr.ph, %16 %31 = tail call i64 @read(i32 noundef %15, ptr noundef nonnull %1, i64 noundef %8) #11 %32 = icmp sgt i64 %31, 0 - br i1 %32, label %.lr.ph95, label %.critedge102 + br i1 %32, label %.lr.ph94, label %.critedge101 -.loopexit: ; preds = %52 +.loopexit: ; preds = %53 %33 = tail call i64 @read(i32 noundef %15, ptr noundef nonnull %1, i64 noundef %8) #11 %34 = icmp sgt i64 %33, 0 - br i1 %34, label %.lr.ph95, label %._crit_edge96, !llvm.loop !11 + br i1 %34, label %.lr.ph94, label %._crit_edge95, !llvm.loop !11 -.lr.ph95: ; preds = %._crit_edge, %.loopexit +.lr.ph94: ; preds = %._crit_edge, %.loopexit %35 = phi i64 [ %33, %.loopexit ], [ %31, %._crit_edge ] - %.06693 = phi i32 [ %.4, %.loopexit ], [ 0, %._crit_edge ] - %.06792 = phi i1 [ true, %.loopexit ], [ false, %._crit_edge ] + %.06692 = phi i32 [ %.4, %.loopexit ], [ 0, %._crit_edge ] + %.06791 = phi i1 [ true, %.loopexit ], [ false, %._crit_edge ] store i8 0, ptr %9, align 1 - br i1 %.06792, label %.preheader.preheader, label %36 + br i1 %.06791, label %.preheader.preheader, label %36 -36: ; preds = %.lr.ph95 +36: ; preds = %.lr.ph94 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.23, i64 noundef 10) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.24, i64 noundef 9) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 br label %.preheader.preheader -.preheader.preheader: ; preds = %36, %.lr.ph95 +.preheader.preheader: ; preds = %36, %.lr.ph94 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %52 - %.06591 = phi ptr [ %54, %52 ], [ %1, %.preheader.preheader ] - %.190 = phi i32 [ %.4, %52 ], [ %.06693, %.preheader.preheader ] - %.17189 = phi i64 [ %53, %52 ], [ %35, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %53 + %.06590 = phi ptr [ %55, %52 ], [ %1, %.preheader.preheader ] + %.189 = phi i32 [ %.4, %52 ], [ %.06692, %.preheader.preheader ] + %.17188 = phi i64 [ %54, %52 ], [ %35, %.preheader.preheader ] br label %37 -37: ; preds = %.preheader, %43 - %.06488 = phi i64 [ 0, %.preheader ], [ %44, %43 ] - %.287 = phi i32 [ %.190, %.preheader ], [ %.3, %43 ] - %38 = getelementptr inbounds i8, ptr %.06591, i64 %.06488 +37: ; preds = %.preheader, %44 + %.06487 = phi i64 [ 0, %.preheader ], [ %45, %43 ] + %.286 = phi i32 [ %.189, %.preheader ], [ %.3, %43 ] + %38 = getelementptr inbounds i8, ptr %.06590, i64 %.06487 %39 = load i8, ptr %38, align 1 switch i8 %39, label %43 [ i8 93, label %40 - i8 62, label %41 + i8 62, label %42 ] 40: ; preds = %37 - %.not80 = icmp eq i32 %.287, 0 + %.not80 = icmp eq i32 %.286, 0 %spec.select = select i1 %.not80, i32 1, i32 2 - br label %43 + br label %44 -41: ; preds = %37 - %42 = icmp eq i32 %.287, 2 - br i1 %42, label %45, label %43 +42: ; preds = %37 + %43 = icmp eq i32 %.286, 2 + br i1 %43, label %46, label %44 -43: ; preds = %40, %37, %41 +44: ; preds = %40, %37, %42 %.3 = phi i32 [ %spec.select, %40 ], [ 0, %41 ], [ 0, %37 ] - %44 = add nuw i64 %.06488, 1 - %exitcond.not = icmp eq i64 %44, %.17189 + %45 = add nuw i64 %.06487, 1 + %exitcond.not = icmp eq i64 %45, %.17188 br i1 %exitcond.not, label %.critedge, label %37, !llvm.loop !12 -45: ; preds = %41 - %46 = load ptr, ptr %0, align 8 - %47 = getelementptr inbounds nuw i8, ptr %46, i64 8 - %48 = load ptr, ptr %47, align 8 - tail call void %48(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06591, i64 noundef %.06488) #11 +46: ; preds = %42 + %47 = load ptr, ptr %0, align 8 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 8 + %49 = load ptr, ptr %48, align 8 + tail call void %48(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06590, i64 noundef %.06487) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.25, i64 noundef 12) #11 - br label %52 + br label %53 -.critedge: ; preds = %43 - %49 = load ptr, ptr %0, align 8 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 8 - %51 = load ptr, ptr %50, align 8 - tail call void %51(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06591, i64 noundef %.17189) #11 - br label %52 +.critedge: ; preds = %44 + %50 = load ptr, ptr %0, align 8 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 + %52 = load ptr, ptr %51, align 8 + tail call void %51(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull %.06590, i64 noundef %.17188) #11 + br label %53 -52: ; preds = %.critedge, %45 - %.06482 = phi i64 [ %.06488, %45 ], [ %.17189, %.critedge ] +53: ; preds = %.critedge, %46 + %.06481 = phi i64 [ %.06487, %45 ], [ %.17188, %.critedge ] %.4 = phi i32 [ 0, %45 ], [ %.3, %.critedge ] - %53 = sub i64 %.17189, %.06482 - %54 = getelementptr inbounds i8, ptr %.06591, i64 %.06482 - %.not78 = icmp eq i64 %53, 0 + %54 = sub i64 %.17188, %.06481 + %55 = getelementptr inbounds i8, ptr %.06590, i64 %.06481 + %.not78 = icmp eq i64 %54, 0 br i1 %.not78, label %.loopexit, label %.preheader, !llvm.loop !13 -._crit_edge96: ; preds = %.loopexit +._crit_edge95: ; preds = %.loopexit tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.26, i64 noundef 3) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.27, i64 noundef 11) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 - br label %.critedge102 + br label %.critedge101 -.critedge102: ; preds = %._crit_edge, %._crit_edge96 +.critedge101: ; preds = %._crit_edge, %._crit_edge95 tail call void @_ZN12outputStream9print_rawEPKcm(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull @.str.28, i64 noundef 18) #11 tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #11 - %55 = tail call i32 @close(i32 noundef %15) #11 - br label %56 - -56: ; preds = %.critedge102, %10 - %57 = getelementptr inbounds nuw i8, ptr %.098, i64 432 - %58 = load ptr, ptr %57, align 8 - %59 = load ptr, ptr %.098, align 8 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 32 - %61 = load ptr, ptr %60, align 8 - tail call void %61(ptr noundef nonnull align 8 dereferenceable(440) %.098) #11 - %.not = icmp eq ptr %58, null - br i1 %.not, label %._crit_edge101, label %10, !llvm.loop !14 - -._crit_edge101: ; preds = %56, %4 + %56 = tail call i32 @close(i32 noundef %15) #11 + br label %57 + +57: ; preds = %.critedge101, %10 + %58 = getelementptr inbounds nuw i8, ptr %.097, i64 432 + %59 = load ptr, ptr %58, align 8 + %60 = load ptr, ptr %.097, align 8 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 32 + %62 = load ptr, ptr %61, align 8 + tail call void %61(ptr noundef nonnull align 8 dereferenceable(440) %.097) #11 + %.not = icmp eq ptr %59, null + br i1 %.not, label %._crit_edge100, label %10, !llvm.loop !14 + +._crit_edge100: ; preds = %57, %4 store ptr null, ptr @_ZN10CompileLog6_firstE, align 8 - br label %62 + br label %63 -62: ; preds = %3, %._crit_edge101 +63: ; preds = %3, %._crit_edge100 ret void } diff --git a/bench/openmpi/optimized/pmix_vmem.ll b/bench/openmpi/optimized/pmix_vmem.ll index 850dbf97282..3851f0b7d84 100644 --- a/bench/openmpi/optimized/pmix_vmem.ll +++ b/bench/openmpi/optimized/pmix_vmem.ll @@ -15,17 +15,17 @@ define range(i32 -1, 1) i32 @pmix_vmem_find_hole(i32 noundef %0, ptr noundef wri call void @llvm.lifetime.start.p0(ptr nonnull %5) %6 = tail call noalias ptr @fopen(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) %.not = icmp eq ptr %6, null - br i1 %.not, label %use_hole.exit82, label %use_hole.exit + br i1 %.not, label %use_hole.exit84, label %use_hole.exit -use_hole.exit: ; preds = %3, %95 +use_hole.exit: ; preds = %3, %92 %.047 = phi i64 [ %.148, %95 ], [ 0, %3 ] %.043 = phi i64 [ %.144, %95 ], [ 0, %3 ] - %.041 = phi i64 [ %.092100, %95 ], [ 0, %3 ] - %.039 = phi i32 [ %.091102, %95 ], [ 4, %3 ] + %.041 = phi i64 [ %.094102, %95 ], [ 0, %3 ] + %.039 = phi i32 [ %.093104, %95 ], [ 4, %3 ] %.036 = phi i32 [ %.137, %95 ], [ 0, %3 ] %7 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 96, ptr noundef nonnull %6) %.not53 = icmp eq ptr %7, null - br i1 %.not53, label %use_hole.exit.thread111, label %8 + br i1 %.not53, label %use_hole.exit.thread114, label %8 8: ; preds = %use_hole.exit call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -82,36 +82,36 @@ use_hole.exit: ; preds = %3, %95 br label %33 parse_map_line.exit: ; preds = %8, %12, %14, %19 - %.092 = phi i64 [ 0, %8 ], [ 0, %14 ], [ %16, %19 ], [ 0, %12 ] + %.094 = phi i64 [ 0, %8 ], [ 0, %14 ], [ %16, %19 ], [ 0, %12 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %90 + br label %87 33: ; preds = %32, %30, %28, %26, %24, %21 %not. = phi i1 [ true, %24 ], [ true, %30 ], [ true, %32 ], [ false, %28 ], [ true, %26 ], [ true, %21 ] %34 = phi i1 [ false, %24 ], [ false, %30 ], [ false, %32 ], [ true, %28 ], [ false, %26 ], [ false, %21 ] %35 = phi i1 [ true, %24 ], [ true, %30 ], [ true, %32 ], [ true, %28 ], [ false, %26 ], [ true, %21 ] - %.091.ph = phi i32 [ 1, %24 ], [ 4, %30 ], [ 4, %32 ], [ 3, %28 ], [ 2, %26 ], [ 0, %21 ] + %.093.ph = phi i32 [ 1, %24 ], [ 4, %30 ], [ 4, %32 ], [ 3, %28 ], [ 2, %26 ], [ 0, %21 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) switch i32 %0, label %90 [ i32 0, label %36 i32 1, label %49 i32 2, label %66 i32 4, label %82 - i32 3, label %87 + i32 3, label %84 ] 36: ; preds = %33 %37 = call i32 @fclose(ptr noundef nonnull %6) %38 = lshr i64 %9, 1 %39 = icmp ult i64 %9, %2 - br i1 %39, label %use_hole.exit82, label %40 + br i1 %39, label %use_hole.exit84, label %40 40: ; preds = %36 %41 = and i64 %38, 9223372036787666944 %42 = add nuw i64 %41, 67108864 %43 = add i64 %42, %2 - %.not.i58 = icmp ugt i64 %43, %9 - br i1 %.not.i58, label %44, label %use_hole.exit82.sink.split + %.not.i60 = icmp ugt i64 %43, %9 + br i1 %.not.i60, label %44, label %use_hole.exit84.sink.split 44: ; preds = %40 %45 = and i64 %38, 9223372036852678656 @@ -120,12 +120,12 @@ parse_map_line.exit: ; preds = %8, %12, %14, %19 %.not25.i = icmp ugt i64 %47, %9 %48 = sub i64 %9, %2 %spec.select.i = select i1 %.not25.i, i64 %48, i64 %46 - br label %use_hole.exit82.sink.split + br label %use_hole.exit84.sink.split 49: ; preds = %33 %50 = icmp eq i32 %.039, 2 %or.cond = and i1 %50, %35 - br i1 %or.cond, label %51, label %90 + br i1 %or.cond, label %51, label %87 51: ; preds = %49 %52 = call i32 @fclose(ptr noundef nonnull %6) @@ -133,26 +133,26 @@ parse_map_line.exit: ; preds = %8, %12, %14, %19 %54 = lshr i64 %53, 1 %55 = add i64 %54, %.041 %56 = icmp ult i64 %53, %2 - br i1 %56, label %use_hole.exit82, label %57 + br i1 %56, label %use_hole.exit84, label %57 57: ; preds = %51 %58 = and i64 %55, -67108864 %59 = add i64 %58, 67108864 %60 = add i64 %59, %2 - %.not.i62 = icmp ugt i64 %60, %9 - br i1 %.not.i62, label %61, label %use_hole.exit82.sink.split + %.not.i64 = icmp ugt i64 %60, %9 + br i1 %.not.i64, label %61, label %use_hole.exit84.sink.split 61: ; preds = %57 %62 = and i64 %55, -2097152 %63 = add i64 %62, 2097152 %64 = add i64 %63, %2 - %.not25.i66 = icmp ugt i64 %64, %9 + %.not25.i68 = icmp ugt i64 %64, %9 %65 = sub i64 %9, %2 - %spec.select.i67 = select i1 %.not25.i66, i64 %65, i64 %63 - br label %use_hole.exit82.sink.split + %spec.select.i69 = select i1 %.not25.i68, i64 %65, i64 %63 + br label %use_hole.exit84.sink.split 66: ; preds = %33 - br i1 %34, label %67, label %90 + br i1 %34, label %67, label %87 67: ; preds = %66 %68 = call i32 @fclose(ptr noundef nonnull %6) @@ -160,98 +160,98 @@ parse_map_line.exit: ; preds = %8, %12, %14, %19 %70 = lshr i64 %69, 1 %71 = add i64 %70, %.041 %72 = icmp ult i64 %69, %2 - br i1 %72, label %use_hole.exit82, label %73 + br i1 %72, label %use_hole.exit84, label %73 73: ; preds = %67 %74 = and i64 %71, -67108864 %75 = add i64 %74, 67108864 %76 = add i64 %75, %2 - %.not.i69 = icmp ugt i64 %76, %9 - br i1 %.not.i69, label %77, label %use_hole.exit82.sink.split + %.not.i71 = icmp ugt i64 %76, %9 + br i1 %.not.i71, label %77, label %use_hole.exit84.sink.split 77: ; preds = %73 %78 = and i64 %71, -2097152 %79 = add i64 %78, 2097152 %80 = add i64 %79, %2 - %.not25.i73 = icmp ugt i64 %80, %9 + %.not25.i75 = icmp ugt i64 %80, %9 %81 = sub i64 %9, %2 - %spec.select.i74 = select i1 %.not25.i73, i64 %81, i64 %79 - br label %use_hole.exit82.sink.split + %spec.select.i76 = select i1 %.not25.i75, i64 %81, i64 %79 + br label %use_hole.exit84.sink.split 82: ; preds = %33 %83 = icmp eq i32 %.039, 2 - %84 = icmp eq i32 %.036, 1 - %85 = select i1 %83, i1 true, i1 %84 - %86 = select i1 %not., i1 %85, i1 false - br i1 %86, label %87, label %90 + %.not55122123 = icmp eq i32 %.036, 1 + %.not55122 = select i1 %83, i1 true, i1 %.not55122123 + %.not55 = select i1 %not., i1 %.not55122, i1 false + br i1 %.not55, label %87, label %84 -87: ; preds = %82, %33 +84: ; preds = %82, %33 %.238 = phi i32 [ 1, %82 ], [ %.036, %33 ] - %88 = sub i64 %9, %.041 - %89 = icmp ugt i64 %88, %.043 - %spec.select56 = select i1 %89, i64 %.041, i64 %.047 - %spec.select57 = call i64 @llvm.umax.i64(i64 %88, i64 %.043) - br label %90 - -90: ; preds = %parse_map_line.exit, %87, %49, %66, %82, %33 - %.091102 = phi i32 [ 4, %parse_map_line.exit ], [ %.091.ph, %33 ], [ %.091.ph, %49 ], [ %.091.ph, %66 ], [ %.091.ph, %82 ], [ %.091.ph, %87 ] - %.092100 = phi i64 [ %.092, %parse_map_line.exit ], [ %16, %33 ], [ %16, %49 ], [ %16, %66 ], [ %16, %82 ], [ %16, %87 ] - %.148 = phi i64 [ %.047, %parse_map_line.exit ], [ %.047, %33 ], [ %.047, %49 ], [ %.047, %66 ], [ %.047, %82 ], [ %spec.select56, %87 ] - %.144 = phi i64 [ %.043, %parse_map_line.exit ], [ %.043, %33 ], [ %.043, %49 ], [ %.043, %66 ], [ %.043, %82 ], [ %spec.select57, %87 ] + %85 = sub i64 %9, %.041 + %86 = icmp ugt i64 %85, %.043 + %spec.select58 = select i1 %86, i64 %.041, i64 %.047 + %spec.select59 = call i64 @llvm.umax.i64(i64 %85, i64 %.043) + br label %87 + +87: ; preds = %parse_map_line.exit, %84, %49, %66, %82, %33 + %.093104 = phi i32 [ 4, %parse_map_line.exit ], [ %.093.ph, %33 ], [ %.093.ph, %49 ], [ %.093.ph, %66 ], [ %.093.ph, %82 ], [ %.093.ph, %87 ] + %.094102 = phi i64 [ %.094, %parse_map_line.exit ], [ %16, %33 ], [ %16, %49 ], [ %16, %66 ], [ %16, %82 ], [ %16, %87 ] + %.148 = phi i64 [ %.047, %parse_map_line.exit ], [ %.047, %33 ], [ %.047, %49 ], [ %.047, %66 ], [ %.047, %82 ], [ %spec.select58, %87 ] + %.144 = phi i64 [ %.043, %parse_map_line.exit ], [ %.043, %33 ], [ %.043, %49 ], [ %.043, %66 ], [ %.043, %82 ], [ %spec.select59, %87 ] %.137 = phi i32 [ %.036, %parse_map_line.exit ], [ %.036, %33 ], [ %.036, %49 ], [ %.036, %66 ], [ 0, %82 ], [ %.238, %87 ] - br label %91 + br label %88 -91: ; preds = %93, %90 - %92 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 10) #7 - %.not54 = icmp eq ptr %92, null - br i1 %.not54, label %93, label %95 +88: ; preds = %90, %87 + %89 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %5, i32 noundef 10) #7 + %.not56 = icmp eq ptr %89, null + br i1 %.not56, label %90, label %92 -93: ; preds = %91 - %94 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 96, ptr noundef nonnull %6) - %.not55 = icmp eq ptr %94, null - br i1 %.not55, label %use_hole.exit.thread111, label %91, !llvm.loop !9 +90: ; preds = %88 + %91 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 96, ptr noundef nonnull %6) + %.not57 = icmp eq ptr %91, null + br i1 %.not57, label %use_hole.exit.thread114, label %88, !llvm.loop !9 -95: ; preds = %91 - %96 = icmp eq i32 %.091102, 3 - br i1 %96, label %use_hole.exit.thread111, label %use_hole.exit +92: ; preds = %88 + %93 = icmp eq i32 %.093104, 3 + br i1 %93, label %use_hole.exit.thread114, label %use_hole.exit -use_hole.exit.thread111: ; preds = %95, %use_hole.exit, %93 +use_hole.exit.thread114: ; preds = %92, %use_hole.exit, %90 %.350 = phi i64 [ %.148, %93 ], [ %.148, %95 ], [ %.047, %use_hole.exit ] %.346 = phi i64 [ %.144, %93 ], [ %.144, %95 ], [ %.043, %use_hole.exit ] - %97 = call i32 @fclose(ptr noundef nonnull %6) - %98 = add i32 %0, -3 - %or.cond3 = icmp ult i32 %98, 2 - br i1 %or.cond3, label %99, label %use_hole.exit82 - -99: ; preds = %use_hole.exit.thread111 - %100 = lshr i64 %.346, 1 - %101 = add i64 %100, %.350 - %102 = icmp ult i64 %.346, %2 - br i1 %102, label %use_hole.exit82, label %103 - -103: ; preds = %99 - %104 = and i64 %101, -67108864 - %105 = add i64 %104, 67108864 - %106 = add i64 %105, %2 - %107 = add i64 %.346, %.350 - %.not.i76 = icmp ugt i64 %106, %107 - br i1 %.not.i76, label %108, label %use_hole.exit82.sink.split - -108: ; preds = %103 - %109 = and i64 %101, -2097152 - %110 = add i64 %109, 2097152 - %111 = add i64 %110, %2 - %.not25.i80 = icmp ugt i64 %111, %107 - %112 = sub i64 %107, %2 - %spec.select.i81 = select i1 %.not25.i80, i64 %112, i64 %110 - br label %use_hole.exit82.sink.split - -use_hole.exit82.sink.split: ; preds = %103, %108, %73, %77, %57, %61, %40, %44 - %.sink.i71.sink = phi i64 [ %42, %40 ], [ %spec.select.i, %44 ], [ %59, %57 ], [ %spec.select.i67, %61 ], [ %75, %73 ], [ %spec.select.i74, %77 ], [ %105, %103 ], [ %spec.select.i81, %108 ] - store i64 %.sink.i71.sink, ptr %1, align 8, !tbaa !11 - br label %use_hole.exit82 - -use_hole.exit82: ; preds = %use_hole.exit82.sink.split, %67, %51, %36, %99, %use_hole.exit.thread111, %3 + %94 = call i32 @fclose(ptr noundef nonnull %6) + %95 = add i32 %0, -3 + %or.cond3 = icmp ult i32 %95, 2 + br i1 %or.cond3, label %96, label %use_hole.exit84 + +96: ; preds = %use_hole.exit.thread114 + %97 = lshr i64 %.346, 1 + %98 = add i64 %97, %.350 + %99 = icmp ult i64 %.346, %2 + br i1 %99, label %use_hole.exit84, label %100 + +100: ; preds = %96 + %101 = and i64 %98, -67108864 + %102 = add i64 %101, 67108864 + %103 = add i64 %102, %2 + %104 = add i64 %.346, %.350 + %.not.i78 = icmp ugt i64 %103, %104 + br i1 %.not.i78, label %105, label %use_hole.exit84.sink.split + +105: ; preds = %100 + %106 = and i64 %98, -2097152 + %107 = add i64 %106, 2097152 + %108 = add i64 %107, %2 + %.not25.i82 = icmp ugt i64 %108, %104 + %109 = sub i64 %104, %2 + %spec.select.i83 = select i1 %.not25.i82, i64 %109, i64 %107 + br label %use_hole.exit84.sink.split + +use_hole.exit84.sink.split: ; preds = %100, %105, %73, %77, %57, %61, %40, %44 + %.sink.i73.sink = phi i64 [ %42, %40 ], [ %spec.select.i, %44 ], [ %59, %57 ], [ %spec.select.i69, %61 ], [ %75, %73 ], [ %spec.select.i76, %77 ], [ %102, %103 ], [ %spec.select.i83, %108 ] + store i64 %.sink.i73.sink, ptr %1, align 8, !tbaa !11 + br label %use_hole.exit84 + +use_hole.exit84: ; preds = %use_hole.exit84.sink.split, %67, %51, %36, %96, %use_hole.exit.thread114, %3 %.035 = phi i32 [ -1, %3 ], [ -1, %use_hole.exit.thread111 ], [ -1, %99 ], [ -1, %67 ], [ -1, %51 ], [ -1, %36 ], [ 0, %use_hole.exit82.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.035 diff --git a/bench/openssl/optimized/algorithmid_test.ll b/bench/openssl/optimized/algorithmid_test.ll index a488be27ffd..7a346ccaa9b 100644 --- a/bench/openssl/optimized/algorithmid_test.ll +++ b/bench/openssl/optimized/algorithmid_test.ll @@ -148,19 +148,19 @@ define dso_local range(i32 0, 2) i32 @setup_tests() local_unnamed_addr #1 { %21 = icmp ne i32 %.022, 0 %22 = icmp eq i32 %15, 2 %or.cond3 = select i1 %21, i1 %22, i1 false - br i1 %or.cond3, label %.thread, label %._crit_edge + br i1 %or.cond3, label %.thread, label %.sink.split -._crit_edge: ; preds = %20 +.sink.split: ; preds = %20 %.pre = load ptr, ptr @pubkey_filename, align 8 br label %23 -23: ; preds = %._crit_edge, %18 +23:; preds = %.sink.split, %18 %24 = phi ptr [ %.pre, %._crit_edge ], [ %19, %18 ] %25 = icmp eq ptr %24, null %or.cond5 = select i1 %16, i1 %25, i1 false br i1 %or.cond5, label %28, label %31 -.thread: ; preds = %20 +.thread:; preds = %20 %26 = tail call ptr @test_get_argument(i64 noundef 0) #6 store ptr %26, ptr @eecert_filename, align 8, !tbaa !11 %27 = tail call ptr @test_get_argument(i64 noundef 1) #6 @@ -172,16 +172,16 @@ define dso_local range(i32 0, 2) i32 @setup_tests() local_unnamed_addr #1 { %30 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %29, ptr noundef nonnull @.str.21) #6 br label %.loopexit -31: ; preds = %23 - %.not = icmp eq i32 %.022, 0 - br i1 %.not, label %.critedge, label %..thread29_crit_edge +30: ; preds = %23 + %.not29 = icmp eq i32 %.022, 0 + br i1 %.not29, label %.critedge, label %31 -..thread29_crit_edge: ; preds = %31 - %.pre34 = load ptr, ptr @cacert_filename, align 8 +31: ; preds = %30 + %32 = load ptr, ptr @cacert_filename, align 8 br label %.thread29 -.thread29: ; preds = %.thread, %..thread29_crit_edge - %32 = phi ptr [ %.pre34, %..thread29_crit_edge ], [ %27, %.thread ] +.thread29:; preds = %.thread, %31 + %32 = phi ptr [ %32, %..thread29_crit_edge ], [ %27, %.thread ] %33 = load ptr, ptr @eecert_filename, align 8, !tbaa !11 %34 = icmp eq ptr %33, null %35 = icmp eq ptr %32, null @@ -197,14 +197,14 @@ define dso_local range(i32 0, 2) i32 @setup_tests() local_unnamed_addr #1 { tail call void @add_test(ptr noundef nonnull @.str.23, ptr noundef nonnull @test_x509_files) #6 br label %.critedge -.critedge: ; preds = %31, %39 +.critedge: ; preds = %30, %39 br i1 %16, label %40, label %.loopexit 40: ; preds = %.critedge tail call void @add_test(ptr noundef nonnull @.str.24, ptr noundef nonnull @test_spki_file) #6 br label %.loopexit -default.unreachable: ; preds = %5 +.loopexit: ; preds = %5 unreachable .loopexit: ; preds = %1, %7, %10, %.critedge, %40, %36, %28 diff --git a/bench/openssl/optimized/rsa_sp800_56b_gen.ll b/bench/openssl/optimized/rsa_sp800_56b_gen.ll index a84bc29e915..f1cbc5c6081 100644 --- a/bench/openssl/optimized/rsa_sp800_56b_gen.ll +++ b/bench/openssl/optimized/rsa_sp800_56b_gen.ll @@ -69,13 +69,13 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu %32 = icmp eq ptr %31, null %33 = icmp eq ptr %.pre, null %brmerge = select i1 %33, i1 true, i1 %32 - br i1 %brmerge, label %.loopexit, label %.thread89 + br i1 %brmerge, label %.loopexit, label %.thread90 .thread: ; preds = %25 %34 = icmp eq ptr %26, null - br i1 %34, label %.loopexit, label %.thread89 + br i1 %34, label %.loopexit, label %.thread90 -.thread89: ; preds = %30, %.thread +.thread90: ; preds = %30, %.thread %35 = phi ptr [ %26, %.thread ], [ %.pre, %30 ] tail call void @BN_set_flags(ptr noundef nonnull %35, i32 noundef 4) #2 %36 = load ptr, ptr %27, align 8, !tbaa !22 @@ -85,11 +85,11 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu %.not75 = icmp eq i32 %38, 0 br i1 %.not75, label %.loopexit, label %.preheader -.preheader: ; preds = %.thread89 +.preheader: ; preds = %.thread90 %39 = load ptr, ptr %27, align 8, !tbaa !22 %40 = tail call i32 @ossl_bn_rsa_fips186_4_gen_prob_primes(ptr noundef %39, ptr noundef nonnull %15, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #2 - %.not7677 = icmp eq i32 %40, 0 - br i1 %.not7677, label %.loopexit, label %.lr.ph + %.not7678 = icmp eq i32 %40, 0 + br i1 %.not7678, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %.preheader, %.backedge %41 = tail call i32 @ossl_rsa_check_pminusq_diff(ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, i32 noundef %2) #2 @@ -124,23 +124,23 @@ define range(i32 0, 2) i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef captu store i32 %57, ptr %55, align 8, !tbaa !23 br label %.loopexit -.loopexit: ; preds = %.backedge, %.lr.ph, %47, %30, %.thread, %.preheader, %.thread89, %12, %54 - %58 = phi i1 [ true, %12 ], [ true, %30 ], [ false, %54 ], [ true, %.thread89 ], [ true, %.preheader ], [ true, %.thread ], [ true, %47 ], [ true, %.lr.ph ], [ true, %.backedge ] +.loopexit: ; preds = %.backedge, %.lr.ph, %47, %30, %.thread, %.preheader, %.thread90, %12, %54 + %.not77 = phi i1 [ true, %12 ], [ true, %30 ], [ false, %54 ], [ true, %.thread89 ], [ true, %.preheader ], [ true, %.thread ], [ true, %47 ], [ true, %.lr.ph ], [ true, %.backedge ] %.067 = phi i32 [ 0, %12 ], [ 0, %30 ], [ 1, %54 ], [ 0, %.thread89 ], [ 0, %.preheader ], [ 0, %.thread ], [ 0, %47 ], [ 0, %.lr.ph ], [ 0, %.backedge ] tail call void @BN_clear(ptr noundef %14) #2 tail call void @BN_clear(ptr noundef %15) #2 tail call void @BN_clear(ptr noundef %13) #2 - br i1 %58, label %59, label %64 - -59: ; preds = %.loopexit - %60 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %61 = load ptr, ptr %60, align 8, !tbaa !3 - tail call void @BN_clear_free(ptr noundef %61) #2 - store ptr null, ptr %60, align 8, !tbaa !3 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %63 = load ptr, ptr %62, align 8, !tbaa !22 - tail call void @BN_clear_free(ptr noundef %63) #2 - store ptr null, ptr %62, align 8, !tbaa !22 + br i1 %.not77, label %59, label %64 + +58: ; preds = %.loopexit + %59 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %60 = load ptr, ptr %59, align 8, !tbaa !3 + tail call void @BN_clear_free(ptr noundef %60) #2 + store ptr null, ptr %59, align 8, !tbaa !3 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %62 = load ptr, ptr %61, align 8, !tbaa !22 + tail call void @BN_clear_free(ptr noundef %62) #2 + store ptr null, ptr %61, align 8, !tbaa !22 br label %64 64: ; preds = %59, %.loopexit @@ -411,13 +411,13 @@ define range(i32 0, 2) i32 @ossl_rsa_sp800_56b_generate_key(ptr noundef captures %7 = load ptr, ptr %6, align 8, !tbaa !30 %8 = tail call ptr @RAND_get0_private(ptr noundef %7) #2 %.not = icmp eq ptr %8, null - br i1 %.not, label %39, label %9 + br i1 %.not, label %40, label %9 9: ; preds = %4 %10 = load ptr, ptr %6, align 8, !tbaa !30 %11 = tail call ptr @BN_CTX_new_ex(ptr noundef %10) #2 %12 = icmp eq ptr %11, null - br i1 %12, label %39, label %13 + br i1 %12, label %40, label %13 13: ; preds = %9 %14 = icmp eq ptr %2, null @@ -441,51 +441,51 @@ define range(i32 0, 2) i32 @ossl_rsa_sp800_56b_generate_key(ptr noundef captures 23: ; preds = %34, %20 %24 = tail call i32 @ossl_rsa_fips186_4_gen_prob_primes(ptr noundef nonnull %0, ptr poison, i32 noundef %1, ptr noundef nonnull %.1, ptr noundef nonnull %11, ptr noundef %3) - %25 = icmp eq i32 %24, 0 - br i1 %25, label %.loopexit, label %26 - -26: ; preds = %23 - %27 = load ptr, ptr %21, align 8, !tbaa !3 - %28 = load ptr, ptr %22, align 8, !tbaa !22 - %29 = tail call i32 @BN_cmp(ptr noundef %27, ptr noundef %28) #2 - %30 = icmp slt i32 %29, 0 - br i1 %30, label %31, label %34 - -31: ; preds = %26 - %32 = load ptr, ptr %21, align 8, !tbaa !3 - %33 = load ptr, ptr %22, align 8, !tbaa !22 - store ptr %33, ptr %21, align 8, !tbaa !3 - store ptr %32, ptr %22, align 8, !tbaa !22 - br label %34 - -34: ; preds = %31, %26 - %35 = tail call i32 @ossl_rsa_sp800_56b_derive_params_from_pq(ptr noundef nonnull %0, i32 noundef %1, ptr noundef nonnull %.1, ptr noundef nonnull %11) - switch i32 %35, label %23 [ + %.not44 = icmp eq i32 %24, 0 + br i1 %.not44, label %.loopexit, label %25 + +25: ; preds = %23 + %26 = load ptr, ptr %21, align 8, !tbaa !3 + %27 = load ptr, ptr %22, align 8, !tbaa !22 + %28 = tail call i32 @BN_cmp(ptr noundef %26, ptr noundef %27) #2 + %29 = icmp slt i32 %28, 0 + br i1 %29, label %30, label %33 + +30: ; preds = %25 + %31 = load ptr, ptr %21, align 8, !tbaa !3 + %32 = load ptr, ptr %22, align 8, !tbaa !22 + store ptr %32, ptr %21, align 8, !tbaa !3 + store ptr %31, ptr %22, align 8, !tbaa !22 + br label %33 + +33: ; preds = %30, %25 + %34 = tail call i32 @ossl_rsa_sp800_56b_derive_params_from_pq(ptr noundef nonnull %0, i32 noundef %1, ptr noundef nonnull %.1, ptr noundef nonnull %11) + switch i32 %34, label %23 [ i32 -1, label %.loopexit i32 1, label %36 ] -36: ; preds = %34 +36:; preds = %34 %37 = tail call i32 @ossl_rsa_sp800_56b_pairwise_test(ptr noundef nonnull %0, ptr noundef nonnull %11) br label %.loopexit -.loopexit: ; preds = %34, %23, %36 +.loopexit: ; preds = %33, %23, %36 %.035 = phi i32 [ %37, %36 ], [ 0, %23 ], [ 0, %34 ] - br i1 %14, label %.thread, label %38 + br i1 %14, label %.thread, label %39 .thread: ; preds = %18, %15, %.loopexit - %.03549 = phi i32 [ %.035, %.loopexit ], [ 0, %15 ], [ 0, %18 ] - %.03647 = phi ptr [ %.1, %.loopexit ], [ null, %15 ], [ %16, %18 ] - tail call void @BN_free(ptr noundef %.03647) #2 - br label %38 + %.03550 = phi i32 [ %.035, %.loopexit ], [ 0, %15 ], [ 0, %18 ] + %.03648 = phi ptr [ %.1, %.loopexit ], [ null, %15 ], [ %16, %18 ] + tail call void @BN_free(ptr noundef %.03648) #2 + br label %39 -38: ; preds = %.thread, %.loopexit - %.03548 = phi i32 [ %.03549, %.thread ], [ %.035, %.loopexit ] +39: ; preds = %.thread, %.loopexit + %.03549 = phi i32 [ %.03550, %.thread ], [ %.035, %.loopexit ] tail call void @BN_CTX_free(ptr noundef nonnull %11) #2 - br label %39 + br label %40 -39: ; preds = %9, %4, %38 - %.0 = phi i32 [ %.03548, %38 ], [ 0, %4 ], [ 0, %9 ] +40: ; preds = %9, %4, %39 + %.0 = phi i32 [ %.03549, %38 ], [ 0, %4 ], [ 0, %9 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/rsa_x931.ll b/bench/openssl/optimized/rsa_x931.ll index d7ae7f8965d..1108bfc67d2 100644 --- a/bench/openssl/optimized/rsa_x931.ll +++ b/bench/openssl/optimized/rsa_x931.ll @@ -14,49 +14,49 @@ define range(i32 -1, 2) i32 @RSA_padding_add_X931(ptr noundef writeonly captures %7 = icmp slt i32 %5, 2 br i1 %7, label %8, label %9 -8: ; preds = %4 +7: ; preds = %4 tail call void @ERR_new() #5 tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef 56, ptr noundef nonnull @__func__.RSA_padding_add_X931) #5 tail call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 4, i32 noundef 110, ptr noundef null) #5 - br label %24 + br label %23 -9: ; preds = %4 - %10 = icmp eq i32 %6, 0 - br i1 %10, label %11, label %12 +8: ; preds = %4 + %9 = icmp eq i32 %6, 0 + br i1 %9, label %10, label %11 -11: ; preds = %9 +10: ; preds = %8 store i8 106, ptr %0, align 1, !tbaa !3 br label %20 -12: ; preds = %9 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 1 +11: ; preds = %8 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 1 store i8 107, ptr %0, align 1, !tbaa !3 - %14 = icmp eq i32 %6, 1 - br i1 %14, label %19, label %15 - -15: ; preds = %12 - %16 = add nsw i32 %5, -3 - %17 = zext nneg i32 %16 to i64 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %13, i8 -69, i64 %17, i1 false) - %18 = getelementptr inbounds nuw i8, ptr %13, i64 %17 + %13 = icmp eq i32 %6, 1 + br i1 %13, label %18, label %15 + +14: ; preds = %11 + %15 = add nsw i32 %5, -3 + %16 = zext nneg i32 %15 to i64 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %12, i8 -69, i64 %16, i1 false) + %17 = getelementptr inbounds nuw i8, ptr %12, i64 %16 br label %19 19: ; preds = %15, %12 - %.1 = phi ptr [ %18, %15 ], [ %13, %12 ] + %.pn = phi ptr [ %18, %15 ], [ %13, %12 ] store i8 -70, ptr %.1, align 1, !tbaa !3 br label %20 20: ; preds = %19, %11 %.pn = phi ptr [ %0, %11 ], [ %.1, %19 ] %.0 = getelementptr inbounds nuw i8, ptr %.pn, i64 1 - %21 = zext i32 %3 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.0, ptr align 1 %2, i64 %21, i1 false) - %22 = sext i32 %3 to i64 - %23 = getelementptr inbounds i8, ptr %.0, i64 %22 - store i8 -52, ptr %23, align 1, !tbaa !3 - br label %24 - -24: ; preds = %20, %8 + %20 = zext i32 %3 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.0, ptr align 1 %2, i64 %20, i1 false) + %21 = sext i32 %3 to i64 + %22 = getelementptr inbounds i8, ptr %.0, i64 %21 + store i8 -52, ptr %22, align 1, !tbaa !3 + br label %23 + +23: ; preds = %20, %7 %.019 = phi i32 [ -1, %8 ], [ 1, %20 ] ret i32 %.019 } diff --git a/bench/ozz-animation/optimized/local_to_model_job.ll b/bench/ozz-animation/optimized/local_to_model_job.ll index 85a892cae96..22f85726dde 100644 --- a/bench/ozz-animation/optimized/local_to_model_job.ll +++ b/bench/ozz-animation/optimized/local_to_model_job.ll @@ -87,21 +87,21 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %36 = add nsw i32 %32, %35 %37 = tail call noundef i32 @llvm.smax.i32(i32 %36, i32 0) %38 = icmp slt i32 %37, %30 - br i1 %38, label %39, label %._crit_edge63 + br i1 %38, label %39, label %._crit_edge64 39: ; preds = %17 %40 = trunc nuw i8 %34 to i1 - br i1 %40, label %41, label %.lr.ph62 + br i1 %40, label %41, label %.lr.ph63 41: ; preds = %39 %42 = zext nneg i32 %37 to i64 %43 = getelementptr inbounds nuw i16, ptr %19, i64 %42 %44 = load i16, ptr %43, align 2, !tbaa !33 %45 = sext i16 %44 to i32 - %.not64 = icmp sgt i32 %32, %45 - br i1 %.not64, label %._crit_edge63, label %.lr.ph62 + %.not65 = icmp sgt i32 %32, %45 + br i1 %.not65, label %._crit_edge64, label %.lr.ph63 -.lr.ph62: ; preds = %39, %41 +.lr.ph63: ; preds = %39, %41 %46 = getelementptr inbounds nuw i8, ptr %0, i64 32 %47 = getelementptr inbounds nuw i8, ptr %3, i64 64 %48 = getelementptr inbounds nuw i8, ptr %3, i64 128 @@ -122,7 +122,7 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %63 = zext nneg i32 %30 to i64 br label %.outer -._crit_edge63: ; preds = %._crit_edge.loopexit, %._crit_edge.loopexit.thread, %17, %41 +._crit_edge64: ; preds = %._crit_edge.loopexit, %._crit_edge.loopexit.thread, %17, %41 call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit.thread @@ -147,18 +147,18 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 br i1 %158, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %64 - %65 = zext nneg i32 %.02760.ph to i64 + %65 = zext nneg i32 %.02761.ph to i64 %66 = zext nneg i32 %157 to i64 br label %.lr.ph ._crit_edge.loopexit: ; preds = %225 %67 = trunc nuw nsw i64 %indvars.iv.next to i32 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br i1 %230, label %.outer, label %._crit_edge63, !llvm.loop !35 + br i1 %230, label %.outer, label %._crit_edge64, !llvm.loop !35 -.outer: ; preds = %._crit_edge.loopexit, %.lr.ph62 - %.02760.ph = phi i32 [ %67, %._crit_edge.loopexit ], [ %37, %.lr.ph62 ] - %68 = lshr i32 %.02760.ph, 2 +.outer: ; preds = %._crit_edge.loopexit, %.lr.ph63 + %.02761.ph = phi i32 [ %67, %._crit_edge.loopexit ], [ %37, %.lr.ph62 ] + %68 = lshr i32 %.02761.ph, 2 %69 = zext nneg i32 %68 to i64 %70 = load ptr, ptr %46, align 8, !tbaa !37 %71 = getelementptr inbounds nuw %"struct.ozz::math::SoaTransform", ptr %70, i64 %69 @@ -246,9 +246,9 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %153 = shufflevector <4 x float> %121, <4 x float> , <4 x i32> %154 = shufflevector <4 x float> %152, <4 x float> %153, <4 x i32> %155 = shufflevector <4 x float> %152, <4 x float> %153, <4 x i32> - %156 = and i32 %.02760.ph, -4 + %156 = and i32 %.02761.ph, -4 %157 = add nuw nsw i32 %156, 4 - %158 = icmp slt i32 %.02760.ph, %157 + %158 = icmp slt i32 %.02761.ph, %157 br label %64 ._crit_edge: ; preds = %64 @@ -271,14 +271,14 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %170 = load <4 x float>, ptr %165, align 16, !tbaa !23, !noalias !41 %171 = fmul <4 x float> %169, %170 %172 = shufflevector <4 x float> %168, <4 x float> poison, <4 x i32> - %.sroa.sel72.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 - %.sroa.sel72.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel72.v.sroa.sel.v, i64 32 - %173 = load <4 x float>, ptr %.sroa.sel72.v.sroa.sel, align 16, !tbaa !23, !noalias !41 + %.sroa.sel73.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 + %.sroa.sel73.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel73.v.sroa.sel.v, i64 32 + %173 = load <4 x float>, ptr %.sroa.sel73.v.sroa.sel, align 16, !tbaa !23, !noalias !41 %174 = fmul <4 x float> %172, %173 %175 = shufflevector <4 x float> %168, <4 x float> poison, <4 x i32> - %.sroa.sel69.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 - %.sroa.sel69.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel69.v.sroa.sel.v, i64 16 - %176 = load <4 x float>, ptr %.sroa.sel69.v.sroa.sel, align 16, !tbaa !23, !noalias !41 + %.sroa.sel70.v.sroa.sel.v = select i1 %161, ptr %spec.select, ptr %164 + %.sroa.sel70.v.sroa.sel = getelementptr inbounds nuw i8, ptr %.sroa.sel70.v.sroa.sel.v, i64 16 + %176 = load <4 x float>, ptr %.sroa.sel70.v.sroa.sel, align 16, !tbaa !23, !noalias !41 %177 = fmul <4 x float> %175, %176 %178 = fadd <4 x float> %171, %177 %179 = shufflevector <4 x float> %168, <4 x float> poison, <4 x i32> @@ -341,7 +341,7 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 ._crit_edge.loopexit.thread: ; preds = %.lr.ph call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %._crit_edge63 + br label %._crit_edge64 225: ; preds = %.lr.ph %226 = getelementptr inbounds nuw i16, ptr %19, i64 %indvars.iv.next @@ -353,7 +353,7 @@ _ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit: ; preds = %1 %232 = select i1 %231, i1 %230, i1 false br i1 %232, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !44 -_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit.thread: ; preds = %1, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit, %._crit_edge63 +_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit.thread: ; preds = %1, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit, %._crit_edge64 %.0.i57 = phi i1 [ false, %_ZNK3ozz9animation15LocalToModelJob8ValidateEv.exit ], [ true, %._crit_edge63 ], [ false, %1 ] ret i1 %.0.i57 } diff --git a/bench/pbrt-v4/optimized/lowdiscrepancy.ll b/bench/pbrt-v4/optimized/lowdiscrepancy.ll index e955a6a9a48..052845f7741 100644 --- a/bench/pbrt-v4/optimized/lowdiscrepancy.ll +++ b/bench/pbrt-v4/optimized/lowdiscrepancy.ll @@ -595,29 +595,29 @@ _ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE7r %31 = getelementptr inbounds nuw %"class.pbrt::DigitPermutation", ptr %30, i64 %.015.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %31, i8 0, i64 16, i1 false) %32 = add nuw i64 %.015.i, 1 - %33 = icmp eq i64 %32, 1000 - br i1 %33, label %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, label %.lr.ph.i, !llvm.loop !52 + %exitcond.not.i = icmp eq i64 %32, 1000 + br i1 %exitcond.not.i, label %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, label %.lr.ph.i, !llvm.loop !52 _ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit: ; preds = %.lr.ph.i, %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE7reserveEm.exit.i store i64 1000, ptr %10, align 8, !tbaa !42 - br label %35 + br label %34 -34: ; preds = %35 +33: ; preds = %34 ret ptr %7 -35: ; preds = %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, %35 +34: ; preds = %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit, %34 %indvars.iv = phi i64 [ 0, %_ZN4pstd6vectorIN4pbrt16DigitPermutationENS_3pmr21polymorphic_allocatorIS2_EEE6resizeEm.exit ], [ %indvars.iv.next, %35 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) - %36 = getelementptr inbounds nuw i32, ptr @_ZN4pbrt6PrimesE, i64 %indvars.iv - %37 = load i32, ptr %36, align 4, !tbaa !18 - call void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %37, i32 noundef %0, ptr nonnull %1) - %38 = load ptr, ptr %9, align 8, !tbaa !46 - %39 = getelementptr inbounds nuw %"class.pbrt::DigitPermutation", ptr %38, i64 %indvars.iv - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false), !tbaa.struct !49 + %35 = getelementptr inbounds nuw i32, ptr @_ZN4pbrt6PrimesE, i64 %indvars.iv + %36 = load i32, ptr %35, align 4, !tbaa !18 + call void @_ZN4pbrt16DigitPermutationC2EijN4pstd3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %36, i32 noundef %0, ptr nonnull %1) + %37 = load ptr, ptr %9, align 8, !tbaa !46 + %38 = getelementptr inbounds nuw %"class.pbrt::DigitPermutation", ptr %37, i64 %indvars.iv + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false), !tbaa.struct !49 call void @llvm.lifetime.end.p0(ptr nonnull %3) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not = icmp eq i64 %indvars.iv.next, 1000 - br i1 %.not, label %34, label %35, !llvm.loop !53 + %exitcond.not = icmp eq i64 %indvars.iv.next, 1000 + br i1 %exitcond.not, label %33, label %34, !llvm.loop !53 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/php/optimized/is_csv.ll b/bench/php/optimized/is_csv.ll index 15b0f985d0a..985b4c29d2d 100644 --- a/bench/php/optimized/is_csv.ll +++ b/bench/php/optimized/is_csv.ll @@ -22,10 +22,10 @@ define hidden range(i32 -1, 2) i32 @file_is_csv(ptr noundef %0, ptr noundef read %12 = and i32 %11, 1040 %.not = icmp ne i32 %2, 0 %13 = and i32 %11, 16779264 - %14 = icmp eq i32 %13, 0 - %or.cond = select i1 %.not, i1 %14, i1 false - %15 = icmp ne i64 %8, 0 - %or.cond24 = select i1 %or.cond, i1 %15, i1 false + %.not16 = icmp eq i32 %13, 0 + %or.cond = select i1 %.not, i1 %.not16, i1 false + %14 = icmp ne i64 %8, 0 + %or.cond24 = select i1 %or.cond, i1 %14, i1 false br i1 %or.cond24, label %.lr.ph.i, label %csv_parse.exit.thread .lr.ph.i: ; preds = %4, %eatquote.exit.i @@ -33,105 +33,105 @@ define hidden range(i32 -1, 2) i32 @file_is_csv(ptr noundef %0, ptr noundef read %.01835.i = phi i64 [ %.119.i, %eatquote.exit.i ], [ 0, %4 ] %.02034.i = phi i64 [ %.121.i, %eatquote.exit.i ], [ 0, %4 ] %.02333.i = phi ptr [ %.124.i, %eatquote.exit.i ], [ %6, %4 ] - %16 = getelementptr inbounds nuw i8, ptr %.02333.i, i64 1 - %17 = load i8, ptr %.02333.i, align 1, !tbaa !22 - switch i8 %17, label %eatquote.exit.i [ - i8 34, label %18 - i8 44, label %26 - i8 10, label %28 + %15 = getelementptr inbounds nuw i8, ptr %.02333.i, i64 1 + %16 = load i8, ptr %.02333.i, align 1, !tbaa !22 + switch i8 %16, label %eatquote.exit.i [ + i8 34, label %17 + i8 44, label %23 + i8 10, label %25 ] -18: ; preds = %.lr.ph.i - %19 = icmp ult ptr %16, %9 - br i1 %19, label %.lr.ph.i.i, label %csv_parse.exit +17: ; preds = %.lr.ph.i + %18 = icmp ult ptr %15, %9 + br i1 %18, label %.lr.ph.i.i, label %csv_parse.exit -.lr.ph.i.i: ; preds = %18, %select.unfold18.i.i - %.01024.i.i = phi i32 [ %.111.i.i, %select.unfold18.i.i ], [ 0, %18 ] - %.01223.i.i = phi ptr [ %20, %select.unfold18.i.i ], [ %16, %18 ] - %20 = getelementptr inbounds nuw i8, ptr %.01223.i.i, i64 1 - %21 = load i8, ptr %.01223.i.i, align 1, !tbaa !22 - %.not.i.i = icmp eq i8 %21, 34 +.lr.ph.i.i: ; preds = %17, %select.unfold.i.i + %.01026.i.i = phi i32 [ %.111.i.i, %select.unfold18.i.i ], [ 0, %18 ] + %.01225.i.i = phi ptr [ %19, %select.unfold18.i.i ], [ %15, %18 ] + %19 = getelementptr inbounds nuw i8, ptr %.01225.i.i, i64 1 + %20 = load i8, ptr %.01225.i.i, align 1, !tbaa !22 + %.not.i.i = icmp eq i8 %20, 34 br i1 %.not.i.i, label %24, label %22 22: ; preds = %.lr.ph.i.i %23 = icmp eq i32 %.01024.i.i, 1 - br i1 %23, label %eatquote.exit.i, label %select.unfold18.i.i + br i1 %23, label %eatquote.exit.i, label %select.unfold.i.i 24: ; preds = %.lr.ph.i.i %25 = icmp eq i32 %.01024.i.i, 0 %.16.i.i = zext i1 %25 to i32 br label %select.unfold18.i.i -select.unfold18.i.i: ; preds = %24, %22 +select.unfold.i.i: ; preds = %24, %22 %.111.i.i = phi i32 [ 0, %22 ], [ %.16.i.i, %24 ] - %exitcond.not.i.i = icmp eq ptr %20, %9 + %exitcond.not.i.i = icmp eq ptr %19, %9 br i1 %exitcond.not.i.i, label %csv_parse.exit, label %.lr.ph.i.i -26: ; preds = %.lr.ph.i - %27 = add i64 %.02034.i, 1 +23: ; preds = %.lr.ph.i + %24 = add i64 %.02034.i, 1 br label %eatquote.exit.i -28: ; preds = %.lr.ph.i - %29 = add i64 %.036.i, 1 - %30 = icmp eq i64 %29, 10 - br i1 %30, label %31, label %35 +25: ; preds = %.lr.ph.i + %26 = add i64 %.036.i, 1 + %27 = icmp eq i64 %26, 10 + br i1 %27, label %28, label %32 -31: ; preds = %28 - %32 = icmp ugt i64 %.01835.i, 1 - %33 = icmp eq i64 %.01835.i, %.02034.i - %34 = select i1 %32, i1 %33, i1 false - br i1 %34, label %44, label %csv_parse.exit.thread +28: ; preds = %25 + %29 = icmp ugt i64 %.01835.i, 1 + %30 = icmp eq i64 %.01835.i, %.02034.i + %31 = select i1 %29, i1 %30, i1 false + br i1 %31, label %41, label %csv_parse.exit.thread -35: ; preds = %28 - %36 = icmp eq i64 %.01835.i, 0 - br i1 %36, label %37, label %39 +32: ; preds = %25 + %33 = icmp eq i64 %.01835.i, 0 + br i1 %33, label %34, label %36 -37: ; preds = %35 - %38 = icmp eq i64 %.02034.i, 0 - br i1 %38, label %csv_parse.exit.thread, label %eatquote.exit.i +34: ; preds = %32 + %35 = icmp eq i64 %.02034.i, 0 + br i1 %35, label %csv_parse.exit.thread, label %eatquote.exit.i -39: ; preds = %35 +36: ; preds = %32 %.not.i = icmp eq i64 %.01835.i, %.02034.i br i1 %.not.i, label %eatquote.exit.i, label %csv_parse.exit.thread -eatquote.exit.i: ; preds = %22, %39, %37, %26, %.lr.ph.i - %.124.i = phi ptr [ %16, %.lr.ph.i ], [ %16, %26 ], [ %16, %37 ], [ %16, %39 ], [ %.01223.i.i, %22 ] - %.121.i = phi i64 [ %.02034.i, %.lr.ph.i ], [ %27, %26 ], [ 0, %37 ], [ 0, %39 ], [ %.02034.i, %22 ] +eatquote.exit.i: ; preds = %22, %36, %34, %23, %.lr.ph.i + %.124.i = phi ptr [ %15, %.lr.ph.i ], [ %15, %26 ], [ %15, %37 ], [ %15, %39 ], [ %.01225.i.i, %22 ] + %.121.i = phi i64 [ %.02034.i, %.lr.ph.i ], [ %24, %26 ], [ 0, %37 ], [ 0, %39 ], [ %.02034.i, %22 ] %.119.i = phi i64 [ %.01835.i, %.lr.ph.i ], [ %.01835.i, %26 ], [ %.02034.i, %37 ], [ %.01835.i, %39 ], [ %.01835.i, %22 ] - %.1.i = phi i64 [ %.036.i, %.lr.ph.i ], [ %.036.i, %26 ], [ %29, %37 ], [ %29, %39 ], [ %.036.i, %22 ] - %40 = icmp ult ptr %.124.i, %9 - br i1 %40, label %.lr.ph.i, label %csv_parse.exit + %.1.i = phi i64 [ %.036.i, %.lr.ph.i ], [ %.036.i, %26 ], [ %26, %37 ], [ %26, %39 ], [ %.036.i, %22 ] + %37 = icmp ult ptr %.124.i, %9 + br i1 %37, label %.lr.ph.i, label %csv_parse.exit -csv_parse.exit: ; preds = %18, %eatquote.exit.i, %select.unfold18.i.i +csv_parse.exit: ; preds = %17, %eatquote.exit.i, %select.unfold.i.i %.151.i = phi i64 [ %.036.i, %select.unfold18.i.i ], [ %.1.i, %eatquote.exit.i ], [ %.036.i, %18 ] %.11950.i = phi i64 [ %.01835.i, %select.unfold18.i.i ], [ %.119.i, %eatquote.exit.i ], [ %.01835.i, %18 ] - %41 = icmp ugt i64 %.11950.i, 1 - %42 = icmp ugt i64 %.151.i, 1 - %43 = select i1 %41, i1 %42, i1 false - br i1 %43, label %44, label %csv_parse.exit.thread + %38 = icmp ugt i64 %.11950.i, 1 + %39 = icmp ugt i64 %.151.i, 1 + %40 = select i1 %38, i1 %39, i1 false + br i1 %40, label %41, label %csv_parse.exit.thread -44: ; preds = %31, %csv_parse.exit +41: ; preds = %28, %csv_parse.exit switch i32 %12, label %45 [ i32 1024, label %csv_parse.exit.thread - i32 0, label %48 + i32 0, label %45 ] -45: ; preds = %44 - %46 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str) #2 - %47 = icmp eq i32 %46, -1 - %. = select i1 %47, i32 -1, i32 1 +42: ; preds = %41 + %43 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str) #2 + %44 = icmp eq i32 %43, -1 + %. = select i1 %44, i32 -1, i32 1 br label %csv_parse.exit.thread -48: ; preds = %44 +45: ; preds = %41 %.not19 = icmp eq ptr %3, null - %49 = select i1 %.not19, ptr @.str.2, ptr %3 - %50 = select i1 %.not19, ptr @.str.2, ptr @.str.3 - %51 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef nonnull %49, ptr noundef nonnull %50) #2 - %52 = icmp eq i32 %51, -1 - %.20 = select i1 %52, i32 -1, i32 1 + %46 = select i1 %.not19, ptr @.str.2, ptr %3 + %47 = select i1 %.not19, ptr @.str.2, ptr @.str.3 + %48 = tail call i32 (ptr, ptr, ...) @file_printf(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef nonnull %46, ptr noundef nonnull %47) #2 + %49 = icmp eq i32 %48, -1 + %.20 = select i1 %49, i32 -1, i32 1 br label %csv_parse.exit.thread -csv_parse.exit.thread: ; preds = %39, %37, %31, %48, %45, %44, %csv_parse.exit, %4 +csv_parse.exit.thread: ; preds = %36, %34, %28, %45, %42, %41, %csv_parse.exit, %4 %.0 = phi i32 [ 0, %4 ], [ 0, %csv_parse.exit ], [ 1, %44 ], [ %., %45 ], [ %.20, %48 ], [ 0, %31 ], [ 0, %37 ], [ 0, %39 ] ret i32 %.0 } diff --git a/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll b/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll index 28a9032474d..72f947aeb5a 100644 --- a/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll +++ b/bench/pingora-rs/optimized/2646m1km3n3yt2qymmhrklrgn.ll @@ -34,15 +34,15 @@ define internal fastcc noundef nonnull ptr @_ZN4core5slice4sort6shared5pivot11me %24 = xor i1 %21, %23 br i1 %24, label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit, label %25 -25: ; preds = %19 +25:; preds = %19 %26 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.04.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.08.0) %27 = icmp eq i8 %26, -1 %28 = xor i1 %21, %27 %..i = select i1 %28, ptr %.sroa.08.0, ptr %.sroa.04.0 br label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit -_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %19, %25 - %.sroa.0.0.i = phi ptr [ %.sroa.0.0, %19 ], [ %..i, %25 ] +_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %19, %24 + %.sroa.0.0.i = phi ptr [ %.sroa.0.0, %19 ], [ %..i, %24 ] ret ptr %.sroa.0.0.i } @@ -76,7 +76,7 @@ define hidden noundef range(i64 0, 2305843009213693952) i64 @_ZN4core5slice4sort %18 = xor i1 %15, %17 br i1 %18, label %_ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit, label %19 -19: ; preds = %13 +19:; preds = %13 %20 = tail call noundef i8 @"_ZN63_$LT$pingora_ketama..Point$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h5c38746bd0971f05E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %7, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %8) %21 = icmp eq i8 %20, -1 %22 = xor i1 %15, %21 @@ -85,10 +85,10 @@ define hidden noundef range(i64 0, 2305843009213693952) i64 @_ZN4core5slice4sort _ZN4core5slice4sort6shared5pivot7median317h99a06ce0501573b8E.exit: ; preds = %19, %13, %11 %.sroa.0.0.i.sink = phi ptr [ %12, %11 ], [ %0, %13 ], [ %..i, %19 ] - %23 = ptrtoint ptr %.sroa.0.0.i.sink to i64 - %24 = ptrtoint ptr %0 to i64 - %25 = sub nuw i64 %23, %24 - %.sroa.0.0 = lshr exact i64 %25, 3 + %22 = ptrtoint ptr %.sroa.0.0.i.sink to i64 + %23 = ptrtoint ptr %0 to i64 + %24 = sub nuw i64 %22, %23 + %.sroa.0.0 = lshr exact i64 %24, 3 ret i64 %.sroa.0.0 } diff --git a/bench/pocketpy/optimized/easing.ll b/bench/pocketpy/optimized/easing.ll index 47734ec2722..053f6bb0469 100644 --- a/bench/pocketpy/optimized/easing.ll +++ b/bench/pocketpy/optimized/easing.ll @@ -2908,40 +2908,40 @@ _ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = % %28 = icmp ult i64 %27, %26 %29 = tail call i64 @llvm.umin.i64(i64 %27, i64 1152921504606846975) %30 = select i1 %28, i64 1152921504606846975, i64 %29 - %31 = icmp ne i64 %30, 0 - tail call void @llvm.assume(i1 %31) - %32 = shl nuw nsw i64 %30, 3 - %33 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %32) #24 - %34 = getelementptr inbounds i8, ptr %33, i64 %23 - store ptr %4, ptr %34, align 8 - %35 = icmp sgt i64 %23, 0 - br i1 %35, label %36, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - -36: ; preds = %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %33, ptr align 8 %20, i64 %23, i1 false) + %.not.i.i.i = icmp ne i64 %30, 0 + tail call void @llvm.assume(i1 %.not.i.i.i) + %31 = shl nuw nsw i64 %30, 3 + %32 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %31) #24 + %33 = getelementptr inbounds i8, ptr %32, i64 %23 + store ptr %4, ptr %33, align 8 + %34 = icmp sgt i64 %23, 0 + br i1 %34, label %35, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + +35: ; preds = %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %32, ptr align 8 %20, i64 %23, i1 false) br label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i -_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %36, %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i - %37 = getelementptr inbounds nuw i8, ptr %34, i64 8 +_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %35, %_ZNKSt6vectorIPN4pkpy8PyObjectESaIS2_EE12_M_check_lenEmPKc.exit.i.i + %36 = getelementptr inbounds nuw i8, ptr %33, i64 8 %.not.i17.i.i = icmp eq ptr %20, null - br i1 %.not.i17.i.i, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %38 + br i1 %.not.i17.i.i, label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %37 -38: ; preds = %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i +37: ; preds = %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i tail call void @_ZdlPvm(ptr noundef nonnull %20, i64 noundef %23) #25 br label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i -_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %38, %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i - store ptr %33, ptr %11, align 8 - store ptr %37, ptr %12, align 8 - %39 = getelementptr inbounds nuw ptr, ptr %33, i64 %30 - store ptr %39, ptr %14, align 8 +_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %37, %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i + store ptr %32, ptr %11, align 8 + store ptr %36, ptr %12, align 8 + %38 = getelementptr inbounds nuw ptr, ptr %32, i64 %30 + store ptr %38, ptr %14, align 8 br label %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE9push_backERKS2_.exit _ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE9push_backERKS2_.exit: ; preds = %16, %_ZNSt6vectorIPN4pkpy8PyObjectESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i - %40 = getelementptr inbounds nuw i8, ptr %0, i64 76 - %41 = load i32, ptr %40, align 4 - %42 = add nsw i32 %41, 1 - store i32 %42, ptr %40, align 4 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 76 + %40 = load i32, ptr %39, align 4 + %41 = add nsw i32 %40, 1 + store i32 %41, ptr %39, align 4 ret ptr %4 } diff --git a/bench/postgres/optimized/binaryheap.ll b/bench/postgres/optimized/binaryheap.ll index d9699f668bb..0ce563a476b 100644 --- a/bench/postgres/optimized/binaryheap.ll +++ b/bench/postgres/optimized/binaryheap.ll @@ -86,67 +86,67 @@ define void @binaryheap_build(ptr noundef captures(none) %0) local_unnamed_addr %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 br label %9 -9: ; preds = %.lr.ph, %sift_down.exit - %.05 = phi i32 [ %4, %.lr.ph ], [ %46, %sift_down.exit ] - %10 = zext nneg i32 %.05 to i64 +10: ; preds = %.lr.ph, %sift_down.exit + %indvars.iv = phi i32 [ %4, %.lr.ph ], [ %indvars.iv.next, %sift_down.exit ] + %10 = zext nneg i32 %indvars.iv to i64 %11 = getelementptr inbounds nuw ptr, ptr %6, i64 %10 %12 = load ptr, ptr %11, align 8 - br label %13 + br label %14 -13: ; preds = %40, %9 +14: ; preds = %41, %10 %.030.i = phi i32 [ %.05, %9 ], [ %.029.i, %40 ] - %14 = shl i32 %.030.i, 1 - %15 = or disjoint i32 %14, 1 - %16 = add i32 %14, 2 - %17 = load i32, ptr %0, align 8 - %18 = icmp slt i32 %16, %17 - br i1 %18, label %19, label %30 - -19: ; preds = %13 - %20 = load ptr, ptr %7, align 8 - %21 = sext i32 %15 to i64 - %22 = getelementptr inbounds ptr, ptr %6, i64 %21 - %23 = load ptr, ptr %22, align 8 - %24 = sext i32 %16 to i64 - %25 = getelementptr inbounds ptr, ptr %6, i64 %24 - %26 = load ptr, ptr %25, align 8 - %27 = load ptr, ptr %8, align 8 - %28 = tail call i32 %20(ptr noundef %23, ptr noundef %26, ptr noundef %27) #5 - %29 = icmp slt i32 %28, 0 - %spec.select.i = select i1 %29, i32 %16, i32 %15 + %15 = shl i32 %.030.i, 1 + %16 = or disjoint i32 %15, 1 + %17 = add i32 %15, 2 + %18 = load i32, ptr %0, align 8 + %19 = icmp slt i32 %17, %18 + br i1 %19, label %110, label %31 + +110: ; preds = %14 + %21 = load ptr, ptr %7, align 8 + %22 = sext i32 %16 to i64 + %23 = getelementptr inbounds ptr, ptr %6, i64 %22 + %24 = load ptr, ptr %23, align 8 + %25 = sext i32 %17 to i64 + %26 = getelementptr inbounds ptr, ptr %6, i64 %25 + %27 = load ptr, ptr %26, align 8 + %28 = load ptr, ptr %8, align 8 + %29 = tail call i32 %20(ptr noundef %24, ptr noundef %27, ptr noundef %28) #5 + %30 = icmp slt i32 %29, 0 + %spec.select.i = select i1 %210, i32 %17, i32 %16 %.pre.i = load i32, ptr %0, align 8 - br label %30 - -30: ; preds = %19, %13 - %31 = phi i32 [ %17, %13 ], [ %.pre.i, %19 ] - %.029.i = phi i32 [ %15, %13 ], [ %spec.select.i, %19 ] - %.not.i = icmp slt i32 %15, %31 - br i1 %.not.i, label %32, label %sift_down.exit - -32: ; preds = %30 - %33 = load ptr, ptr %7, align 8 - %34 = sext i32 %.029.i to i64 - %35 = getelementptr inbounds ptr, ptr %6, i64 %34 - %36 = load ptr, ptr %35, align 8 - %37 = load ptr, ptr %8, align 8 - %38 = tail call i32 %33(ptr noundef %12, ptr noundef %36, ptr noundef %37) #5 - %39 = icmp sgt i32 %38, -1 - br i1 %39, label %sift_down.exit, label %40 - -40: ; preds = %32 - %41 = load ptr, ptr %35, align 8 - %42 = sext i32 %.030.i to i64 - %43 = getelementptr inbounds ptr, ptr %6, i64 %42 - store ptr %41, ptr %43, align 8 - br label %13 - -sift_down.exit: ; preds = %30, %32 - %44 = sext i32 %.030.i to i64 - %45 = getelementptr inbounds ptr, ptr %6, i64 %44 - store ptr %12, ptr %45, align 8 - %46 = add nsw i32 %.05, -1 - %47 = icmp ult i32 %46, 1073741823 - br i1 %47, label %9, label %._crit_edge, !llvm.loop !3 + br label %31 + +31: ; preds = %110, %14 + %32 = phi i32 [ %18, %13 ], [ %.pre.i, %19 ] + %.029.i = phi i32 [ %16, %13 ], [ %spec.select.i, %19 ] + %.not.i = icmp slt i32 %16, %32 + br i1 %.not.i, label %33, label %sift_down.exit + +33: ; preds = %31 + %34 = load ptr, ptr %7, align 8 + %35 = sext i32 %.029.i to i64 + %36 = getelementptr inbounds ptr, ptr %6, i64 %35 + %37 = load ptr, ptr %36, align 8 + %38 = load ptr, ptr %8, align 8 + %39 = tail call i32 %33(ptr noundef %12, ptr noundef %37, ptr noundef %38) #5 + %40 = icmp sgt i32 %39, -1 + br i1 %310, label %sift_down.exit, label %41 + +41: ; preds = %33 + %42 = load ptr, ptr %36, align 8 + %43 = sext i32 %.030.i to i64 + %44 = getelementptr inbounds ptr, ptr %6, i64 %43 + store ptr %42, ptr %44, align 8 + br label %14 + +sift_down.exit: ; preds = %31, %33 + %45 = sext i32 %.030.i to i64 + %46 = getelementptr inbounds ptr, ptr %6, i64 %45 + store ptr %12, ptr %46, align 8 + %indvars.iv.next = add nsw i32 %indvars.iv, -1 + %47 = icmp ult i32 %indvars.iv.next, 1073741823 + br i1 %47, label %10, label %._crit_edge, !llvm.loop !3 ._crit_edge: ; preds = %sift_down.exit, %1 %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/postgres/optimized/c_keywords.ll b/bench/postgres/optimized/c_keywords.ll index bce0289bfab..8c0e5b1eb10 100644 --- a/bench/postgres/optimized/c_keywords.ll +++ b/bench/postgres/optimized/c_keywords.ll @@ -12,68 +12,68 @@ target triple = "x86_64-pc-linux-gnu" define dso_local range(i32 -1, 65536) i32 @ScanCKeywordLookup(ptr noundef readonly captures(none) %0) local_unnamed_addr #0 { %2 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #2 %3 = icmp ugt i64 %2, 8 - br i1 %3, label %39, label %4 + br i1 %3, label %36, label %4 4: ; preds = %1 - %5 = icmp eq i64 %2, 0 - br i1 %5, label %ScanCKeywords_hash_func.exit, label %.lr.ph.i + %.not11.i = icmp eq i64 %2, 0 + br i1 %.not11.i, label %ScanCKeywords_hash_func.exit, label %.lr.ph.i .lr.ph.i: ; preds = %4, %.lr.ph.i - %.015.i = phi i64 [ %6, %.lr.ph.i ], [ %2, %4 ] - %.0814.i = phi i32 [ %13, %.lr.ph.i ], [ 0, %4 ] - %.0913.i = phi i32 [ %11, %.lr.ph.i ], [ 0, %4 ] - %.01012.i = phi ptr [ %7, %.lr.ph.i ], [ %0, %4 ] - %6 = add i64 %.015.i, -1 - %7 = getelementptr inbounds nuw i8, ptr %.01012.i, i64 1 - %8 = load i8, ptr %.01012.i, align 1 - %9 = mul i32 %.0913.i, 257 - %10 = zext i8 %8 to i32 - %11 = add i32 %9, %10 - %12 = mul i32 %.0814.i, 17 - %13 = add i32 %12, %10 - %.not.i = icmp eq i64 %6, 0 + %.015.i = phi i64 [ %5, %.lr.ph.i ], [ %2, %4 ] + %.0814.i = phi i32 [ %12, %.lr.ph.i ], [ 0, %4 ] + %.0913.i = phi i32 [ %10, %.lr.ph.i ], [ 0, %4 ] + %.01012.i = phi ptr [ %6, %.lr.ph.i ], [ %0, %4 ] + %5 = add i64 %.015.i, -1 + %6 = getelementptr inbounds nuw i8, ptr %.01012.i, i64 1 + %7 = load i8, ptr %.01012.i, align 1 + %8 = mul i32 %.0913.i, 257 + %9 = zext i8 %7 to i32 + %10 = add i32 %8, %9 + %11 = mul i32 %.0814.i, 17 + %12 = add i32 %11, %9 + %.not.i = icmp eq i64 %5, 0 br i1 %.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !4 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i - %14 = urem i32 %11, 53 - %15 = zext nneg i32 %14 to i64 - %16 = urem i32 %13, 53 - %17 = zext nneg i32 %16 to i64 + %13 = urem i32 %10, 53 + %14 = zext nneg i32 %13 to i64 + %15 = urem i32 %12, 53 + %16 = zext nneg i32 %15 to i64 br label %ScanCKeywords_hash_func.exit ScanCKeywords_hash_func.exit: ; preds = %4, %._crit_edge.loopexit.i - %.09.lcssa.i = phi i64 [ 0, %4 ], [ %15, %._crit_edge.loopexit.i ] - %.08.lcssa.i = phi i64 [ 0, %4 ], [ %17, %._crit_edge.loopexit.i ] - %18 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.09.lcssa.i - %19 = load i8, ptr %18, align 1 - %20 = sext i8 %19 to i32 - %21 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.08.lcssa.i - %22 = load i8, ptr %21, align 1 - %23 = sext i8 %22 to i32 - %24 = add nsw i32 %23, %20 - %25 = icmp ugt i32 %24, -257 + %.09.lcssa.i = phi i64 [ 0, %4 ], [ %14, %._crit_edge.loopexit.i ] + %.08.lcssa.i = phi i64 [ 0, %4 ], [ %16, %._crit_edge.loopexit.i ] + %17 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.09.lcssa.i + %18 = load i8, ptr %17, align 1 + %19 = sext i8 %18 to i32 + %20 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_hash_func.h, i64 %.08.lcssa.i + %21 = load i8, ptr %20, align 1 + %22 = sext i8 %21 to i32 + %23 = add nsw i32 %22, %19 + %or.cond = icmp ugt i32 %23, -257 %26 = icmp sgt i32 %24, 25 %or.cond = or i1 %25, %26 br i1 %or.cond, label %39, label %27 -27: ; preds = %ScanCKeywords_hash_func.exit - %28 = zext nneg i32 %24 to i64 - %29 = getelementptr inbounds nuw i16, ptr @ScanCKeywords_kw_offsets, i64 %28 - %30 = load i16, ptr %29, align 2 - %31 = zext i16 %30 to i64 - %32 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_kw_string, i64 %31 - %33 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %32, ptr noundef nonnull dereferenceable(1) %0) #2 - %34 = icmp eq i32 %33, 0 - br i1 %34, label %35, label %39 +24: ; preds = %ScanCKeywords_hash_func.exit + %25 = zext nneg i32 %23 to i64 + %26 = getelementptr inbounds nuw i16, ptr @ScanCKeywords_kw_offsets, i64 %25 + %27 = load i16, ptr %26, align 2 + %28 = zext i16 %27 to i64 + %29 = getelementptr inbounds nuw i8, ptr @ScanCKeywords_kw_string, i64 %28 + %30 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %0) #2 + %31 = icmp eq i32 %30, 0 + br i1 %31, label %32, label %36 -35: ; preds = %27 - %36 = getelementptr inbounds nuw i16, ptr @ScanCKeywordTokens, i64 %28 - %37 = load i16, ptr %36, align 2 - %38 = zext i16 %37 to i32 - br label %39 +32: ; preds = %24 + %33 = getelementptr inbounds nuw i16, ptr @ScanCKeywordTokens, i64 %25 + %34 = load i16, ptr %33, align 2 + %35 = zext i16 %34 to i32 + br label %36 -39: ; preds = %27, %ScanCKeywords_hash_func.exit, %1, %35 - %.0 = phi i32 [ %38, %35 ], [ -1, %1 ], [ -1, %ScanCKeywords_hash_func.exit ], [ -1, %27 ] +36: ; preds = %24, %ScanCKeywords_hash_func.exit, %1, %32 + %.0 = phi i32 [ %35, %35 ], [ -1, %1 ], [ -1, %ScanCKeywords_hash_func.exit ], [ -1, %27 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/int8.ll b/bench/postgres/optimized/int8.ll index 3d8473bebb0..4e29ecc2ca7 100644 --- a/bench/postgres/optimized/int8.ll +++ b/bench/postgres/optimized/int8.ll @@ -760,45 +760,45 @@ define dso_local range(i64 0, -9223372036854775807) i64 @int8gcd(ptr noundef rea %spec.select.i = select i1 %10, i64 %3, i64 %5 %spec.select28.i = select i1 %10, i64 %5, i64 %3 %11 = icmp eq i64 %spec.select28.i, -9223372036854775808 - br i1 %11, label %12, label %20 + br i1 %11, label %12, label %19 12: ; preds = %1 %13 = and i64 %spec.select.i, 9223372036854775807 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %15, label %19 + %or.cond.i = icmp eq i64 %13, 0 + br i1 %or.cond.i, label %14, label %18 -15: ; preds = %12 - %16 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %17 = tail call i32 @errcode(i32 noundef 50331778) #10 - %18 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +14: ; preds = %12 + %15 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %16 = tail call i32 @errcode(i32 noundef 50331778) #10 + %17 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 636, ptr noundef nonnull @__func__.int8gcd_internal) #10 unreachable -19: ; preds = %12 +18: ; preds = %12 %cond.i = icmp eq i64 %spec.select.i, -1 br i1 %cond.i, label %int8gcd_internal.exit, label %.lr.ph.i.preheader -20: ; preds = %1 +19: ; preds = %1 %.not30.i = icmp eq i64 %spec.select.i, 0 br i1 %.not30.i, label %._crit_edge.i, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %20, %19 +.lr.ph.i.preheader: ; preds = %19, %18 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %.132.i = phi i64 [ %.12731.i, %.lr.ph.i ], [ %spec.select28.i, %.lr.ph.i.preheader ] - %.12731.i = phi i64 [ %21, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] - %21 = srem i64 %.132.i, %.12731.i - %.not.i = icmp eq i64 %21, 0 + %.12731.i = phi i64 [ %20, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] + %20 = srem i64 %.132.i, %.12731.i + %.not.i = icmp eq i64 %20, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !9 -._crit_edge.i: ; preds = %.lr.ph.i, %20 - %.1.lcssa.i = phi i64 [ %spec.select28.i, %20 ], [ %.12731.i, %.lr.ph.i ] +._crit_edge.i: ; preds = %.lr.ph.i, %19 + %.1.lcssa.i = phi i64 [ %spec.select28.i, %19 ], [ %.12731.i, %.lr.ph.i ] %spec.select29.i = tail call i64 @llvm.abs.i64(i64 %.1.lcssa.i, i1 false) br label %int8gcd_internal.exit -int8gcd_internal.exit: ; preds = %19, %._crit_edge.i - %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %19 ] +int8gcd_internal.exit: ; preds = %18, %._crit_edge.i + %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %18 ] ret i64 %.0.i } @@ -811,7 +811,7 @@ define dso_local range(i64 0, -9223372036854775808) i64 @int8lcm(ptr noundef rea %6 = icmp eq i64 %3, 0 %7 = icmp eq i64 %5, 0 %or.cond = select i1 %6, i1 true, i1 %7 - br i1 %or.cond, label %42, label %8 + br i1 %or.cond, label %38, label %8 8: ; preds = %1 %9 = tail call i64 @llvm.abs.i64(i64 %3, i1 false) @@ -826,67 +826,67 @@ define dso_local range(i64 0, -9223372036854775808) i64 @int8lcm(ptr noundef rea 15: ; preds = %8 %16 = and i64 %spec.select.i, 9223372036854775807 - %17 = icmp eq i64 %16, 0 - br i1 %17, label %18, label %22 + %or.cond.i = icmp eq i64 %16, 0 + br i1 %or.cond.i, label %17, label %21 -18: ; preds = %15 - %19 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %20 = tail call i32 @errcode(i32 noundef 50331778) #10 - %21 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +17: ; preds = %15 + %18 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %19 = tail call i32 @errcode(i32 noundef 50331778) #10 + %20 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 636, ptr noundef nonnull @__func__.int8gcd_internal) #10 unreachable -22: ; preds = %15 - %23 = icmp eq i64 %spec.select.i, -1 - br i1 %23, label %int8gcd_internal.exit, label %.lr.ph.i.preheader +21: ; preds = %15 + %cond.i = icmp eq i64 %spec.select.i, -1 + br i1 %cond.i, label %int8gcd_internal.exit, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %8, %22 +.lr.ph.i.preheader: ; preds = %8, %21 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %.132.i = phi i64 [ %.12731.i, %.lr.ph.i ], [ %spec.select28.i, %.lr.ph.i.preheader ] - %.12731.i = phi i64 [ %24, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] - %24 = srem i64 %.132.i, %.12731.i - %.not.i = icmp eq i64 %24, 0 + %.12731.i = phi i64 [ %22, %.lr.ph.i ], [ %spec.select.i, %.lr.ph.i.preheader ] + %22 = srem i64 %.132.i, %.12731.i + %.not.i = icmp eq i64 %22, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !9 ._crit_edge.i: ; preds = %.lr.ph.i %spec.select29.i = tail call i64 @llvm.abs.i64(i64 %.12731.i, i1 false) br label %int8gcd_internal.exit -int8gcd_internal.exit: ; preds = %22, %._crit_edge.i +int8gcd_internal.exit: ; preds = %21, %._crit_edge.i %.0.i = phi i64 [ %spec.select29.i, %._crit_edge.i ], [ 1, %22 ] - %25 = sdiv i64 %3, %.0.i - %26 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %25, i64 %5) - %27 = extractvalue { i64, i1 } %26, 1 - %28 = extractvalue { i64, i1 } %26, 0 - br i1 %27, label %29, label %33, !prof !7 - -29: ; preds = %int8gcd_internal.exit - %30 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %31 = tail call i32 @errcode(i32 noundef 50331778) #10 - %32 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 + %23 = sdiv i64 %3, %.0.i + %24 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %23, i64 %5) + %25 = extractvalue { i64, i1 } %24, 1 + %26 = extractvalue { i64, i1 } %24, 0 + br i1 %25, label %27, label %31, !prof !7 + +27: ; preds = %int8gcd_internal.exit + %28 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %29 = tail call i32 @errcode(i32 noundef 50331778) #10 + %30 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 704, ptr noundef nonnull @__func__.int8lcm) #10 unreachable -33: ; preds = %int8gcd_internal.exit - %34 = icmp eq i64 %28, -9223372036854775808 - br i1 %34, label %35, label %39, !prof !7 +31: ; preds = %int8gcd_internal.exit + %32 = icmp eq i64 %26, -9223372036854775808 + br i1 %32, label %33, label %37, !prof !7 -35: ; preds = %33 - %36 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 - %37 = tail call i32 @errcode(i32 noundef 50331778) #10 - %38 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 +33: ; preds = %31 + %34 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 + %35 = tail call i32 @errcode(i32 noundef 50331778) #10 + %36 = tail call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.2) #10 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 710, ptr noundef nonnull @__func__.int8lcm) #10 unreachable -39: ; preds = %33 - %40 = icmp ugt i64 %28, -9223372036854775808 +37: ; preds = %31 + %40 = icmp ugt i64 %26, -9223372036854775808 %41 = sub nsw i64 0, %28 %spec.select = select i1 %40, i64 %41, i64 %28 br label %42 -42: ; preds = %39, %1 +38: ; preds = %37, %1 %.0 = phi i64 [ 0, %1 ], [ %spec.select, %39 ] ret i64 %.0 } diff --git a/bench/postgres/optimized/inval.ll b/bench/postgres/optimized/inval.ll index 712c9209899..b68cf440c19 100644 --- a/bench/postgres/optimized/inval.ll +++ b/bench/postgres/optimized/inval.ll @@ -144,8 +144,8 @@ define dso_local void @LocalExecuteInvalidationMessage(ptr noundef readonly capt br i1 %24, label %.lr.ph.i, label %CallSyscacheCallbacks.exit .lr.ph.i: ; preds = %21, %.lr.ph.i - %.015.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.014.i, %21 ] - %25 = zext nneg i32 %.015.i to i64 + %.0.in.in13.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.014.i, %21 ] + %.0.in.i = zext nneg i32 %.0.in.in13.i to i64 %26 = getelementptr inbounds nuw %struct.SYSCACHECALLBACK, ptr @syscache_callback_list, i64 %25 %27 = getelementptr inbounds nuw i8, ptr %26, i64 8 %28 = load ptr, ptr %27, align 8 @@ -319,8 +319,8 @@ define dso_local void @CallSyscacheCallbacks(i32 noundef %0, i32 noundef %1) loc br i1 %9, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %6, %.lr.ph - %.015 = phi i32 [ %.0, %.lr.ph ], [ %.014, %6 ] - %10 = zext nneg i32 %.015 to i64 + %.0.in.in13 = phi i32 [ %.0, %.lr.ph ], [ %.014, %6 ] + %.0.in = zext nneg i32 %.0.in.in13 to i64 %11 = getelementptr inbounds nuw %struct.SYSCACHECALLBACK, ptr @syscache_callback_list, i64 %10 %12 = getelementptr inbounds nuw i8, ptr %11, i64 8 %13 = load ptr, ptr %12, align 8 diff --git a/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll b/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll index 40fe148c583..b9e409f724e 100644 --- a/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll +++ b/bench/postgres/optimized/stem_ISO_8859_1_indonesian.ll @@ -184,7 +184,7 @@ define hidden range(i32 -2147483648, 2) i32 @indonesian_ISO_8859_1_stem(ptr noun 79: ; preds = %73 %80 = tail call fastcc i32 @r_remove_first_order_prefix(ptr noundef nonnull %0) %81 = icmp eq i32 %80, 0 - br i1 %81, label %.thread190, label %82 + br i1 %81, label %.thread194, label %82 82: ; preds = %79 %83 = icmp slt i32 %80, 0 @@ -208,59 +208,59 @@ define hidden range(i32 -2147483648, 2) i32 @indonesian_ISO_8859_1_stem(ptr noun i32 1, label %.thread172 ] -.thread172: ; preds = %90 +.thread174: ; preds = %90 store i32 %85, ptr %5, align 8 - %93 = load ptr, ptr %2, align 8 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 4 - %95 = load i32, ptr %94, align 4 - %96 = icmp sgt i32 %95, 2 - br i1 %96, label %97, label %r_remove_particle.exit.sink.split - -97: ; preds = %.thread172 - %98 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) - %99 = icmp eq i32 %98, 0 - %100 = icmp slt i32 %98, 0 - %..5 = select i1 %100, i32 %98, i32 %.016.i.ph - %.9 = select i1 %99, i32 %.016.i.ph, i32 %..5 - %.not = icmp sgt i32 %98, -1 + %96 = load ptr, ptr %2, align 8 + %97 = getelementptr inbounds nuw i8, ptr %96, i64 4 + %98 = load i32, ptr %97, align 4 + %99 = icmp sgt i32 %98, 2 + br i1 %99, label %100, label %r_remove_particle.exit.sink.split + +100: ; preds = %.thread174 + %101 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) + %102 = icmp eq i32 %101, 0 + %103 = icmp slt i32 %101, 0 + %..5 = select i1 %103, i32 %101, i32 %.016.i.ph + %.9 = select i1 %102, i32 %.016.i.ph, i32 %..5 + %.not = icmp sgt i32 %101, -1 br i1 %.not, label %r_remove_particle.exit.sink.split, label %r_remove_particle.exit -.thread190: ; preds = %79 +.thread194: ; preds = %79 store i32 %74, ptr %5, align 8 - %101 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) - %102 = icmp ult i32 %101, 2 - br i1 %102, label %103, label %r_remove_particle.exit + %104 = tail call fastcc i32 @r_remove_second_order_prefix(ptr noundef nonnull %0) + %105 = icmp ult i32 %104, 2 + br i1 %105, label %106, label %r_remove_particle.exit -103: ; preds = %.thread190 +106: ; preds = %.thread194 store i32 %74, ptr %5, align 8 - %104 = load ptr, ptr %2, align 8 - %105 = getelementptr inbounds nuw i8, ptr %104, i64 4 - %106 = load i32, ptr %105, align 4 - %107 = icmp sgt i32 %106, 2 - br i1 %107, label %108, label %r_remove_particle.exit.sink.split + %107 = load ptr, ptr %2, align 8 + %108 = getelementptr inbounds nuw i8, ptr %107, i64 4 + %109 = load i32, ptr %108, align 4 + %110 = icmp sgt i32 %109, 2 + br i1 %110, label %111, label %r_remove_particle.exit.sink.split -108: ; preds = %103 +111: ; preds = %106 store i32 %74, ptr %24, align 8 - %109 = load i32, ptr %25, align 4 - store i32 %109, ptr %5, align 8 - %110 = tail call fastcc i32 @r_remove_suffix(ptr noundef nonnull %0) - %.fr = freeze i32 %110 - %.lobit203 = lshr i32 %.fr, 31 - %111 = add nsw i32 %.lobit203, -1 - %switch217 = icmp ult i32 %111, 7 - br i1 %switch217, label %.critedge, label %r_remove_particle.exit.sink.split - -.critedge: ; preds = %108 - %.not212 = icmp sgt i32 %.fr, -1 - %spec.select = select i1 %.not212, i32 1, i32 %.fr + %112 = load i32, ptr %25, align 4 + store i32 %112, ptr %5, align 8 + %113 = tail call fastcc i32 @r_remove_suffix(ptr noundef nonnull %0) + %.fr = freeze i32 %113 + %.lobit207 = lshr i32 %.fr, 31 + %114 = add nsw i32 %.lobit207, -1 + %switch221 = icmp ult i32 %114, 7 + br i1 %switch221, label %.critedge, label %r_remove_particle.exit.sink.split + +.critedge: ; preds = %111 + %.not216 = icmp sgt i32 %.fr, -1 + %spec.select = select i1 %.not216, i32 1, i32 %.fr br label %r_remove_particle.exit -r_remove_particle.exit.sink.split: ; preds = %103, %108, %84, %97, %.thread172, %90 +r_remove_particle.exit.sink.split: ; preds = %106, %111, %84, %100, %.thread174, %90 store i32 %74, ptr %5, align 8 br label %r_remove_particle.exit -r_remove_particle.exit: ; preds = %.critedge, %r_remove_particle.exit.sink.split, %90, %82, %97, %63, %.thread190, %37, %73, %47, %._crit_edge - %.0 = phi i32 [ 0, %._crit_edge ], [ 0, %47 ], [ 0, %73 ], [ %40, %37 ], [ %101, %.thread190 ], [ %66, %63 ], [ %.9, %97 ], [ %80, %82 ], [ %92, %90 ], [ %spec.select, %.critedge ], [ 1, %r_remove_particle.exit.sink.split ] +r_remove_particle.exit: ; preds = %.critedge, %r_remove_particle.exit.sink.split, %90, %82, %100, %63, %.thread194, %37, %73, %47, %._crit_edge + %.0 = phi i32 [ 0, %._crit_edge ], [ 0, %47 ], [ 0, %73 ], [ %40, %37 ], [ %104, %.thread190 ], [ %66, %63 ], [ %.9, %97 ], [ %80, %82 ], [ %92, %90 ], [ %spec.select, %.critedge ], [ 1, %r_remove_particle.exit.sink.split ] ret i32 %.0 } diff --git a/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll b/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll index 014ee588af6..ae684656da1 100644 --- a/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll +++ b/bench/proj/optimized/proj_crs_to_crs_fuzzer.ll @@ -118,58 +118,58 @@ define hidden noundef range(i32 -1, 1) i32 @main(i32 noundef %0, ptr noundef rea %. = sext i1 %6 to i32 br label %34 -7: ; preds = %2 +7:; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 %9 = load ptr, ptr %8, align 8, !tbaa !10 %10 = tail call noalias ptr @fopen(ptr noundef %9, ptr noundef nonnull @.str.5) %.not = icmp eq ptr %10, null br i1 %.not, label %11, label %15 -11: ; preds = %7 +11:; preds = %7 %12 = load ptr, ptr @stderr, align 8, !tbaa !13 %13 = load ptr, ptr %8, align 8, !tbaa !10 %14 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.6, ptr noundef %13) #17 tail call void @exit(i32 noundef 1) #18 unreachable -15: ; preds = %7 - %16 = tail call i32 @fseek(ptr noundef nonnull %10, i64 noundef 0, i32 noundef 2) - %17 = tail call i64 @ftell(ptr noundef nonnull %10) - %18 = tail call i32 @fseek(ptr noundef nonnull %10, i64 noundef 0, i32 noundef 0) - %sext = shl i64 %17, 32 - %19 = ashr exact i64 %sext, 32 - %20 = tail call noalias ptr @malloc(i64 noundef %19) #16 - %.not25 = icmp eq ptr %20, null - br i1 %.not25, label %21, label %25 - -21: ; preds = %15 - %22 = load ptr, ptr @stderr, align 8, !tbaa !13 - %23 = tail call i64 @fwrite(ptr nonnull @.str.7, i64 15, i64 1, ptr %22) #15 - %24 = tail call i32 @fclose(ptr noundef nonnull %10) +14: ; preds = %7 + %15 = tail call i32 @fseek(ptr noundef nonnull %10, i64 noundef 0, i32 noundef 2) + %16 = tail call i64 @ftell(ptr noundef nonnull %10) + %17 = tail call i32 @fseek(ptr noundef nonnull %10, i64 noundef 0, i32 noundef 0) + %sext = shl i64 %16, 32 + %18 = ashr exact i64 %sext, 32 + %19 = tail call noalias ptr @malloc(i64 noundef %18) #16 + %.not25 = icmp eq ptr %19, null + br i1 %.not25, label %20, label %24 + +20: ; preds = %14 + %21 = load ptr, ptr @stderr, align 8, !tbaa !13 + %22 = tail call i64 @fwrite(ptr nonnull @.str.7, i64 15, i64 1, ptr %21) #15 + %23 = tail call i32 @fclose(ptr noundef nonnull %10) tail call void @exit(i32 noundef 1) #18 unreachable -25: ; preds = %15 - %26 = tail call i64 @fread(ptr noundef nonnull %20, i64 noundef %19, i64 noundef 1, ptr noundef nonnull %10) - %.not26 = icmp eq i64 %26, 1 - br i1 %.not26, label %31, label %27 +24: ; preds = %14 + %25 = tail call i64 @fread(ptr noundef nonnull %19, i64 noundef %18, i64 noundef 1, ptr noundef nonnull %10) + %.not26 = icmp eq i64 %25, 1 + br i1 %.not26, label %30, label %26 -27: ; preds = %25 - %28 = load ptr, ptr @stderr, align 8, !tbaa !13 - %29 = tail call i64 @fwrite(ptr nonnull @.str.8, i64 14, i64 1, ptr %28) #15 - %30 = tail call i32 @fclose(ptr noundef nonnull %10) - tail call void @free(ptr noundef nonnull %20) #13 +26: ; preds = %24 + %27 = load ptr, ptr @stderr, align 8, !tbaa !13 + %28 = tail call i64 @fwrite(ptr nonnull @.str.8, i64 14, i64 1, ptr %27) #15 + %29 = tail call i32 @fclose(ptr noundef nonnull %10) + tail call void @free(ptr noundef nonnull %19) #13 tail call void @exit(i32 noundef 1) #18 unreachable -31: ; preds = %25 - %32 = tail call i32 @fclose(ptr noundef nonnull %10) - %33 = tail call i32 @LLVMFuzzerTestOneInput(ptr noundef nonnull %20, i64 noundef %19) - tail call void @free(ptr noundef nonnull %20) #13 - br label %34 +30: ; preds = %24 + %31 = tail call i32 @fclose(ptr noundef nonnull %10) + %32 = tail call i32 @LLVMFuzzerTestOneInput(ptr noundef nonnull %19, i64 noundef %18) + tail call void @free(ptr noundef nonnull %19) #13 + br label %33 -34: ; preds = %31, %4 - %.1 = phi i32 [ %., %4 ], [ %33, %31 ] +33: ; preds = %30, %4 + %.1 = phi i32 [ %., %4 ], [ %32, %31 ] ret i32 %.1 } diff --git a/bench/protobuf/optimized/name_resolver.ll b/bench/protobuf/optimized/name_resolver.ll index 21932bcab78..1aee9c505a1 100644 --- a/bench/protobuf/optimized/name_resolver.ll +++ b/bench/protobuf/optimized/name_resolver.ll @@ -190,27 +190,27 @@ if.then: ; preds = %entry %_has_bits_.i = getelementptr inbounds nuw i8, ptr %3, i64 40 %4 = load i32, ptr %_has_bits_.i, align 4 %and.i = and i32 %4, 2 - %5 = icmp eq i32 %and.i, 0 - br i1 %5, label %if.else, label %if.then5 + %cmp.i.not = icmp eq i32 %and.i, 0 + br i1 %cmp.i.not, label %if.else, label %if.then5 if.then5: ; preds = %if.then %java_outer_classname_.i.i = getelementptr inbounds nuw i8, ptr %3, i64 80 - %6 = load ptr, ptr %java_outer_classname_.i.i, align 8 - %7 = ptrtoint ptr %6 to i64 - %and.i.i.i = and i64 %7, -4 - %8 = inttoptr i64 %and.i.i.i to ptr - %call8 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i, ptr noundef nonnull align 8 dereferenceable(32) %8) + %5 = load ptr, ptr %java_outer_classname_.i.i, align 8 + %6 = ptrtoint ptr %5 to i64 + %and.i.i.i = and i64 %6, -4 + %7 = inttoptr i64 %and.i.i.i to ptr + %call8 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i, ptr noundef nonnull align 8 dereferenceable(32) %7) br label %if.end15 if.else: ; preds = %if.then call void @_ZN6google8protobuf8compiler4java17ClassNameResolver32GetFileDefaultImmutableClassNameB5cxx11EPKNS0_14FileDescriptorE(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, ptr nonnull align 8 poison, ptr noundef nonnull %2) %call9 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #18 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #18 - %9 = load ptr, ptr %file.addr, align 8 + %8 = load ptr, ptr %file.addr, align 8 %call10 = call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i) #18 - %10 = extractvalue { i64, ptr } %call10, 0 - %11 = extractvalue { i64, ptr } %call10, 1 - %call11 = call noundef zeroext i1 @_ZN6google8protobuf8compiler4java17ClassNameResolver23HasConflictingClassNameEPKNS0_14FileDescriptorESt17basic_string_viewIcSt11char_traitsIcEENS2_12NameEqualityE(ptr nonnull align 8 poison, ptr noundef %9, i64 %10, ptr %11, i32 noundef 1) + %9 = extractvalue { i64, ptr } %call10, 0 + %10 = extractvalue { i64, ptr } %call10, 1 + %call11 = call noundef zeroext i1 @_ZN6google8protobuf8compiler4java17ClassNameResolver23HasConflictingClassNameEPKNS0_14FileDescriptorESt17basic_string_viewIcSt11char_traitsIcEENS2_12NameEqualityE(ptr nonnull align 8 poison, ptr noundef %8, i64 %9, ptr %10, i32 noundef 1) br i1 %call11, label %if.then12, label %if.end15 if.then12: ; preds = %if.else @@ -2093,13 +2093,13 @@ for.body.i: ; preds = %for.inc.i, %for.bod for.inc.i: ; preds = %for.body.i %sub.i.i = add nsw i32 %__begin0.sroa.0.027.i, -1 %and.i10.i = and i32 %sub.i.i, %__begin0.sroa.0.027.i - %12 = icmp eq i32 %and.i10.i, 0 - br i1 %12, label %for.end.i, label %for.body.i + %cmp.i.not.i = icmp eq i32 %and.i10.i, 0 + br i1 %cmp.i.not.i, label %for.end.i, label %for.body.i for.end.i: ; preds = %for.inc.i, %while.body.i %cmp.i.i11.i = icmp eq <16 x i8> %7, splat (i8 -128) - %13 = bitcast <16 x i1> %cmp.i.i11.i to i16 - %cmp.i12.not.i = icmp eq i16 %13, 0 + %12 = bitcast <16 x i1> %cmp.i.i11.i to i16 + %cmp.i12.not.i = icmp eq i16 %12, 0 br i1 %cmp.i12.not.i, label %if.end36.i, label %if.then if.end36.i: ; preds = %for.end.i @@ -2109,10 +2109,10 @@ if.end36.i: ; preds = %for.end.i if.then: ; preds = %for.end.i %call38.i = tail call noundef i64 @_ZN4absl12lts_2023080218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPKN6google8protobuf14FileDescriptorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_6HashEqIS8_vE4HashENSH_2EqESaISt4pairIKS8_SE_EEE14prepare_insertEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %conv1.i.i.i.i.i.i.i.i.i.i.i.i.i) - %14 = load ptr, ptr %slots_.i.i.i, align 8 - %add.ptr.i3 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %14, i64 %call38.i - %15 = load ptr, ptr %k, align 8 - store ptr %15, ptr %add.ptr.i3, align 8 + %13 = load ptr, ptr %slots_.i.i.i, align 8 + %add.ptr.i3 = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %13, i64 %call38.i + %14 = load ptr, ptr %k, align 8 + store ptr %14, ptr %add.ptr.i3, align 8 %second.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %add.ptr.i3, i64 8 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i.i.i) #18 %.pre = load ptr, ptr %this, align 8 @@ -2120,12 +2120,12 @@ if.then: ; preds = %for.end.i br label %if.end if.end: ; preds = %for.body.i, %if.then - %16 = phi ptr [ %.pre20, %if.then ], [ %6, %for.body.i ] - %17 = phi ptr [ %.pre, %if.then ], [ %0, %for.body.i ] + %15 = phi ptr [ %.pre20, %if.then ], [ %6, %for.body.i ] + %16 = phi ptr [ %.pre, %if.then ], [ %0, %for.body.i ] %retval.sroa.3.0.i16 = phi i8 [ 1, %if.then ], [ 0, %for.body.i ] %retval.sroa.0.0.i15 = phi i64 [ %call38.i, %if.then ], [ %and.i.i, %for.body.i ] - %add.ptr.i4 = getelementptr inbounds i8, ptr %17, i64 %retval.sroa.0.0.i15 - %add.ptr3.i = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %16, i64 %retval.sroa.0.0.i15 + %add.ptr.i4 = getelementptr inbounds i8, ptr %16, i64 %retval.sroa.0.0.i15 + %add.ptr3.i = getelementptr inbounds %"union.absl::lts_20230802::container_internal::map_slot_type", ptr %15, i64 %retval.sroa.0.0.i15 store ptr %add.ptr.i4, ptr %agg.result, align 8 %ref.tmp3.sroa.2.0.agg.result.sroa_idx = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store ptr %add.ptr3.i, ptr %ref.tmp3.sroa.2.0.agg.result.sroa_idx, align 8 diff --git a/bench/protobuf/optimized/strtod.ll b/bench/protobuf/optimized/strtod.ll index 4be1e4653f5..51b0c5b9821 100644 --- a/bench/protobuf/optimized/strtod.ll +++ b/bench/protobuf/optimized/strtod.ll @@ -287,22 +287,22 @@ if.end14.i: ; preds = %if.else8.i store i32 0, ptr %call.i.i, align 4 %call1.i.i = call float @strtof(ptr noundef nonnull %buffer, ptr noundef nonnull %endptr.i.i) #13 %3 = load i8, ptr %buffer, align 16 - %.not.i.i = icmp eq i8 %3, 0 - br i1 %.not.i.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i, label %land.lhs.true.i.i + %cmp.not.i.i = icmp eq i8 %3, 0 + br i1 %cmp.not.i.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i, label %land.lhs.true.i.i land.lhs.true.i.i: ; preds = %if.end14.i %4 = load ptr, ptr %endptr.i.i, align 8 %5 = load i8, ptr %4, align 1 - %6 = icmp eq i8 %5, 0 - br i1 %6, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i + %cmp3.i.i = icmp eq i8 %5, 0 + br i1 %cmp3.i.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.i, label %_ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i _ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.thread.i: ; preds = %land.lhs.true.i.i, %if.end14.i call void @llvm.lifetime.end.p0(ptr nonnull %endptr.i.i) br label %if.then20.i _ZN6google8protobuf2io12_GLOBAL__N_111safe_strtofEPKcPf.exit.i: ; preds = %land.lhs.true.i.i - %7 = load i32, ptr %call.i.i, align 4 - %cmp5.i.i = icmp ne i32 %7, 0 + %6 = load i32, ptr %call.i.i, align 4 + %cmp5.i.i = icmp ne i32 %6, 0 call void @llvm.lifetime.end.p0(ptr nonnull %endptr.i.i) %cmp19.i = fcmp une float %call1.i.i, %value %or.cond.i = select i1 %cmp5.i.i, i1 true, i1 %cmp19.i @@ -341,7 +341,7 @@ call.i.noexc: ; preds = %_ZN6google8protobuf to label %invoke.cont unwind label %lpad.i lpad.i: ; preds = %.noexc - %8 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) #13 br label %lpad.body @@ -351,12 +351,12 @@ invoke.cont: ; preds = %.noexc ret void lpad: ; preds = %call.i.noexc, %_ZN6google8protobuf2io12_GLOBAL__N_113FloatToBufferEfPc.exit - %9 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } cleanup br label %lpad.body lpad.body: ; preds = %lpad.i, %lpad - %eh.lpad-body = phi { ptr, i32 } [ %9, %lpad ], [ %8, %lpad.i ] + %eh.lpad-body = phi { ptr, i32 } [ %8, %lpad ], [ %7, %lpad.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #13 resume { ptr, i32 } %eh.lpad-body } @@ -393,10 +393,10 @@ if.end4: ; preds = %switch.early.test.i %incdec.ptr5 = getelementptr inbounds nuw i8, ptr %buffer.addr.0, i64 1 %2 = load i8, ptr %incdec.ptr5, align 1 %3 = add i8 %2, -48 - %or.cond.i15 = icmp ult i8 %3, 10 - br i1 %or.cond.i15, label %if.end15, label %switch.early.test.i16 + %or.cond.i14 = icmp ult i8 %3, 10 + br i1 %or.cond.i14, label %if.end15, label %switch.early.test.i15 -switch.early.test.i16: ; preds = %if.end4 +switch.early.test.i15: ; preds = %if.end4 switch i8 %2, label %do.body [ i8 101, label %if.end15 i8 69, label %if.end15 @@ -405,15 +405,15 @@ switch.early.test.i16: ; preds = %if.end4 i8 0, label %if.end15 ] -do.body: ; preds = %switch.early.test.i16, %switch.early.test.i20 +do.body: ; preds = %switch.early.test.i15, %switch.early.test.i19 %buffer.addr.1 = phi ptr [ %incdec.ptr10, %switch.early.test.i20 ], [ %incdec.ptr5, %switch.early.test.i16 ] %incdec.ptr10 = getelementptr inbounds nuw i8, ptr %buffer.addr.1, i64 1 %4 = load i8, ptr %incdec.ptr10, align 1 %5 = add i8 %4, -48 - %or.cond.i19 = icmp ult i8 %5, 10 - br i1 %or.cond.i19, label %do.end, label %switch.early.test.i20 + %or.cond.i18 = icmp ult i8 %5, 10 + br i1 %or.cond.i18, label %do.end, label %switch.early.test.i19 -switch.early.test.i20: ; preds = %do.body +switch.early.test.i19: ; preds = %do.body switch i8 %4, label %do.body [ i8 101, label %do.end i8 69, label %do.end @@ -422,13 +422,13 @@ switch.early.test.i20: ; preds = %do.body i8 0, label %do.end ] -do.end: ; preds = %switch.early.test.i20, %switch.early.test.i20, %switch.early.test.i20, %switch.early.test.i20, %switch.early.test.i20, %do.body +do.end: ; preds = %switch.early.test.i19, %switch.early.test.i19, %switch.early.test.i19, %switch.early.test.i19, %switch.early.test.i19, %do.body %call14 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %incdec.ptr10) #15 %add = add i64 %call14, 1 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %incdec.ptr5, ptr nonnull align 1 %incdec.ptr10, i64 %add, i1 false) br label %if.end15 -if.end15: ; preds = %switch.early.test.i, %switch.early.test.i16, %switch.early.test.i16, %switch.early.test.i16, %switch.early.test.i16, %switch.early.test.i16, %if.end4, %entry, %do.end +if.end15: ; preds = %switch.early.test.i, %switch.early.test.i15, %switch.early.test.i15, %switch.early.test.i15, %switch.early.test.i15, %switch.early.test.i15, %if.end4, %entry, %do.end ret void } diff --git a/bench/qemu/optimized/user.ll b/bench/qemu/optimized/user.ll index 425962e86c8..5dcb3d2d68d 100644 --- a/bench/qemu/optimized/user.ll +++ b/bench/qemu/optimized/user.ll @@ -161,7 +161,7 @@ define dso_local zeroext i1 @gdb_got_immediate_ack() local_unnamed_addr #0 { 14: ; preds = %2 %15 = icmp eq i32 %5, 0 - br i1 %15, label %16, label %19 + br i1 %15, label %16, label %gdb_get_char.exit.thread 16: ; preds = %14 %17 = load i32, ptr @gdbserver_user_state, align 8 @@ -169,15 +169,15 @@ define dso_local zeroext i1 @gdb_got_immediate_ack() local_unnamed_addr #0 { store i32 -1, ptr @gdbserver_user_state, align 8 br label %gdb_get_char.exit -19: ; preds = %14 - %20 = load i8, ptr %1, align 1 +gdb_get_char.exit.thread: ; preds = %14 + %.not3.i.i = load i8, ptr %1, align 1 %21 = zext i8 %20 to i32 br label %gdb_get_char.exit gdb_get_char.exit: ; preds = %12, %16, %19 - %.0.i = phi i32 [ -1, %16 ], [ %21, %19 ], [ -1, %12 ] + %.0.i = phi i32 [ -1, %16 ], [ %21, %.not3.i.i ], [ -1, %12 ] call void @llvm.lifetime.end.p0(ptr nonnull %1) - %22 = icmp eq i32 %.0.i, -1 + %20 = icmp eq i32 %.0.i, -1 %23 = icmp eq i32 %.0.i, 43 %switch.selectcmp = or i1 %22, %23 ret i1 %switch.selectcmp @@ -229,7 +229,7 @@ define dso_local void @gdb_exit(i32 noundef %0) local_unnamed_addr #0 { call void @llvm.lifetime.start.p0(ptr nonnull %3) %4 = load i8, ptr @gdbserver_state, align 8, !range !7, !noundef !8 %5 = trunc nuw i8 %4 to i1 - br i1 %5, label %6, label %39 + br i1 %5, label %6, label %38 6: ; preds = %1 %7 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_user_state, i64 8), align 8 @@ -243,7 +243,7 @@ define dso_local void @gdb_exit(i32 noundef %0) local_unnamed_addr #0 { 10: ; preds = %8, %6 %11 = load i32, ptr @gdbserver_user_state, align 8 %12 = icmp slt i32 %11, 0 - br i1 %12, label %39, label %13 + br i1 %12, label %38, label %13 13: ; preds = %10 store i32 0, ptr %3, align 4, !annotation !4 @@ -259,45 +259,45 @@ define dso_local void @gdb_exit(i32 noundef %0) local_unnamed_addr #0 { 17: ; preds = %15 %18 = load i32, ptr @qemu_loglevel, align 4 %19 = and i32 %18, 32768 - %20 = icmp eq i32 %19, 0 - br i1 %20, label %trace_gdbstub_op_exiting.exit, label %21 + %.not3.i.i = icmp eq i32 %19, 0 + br i1 %.not3.i.i, label %trace_gdbstub_op_exiting.exit, label %20 -21: ; preds = %17 - %22 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 - %23 = trunc nuw i8 %22 to i1 - br i1 %23, label %24, label %31 +20: ; preds = %17 + %21 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 + %22 = trunc nuw i8 %21 to i1 + br i1 %22, label %23, label %30 -24: ; preds = %21 +23: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %2) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false), !annotation !4 - %25 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 - %26 = tail call i32 @qemu_get_thread_id() #16 - %27 = load i64, ptr %2, align 8 - %28 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %29 = load i64, ptr %28, align 8 - %30 = and i32 %0, 255 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.27, i32 noundef %26, i64 noundef %27, i64 noundef %29, i32 noundef %30) #16 + %24 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 + %25 = tail call i32 @qemu_get_thread_id() #16 + %26 = load i64, ptr %2, align 8 + %27 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %28 = load i64, ptr %27, align 8 + %29 = and i32 %0, 255 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.27, i32 noundef %25, i64 noundef %26, i64 noundef %28, i32 noundef %29) #16 call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %trace_gdbstub_op_exiting.exit -31: ; preds = %21 - %32 = and i32 %0, 255 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.28, i32 noundef %32) #16 +30: ; preds = %20 + %31 = and i32 %0, 255 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.28, i32 noundef %31) #16 br label %trace_gdbstub_op_exiting.exit -trace_gdbstub_op_exiting.exit: ; preds = %13, %15, %17, %24, %31 - %33 = load i8, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4200), align 8, !range !7, !noundef !8 - %34 = trunc nuw i8 %33 to i1 - br i1 %34, label %35, label %39 +trace_gdbstub_op_exiting.exit: ; preds = %13, %15, %17, %23, %30 + %32 = load i8, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4200), align 8, !range !7, !noundef !8 + %33 = trunc nuw i8 %32 to i1 + br i1 %33, label %34, label %38 -35: ; preds = %trace_gdbstub_op_exiting.exit - %36 = and i32 %0, 255 - %37 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %3, i64 noundef 4, i32 noundef 1, i64 noundef 4, ptr noundef nonnull @.str, i32 noundef %36) #16 - %38 = call i32 @gdb_put_packet(ptr noundef nonnull %3) #16 +34: ; preds = %trace_gdbstub_op_exiting.exit + %35 = and i32 %0, 255 + %36 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %3, i64 noundef 4, i32 noundef 1, i64 noundef 4, ptr noundef nonnull @.str, i32 noundef %35) #16 + %37 = call i32 @gdb_put_packet(ptr noundef nonnull %3) #16 store i8 0, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4200), align 8 - br label %39 + br label %38 -39: ; preds = %trace_gdbstub_op_exiting.exit, %35, %10, %1 +38: ; preds = %trace_gdbstub_op_exiting.exit, %34, %10, %1 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void } @@ -1284,31 +1284,31 @@ define dso_local void @gdb_continue() local_unnamed_addr #0 { 5: ; preds = %3 %6 = load i32, ptr @qemu_loglevel, align 4 %7 = and i32 %6, 32768 - %8 = icmp eq i32 %7, 0 - br i1 %8, label %trace_gdbstub_op_continue.exit, label %9 + %.not2.i.i = icmp eq i32 %7, 0 + br i1 %.not2.i.i, label %trace_gdbstub_op_continue.exit, label %8 -9: ; preds = %5 - %10 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 - %11 = trunc nuw i8 %10 to i1 - br i1 %11, label %12, label %18 +8: ; preds = %5 + %9 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 + %10 = trunc nuw i8 %9 to i1 + br i1 %10, label %11, label %17 -12: ; preds = %9 +11: ; preds = %8 call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1, i8 0, i64 16, i1 false), !annotation !4 - %13 = call i32 @gettimeofday(ptr noundef nonnull %1, ptr noundef null) #16 - %14 = tail call i32 @qemu_get_thread_id() #16 - %15 = load i64, ptr %1, align 8 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %17 = load i64, ptr %16, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.37, i32 noundef %14, i64 noundef %15, i64 noundef %17) #16 + %12 = call i32 @gettimeofday(ptr noundef nonnull %1, ptr noundef null) #16 + %13 = tail call i32 @qemu_get_thread_id() #16 + %14 = load i64, ptr %1, align 8 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %16 = load i64, ptr %15, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.37, i32 noundef %13, i64 noundef %14, i64 noundef %16) #16 call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %trace_gdbstub_op_continue.exit -18: ; preds = %9 +17: ; preds = %8 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.38) #16 br label %trace_gdbstub_op_continue.exit -trace_gdbstub_op_continue.exit: ; preds = %0, %3, %5, %12, %18 +trace_gdbstub_op_continue.exit: ; preds = %0, %3, %5, %11, %17 ret void } @@ -1324,8 +1324,8 @@ define dso_local noundef i32 @gdb_continue_partial(ptr noundef readonly captures %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 br label %5 -5: ; preds = %.lr.ph, %30 - %.012.in = phi i64 [ %3, %.lr.ph ], [ %32, %30 ] +5: ; preds = %.lr.ph, %29 + %.012.in = phi i64 [ %3, %.lr.ph ], [ %31, %29 ] %.012 = inttoptr i64 %.012.in to ptr %6 = getelementptr inbounds nuw i8, ptr %.012, i64 704 %7 = load i32, ptr %6, align 16 @@ -1333,7 +1333,7 @@ define dso_local noundef i32 @gdb_continue_partial(ptr noundef readonly captures %9 = getelementptr inbounds i8, ptr %0, i64 %8 %10 = load i8, ptr %9, align 1 %11 = icmp eq i8 %10, 115 - br i1 %11, label %12, label %30 + br i1 %11, label %12, label %29 12: ; preds = %5 %13 = load i32, ptr @trace_events_enabled_count, align 4 @@ -1348,42 +1348,42 @@ define dso_local noundef i32 @gdb_continue_partial(ptr noundef readonly captures 16: ; preds = %14 %17 = load i32, ptr @qemu_loglevel, align 4 %18 = and i32 %17, 32768 - %19 = icmp eq i32 %18, 0 - br i1 %19, label %trace_gdbstub_op_stepping.exit, label %20 + %.not3.i.i = icmp eq i32 %18, 0 + br i1 %.not3.i.i, label %trace_gdbstub_op_stepping.exit, label %19 -20: ; preds = %16 - %21 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 - %22 = trunc nuw i8 %21 to i1 - br i1 %22, label %23, label %28 +19: ; preds = %16 + %20 = load i8, ptr @message_with_timestamp, align 1, !range !7, !noundef !8 + %21 = trunc nuw i8 %20 to i1 + br i1 %21, label %22, label %27 -23: ; preds = %20 +22: ; preds = %19 call void @llvm.lifetime.start.p0(ptr nonnull %2) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false), !annotation !4 - %24 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 - %25 = tail call i32 @qemu_get_thread_id() #16 - %26 = load i64, ptr %2, align 8 - %27 = load i64, ptr %4, align 8 - tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.39, i32 noundef %25, i64 noundef %26, i64 noundef %27, i32 noundef %7) #16 + %23 = call i32 @gettimeofday(ptr noundef nonnull %2, ptr noundef null) #16 + %24 = tail call i32 @qemu_get_thread_id() #16 + %25 = load i64, ptr %2, align 8 + %26 = load i64, ptr %4, align 8 + tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.39, i32 noundef %24, i64 noundef %25, i64 noundef %26, i32 noundef %7) #16 call void @llvm.lifetime.end.p0(ptr nonnull %2) br label %trace_gdbstub_op_stepping.exit -28: ; preds = %20 +27: ; preds = %19 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.40, i32 noundef %7) #16 br label %trace_gdbstub_op_stepping.exit -trace_gdbstub_op_stepping.exit: ; preds = %12, %14, %16, %23, %28 - %29 = load i32, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4192), align 8 - tail call void @cpu_single_step(ptr noundef nonnull %.012, i32 noundef %29) #16 - br label %30 +trace_gdbstub_op_stepping.exit: ; preds = %12, %14, %16, %22, %27 + %28 = load i32, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_state, i64 4192), align 8 + tail call void @cpu_single_step(ptr noundef nonnull %.012, i32 noundef %28) #16 + br label %29 -30: ; preds = %5, %trace_gdbstub_op_stepping.exit - %31 = getelementptr inbounds nuw i8, ptr %.012, i64 560 - %32 = load atomic i64, ptr %31 monotonic, align 16 +29: ; preds = %5, %trace_gdbstub_op_stepping.exit + %30 = getelementptr inbounds nuw i8, ptr %.012, i64 560 + %31 = load atomic i64, ptr %30 monotonic, align 16 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #16, !srcloc !23 - %.not = icmp eq i64 %32, 0 + %.not = icmp eq i64 %31, 0 br i1 %.not, label %._crit_edge, label %5, !llvm.loop !24 -._crit_edge: ; preds = %30, %1 +._crit_edge: ; preds = %29, %1 store i32 1, ptr getelementptr inbounds nuw (i8, ptr @gdbserver_user_state, i64 16), align 8 ret i32 0 } @@ -1548,14 +1548,14 @@ should_catch_syscall.exit: ; preds = %5 %10 = and i64 %6, 63 %11 = shl nuw i64 1, %10 %12 = and i64 %9, %11 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread + %.not = icmp eq i64 %12, 0 + br i1 %.not, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread should_catch_syscall.exit.thread: ; preds = %2, %should_catch_syscall.exit - %14 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.21, i32 noundef %1) #16 - %15 = tail call i32 @gdb_target_sigtrap() #16 - %16 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %15, ptr noundef %14, ptr noundef null, i32 noundef 0) - tail call void @g_free(ptr noundef %14) #16 + %13 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.21, i32 noundef %1) #16 + %14 = tail call i32 @gdb_target_sigtrap() #16 + %15 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %14, ptr noundef %13, ptr noundef null, i32 noundef 0) + tail call void @g_free(ptr noundef %13) #16 br label %should_catch_syscall.exit.thread3 should_catch_syscall.exit.thread3: ; preds = %5, %should_catch_syscall.exit.thread, %should_catch_syscall.exit @@ -1582,14 +1582,14 @@ should_catch_syscall.exit: ; preds = %5 %10 = and i64 %6, 63 %11 = shl nuw i64 1, %10 %12 = and i64 %9, %11 - %13 = icmp eq i64 %12, 0 - br i1 %13, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread + %.not = icmp eq i64 %12, 0 + br i1 %.not, label %should_catch_syscall.exit.thread3, label %should_catch_syscall.exit.thread should_catch_syscall.exit.thread: ; preds = %2, %should_catch_syscall.exit - %14 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %1) #16 - %15 = tail call i32 @gdb_target_sigtrap() #16 - %16 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %15, ptr noundef %14, ptr noundef null, i32 noundef 0) - tail call void @g_free(ptr noundef %14) #16 + %13 = tail call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %1) #16 + %14 = tail call i32 @gdb_target_sigtrap() #16 + %15 = tail call i32 @gdb_handlesig(ptr noundef %0, i32 noundef %14, ptr noundef %13, ptr noundef null, i32 noundef 0) + tail call void @g_free(ptr noundef %13) #16 br label %should_catch_syscall.exit.thread3 should_catch_syscall.exit.thread3: ; preds = %5, %should_catch_syscall.exit.thread, %should_catch_syscall.exit diff --git a/bench/qoi/optimized/qoi.ll b/bench/qoi/optimized/qoi.ll index a4fa107d9f3..c6b693c1aec 100644 --- a/bench/qoi/optimized/qoi.ll +++ b/bench/qoi/optimized/qoi.ll @@ -426,14 +426,14 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a store i8 %72, ptr %73, align 1, !tbaa !11 %74 = icmp eq i32 %48, 0 %75 = icmp eq i32 %66, 0 - %or.cond125 = select i1 %74, i1 true, i1 %75 - br i1 %or.cond125, label %.loopexit, label %76 + %or.cond124 = select i1 %74, i1 true, i1 %75 + br i1 %or.cond124, label %.loopexit, label %76 76: ; preds = %13 %77 = zext i8 %69 to i32 %78 = add i8 %69, -5 - %or.cond117 = icmp ult i8 %78, -2 - br i1 %or.cond117, label %.loopexit, label %79 + %or.cond116 = icmp ult i8 %78, -2 + br i1 %or.cond116, label %.loopexit, label %79 79: ; preds = %76 %80 = icmp ugt i8 %72, 1 @@ -469,26 +469,26 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a 95: ; preds = %.lr.ph, %185 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %185 ] - %.sroa.31.0132 = phi i8 [ -1, %.lr.ph ], [ %.sroa.31.1, %185 ] - %.0102131 = phi i32 [ 0, %.lr.ph ], [ %.1, %185 ] - %.sroa.22.0129 = phi i8 [ 0, %.lr.ph ], [ %.sroa.22.1, %185 ] - %.sroa.13.0128 = phi i8 [ 0, %.lr.ph ], [ %.sroa.13.1, %185 ] - %.sroa.0.0127 = phi i8 [ 0, %.lr.ph ], [ %.sroa.0.1, %185 ] - %.0122126 = phi i32 [ 14, %.lr.ph ], [ %.1123, %185 ] - %96 = icmp eq i32 %.0102131, 0 + %.sroa.31.0131 = phi i8 [ -1, %.lr.ph ], [ %.sroa.31.1, %185 ] + %.0102130 = phi i32 [ 0, %.lr.ph ], [ %.1, %185 ] + %.sroa.22.0128 = phi i8 [ 0, %.lr.ph ], [ %.sroa.22.1, %185 ] + %.sroa.13.0127 = phi i8 [ 0, %.lr.ph ], [ %.sroa.13.1, %185 ] + %.sroa.0.0126 = phi i8 [ 0, %.lr.ph ], [ %.sroa.0.1, %185 ] + %.0121125 = phi i32 [ 14, %.lr.ph ], [ %.1122, %185 ] + %96 = icmp eq i32 %.0102130, 0 br i1 %96, label %99, label %97 97: ; preds = %95 - %98 = add nsw i32 %.0102131, -1 + %98 = add nsw i32 %.0102130, -1 br label %179 99: ; preds = %95 - %100 = icmp slt i32 %.0122126, %91 + %100 = icmp slt i32 %.0121125, %91 br i1 %100, label %101, label %179 101: ; preds = %99 - %102 = add nsw i32 %.0122126, 1 - %103 = sext i32 %.0122126 to i64 + %102 = add nsw i32 %.0121125, 1 + %103 = sext i32 %.0121125 to i64 %104 = getelementptr i8, ptr %0, i64 %103 %105 = load i8, ptr %104, align 1, !tbaa !12 %106 = zext i8 %105 to i32 @@ -503,7 +503,7 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a %110 = load i8, ptr %109, align 1, !tbaa !12 %111 = getelementptr i8, ptr %104, i64 2 %112 = load i8, ptr %111, align 1, !tbaa !12 - %113 = add nsw i32 %.0122126, 4 + %113 = add nsw i32 %.0121125, 4 %114 = getelementptr i8, ptr %104, i64 3 %115 = load i8, ptr %114, align 1, !tbaa !12 br label %165 @@ -516,7 +516,7 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a %121 = load i8, ptr %120, align 1, !tbaa !12 %122 = getelementptr i8, ptr %104, i64 3 %123 = load i8, ptr %122, align 1, !tbaa !12 - %124 = add nsw i32 %.0122126, 5 + %124 = add nsw i32 %.0121125, 5 %125 = getelementptr i8, ptr %104, i64 4 %126 = load i8, ptr %125, align 1, !tbaa !12 br label %165 @@ -545,19 +545,19 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a 132: ; preds = %127 %133 = lshr i8 %105, 4 %134 = and i8 %133, 3 - %135 = add i8 %.sroa.0.0127, -2 + %135 = add i8 %.sroa.0.0126, -2 %136 = add i8 %135, %134 %137 = lshr i8 %105, 2 %138 = and i8 %137, 3 - %139 = add i8 %.sroa.13.0128, -2 + %139 = add i8 %.sroa.13.0127, -2 %140 = add i8 %139, %138 %141 = and i8 %105, 3 - %142 = add i8 %.sroa.22.0129, -2 + %142 = add i8 %.sroa.22.0128, -2 %143 = add i8 %142, %141 br label %165 144: ; preds = %127 - %145 = add nsw i32 %.0122126, 2 + %145 = add nsw i32 %.0121125, 2 %146 = sext i32 %102 to i64 %147 = getelementptr inbounds i8, ptr %0, i64 %146 %148 = load i8, ptr %147, align 1, !tbaa !12 @@ -567,14 +567,14 @@ define dso_local noalias noundef ptr @qoi_decode(ptr noundef readonly captures(a %152 = lshr i32 %149, 4 %153 = add nsw i32 %152, %151 %154 = trunc nsw i32 %153 to i8 - %155 = add i8 %.sroa.0.0127, %154 + %155 = add i8 %.sroa.0.0126, %154 %156 = trunc nuw nsw i32 %150 to i8 - %157 = add i8 %.sroa.13.0128, -32 + %157 = add i8 %.sroa.13.0127, -32 %158 = add i8 %157, %156 %159 = and i32 %149, 15 %160 = add nsw i32 %159, %151 %161 = trunc nsw i32 %160 to i8 - %162 = add i8 %.sroa.22.0129, %161 + %162 = add i8 %.sroa.22.0128, %161 br label %165 163: ; preds = %127 @@ -585,12 +585,12 @@ default.unreachable: ; preds = %127 unreachable 165: ; preds = %116, %132, %163, %144, %129, %107 - %.2124 = phi i32 [ %102, %129 ], [ %102, %132 ], [ %145, %144 ], [ %102, %163 ], [ %113, %107 ], [ %124, %116 ] - %.sroa.0.2 = phi i8 [ %.sroa.0.0.copyload, %129 ], [ %136, %132 ], [ %155, %144 ], [ %.sroa.0.0127, %163 ], [ %110, %107 ], [ %119, %116 ] - %.sroa.13.2 = phi i8 [ %.sroa.13.0.copyload, %129 ], [ %140, %132 ], [ %158, %144 ], [ %.sroa.13.0128, %163 ], [ %112, %107 ], [ %121, %116 ] - %.sroa.22.2 = phi i8 [ %.sroa.22.0.copyload, %129 ], [ %143, %132 ], [ %162, %144 ], [ %.sroa.22.0129, %163 ], [ %115, %107 ], [ %123, %116 ] + %.2123 = phi i32 [ %102, %129 ], [ %102, %132 ], [ %145, %144 ], [ %102, %163 ], [ %113, %107 ], [ %124, %116 ] + %.sroa.0.2 = phi i8 [ %.sroa.0.0.copyload, %129 ], [ %136, %132 ], [ %155, %144 ], [ %.sroa.0.0126, %163 ], [ %110, %107 ], [ %119, %116 ] + %.sroa.13.2 = phi i8 [ %.sroa.13.0.copyload, %129 ], [ %140, %132 ], [ %158, %144 ], [ %.sroa.13.0127, %163 ], [ %112, %107 ], [ %121, %116 ] + %.sroa.22.2 = phi i8 [ %.sroa.22.0.copyload, %129 ], [ %143, %132 ], [ %162, %144 ], [ %.sroa.22.0128, %163 ], [ %115, %107 ], [ %123, %116 ] %.2 = phi i32 [ 0, %129 ], [ 0, %132 ], [ 0, %144 ], [ %164, %163 ], [ 0, %107 ], [ 0, %116 ] - %.sroa.31.2 = phi i8 [ %.sroa.31.0.copyload, %129 ], [ %.sroa.31.0132, %132 ], [ %.sroa.31.0132, %144 ], [ %.sroa.31.0132, %163 ], [ %.sroa.31.0132, %107 ], [ %126, %116 ] + %.sroa.31.2 = phi i8 [ %.sroa.31.0.copyload, %129 ], [ %.sroa.31.0131, %132 ], [ %.sroa.31.0131, %144 ], [ %.sroa.31.0131, %163 ], [ %.sroa.31.0131, %107 ], [ %126, %116 ] %166 = zext i8 %.sroa.0.2 to i64 %167 = mul nuw nsw i64 %166, 3 %168 = zext i8 %.sroa.13.2 to i64 @@ -614,12 +614,12 @@ default.unreachable: ; preds = %127 br label %179 179: ; preds = %99, %165, %97 - %.1123 = phi i32 [ %.2124, %165 ], [ %.0122126, %99 ], [ %.0122126, %97 ] - %.sroa.0.1 = phi i8 [ %.sroa.0.2, %165 ], [ %.sroa.0.0127, %99 ], [ %.sroa.0.0127, %97 ] - %.sroa.13.1 = phi i8 [ %.sroa.13.2, %165 ], [ %.sroa.13.0128, %99 ], [ %.sroa.13.0128, %97 ] - %.sroa.22.1 = phi i8 [ %.sroa.22.2, %165 ], [ %.sroa.22.0129, %99 ], [ %.sroa.22.0129, %97 ] + %.1122 = phi i32 [ %.2124, %165 ], [ %.0122126, %99 ], [ %.0121125, %97 ] + %.sroa.0.1 = phi i8 [ %.sroa.0.2, %165 ], [ %.sroa.0.0126, %99 ], [ %.sroa.0.0127, %97 ] + %.sroa.13.1 = phi i8 [ %.sroa.13.2, %165 ], [ %.sroa.13.0127, %99 ], [ %.sroa.13.0128, %97 ] + %.sroa.22.1 = phi i8 [ %.sroa.22.2, %165 ], [ %.sroa.22.0128, %99 ], [ %.sroa.22.0129, %97 ] %.1 = phi i32 [ %.2, %165 ], [ 0, %99 ], [ %98, %97 ] - %.sroa.31.1 = phi i8 [ %.sroa.31.2, %165 ], [ %.sroa.31.0132, %99 ], [ %.sroa.31.0132, %97 ] + %.sroa.31.1 = phi i8 [ %.sroa.31.2, %165 ], [ %.sroa.31.0131, %99 ], [ %.sroa.31.0132, %97 ] %180 = getelementptr inbounds nuw i8, ptr %89, i64 %indvars.iv store i8 %.sroa.0.1, ptr %180, align 1, !tbaa !12 %181 = getelementptr i8, ptr %180, i64 1 diff --git a/bench/quantlib/optimized/asx.ll b/bench/quantlib/optimized/asx.ll index 20f486efd2a..314922992b9 100644 --- a/bench/quantlib/optimized/asx.ll +++ b/bench/quantlib/optimized/asx.ll @@ -75,8 +75,8 @@ define noundef zeroext i1 @_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb(ptr noundef n entry: %0 = load i64, ptr %date, align 8, !tbaa !3 %rem.i = srem i64 %0, 7 - %1 = icmp eq i64 %rem.i, 6 - br i1 %1, label %if.end, label %return + %cmp.not4 = icmp eq i64 %rem.i, 6 + br i1 %cmp.not4, label %if.end, label %return if.end: ; preds = %entry %call.i.i = tail call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %date) @@ -88,15 +88,15 @@ if.end: ; preds = %entry %call4.i = tail call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call3.i) %call5.i = tail call noundef i32 @_ZN8QuantLib4Date11monthOffsetENS_5MonthEb(i32 noundef %call2.i, i1 noundef zeroext %call4.i) %sub.i = add i32 %conv.i.i, -8 - %2 = sub i32 %sub.i, %call5.i - %or.cond = icmp ult i32 %2, 7 + %1 = sub i32 %sub.i, %call5.i + %or.cond = icmp ult i32 %1, 7 %brmerge.not = and i1 %mainCycle, %or.cond br i1 %brmerge.not, label %if.end7, label %return if.end7: ; preds = %if.end %call8 = tail call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %date) - %3 = icmp ult i32 %call8, 13 - br i1 %3, label %switch.lookup, label %return + %2 = icmp ult i32 %call8, 13 + br i1 %2, label %switch.lookup, label %return switch.lookup: ; preds = %if.end7 %switch.cast = trunc nuw i32 %call8 to i13 @@ -166,8 +166,8 @@ entry: %ref.tmp11 = alloca %"class.std::__cxx11::basic_string", align 8 %0 = load i64, ptr %date, align 8, !tbaa !3 %rem.i.i = srem i64 %0, 7 - %1 = icmp eq i64 %rem.i.i, 6 - br i1 %1, label %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit, label %if.then + %cmp.not4.i = icmp eq i64 %rem.i.i, 6 + br i1 %cmp.not4.i, label %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit, label %if.then _ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit: ; preds = %entry %call.i.i.i = tail call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %date) @@ -179,8 +179,8 @@ _ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit: ; preds = %entry %call4.i.i = tail call noundef zeroext i1 @_ZN8QuantLib4Date6isLeapEi(i32 noundef %call3.i.i) %call5.i.i = tail call noundef i32 @_ZN8QuantLib4Date11monthOffsetENS_5MonthEb(i32 noundef %call2.i.i, i1 noundef zeroext %call4.i.i) %sub.i.i = add i32 %conv.i.i.i, -8 - %2 = sub i32 %sub.i.i, %call5.i.i - %or.cond.i = icmp ult i32 %2, 7 + %1 = sub i32 %sub.i.i, %call5.i.i + %or.cond.i = icmp ult i32 %1, 7 br i1 %or.cond.i, label %invoke.cont34, label %if.then if.then: ; preds = %entry, %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit @@ -220,72 +220,72 @@ invoke.cont15: ; preds = %invoke.cont13 to label %unreachable unwind label %lpad14 lpad: ; preds = %invoke.cont, %if.then - %3 = landingpad { ptr, i32 } + %2 = landingpad { ptr, i32 } cleanup br label %ehcleanup25 ehcleanup21.thread: ; preds = %invoke.cont2 - %4 = landingpad { ptr, i32 } + %3 = landingpad { ptr, i32 } cleanup br label %cleanup.action.sink.split lpad12: ; preds = %invoke.cont10 - %5 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad14: ; preds = %invoke.cont15, %invoke.cont13 %cleanup.isactive.0 = phi i1 [ false, %invoke.cont15 ], [ true, %invoke.cont13 ] - %6 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup - %7 = load ptr, ptr %ref.tmp11, align 8, !tbaa !12 - %8 = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 16 - %cmp.i.i.i = icmp eq ptr %7, %8 + %6 = load ptr, ptr %ref.tmp11, align 8, !tbaa !12 + %7 = getelementptr inbounds nuw i8, ptr %ref.tmp11, i64 16 + %cmp.i.i.i = icmp eq ptr %6, %7 br i1 %cmp.i.i.i, label %ehcleanup, label %if.then.i.i if.then.i.i: ; preds = %lpad14 - %9 = load i64, ptr %8, align 8, !tbaa !13 - %add.i.i.i = add i64 %9, 1 - call void @_ZdlPvm(ptr noundef %7, i64 noundef %add.i.i.i) #20 + %8 = load i64, ptr %7, align 8, !tbaa !13 + %add.i.i.i = add i64 %8, 1 + call void @_ZdlPvm(ptr noundef %6, i64 noundef %add.i.i.i) #20 br label %ehcleanup ehcleanup: ; preds = %lpad14, %if.then.i.i, %lpad12 %cleanup.isactive.3 = phi i1 [ true, %lpad12 ], [ %cleanup.isactive.0, %if.then.i.i ], [ %cleanup.isactive.0, %lpad14 ] - %.pn = phi { ptr, i32 } [ %5, %lpad12 ], [ %6, %if.then.i.i ], [ %6, %lpad14 ] + %.pn = phi { ptr, i32 } [ %4, %lpad12 ], [ %5, %if.then.i.i ], [ %5, %lpad14 ] call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp11) - %10 = load ptr, ptr %ref.tmp7, align 8, !tbaa !12 - %11 = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 16 - %cmp.i.i.i12 = icmp eq ptr %10, %11 + %9 = load ptr, ptr %ref.tmp7, align 8, !tbaa !12 + %10 = getelementptr inbounds nuw i8, ptr %ref.tmp7, i64 16 + %cmp.i.i.i12 = icmp eq ptr %9, %10 br i1 %cmp.i.i.i12, label %ehcleanup17, label %if.then.i.i13 if.then.i.i13: ; preds = %ehcleanup - %12 = load i64, ptr %11, align 8, !tbaa !13 - %add.i.i.i14 = add i64 %12, 1 - call void @_ZdlPvm(ptr noundef %10, i64 noundef %add.i.i.i14) #20 + %11 = load i64, ptr %10, align 8, !tbaa !13 + %add.i.i.i14 = add i64 %11, 1 + call void @_ZdlPvm(ptr noundef %9, i64 noundef %add.i.i.i14) #20 br label %ehcleanup17 ehcleanup17: ; preds = %ehcleanup, %if.then.i.i13 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp8) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp7) - %13 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 - %14 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i19 = icmp eq ptr %13, %14 + %12 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 + %13 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i19 = icmp eq ptr %12, %13 br i1 %cmp.i.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %ehcleanup21 ehcleanup17.thread: ; preds = %invoke.cont6 - %15 = landingpad { ptr, i32 } + %14 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp8) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp7) - %16 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 - %17 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i1932 = icmp eq ptr %16, %17 + %15 = load ptr, ptr %ref.tmp, align 8, !tbaa !12 + %16 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i1932 = icmp eq ptr %15, %16 br i1 %cmp.i.i.i1932, label %cleanup.action.sink.split, label %ehcleanup21.thread41 ehcleanup21.thread41: ; preds = %ehcleanup17.thread - %18 = load i64, ptr %17, align 8, !tbaa !13 - %add.i.i.i2144 = add i64 %18, 1 - call void @_ZdlPvm(ptr noundef %16, i64 noundef %add.i.i.i2144) #20 + %17 = load i64, ptr %16, align 8, !tbaa !13 + %add.i.i.i2144 = add i64 %17, 1 + call void @_ZdlPvm(ptr noundef %15, i64 noundef %add.i.i.i2144) #20 br label %cleanup.action.sink.split _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22: ; preds = %ehcleanup17 @@ -294,15 +294,15 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br i1 %cleanup.isactive.3, label %cleanup.action, label %ehcleanup25 ehcleanup21: ; preds = %ehcleanup17 - %19 = load i64, ptr %14, align 8, !tbaa !13 - %add.i.i.i21 = add i64 %19, 1 - call void @_ZdlPvm(ptr noundef %13, i64 noundef %add.i.i.i21) #20 + %18 = load i64, ptr %13, align 8, !tbaa !13 + %add.i.i.i21 = add i64 %18, 1 + call void @_ZdlPvm(ptr noundef %12, i64 noundef %add.i.i.i21) #20 call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp4) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) br i1 %cleanup.isactive.3, label %cleanup.action, label %ehcleanup25 cleanup.action.sink.split: ; preds = %ehcleanup17.thread, %ehcleanup21.thread, %ehcleanup21.thread41 - %.pn.pn.pn29.ph = phi { ptr, i32 } [ %15, %ehcleanup21.thread41 ], [ %4, %ehcleanup21.thread ], [ %15, %ehcleanup17.thread ] + %.pn.pn.pn29.ph = phi { ptr, i32 } [ %14, %ehcleanup21.thread41 ], [ %3, %ehcleanup21.thread ], [ %14, %ehcleanup17.thread ] call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp4) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) br label %cleanup.action @@ -313,24 +313,24 @@ cleanup.action: ; preds = %cleanup.action.sink br label %ehcleanup25 ehcleanup25: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, %ehcleanup21, %cleanup.action, %lpad - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn29, %cleanup.action ], [ %.pn, %ehcleanup21 ], [ %3, %lpad ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22 ] + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn29, %cleanup.action ], [ %.pn, %ehcleanup21 ], [ %2, %lpad ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %_ql_msg_stream) #16 call void @llvm.lifetime.end.p0(ptr nonnull %_ql_msg_stream) resume { ptr, i32 } %.pn.pn.pn.pn invoke.cont34: ; preds = %_ZN8QuantLib3ASX9isASXdateERKNS_4DateEb.exit %call27 = tail call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %date) - %20 = sext i32 %call27 to i64 - %21 = getelementptr i8, ptr @.str.7, i64 %20 - %arrayidx.i = getelementptr i8, ptr %21, i64 -1 - %22 = load i8, ptr %arrayidx.i, align 1, !tbaa !13 + %19 = sext i32 %call27 to i64 + %20 = getelementptr i8, ptr @.str.7, i64 %19 + %arrayidx.i = getelementptr i8, ptr %20, i64 -1 + %21 = load i8, ptr %arrayidx.i, align 1, !tbaa !13 %call29 = tail call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %date) %rem = srem i32 %call29, 10 - %23 = trunc nsw i32 %rem to i8 - %conv30 = add nsw i8 %23, 48 - %24 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 - store ptr %24, ptr %agg.result, align 8, !tbaa !14 - store i8 %22, ptr %24, align 8 + %22 = trunc nsw i32 %rem to i8 + %conv30 = add nsw i8 %22, 48 + %23 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 + store ptr %23, ptr %agg.result, align 8, !tbaa !14 + store i8 %21, ptr %23, align 8 %ref.tmp31.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %agg.result, i64 17 store i8 %conv30, ptr %ref.tmp31.sroa.5.0..sroa_idx, align 1 %_M_string_length.i.i.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 @@ -1102,8 +1102,8 @@ if.end136: ; preds = %land.lhs.true131, % call void @_ZN8QuantLib4DateC1EiNS_5MonthEi(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp141, i32 noundef 1, i32 noundef %conv80, i32 noundef %add140) %call142 = call i64 @_ZN8QuantLib3ASX8nextDateERKNS_4DateEb(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp141, i1 noundef zeroext false) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp141) - %90 = load i64, ptr %referenceDate, align 8, !tbaa !3 - %cmp.i143.not = icmp slt i64 %call142, %90 + %89 = load i64, ptr %referenceDate, align 8, !tbaa !3 + %cmp.i143.not = icmp slt i64 %call142, %89 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp147) br i1 %cmp.i143.not, label %cond.false146, label %cond.end151 @@ -1259,14 +1259,14 @@ cond.end: ; preds = %entry, %if.then.i, %rem17 = urem i32 %call5, %rem.rhs.trunc %rem.zext = zext nneg i32 %rem17 to i64 %sub = sub nsw i64 %conv, %rem.zext - %8 = icmp eq i32 %rem17, 0 - br i1 %8, label %lor.lhs.false, label %if.then + %cmp.not = icmp eq i32 %rem17, 0 + br i1 %cmp.not, label %lor.lhs.false, label %if.then lor.lhs.false: ; preds = %cond.end - %9 = load i64, ptr %refDate, align 8, !tbaa !3 + %8 = load i64, ptr %refDate, align 8, !tbaa !3 %call.i.i = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %refDate) %call2.i.i = call noundef i64 @_ZN8QuantLib4Date10yearOffsetEi(i32 noundef %call.i.i) - %sub.i.i = sub nsw i64 %9, %call2.i.i + %sub.i.i = sub nsw i64 %8, %call2.i.i %conv.i.i = trunc i64 %sub.i.i to i32 %call2.i = call noundef i32 @_ZNK8QuantLib4Date5monthEv(ptr noundef nonnull align 8 dereferenceable(8) %refDate) %call3.i14 = call noundef i32 @_ZNK8QuantLib4Date4yearEv(ptr noundef nonnull align 8 dereferenceable(8) %refDate) @@ -1278,9 +1278,9 @@ lor.lhs.false: ; preds = %cond.end if.then: ; preds = %lor.lhs.false, %cond.end %add = add nsw i64 %sub, %conv6 - %10 = icmp ult i64 %add, 13 + %cmp10 = icmp ult i64 %add, 13 %conv12 = trunc i64 %add to i32 - br i1 %10, label %if.end16, label %if.else + br i1 %cmp10, label %if.end16, label %if.else if.else: ; preds = %if.then %conv14 = add i32 %conv12, -12 @@ -1291,8 +1291,8 @@ if.end16: ; preds = %if.then, %if.else, %m.0 = phi i32 [ %conv14, %if.else ], [ %call5, %lor.lhs.false ], [ %conv12, %if.then ] %y.0 = phi i32 [ %add15, %if.else ], [ %call4, %lor.lhs.false ], [ %call4, %if.then ] %call17 = call i64 @_ZN8QuantLib4Date10nthWeekdayEmNS_7WeekdayENS_5MonthEi(i64 noundef 2, i32 noundef 6, i32 noundef %m.0, i32 noundef %y.0) - %11 = load i64, ptr %refDate, align 8, !tbaa !3 - %cmp.i15.not = icmp sgt i64 %call17, %11 + %9 = load i64, ptr %refDate, align 8, !tbaa !3 + %cmp.i15.not = icmp sgt i64 %call17, %9 br i1 %cmp.i15.not, label %if.end26, label %if.then20 if.then20: ; preds = %if.end16 diff --git a/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll b/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll index 6c003e8a658..1eb7f1dc468 100644 --- a/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll +++ b/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll @@ -1061,18 +1061,18 @@ define internal fastcc void @"_ZN4core3ptr70drop_in_place$LT$core..option..Optio call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3dc25cc0e3e701f7E.llvm.4661854399685404667"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0) %7 = getelementptr inbounds nuw i8, ptr %2, i64 8 %8 = load i64, ptr %7, align 8, !range !9, !noalias !227, !noundef !4 - %9 = icmp eq i64 %8, 0 - br i1 %9, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit", label %10 - -10: ; preds = %6 - %11 = load ptr, ptr %2, align 8, !noalias !227, !nonnull !4, !noundef !4 - %12 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %13 = load i64, ptr %12, align 8, !noalias !227, !noundef !4 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.4661854399685404667"(ptr noalias noundef nonnull readonly align 1 %14, ptr noundef nonnull %11, i64 noundef %8, i64 noundef %13) + %.not.i.i.i.i = icmp eq i64 %8, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit", label %9 + +9: ; preds = %6 + %10 = load ptr, ptr %2, align 8, !noalias !227, !nonnull !4, !noundef !4 + %11 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %12 = load i64, ptr %11, align 8, !noalias !227, !noundef !4 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.4661854399685404667"(ptr noalias noundef nonnull readonly align 1 %13, ptr noundef nonnull %10, i64 noundef %8, i64 noundef %12) br label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit" -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit": ; preds = %6, %10 +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h230a66745fc78909E.exit": ; preds = %6, %9 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !227 br label %5 } diff --git a/bench/redis/optimized/luac.ll b/bench/redis/optimized/luac.ll index 8ad9754aa2e..1204e8c25f6 100644 --- a/bench/redis/optimized/luac.ll +++ b/bench/redis/optimized/luac.ll @@ -419,105 +419,105 @@ sub_1: ; preds = %sub_0 br i1 %66, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %55 - %67 = load ptr, ptr %29, align 8, !tbaa !21 - %68 = xor i32 %3, -1 - %69 = sext i32 %68 to i64 + %66 = load ptr, ptr %29, align 8, !tbaa !21 + %67 = xor i32 %3, -1 + %68 = sext i32 %67 to i64 %wide.trip.count.i = zext nneg i32 %3 to i64 - %invariant.gep.i = getelementptr %struct.lua_TValue, ptr %67, i64 %69 - br label %70 + %invariant.gep.i = getelementptr %struct.lua_TValue, ptr %66, i64 %68 + br label %69 -70: ; preds = %70, %.lr.ph.i +69: ; preds = %69, %.lr.ph.i %indvars.iv50.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next51.i, %70 ] %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %70 ] %gep.i = getelementptr %struct.lua_TValue, ptr %invariant.gep.i, i64 %indvars.iv.i - %71 = load ptr, ptr %gep.i, align 8, !tbaa !9 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 32 - %73 = load ptr, ptr %72, align 8, !tbaa !9 - %74 = getelementptr inbounds nuw ptr, ptr %63, i64 %indvars.iv.i - store ptr %73, ptr %74, align 8, !tbaa !45 - %75 = trunc nuw nsw i64 %indvars.iv.i to i32 - %76 = shl i32 %75, 14 - %77 = or disjoint i32 %76, 36 - %78 = getelementptr inbounds nuw i32, ptr %.pre55.i, i64 %indvars.iv50.i - store i32 %77, ptr %78, align 4, !tbaa !10 + %70 = load ptr, ptr %gep.i, align 8, !tbaa !9 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 32 + %72 = load ptr, ptr %71, align 8, !tbaa !9 + %73 = getelementptr inbounds nuw ptr, ptr %63, i64 %indvars.iv.i + store ptr %72, ptr %73, align 8, !tbaa !45 + %74 = trunc nuw nsw i64 %indvars.iv.i to i32 + %75 = shl i32 %74, 14 + %76 = or disjoint i32 %75, 36 + %77 = getelementptr inbounds nuw i32, ptr %.pre55.i, i64 %indvars.iv50.i + store i32 %76, ptr %77, align 4, !tbaa !10 %indvars.iv.next51.i = add nuw nsw i64 %indvars.iv50.i, 2 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 4 - store i32 8405020, ptr %79, align 4, !tbaa !10 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 4 + store i32 8405020, ptr %78, align 4, !tbaa !10 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %70, !llvm.loop !47 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %69, !llvm.loop !47 -._crit_edge.loopexit.i: ; preds = %70 - %80 = and i64 %indvars.iv.next51.i, 4294967294 +._crit_edge.loopexit.i: ; preds = %69 + %79 = and i64 %indvars.iv.next51.i, 4294967294 br label %._crit_edge.i ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %55, %.thread.i %.pre5558.i = phi ptr [ %.pre55.i, %55 ], [ %.pre55.i, %._crit_edge.loopexit.i ], [ %.pre5557.i, %.thread.i ] - %.046.lcssa.i = phi i64 [ 0, %55 ], [ %80, %._crit_edge.loopexit.i ], [ 0, %.thread.i ] - %81 = getelementptr inbounds nuw i32, ptr %.pre5558.i, i64 %.046.lcssa.i - store i32 8388638, ptr %81, align 4, !tbaa !10 + %.046.lcssa.i = phi i64 [ 0, %55 ], [ %79, %._crit_edge.loopexit.i ], [ 0, %.thread.i ] + %80 = getelementptr inbounds nuw i32, ptr %.pre5558.i, i64 %.046.lcssa.i + store i32 8388638, ptr %80, align 4, !tbaa !10 br label %combine.exit combine.exit: ; preds = %21, %._crit_edge.i %.0.i = phi ptr [ %27, %21 ], [ %28, %._crit_edge.i ] - %82 = load i32, ptr @listing, align 4, !tbaa !10 - %.not27 = icmp eq i32 %82, 0 - br i1 %.not27, label %86, label %83 + %81 = load i32, ptr @listing, align 4, !tbaa !10 + %.not27 = icmp eq i32 %81, 0 + br i1 %.not27, label %85, label %82 -83: ; preds = %combine.exit - %84 = icmp sgt i32 %82, 1 - %85 = zext i1 %84 to i32 - tail call void @luaU_print(ptr noundef %.0.i, i32 noundef %85) #12 - br label %86 +82: ; preds = %combine.exit + %83 = icmp sgt i32 %81, 1 + %84 = zext i1 %83 to i32 + tail call void @luaU_print(ptr noundef %.0.i, i32 noundef %84) #12 + br label %85 -86: ; preds = %83, %combine.exit +85: ; preds = %82, %combine.exit %.b = load i1, ptr @dumping, align 4 - br i1 %.b, label %106, label %87 + br i1 %.b, label %105, label %86 -87: ; preds = %86 - %88 = load ptr, ptr @output, align 8, !tbaa !4 - %89 = icmp eq ptr %88, null - br i1 %89, label %90, label %92 +86: ; preds = %85 + %87 = load ptr, ptr @output, align 8, !tbaa !4 + %88 = icmp eq ptr %87, null + br i1 %88, label %89, label %91 -90: ; preds = %87 - %91 = load ptr, ptr @stdout, align 8, !tbaa !18 - br label %94 +89: ; preds = %86 + %90 = load ptr, ptr @stdout, align 8, !tbaa !18 + br label %93 -92: ; preds = %87 - %93 = tail call noalias ptr @fopen(ptr noundef nonnull %88, ptr noundef nonnull @.str.18) - br label %94 +91: ; preds = %86 + %92 = tail call noalias ptr @fopen(ptr noundef nonnull %87, ptr noundef nonnull @.str.18) + br label %93 -94: ; preds = %92, %90 - %95 = phi ptr [ %91, %90 ], [ %93, %92 ] - %96 = icmp eq ptr %95, null - br i1 %96, label %97, label %98 +93: ; preds = %91, %89 + %94 = phi ptr [ %90, %90 ], [ %92, %92 ] + %95 = icmp eq ptr %94, null + br i1 %95, label %96, label %97 -97: ; preds = %94 +96: ; preds = %93 tail call fastcc void @cannot(ptr noundef nonnull @.str.19) unreachable -98: ; preds = %94 +97: ; preds = %93 %.b26 = load i1, ptr @stripping, align 4 - %99 = zext i1 %.b26 to i32 - %100 = tail call i32 @luaU_dump(ptr noundef nonnull %0, ptr noundef %.0.i, ptr noundef nonnull @writer, ptr noundef nonnull %95, i32 noundef %99) #12 - %101 = tail call i32 @ferror(ptr noundef nonnull %95) #12 - %.not28 = icmp eq i32 %101, 0 - br i1 %.not28, label %103, label %102 + %98 = zext i1 %.b26 to i32 + %99 = tail call i32 @luaU_dump(ptr noundef nonnull %0, ptr noundef %.0.i, ptr noundef nonnull @writer, ptr noundef nonnull %94, i32 noundef %98) #12 + %100 = tail call i32 @ferror(ptr noundef nonnull %94) #12 + %.not28 = icmp eq i32 %100, 0 + br i1 %.not28, label %102, label %101 -102: ; preds = %98 +101: ; preds = %97 tail call fastcc void @cannot(ptr noundef nonnull @.str.20) unreachable -103: ; preds = %98 - %104 = tail call i32 @fclose(ptr noundef nonnull %95) - %.not29 = icmp eq i32 %104, 0 - br i1 %.not29, label %106, label %105 +102: ; preds = %97 + %103 = tail call i32 @fclose(ptr noundef nonnull %94) + %.not29 = icmp eq i32 %103, 0 + br i1 %.not29, label %105, label %104 -105: ; preds = %103 +104: ; preds = %102 tail call fastcc void @cannot(ptr noundef nonnull @.str.21) unreachable -106: ; preds = %103, %86 +105: ; preds = %102, %85 ret i32 0 } diff --git a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll index 26e9e36352a..98e8a5cebae 100644 --- a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll +++ b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll @@ -199,16 +199,16 @@ define hidden noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$13tr %2 = load atomic i8, ptr %0 acquire, align 1 %3 = icmp ult i8 %2, 4 tail call void @llvm.assume(i1 %3) - %4 = icmp eq i8 %2, 2 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 1 - br i1 %4, label %8, label %6 + %.not = icmp eq i8 %2, 2 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 1 + br i1 %.not, label %7, label %5 -6: ; preds = %1 - %7 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 %0) - br label %8 +5: ; preds = %1 + %6 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 %0) + br label %7 -8: ; preds = %1, %6 - %.0 = phi ptr [ %7, %6 ], [ %5, %1 ] +7: ; preds = %1, %5 + %.0 = phi ptr [ %6, %6 ], [ %4, %1 ] ret ptr %.0 } @@ -1775,14 +1775,14 @@ define hidden void @_ZN4ring3rsa7keypair7KeyPair15from_components17hcabd923a430a %47 = load atomic i8, ptr @_ZN4ring3cpu8features4INIT17hdec16924e286df23E acquire, align 1 %48 = icmp ult i8 %47, 4 tail call void @llvm.assume(i1 %48) - %49 = icmp eq i8 %47, 2 - br i1 %49, label %"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit", label %50 + %.not.i = icmp eq i8 %47, 2 + br i1 %.not.i, label %"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit", label %49 -50: ; preds = %2 - %51 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 @_ZN4ring3cpu8features4INIT17hdec16924e286df23E) +49: ; preds = %2 + %50 = tail call noundef nonnull align 1 ptr @"_ZN4spin4once17Once$LT$T$C$R$GT$18try_call_once_slow17hb9410bc6acb2ef26E.llvm.8403485840513791397"(ptr noundef nonnull align 1 @_ZN4ring3cpu8features4INIT17hdec16924e286df23E) br label %"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit" -"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit": ; preds = %2, %50 +"_ZN4spin4once17Once$LT$T$C$R$GT$13try_call_once17h06b4d0781e22c176E.exit": ; preds = %2, %49 call void @_ZN4ring3rsa7keypair7KeyPair16from_components_17h4ff4502bb2b5f3b2E(ptr noalias noundef nonnull sret({ ptr, [29 x i64] }) align 8 captures(none) dereferenceable(240) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(128) %3) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void diff --git a/bench/rocksdb/optimized/hash_skiplist_rep.ll b/bench/rocksdb/optimized/hash_skiplist_rep.ll index 5fe9707cb4b..8e24abb73ef 100644 --- a/bench/rocksdb/optimized/hash_skiplist_rep.ll +++ b/bench/rocksdb/optimized/hash_skiplist_rep.ll @@ -1740,27 +1740,27 @@ define internal noundef zeroext i1 @_ZNK7rocksdb12_GLOBAL__N_115HashSkipListRep8 %55 = sext i1 %52 to i32 %.226.i.i = add nsw i32 %.024.i.i, %55 %.223.i.i = select i1 %52, ptr %.0.i.i.i.i.i, ptr %.021.i.i - %.2.i.i = select i1 %52, ptr %.019.i.i, ptr %.0.i.i.i.i.i + %.223.i.i = select i1 %52, ptr %.019.i.i, ptr %.0.i.i.i.i.i br label %36, !llvm.loop !109 _ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i: ; preds = %.thread.i.i - br i1 %41, label %63, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i + br i1 %41, label %64, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i _ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i: ; preds = %43, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i - %56 = load ptr, ptr %35, align 8, !tbaa !108 - %57 = load ptr, ptr %.0.i.i.i.i.i, align 8, !tbaa !88 - %58 = load ptr, ptr %56, align 8, !tbaa !49 - %59 = getelementptr inbounds nuw i8, ptr %58, i64 8 - %60 = load ptr, ptr %59, align 8 - %61 = call noundef i32 %60(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef %1, ptr noundef %57) - %62 = icmp eq i32 %61, 0 - br i1 %62, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit, label %63 - -63: ; preds = %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i + %57 = load ptr, ptr %35, align 8, !tbaa !108 + %58 = load ptr, ptr %.0.i.i.i.i.i, align 8, !tbaa !88 + %59 = load ptr, ptr %57, align 8, !tbaa !49 + %60 = getelementptr inbounds nuw i8, ptr %59, i64 8 + %61 = load ptr, ptr %60, align 8 + %62 = call noundef i32 %60(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef %1, ptr noundef %58) + %63 = icmp eq i32 %62, 0 + br i1 %63, label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit, label %64 + +64: ; preds = %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.i br label %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit -_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit: ; preds = %63, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %2 - %.0 = phi i1 [ false, %2 ], [ false, %63 ], [ true, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i ] +_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8ContainsERKS2_.exit: ; preds = %64, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i, %2 + %.0 = phi i1 [ false, %2 ], [ false, %64 ], [ true, %_ZNK7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE18FindGreaterOrEqualERKS2_.exit.thread.i ] ret i1 %.0 } @@ -1856,7 +1856,7 @@ define internal void @_ZN7rocksdb12_GLOBAL__N_115HashSkipListRep3GetERKNS_9Looku %58 = sext i1 %55 to i32 %.226.i.i = add nsw i32 %.024.i.i, %58 %.223.i.i = select i1 %55, ptr %.0.i.i.i.i.i, ptr %.021.i.i - %.2.i.i = select i1 %55, ptr %.019.i.i, ptr %.0.i.i.i.i.i + %.223.i.i = select i1 %55, ptr %.019.i.i, ptr %.0.i.i.i.i.i br label %39, !llvm.loop !109 _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit: ; preds = %.thread.i.i @@ -1865,20 +1865,20 @@ _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_. .lr.ph.preheader: ; preds = %46, %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %61 - %.sroa.412.019 = phi ptr [ %.0.i.i.i.i10, %61 ], [ %.0.i.i.i.i.i, %.lr.ph.preheader ] - %59 = load ptr, ptr %.sroa.412.019, align 8, !tbaa !88 - %60 = call noundef zeroext i1 %3(ptr noundef %2, ptr noundef %59) - br i1 %60, label %61, label %.critedge - -61: ; preds = %.lr.ph - %62 = getelementptr inbounds nuw i8, ptr %.sroa.412.019, i64 8 - %63 = load atomic i64, ptr %62 acquire, align 8 - %.0.i.i.i.i10 = inttoptr i64 %63 to ptr - %.not17 = icmp eq i64 %63, 0 +.lr.ph: ; preds = %.lr.ph.preheader, %62 + %.sroa.412.019 = phi ptr [ %.0.i.i.i.i10, %62 ], [ %.0.i.i.i.i.i, %.lr.ph.preheader ] + %60 = load ptr, ptr %.sroa.412.019, align 8, !tbaa !88 + %61 = call noundef zeroext i1 %3(ptr noundef %2, ptr noundef %60) + br i1 %61, label %62, label %.critedge + +62: ; preds = %.lr.ph + %63 = getelementptr inbounds nuw i8, ptr %.sroa.412.019, i64 8 + %64 = load atomic i64, ptr %63 acquire, align 8 + %.0.i.i.i.i10 = inttoptr i64 %64 to ptr + %.not17 = icmp eq i64 %64, 0 br i1 %.not17, label %.critedge, label %.lr.ph, !llvm.loop !114 -.critedge: ; preds = %61, %.lr.ph, %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %4 +.critedge: ; preds = %62, %.lr.ph, %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %4 ret void } @@ -2634,7 +2634,7 @@ define internal void @_ZN7rocksdb12_GLOBAL__N_115HashSkipListRep8Iterator4SeekER %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8, !tbaa !120 %.not = icmp eq ptr %5, null - br i1 %.not, label %41, label %6 + br i1 %.not, label %42, label %6 6: ; preds = %3 %.not4 = icmp eq ptr %2, null @@ -2692,15 +2692,15 @@ define internal void @_ZN7rocksdb12_GLOBAL__N_115HashSkipListRep8Iterator4SeekER %39 = sext i1 %36 to i32 %.226.i.i = add nsw i32 %.024.i.i, %39 %.223.i.i = select i1 %36, ptr %.0.i.i.i.i.i, ptr %.021.i.i - %.2.i.i = select i1 %36, ptr %.019.i.i, ptr %.0.i.i.i.i.i + %.223.i.i = select i1 %36, ptr %.019.i.i, ptr %.0.i.i.i.i.i br label %20, !llvm.loop !109 _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit: ; preds = %27, %.thread.i.i - %40 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %.0.i.i.i.i.i, ptr %40, align 8, !tbaa !134 - br label %41 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %.0.i.i.i.i.i, ptr %41, align 8, !tbaa !134 + br label %42 -41: ; preds = %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %3 +42: ; preds = %_ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit, %3 ret void } @@ -3027,7 +3027,7 @@ _ZN7rocksdb12_GLOBAL__N_115HashSkipListRep8Iterator5ResetEPNS_8SkipListIPKcRKNS_ %73 = sext i1 %70 to i32 %.226.i.i.i = add nsw i32 %.024.i.i.i, %73 %.223.i.i.i = select i1 %70, ptr %.0.i.i.i.i.i.i, ptr %.021.i.i.i - %.2.i.i.i = select i1 %70, ptr %.019.i.i.i, ptr %.0.i.i.i.i.i.i + %.223.i.i.i = select i1 %70, ptr %.019.i.i.i, ptr %.0.i.i.i.i.i.i br label %54, !llvm.loop !109 _ZN7rocksdb8SkipListIPKcRKNS_11MemTableRep13KeyComparatorEE8Iterator4SeekERKS2_.exit.i: ; preds = %.thread.i.i.i, %61 diff --git a/bench/ruby/optimized/emacs_mule.ll b/bench/ruby/optimized/emacs_mule.ll index e5af66f7d5d..bd9cc8cb7a9 100644 --- a/bench/ruby/optimized/emacs_mule.ll +++ b/bench/ruby/optimized/emacs_mule.ll @@ -186,18 +186,18 @@ define internal range(i32 -400, 5) i32 @code_to_mbclen(i32 noundef %0, ptr readn %6 = icmp slt i32 %5, -16777215 br i1 %6, label %13, label %7 -7: ; preds = %4 +7:; preds = %4 %8 = and i32 %0, 8388608 %9 = icmp eq i32 %8, 0 br i1 %9, label %10, label %13 -10: ; preds = %7 +10:; preds = %7 %11 = and i32 %0, 32768 - %12 = icmp eq i32 %11, 0 + %12 = icmp eq i32 %.not27, 0 %. = select i1 %12, i32 -400, i32 2 br label %13 -13: ; preds = %10, %7, %4, %2 +13:; preds = %10, %7, %4, %2 %.0 = phi i32 [ 1, %2 ], [ 4, %4 ], [ 3, %7 ], [ %., %10 ] ret i32 %.0 } @@ -217,59 +217,59 @@ define internal i32 @code_to_mbc(i32 noundef %0, ptr noundef %1, ptr noundef %2) 8: ; preds = %4, %3 %.0 = phi ptr [ %7, %4 ], [ %1, %3 ] %9 = and i32 %0, 16711680 - %10 = icmp eq i32 %9, 0 - br i1 %10, label %15, label %11 - -11: ; preds = %8 - %12 = lshr i32 %0, 16 - %13 = trunc i32 %12 to i8 - %14 = getelementptr inbounds nuw i8, ptr %.0, i64 1 - store i8 %13, ptr %.0, align 1, !tbaa !6 - br label %15 - -15: ; preds = %11, %8 - %.1 = phi ptr [ %14, %11 ], [ %.0, %8 ] - %16 = and i32 %0, 65280 - %17 = icmp eq i32 %16, 0 - br i1 %17, label %22, label %18 - -18: ; preds = %15 - %19 = lshr i32 %0, 8 - %20 = trunc i32 %19 to i8 - %21 = getelementptr inbounds nuw i8, ptr %.1, i64 1 - store i8 %20, ptr %.1, align 1, !tbaa !6 - br label %22 - -22: ; preds = %18, %15 - %.2 = phi ptr [ %21, %18 ], [ %.1, %15 ] - %23 = trunc i32 %0 to i8 - %24 = getelementptr inbounds nuw i8, ptr %.2, i64 1 - store i8 %23, ptr %.2, align 1, !tbaa !6 - %25 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %26 = load i32, ptr %25, align 8, !tbaa !11 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 20 - %28 = load i32, ptr %27, align 4, !tbaa !15 - %29 = icmp eq i32 %26, %28 - br i1 %29, label %30, label %32 - -30: ; preds = %22 - %31 = icmp ult ptr %1, %24 - %spec.select = select i1 %31, i32 %26, i32 0 - br label %34 - -32: ; preds = %22 - %33 = tail call i32 @onigenc_mbclen(ptr noundef %1, ptr noundef nonnull %24, ptr noundef nonnull %2) #6 - br label %34 - -34: ; preds = %30, %32 - %35 = phi i32 [ %33, %32 ], [ %spec.select, %30 ] - %36 = sext i32 %35 to i64 - %37 = ptrtoint ptr %24 to i64 - %38 = ptrtoint ptr %1 to i64 - %39 = sub i64 %37, %38 - %.not29 = icmp eq i64 %39, %36 - %40 = trunc nsw i64 %39 to i32 - %.024 = select i1 %.not29, i32 %40, i32 -400 + %.not27 = icmp eq i32 %9, 0 + br i1 %.not27, label %14, label %10 + +10: ; preds = %8 + %11 = lshr i32 %0, 16 + %12 = trunc i32 %11 to i8 + %13 = getelementptr inbounds nuw i8, ptr %.0, i64 1 + store i8 %12, ptr %.0, align 1, !tbaa !6 + br label %14 + +14: ; preds = %10, %8 + %.1 = phi ptr [ %13, %11 ], [ %.0, %8 ] + %15 = and i32 %0, 65280 + %.not28 = icmp eq i32 %15, 0 + br i1 %.not28, label %20, label %16 + +16: ; preds = %14 + %17 = lshr i32 %0, 8 + %18 = trunc i32 %17 to i8 + %19 = getelementptr inbounds nuw i8, ptr %.1, i64 1 + store i8 %18, ptr %.1, align 1, !tbaa !6 + br label %20 + +20: ; preds = %16, %14 + %.2 = phi ptr [ %19, %18 ], [ %.1, %15 ] + %21 = trunc i32 %0 to i8 + %22 = getelementptr inbounds nuw i8, ptr %.2, i64 1 + store i8 %21, ptr %.2, align 1, !tbaa !6 + %23 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %24 = load i32, ptr %23, align 8, !tbaa !11 + %25 = getelementptr inbounds nuw i8, ptr %2, i64 20 + %26 = load i32, ptr %25, align 4, !tbaa !15 + %27 = icmp eq i32 %24, %26 + br i1 %27, label %28, label %30 + +28: ; preds = %20 + %29 = icmp ult ptr %1, %22 + %spec.select = select i1 %29, i32 %24, i32 0 + br label %32 + +30: ; preds = %20 + %31 = tail call i32 @onigenc_mbclen(ptr noundef %1, ptr noundef nonnull %22, ptr noundef nonnull %2) #6 + br label %32 + +32: ; preds = %28, %30 + %33 = phi i32 [ %31, %32 ], [ %spec.select, %30 ] + %34 = sext i32 %33 to i64 + %35 = ptrtoint ptr %22 to i64 + %36 = ptrtoint ptr %1 to i64 + %37 = sub i64 %35, %36 + %.not29 = icmp eq i64 %37, %34 + %38 = trunc nsw i64 %37 to i32 + %.024 = select i1 %.not29, i32 %38, i32 -400 ret i32 %.024 } diff --git a/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll b/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll index 66c9ea20e77..474906f9f1b 100644 --- a/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll +++ b/bench/rust-analyzer-rs/optimized/1siyoufv1amkefl9.ll @@ -593,152 +593,152 @@ define void @_ZN5paths7AbsPath9normalize17h54d05f3dece16b61E(ptr noalias noundef %13 = icmp samesign ugt i8 %.pre.i.i, 5 br i1 %13, label %.thread.i, label %15 -14: ; preds = %36 +15: ; preds = %37 unreachable -15: ; preds = %3 +16: ; preds = %3 %.sroa.gep.i = getelementptr inbounds nuw i8, ptr %10, i64 1 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !58 store i8 %.pre.i.i, ptr %8, align 8, !noalias !58 %.sroa.7.0..sroa_idx3.i = getelementptr inbounds nuw i8, ptr %8, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(55) %.sroa.7.0..sroa_idx3.i, ptr noundef nonnull align 1 dereferenceable(55) %.sroa.gep.i, i64 55, i1 false), !noalias !58 store i8 11, ptr %10, align 8, !noalias !58 - %16 = call { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %8), !noalias !62 - %17 = extractvalue { ptr, i64 } %16, 0 - %18 = extractvalue { ptr, i64 } %16, 1 - %19 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h28dde44bbc4c4023E"(i64 noundef %18, i1 noundef zeroext false), !noalias !70 - %20 = extractvalue { i64, ptr } %19, 0 - %21 = extractvalue { i64, ptr } %19, 1 - %22 = icmp ne ptr %21, null - call void @llvm.assume(i1 %22) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %21, ptr nonnull readonly align 1 %17, i64 %18, i1 false), !noalias !74 + %17 = call { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %8), !noalias !62 + %18 = extractvalue { ptr, i64 } %17, 0 + %19 = extractvalue { ptr, i64 } %17, 1 + %20 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h28dde44bbc4c4023E"(i64 noundef %19, i1 noundef zeroext false), !noalias !70 + %21 = extractvalue { i64, ptr } %20, 0 + %22 = extractvalue { i64, ptr } %20, 1 + %23 = icmp ne ptr %22, null + call void @llvm.assume(i1 %23) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %22, ptr nonnull readonly align 1 %18, i64 %19, i1 false), !noalias !74 call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !58 br label %.thread.i -.thread.i: ; preds = %3, %15 - %.sink2 = phi i64 [ %20, %15 ], [ 0, %3 ] - %.sink1 = phi ptr [ %21, %15 ], [ inttoptr (i64 1 to ptr), %3 ] - %.sink = phi i64 [ %18, %15 ], [ 0, %3 ] - store i64 %.sink2, ptr %9, align 8, !noalias !58 - %23 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %.sink1, ptr %23, align 8, !noalias !58 - %24 = getelementptr inbounds nuw i8, ptr %9, i64 16 - store i64 %.sink, ptr %24, align 8, !noalias !58 +.thread.i: ; preds = %3, %16 + %.sink3 = phi i64 [ %21, %15 ], [ 0, %3 ] + %.sink2 = phi ptr [ %22, %15 ], [ inttoptr (i64 1 to ptr), %3 ] + %.sink = phi i64 [ %19, %15 ], [ 0, %3 ] + store i64 %.sink3, ptr %9, align 8, !noalias !58 + %24 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store ptr %.sink2, ptr %24, align 8, !noalias !58 + %25 = getelementptr inbounds nuw i8, ptr %9, i64 16 + store i64 %.sink, ptr %25, align 8, !noalias !58 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %7, ptr noundef nonnull align 8 dereferenceable(120) %10, i64 120, i1 false), !noalias !58 %.sroa.522.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %7, i64 1 %.sroa.522.0..sroa_idx23.i = getelementptr inbounds nuw i8, ptr %5, i64 1 - %25 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %26 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %27 = getelementptr inbounds nuw i8, ptr %6, i64 16 - br label %28 + %26 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %27 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %28 = getelementptr inbounds nuw i8, ptr %6, i64 16 + br label %29 -28: ; preds = %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i, %.thread.i +29: ; preds = %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i, %.thread.i %.sroa.020.0.copyload.i = load i8, ptr %7, align 8, !noalias !58 store i8 11, ptr %7, align 8, !noalias !58 - %29 = icmp eq i8 %.sroa.020.0.copyload.i, 11 - br i1 %29, label %30, label %31 + %30 = icmp eq i8 %.sroa.020.0.copyload.i, 11 + br i1 %30, label %31, label %32 -30: ; preds = %28 - invoke void @"_ZN81_$LT$camino..Utf8Components$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h13a6c03a00f603f1E"(ptr noalias noundef nonnull sret({ i8, [55 x i8] }) align 8 captures(none) dereferenceable(56) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %25) +31: ; preds = %29 + invoke void @"_ZN81_$LT$camino..Utf8Components$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h13a6c03a00f603f1E"(ptr noalias noundef nonnull sret({ i8, [55 x i8] }) align 8 captures(none) dereferenceable(56) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %26) to label %thread-pre-split.i unwind label %.loopexit.i, !noalias !62 -31: ; preds = %28 +32: ; preds = %29 store i8 %.sroa.020.0.copyload.i, ptr %5, align 8, !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(55) %.sroa.522.0..sroa_idx23.i, ptr noundef nonnull align 1 dereferenceable(55) %.sroa.522.0..sroa_idx.i, i64 55, i1 false), !noalias !58 - br label %33 + br label %34 -.loopexit.i: ; preds = %.noexc.invoke.i, %.invoke.i, %45, %43, %30 +.loopexit.i: ; preds = %.noexc.invoke.i, %.invoke.i, %46, %44, %31 %lpad.loopexit.i = landingpad { ptr, i32 } cleanup - br label %32 + br label %33 -.loopexit.split-lp.i: ; preds = %42 +.loopexit.split-lp.i: ; preds = %43 %lpad.loopexit.split-lp.i = landingpad { ptr, i32 } cleanup - br label %32 + br label %33 -32: ; preds = %.loopexit.split-lp.i, %.loopexit.i +33: ; preds = %.loopexit.split-lp.i, %.loopexit.i %lpad.phi.i = phi { ptr, i32 } [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] invoke void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haaeb7dae211bd4c7E.llvm.18162065724549059738"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) - to label %"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i" unwind label %59, !noalias !62 + to label %"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i" unwind label %60, !noalias !62 -thread-pre-split.i: ; preds = %30 +thread-pre-split.i: ; preds = %31 %.pr.i = load i8, ptr %5, align 8, !noalias !58 - br label %33 + br label %34 -33: ; preds = %thread-pre-split.i, %31 - %34 = phi i8 [ %.pr.i, %thread-pre-split.i ], [ %.sroa.020.0.copyload.i, %31 ] - %35 = icmp eq i8 %34, 10 - br i1 %35, label %_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit, label %36 +34: ; preds = %thread-pre-split.i, %32 + %35 = phi i8 [ %.pr.i, %thread-pre-split.i ], [ %.sroa.020.0.copyload.i, %31 ] + %36 = icmp eq i8 %35, 10 + br i1 %36, label %_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit, label %37 -36: ; preds = %33 +37: ; preds = %34 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(56) %5, i64 56, i1 false), !noalias !58 - %37 = load i8, ptr %6, align 8, !range !75, !noalias !58, !noundef !7 - %38 = icmp samesign ugt i8 %37, 5 - %39 = zext nneg i8 %37 to i64 - %40 = add nsw i64 %39, -5 - %41 = select i1 %38, i64 %40, i64 0 - switch i64 %41, label %14 [ - i64 0, label %42 - i64 1, label %43 + %38 = load i8, ptr %6, align 8, !range !75, !noalias !58, !noundef !7 + %39 = icmp samesign ugt i8 %38, 5 + %40 = zext nneg i8 %38 to i64 + %41 = add nsw i64 %40, -5 + %42 = select i1 %39, i64 %41, i64 0 + switch i64 %42, label %14 [ + i64 0, label %43 + i64 1, label %44 i64 2, label %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i - i64 3, label %45 - i64 4, label %47 + i64 3, label %46 + i64 4, label %48 ] -42: ; preds = %36 +43: ; preds = %37 invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.fe1bb7944afa79976b224b8f2f69f3c4.26, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fe1bb7944afa79976b224b8f2f69f3c4.27) #10 to label %55 unwind label %.loopexit.split-lp.i, !noalias !62 -43: ; preds = %36 - %44 = invoke { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %6) +44: ; preds = %37 + %45 = invoke { ptr, i64 } @_ZN6camino13Utf8Component6as_str17h75f0ee6bd6445fc9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %6) to label %56 unwind label %.loopexit.i, !noalias !62 -_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i: ; preds = %.noexc.invoke.i, %45, %36 +_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i: ; preds = %.noexc.invoke.i, %46, %37 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !58 - br label %28 + br label %29 -45: ; preds = %36 - %46 = invoke noundef zeroext i1 @_ZN6camino11Utf8PathBuf3pop17hceb85ab0ada1cefbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) +46: ; preds = %37 + %47 = invoke noundef zeroext i1 @_ZN6camino11Utf8PathBuf3pop17hceb85ab0ada1cefbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) to label %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i unwind label %.loopexit.i, !noalias !62 -47: ; preds = %36 - %48 = load ptr, ptr %26, align 8, !noalias !58, !nonnull !7, !align !76, !noundef !7 - %49 = load i64, ptr %27, align 8, !noalias !58, !noundef !7 +48: ; preds = %37 + %49 = load ptr, ptr %27, align 8, !noalias !58, !nonnull !7, !align !76, !noundef !7 + %50 = load i64, ptr %28, align 8, !noalias !58, !noundef !7 br label %.invoke.i -.invoke.i: ; preds = %56, %47 - %50 = phi ptr [ %48, %47 ], [ %57, %56 ] - %51 = phi i64 [ %49, %47 ], [ %58, %56 ] - %52 = invoke { ptr, i64 } @"_ZN6camino78_$LT$impl$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$u20$for$u20$str$GT$6as_ref17h02821cf3bf4b2a93E"(ptr noalias noundef nonnull readonly align 1 %50, i64 noundef %51) +.invoke.i: ; preds = %57, %48 + %51 = phi ptr [ %49, %47 ], [ %58, %56 ] + %52 = phi i64 [ %50, %47 ], [ %59, %56 ] + %53 = invoke { ptr, i64 } @"_ZN6camino78_$LT$impl$u20$core..convert..AsRef$LT$camino..Utf8Path$GT$$u20$for$u20$str$GT$6as_ref17h02821cf3bf4b2a93E"(ptr noalias noundef nonnull readonly align 1 %51, i64 noundef %52) to label %.noexc.invoke.i unwind label %.loopexit.i, !noalias !62 .noexc.invoke.i: ; preds = %.invoke.i - %53 = extractvalue { ptr, i64 } %52, 0 - %54 = extractvalue { ptr, i64 } %52, 1 - invoke void @_ZN3std4path7PathBuf5_push17h98f2c6a7c69395cbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 1 %53, i64 noundef %54) + %54 = extractvalue { ptr, i64 } %53, 0 + %55 = extractvalue { ptr, i64 } %53, 1 + invoke void @_ZN3std4path7PathBuf5_push17h98f2c6a7c69395cbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 1 %54, i64 noundef %55) to label %_ZN6camino11Utf8PathBuf4push17h39a7c64d756f45daE.exit.i unwind label %.loopexit.i, !noalias !62 -55: ; preds = %42 +56: ; preds = %43 unreachable -56: ; preds = %43 - %57 = extractvalue { ptr, i64 } %44, 0 - %58 = extractvalue { ptr, i64 } %44, 1 +57: ; preds = %44 + %58 = extractvalue { ptr, i64 } %45, 0 + %59 = extractvalue { ptr, i64 } %45, 1 br label %.invoke.i -59: ; preds = %32 - %60 = landingpad { ptr, i32 } +60: ; preds = %33 + %61 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #11, !noalias !62 unreachable -"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i": ; preds = %32 +"_ZN4core3ptr40drop_in_place$LT$camino..Utf8PathBuf$GT$17h8eccead1e4641233E.exit.i": ; preds = %33 resume { ptr, i32 } %lpad.phi.i -_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit: ; preds = %33 +_ZN5paths14normalize_path17h16d35ece6b06a91fE.exit: ; preds = %34 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !noalias !77 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !58 diff --git a/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll b/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll index 6b3f9106239..2d181d7e21e 100644 --- a/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll +++ b/bench/rust-analyzer-rs/optimized/6ix1w6o1enhavym.ll @@ -284,7 +284,7 @@ define hidden void @_ZN4core9panicking13assert_failed17h4a6a04f254648330E(i8 nou %7 = alloca ptr, align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #15 + call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 unreachable } @@ -294,7 +294,7 @@ define hidden void @_ZN4core9panicking13assert_failed17h4e9382beb42ffb7fE(i8 nou %7 = alloca ptr, align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #15 + call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 unreachable } @@ -304,7 +304,7 @@ define hidden void @_ZN4core9panicking13assert_failed17hdc032fdcb945adf5E(i8 nou %7 = alloca ptr, align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #15 + call void @_ZN4core9panicking19assert_failed_inner17hbec58bc3f09fc0a6E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 unreachable } @@ -354,7 +354,7 @@ define hidden void @"_ZN75_$LT$indexmap..set..IndexSet$LT$T$C$S$GT$$u20$as$u20$c 5: ; preds = %2 %6 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr96drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$salsa..DatabaseKeyIndex$C$$LP$$RP$$GT$$GT$17hdb5332a5fb62873fE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %3) #16 + invoke void @"_ZN4core3ptr96drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$salsa..DatabaseKeyIndex$C$$LP$$RP$$GT$$GT$17hdb5332a5fb62873fE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %3) #17 to label %9 unwind label %7, !noalias !63 7: ; preds = %5 @@ -384,11 +384,11 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h01f3cfb6dada2721 4: ; preds = %1 %5 = landingpad { ptr, i32 } cleanup - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #19 resume { ptr, i32 } %5 "_ZN4core3ptr104drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$salsa..runtime..SharedState$GT$$GT$$GT$17h3b005481cf0555f3E.exit": ; preds = %1 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 144, i64 noundef 8) #19 ret void } @@ -399,31 +399,31 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h1332530d5bcbb41f %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !65 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h394fb9a6b9a5484aE.llvm.12611796297594801985"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) - to label %.noexc.i unwind label %13 + to label %.noexc.i unwind label %12 .noexc.i: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 %6 = load i64, ptr %5, align 8, !range !74, !noalias !65, !noundef !4 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit", label %8 - -8: ; preds = %.noexc.i - %9 = load ptr, ptr %2, align 8, !noalias !65, !nonnull !4, !noundef !4 - %10 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %11 = load i64, ptr %10, align 8, !noalias !65, !noundef !4 - %12 = getelementptr inbounds nuw i8, ptr %3, i64 24 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.12611796297594801985"(ptr noalias noundef nonnull readonly align 1 %12, ptr noundef nonnull %9, i64 noundef %6, i64 noundef %11) - to label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit" unwind label %13 - -13: ; preds = %8, %1 - %14 = landingpad { ptr, i32 } + %.not.i.i.i.i.i = icmp eq i64 %6, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit", label %7 + +7: ; preds = %.noexc.i + %8 = load ptr, ptr %2, align 8, !noalias !65, !nonnull !4, !noundef !4 + %9 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %10 = load i64, ptr %9, align 8, !noalias !65, !noundef !4 + %11 = getelementptr inbounds nuw i8, ptr %3, i64 24 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.12611796297594801985"(ptr noalias noundef nonnull readonly align 1 %11, ptr noundef nonnull %8, i64 noundef %6, i64 noundef %10) + to label %"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit" unwind label %12 + +12: ; preds = %7, %1 + %13 = landingpad { ptr, i32 } cleanup - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #18 - resume { ptr, i32 } %14 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #19 + resume { ptr, i32 } %13 -"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit": ; preds = %.noexc.i, %8 +"_ZN4core3ptr123drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$alloc..vec..Vec$LT$salsa..DatabaseKeyIndex$GT$$GT$$GT$$GT$17he8e15fd9dcac12f0E.exit": ; preds = %.noexc.i, %7 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !65 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 32, i64 noundef 8) #19 ret void } @@ -441,7 +441,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h61fc90ac14b35aee 10: ; preds = %1 %11 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef range(i64 1, -7) %8, i64 noundef 8) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef range(i64 1, -7) %8, i64 noundef 8) #19 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17habdebe92190134ecE.exit" "_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$triomphe..header..HeaderSlice$LT$triomphe..header..HeaderWithLength$LT$$LP$$RP$$GT$$C$$u5b$salsa..DatabaseKeyIndex$u5d$$GT$$GT$$GT$$GT$17habdebe92190134ecE.exit": ; preds = %1, %10 @@ -451,7 +451,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h61fc90ac14b35aee ; Function Attrs: nounwind nonlazybind uwtable define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hcfddfe30c7c7b901E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #5 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 16, i64 noundef 8) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 16, i64 noundef 8) #19 ret void } @@ -466,16 +466,16 @@ define hidden { ptr, i64 } @"_ZN8triomphe6header96_$LT$impl$u20$triomphe..arc..A %8 = ptrtoint ptr %1 to i64 %9 = sub nuw i64 %7, %8 %10 = lshr exact i64 %9, 4 - switch i64 %10, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" [ + switch i64 %9, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" [ i64 1152921504606846975, label %11 - i64 1152921504606846974, label %12 + i64 1152921504606846974, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i" ] -11: ; preds = %3 +11:; preds = %3 call void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.4, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.14) #15, !noalias !75 unreachable -12: ; preds = %3 +"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i": ; preds = %3 call void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.4, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.11) #15, !noalias !79 unreachable @@ -485,67 +485,67 @@ define hidden { ptr, i64 } @"_ZN8triomphe6header96_$LT$impl$u20$triomphe..arc..A %15 = and i64 %14, -8 %16 = add nuw i64 %15, 15 %17 = and i64 %16, -8 - %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %18 = load volatile i7, ptr @__rust_no_alloc_shim_is_unstable, align 1 %19 = tail call noundef align 8 ptr @__rust_alloc(i64 noundef %17, i64 noundef 8) #18 %20 = icmp eq ptr %19, null br i1 %20, label %21, label %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" -21: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" +21: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef %17) #15 unreachable "_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc6acc702c21d70e1E.exit.i.i.i" store i64 1, ptr %19, align 8 - %22 = getelementptr i8, ptr %19, i64 8 - store i64 %0, ptr %22, align 8 - %23 = icmp eq ptr %2, %1 - br i1 %23, label %24, label %.lr.ph.preheader + %24 = getelementptr i8, ptr %19, i64 8 + store i64 %0, ptr %24, align 8 + %25 = icmp eq ptr %2, %1 + br i1 %25, label %26, label %.lr.ph.preheader -24: ; preds = %._crit_edge, %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" - %25 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !83 - %26 = icmp eq ptr %25, null - br i1 %26, label %34, label %33 +26: ; preds = %._crit_edge, %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" + %27 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !83 + %28 = icmp eq ptr %27, null + br i1 %28, label %36, label %35 .lr.ph.preheader: ; preds = %"_ZN8triomphe3arc63Arc$LT$triomphe..header..HeaderSlice$LT$H$C$$u5b$T$u5d$$GT$$GT$29allocate_for_header_and_slice17h8d5e5f72e163a38fE.exit" - %27 = getelementptr i8, ptr %19, i64 16 + %29 = getelementptr i8, ptr %19, i64 16 br label %.lr.ph -._crit_edge: ; preds = %38 - %28 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !86 - %29 = icmp eq ptr %28, null - br i1 %29, label %24, label %32 - -.lr.ph: ; preds = %.lr.ph.preheader, %38 - %.034 = phi ptr [ %42, %38 ], [ %27, %.lr.ph.preheader ] - %.sroa.07.033 = phi i64 [ %39, %38 ], [ 0, %.lr.ph.preheader ] - %30 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !89 +._crit_edge: ; preds = %40 + %30 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !86 %31 = icmp eq ptr %30, null - br i1 %31, label %37, label %38 + br i1 %31, label %26, label %34 + +.lr.ph: ; preds = %.lr.ph.preheader, %40 + %.034 = phi ptr [ %44, %38 ], [ %29, %.lr.ph.preheader ] + %.sroa.07.033 = phi i64 [ %41, %38 ], [ 0, %.lr.ph.preheader ] + %32 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdc9d23bda0922037E.llvm.17596014262530528876"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !89 + %33 = icmp eq ptr %32, null + br i1 %33, label %39, label %40 -32: ; preds = %._crit_edge - call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.23) #15 +34: ; preds = %._crit_edge + call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.23) #16 unreachable -33: ; preds = %24 - call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.24) #15 +35: ; preds = %26 + call void @_ZN3std9panicking11begin_panic17h6f2f28468a4baf7aE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.24) #16 unreachable -34: ; preds = %24 - %35 = insertvalue { ptr, i64 } poison, ptr %19, 0 - %36 = insertvalue { ptr, i64 } %35, i64 %10, 1 - ret { ptr, i64 } %36 +36: ; preds = %26 + %37 = insertvalue { ptr, i64 } poison, ptr %19, 0 + %38 = insertvalue { ptr, i64 } %37, i64 %10, 1 + ret { ptr, i64 } %38 -37: ; preds = %.lr.ph - call void @_ZN4core6option13expect_failed17hea24986454718b4fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.25, i64 noundef 38, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.26) #15 +39: ; preds = %.lr.ph + call void @_ZN4core6option13expect_failed17hea24986454718b4fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.25, i64 noundef 38, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.26) #16 unreachable -38: ; preds = %.lr.ph - %39 = add nuw nsw i64 %.sroa.07.033, 1 - %40 = getelementptr inbounds nuw i8, ptr %30, i64 8 - %41 = load i64, ptr %40, align 8, !noalias !89 - store i64 %41, ptr %.034, align 4 - %42 = getelementptr inbounds nuw i8, ptr %.034, i64 8 - %exitcond.not = icmp eq i64 %39, %10 +40: ; preds = %.lr.ph + %41 = add nuw nsw i64 %.sroa.07.033, 1 + %42 = getelementptr inbounds nuw i8, ptr %32, i64 8 + %43 = load i64, ptr %42, align 8, !noalias !89 + store i64 %43, ptr %.034, align 4 + %44 = getelementptr inbounds nuw i8, ptr %.034, i64 8 + %exitcond.not = icmp eq i64 %41, %9 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph } @@ -595,7 +595,7 @@ define noundef range(i32 1, -255) i32 @"_ZN77_$LT$salsa..intern_id..InternId$u20 br i1 %2, label %4, label %3 3: ; preds = %1 - tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.27, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.29) #15 + tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.27, i64 noundef 36, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.29) #16 unreachable 4: ; preds = %1 @@ -609,7 +609,7 @@ define noundef range(i32 1, -255) i32 @"_ZN79_$LT$salsa..intern_id..InternId$u20 br i1 %2, label %4, label %3 3: ; preds = %1 - tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.30, i64 noundef 47, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.31) #15 + tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.d9b319fdc28c08d9bbb8b2026cb3226e.30, i64 noundef 47, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.d9b319fdc28c08d9bbb8b2026cb3226e.31) #16 unreachable 4: ; preds = %1 diff --git a/bench/sdl/optimized/SDL_asyncio_generic.ll b/bench/sdl/optimized/SDL_asyncio_generic.ll index d6e87fe4b0d..657df9b84d3 100644 --- a/bench/sdl/optimized/SDL_asyncio_generic.ll +++ b/bench/sdl/optimized/SDL_asyncio_generic.ll @@ -70,7 +70,7 @@ define hidden noundef zeroext i1 @SDL_SYS_CreateAsyncIOQueue_Generic(ptr noundef define internal fastcc noundef zeroext i1 @PrepareThreadpool() unnamed_addr #0 { %1 = alloca [32 x i8], align 16 %2 = tail call zeroext i1 @SDL_ShouldInit_REAL(ptr noundef nonnull @threadpool_init) #8 - br i1 %2, label %3, label %32 + br i1 %2, label %3, label %31 3: ; preds = %0 %4 = tail call i32 @SDL_GetNumLogicalCPUCores_REAL() #8 @@ -85,18 +85,18 @@ define internal fastcc noundef zeroext i1 @PrepareThreadpool() unnamed_addr #0 { %.not = icmp eq ptr %10, null br i1 %.not, label %.critedge.thread11, label %11 -11: ; preds = %3 +11:; preds = %3 %12 = tail call ptr @SDL_CreateCondition_REAL() #8 store ptr %12, ptr @threadpool_condition, align 8 %.not14 = icmp eq ptr %12, null br i1 %.not14, label %.critedge.thread11.thread, label %13 -13: ; preds = %11 +13:; preds = %11 %14 = load i32, ptr @idle_threadpool_threads, align 4 %15 = icmp eq i32 %14, 0 br i1 %15, label %16, label %.critedge.thread -16: ; preds = %13 +16:; preds = %13 %17 = load i32, ptr @running_threadpool_threads, align 4 %18 = load i32, ptr @max_threadpool_threads, align 4 %19 = icmp slt i32 %17, %18 @@ -104,20 +104,20 @@ define internal fastcc noundef zeroext i1 @PrepareThreadpool() unnamed_addr #0 { 20: ; preds = %16 call void @llvm.lifetime.start.p0(ptr nonnull %1) - %21 = load i32, ptr @threadpool_threads_spun, align 4 - %22 = call i32 (ptr, i64, ptr, ...) @SDL_snprintf_REAL(ptr noundef nonnull %1, i64 noundef 32, ptr noundef nonnull @.str, i32 noundef %21) #8 - %23 = call ptr @SDL_CreateThreadRuntime_REAL(ptr noundef nonnull @AsyncIOThreadpoolWorker, ptr noundef nonnull %1, ptr noundef null, ptr noundef null, ptr noundef null) #8 - %.not15 = icmp eq ptr %23, null + %20 = load i32, ptr @threadpool_threads_spun, align 4 + %21 = call i32 (ptr, i64, ptr, ...) @SDL_snprintf_REAL(ptr noundef nonnull %1, i64 noundef 32, ptr noundef nonnull @.str, i32 noundef %20) #8 + %22 = call ptr @SDL_CreateThreadRuntime_REAL(ptr noundef nonnull @AsyncIOThreadpoolWorker, ptr noundef nonnull %1, ptr noundef null, ptr noundef null, ptr noundef null) #8 + %.not15 = icmp eq ptr %22, null br i1 %.not15, label %.critedge, label %.critedge.thread12 .critedge.thread12: ; preds = %20 - call void @SDL_DetachThread_REAL(ptr noundef nonnull %23) #8 - %24 = load i32, ptr @running_threadpool_threads, align 4 - %25 = add nsw i32 %24, 1 - store i32 %25, ptr @running_threadpool_threads, align 4 - %26 = load i32, ptr @threadpool_threads_spun, align 4 - %27 = add nsw i32 %26, 1 - store i32 %27, ptr @threadpool_threads_spun, align 4 + call void @SDL_DetachThread_REAL(ptr noundef nonnull %22) #8 + %23 = load i32, ptr @running_threadpool_threads, align 4 + %24 = add nsw i32 %23, 1 + store i32 %24, ptr @running_threadpool_threads, align 4 + %25 = load i32, ptr @threadpool_threads_spun, align 4 + %26 = add nsw i32 %25, 1 + store i32 %26, ptr @threadpool_threads_spun, align 4 call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %.critedge.thread @@ -128,30 +128,30 @@ define internal fastcc noundef zeroext i1 @PrepareThreadpool() unnamed_addr #0 { .critedge.thread11: ; preds = %3, %.critedge %.pr = load ptr, ptr @threadpool_condition, align 8 %.not8 = icmp eq ptr %.pr, null - br i1 %.not8, label %.critedge.thread11.thread, label %28 + br i1 %.not8, label %.critedge.thread11.thread, label %27 -28: ; preds = %.critedge.thread11 +27: ; preds = %.critedge.thread11 call void @SDL_DestroyCondition_REAL(ptr noundef nonnull %.pr) #8 store ptr null, ptr @threadpool_condition, align 8 br label %.critedge.thread11.thread -.critedge.thread11.thread: ; preds = %11, %28, %.critedge.thread11 - %29 = load ptr, ptr @threadpool_lock, align 8 - %.not9 = icmp eq ptr %29, null - br i1 %.not9, label %.critedge.thread, label %30 +.critedge.thread11.thread: ; preds = %11, %27, %.critedge.thread11 + %28 = load ptr, ptr @threadpool_lock, align 8 + %.not9 = icmp eq ptr %28, null + br i1 %.not9, label %.critedge.thread, label %29 -30: ; preds = %.critedge.thread11.thread - call void @SDL_DestroyMutex_REAL(ptr noundef nonnull %29) #8 +29: ; preds = %.critedge.thread11.thread + call void @SDL_DestroyMutex_REAL(ptr noundef nonnull %28) #8 store ptr null, ptr @threadpool_lock, align 8 br label %.critedge.thread -.critedge.thread: ; preds = %13, %16, %.critedge.thread12, %.critedge.thread11.thread, %30 - %31 = phi i1 [ false, %.critedge.thread11.thread ], [ false, %30 ], [ true, %.critedge.thread12 ], [ true, %16 ], [ true, %13 ] - call void @SDL_SetInitialized_REAL(ptr noundef nonnull @threadpool_init, i1 noundef zeroext %31) #8 - br label %32 +.critedge.thread: ; preds = %13, %16, %.critedge.thread12, %.critedge.thread11.thread, %29 + %30 = phi i1 [ false, %.critedge.thread11.thread ], [ false, %30 ], [ true, %.critedge.thread12 ], [ true, %16 ], [ true, %13 ] + call void @SDL_SetInitialized_REAL(ptr noundef nonnull @threadpool_init, i1 noundef zeroext %30) #8 + br label %31 -32: ; preds = %.critedge.thread, %0 - %.0 = phi i1 [ %31, %.critedge.thread ], [ true, %0 ] +31: ; preds = %.critedge.thread, %0 + %.0 = phi i1 [ %30, %.critedge.thread ], [ true, %0 ] ret i1 %.0 } diff --git a/bench/slurm/optimized/auth_munge.ll b/bench/slurm/optimized/auth_munge.ll index 2f72d3c2257..131b7e320b6 100644 --- a/bench/slurm/optimized/auth_munge.ll +++ b/bench/slurm/optimized/auth_munge.ll @@ -67,11 +67,11 @@ define dso_local range(i32 -1, 1) i32 @init() local_unnamed_addr #0 { %storemerge = phi i32 [ %6, %4 ], [ 0, %0 ] store i32 %storemerge, ptr @bad_cred_test, align 4 %8 = tail call zeroext i1 @slurm_running_in_slurmstepd() #13 - br i1 %8, label %39, label %9 + br i1 %8, label %38, label %9 9: ; preds = %7 %10 = tail call zeroext i1 @slurm_running_in_daemon() #13 - br i1 %10, label %11, label %39 + br i1 %10, label %11, label %38 11: ; preds = %9 call void @llvm.lifetime.start.p0(ptr nonnull %2) @@ -83,78 +83,78 @@ define dso_local range(i32 -1, 1) i32 @init() local_unnamed_addr #0 { %16 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 144), align 8 %17 = tail call ptr @auth_p_create(ptr noundef %16, i32 noundef %15, ptr noundef null, i32 noundef 0) %.not8 = icmp eq ptr %17, null - br i1 %.not8, label %23, label %18 + br i1 %.not8, label %22, label %18 18: ; preds = %11 %19 = tail call fastcc i32 @_decode_cred(ptr noundef %17, ptr noundef %13, i1 noundef zeroext true) - %20 = icmp eq i32 %19, -1 - br i1 %20, label %25, label %21 + %.not9 = icmp eq i32 %19, -1 + br i1 %.not9, label %25, label %21 -21: ; preds = %18 - %22 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.2) #13 - br label %25 +20: ; preds = %18 + %21 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.2) #13 + br label %24 -23: ; preds = %11 - %24 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.1) #13 +22: ; preds = %11 + %23 = tail call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.1) #13 call void @slurm_xfree(ptr noundef nonnull %2) #13 call void @llvm.lifetime.start.p0(ptr nonnull %1) br label %auth_p_destroy.exit -25: ; preds = %18, %21 +24: ; preds = %18, %20 %.0.ph = phi i32 [ -1, %21 ], [ 0, %18 ] call void @slurm_xfree(ptr noundef nonnull %2) #13 call void @llvm.lifetime.start.p0(ptr nonnull %1) store ptr %17, ptr %1, align 8 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 16 - %27 = load i8, ptr %26, align 8, !range !8, !noundef !9 - %28 = trunc nuw i8 %27 to i1 - %29 = getelementptr inbounds nuw i8, ptr %17, i64 8 - br i1 %28, label %30, label %31 - -30: ; preds = %25 - call void @slurm_xfree(ptr noundef nonnull %29) #13 - br label %34 + %25 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %26 = load i8, ptr %25, align 8, !range !8, !noundef !9 + %27 = trunc nuw i8 %26 to i1 + %28 = getelementptr inbounds nuw i8, ptr %17, i64 8 + br i1 %27, label %29, label %30 -31: ; preds = %25 - %32 = load ptr, ptr %29, align 8 - %.not3.i = icmp eq ptr %32, null - br i1 %.not3.i, label %34, label %33 +29: ; preds = %24 + call void @slurm_xfree(ptr noundef nonnull %28) #13 + br label %33 -33: ; preds = %31 - call void @free(ptr noundef nonnull %32) #13 - br label %34 +30: ; preds = %24 + %31 = load ptr, ptr %28, align 8 + %.not3.i = icmp eq ptr %31, null + br i1 %.not3.i, label %33, label %32 -34: ; preds = %33, %31, %30 - %35 = getelementptr inbounds nuw i8, ptr %17, i64 40 - %36 = load ptr, ptr %35, align 8 - %.not4.i = icmp eq ptr %36, null - br i1 %.not4.i, label %38, label %37 +32: ; preds = %30 + call void @free(ptr noundef nonnull %31) #13 + br label %33 -37: ; preds = %34 - call void @free(ptr noundef nonnull %36) #13 - br label %38 +33: ; preds = %32, %30, %29 + %34 = getelementptr inbounds nuw i8, ptr %17, i64 40 + %35 = load ptr, ptr %34, align 8 + %.not4.i = icmp eq ptr %35, null + br i1 %.not4.i, label %37, label %36 + +36: ; preds = %33 + call void @free(ptr noundef nonnull %35) #13 + br label %37 -38: ; preds = %37, %34 +37: ; preds = %36, %33 call void @slurm_xfree(ptr noundef nonnull %1) #13 br label %auth_p_destroy.exit -auth_p_destroy.exit: ; preds = %23, %38 - %.011 = phi i32 [ -1, %23 ], [ %.0.ph, %38 ] +auth_p_destroy.exit: ; preds = %22, %37 + %.012 = phi i32 [ -1, %23 ], [ %.0.ph, %38 ] call void @llvm.lifetime.end.p0(ptr nonnull %1) call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %39 + br label %38 -39: ; preds = %auth_p_destroy.exit, %9, %7 - %.1 = phi i32 [ 0, %7 ], [ %.011, %auth_p_destroy.exit ], [ 0, %9 ] - %40 = call i32 @slurm_get_log_level() #13 - %41 = icmp sgt i32 %40, 4 - br i1 %41, label %42, label %43 +38: ; preds = %auth_p_destroy.exit, %9, %7 + %.1 = phi i32 [ 0, %7 ], [ %.012, %auth_p_destroy.exit ], [ 0, %9 ] + %39 = call i32 @slurm_get_log_level() #13 + %40 = icmp sgt i32 %39, 4 + br i1 %40, label %41, label %42 -42: ; preds = %39 +41: ; preds = %38 call void (i32, ptr, ...) @slurm_log_var(i32 noundef 5, ptr noundef nonnull @.str.3, ptr noundef nonnull @plugin_type, ptr noundef nonnull @__func__.init) #13 - br label %43 + br label %42 -43: ; preds = %42, %39 +42: ; preds = %41, %38 ret i32 %.1 } @@ -611,13 +611,13 @@ define dso_local range(i32 -1, 1) i32 @auth_p_verify(ptr noundef %0, ptr noundef 4: ; preds = %2 %5 = tail call ptr @__errno_location() #14 store i32 6004, ptr %5, align 4 - br label %14 + br label %13 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 %8 = load i8, ptr %7, align 8, !range !8, !noundef !9 %9 = trunc nuw i8 %8 to i1 - br i1 %9, label %14, label %10 + br i1 %9, label %13, label %10 10: ; preds = %6 %11 = tail call ptr @slurm_auth_opts_to_socket(ptr noundef %1) #13 @@ -628,7 +628,7 @@ define dso_local range(i32 -1, 1) i32 @auth_p_verify(ptr noundef %0, ptr noundef %. = sext i1 %13 to i32 br label %14 -14: ; preds = %10, %6, %4 +13: ; preds = %10, %6, %4 %.0 = phi i32 [ -1, %4 ], [ 0, %6 ], [ %., %10 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 @@ -679,7 +679,7 @@ define dso_local ptr @auth_p_get_host(ptr noundef readonly captures(address_is_n 7: ; preds = %3, %1 %8 = tail call ptr @__errno_location() #14 store i32 6004, ptr %8, align 4 - br label %27 + br label %26 9: ; preds = %3 store i16 2, ptr %2, align 8 @@ -689,7 +689,7 @@ define dso_local ptr @auth_p_get_host(ptr noundef readonly captures(address_is_n store i32 %11, ptr %12, align 4 %.mask = and i32 %11, 255 %13 = icmp eq i32 %.mask, 127 - br i1 %13, label %27, label %14 + br i1 %13, label %26, label %14 14: ; preds = %9 %.not19 = icmp eq i32 %11, 0 @@ -703,25 +703,25 @@ define dso_local ptr @auth_p_get_host(ptr noundef readonly captures(address_is_n 17: ; preds = %15 %18 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %16, i32 noundef 46) #15 %.not21 = icmp eq ptr %18, null - br i1 %.not21, label %27, label %19 + br i1 %.not21, label %26, label %19 19: ; preds = %17 store i8 0, ptr %18, align 1 - br label %27 + br label %26 20: ; preds = %15, %14 %21 = call ptr @slurm_xcalloc(i64 noundef 1, i64 noundef 16, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull @.str.8, i32 noundef 391, ptr noundef nonnull @__func__.auth_p_get_host) #13 call void @slurm_get_ip_str(ptr noundef nonnull %2, ptr noundef %21, i32 noundef 16) #13 %22 = load i32, ptr getelementptr inbounds nuw (i8, ptr @slurm_conf, i64 268), align 4 %23 = and i32 %22, 128 - %24 = icmp eq i32 %23, 0 - br i1 %24, label %25, label %27 + %.not23 = icmp eq i32 %23, 0 + br i1 %.not23, label %24, label %26 -25: ; preds = %20 - %26 = call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.12, ptr noundef nonnull @__func__.auth_p_get_host, ptr noundef %21) #13 - br label %27 +24: ; preds = %20 + %25 = call i32 (ptr, ...) @slurm_error(ptr noundef nonnull @.str.12, ptr noundef nonnull @__func__.auth_p_get_host, ptr noundef %21) #13 + br label %26 -27: ; preds = %19, %17, %25, %20, %9, %7 +26: ; preds = %19, %17, %24, %20, %9, %7 %.014 = phi ptr [ null, %7 ], [ null, %9 ], [ %21, %20 ], [ %21, %25 ], [ %16, %19 ], [ %16, %17 ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret ptr %.014 diff --git a/bench/smol-rs/optimized/38abr5s50jd6yipr.ll b/bench/smol-rs/optimized/38abr5s50jd6yipr.ll index 50b9846125e..b630f07d1f5 100644 --- a/bench/smol-rs/optimized/38abr5s50jd6yipr.ll +++ b/bench/smol-rs/optimized/38abr5s50jd6yipr.ll @@ -159,30 +159,30 @@ define hidden noundef nonnull align 8 ptr @"_ZN3std3sys6common12thread_local4laz define hidden noundef nonnull align 8 ptr @"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h4c5efc12cb945857E"(ptr noundef nonnull writeonly align 8 captures(ret: address, provenance) initializes((0, 16)) %0, ptr noalias noundef align 8 captures(address_is_null) dereferenceable_or_null(16) %1) unnamed_addr #0 personality ptr @rust_eh_personality { tail call void @llvm.experimental.noalias.scope.decl(metadata !48) %.not.i = icmp eq ptr %1, null - br i1 %.not.i, label %8, label %3 + br i1 %.not.i, label %7, label %3 3: ; preds = %2 %4 = load i64, ptr %1, align 8, !range !11, !alias.scope !48, !noundef !4 %5 = getelementptr inbounds nuw i8, ptr %1, i64 8 %6 = load i64, ptr %5, align 8, !alias.scope !48 store i64 0, ptr %1, align 8, !alias.scope !48 - %7 = icmp eq i64 %4, 0 - br i1 %7, label %8, label %"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit" - -8: ; preds = %3, %2 - %9 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE(), !noalias !48 - %.fca.0.extract.i = extractvalue { i64, i64 } %9, 0 - %10 = icmp eq i64 %.fca.0.extract.i, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %9, 1 - %.0.i = select i1 %10, i64 1078321422319462234, i64 %.fca.1.extract.i + %.not9.i = icmp eq i64 %4, 0 + br i1 %.not9.i, label %7, label %"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit" + +7: ; preds = %3, %2 + %8 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE(), !noalias !48 + %.fca.0.extract.i = extractvalue { i64, i64 } %8, 0 + %9 = icmp eq i64 %.fca.0.extract.i, 0 + %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 + %.0.i = select i1 %9, i64 1078321422319462234, i64 %.fca.1.extract.i br label %"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit" -"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit": ; preds = %3, %8 - %.08.i = phi i64 [ %.0.i, %8 ], [ %6, %3 ] +"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439.exit": ; preds = %3, %7 + %.08.i = phi i64 [ %.0.i, %7 ], [ %6, %3 ] store i64 1, ptr %0, align 8 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.08.i, ptr %11, align 8 - ret ptr %11 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.08.i, ptr %10, align 8 + ret ptr %10 } ; Function Attrs: nonlazybind uwtable @@ -756,25 +756,25 @@ define hidden void @"_ZN8async_io6driver8block_on5CACHE7__getit28_$u7b$$u7b$clos ; Function Attrs: inlinehint nonlazybind uwtable define hidden noundef i64 @"_ZN8fastrand10global_rng3RNG7__getit28_$u7b$$u7b$closure$u7d$$u7d$17h99198f219c1468f6E.llvm.4631799374070668439"(ptr noalias noundef align 8 captures(address_is_null) dereferenceable_or_null(16) %0) unnamed_addr #3 { %.not = icmp eq ptr %0, null - br i1 %.not, label %7, label %2 + br i1 %.not, label %6, label %2 2: ; preds = %1 %3 = load i64, ptr %0, align 8, !range !11, !noundef !4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8 store i64 0, ptr %0, align 8 - %6 = icmp eq i64 %3, 0 - br i1 %6, label %7, label %10 - -7: ; preds = %2, %1 - %8 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE() - %.fca.0.extract = extractvalue { i64, i64 } %8, 0 - %9 = icmp eq i64 %.fca.0.extract, 0 - %.fca.1.extract = extractvalue { i64, i64 } %8, 1 - %.0 = select i1 %9, i64 1078321422319462234, i64 %.fca.1.extract - br label %10 - -10: ; preds = %2, %7 + %.not9 = icmp eq i64 %3, 0 + br i1 %.not9, label %6, label %9 + +6: ; preds = %2, %1 + %7 = tail call { i64, i64 } @_ZN8fastrand10global_rng11random_seed17h7b07fa0b62f23c5cE() + %.fca.0.extract = extractvalue { i64, i64 } %7, 0 + %8 = icmp eq i64 %.fca.0.extract, 0 + %.fca.1.extract = extractvalue { i64, i64 } %7, 1 + %.0 = select i1 %8, i64 1078321422319462234, i64 %.fca.1.extract + br label %9 + +9: ; preds = %2, %6 %.08 = phi i64 [ %.0, %7 ], [ %5, %2 ] ret i64 %.08 } diff --git a/bench/stat-rs/optimized/n94tvlll45kxl7r.ll b/bench/stat-rs/optimized/n94tvlll45kxl7r.ll index 7a96ea81fe2..a6ba87513cb 100644 --- a/bench/stat-rs/optimized/n94tvlll45kxl7r.ll +++ b/bench/stat-rs/optimized/n94tvlll45kxl7r.ll @@ -465,7 +465,7 @@ _ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.e %15 = icmp ugt i64 %.val1, -9223372036854775808 br i1 %15, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit +._crit_edge.loopexit.i: ; preds = %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit %16 = add i64 %.val1, -1 br label %.lr.ph.i @@ -474,45 +474,45 @@ _ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.e %18 = tail call i64 @llvm.umin.i64(i64 %.val1, i64 %17) br label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit -.lr.ph.i: ; preds = %.lr.ph.i.preheader, %33 - %.sroa.02.018.i = phi i64 [ %.sroa.02.1.i, %33 ], [ %16, %.lr.ph.i.preheader ] +.lr.ph.i: ; preds = %._crit_edge.loopexit.i, %32 + %.sroa.02.018.i = phi i64 [ %.sroa.02.1.i, %33 ], [ %15, %.lr.ph.i.preheader ] %.sroa.06.017.i = phi i64 [ %.sroa.06.1.i, %33 ], [ 0, %.lr.ph.i.preheader ] - %19 = sub i64 %.sroa.02.018.i, %.sroa.06.017.i - %20 = sdiv i64 %19, 2 - %21 = add i64 %20, %.sroa.06.017.i - %.not12.i = icmp ult i64 %21, %.val1 - br i1 %.not12.i, label %23, label %22 + %18 = sub i64 %.sroa.02.018.i, %.sroa.06.017.i + %19 = sdiv i64 %18, 2 + %20 = add i64 %19, %.sroa.06.017.i + %.not12.i = icmp ult i64 %20, %.val1 + br i1 %.not12.i, label %22, label %21 -22: ; preds = %.lr.ph.i +21: ; preds = %.lr.ph.i tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4768d052527bd36a73bfd89d5da159b4.18) #19, !noalias !51 unreachable -23: ; preds = %.lr.ph.i - %24 = getelementptr inbounds double, ptr %.val, i64 %21 - %25 = load double, ptr %24, align 8, !alias.scope !51, !noundef !4 - %26 = fcmp ogt double %25, %14 - br i1 %26, label %29, label %27 +22: ; preds = %.lr.ph.i + %23 = getelementptr inbounds double, ptr %.val, i64 %20 + %24 = load double, ptr %23, align 8, !alias.scope !51, !noundef !4 + %25 = fcmp ogt double %24, %14 + br i1 %25, label %28, label %26 -27: ; preds = %23 - %28 = fcmp olt double %25, %14 - br i1 %28, label %31, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit +26: ; preds = %22 + %27 = fcmp olt double %24, %14 + br i1 %27, label %30, label %_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit -29: ; preds = %23 - %30 = add i64 %21, -1 - br label %33 +28: ; preds = %22 + %29 = add i64 %20, -1 + br label %32 -31: ; preds = %27 - %32 = tail call i64 @llvm.sadd.sat.i64(i64 %21, i64 1) - br label %33 +30: ; preds = %26 + %31 = tail call i64 @llvm.sadd.sat.i64(i64 %20, i64 1) + br label %32 -33: ; preds = %31, %29 - %.sroa.06.1.i = phi i64 [ %.sroa.06.017.i, %29 ], [ %32, %31 ] - %.sroa.02.1.i = phi i64 [ %30, %29 ], [ %.sroa.02.018.i, %31 ] +32: ; preds = %30, %28 + %.sroa.06.1.i = phi i64 [ %.sroa.06.017.i, %28 ], [ %31, %31 ] + %.sroa.02.1.i = phi i64 [ %29, %28 ], [ %.sroa.02.018.i, %31 ] %.not.i2 = icmp sgt i64 %.sroa.06.1.i, %.sroa.02.1.i br i1 %.not.i2, label %._crit_edge.loopexit.i, label %.lr.ph.i -_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit: ; preds = %27, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit, %._crit_edge.loopexit.i - %.sroa.0.0.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit ], [ %18, %._crit_edge.loopexit.i ], [ %21, %27 ] +_ZN6statrs12distribution11categorical12binary_index17h4f996a2b526e59c5E.exit: ; preds = %26, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit, %._crit_edge.loopexit.i + %.sroa.0.0.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit ], [ %17, %._crit_edge.loopexit.i ], [ %20, %26 ] ret i64 %.sroa.0.0.i } @@ -663,52 +663,52 @@ _ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.e %11 = add i64 %.val1.i, -1 br label %.lr.ph.i.i -._crit_edge.loopexit.i.i: ; preds = %28 - %12 = tail call range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %.sroa.06.1.i.i, i64 0) - %13 = tail call i64 @llvm.umin.i64(i64 %.val1.i, i64 %12) +._crit_edge.loopexit.i.i: ; preds = %27 + %11 = tail call range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %.sroa.06.1.i.i, i64 0) + %12 = tail call i64 @llvm.umin.i64(i64 %.val1.i, i64 %11) br label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit" -.lr.ph.i.i: ; preds = %28, %.lr.ph.i.preheader.i - %.sroa.02.018.i.i = phi i64 [ %.sroa.02.1.i.i, %28 ], [ %11, %.lr.ph.i.preheader.i ] - %.sroa.06.017.i.i = phi i64 [ %.sroa.06.1.i.i, %28 ], [ 0, %.lr.ph.i.preheader.i ] - %14 = sub nsw i64 %.sroa.02.018.i.i, %.sroa.06.017.i.i - %15 = sdiv i64 %14, 2 - %16 = add i64 %15, %.sroa.06.017.i.i - %.not12.i.i = icmp ult i64 %16, %.val1.i - br i1 %.not12.i.i, label %18, label %17 +.lr.ph.i.i: ; preds = %27, %.lr.ph.i.preheader.i + %.sroa.02.018.i.i = phi i64 [ %.sroa.02.1.i.i, %27 ], [ %11, %.lr.ph.i.preheader.i ] + %.sroa.06.017.i.i = phi i64 [ %.sroa.06.1.i.i, %27 ], [ 0, %.lr.ph.i.preheader.i ] + %13 = sub nsw i64 %.sroa.02.018.i.i, %.sroa.06.017.i.i + %14 = sdiv i64 %13, 2 + %15 = add i64 %14, %.sroa.06.017.i.i + %.not12.i.i = icmp ult i64 %15, %.val1.i + br i1 %.not12.i.i, label %17, label %16 -17: ; preds = %.lr.ph.i.i +16: ; preds = %.lr.ph.i.i tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4768d052527bd36a73bfd89d5da159b4.18) #19, !noalias !69 unreachable -18: ; preds = %.lr.ph.i.i - %19 = getelementptr inbounds nuw double, ptr %.val.i, i64 %16 - %20 = load double, ptr %19, align 8, !alias.scope !66, !noalias !63, !noundef !4 - %21 = fcmp ogt double %20, %9 - br i1 %21, label %24, label %22 - -22: ; preds = %18 - %23 = fcmp olt double %20, %9 - br i1 %23, label %26, label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit" - -24: ; preds = %18 - %25 = add nsw i64 %16, -1 - br label %28 - -26: ; preds = %22 - %27 = tail call i64 @llvm.sadd.sat.i64(i64 %16, i64 1) - br label %28 - -28: ; preds = %26, %24 - %.sroa.06.1.i.i = phi i64 [ %.sroa.06.017.i.i, %24 ], [ %27, %26 ] - %.sroa.02.1.i.i = phi i64 [ %25, %24 ], [ %.sroa.02.018.i.i, %26 ] +17: ; preds = %.lr.ph.i.i + %18 = getelementptr inbounds nuw double, ptr %.val.i, i64 %15 + %19 = load double, ptr %18, align 8, !alias.scope !66, !noalias !63, !noundef !4 + %20 = fcmp ogt double %19, %9 + br i1 %20, label %23, label %21 + +21: ; preds = %17 + %22 = fcmp olt double %19, %9 + br i1 %22, label %25, label %"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit" + +23: ; preds = %17 + %24 = add nsw i64 %15, -1 + br label %27 + +25: ; preds = %21 + %26 = tail call i64 @llvm.sadd.sat.i64(i64 %15, i64 1) + br label %27 + +27: ; preds = %25, %23 + %.sroa.06.1.i.i = phi i64 [ %.sroa.06.017.i.i, %23 ], [ %26, %25 ] + %.sroa.02.1.i.i = phi i64 [ %24, %23 ], [ %.sroa.02.018.i.i, %25 ] %.not.i2.i = icmp sgt i64 %.sroa.06.1.i.i, %.sroa.02.1.i.i br i1 %.not.i2.i, label %._crit_edge.loopexit.i.i, label %.lr.ph.i.i -"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit": ; preds = %22, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i, %._crit_edge.loopexit.i.i - %.sroa.0.0.i.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i ], [ %13, %._crit_edge.loopexit.i.i ], [ %16, %22 ] - %29 = uitofp nneg i64 %.sroa.0.0.i.i to double - ret double %29 +"_ZN117_$LT$statrs..distribution..categorical..Categorical$u20$as$u20$statrs..distribution..DiscreteCDF$LT$u64$C$f64$GT$$GT$11inverse_cdf17h0a08886c322dbd23E.exit": ; preds = %21, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i, %._crit_edge.loopexit.i.i + %.sroa.0.0.i.i = phi i64 [ 0, %_ZN6statrs12distribution11categorical11Categorical7cdf_max17h52d7dfa5133b7b53E.exit.i ], [ %12, %._crit_edge.loopexit.i.i ], [ %15, %22 ] + %28 = uitofp nneg i64 %.sroa.0.0.i.i to double + ret double %28 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable diff --git a/bench/stb/optimized/stb_hexwave.ll b/bench/stb/optimized/stb_hexwave.ll index 2e472ecf83d..da252d6bda3 100644 --- a/bench/stb/optimized/stb_hexwave.ll +++ b/bench/stb/optimized/stb_hexwave.ll @@ -255,8 +255,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 %32 = getelementptr inbounds nuw i8, ptr %28, i64 4 store float %31, ptr %32, align 4, !tbaa !29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not113 = icmp eq i64 %indvars.iv.next, 8 - br i1 %.not113, label %.loopexit83, label %.preheader84, !llvm.loop !34 + %exitcond.not = icmp eq i64 %indvars.iv.next, 8 + br i1 %exitcond.not, label %.loopexit83, label %.preheader84, !llvm.loop !34 .preheader82: ; preds = %3, %.preheader82 %indvars.iv93 = phi i64 [ %indvars.iv.next94, %.preheader82 ], [ 4, %3 ] @@ -271,8 +271,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 %40 = getelementptr inbounds nuw i8, ptr %33, i64 4 store float %39, ptr %40, align 4, !tbaa !29 %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1 - %.not114 = icmp eq i64 %indvars.iv.next94, 8 - br i1 %.not114, label %.loopexit83.loopexit, label %.preheader82, !llvm.loop !35 + %exitcond96.not = icmp eq i64 %indvars.iv.next94, 8 + br i1 %exitcond96.not, label %.loopexit83.loopexit, label %.preheader82, !llvm.loop !35 .loopexit83.loopexit: ; preds = %.preheader82 %.pre.pre = load float, ptr %0, align 4, !tbaa !27 @@ -302,8 +302,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 50: ; preds = %43, %49 %51 = phi float [ %46, %43 ], [ %44, %49 ] - %.not115 = icmp eq i64 %indvars.iv.next98, 8 - br i1 %.not115, label %52, label %43, !llvm.loop !36 + %exitcond100.not = icmp eq i64 %indvars.iv.next98, 8 + br i1 %exitcond100.not, label %52, label %43, !llvm.loop !36 52: ; preds = %50 %53 = load float, ptr %41, align 4, !tbaa !27 @@ -323,8 +323,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 59: ; preds = %.preheader, %58 %indvars.iv.next102 = add nuw nsw i64 %indvars.iv101, 1 - %.not116 = icmp eq i64 %indvars.iv.next102, 9 - br i1 %.not116, label %.loopexit.preheader, label %.preheader, !llvm.loop !37 + %exitcond104.not = icmp eq i64 %indvars.iv.next102, 9 + br i1 %exitcond104.not, label %.loopexit.preheader, label %.preheader, !llvm.loop !37 .loopexit.preheader: ; preds = %59, %52 br label %.loopexit @@ -353,8 +353,8 @@ define void @hexwave_generate_linesegs(ptr noundef captures(none) initializes((0 %.sink = phi float [ %72, %65 ], [ 0.000000e+00, %.loopexit ] %74 = getelementptr inbounds nuw i8, ptr %63, i64 8 store float %.sink, ptr %74, align 4, !tbaa !38 - %.not117 = icmp eq i64 %indvars.iv.next106, 8 - br i1 %.not117, label %75, label %.loopexit, !llvm.loop !39 + %exitcond108.not = icmp eq i64 %indvars.iv.next106, 8 + br i1 %exitcond108.not, label %75, label %.loopexit, !llvm.loop !39 75: ; preds = %73 store float 1.000000e+00, ptr %41, align 4, !tbaa !27 @@ -399,8 +399,8 @@ define void @hexwave_generate_samples(ptr noundef captures(none) %0, i32 noundef 23: ; preds = %.preheader180 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not266 = icmp eq i64 %indvars.iv.next, 6 - br i1 %.not266, label %24, label %.preheader180, !llvm.loop !41 + %exitcond.not = icmp eq i64 %indvars.iv.next, 6 + br i1 %exitcond.not, label %24, label %.preheader180, !llvm.loop !41 24: ; preds = %.preheader180, %23 %.0124.lcssa = phi i64 [ %indvars.iv, %.preheader180 ], [ 6, %23 ] @@ -503,7 +503,7 @@ hex_blamp.exit: ; preds = %.lr.ph.i.i, %30, %2 .preheader205: ; preds = %77, %80 %indvars.iv209 = phi i64 [ %indvars.iv.next210, %80 ], [ 0, %77 ] %exitcond212.not = icmp eq i64 %indvars.iv209, 8 - br i1 %exitcond212.not, label %.split.loop.exit279, label %80 + br i1 %exitcond212.not, label %.split.loop.exit278, label %80 80: ; preds = %.preheader205 %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 @@ -514,9 +514,9 @@ hex_blamp.exit: ; preds = %.lr.ph.i.i, %30, %2 .split.loop.exit: ; preds = %80 %84 = trunc nuw nsw i64 %indvars.iv209 to i32 - br label %.split.loop.exit279 + br label %.split.loop.exit278 -.split.loop.exit279: ; preds = %.preheader205, %.split.loop.exit +.split.loop.exit278: ; preds = %.preheader205, %.split.loop.exit %.1125.lcssa = phi i32 [ %84, %.split.loop.exit ], [ 8, %.preheader205 ] %85 = load i32, ptr @hexblep, align 8 %86 = load i32, ptr getelementptr inbounds nuw (i8, ptr @hexblep, i64 4), align 4 @@ -528,7 +528,7 @@ hex_blamp.exit: ; preds = %.lr.ph.i.i, %30, %2 %invariant.gep = getelementptr float, ptr %.mux, i64 %76 br label %hex_blamp.exit178 -hex_blamp.exit178: ; preds = %hex_blamp.exit178.backedge, %.split.loop.exit279 +hex_blamp.exit178: ; preds = %hex_blamp.exit178.backedge, %.split.loop.exit278 %.2130 = phi float [ %.0128195, %.split.loop.exit279 ], [ %.2130.be, %hex_blamp.exit178.backedge ] %.2126 = phi i32 [ %.1125.lcssa, %.split.loop.exit279 ], [ %.2126.be, %hex_blamp.exit178.backedge ] %.0120 = phi i32 [ 0, %.split.loop.exit279 ], [ %.1.lcssa, %hex_blamp.exit178.backedge ] @@ -608,9 +608,9 @@ hex_blamp.exit178: ; preds = %hex_blamp.exit178.b %136 = sitofp i32 %spec.select.i.i148 to float %137 = fneg float %136 %138 = tail call float @llvm.fmuladd.f32(float %120, float %87, float %137) - br i1 %89, label %.lr.ph.i.i151, label %hex_blep.exit.thread272 + br i1 %89, label %.lr.ph.i.i151, label %hex_blep.exit.thread271 -hex_blep.exit.thread272: ; preds = %117 +hex_blep.exit.thread271: ; preds = %117 %139 = getelementptr inbounds float, ptr %.mux, i64 %116 br label %hex_blamp.exit162 @@ -672,7 +672,7 @@ hex_blep.exit: ; preds = %._crit_edge %168 = phi ptr [ %156, %hex_blep.exit.thread ], [ %165, %hex_blep.exit ] %.pn = phi float [ %154, %hex_blep.exit.thread ], [ %163, %hex_blep.exit ] %169 = phi ptr [ %149, %hex_blep.exit.thread ], [ %158, %hex_blep.exit ] - %.pre-phi251271 = phi float [ %138, %hex_blep.exit.thread ], [ %.pre250, %hex_blep.exit ] + %.pre-phi251270 = phi float [ %138, %hex_blep.exit.thread ], [ %.pre250, %hex_blep.exit ] %170 = fmul float %10, %.pn %171 = getelementptr inbounds float, ptr %.mux, i64 %116 br label %.lr.ph.i.i158 @@ -684,7 +684,7 @@ hex_blep.exit: ; preds = %._crit_edge %174 = getelementptr inbounds nuw float, ptr %167, i64 %indvars.iv.i.i159 %175 = load float, ptr %174, align 4, !tbaa !16 %176 = fsub float %175, %173 - %177 = tail call float @llvm.fmuladd.f32(float %176, float %.pre-phi251271, float %173) + %177 = tail call float @llvm.fmuladd.f32(float %176, float %.pre-phi251270, float %173) %178 = getelementptr inbounds nuw float, ptr %171, i64 %indvars.iv.i.i159 %179 = load float, ptr %178, align 4, !tbaa !16 %180 = tail call float @llvm.fmuladd.f32(float %170, float %177, float %179) @@ -693,7 +693,7 @@ hex_blep.exit: ; preds = %._crit_edge %exitcond.not.i.i161 = icmp eq i64 %indvars.iv.next.i.i160, %wide.trip.count.i.i150 br i1 %exitcond.not.i.i161, label %hex_blamp.exit162, label %.lr.ph.i.i158, !llvm.loop !23 -hex_blamp.exit162: ; preds = %.lr.ph.i.i158, %hex_blep.exit.thread272, %hex_blep.exit +hex_blamp.exit162: ; preds = %.lr.ph.i.i158, %hex_blep.exit.thread271, %hex_blep.exit %181 = phi ptr [ %158, %hex_blep.exit ], [ %139, %hex_blep.exit.thread272 ], [ %169, %.lr.ph.i.i158 ] %182 = icmp eq i32 %90, 8 br i1 %182, label %183, label %hex_blamp.exit178.backedge @@ -812,17 +812,17 @@ hex_blamp.exit178.backedge: ; preds = %.lr.ph.i.i174, %218 %247 = sub nsw i32 %1, %245 %248 = sext i32 %247 to i64 %wide.trip.count = zext nneg i32 %245 to i64 - %invariant.gep281 = getelementptr float, ptr %0, i64 %248 + %invariant.gep280 = getelementptr float, ptr %0, i64 %248 br label %249 249: ; preds = %.lr.ph198, %249 %indvars.iv216 = phi i64 [ 0, %.lr.ph198 ], [ %indvars.iv.next217, %249 ] %250 = getelementptr inbounds nuw float, ptr %6, i64 %indvars.iv216 %251 = load float, ptr %250, align 4, !tbaa !16 - %gep282 = getelementptr float, ptr %invariant.gep281, i64 %indvars.iv216 - %252 = load float, ptr %gep282, align 4, !tbaa !16 + %gep281 = getelementptr float, ptr %invariant.gep280, i64 %indvars.iv216 + %252 = load float, ptr %gep281, align 4, !tbaa !16 %253 = fadd float %251, %252 - store float %253, ptr %gep282, align 4, !tbaa !16 + store float %253, ptr %gep281, align 4, !tbaa !16 %indvars.iv.next217 = add nuw nsw i64 %indvars.iv216, 1 %exitcond219.not = icmp eq i64 %indvars.iv.next217, %wide.trip.count br i1 %exitcond219.not, label %._crit_edge199, label %249, !llvm.loop !45 @@ -839,9 +839,9 @@ hex_blamp.exit178.backedge: ; preds = %.lr.ph.i.i174, %218 br label %257 257: ; preds = %._crit_edge202, %._crit_edge199 - %.sink285 = phi i64 [ %57, %._crit_edge202 ], [ %254, %._crit_edge199 ] + %.sink284 = phi i64 [ %57, %._crit_edge202 ], [ %254, %._crit_edge199 ] %.sink = getelementptr inbounds nuw i8, ptr %2, i64 44 - %258 = getelementptr inbounds float, ptr %6, i64 %.sink285 + %258 = getelementptr inbounds float, ptr %6, i64 %.sink284 %259 = sext i32 %9 to i64 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sink, ptr nonnull align 4 %258, i64 %259, i1 false) store float %.1129, ptr %2, align 4, !tbaa !40 @@ -960,8 +960,8 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ %57 = fmul double %56, 6.250000e-02 %58 = fadd double %.1120144.us, %57 %59 = add nuw nsw i32 %.0121143.us, 1 - %.not217 = icmp eq i32 %59, 16 - br i1 %.not217, label %.split.us, label %.preheader142.split.us, !llvm.loop !46 + %exitcond178.not = icmp eq i32 %59, 16 + br i1 %exitcond178.not, label %.split.us, label %.preheader142.split.us, !llvm.loop !46 .lr.ph: ; preds = %.split.us %60 = zext nneg i32 %8 to i64 @@ -994,8 +994,8 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ %79 = fmul double %78, 6.250000e-02 %80 = fadd double %.1120144, %79 %81 = add nuw nsw i32 %.0121143, 1 - %.not216 = icmp eq i32 %81, 16 - br i1 %.not216, label %.split.us, label %.preheader142.split, !llvm.loop !46 + %exitcond.not = icmp eq i32 %81, 16 + br i1 %exitcond.not, label %.split.us, label %.preheader142.split, !llvm.loop !46 .split.us: ; preds = %.preheader142.split, %.preheader142.split.us %.us-phi = phi double [ %58, %.preheader142.split.us ], [ %80, %.preheader142.split ] @@ -1087,11 +1087,11 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ %118 = mul i32 %1, %117 %119 = add i32 %128, %118 %120 = sitofp i32 %119 to float - %gep224 = getelementptr float, ptr %invariant.gep223, i64 %indvars.iv202 - %121 = load float, ptr %gep224, align 4, !tbaa !16 + %gep222 = getelementptr float, ptr %invariant.gep221, i64 %indvars.iv202 + %121 = load float, ptr %gep222, align 4, !tbaa !16 %122 = fneg float %120 %123 = tail call float @llvm.fmuladd.f32(float %122, float %113, float %121) - store float %123, ptr %gep224, align 4, !tbaa !16 + store float %123, ptr %gep222, align 4, !tbaa !16 %indvars.iv.next203 = add nsw i64 %indvars.iv202, 1 %exitcond206.not = icmp eq i64 %indvars.iv.next203, %115 br i1 %exitcond206.not, label %._crit_edge.us164, label %116, !llvm.loop !51 @@ -1109,7 +1109,7 @@ define void @hexwave_init(i32 noundef %0, i32 noundef %1, ptr noundef %2) local_ .preheader.us: ; preds = %124 %127 = trunc nuw nsw i64 %indvars.iv207 to i32 %128 = sub i32 %127, %5 - %invariant.gep223 = getelementptr float, ptr %.0117, i64 %129 + %invariant.gep221 = getelementptr float, ptr %.0117, i64 %129 br label %116 .lr.ph158.us: ; preds = %._crit_edge.us164, %.preheader137.us.preheader diff --git a/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll b/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll index f2b3c917eed..1b07869383c 100644 --- a/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll +++ b/bench/turborepo-rs/optimized/74s3x9u7hld928rwmttmetb1y.ll @@ -7674,7 +7674,7 @@ define void @_RNvXs_NtNtCs68wO5nsWeTG_5alloc3vec21spec_from_iter_nestedINtB6_3Ve %8 = getelementptr inbounds nuw i8, ptr %3, i64 8 %9 = load i64, ptr %8, align 8, !range !173, !noundef !4 %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - br i1 %trunc2, label %25, label %11 + br i1 %trunc2, label %23, label %11 11: ; preds = %2 %12 = load ptr, ptr %10, align 8, !nonnull !4, !noundef !4 @@ -7690,58 +7690,58 @@ define void @_RNvXs_NtNtCs68wO5nsWeTG_5alloc3vec21spec_from_iter_nestedINtB6_3Ve %17 = and i1 %16, %15 br i1 %17, label %24, label %18 -18: ; preds = %11 +18:; preds = %11 %19 = icmp eq i64 %.val, 2 br i1 %19, label %34, label %.lr.ph.split.us.i.i.i.i -.lr.ph.split.us.i.i.i.i: ; preds = %.thread, %18 +.lr.ph.split.us.i.i.i.i:; preds = %.thread, %18 %20 = phi i64 [ %.pre.i.i, %.thread ], [ 0, %18 ] %21 = load ptr, ptr %13, align 8, !alias.scope !1817, !noalias !1822, !nonnull !4, !noundef !4 - %22 = getelementptr inbounds { { i64, [2 x i64] }, ptr }, ptr %21, i64 %20 + %.sroa.4.0..sroa_idx.us.i.i.i.i = getelementptr inbounds { { i64, [2 x i64] }, ptr }, ptr %21, i64 %20 store i64 %.val, ptr %22, align 8, !noalias !1825 %.sroa.4.0..sroa_idx.us.i.i.i.i = getelementptr inbounds nuw i8, ptr %22, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx.us.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx, i64 24, i1 false) - %23 = add i64 %20, 1 - br label %34 + %21 = add i64 %20, 1 + br label %32 -24: ; preds = %11 +22: ; preds = %11 invoke void @_RINvNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB8_6RawVecppE7reserve21do_reserve_and_handleTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1q_5TokenENtNtBa_5alloc6GlobalEB1s_(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0, i64 noundef 1) - to label %.thread unwind label %27 + to label %.thread unwind label %25 -.thread: ; preds = %24 +.noexc: ; preds = %22 %.pre.i.i = load i64, ptr %14, align 8, !alias.scope !1817, !noalias !1822 br label %.lr.ph.split.us.i.i.i.i -25: ; preds = %2 - %26 = load i64, ptr %10, align 8 - tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %9, i64 %26) #22 +23: ; preds = %2 + %24 = load i64, ptr %10, align 8 + tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %9, i64 %24) #22 unreachable -27: ; preds = %24 - %28 = landingpad { ptr, i32 } +25: ; preds = %22 + %26 = landingpad { ptr, i32 } cleanup call void @llvm.experimental.noalias.scope.decl(metadata !1836) call void @llvm.experimental.noalias.scope.decl(metadata !1839) call void @llvm.experimental.noalias.scope.decl(metadata !1842) - %29 = load i64, ptr %4, align 8, !alias.scope !1845, !noalias !1848, !noundef !4 - %30 = icmp eq i64 %29, 0 - br i1 %30, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit, label %31 - -31: ; preds = %27 - %32 = shl nuw i64 %29, 5 - %33 = load ptr, ptr %13, align 8, !alias.scope !1845, !noalias !1848, !nonnull !4, !noundef !4 - call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %32, i64 noundef 8) #23, !noalias !1850 + %27 = load i64, ptr %4, align 8, !alias.scope !1845, !noalias !1848, !noundef !4 + %28 = icmp eq i64 %27, 0 + br i1 %28, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit, label %29 + +29: ; preds = %25 + %30 = shl nuw i64 %27, 5 + %31 = load ptr, ptr %13, align 8, !alias.scope !1845, !noalias !1848, !nonnull !4, !noundef !4 + call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %30, i64 noundef 8) #23, !noalias !1850 br label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit -34: ; preds = %.lr.ph.split.us.i.i.i.i, %18 - %.val3.i.i.i.i = phi i64 [ %23, %.lr.ph.split.us.i.i.i.i ], [ 0, %18 ] +32: ; preds = %.lr.ph.split.us.i.i.i.i, %18 + %.val3.i.i.i.i = phi i64 [ %21, %.lr.ph.split.us.i.i.i.i ], [ 0, %18 ] store i64 %.val3.i.i.i.i, ptr %14, align 8, !alias.scope !1817, !noalias !1851 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit: ; preds = %31, %27 - resume { ptr, i32 } %28 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecTNtNtCseG2FYMysgNb_3wax5token8PositionRNtB1g_5TokenEEEB1i_.exit: ; preds = %29, %25 + resume { ptr, i32 } %26 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll index 6849dcedccd..f218501c45a 100644 --- a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll +++ b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll @@ -638,8 +638,8 @@ define hidden void @_RNvMs_NtCs8mTrBI1stz4_15turborepo_vt1004cellNtB4_4Cell3set( .thread: ; preds = %3, %29 %.sink.i = phi i8 [ %37, %29 ], [ 1, %3 ] store i8 %.sink.i, ptr %4, align 2, !alias.scope !32 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 25 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %38, ptr noundef nonnull align 1 dereferenceable(9) %2, i64 9, i1 false) + %40 = getelementptr inbounds nuw i8, ptr %0, i64 25 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %40, ptr noundef nonnull align 1 dereferenceable(9) %2, i64 9, i1 false) ret void } diff --git a/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll b/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll index 9c27b30b4bb..098aee32e9d 100644 --- a/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll +++ b/bench/uv-rs/optimized/dcex2dbpz9063ood2sxvmfunc.ll @@ -437,18 +437,18 @@ define hidden { ptr, ptr } @"_ZN44_$LT$$RF$T$u20$as$u20$core..error..Error$GT$5c i8 0, label %4 ] -4: ; preds = %1, %1, %1, %1 - %5 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) - %6 = extractvalue { ptr, ptr } %5, 0 - %7 = extractvalue { ptr, ptr } %5, 1 +8: ; preds = %1, %1, %1, %1 + %9 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) + %10 = extractvalue { ptr, ptr } %9, 0 + %11 = extractvalue { ptr, ptr } %9, 1 br label %_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit -_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit: ; preds = %1, %4 - %.sroa.4.0.i.i = phi ptr [ %7, %4 ], [ undef, %1 ] - %.sroa.0.0.i.i = phi ptr [ %6, %4 ], [ null, %1 ] - %8 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i.i, 0 - %9 = insertvalue { ptr, ptr } %8, ptr %.sroa.4.0.i.i, 1 - ret { ptr, ptr } %9 +_ZN4core5error5Error5cause17h08cc55bf3a145667E.exit: ; preds = %1, %8 + %.sroa.4.0.i.i = phi ptr [ %11, %8 ], [ undef, %1 ] + %.sroa.0.0.i.i = phi ptr [ %10, %8 ], [ null, %1 ] + %12 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i.i, 0 + %13 = insertvalue { ptr, ptr } %12, ptr %.sroa.4.0.i.i, 1 + ret { ptr, ptr } %13 } ; Function Attrs: nonlazybind uwtable @@ -462,18 +462,18 @@ define hidden { ptr, ptr } @"_ZN44_$LT$$RF$T$u20$as$u20$core..error..Error$GT$6s i8 0, label %4 ] -4: ; preds = %1, %1, %1, %1 - %5 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) - %6 = extractvalue { ptr, ptr } %5, 0 - %7 = extractvalue { ptr, ptr } %5, 1 +8: ; preds = %1, %1, %1, %1 + %9 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %2) + %10 = extractvalue { ptr, ptr } %9, 0 + %11 = extractvalue { ptr, ptr } %9, 1 br label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" -"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %4 - %.sroa.4.0.i = phi ptr [ %7, %4 ], [ undef, %1 ] - %.sroa.0.0.i = phi ptr [ %6, %4 ], [ null, %1 ] - %8 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 - %9 = insertvalue { ptr, ptr } %8, ptr %.sroa.4.0.i, 1 - ret { ptr, ptr } %9 +"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %8 + %.sroa.4.0.i = phi ptr [ %11, %8 ], [ undef, %1 ] + %.sroa.0.0.i = phi ptr [ %10, %8 ], [ null, %1 ] + %12 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 + %13 = insertvalue { ptr, ptr } %12, ptr %.sroa.4.0.i, 1 + ret { ptr, ptr } %13 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -843,21 +843,21 @@ define hidden { ptr, ptr } @_ZN4core5error5Error5cause17h08cc55bf3a145667E(ptr n i8 4, label %3 i8 2, label %3 i8 1, label %3 - i8 0, label %3 + i8 0, label %7 ] -3: ; preds = %1, %1, %1, %1 - %4 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %0) - %5 = extractvalue { ptr, ptr } %4, 0 - %6 = extractvalue { ptr, ptr } %4, 1 +7: ; preds = %1, %1, %1, %1 + %8 = tail call { ptr, ptr } @_ZN4core5error5Error6source17hc227998c4e87c528E.llvm.9460548185435379796(ptr noundef nonnull readonly align 1 dereferenceable(1) %0) + %9 = extractvalue { ptr, ptr } %8, 0 + %10 = extractvalue { ptr, ptr } %8, 1 br label %"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit" -"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %3 - %.sroa.4.0.i = phi ptr [ %6, %3 ], [ undef, %1 ] - %.sroa.0.0.i = phi ptr [ %5, %3 ], [ null, %1 ] - %7 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 - %8 = insertvalue { ptr, ptr } %7, ptr %.sroa.4.0.i, 1 - ret { ptr, ptr } %8 +"_ZN60_$LT$uv_git..git..GitError$u20$as$u20$core..error..Error$GT$6source17h2c0e7e64e00920c0E.exit": ; preds = %1, %7 + %.sroa.4.0.i = phi ptr [ %10, %3 ], [ undef, %1 ] + %.sroa.0.0.i = phi ptr [ %9, %3 ], [ null, %1 ] + %11 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 + %12 = insertvalue { ptr, ptr } %11, ptr %.sroa.4.0.i, 1 + ret { ptr, ptr } %12 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/wireshark/optimized/iana-ip.ll b/bench/wireshark/optimized/iana-ip.ll index b9d31d40385..6c9d2c99a5a 100644 --- a/bench/wireshark/optimized/iana-ip.ll +++ b/bench/wireshark/optimized/iana-ip.ll @@ -52,7 +52,7 @@ target triple = "x86_64-pc-linux-gnu" define ptr @ws_iana_ipv4_special_block_lookup(i32 noundef %0) local_unnamed_addr #0 { br label %.lr.ph.i -.lr.ph.i: ; preds = %16, %1 +.lr.ph.i: ; preds = %15, %1 %.01621.i = phi i64 [ %.1.i, %16 ], [ 0, %1 ] %.01720.i = phi i64 [ %.118.i, %16 ], [ 24, %1 ] %2 = add i64 %.01720.i, %.01621.i @@ -65,23 +65,23 @@ define ptr @ws_iana_ipv4_special_block_lookup(i32 noundef %0) local_unnamed_addr %9 = and i32 %8, %0 %10 = load i32, ptr %6, align 4 %11 = icmp ult i32 %9, %10 - br i1 %11, label %16, label %12 + br i1 %11, label %15, label %12 12: ; preds = %.lr.ph.i - %13 = icmp eq i32 %9, %10 - br i1 %13, label %bsearch.exit, label %14 + %.not.i = icmp eq i32 %9, %10 + br i1 %.not.i, label %bsearch.exit, label %13 -14: ; preds = %12 - %15 = add nuw i64 %3, 1 - br label %16 +13: ; preds = %12 + %14 = add nuw i64 %3, 1 + br label %15 -16: ; preds = %14, %.lr.ph.i +15: ; preds = %13, %.lr.ph.i %.118.i = phi i64 [ %.01720.i, %14 ], [ %3, %.lr.ph.i ] - %.1.i = phi i64 [ %15, %14 ], [ %.01621.i, %.lr.ph.i ] - %17 = icmp ult i64 %.1.i, %.118.i - br i1 %17, label %.lr.ph.i, label %bsearch.exit, !llvm.loop !6 + %.1.i = phi i64 [ %14, %14 ], [ %.01621.i, %.lr.ph.i ] + %16 = icmp ult i64 %.1.i, %.118.i + br i1 %16, label %.lr.ph.i, label %bsearch.exit, !llvm.loop !6 -bsearch.exit: ; preds = %12, %16 +bsearch.exit: ; preds = %12, %15 %.0.i = phi ptr [ null, %16 ], [ %5, %12 ] ret ptr %.0.i } @@ -109,9 +109,9 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none %12 = add nuw nsw i32 %11, 1 %13 = zext nneg i32 %11 to i64 %14 = and i32 %8, 7 - br label %.lr.ph.i1 + br label %.lr.ph.i2 -.lr.ph.i1: ; preds = %19, %.lr.ph.preheader.i +.lr.ph.i2: ; preds = %19, %.lr.ph.preheader.i %indvars.iv = phi i64 [ %indvars.iv.next, %19 ], [ 0, %.lr.ph.preheader.i ] %15 = getelementptr i8, ptr %0, i64 %indvars.iv %16 = load i8, ptr %15, align 1 @@ -120,10 +120,10 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none %.not31.i = icmp eq i8 %16, %18 br i1 %.not31.i, label %19, label %compare_ipv6_block.exit -19: ; preds = %.lr.ph.i1 +19: ; preds = %.lr.ph.i2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not.i = icmp eq i64 %indvars.iv, %13 - br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i1, !llvm.loop !8 + br i1 %exitcond.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i2, !llvm.loop !8 ._crit_edge.loopexit.i: ; preds = %19 %20 = zext nneg i32 %12 to i64 @@ -132,8 +132,8 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none ._crit_edge.i: ; preds = %._crit_edge.loopexit.i, %.lr.ph.i %.024.lcssa.i = phi i32 [ %8, %.lr.ph.i ], [ %14, %._crit_edge.loopexit.i ] %.0.lcssa.i = phi i64 [ 0, %.lr.ph.i ], [ %20, %._crit_edge.loopexit.i ] - %.not.i = icmp eq i32 %.024.lcssa.i, 0 - br i1 %.not.i, label %bsearch.exit, label %21 + %.not.i1 = icmp eq i32 %.024.lcssa.i, 0 + br i1 %.not.i1, label %bsearch.exit, label %21 21: ; preds = %._crit_edge.i %22 = getelementptr i8, ptr %0, i64 %.0.lcssa.i @@ -147,9 +147,9 @@ define ptr @ws_iana_ipv6_special_block_lookup(ptr noundef readonly captures(none %.not30.i = icmp eq i8 %27, %29 br i1 %.not30.i, label %bsearch.exit, label %compare_ipv6_block.exit -compare_ipv6_block.exit: ; preds = %.lr.ph.i1, %21 +compare_ipv6_block.exit: ; preds = %.lr.ph.i2, %21 %.lcssa.sink = phi i8 [ %29, %21 ], [ %18, %.lr.ph.i1 ] - %.lcssa19.sink = phi i8 [ %27, %21 ], [ %16, %.lr.ph.i1 ] + %.lcssa21.sink = phi i8 [ %27, %21 ], [ %16, %.lr.ph.i1 ] %30 = zext i8 %.lcssa.sink to i32 %31 = zext i8 %.lcssa19.sink to i32 %32 = sub nsw i32 %31, %30 diff --git a/bench/wireshark/optimized/wscbor.ll b/bench/wireshark/optimized/wscbor.ll index f791ee02272..cbc10ef5b06 100644 --- a/bench/wireshark/optimized/wscbor.ll +++ b/bench/wireshark/optimized/wscbor.ll @@ -239,7 +239,7 @@ wscbor_head_read.exit: ; preds = %32, %35, %.sink.spl store i32 %43, ptr %66, align 8 %67 = and i32 %60, 254 %switch = icmp eq i32 %67, 2 - br i1 %switch, label %68, label %164 + br i1 %switch, label %68, label %163 68: ; preds = %59 %.not117 = icmp eq i8 %62, 31 @@ -271,15 +271,15 @@ wscbor_get_length.exit: ; preds = %71, %74 %80 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef %79, i32 noundef %.0.i) %81 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %80, ptr %81, align 8 - br label %164 + br label %163 82: ; preds = %68 %83 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr null, ptr %83, align 8 br label %84 -84: ; preds = %151, %82 - %85 = phi i32 [ %152, %151 ], [ %43, %82 ] +84: ; preds = %150, %82 + %85 = phi i32 [ %151, %151 ], [ %43, %82 ] %86 = tail call noalias dereferenceable_or_null(32) ptr @wmem_alloc0(ptr noundef nonnull %0, i64 noundef 32) #8 %87 = load i32, ptr %2, align 4 store i32 %87, ptr %86, align 8 @@ -349,7 +349,7 @@ wscbor_head_read.exit126: ; preds = %96, %99, %.sink.spl 114: ; preds = %111 %115 = load i8, ptr %95, align 1 %116 = icmp eq i8 %115, 31 - br i1 %116, label %153, label %.thread130 + br i1 %116, label %152, label %.thread130 .thread130: ; preds = %111, %114 %117 = zext i8 %112 to i32 @@ -362,7 +362,7 @@ wscbor_head_read.exit126: ; preds = %96, %99, %.sink.spl %121 = load ptr, ptr %120, align 8 %122 = tail call ptr (ptr, ptr, ptr, ...) @wscbor_error_new(ptr noundef %121, ptr noundef nonnull @ei_cbor_wrong_type, ptr noundef nonnull @.str.6, i32 noundef %117, i32 noundef %118) tail call void @wmem_list_append(ptr noundef %14, ptr noundef %122) - br label %151 + br label %150 123: ; preds = %.thread130 %124 = getelementptr inbounds nuw i8, ptr %86, i64 24 @@ -381,7 +381,7 @@ wscbor_get_length.exit128.thread: ; preds = %123 store i32 %131, ptr %2, align 4 %132 = add i32 %106, 2147483647 store i32 %132, ptr %66, align 8 - br label %138 + br label %137 wscbor_get_length.exit128: ; preds = %123 %133 = trunc nuw nsw i64 %125 to i32 @@ -390,65 +390,65 @@ wscbor_get_length.exit128: ; preds = %123 store i32 %135, ptr %2, align 4 %136 = add i32 %106, %133 store i32 %136, ptr %66, align 8 - %137 = icmp eq i64 %125, 0 - br i1 %137, label %151, label %wscbor_get_length.exit128._crit_edge + %.not120 = icmp eq i64 %125, 0 + br i1 %.not120, label %150, label %wscbor_get_length.exit128._crit_edge wscbor_get_length.exit128._crit_edge: ; preds = %wscbor_get_length.exit128 %.pre = load ptr, ptr %10, align 8 - br label %138 + br label %137 -138: ; preds = %wscbor_get_length.exit128._crit_edge, %wscbor_get_length.exit128.thread - %139 = phi ptr [ %127, %wscbor_get_length.exit128.thread ], [ %.pre, %wscbor_get_length.exit128._crit_edge ] - %140 = phi i32 [ %132, %wscbor_get_length.exit128.thread ], [ %136, %wscbor_get_length.exit128._crit_edge ] +137: ; preds = %wscbor_get_length.exit128._crit_edge, %wscbor_get_length.exit128.thread + %138 = phi ptr [ %127, %wscbor_get_length.exit128.thread ], [ %.pre, %wscbor_get_length.exit128._crit_edge ] + %139 = phi i32 [ %132, %wscbor_get_length.exit128.thread ], [ %136, %wscbor_get_length.exit128._crit_edge ] %.0.i127133 = phi i32 [ 2147483647, %wscbor_get_length.exit128.thread ], [ %133, %wscbor_get_length.exit128._crit_edge ] - %141 = getelementptr inbounds nuw i8, ptr %139, i64 16 - %142 = load ptr, ptr %141, align 8 - %.not121 = icmp eq ptr %142, null - br i1 %.not121, label %143, label %145 - -143: ; preds = %138 - %144 = tail call ptr @tvb_new_composite() - store ptr %144, ptr %141, align 8 - br label %145 - -145: ; preds = %143, %138 - %146 = phi ptr [ %144, %143 ], [ %142, %138 ] - %147 = load i32, ptr %86, align 8 - %148 = load i32, ptr %89, align 4 - %149 = add i32 %148, %147 - %150 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef %149, i32 noundef %.0.i127133) - tail call void @tvb_composite_append(ptr noundef %146, ptr noundef %150) - br label %151 - -151: ; preds = %wscbor_get_length.exit128, %145, %119 - %152 = phi i32 [ %136, %wscbor_get_length.exit128 ], [ %140, %145 ], [ %106, %119 ] + %140 = getelementptr inbounds nuw i8, ptr %138, i64 16 + %141 = load ptr, ptr %140, align 8 + %.not121 = icmp eq ptr %141, null + br i1 %.not121, label %142, label %144 + +142: ; preds = %137 + %143 = tail call ptr @tvb_new_composite() + store ptr %143, ptr %140, align 8 + br label %144 + +144: ; preds = %142, %137 + %145 = phi ptr [ %143, %143 ], [ %141, %138 ] + %146 = load i32, ptr %86, align 8 + %147 = load i32, ptr %89, align 4 + %148 = add i32 %147, %146 + %149 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef %148, i32 noundef %.0.i127133) + tail call void @tvb_composite_append(ptr noundef %145, ptr noundef %149) + br label %150 + +150: ; preds = %wscbor_get_length.exit128, %144, %119 + %151 = phi i32 [ %136, %wscbor_get_length.exit128 ], [ %139, %145 ], [ %106, %119 ] tail call void @wmem_free(ptr noundef nonnull %0, ptr noundef %86) br label %84 -153: ; preds = %114 +152: ; preds = %114 tail call void @wmem_free(ptr noundef nonnull %0, ptr noundef %86) - %154 = load ptr, ptr %10, align 8 - %155 = getelementptr inbounds nuw i8, ptr %154, i64 8 - %156 = load ptr, ptr %155, align 8 - %157 = load ptr, ptr %154, align 8 - %158 = tail call noalias dereferenceable_or_null(16) ptr @wmem_alloc0(ptr noundef %157, i64 noundef 16) #8 - store ptr @ei_cbor_indef_string, ptr %158, align 8 - tail call void @wmem_list_append(ptr noundef %156, ptr noundef %158) - %159 = getelementptr inbounds nuw i8, ptr %154, i64 16 - %160 = load ptr, ptr %159, align 8 - %.not122 = icmp eq ptr %160, null - br i1 %.not122, label %162, label %161 - -161: ; preds = %153 - tail call void @tvb_composite_finalize(ptr noundef nonnull %160) - br label %164 - -162: ; preds = %153 - %163 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) - store ptr %163, ptr %159, align 8 - br label %164 - -164: ; preds = %59, %wscbor_get_length.exit, %162, %161 + %153 = load ptr, ptr %10, align 8 + %154 = getelementptr inbounds nuw i8, ptr %153, i64 8 + %155 = load ptr, ptr %154, align 8 + %156 = load ptr, ptr %153, align 8 + %157 = tail call noalias dereferenceable_or_null(16) ptr @wmem_alloc0(ptr noundef %156, i64 noundef 16) #8 + store ptr @ei_cbor_indef_string, ptr %157, align 8 + tail call void @wmem_list_append(ptr noundef %155, ptr noundef %157) + %158 = getelementptr inbounds nuw i8, ptr %153, i64 16 + %159 = load ptr, ptr %158, align 8 + %.not122 = icmp eq ptr %159, null + br i1 %.not122, label %161, label %160 + +160: ; preds = %152 + tail call void @tvb_composite_finalize(ptr noundef nonnull %159) + br label %163 + +161: ; preds = %152 + %162 = tail call ptr @tvb_new_subset_length(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) + store ptr %162, ptr %158, align 8 + br label %163 + +163: ; preds = %59, %wscbor_get_length.exit, %161, %160 ret ptr %10 } @@ -1348,30 +1348,30 @@ switch.lookup: ; preds = %8 %20 = zext nneg i32 %switch.load to i64 %21 = tail call noalias ptr @wmem_alloc0(ptr noundef %19, i64 noundef %20) #8 %.not = icmp eq ptr %7, null - br i1 %.not, label %.lr.ph.preheader, label %22 + br i1 %.not, label %.preheader, label %22 22: ; preds = %switch.lookup %23 = load i64, ptr %7, align 8 - br label %.lr.ph.preheader + br label %.preheader -.lr.ph.preheader: ; preds = %22, %switch.lookup - %24 = phi i64 [ %23, %22 ], [ 0, %switch.lookup ] +.preheader: ; preds = %22, %switch.lookup + %.03133.ph = phi i64 [ %23, %22 ], [ 0, %switch.lookup ] %.03033 = add nsw i32 %switch.load, -1 br label %.lr.ph -._crit_edge: ; preds = %.lr.ph +24: ; preds = %26 %25 = tail call ptr @tvb_new_child_real_data(ptr noundef %5, ptr noundef %21, i32 noundef %switch.load, i32 noundef %switch.load) br i1 %.not, label %33, label %31 -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.03035 = phi i32 [ %.030, %.lr.ph ], [ %.03033, %.lr.ph.preheader ] - %.03134 = phi i64 [ %29, %.lr.ph ], [ %24, %.lr.ph.preheader ] +26: ; preds = %.preheader, %26 + %indvars.iv = phi i32 [ %.030, %.lr.ph ], [ %.03033, %.lr.ph.preheader ] + %.03133 = phi i64 [ %29, %.lr.ph ], [ %.03133.ph, %.lr.ph.preheader ] %26 = trunc i64 %.03134 to i8 %27 = zext nneg i32 %.03035 to i64 %28 = getelementptr i8, ptr %21, i64 %27 store i8 %26, ptr %28, align 1 - %29 = lshr i64 %.03134, 8 - %.030 = add nsw i32 %.03035, -1 + %29 = lshr i64 %.03133, 8 + %.030 = add nsw i32 %indvars.iv, -1 %30 = icmp ult i32 %.030, 8 br i1 %30, label %.lr.ph, label %._crit_edge, !llvm.loop !13 @@ -1379,7 +1379,7 @@ switch.lookup: ; preds = %8 %32 = load i64, ptr %7, align 8 br label %33 -33: ; preds = %._crit_edge, %31 +33: ; preds = %24, %31 %34 = phi i64 [ %32, %31 ], [ 0, %._crit_edge ] %35 = tail call ptr @proto_tree_add_bitmask_value(ptr noundef %0, ptr noundef %25, i32 noundef 0, i32 noundef %1, i32 noundef %2, ptr noundef %3, i64 noundef %34) call void @llvm.lifetime.start.p0(ptr nonnull %9) diff --git a/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll b/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll index eb06b90504c..4aff710ac20 100644 --- a/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll +++ b/bench/yara-x-rs/optimized/24by81cawhgy3ha68pxt0cn41.ll @@ -407,60 +407,60 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ define internal fastcc void @_ZN5alloc7raw_vec11finish_grow17hc454ce43bb6a28efE(ptr dead_on_unwind noalias noundef nonnull writable writeonly align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #3 { %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load i64, ptr %5, align 8, !range !19, !noundef !6 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %23, label %8 - -8: ; preds = %4 - %9 = load ptr, ptr %3, align 8, !nonnull !6, !noundef !6 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %11 = load i64, ptr %10, align 8, !noundef !6 - %12 = icmp eq i64 %6, %1 - tail call void @llvm.assume(i1 %12) - %13 = icmp eq i64 %11, 0 - br i1 %13, label %14, label %20 - -14: ; preds = %8 - %15 = icmp eq i64 %2, 0 - br i1 %15, label %16, label %18 - -16: ; preds = %14 - %17 = getelementptr i8, ptr null, i64 %1 + %.not = icmp eq i64 %6, 0 + br i1 %.not, label %22, label %7 + +7: ; preds = %4 + %8 = load ptr, ptr %3, align 8, !nonnull !6, !noundef !6 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = load i64, ptr %9, align 8, !noundef !6 + %11 = icmp eq i64 %6, %1 + tail call void @llvm.assume(i1 %11) + %12 = icmp eq i64 %10, 0 + br i1 %12, label %13, label %19 + +13: ; preds = %7 + %14 = icmp eq i64 %2, 0 + br i1 %14, label %15, label %17 + +15: ; preds = %13 + %16 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -18: ; preds = %14 +17: ; preds = %13 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #22 - %19 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 + %18 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -20: ; preds = %8 - %21 = icmp uge i64 %2, %11 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %9, i64 noundef %11, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #22 +19: ; preds = %7 + %20 = icmp uge i64 %2, %10 + tail call void @llvm.assume(i1 %20) + %21 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %8, i64 noundef %10, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -23: ; preds = %4 - %24 = icmp eq i64 %2, 0 - br i1 %24, label %25, label %27 +22: ; preds = %4 + %23 = icmp eq i64 %2, 0 + br i1 %23, label %24, label %26 -25: ; preds = %23 - %26 = getelementptr i8, ptr null, i64 %1 +24: ; preds = %22 + %25 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -27: ; preds = %23 +26: ; preds = %22 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #22 - %28 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 + %27 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %27, %25, %20, %18, %16 - %.sroa.012.0.i.i.pn = phi ptr [ %22, %20 ], [ %17, %16 ], [ %19, %18 ], [ %26, %25 ], [ %28, %27 ] - %29 = icmp eq ptr %.sroa.012.0.i.i.pn, null - %30 = inttoptr i64 %1 to ptr - %spec.select = select i1 %29, ptr %30, ptr %.sroa.012.0.i.i.pn - %spec.select6 = zext i1 %29 to i64 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %spec.select, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %2, ptr %32, align 8 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %26, %24, %19, %17, %15 + %.sroa.012.0.i.i.pn = phi ptr [ %21, %20 ], [ %16, %16 ], [ %18, %18 ], [ %25, %25 ], [ %27, %27 ] + %28 = icmp eq ptr %.sroa.012.0.i.i.pn, null + %29 = inttoptr i64 %1 to ptr + %spec.select = select i1 %28, ptr %29, ptr %.sroa.012.0.i.i.pn + %spec.select6 = zext i1 %28 to i64 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %spec.select, ptr %30, align 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %2, ptr %31, align 8 store i64 %spec.select6, ptr %0, align 8 ret void } @@ -784,22 +784,22 @@ define internal noundef zeroext i1 @"_ZN66_$LT$core..option..Option$LT$T$GT$$u20 define internal noundef zeroext i1 @"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17h75fe55cd240af7bfE"(ptr noalias noundef readonly align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(24) %1) unnamed_addr #6 { %3 = alloca [8 x i8], align 8 %4 = load i64, ptr %0, align 8, !range !19, !noundef !6 - %5 = icmp eq i64 %4, -9223372036854775808 - br i1 %5, label %8, label %6 + %.not = icmp eq i64 %4, -9223372036854775808 + br i1 %.not, label %7, label %5 -6: ; preds = %2 +5: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr %0, ptr %3, align 8 - %7 = call noundef zeroext i1 @_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h262e6421f0e66e33E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.34, i64 noundef 4, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.a812db04629ac4e7ffa519935094a828.35) + %6 = call noundef zeroext i1 @_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h262e6421f0e66e33E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.34, i64 noundef 4, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.a812db04629ac4e7ffa519935094a828.35) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %10 + br label %9 -8: ; preds = %2 - %9 = tail call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17hf872a87fa5f13d84E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.32, i64 noundef 4) - br label %10 +7: ; preds = %2 + %8 = tail call noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17hf872a87fa5f13d84E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 @anon.a812db04629ac4e7ffa519935094a828.32, i64 noundef 4) + br label %9 -10: ; preds = %8, %6 - %.sroa.0.0.in = phi i1 [ %7, %6 ], [ %9, %8 ] +9: ; preds = %7, %5 + %.sroa.0.0.in = phi i1 [ %6, %6 ], [ %8, %8 ] ret i1 %.sroa.0.0.in } diff --git a/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll b/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll index 1db90b8a153..6bc1c1b5b51 100644 --- a/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll +++ b/bench/yara-x-rs/optimized/8fmnxi5cxgxler9gfhr96spqd.ll @@ -10,60 +10,60 @@ target triple = "x86_64-unknown-linux-gnu" define internal fastcc void @_ZN5alloc7raw_vec11finish_grow17h026474110b2d97c8E(ptr dead_on_unwind noalias noundef nonnull writable writeonly align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #0 { %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load i64, ptr %5, align 8, !range !3, !noundef !4 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %23, label %8 - -8: ; preds = %4 - %9 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %11 = load i64, ptr %10, align 8, !noundef !4 - %12 = icmp eq i64 %6, %1 - tail call void @llvm.assume(i1 %12) - %13 = icmp eq i64 %11, 0 - br i1 %13, label %14, label %20 - -14: ; preds = %8 - %15 = icmp eq i64 %2, 0 - br i1 %15, label %16, label %18 - -16: ; preds = %14 - %17 = getelementptr i8, ptr null, i64 %1 + %.not = icmp eq i64 %6, 0 + br i1 %.not, label %22, label %7 + +7: ; preds = %4 + %8 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = load i64, ptr %9, align 8, !noundef !4 + %11 = icmp eq i64 %6, %1 + tail call void @llvm.assume(i1 %11) + %12 = icmp eq i64 %10, 0 + br i1 %12, label %13, label %19 + +13: ; preds = %7 + %14 = icmp eq i64 %2, 0 + br i1 %14, label %15, label %17 + +15: ; preds = %13 + %16 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -18: ; preds = %14 +17: ; preds = %13 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15 - %19 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 + %18 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -20: ; preds = %8 - %21 = icmp uge i64 %2, %11 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %9, i64 noundef %11, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #15 +19: ; preds = %7 + %20 = icmp uge i64 %2, %10 + tail call void @llvm.assume(i1 %20) + %21 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %8, i64 noundef %10, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #15 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -23: ; preds = %4 - %24 = icmp eq i64 %2, 0 - br i1 %24, label %25, label %27 +22: ; preds = %4 + %23 = icmp eq i64 %2, 0 + br i1 %23, label %24, label %26 -25: ; preds = %23 - %26 = getelementptr i8, ptr null, i64 %1 +24: ; preds = %22 + %25 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -27: ; preds = %23 +26: ; preds = %22 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #15 - %28 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 + %27 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #15 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %27, %25, %20, %18, %16 - %.sroa.012.0.i.i.pn = phi ptr [ %22, %20 ], [ %17, %16 ], [ %19, %18 ], [ %26, %25 ], [ %28, %27 ] - %29 = icmp eq ptr %.sroa.012.0.i.i.pn, null - %30 = inttoptr i64 %1 to ptr - %spec.select = select i1 %29, ptr %30, ptr %.sroa.012.0.i.i.pn - %spec.select6 = zext i1 %29 to i64 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %spec.select, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %2, ptr %32, align 8 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %26, %24, %19, %17, %15 + %.sroa.012.0.i.i.pn = phi ptr [ %21, %20 ], [ %16, %16 ], [ %18, %18 ], [ %25, %25 ], [ %27, %27 ] + %28 = icmp eq ptr %.sroa.012.0.i.i.pn, null + %29 = inttoptr i64 %1 to ptr + %spec.select = select i1 %28, ptr %29, ptr %.sroa.012.0.i.i.pn + %spec.select6 = zext i1 %28 to i64 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %spec.select, ptr %30, align 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %2, ptr %31, align 8 store i64 %spec.select6, ptr %0, align 8 ret void } diff --git a/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll b/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll index 4121f56265f..2b0f6138ae1 100644 --- a/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll +++ b/bench/yara-x-rs/optimized/b2pucgguwqp4qxkwg6j77083l.ll @@ -73,7 +73,7 @@ default.unreachable: ; preds = %_ZN4core4iter6trait 10: ; preds = %2 %11 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %11, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" + br i1 %11, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" 12: ; preds = %2 br label %14 @@ -174,58 +174,58 @@ _ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.thread.i.i.thread.i.i: ; preds = % %51 = sub nuw i64 %.sroa.3.025.i.i.i, %.sroa.6.1.i1621.i.i8.i.i %52 = getelementptr inbounds nuw i8, ptr %.sroa.0.0626.i.i.i, i64 %.sroa.6.1.i1621.i.i8.i.i %53 = add i64 %.sroa.0.027.i.i.i, 1 - %54 = icmp eq i64 %51, 0 - br i1 %54, label %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i, label %.lr.ph.i.i.i + %.not.i.i.i.i.i = icmp eq i64 %51, 0 + br i1 %.not.i.i.i.i.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i, label %.lr.ph.i.i.i _ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i: ; preds = %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.thread.i.i.thread.i.i, %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.i.i.i.i %.sroa.0.0.lcssa.i.ph.i.i = phi i64 [ %.sroa.0.027.i.i.i, %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.i.i.i.i ], [ %53, %_ZN4bstr4utf86decode17h4a4f06fb9844d535E.exit.thread.i.i.thread.i.i ] - %55 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %.sroa.0.0.lcssa.i.ph.i.i) + %54 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %.sroa.0.0.lcssa.i.ph.i.i) br label %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i _ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i, %14 - %.sroa.0.0.lcssa.i.i.i = phi i64 [ %19, %14 ], [ %55, %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i ] - %56 = select i1 %16, i64 0, i64 %.sroa.0.0.lcssa.i.i.i + %.sroa.0.0.lcssa.i.i.i = phi i64 [ %19, %14 ], [ %54, %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.loopexit.i.i ] + %55 = select i1 %16, i64 0, i64 %.sroa.0.0.lcssa.i.i.i switch i64 %.sroa.01.0.i.i, label %default.unreachable [ - i64 0, label %57 - i64 1, label %59 - i64 2, label %61 + i64 0, label %56 + i64 1, label %58 + i64 2, label %60 ] -57: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i - %58 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %58, label %73, label %65 +56: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i + %57 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) + br i1 %57, label %72, label %64 -59: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i - %60 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %56), !noalias !8 - br i1 %60, label %73, label %67 +58: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i + %59 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %55), !noalias !8 + br i1 %59, label %72, label %66 -61: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i - %62 = lshr i64 %56, 1 - %63 = and i64 %56, 1 - %.sroa.03.0.i.i = add nuw nsw i64 %62, %63 - %64 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %62), !noalias !8 - br i1 %64, label %73, label %69 +60: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h07f6e0d6f8cc4866E.exit.i.i + %61 = lshr i64 %55, 1 + %62 = and i64 %55, 1 + %.sroa.03.0.i.i = add nuw nsw i64 %61, %62 + %63 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %61), !noalias !8 + br i1 %63, label %72, label %68 -65: ; preds = %57 - %66 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %56) - br i1 %66, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" +64: ; preds = %56 + %65 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %55) + br i1 %65, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -67: ; preds = %59 - %68 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %68, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" +66: ; preds = %58 + %67 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) + br i1 %67, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -69: ; preds = %61 - %70 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) - br i1 %70, label %73, label %71 +68: ; preds = %60 + %69 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_bstr17h2699c2a006170737E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1) + br i1 %69, label %72, label %70 -71: ; preds = %69 - %72 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.sroa.03.0.i.i) - br i1 %72, label %73, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" +70: ; preds = %68 + %71 = tail call noundef zeroext i1 @"_ZN4bstr5impls4bstr65_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstr..BStr$GT$3fmt10write_pads17h6757a6831ca30441E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.sroa.03.0.i.i) + br i1 %71, label %72, label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -73: ; preds = %71, %69, %67, %65, %61, %59, %57, %10 +72: ; preds = %70, %68, %66, %64, %60, %58, %56, %10 br label %"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit" -"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit": ; preds = %10, %65, %67, %71, %73 +"_ZN4bstr5impls7bstring71_$LT$impl$u20$core..fmt..Display$u20$for$u20$bstr..bstring..BString$GT$3fmt17ha71a5d9c9df1b137E.exit": ; preds = %10, %64, %66, %70, %72 %.sroa.0.2.i.i = phi i1 [ true, %73 ], [ false, %65 ], [ false, %67 ], [ false, %71 ], [ false, %10 ] ret i1 %.sroa.0.2.i.i } @@ -750,60 +750,60 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17ha1d6c62e80ed3eb7E.exit: define internal fastcc void @_ZN5alloc7raw_vec11finish_grow17h8954d1e43706f9f3E(ptr dead_on_unwind noalias noundef nonnull writable writeonly align 8 captures(none) dereferenceable(24) initializes((0, 24)) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #1 { %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = load i64, ptr %5, align 8, !range !122, !noundef !3 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %23, label %8 - -8: ; preds = %4 - %9 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %11 = load i64, ptr %10, align 8, !noundef !3 - %12 = icmp eq i64 %6, %1 - tail call void @llvm.assume(i1 %12) - %13 = icmp eq i64 %11, 0 - br i1 %13, label %14, label %20 - -14: ; preds = %8 - %15 = icmp eq i64 %2, 0 - br i1 %15, label %16, label %18 - -16: ; preds = %14 - %17 = getelementptr i8, ptr null, i64 %1 + %.not = icmp eq i64 %6, 0 + br i1 %.not, label %22, label %7 + +7: ; preds = %4 + %8 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = load i64, ptr %9, align 8, !noundef !3 + %11 = icmp eq i64 %6, %1 + tail call void @llvm.assume(i1 %11) + %12 = icmp eq i64 %10, 0 + br i1 %12, label %13, label %19 + +13: ; preds = %7 + %14 = icmp eq i64 %2, 0 + br i1 %14, label %15, label %17 + +15: ; preds = %13 + %16 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -18: ; preds = %14 +17: ; preds = %13 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #21 - %19 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 + %18 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -20: ; preds = %8 - %21 = icmp uge i64 %2, %11 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %9, i64 noundef %11, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #21 +19: ; preds = %7 + %20 = icmp uge i64 %2, %10 + tail call void @llvm.assume(i1 %20) + %21 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc14___rust_realloc(ptr noundef nonnull %8, i64 noundef %10, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -23: ; preds = %4 - %24 = icmp eq i64 %2, 0 - br i1 %24, label %25, label %27 +22: ; preds = %4 + %23 = icmp eq i64 %2, 0 + br i1 %23, label %24, label %26 -25: ; preds = %23 - %26 = getelementptr i8, ptr null, i64 %1 +24: ; preds = %22 + %25 = getelementptr i8, ptr null, i64 %1 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -27: ; preds = %23 +26: ; preds = %22 tail call void @_RNvCs73fAdSrgOJL_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #21 - %28 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 + %27 = tail call noundef ptr @_RNvCs73fAdSrgOJL_7___rustc12___rust_alloc(i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %1) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %27, %25, %20, %18, %16 - %.sroa.012.0.i.i.pn = phi ptr [ %22, %20 ], [ %17, %16 ], [ %19, %18 ], [ %26, %25 ], [ %28, %27 ] - %29 = icmp eq ptr %.sroa.012.0.i.i.pn, null - %30 = inttoptr i64 %1 to ptr - %spec.select = select i1 %29, ptr %30, ptr %.sroa.012.0.i.i.pn - %spec.select6 = zext i1 %29 to i64 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %spec.select, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %2, ptr %32, align 8 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h0d6360e438ffdf00E.exit": ; preds = %26, %24, %19, %17, %15 + %.sroa.012.0.i.i.pn = phi ptr [ %21, %20 ], [ %16, %16 ], [ %18, %18 ], [ %25, %25 ], [ %27, %27 ] + %28 = icmp eq ptr %.sroa.012.0.i.i.pn, null + %29 = inttoptr i64 %1 to ptr + %spec.select = select i1 %28, ptr %29, ptr %.sroa.012.0.i.i.pn + %spec.select6 = zext i1 %28 to i64 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %spec.select, ptr %30, align 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %2, ptr %31, align 8 store i64 %spec.select6, ptr %0, align 8 ret void } diff --git a/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll b/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll index e783450b52c..c4d18073e03 100644 --- a/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll +++ b/bench/zed-rs/optimized/4u0dswi9tif78fn5u6xqz5z9a.ll @@ -3703,57 +3703,57 @@ define void @"_ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u br i1 %or.cond, label %20, label %19 19: ; preds = %15 - br i1 %9, label %23, label %22 + br i1 %9, label %26, label %25 20: ; preds = %15 %21 = icmp samesign ult i8 %17, 4 br i1 %21, label %switch.lookup, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" -22: ; preds = %19 +25: ; preds = %19 %.sroa.0.0.copyload = load i32, ptr %1, align 4 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6.0..sroa_idx, i64 16, i1 false) br label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" -23: ; preds = %19 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 20 - %.sroa.05.0.copyload = load i32, ptr %24, align 4 - %25 = icmp eq i32 %.sroa.05.0.copyload, 19 - br i1 %25, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit", label %26 +26: ; preds = %19 + %27 = getelementptr inbounds nuw i8, ptr %1, i64 20 + %.sroa.05.0.copyload = load i32, ptr %27, align 4 + %28 = icmp eq i32 %.sroa.05.0.copyload, 19 + br i1 %28, label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit", label %29 -26: ; preds = %23 +29: ; preds = %26 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.5.0..sroa_idx, i64 16, i1 false) br label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" switch.lookup: ; preds = %20 - %27 = zext nneg i8 %17 to i64 - %switch.gep = getelementptr inbounds nuw i32, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E", i64 %27 + %30 = zext nneg i8 %17 to i64 + %switch.gep = getelementptr inbounds nuw i32, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E", i64 %30 %switch.load = load i32, ptr %switch.gep, align 4 br label %"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit" -"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit": ; preds = %26, %23, %switch.lookup, %20, %3, %22 +"_ZN2ui10components6button11button_like130_$LT$impl$u20$core..convert..From$LT$ui..components..button..button_like..ButtonStyle$GT$$u20$for$u20$ui..styles..color..Color$GT$4from17h6eb5e43acf21098cE.exit": ; preds = %29, %26, %switch.lookup, %20, %3, %25 %.sroa.0.0 = phi i32 [ %.sroa.0.0.copyload, %22 ], [ 4, %3 ], [ 0, %20 ], [ %switch.load, %switch.lookup ], [ 15, %23 ], [ %.sroa.05.0.copyload, %26 ] - %28 = icmp eq i8 %6, -88 + %31 = icmp eq i8 %6, -88 %spec.select.i = select i1 %9, i8 %6, i8 -88 - %.sroa.05.0.i = select i1 %28, i8 -88, i8 %spec.select.i - %29 = icmp eq i8 %.sroa.05.0.i, -88 - %spec.select = select i1 %29, i8 %11, i8 %.sroa.05.0.i + %.sroa.05.0.i = select i1 %31, i8 -88, i8 %spec.select.i + %32 = icmp eq i8 %.sroa.05.0.i, -88 + %spec.select = select i1 %32, i8 %11, i8 %.sroa.05.0.i call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.11) call void @llvm.lifetime.start.p0(ptr nonnull %4) store i8 %spec.select, ptr %4, align 1, !noalias !387 - %30 = call { ptr, i64 } @_ZN2ui10components4icon8IconName4path17hbf39b26447d409b5E(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %4), !noalias !387 - %31 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef 1.000000e+00), !noalias !387 + %33 = call { ptr, i64 } @_ZN2ui10components4icon8IconName4path17hbf39b26447d409b5E(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %4), !noalias !387 + %34 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef 1.000000e+00), !noalias !387 call void @"_ZN78_$LT$gpui..elements..svg..Transformation$u20$as$u20$core..default..Default$GT$7default17h80aa629d9609e625E"(ptr noalias noundef nonnull sret([20 x i8]) align 4 captures(none) dereferenceable(20) %.sroa.11) call void @llvm.lifetime.end.p0(ptr nonnull %4) - %32 = getelementptr inbounds nuw i8, ptr %1, i64 42 - %33 = load i8, ptr %32, align 2, !range !390, !noundef !4 - %34 = zext nneg i8 %33 to i64 - %switch.gep26 = getelementptr inbounds nuw float, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E.22", i64 %34 + %35 = getelementptr inbounds nuw i8, ptr %1, i64 42 + %36 = load i8, ptr %35, align 2, !range !390, !noundef !4 + %37 = zext nneg i8 %36 to i64 + %switch.gep26 = getelementptr inbounds nuw float, ptr @"switch.table._ZN93_$LT$ui..components..button..button_icon..ButtonIcon$u20$as$u20$gpui..element..RenderOnce$GT$6render17he6dc0bb9f0bb9e98E.22", i64 %37 %switch.load27 = load float, ptr %switch.gep26, align 4 - %35 = extractvalue { ptr, i64 } %30, 1 - %36 = extractvalue { ptr, i64 } %30, 0 - %37 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef %switch.load27), !noalias !391 + %38 = extractvalue { ptr, i64 } %33, 1 + %39 = extractvalue { ptr, i64 } %33, 0 + %40 = call noundef float @_ZN4gpui8geometry4rems17hc46255c2f7a0f1edE(float noundef %switch.load27), !noalias !391 %.sroa.617.sroa.4.0..sroa.617.0..sroa_idx18.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %.sroa.617.sroa.4.0..sroa.617.0..sroa_idx18.sroa_idx, ptr noundef nonnull align 8 dereferenceable(20) %.sroa.11, i64 20, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.11) @@ -3762,13 +3762,13 @@ switch.lookup: ; preds = %20 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.515.0..sroa_idx16, ptr noundef nonnull align 4 dereferenceable(16) %.sroa.6, i64 16, i1 false), !alias.scope !398, !noalias !4 store i64 0, ptr %0, align 8, !alias.scope !401, !noalias !395 %.sroa.012.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %36, ptr %.sroa.012.sroa.4.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 + store ptr %39, ptr %.sroa.012.sroa.4.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 %.sroa.012.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %35, ptr %.sroa.012.sroa.5.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 + store i64 %38, ptr %.sroa.012.sroa.5.0..sroa_idx, align 8, !alias.scope !401, !noalias !395 %.sroa.4.0..sroa_idx13 = getelementptr inbounds nuw i8, ptr %0, i64 24 store i32 %.sroa.0.0, ptr %.sroa.4.0..sroa_idx13, align 8, !alias.scope !401, !noalias !395 %.sroa.617.0..sroa_idx18 = getelementptr inbounds nuw i8, ptr %0, i64 44 - store float %37, ptr %.sroa.617.0..sroa_idx18, align 4, !alias.scope !401, !noalias !395 + store float %40, ptr %.sroa.617.0..sroa_idx18, align 4, !alias.scope !401, !noalias !395 ret void }