From b60585a73ac83244c21e219d3b90c20255b8f34b Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Thu, 23 Oct 2025 21:40:39 +0800 Subject: [PATCH 1/3] pre-commit: PR162654 --- 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..ed59204a764 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/162654 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From 90ad6a6beb109491cf26936d7175ff4a8e9b127f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:02:13 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/cbaBlast.ll | 62 +++++---- bench/abc/optimized/dauGia.ll | 49 +++---- bench/abc/optimized/extraUtilFile.ll | 44 ++++--- .../optimized/cord_rep_btree_navigator.ll | 26 ++-- bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll | 39 +++--- bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll | 37 +++--- bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll | 42 +++--- bench/arrow/optimized/os.ll | 21 +-- bench/assimp/optimized/RemoveComments.ll | 61 +++++---- bench/bdwgc/optimized/cordxtra.ll | 30 +++-- bench/boost/optimized/params_base.ll | 28 ++-- bench/boost/optimized/test_fs.ll | 50 ++++--- bench/bullet3/optimized/poly34.ll | 103 ++++++++------- bench/c3c/optimized/sema_name_resolution.ll | 53 ++++---- bench/c3c/optimized/whereami.ll | 39 +++--- bench/casadi/optimized/cs_amd.ll | 20 +-- bench/chibicc/optimized/tokenize.ll | 101 +++++++------- bench/clamav/optimized/macho.ll | 42 +++--- bench/clamav/optimized/special.ll | 31 ++--- bench/cmake/optimized/block_decoder.ll | 66 +++++----- bench/cmake/optimized/cmOrderDirectories.ll | 41 +++--- .../optimized/3x959pa9na58uqov.ll | 29 +++-- bench/cpython/optimized/obmalloc.ll | 46 ++++--- bench/cpython/optimized/posixmodule.ll | 21 +-- bench/csmith/optimized/ArrayVariable.ll | 88 +++++++------ bench/curl/optimized/mprintf.ll | 52 ++++---- bench/cvc5/optimized/alpha_equivalence.ll | 47 ++++--- bench/darktable/optimized/Cr2LJpegDecoder.ll | 31 ++--- bench/diesel-rs/optimized/23kokisxi5pskw1l.ll | 81 +++++++----- bench/draco/optimized/mesh_are_equivalent.ll | 52 ++++---- bench/duckdb/optimized/stringpiece.ll | 29 +++-- bench/eastl/optimized/eathread_pool.ll | 25 ++-- bench/eastl/optimized/eathread_semaphore.ll | 19 +-- .../optimized/3a1f053714hdbf2r1u9m19s6u.ll | 54 ++++---- .../optimized/9wkk97gvpzd6xthejxapvo559.ll | 49 +++---- bench/faiss/optimized/colorprint.ll | 44 +++---- bench/ffmpeg/optimized/ebur128.ll | 33 +++-- bench/ffmpeg/optimized/img2.ll | 24 ++-- bench/folly/optimized/Dump.ll | 64 ++++----- .../optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll | 36 ++--- bench/freetype/optimized/sfnt.ll | 37 +++--- bench/git/optimized/delta-islands.ll | 44 ++++--- bench/git/optimized/reftable-backend.ll | 38 +++--- bench/git/optimized/shell.ll | 45 +++---- bench/graphviz/optimized/actions.ll | 32 +++-- bench/gromacs/optimized/atomsbuilder.ll | 71 ++++++---- bench/gromacs/optimized/colvarcomp_protein.ll | 88 +++++++------ bench/grpc/optimized/compression_internal.ll | 42 +++--- bench/grpc/optimized/writing.ll | 8 +- .../optimized/hb-subset-cff-common.ll | 29 +++-- bench/hdf5/optimized/H5FDonion_index.ll | 44 ++++--- bench/hdf5/optimized/H5Sall.ll | 79 ++++++----- bench/hermes/optimized/DebugInfo.ll | 31 +++-- bench/hermes/optimized/Sorting.ll | 27 ++-- .../optimized/1wenjtbhc61q6deg.ll | 88 +++++++------ bench/hwloc/optimized/topology.ll | 46 ++++--- bench/hyperscan/optimized/bad_patterns.ll | 101 +++++++------- bench/icu/optimized/dtfmtsym.ll | 40 +++--- bench/icu/optimized/strrepl.ll | 65 ++++----- bench/icu/optimized/ucnvlat1.ll | 56 ++++---- bench/image-rs/optimized/ptscn4jakoj4p9m.ll | 66 +++++----- .../optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll | 81 ++++++------ bench/jq/optimized/big5.ll | 91 +++++++------ bench/jq/optimized/regenc.ll | 36 ++--- bench/lean4/optimized/instantiate_mvars.ll | 22 ++-- bench/libcxx/optimized/valarray.ll | 92 ++++++------- bench/libevent/optimized/event.ll | 102 ++++++++------- bench/libevent/optimized/http.ll | 35 ++--- bench/libigl/optimized/exact_geodesic.ll | 43 +++--- bench/libigl/optimized/sort_angles.ll | 58 +++++---- bench/libquic/optimized/prime.ll | 48 ++++--- bench/libquic/optimized/quic_connection.ll | 25 ++-- bench/libwebp/optimized/alpha_processing.ll | 34 ++--- bench/lief/optimized/asn1write.ll | 61 +++++---- bench/lief/optimized/x509.ll | 95 +++++++------- bench/linux/optimized/dmaengine.ll | 16 ++- bench/linux/optimized/io_apic.ll | 15 ++- bench/llama.cpp/optimized/llama-chat.ll | 48 +++---- bench/llvm/optimized/LangOptions.ll | 32 +++-- bench/llvm/optimized/OptimizedStructLayout.ll | 33 +++-- bench/luajit/optimized/lj_debug.ll | 90 +++++++------ bench/lvgl/optimized/lv_group.ll | 33 +++-- bench/lvgl/optimized/lv_span.ll | 61 +++++---- bench/lvgl/optimized/lv_table.ll | 58 +++++---- .../optimized/54ajasddlqavlxt2.ll | 31 ++--- bench/meshlab/optimized/TexturePainter.ll | 39 +++--- bench/meshlab/optimized/packing.ll | 47 +++---- .../optimized/vcacheoptimizer.ll | 107 ++++++++------- bench/mimalloc/optimized/prim.ll | 25 ++-- bench/minetest/optimized/CFileList.ll | 38 +++--- bench/minetest/optimized/CFileSystem.ll | 34 +++-- bench/minetest/optimized/l_mapgen.ll | 33 ++--- .../mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll | 50 +++---- bench/mitsuba3/optimized/filesystem.ll | 80 +++++++----- bench/ncnn/optimized/imreadwrite.ll | 37 +++--- bench/nghttp2/optimized/sfparse.ll | 74 ++++++----- bench/nix/optimized/eval-settings.ll | 31 +++-- bench/node/optimized/libnode.fs_permission.ll | 25 ++-- .../node/optimized/libnode.string_decoder.ll | 30 +++-- bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll | 70 +++++----- bench/nori/optimized/common.ll | 94 ++++++------- bench/open3d/optimized/contrib.ll | 68 +++++----- bench/opencv/optimized/jp2.ll | 23 ++-- bench/openjdk/optimized/elfFile.ll | 43 +++--- bench/openjdk/optimized/type.ll | 27 ++-- bench/openspiel/optimized/infostate_tree.ll | 45 ++++--- bench/openssl/optimized/rsa_kem.ll | 30 ++--- bench/openusd/optimized/avif.ll | 9 +- bench/pbrt-v4/optimized/stbimage.ll | 47 ++++--- bench/php/optimized/parse_tz.ll | 63 ++++----- bench/php/optimized/plain_wrapper.ll | 94 ++++++------- .../optimized/4hq7qqfz57g4ftqe0u539725f.ll | 32 ++--- bench/pocketpy/optimized/expr.ll | 57 ++++---- .../optimized/0qbeb52i2e81o7of4uqvbqn1y.ll | 40 +++--- bench/postgres/optimized/execIndexing.ll | 32 +++-- bench/postgres/optimized/proc.ll | 28 ++-- bench/proj/optimized/proj_mdist.ll | 27 ++-- bench/proj/optimized/proj_strtod.ll | 99 +++++++------- bench/protobuf/optimized/csharp_message.ll | 29 +++-- bench/proxygen/optimized/ParseURL.ll | 23 ++-- bench/qemu/optimized/libvhost-user.ll | 59 ++++----- bench/qemu/optimized/virtio.ll | 49 +++---- bench/quantlib/optimized/bspline.ll | 24 ++-- .../optimized/43xnog1a87dssj1hwthynpevl.ll | 46 +++---- .../optimized/ddriv7i4doqny17a487136o1r.ll | 86 ++++++------ .../optimized/em94uyxz0wp9gccfab963606p.ll | 78 ++++++----- .../optimized/6l7kltspw5elnc95wd7ksy4mp.ll | 37 +++--- .../optimized/6u02ixh93hrjm23fysoy5xrjw.ll | 40 +++--- bench/rand-rs/optimized/34yh0c028yq5fj4d.ll | 92 +++++++------ bench/raylib/optimized/rtextures.ll | 82 ++++++------ bench/re2/optimized/re2.ll | 35 ++--- bench/re2/optimized/set.ll | 51 ++++---- bench/redis/optimized/networking.ll | 47 ++++--- bench/redis/optimized/tracking.ll | 66 +++++----- bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll | 63 ++++----- bench/rocksdb/optimized/plain_table_reader.ll | 69 +++++----- bench/ruby/optimized/date_core.ll | 58 +++++---- .../optimized/2stcslco4i4t6tsofnxak4n4v.ll | 32 +++-- .../optimized/7qxi6ixqvlegea1o7y7fo6yub.ll | 30 +++-- .../optimized/9dt8mtshsu2ct8ugypwqwozwg.ll | 35 ++--- .../optimized/35mx14hjf8oh90noer0x3ymew.ll | 54 ++++---- bench/sdl/optimized/SDL_string.ll | 57 ++++---- bench/sentencepiece/optimized/builder.ll | 62 ++++----- bench/slurm/optimized/cbuf.ll | 74 ++++++----- ...ycpu_top___024root__DepSet_hcf0db31f__0.ll | 42 ++---- ...op___024root__DepSet_hcf0db31f__0__Slow.ll | 72 +++++----- bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll | 82 ++++++------ bench/stockfish/optimized/search.ll | 123 ++++++++++-------- .../optimized/07d18yovueuilo4ucwbczrjk9.ll | 100 +++++++------- .../optimized/10h1ju7dwsvagf79.ll | 34 ++--- bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll | 78 +++++------ .../optimized/68uz0ms18epwru7402hblucwm.ll | 72 +++++----- .../optimized/7fw9xnh6zcxu0x094jeq6b04v.ll | 54 ++++---- bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll | 39 +++--- bench/typst-rs/optimized/2hy987uth4sp8yoc.ll | 49 ++++--- .../optimized/1v5vjcevp56t5ndlvgh9f608z.ll | 44 ++++--- bench/verilator/optimized/V3Number.ll | 99 +++++++------- .../optimized/4m6wfct6oj4zo483nw31mpwkd.ll | 62 +++++---- .../optimized/5o0hleoi639h6rlkufrksw131.ll | 63 +++++---- .../wasmtime-rs/optimized/1r2x5absurxbrq18.ll | 46 ++++--- .../wasmtime-rs/optimized/2lz954crgst412nx.ll | 50 +++---- bench/wireshark/optimized/proto.ll | 31 +++-- bench/wireshark/optimized/ws_mempbrk.ll | 23 ++-- bench/xgboost/optimized/coll.ll | 82 ++++++------ bench/yosys/optimized/json11.ll | 29 +++-- bench/zfp/optimized/decode4d.ll | 73 ++++++----- bench/zstd/optimized/cover.ll | 99 +++++++++----- bench/zxing/optimized/Utf.ll | 88 +++++++------ 168 files changed, 4667 insertions(+), 3949 deletions(-) diff --git a/bench/abc/optimized/cbaBlast.ll b/bench/abc/optimized/cbaBlast.ll index 15bcbf27e3f..56f0745d54f 100644 --- a/bench/abc/optimized/cbaBlast.ll +++ b/bench/abc/optimized/cbaBlast.ll @@ -1620,35 +1620,41 @@ declare i32 @Gia_ManHashXor(ptr noundef, i32 noundef, i32 noundef) local_unnamed ; Function Attrs: nounwind uwtable define i32 @Cba_BlastLess2(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef readonly captures(none) %2, i32 noundef %3) local_unnamed_addr #0 { - %5 = zext i32 %3 to i64 - br label %6 + %5 = icmp sgt i32 %3, 0 + br i1 %5, label %.lr.ph.preheader, label %._crit_edge25 -6: ; preds = %9, %4 - %indvars.iv = phi i64 [ %10, %9 ], [ %5, %4 ] - %.019 = phi i32 [ %21, %9 ], [ 0, %4 ] - %.0 = phi i32 [ %17, %9 ], [ 0, %4 ] - %7 = trunc nuw i64 %indvars.iv to i32 - %8 = icmp sgt i32 %7, 0 - br i1 %8, label %9, label %23 - -9: ; preds = %6 - %10 = add nsw i64 %indvars.iv, -1 - %11 = getelementptr inbounds nuw i32, ptr %1, i64 %10 - %12 = load i32, ptr %11, align 4, !tbaa !11 - %13 = xor i32 %12, 1 - %14 = getelementptr inbounds nuw i32, ptr %2, i64 %10 - %15 = load i32, ptr %14, align 4, !tbaa !11 - %16 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %13, i32 noundef %15) #21 - %17 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.019, i32 noundef %.0, i32 noundef %16) #21 - %18 = load i32, ptr %11, align 4, !tbaa !11 - %19 = load i32, ptr %14, align 4, !tbaa !11 - %20 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %18, i32 noundef %19) #21 - %21 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.019, i32 noundef %20) #21 - %22 = icmp eq i32 %21, 1 - br i1 %22, label %23, label %6, !llvm.loop !54 - -23: ; preds = %9, %6 - %.1 = phi i32 [ %17, %9 ], [ %.0, %6 ] +.lr.ph.preheader: ; preds = %4 + %6 = zext nneg i32 %3 to i64 + br label %.lr.ph + +7: ; preds = %.lr.ph + %8 = icmp samesign ugt i64 %indvars.iv, 1 + br i1 %8, label %.lr.ph, label %._crit_edge25, !llvm.loop !54 + +.lr.ph: ; preds = %.lr.ph.preheader, %7 + %indvars.iv = phi i64 [ %6, %.lr.ph.preheader ], [ %indvars.iv.next, %7 ] + %.024 = phi i32 [ 0, %.lr.ph.preheader ], [ %15, %7 ] + %.01923 = phi i32 [ 0, %.lr.ph.preheader ], [ %19, %7 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %9 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv.next + %10 = load i32, ptr %9, align 4, !tbaa !11 + %11 = xor i32 %10, 1 + %12 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next + %13 = load i32, ptr %12, align 4, !tbaa !11 + %14 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %11, i32 noundef %13) #21 + %15 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.01923, i32 noundef %.024, i32 noundef %14) #21 + %16 = load i32, ptr %9, align 4, !tbaa !11 + %17 = load i32, ptr %12, align 4, !tbaa !11 + %18 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %16, i32 noundef %17) #21 + %19 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.01923, i32 noundef %18) #21 + %20 = icmp eq i32 %19, 1 + br i1 %20, label %._crit_edge, label %7, !llvm.loop !54 + +._crit_edge: ; preds = %.lr.ph + br label %._crit_edge25, !llvm.loop !54 + +._crit_edge25: ; preds = %7, %._crit_edge, %4 + %.1 = phi i32 [ %15, %._crit_edge ], [ 0, %4 ], [ %15, %7 ] ret i32 %.1 } diff --git a/bench/abc/optimized/dauGia.ll b/bench/abc/optimized/dauGia.ll index 78b77a6989e..ed99bd4af59 100644 --- a/bench/abc/optimized/dauGia.ll +++ b/bench/abc/optimized/dauGia.ll @@ -17,46 +17,51 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define i32 @Dau_DsdToGiaCompose_rec(ptr noundef %0, i64 noundef %1, ptr noundef %2, i32 noundef %3) local_unnamed_addr #0 { - switch i64 %1, label %tailrecurse.preheader [ + switch i64 %1, label %.split [ i64 0, label %.loopexit i64 -1, label %40 ] -tailrecurse.preheader: ; preds = %4 - %5 = sext i32 %3 to i64 - br label %tailrecurse +.split: ; preds = %4 + %5 = add nsw i32 %3, -1 + %6 = icmp eq i32 %5, 0 + br i1 %6, label %tailrecurse._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %.split + %7 = sext i32 %5 to i64 + br label %.lr.ph -tailrecurse: ; preds = %tailrecurse.preheader, %12 - %indvars.iv = phi i64 [ %5, %tailrecurse.preheader ], [ %indvars.iv.next, %12 ] +tailrecurse: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %6 = icmp eq i64 %indvars.iv.next, 0 - br i1 %6, label %7, label %12 - -7: ; preds = %tailrecurse - %8 = load i32, ptr %2, align 4, !tbaa !3 - %9 = icmp eq i64 %1, 6148914691236517205 - %10 = zext i1 %9 to i32 - %11 = xor i32 %8, %10 + %8 = icmp eq i64 %indvars.iv.next, 0 + br i1 %8, label %tailrecurse._crit_edge, label %.lr.ph + +tailrecurse._crit_edge: ; preds = %tailrecurse, %.split + %9 = load i32, ptr %2, align 4, !tbaa !3 + %10 = icmp eq i64 %1, 6148914691236517205 + %11 = zext i1 %10 to i32 + %12 = xor i32 %9, %11 br label %40 -12: ; preds = %tailrecurse - %13 = trunc nsw i64 %indvars.iv.next to i32 +.lr.ph: ; preds = %.lr.ph.preheader, %tailrecurse + %indvars.iv = phi i64 [ %7, %.lr.ph.preheader ], [ %indvars.iv.next, %tailrecurse ] + %13 = trunc nsw i64 %indvars.iv to i32 %14 = shl nuw i32 1, %13 %15 = zext nneg i32 %14 to i64 %16 = lshr i64 %1, %15 - %17 = getelementptr inbounds i64, ptr @s_Truths6Neg, i64 %indvars.iv.next + %17 = getelementptr inbounds i64, ptr @s_Truths6Neg, i64 %indvars.iv %18 = load i64, ptr %17, align 8, !tbaa !7 %19 = xor i64 %16, %1 %20 = and i64 %18, %19 %.not35 = icmp eq i64 %20, 0 br i1 %.not35, label %tailrecurse, label %21 -21: ; preds = %12 +21: ; preds = %.lr.ph %22 = and i64 %18, %1 %23 = shl i64 %22, %15 %24 = or i64 %23, %22 %25 = tail call i32 @Dau_DsdToGiaCompose_rec(ptr noundef %0, i64 noundef %24, ptr noundef %2, i32 noundef %13) - %26 = getelementptr inbounds i64, ptr @s_Truths6, i64 %indvars.iv.next + %26 = getelementptr inbounds i64, ptr @s_Truths6, i64 %indvars.iv %27 = load i64, ptr %26, align 8, !tbaa !7 %28 = and i64 %27, %1 %29 = lshr i64 %28, %15 @@ -65,7 +70,7 @@ tailrecurse: ; preds = %tailrecurse.prehead %32 = getelementptr inbounds nuw i8, ptr %0, i64 40 %33 = load ptr, ptr %32, align 8, !tbaa !9 %.not34 = icmp eq ptr %33, null - %34 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv.next + %34 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv %35 = load i32, ptr %34, align 4, !tbaa !3 br i1 %.not34, label %38, label %36 @@ -80,8 +85,8 @@ tailrecurse: ; preds = %tailrecurse.prehead .loopexit: ; preds = %4 br label %40 -40: ; preds = %4, %.loopexit, %38, %36, %7 - %.0 = phi i32 [ %11, %7 ], [ %37, %36 ], [ %39, %38 ], [ 0, %.loopexit ], [ 1, %4 ] +40: ; preds = %4, %.loopexit, %38, %36, %tailrecurse._crit_edge + %.0 = phi i32 [ %12, %tailrecurse._crit_edge ], [ %37, %36 ], [ %39, %38 ], [ 0, %.loopexit ], [ 1, %4 ] ret i32 %.0 } diff --git a/bench/abc/optimized/extraUtilFile.ll b/bench/abc/optimized/extraUtilFile.ll index 6d0e951bfbd..99dd5967195 100644 --- a/bench/abc/optimized/extraUtilFile.ll +++ b/bench/abc/optimized/extraUtilFile.ll @@ -292,27 +292,37 @@ define noundef nonnull ptr @Extra_FileInTheSameDir(ptr noundef readonly captures tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 16 @Extra_FileInTheSameDir.pBuffer, ptr nonnull align 1 %0, i64 %3, i1 false) %4 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #23 %5 = getelementptr inbounds nuw i8, ptr @Extra_FileInTheSameDir.pBuffer, i64 %4 - br label %6 + %.not14 = icmp slt i64 %4, 1 + br i1 %.not14, label %._crit_edge19, label %.lr.ph.preheader -6: ; preds = %7, %2 - %.pn = phi ptr [ %5, %2 ], [ %.0, %7 ] - %.0 = getelementptr inbounds i8, ptr %.pn, i64 -1 - %.not = icmp ult ptr %.0, @Extra_FileInTheSameDir.pBuffer - br i1 %.not, label %9, label %7 +.lr.ph.preheader: ; preds = %2 + %.013 = getelementptr inbounds i8, ptr %5, i64 -1 + br label %.lr.ph -7: ; preds = %6 - %8 = load i8, ptr %.0, align 1, !tbaa !3 - switch i8 %8, label %6 [ - i8 92, label %9 - i8 47, label %9 +6: ; preds = %.lr.ph + %.0 = getelementptr inbounds i8, ptr %.016, i64 -1 + %.not = icmp ult ptr %.0, @Extra_FileInTheSameDir.pBuffer + br i1 %.not, label %._crit_edge19, label %.lr.ph, !llvm.loop !11 + +.lr.ph: ; preds = %.lr.ph.preheader, %6 + %.016 = phi ptr [ %.0, %6 ], [ %.013, %.lr.ph.preheader ] + %.pn15 = phi ptr [ %.016, %6 ], [ %5, %.lr.ph.preheader ] + %7 = load i8, ptr %.016, align 1, !tbaa !3 + switch i8 %7, label %6 [ + i8 92, label %._crit_edge + i8 47, label %._crit_edge ], !llvm.loop !11 -9: ; preds = %7, %7, %6 - %10 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #23 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.pn, ptr nonnull align 1 %1, i64 %10, i1 false) - %11 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #23 - %12 = getelementptr inbounds nuw i8, ptr %.pn, i64 %11 - store i8 0, ptr %12, align 1, !tbaa !3 +._crit_edge: ; preds = %.lr.ph, %.lr.ph + br label %._crit_edge19, !llvm.loop !11 + +._crit_edge19: ; preds = %6, %._crit_edge, %2 + %.pn.lcssa = phi ptr [ %.pn15, %._crit_edge ], [ %5, %2 ], [ %.016, %6 ] + %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #23 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.pn.lcssa, ptr nonnull align 1 %1, i64 %8, i1 false) + %9 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #23 + %10 = getelementptr inbounds nuw i8, ptr %.pn.lcssa, i64 %9 + store i8 0, ptr %10, align 1, !tbaa !3 ret ptr @Extra_FileInTheSameDir.pBuffer } diff --git a/bench/abseil-cpp/optimized/cord_rep_btree_navigator.ll b/bench/abseil-cpp/optimized/cord_rep_btree_navigator.ll index fea56cf7b5e..ae61078639d 100644 --- a/bench/abseil-cpp/optimized/cord_rep_btree_navigator.ll +++ b/bench/abseil-cpp/optimized/cord_rep_btree_navigator.ll @@ -58,18 +58,22 @@ define dso_local { ptr, i64 } @_ZN4absl13cord_internal21CordRepBtreeNavigator4Sk br i1 %21, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %14 - %22 = sext i32 %.03865 to i64 %smax = tail call i32 @llvm.smax.i32(i32 %.03865, i32 %11) %wide.trip.count = sext i32 %smax to i64 - br label %.lr.ph + %exitcond.not133.not = icmp slt i32 %.03865, %11 + br i1 %exitcond.not133.not, label %.lr.ph135, label %.loopexit50 + +.lr.ph135: ; preds = %.lr.ph.preheader + %22 = sext i32 %.03865 to i64 + br label %23 -.lr.ph: ; preds = %.lr.ph.preheader, %23 - %indvars.iv = phi i64 [ %22, %.lr.ph.preheader ], [ %indvars.iv.next, %23 ] - %exitcond.not = icmp eq i64 %indvars.iv, %wide.trip.count - br i1 %exitcond.not, label %.loopexit50, label %23 +.lr.ph: ; preds = %23 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond.not, label %.loopexit50, label %23, !llvm.loop !19 -23: ; preds = %.lr.ph - %indvars.iv.next = add nsw i64 %indvars.iv, 1 +23: ; preds = %.lr.ph135, %.lr.ph + %indvars.iv134 = phi i64 [ %22, %.lr.ph135 ], [ %indvars.iv.next, %.lr.ph ] + %indvars.iv.next = add nsw i64 %indvars.iv134, 1 %24 = getelementptr inbounds ptr, ptr %6, i64 %indvars.iv.next %25 = load ptr, ptr %24, align 8, !tbaa !7 %26 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv.next @@ -145,9 +149,9 @@ define dso_local { ptr, i64 } @_ZN4absl13cord_internal21CordRepBtreeNavigator4Sk store i8 %51, ptr %3, align 4, !tbaa !4 br label %.loopexit50 -.loopexit50: ; preds = %.lr.ph, %._crit_edge89 - %.sroa.0.0 = phi ptr [ %.1.lcssa, %._crit_edge89 ], [ null, %.lr.ph ] - %.sroa.3.0 = phi i64 [ %.142.lcssa, %._crit_edge89 ], [ %16, %.lr.ph ] +.loopexit50: ; preds = %.lr.ph.preheader, %.lr.ph, %._crit_edge89 + %.sroa.0.0 = phi ptr [ %.1.lcssa, %._crit_edge89 ], [ null, %.lr.ph ], [ null, %.lr.ph.preheader ] + %.sroa.3.0 = phi i64 [ %.142.lcssa, %._crit_edge89 ], [ %16, %.lr.ph ], [ %16, %.lr.ph.preheader ] %.fca.0.insert = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %.fca.1.insert = insertvalue { ptr, i64 } %.fca.0.insert, i64 %.sroa.3.0, 1 ret { ptr, i64 } %.fca.1.insert diff --git a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll index fea5224a07c..8077e7ec9eb 100644 --- a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll +++ b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll @@ -677,14 +677,11 @@ define internal fastcc void @"_ZN4core3ptr123drop_in_place$LT$alloc..vec..in_pla %16 = icmp ult i64 %15, -9223372036854775807 tail call void @llvm.assume(i1 %16) %17 = icmp eq i64 %13, 0 - br i1 %17, label %.body.i.i.preheader, label %18 - -.body.i.i.preheader: ; preds = %18, %10 - br label %.body.i.i + br i1 %17, label %.body.i.i, label %18 18: ; preds = %10 tail call void @__rust_dealloc(ptr noundef nonnull %.val8.i.i, i64 noundef range(i64 1, -9223372036854775808) %13, i64 noundef range(i64 1, -9223372036854775807) %15) #24, !noalias !276 - br label %.body.i.i.preheader + br label %.body.i.i 19: ; preds = %.lr.ph.i.i %20 = getelementptr inbounds nuw i8, ptr %.val9.i.i, i64 8 @@ -704,24 +701,28 @@ define internal fastcc void @"_ZN4core3ptr123drop_in_place$LT$alloc..vec..in_pla %27 = icmp eq i64 %7, %4 br i1 %27, label %"_ZN89_$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h199f6b020ba2db4fE.exit", label %.lr.ph.i.i -.body.i.i: ; preds = %.body.i.i.preheader, %29 - %.1.i.i = phi i64 [ %31, %29 ], [ %7, %.body.i.i.preheader ] - %28 = icmp eq i64 %.1.i.i, %4 - br i1 %28, label %33, label %29 - -29: ; preds = %.body.i.i - %30 = getelementptr inbounds { { { { ptr, ptr } }, {} }, {} }, ptr %.0.val, i64 %.1.i.i - %31 = add i64 %.1.i.i, 1 - %.val.i.i = load ptr, ptr %30, align 8, !alias.scope !276, !noundef !7 - %32 = getelementptr i8, ptr %30, i64 8 - %.val7.i.i = load ptr, ptr %32, align 8, !alias.scope !276, !nonnull !7, !align !22, !noundef !7 +28: ; preds = %.lr.ph12.i.i + %29 = add i64 %.111.i.i, 1 + %30 = icmp eq i64 %29, %4 + br i1 %30, label %._crit_edge13.i.i, label %.lr.ph12.i.i + +.body.i.i: ; preds = %18, %10 + %31 = icmp eq i64 %7, %4 + br i1 %31, label %._crit_edge13.i.i, label %.lr.ph12.i.i + +.lr.ph12.i.i: ; preds = %.body.i.i, %28 + %.111.i.i = phi i64 [ %29, %28 ], [ %7, %.body.i.i ] + %32 = getelementptr inbounds { { { { ptr, ptr } }, {} }, {} }, ptr %.0.val, i64 %.111.i.i + %.val.i.i = load ptr, ptr %32, align 8, !alias.scope !276, !noundef !7 + %33 = getelementptr i8, ptr %32, i64 8 + %.val7.i.i = load ptr, ptr %33, align 8, !alias.scope !276, !nonnull !7, !align !22, !noundef !7 invoke fastcc void @"_ZN4core3ptr77drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$17ha6966e6e168ed420E"(ptr %.val.i.i, ptr nonnull %.val7.i.i) #27 - to label %.body.i.i unwind label %34, !noalias !276 + to label %28 unwind label %34, !noalias !276 -33: ; preds = %.body.i.i +._crit_edge13.i.i: ; preds = %28, %.body.i.i resume { ptr, i32 } %11 -34: ; preds = %29 +34: ; preds = %.lr.ph12.i.i %35 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #26, !noalias !276 diff --git a/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll b/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll index 71b10df5ada..fd3f507f0e6 100644 --- a/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll +++ b/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll @@ -5504,7 +5504,7 @@ define void @_ZN9actix_web7request15HttpRequestPool5clear17h05fc4c2a5dccbeffE(pt 16: ; preds = %.lr.ph.i %17 = getelementptr inbounds nuw i8, ptr %12, i64 16 invoke void @"_ZN4core3ptr57drop_in_place$LT$actix_web..request..HttpRequestInner$GT$17h4ae6078b2d45952eE.llvm.11632439649900387884"(ptr noalias noundef nonnull align 8 dereferenceable(224) %17) - to label %.noexc.i unwind label %26, !noalias !984 + to label %.noexc.i unwind label %27, !noalias !984 .noexc.i: ; preds = %16 %18 = getelementptr inbounds nuw i8, ptr %12, i64 8 @@ -5522,23 +5522,24 @@ define void @_ZN9actix_web7request15HttpRequestPool5clear17h05fc4c2a5dccbeffE(pt %23 = icmp eq i64 %11, %8 br i1 %23, label %"_ZN4core3ptr88drop_in_place$LT$$u5b$alloc..rc..Rc$LT$actix_web..request..HttpRequestInner$GT$$u5d$$GT$17hbf08865e40507a4aE.exit.loopexit", label %.lr.ph.i -24: ; preds = %28, %26 - %.1.i = phi i64 [ %11, %26 ], [ %30, %28 ] - %25 = icmp eq i64 %.1.i, %8 - br i1 %25, label %36, label %28 +24: ; preds = %.lr.ph10.i + %25 = add i64 %.18.i, 1 + %26 = icmp eq i64 %25, %8 + br i1 %26, label %.loopexit, label %.lr.ph10.i -26: ; preds = %16 - %27 = landingpad { ptr, i32 } +27: ; preds = %16 + %28 = landingpad { ptr, i32 } cleanup - br label %24 + %29 = icmp eq i64 %11, %8 + br i1 %29, label %.loopexit, label %.lr.ph10.i -28: ; preds = %24 - %29 = getelementptr inbounds ptr, ptr %6, i64 %.1.i - %30 = add i64 %.1.i, 1 - invoke void @"_ZN4core3ptr78drop_in_place$LT$alloc..rc..Rc$LT$actix_web..request..HttpRequestInner$GT$$GT$17h04a2a33fc96f09d7E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %29) #31 +.lr.ph10.i: ; preds = %27, %24 + %.18.i = phi i64 [ %25, %24 ], [ %11, %27 ] + %30 = getelementptr inbounds ptr, ptr %6, i64 %.18.i + invoke void @"_ZN4core3ptr78drop_in_place$LT$alloc..rc..Rc$LT$actix_web..request..HttpRequestInner$GT$$GT$17h04a2a33fc96f09d7E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %30) #31 to label %24 unwind label %31 -31: ; preds = %28 +31: ; preds = %.lr.ph10.i %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #32 @@ -5558,11 +5559,11 @@ define void @_ZN9actix_web7request15HttpRequestPool5clear17h05fc4c2a5dccbeffE(pt store i64 %35, ptr %0, align 8, !noalias !994 ret void -36: ; preds = %24 - %37 = load i64, ptr %0, align 8, !noalias !1001, !noundef !4 - %38 = add i64 %37, 1 - store i64 %38, ptr %0, align 8, !noalias !1001 - resume { ptr, i32 } %27 +.loopexit: ; preds = %24, %27 + %36 = load i64, ptr %0, align 8, !noalias !1001, !noundef !4 + %37 = add i64 %36, 1 + store i64 %37, ptr %0, align 8, !noalias !1001 + resume { ptr, i32 } %28 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll b/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll index a13d43caa78..4834a788f74 100644 --- a/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll +++ b/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll @@ -3450,26 +3450,28 @@ define noundef zeroext i1 @"_ZN76_$LT$actix_router..resource..ResourceDef$u20$as %.not.i.i10.i = icmp eq i64 %.val7.i, %.val9.i br i1 %.not.i.i10.i, label %.preheader.split.i.i.i, label %"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit" -.preheader.split.i.i.i: ; preds = %14, %19 - %.sroa.01.0.i.i.i = phi i64 [ %20, %19 ], [ 0, %14 ] - %exitcond.not.i.i.i = icmp eq i64 %.sroa.01.0.i.i.i, %.val7.i - br i1 %exitcond.not.i.i.i, label %"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit", label %19 - -19: ; preds = %.preheader.split.i.i.i - %20 = add i64 %.sroa.01.0.i.i.i, 1 - %21 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val6.i, i64 %.sroa.01.0.i.i.i - %22 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val8.i, i64 %.sroa.01.0.i.i.i - %23 = tail call noundef zeroext i1 @"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17h5101c8de422f1c19E.llvm.3646540950948783737"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %21, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %22), !noalias !455 - br i1 %23, label %.preheader.split.i.i.i, label %"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit" - -"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit": ; preds = %.preheader.split.i.i.i, %19, %2, %7, %10, %14 - %.0.shrunk.i = phi i1 [ false, %2 ], [ %13, %10 ], [ false, %7 ], [ false, %14 ], [ %exitcond.not.i.i.i, %19 ], [ %exitcond.not.i.i.i, %.preheader.split.i.i.i ] - %24 = getelementptr inbounds nuw i8, ptr %0, i64 146 - %25 = load i8, ptr %24, align 2, !range !115 - %26 = getelementptr inbounds nuw i8, ptr %1, i64 146 - %27 = load i8, ptr %26, align 2, !range !115 - %28 = icmp eq i8 %25, %27 - %.0 = select i1 %.0.shrunk.i, i1 %28, i1 false +.preheader.split.i.i.i: ; preds = %14 + %.not12.i.i.i = icmp eq i64 %.val7.i, 0 + br i1 %.not12.i.i.i, label %"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit", label %.lr.ph.i.i.i + +.lr.ph.i.i.i: ; preds = %.preheader.split.i.i.i, %.lr.ph.i.i.i + %.sroa.01.09.i.i.i = phi i64 [ %22, %.lr.ph.i.i.i ], [ 0, %.preheader.split.i.i.i ] + %19 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val6.i, i64 %.sroa.01.09.i.i.i + %20 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val8.i, i64 %.sroa.01.09.i.i.i + %21 = tail call noundef zeroext i1 @"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17h5101c8de422f1c19E.llvm.3646540950948783737"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %20), !noalias !455 + %22 = add nuw i64 %.sroa.01.09.i.i.i, 1 + %exitcond.not.i.i.i = icmp ne i64 %22, %.val7.i + %or.cond.not = select i1 %21, i1 %exitcond.not.i.i.i, i1 false + br i1 %or.cond.not, label %.lr.ph.i.i.i, label %"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit" + +"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit": ; preds = %.lr.ph.i.i.i, %2, %7, %10, %14, %.preheader.split.i.i.i + %.0.shrunk.i = phi i1 [ false, %2 ], [ %13, %10 ], [ false, %7 ], [ false, %14 ], [ true, %.preheader.split.i.i.i ], [ %21, %.lr.ph.i.i.i ] + %23 = getelementptr inbounds nuw i8, ptr %0, i64 146 + %24 = load i8, ptr %23, align 2, !range !115 + %25 = getelementptr inbounds nuw i8, ptr %1, i64 146 + %26 = load i8, ptr %25, align 2, !range !115 + %27 = icmp eq i8 %24, %26 + %.0 = select i1 %.0.shrunk.i, i1 %27, i1 false ret i1 %.0 } diff --git a/bench/arrow/optimized/os.ll b/bench/arrow/optimized/os.ll index 9e024c0bf79..6c04f536d0d 100644 --- a/bench/arrow/optimized/os.ll +++ b/bench/arrow/optimized/os.ll @@ -1308,15 +1308,18 @@ define hidden range(i64 1, 0) i64 @_mi_os_numa_node_count_get() local_unnamed_ad 7: ; preds = %4 call void @llvm.lifetime.start.p0(ptr nonnull %1) - br label %8 + br label %9 -8: ; preds = %9, %7 - %.0.i = phi i32 [ 0, %7 ], [ %10, %9 ] - %exitcond.not.i = icmp eq i32 %.0.i, 256 - br i1 %exitcond.not.i, label %mi_os_numa_node_countx.exit, label %9 +8: ; preds = %9 + %exitcond.not.i = icmp eq i32 %10, 256 + br i1 %exitcond.not.i, label %._crit_edge.i, label %9, !llvm.loop !23 -9: ; preds = %8 - %10 = add nuw nsw i32 %.0.i, 1 +._crit_edge.i: ; preds = %8 + br label %mi_os_numa_node_countx.exit, !llvm.loop !23 + +9: ; preds = %8, %7 + %.04.i = phi i32 [ 0, %7 ], [ %10, %8 ] + %10 = add nuw nsw i32 %.04.i, 1 %11 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %1, i64 noundef 127, ptr noundef nonnull @.str.14, i32 noundef %10) #10 %12 = call i32 @access(ptr noundef nonnull %1, i32 noundef 4) #10 %.not.i = icmp eq i32 %12, 0 @@ -1326,8 +1329,8 @@ split.i: ; preds = %9 %13 = zext nneg i32 %10 to i64 br label %mi_os_numa_node_countx.exit -mi_os_numa_node_countx.exit: ; preds = %8, %split.i - %.0.lcssa.i = phi i64 [ %13, %split.i ], [ 257, %8 ] +mi_os_numa_node_countx.exit: ; preds = %._crit_edge.i, %split.i + %.0.lcssa.i = phi i64 [ 257, %._crit_edge.i ], [ %13, %split.i ] call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %14 diff --git a/bench/assimp/optimized/RemoveComments.ll b/bench/assimp/optimized/RemoveComments.ll index 7f7adda0584..d83f0b033c8 100644 --- a/bench/assimp/optimized/RemoveComments.ll +++ b/bench/assimp/optimized/RemoveComments.ll @@ -9,38 +9,38 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r %5 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #3 %spec.select = tail call i64 @llvm.umin.i64(i64 %4, i64 %5) %.not = icmp eq i64 %5, 0 - br i1 %.not, label %.critedge._crit_edge, label %.lr.ph53 + br i1 %.not, label %.critedge._crit_edge, label %.lr.ph59 -.lr.ph53: ; preds = %3, %.critedge2 - %.052 = phi i64 [ %25, %.critedge2 ], [ 0, %3 ] - %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.052 +.lr.ph59: ; preds = %3, %.critedge2 + %.058 = phi i64 [ %25, %.critedge2 ], [ 0, %3 ] + %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.058 %7 = load i8, ptr %6, align 1 switch i8 %7, label %.critedge [ i8 34, label %8 i8 39, label %8 ] -8: ; preds = %.lr.ph53, %.lr.ph53 - %9 = add nuw i64 %.052, 1 - %umax = tail call i64 @llvm.umax.i64(i64 %5, i64 %9) - br label %10 +8: ; preds = %.lr.ph59, %.lr.ph59 + %9 = add nuw i64 %.058, 1 + %10 = icmp ult i64 %9, %5 + br i1 %10, label %.lr.ph, label %.critedge -10: ; preds = %13, %8 - %.2 = phi i64 [ %.052, %8 ], [ %11, %13 ] - %11 = add nuw i64 %.2, 1 - %12 = icmp ult i64 %11, %5 - br i1 %12, label %13, label %.critedge +11: ; preds = %.lr.ph + %12 = add nuw i64 %13, 1 + %exitcond.not = icmp eq i64 %12, %5 + br i1 %exitcond.not, label %.critedge, label %.lr.ph -13: ; preds = %10 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 %11 +.lr.ph: ; preds = %8, %11 + %13 = phi i64 [ %12, %11 ], [ %9, %8 ] + %14 = getelementptr inbounds nuw i8, ptr %1, i64 %13 %15 = load i8, ptr %14, align 1 - switch i8 %15, label %10 [ + switch i8 %15, label %11 [ i8 34, label %.critedge i8 39, label %.critedge ] -.critedge: ; preds = %13, %13, %10, %.lr.ph53 - %.1 = phi i64 [ %.052, %.lr.ph53 ], [ %11, %13 ], [ %11, %13 ], [ %umax, %10 ] +.critedge: ; preds = %11, %.lr.ph, %.lr.ph, %8, %.lr.ph59 + %.1 = phi i64 [ %.058, %.lr.ph59 ], [ %9, %8 ], [ %5, %11 ], [ %13, %.lr.ph ], [ %13, %.lr.ph ] %16 = sub i64 %5, %.1 %17 = icmp ult i64 %16, %spec.select br i1 %17, label %.critedge._crit_edge, label %18 @@ -51,11 +51,11 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r %.not42 = icmp eq i32 %20, 0 %21 = icmp ult i64 %.1, %5 %or.cond = and i1 %.not42, %21 - br i1 %or.cond, label %.lr.ph, label %.critedge2 + br i1 %or.cond, label %.lr.ph48, label %.critedge2 -.lr.ph: ; preds = %18, %_ZN6Assimp9IsLineEndIcEEbT_.exit - %.343 = phi i64 [ %24, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.1, %18 ] - %22 = getelementptr inbounds nuw i8, ptr %1, i64 %.343 +.lr.ph48: ; preds = %18, %_ZN6Assimp9IsLineEndIcEEbT_.exit + %.347 = phi i64 [ %24, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.1, %18 ] + %22 = getelementptr inbounds nuw i8, ptr %1, i64 %.347 %23 = load i8, ptr %22, align 1 switch i8 %23, label %_ZN6Assimp9IsLineEndIcEEbT_.exit [ i8 13, label %.critedge2 @@ -64,17 +64,17 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r i8 12, label %.critedge2 ] -_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %.lr.ph - %24 = add i64 %.343, 1 +_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %.lr.ph48 + %24 = add i64 %.347, 1 store i8 %2, ptr %22, align 1 - %exitcond.not = icmp eq i64 %24, %5 - br i1 %exitcond.not, label %.critedge2, label %.lr.ph, !llvm.loop !3 + %exitcond60.not = icmp eq i64 %24, %5 + br i1 %exitcond60.not, label %.critedge2, label %.lr.ph48, !llvm.loop !3 -.critedge2: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %18 - %.4 = phi i64 [ %.1, %18 ], [ %5, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.343, %.lr.ph ], [ %.343, %.lr.ph ], [ %.343, %.lr.ph ], [ %.343, %.lr.ph ] +.critedge2: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit, %.lr.ph48, %.lr.ph48, %.lr.ph48, %.lr.ph48, %18 + %.4 = phi i64 [ %.1, %18 ], [ %5, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.347, %.lr.ph48 ], [ %.347, %.lr.ph48 ], [ %.347, %.lr.ph48 ], [ %.347, %.lr.ph48 ] %25 = add i64 %.4, 1 %26 = icmp ult i64 %25, %5 - br i1 %26, label %.lr.ph53, label %.critedge._crit_edge, !llvm.loop !5 + br i1 %26, label %.lr.ph59, label %.critedge._crit_edge, !llvm.loop !5 .critedge._crit_edge: ; preds = %.critedge2, %.critedge, %3 ret void @@ -169,9 +169,6 @@ define void @_ZN6Assimp14CommentRemover23RemoveMultiLineCommentsEPKcS2_Pcc(ptr n ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #2 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #2 - attributes #0 = { mustprogress nofree norecurse nounwind memory(argmem: 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 #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } diff --git a/bench/bdwgc/optimized/cordxtra.ll b/bench/bdwgc/optimized/cordxtra.ll index 2dc1202cac0..3da3782f783 100644 --- a/bench/bdwgc/optimized/cordxtra.ll +++ b/bench/bdwgc/optimized/cordxtra.ll @@ -895,21 +895,25 @@ define i64 @CORD_str(ptr noundef %0, i64 noundef %1, ptr noundef %2) local_unnam %.051.lcssa98 = phi i64 [ 0, %.preheader.thread ], [ %72, %.preheader ] %37 = and i64 %.050.lcssa99, %.049.lcssa100 %38 = icmp eq i64 %37, %.051.lcssa98 - br i1 %38, label %.loopexit, label %.lr.ph73 + br i1 %38, label %.loopexit, label %.lr.ph73.preheader -.lr.ph73: ; preds = %.preheader.split.us, %61 - %.0.us72 = phi i64 [ %62, %61 ], [ %1, %.preheader.split.us ] - %.1.us71 = phi i64 [ %56, %61 ], [ %.050.lcssa99, %.preheader.split.us ] - %39 = icmp eq i64 %.0.us72, %36 - br i1 %39, label %.loopexit, label %40 +.lr.ph73.preheader: ; preds = %.preheader.split.us + %39 = icmp eq i64 %1, %36 + br i1 %39, label %.loopexit, label %.lr.ph111 -40: ; preds = %.lr.ph73 - %41 = shl i64 %.1.us71, 8 +.lr.ph73: ; preds = %61 + %40 = icmp eq i64 %62, %36 + br i1 %40, label %.loopexit, label %.lr.ph111 + +.lr.ph111: ; preds = %.lr.ph73.preheader, %.lr.ph73 + %.1.us71110 = phi i64 [ %56, %.lr.ph73 ], [ %.050.lcssa99, %.lr.ph73.preheader ] + %.0.us72109 = phi i64 [ %62, %.lr.ph73 ], [ %1, %.lr.ph73.preheader ] + %41 = shl i64 %.1.us71110, 8 %42 = load i64, ptr %35, align 16, !tbaa !17 %.not60.us = icmp eq i64 %42, 0 br i1 %.not60.us, label %50, label %43 -43: ; preds = %40 +43: ; preds = %.lr.ph111 %44 = load ptr, ptr %34, align 16, !tbaa !19 %45 = load i64, ptr %4, align 16, !tbaa !18 %46 = load i64, ptr %33, align 8, !tbaa !20 @@ -918,7 +922,7 @@ define i64 @CORD_str(ptr noundef %0, i64 noundef %1, ptr noundef %2) local_unnam %49 = load i8, ptr %48, align 1, !tbaa !8 br label %52 -50: ; preds = %40 +50: ; preds = %.lr.ph111 %51 = call signext i8 @CORD__pos_fetch(ptr noundef nonnull %4) #16 %.pre83 = load i64, ptr %4, align 16, !tbaa !18 %.pre84 = load i64, ptr %35, align 16, !tbaa !17 @@ -943,7 +947,7 @@ define i64 @CORD_str(ptr noundef %0, i64 noundef %1, ptr noundef %2) local_unnam br label %61 61: ; preds = %60, %59 - %62 = add i64 %.0.us72, 1 + %62 = add i64 %.0.us72109, 1 %63 = and i64 %56, %.049.lcssa100 %64 = icmp eq i64 %63, %.051.lcssa98 br i1 %64, label %.loopexit, label %.lr.ph73 @@ -1063,8 +1067,8 @@ define i64 @CORD_str(ptr noundef %0, i64 noundef %1, ptr noundef %2) local_unnam %125 = add i64 %.0, 1 br label %.preheader.split -.loopexit: ; preds = %101, %97, %.lr.ph73, %61, %.preheader.split.us, %15, %3 - %.054 = phi i64 [ %1, %3 ], [ -1, %15 ], [ %1, %.preheader.split.us ], [ %62, %61 ], [ -1, %.lr.ph73 ], [ %.0, %97 ], [ -1, %101 ] +.loopexit: ; preds = %101, %97, %61, %.lr.ph73, %.lr.ph73.preheader, %.preheader.split.us, %15, %3 + %.054 = phi i64 [ %1, %3 ], [ -1, %15 ], [ %1, %.preheader.split.us ], [ -1, %.lr.ph73.preheader ], [ -1, %.lr.ph73 ], [ %62, %61 ], [ %.0, %97 ], [ -1, %101 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i64 %.054 } diff --git a/bench/boost/optimized/params_base.ll b/bench/boost/optimized/params_base.ll index 6e3d7fe268d..9f93c3a0932 100644 --- a/bench/boost/optimized/params_base.ll +++ b/bench/boost/optimized/params_base.ll @@ -990,25 +990,29 @@ _ZN5boost4urls7grammar6detail11ci_is_equalINS_4core17basic_string_viewIcEENS0_11 %49 = load i64, ptr %48, align 8, !tbaa !97 %50 = getelementptr inbounds nuw i8, ptr %44, i64 %49 %51 = icmp samesign eq i64 %46, 0 - br i1 %51, label %._crit_edge.i12, label %.lr.ph.i5 + br i1 %51, label %._crit_edge.i12, label %.lr.ph.i5.preheader + +.lr.ph.i5.preheader: ; preds = %38 + %52 = icmp samesign eq i64 %49, 0 + br i1 %52, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit, label %.lr.ph ._crit_edge.i12: ; preds = %63, %38 %.011.lcssa.i = phi ptr [ %44, %38 ], [ %66, %63 ] - %52 = icmp eq ptr %.011.lcssa.i, %50 + %53 = icmp eq ptr %.011.lcssa.i, %50 br label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit -.lr.ph.i5: ; preds = %38, %63 - %.01114.i = phi ptr [ %66, %63 ], [ %44, %38 ] - %53 = icmp eq ptr %.01114.i, %50 - br i1 %53, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit, label %54 +.lr.ph.i5: ; preds = %63 + %54 = icmp eq ptr %66, %50 + br i1 %54, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit, label %.lr.ph, !llvm.loop !109 -54: ; preds = %.lr.ph.i5 +.lr.ph: ; preds = %.lr.ph.i5.preheader, %.lr.ph.i5 + %.01114.i13 = phi ptr [ %66, %.lr.ph.i5 ], [ %44, %.lr.ph.i5.preheader ] %55 = call noundef signext i8 @_ZNK5boost4urls11decode_view8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(17) %3) #15 %56 = add i8 %55, -65 %or.cond.i.i6 = icmp ult i8 %56, 26 %57 = add nuw nsw i8 %55, 32 %58 = select i1 %or.cond.i.i6, i8 %57, i8 %55 - %59 = load i8, ptr %.01114.i, align 1, !tbaa !30 + %59 = load i8, ptr %.01114.i13, align 1, !tbaa !30 %60 = add i8 %59, -65 %or.cond.i12.i = icmp ult i8 %60, 26 %61 = add nuw nsw i8 %59, 32 @@ -1016,19 +1020,19 @@ _ZN5boost4urls7grammar6detail11ci_is_equalINS_4core17basic_string_viewIcEENS0_11 %.not.i7 = icmp eq i8 %58, %62 br i1 %.not.i7, label %63, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit -63: ; preds = %54 +63: ; preds = %.lr.ph %64 = load ptr, ptr %42, align 8, !tbaa !95 %65 = load i8, ptr %64, align 1, !tbaa !30 %.not.i.i9 = icmp eq i8 %65, 37 %storemerge.v.i.i10 = select i1 %.not.i.i9, i64 3, i64 1 %storemerge.i.i11 = getelementptr inbounds nuw i8, ptr %64, i64 %storemerge.v.i.i10 store ptr %storemerge.i.i11, ptr %42, align 8, !tbaa !95 - %66 = getelementptr inbounds nuw i8, ptr %.01114.i, i64 1 + %66 = getelementptr inbounds nuw i8, ptr %.01114.i13, i64 1 %67 = icmp eq ptr %storemerge.i.i11, %47 br i1 %67, label %._crit_edge.i12, label %.lr.ph.i5, !llvm.loop !109 -_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit: ; preds = %.lr.ph.i5, %54, %._crit_edge.i12 - %.0.i8 = phi i1 [ %52, %._crit_edge.i12 ], [ false, %54 ], [ false, %.lr.ph.i5 ] +_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit: ; preds = %.lr.ph, %.lr.ph.i5, %.lr.ph.i5.preheader, %._crit_edge.i12 + %.0.i8 = phi i1 [ %53, %._crit_edge.i12 ], [ false, %.lr.ph.i5.preheader ], [ false, %.lr.ph.i5 ], [ false, %.lr.ph ] call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %68 diff --git a/bench/boost/optimized/test_fs.ll b/bench/boost/optimized/test_fs.ll index b5405d481b6..822f21aed1a 100644 --- a/bench/boost/optimized/test_fs.ll +++ b/bench/boost/optimized/test_fs.ll @@ -9887,7 +9887,8 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN5 call void @llvm.experimental.noalias.scope.decl(metadata !288) %20 = load ptr, ptr %3, align 8, !tbaa !38, !noalias !291 %21 = load i64, ptr %8, align 8, !tbaa !41, !noalias !291 - %22 = getelementptr inbounds nuw i32, ptr %20, i64 %21 + %.idx.i.i = shl nuw nsw i64 %21, 2 + %22 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i call void @llvm.experimental.noalias.scope.decl(metadata !292) %23 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %23, ptr %6, align 8, !tbaa !10, !alias.scope !295 @@ -9895,16 +9896,20 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN5 store i64 0, ptr %24, align 8, !tbaa !17, !alias.scope !295 store i8 0, ptr %23, align 8, !tbaa !16, !alias.scope !295 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %21) - to label %.preheader.i.i.i unwind label %30 + to label %.preheader.i.preheader.i.i unwind label %30 -.preheader.i.i.i: ; preds = %19, %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i - %.0.i.i.i = phi ptr [ %25, %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i ], [ %20, %19 ] - %.not.i.i.i = icmp eq ptr %.0.i.i.i, %22 - br i1 %.not.i.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i +.preheader.i.preheader.i.i: ; preds = %19 + %.not.i3.i.i = icmp eq i64 %21, 0 + br i1 %.not.i3.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i -_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %.preheader.i.i.i - %25 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 4 - %26 = load i32, ptr %.0.i.i.i, align 4, !tbaa !135, !noalias !292 +.preheader.i.i.i: ; preds = %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i + %25 = getelementptr inbounds nuw i8, ptr %.0.i4.i.i, i64 4 + %.not.i.i.i = icmp eq ptr %25, %22 + br i1 %.not.i.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i, !llvm.loop !296 + +_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %.preheader.i.preheader.i.i, %.preheader.i.i.i + %.0.i4.i.i = phi ptr [ %25, %.preheader.i.i.i ], [ %20, %.preheader.i.preheader.i.i ] + %26 = load i32, ptr %.0.i4.i.i, align 4, !tbaa !135, !noalias !292 %27 = icmp ugt i32 %26, 1114111 %28 = and i32 %26, 2095104 %or.cond.i.i.i.i.i = icmp eq i32 %28, 55296 @@ -9935,7 +9940,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i call void @_ZdlPvm(ptr noundef %35, i64 noundef %38) #31 br label %.body -_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i +_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i, %.preheader.i.preheader.i.i %39 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %39, ptr %5, align 8, !tbaa !10 %40 = load ptr, ptr %6, align 8, !tbaa !14 @@ -11410,7 +11415,8 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN5 call void @llvm.experimental.noalias.scope.decl(metadata !332) %20 = load ptr, ptr %3, align 8, !tbaa !38, !noalias !335 %21 = load i64, ptr %8, align 8, !tbaa !41, !noalias !335 - %22 = getelementptr inbounds nuw i32, ptr %20, i64 %21 + %.idx.i.i = shl nuw nsw i64 %21, 2 + %22 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i call void @llvm.experimental.noalias.scope.decl(metadata !336) %23 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %23, ptr %6, align 8, !tbaa !10, !alias.scope !339 @@ -11418,16 +11424,20 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN5 store i64 0, ptr %24, align 8, !tbaa !17, !alias.scope !339 store i8 0, ptr %23, align 8, !tbaa !16, !alias.scope !339 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %21) - to label %.preheader.i.i.i unwind label %30 + to label %.preheader.i.preheader.i.i unwind label %30 + +.preheader.i.preheader.i.i: ; preds = %19 + %.not.i3.i.i = icmp eq i64 %21, 0 + br i1 %.not.i3.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i -.preheader.i.i.i: ; preds = %19, %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i - %.0.i.i.i = phi ptr [ %25, %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i ], [ %20, %19 ] - %.not.i.i.i = icmp eq ptr %.0.i.i.i, %22 - br i1 %.not.i.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i +.preheader.i.i.i: ; preds = %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i + %25 = getelementptr inbounds nuw i8, ptr %.0.i4.i.i, i64 4 + %.not.i.i.i = icmp eq ptr %25, %22 + br i1 %.not.i.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i, !llvm.loop !296 -_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %.preheader.i.i.i - %25 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 4 - %26 = load i32, ptr %.0.i.i.i, align 4, !tbaa !135, !noalias !336 +_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %.preheader.i.preheader.i.i, %.preheader.i.i.i + %.0.i4.i.i = phi ptr [ %25, %.preheader.i.i.i ], [ %20, %.preheader.i.preheader.i.i ] + %26 = load i32, ptr %.0.i4.i.i, align 4, !tbaa !135, !noalias !336 %27 = icmp ugt i32 %26, 1114111 %28 = and i32 %26, 2095104 %or.cond.i.i.i.i.i = icmp eq i32 %28, 55296 @@ -11452,7 +11462,7 @@ _ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds %36 = icmp eq ptr %35, %23 br i1 %36, label %.body, label %.body.sink.split -_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i +_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i, %.preheader.i.preheader.i.i %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %37, ptr %5, align 8, !tbaa !10 %38 = load ptr, ptr %6, align 8, !tbaa !14 diff --git a/bench/bullet3/optimized/poly34.ll b/bench/bullet3/optimized/poly34.ll index 48e3bddbc94..de91e7620a7 100644 --- a/bench/bullet3/optimized/poly34.ll +++ b/bench/bullet3/optimized/poly34.ll @@ -925,11 +925,11 @@ define dso_local noundef float @_Z9SolveP5_1fffff(float noundef %0, float nounde %36 = fcmp olt float %35, 0x3E80000000000000 br i1 %36, label %.loopexit, label %.preheader131 -.preheader: ; preds = %49 +.lr.ph: ; preds = %49 %37 = fmul float %0, 4.000000e+00 %38 = fmul float %1, 3.000000e+00 %39 = fmul float %2, 2.000000e+00 - br label %52 + br label %55 .preheader131: ; preds = %34, %49 %.1112139 = phi float [ %..1112, %49 ], [ %.0111, %34 ] @@ -952,54 +952,57 @@ define dso_local noundef float @_Z9SolveP5_1fffff(float noundef %0, float nounde %..1112 = select i1 %50, float %41, float %.1112139 %51 = add nuw nsw i32 %.0126137, 1 %exitcond.not = icmp eq i32 %51, 10 - br i1 %exitcond.not, label %.preheader, label %.preheader131, !llvm.loop !13 - -52: ; preds = %.preheader, %66 - %.1127 = phi i32 [ %53, %66 ], [ 10, %.preheader ] - %.3120 = phi float [ %.3120..4, %66 ], [ %.1118., %.preheader ] - %.3114 = phi float [ %.4..3114, %66 ], [ %..1112, %.preheader ] - %.2 = phi float [ %.5, %66 ], [ %41, %.preheader ] - %.0 = phi float [ %.1, %66 ], [ 0.000000e+00, %.preheader ] - %53 = add nuw nsw i32 %.1127, 1 - %exitcond143 = icmp eq i32 %.1127, 51 - br i1 %exitcond143, label %.loopexit, label %54 - -54: ; preds = %52 - %55 = fcmp ugt float %.2, %.3120 - %56 = fcmp ult float %.2, %.3114 - %or.cond = select i1 %55, i1 %56, i1 false - %57 = fadd float %.3120, %.3114 - %58 = fmul float %57, 5.000000e-01 - %.4 = select i1 %or.cond, float %.2, float %58 - %59 = fadd float %0, %.4 - %60 = tail call float @llvm.fmuladd.f32(float %59, float %.4, float %1) - %61 = tail call float @llvm.fmuladd.f32(float %60, float %.4, float %2) - %62 = tail call float @llvm.fmuladd.f32(float %61, float %.4, float %3) - %63 = tail call float @llvm.fmuladd.f32(float %62, float %.4, float %4) - %64 = tail call noundef float @llvm.fabs.f32(float %63) - %65 = fcmp olt float %64, 0x3E80000000000000 - br i1 %65, label %.loopexit, label %66 - -66: ; preds = %54 - %67 = fcmp ogt float %63, 0.000000e+00 - %.3120..4 = select i1 %67, float %.3120, float %.4 - %.4..3114 = select i1 %67, float %.4, float %.3114 - %68 = tail call float @llvm.fmuladd.f32(float %.4, float 5.000000e+00, float %37) - %69 = tail call float @llvm.fmuladd.f32(float %68, float %.4, float %38) - %70 = tail call float @llvm.fmuladd.f32(float %69, float %.4, float %39) - %71 = tail call float @llvm.fmuladd.f32(float %70, float %.4, float %3) - %72 = tail call noundef float @llvm.fabs.f32(float %71) - %73 = fcmp olt float %72, 0x3E80000000000000 - %74 = fdiv float %63, %71 - %75 = fsub float %.4, %74 - %.5 = select i1 %73, float 0x7FF0000000000000, float %75 - %.1 = select i1 %73, float %.0, float %74 - %76 = tail call noundef float @llvm.fabs.f32(float %.1) - %77 = fcmp ogt float %76, 0x3E80000000000000 - br i1 %77, label %52, label %.loopexit, !llvm.loop !14 - -.loopexit: ; preds = %.preheader131, %54, %52, %66, %32, %34, %5 - %.0106 = phi float [ 0.000000e+00, %5 ], [ %.0117, %32 ], [ %.0111, %34 ], [ %.5, %66 ], [ %.2, %52 ], [ %.4, %54 ], [ %41, %.preheader131 ] + br i1 %exitcond.not, label %.lr.ph, label %.preheader131, !llvm.loop !13 + +52: ; preds = %68 + %53 = fcmp ogt float %65, 0.000000e+00 + %.4..3114 = select i1 %53, float %.4, float %.3114141 + %.3120..4 = select i1 %53, float %.3120140, float %.4 + %54 = add nuw nsw i32 %56, 1 + %exitcond151 = icmp eq i32 %54, 52 + br i1 %exitcond151, label %.loopexit, label %55, !llvm.loop !14 + +55: ; preds = %.lr.ph, %52 + %56 = phi i32 [ 11, %.lr.ph ], [ %54, %52 ] + %.0143 = phi float [ 0.000000e+00, %.lr.ph ], [ %.1, %52 ] + %.2142 = phi float [ %41, %.lr.ph ], [ %.5, %52 ] + %.3114141 = phi float [ %..1112, %.lr.ph ], [ %.4..3114, %52 ] + %.3120140 = phi float [ %.1118., %.lr.ph ], [ %.3120..4, %52 ] + %57 = fcmp ugt float %.2142, %.3120140 + %58 = fcmp ult float %.2142, %.3114141 + %or.cond = select i1 %57, i1 %58, i1 false + %59 = fadd float %.3120140, %.3114141 + %60 = fmul float %59, 5.000000e-01 + %.4 = select i1 %or.cond, float %.2142, float %60 + %61 = fadd float %0, %.4 + %62 = tail call float @llvm.fmuladd.f32(float %61, float %.4, float %1) + %63 = tail call float @llvm.fmuladd.f32(float %62, float %.4, float %2) + %64 = tail call float @llvm.fmuladd.f32(float %63, float %.4, float %3) + %65 = tail call float @llvm.fmuladd.f32(float %64, float %.4, float %4) + %66 = tail call noundef float @llvm.fabs.f32(float %65) + %67 = fcmp olt float %66, 0x3E80000000000000 + br i1 %67, label %.loopexit, label %68 + +68: ; preds = %55 + %69 = tail call float @llvm.fmuladd.f32(float %.4, float 5.000000e+00, float %37) + %70 = tail call float @llvm.fmuladd.f32(float %69, float %.4, float %38) + %71 = tail call float @llvm.fmuladd.f32(float %70, float %.4, float %39) + %72 = tail call float @llvm.fmuladd.f32(float %71, float %.4, float %3) + %73 = tail call noundef float @llvm.fabs.f32(float %72) + %74 = fcmp olt float %73, 0x3E80000000000000 + %75 = fdiv float %65, %72 + %76 = fsub float %.4, %75 + %.5 = select i1 %74, float 0x7FF0000000000000, float %76 + %.1 = select i1 %74, float %.0143, float %75 + %77 = tail call noundef float @llvm.fabs.f32(float %.1) + %78 = fcmp ogt float %77, 0x3E80000000000000 + br i1 %78, label %52, label %..loopexit_crit_edge, !llvm.loop !14 + +..loopexit_crit_edge: ; preds = %68 + br label %.loopexit, !llvm.loop !14 + +.loopexit: ; preds = %.preheader131, %52, %55, %..loopexit_crit_edge, %32, %34, %5 + %.0106 = phi float [ 0.000000e+00, %5 ], [ %.0117, %32 ], [ %.0111, %34 ], [ %.5, %..loopexit_crit_edge ], [ %.5, %52 ], [ %.4, %55 ], [ %41, %.preheader131 ] ret float %.0106 } diff --git a/bench/c3c/optimized/sema_name_resolution.ll b/bench/c3c/optimized/sema_name_resolution.ll index bcf9466b81f..b3f7e327d2d 100644 --- a/bench/c3c/optimized/sema_name_resolution.ll +++ b/bench/c3c/optimized/sema_name_resolution.ll @@ -2035,24 +2035,31 @@ define dso_local noundef ptr @sema_find_label_symbol(ptr noundef readonly captur %10 = load i32, ptr %9, align 4 %11 = zext i32 %10 to i64 %12 = add i32 %7, -1 + %.not1617 = icmp ult i32 %12, %10 + br i1 %.not1617, label %.loopexit, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %8 %13 = zext i32 %12 to i64 - br label %14 + br label %.lr.ph -14: ; preds = %15, %8 - %.012 = phi i64 [ %13, %8 ], [ %16, %15 ] - %.not16 = icmp slt i64 %.012, %11 - br i1 %.not16, label %.loopexit, label %15 +14: ; preds = %.lr.ph + %15 = add nsw i64 %.01218, -1 + %.not16.not = icmp sgt i64 %.01218, %11 + br i1 %.not16.not, label %.lr.ph, label %.loopexit, !llvm.loop !25 -15: ; preds = %14 - %16 = add nsw i64 %.012, -1 - %17 = getelementptr inbounds nuw ptr, ptr %4, i64 %.012 +.lr.ph: ; preds = %.lr.ph.preheader, %14 + %.01218 = phi i64 [ %15, %14 ], [ %13, %.lr.ph.preheader ] + %16 = getelementptr inbounds nuw ptr, ptr %4, i64 %.01218 + %17 = load ptr, ptr %16, align 8 %18 = load ptr, ptr %17, align 8 - %19 = load ptr, ptr %18, align 8 - %20 = icmp eq ptr %19, %1 - br i1 %20, label %.loopexit, label %14, !llvm.loop !25 + %19 = icmp eq ptr %18, %1 + br i1 %19, label %..loopexit_crit_edge, label %14, !llvm.loop !25 -.loopexit: ; preds = %14, %15, %2, %5 - %.0 = phi ptr [ null, %5 ], [ null, %2 ], [ null, %14 ], [ %18, %15 ] +..loopexit_crit_edge: ; preds = %.lr.ph + br label %.loopexit, !llvm.loop !25 + +.loopexit: ; preds = %14, %8, %..loopexit_crit_edge, %2, %5 + %.0 = phi ptr [ null, %5 ], [ null, %2 ], [ %17, %..loopexit_crit_edge ], [ null, %8 ], [ null, %14 ] ret ptr %.0 } @@ -2072,23 +2079,23 @@ define dso_local noundef ptr @sema_find_label_symbol_anywhere(ptr noundef readon 8: ; preds = %5 %9 = add i32 %7, -1 %10 = zext i32 %9 to i64 - br label %11 + br label %14 -11: ; preds = %13, %8 - %.011 = phi i64 [ %10, %8 ], [ %14, %13 ] - %12 = icmp sgt i64 %.011, -1 - br i1 %12, label %13, label %.loopexit +11: ; preds = %14 + %12 = add nsw i64 %.01115, -1 + %13 = icmp sgt i64 %.01115, 0 + br i1 %13, label %14, label %.loopexit, !llvm.loop !26 -13: ; preds = %11 - %14 = add nsw i64 %.011, -1 - %15 = getelementptr inbounds nuw ptr, ptr %4, i64 %.011 +14: ; preds = %8, %11 + %.01115 = phi i64 [ %10, %8 ], [ %12, %11 ] + %15 = getelementptr inbounds nuw ptr, ptr %4, i64 %.01115 %16 = load ptr, ptr %15, align 8 %17 = load ptr, ptr %16, align 8 %18 = icmp eq ptr %17, %1 br i1 %18, label %.loopexit, label %11, !llvm.loop !26 -.loopexit: ; preds = %11, %13, %2, %5 - %.0 = phi ptr [ null, %5 ], [ null, %2 ], [ null, %11 ], [ %16, %13 ] +.loopexit: ; preds = %11, %14, %2, %5 + %.0 = phi ptr [ null, %5 ], [ null, %2 ], [ null, %11 ], [ %16, %14 ] ret ptr %.0 } diff --git a/bench/c3c/optimized/whereami.ll b/bench/c3c/optimized/whereami.ll index 6fca5b8ccb2..cc3684124c5 100644 --- a/bench/c3c/optimized/whereami.ll +++ b/bench/c3c/optimized/whereami.ll @@ -17,7 +17,7 @@ define dso_local noundef ptr @find_executable_path() local_unnamed_addr #0 { get_executable_path_raw.exit.thread: ; preds = %0 call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %28 + br label %27 get_executable_path_raw.exit.thread33: ; preds = %0 %4 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #8 @@ -50,7 +50,7 @@ get_executable_path_raw.exit31: ; preds = %get_executable_path %16 = getelementptr inbounds nuw i8, ptr %8, i64 %15 store i8 0, ptr %16, align 1 %.not = icmp slt i32 %5, 1 - br i1 %.not, label %.preheader.preheader, label %.lr.ph + br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %get_executable_path_raw.exit31, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %get_executable_path_raw.exit31 ] @@ -61,37 +61,34 @@ get_executable_path_raw.exit31: ; preds = %get_executable_path store i8 %spec.store.select, ptr %17, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %15 - br i1 %exitcond.not, label %.preheader.preheader, label %.lr.ph, !llvm.loop !7 + br i1 %exitcond.not, label %.lr.ph39, label %.lr.ph, !llvm.loop !7 -.preheader.preheader: ; preds = %.lr.ph, %get_executable_path_raw.exit31 - br label %.preheader +20: ; preds = %.lr.ph39 + %21 = icmp samesign ugt i64 %indvars.iv42, 1 + br i1 %21, label %.lr.ph39, label %._crit_edge, !llvm.loop !9 -.preheader: ; preds = %.preheader.preheader, %21 - %indvars.iv40 = phi i64 [ %indvars.iv.next41, %21 ], [ %15, %.preheader.preheader ] - %20 = icmp sgt i64 %indvars.iv40, 0 - br i1 %20, label %21, label %27 - -21: ; preds = %.preheader - %indvars.iv.next41 = add nsw i64 %indvars.iv40, -1 - %22 = getelementptr inbounds nuw i8, ptr %8, i64 %indvars.iv.next41 +.lr.ph39: ; preds = %.lr.ph, %20 + %indvars.iv42 = phi i64 [ %indvars.iv.next43, %20 ], [ %15, %.lr.ph ] + %indvars.iv.next43 = add nsw i64 %indvars.iv42, -1 + %22 = getelementptr inbounds nuw i8, ptr %8, i64 %indvars.iv.next43 %23 = load i8, ptr %22, align 1 - switch i8 %23, label %.preheader [ + switch i8 %23, label %20 [ i8 47, label %24 i8 92, label %24 ], !llvm.loop !9 -24: ; preds = %21, %21 - %25 = and i64 %indvars.iv40, 4294967295 +24: ; preds = %.lr.ph39, %.lr.ph39 + %25 = and i64 %indvars.iv42, 4294967295 %26 = getelementptr inbounds nuw i8, ptr %8, i64 %25 store i8 0, ptr %26, align 1 - br label %28 + br label %27 -27: ; preds = %.preheader +._crit_edge: ; preds = %20, %get_executable_path_raw.exit31 store i8 0, ptr %16, align 1 - br label %28 + br label %27 -28: ; preds = %get_executable_path_raw.exit.thread, %27, %24 - %.025 = phi ptr [ %8, %24 ], [ %8, %27 ], [ @.str, %get_executable_path_raw.exit.thread ] +27: ; preds = %get_executable_path_raw.exit.thread, %._crit_edge, %24 + %.025 = phi ptr [ %8, %24 ], [ %8, %._crit_edge ], [ @.str, %get_executable_path_raw.exit.thread ] ret ptr %.025 } diff --git a/bench/casadi/optimized/cs_amd.ll b/bench/casadi/optimized/cs_amd.ll index a3f0df438cb..7e90189a91c 100644 --- a/bench/casadi/optimized/cs_amd.ll +++ b/bench/casadi/optimized/cs_amd.ll @@ -1040,18 +1040,22 @@ cs_wclear.exit832: ; preds = %406 .lr.ph963: ; preds = %455 %459 = load i32, ptr %458, align 4, !tbaa !13 %460 = add i32 %436, %459 - %461 = sext i32 %459 to i64 %smax = tail call i32 @llvm.smax.i32(i32 %459, i32 %460) %wide.trip.count1079 = sext i32 %smax to i64 - br label %462 + %exitcond1080.not1236.not = icmp slt i32 %459, %460 + br i1 %exitcond1080.not1236.not, label %select.unfold.lr.ph, label %.critedge9 + +select.unfold.lr.ph: ; preds = %.lr.ph963 + %461 = sext i32 %459 to i64 + br label %select.unfold -462: ; preds = %.lr.ph963, %select.unfold - %indvars.iv1076 = phi i64 [ %461, %.lr.ph963 ], [ %indvars.iv.next1077, %select.unfold ] - %exitcond1080.not = icmp eq i64 %indvars.iv1076, %wide.trip.count1079 +462: ; preds = %select.unfold + %exitcond1080.not = icmp eq i64 %indvars.iv.next1077, %wide.trip.count1079 br i1 %exitcond1080.not, label %.critedge9, label %select.unfold -select.unfold: ; preds = %462 - %indvars.iv.next1077 = add nsw i64 %indvars.iv1076, 1 +select.unfold: ; preds = %select.unfold.lr.ph, %462 + %indvars.iv10761237 = phi i64 [ %461, %select.unfold.lr.ph ], [ %indvars.iv.next1077, %462 ] + %indvars.iv.next1077 = add nsw i64 %indvars.iv10761237, 1 %463 = getelementptr inbounds i32, ptr %142, i64 %indvars.iv.next1077 %464 = load i32, ptr %463, align 4, !tbaa !13 %465 = sext i32 %464 to i64 @@ -1060,7 +1064,7 @@ select.unfold: ; preds = %462 %.not799.not = icmp eq i32 %467, %.3724971 br i1 %.not799.not, label %462, label %.critedge812 -.critedge9: ; preds = %462 +.critedge9: ; preds = %462, %.lr.ph963 store i32 %448, ptr %458, align 4, !tbaa !13 %468 = getelementptr inbounds i32, ptr %85, i64 %451 %469 = load i32, ptr %468, align 4, !tbaa !13 diff --git a/bench/chibicc/optimized/tokenize.ll b/bench/chibicc/optimized/tokenize.ll index 67a97f6058b..fde7a5ebfdf 100644 --- a/bench/chibicc/optimized/tokenize.ll +++ b/bench/chibicc/optimized/tokenize.ll @@ -176,56 +176,67 @@ define dso_local void @error_at(ptr noundef %0, ptr noundef readonly captures(no ; Function Attrs: nounwind uwtable define internal fastcc void @verror_at(ptr noundef %0, ptr noundef readnone captures(address) %1, i32 noundef %2, ptr noundef %3, ptr noundef readonly captures(none) %4, ptr noundef nonnull %5) unnamed_addr #5 { - br label %7 - -7: ; preds = %9, %6 - %.0 = phi ptr [ %3, %6 ], [ %10, %9 ] - %8 = icmp ult ptr %1, %.0 - br i1 %8, label %9, label %.critedge.preheader - -9: ; preds = %7 - %10 = getelementptr inbounds i8, ptr %.0, i64 -1 - %11 = load i8, ptr %10, align 1, !tbaa !18 - %.not = icmp eq i8 %11, 10 - br i1 %.not, label %.critedge.preheader, label %7, !llvm.loop !21 - -.critedge.preheader: ; preds = %7, %9 - br label %.critedge - -.critedge: ; preds = %.critedge.preheader, %13 - %.022 = phi ptr [ %14, %13 ], [ %3, %.critedge.preheader ] - %12 = load i8, ptr %.022, align 1, !tbaa !18 - switch i8 %12, label %13 [ + %7 = ptrtoint ptr %3 to i64 + %8 = icmp ult ptr %1, %3 + br i1 %8, label %.lr.ph.preheader, label %.critedge + +.lr.ph.preheader: ; preds = %6 + %9 = ptrtoint ptr %1 to i64 + %10 = sub i64 %9, %7 + %scevgep = getelementptr i8, ptr %3, i64 %10 + br label %.lr.ph + +11: ; preds = %.lr.ph + %12 = icmp ult ptr %1, %13 + br i1 %12, label %.lr.ph, label %.critedge, !llvm.loop !21 + +.lr.ph: ; preds = %.lr.ph.preheader, %11 + %.026 = phi ptr [ %13, %11 ], [ %3, %.lr.ph.preheader ] + %13 = getelementptr inbounds i8, ptr %.026, i64 -1 + %14 = load i8, ptr %13, align 1, !tbaa !18 + %.not = icmp eq i8 %14, 10 + br i1 %.not, label %..critedge_crit_edge27, label %11, !llvm.loop !21 + +..critedge_crit_edge27: ; preds = %.lr.ph + br label %.critedge, !llvm.loop !21 + +.critedge: ; preds = %11, %..critedge_crit_edge27, %6 + %.0.lcssa = phi ptr [ %.026, %..critedge_crit_edge27 ], [ %3, %6 ], [ %scevgep, %11 ] + br label %15 + +15: ; preds = %17, %.critedge + %.022 = phi ptr [ %3, %.critedge ], [ %18, %17 ] + %16 = load i8, ptr %.022, align 1, !tbaa !18 + switch i8 %16, label %17 [ i8 0, label %.critedge2 i8 10, label %.critedge2 ] -13: ; preds = %.critedge - %14 = getelementptr inbounds nuw i8, ptr %.022, i64 1 - br label %.critedge, !llvm.loop !22 - -.critedge2: ; preds = %.critedge, %.critedge - %15 = load ptr, ptr @stderr, align 8, !tbaa !7 - %16 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.17, ptr noundef %0, i32 noundef %2) #25 - %17 = load ptr, ptr @stderr, align 8, !tbaa !7 - %18 = ptrtoint ptr %.022 to i64 - %19 = ptrtoint ptr %.0 to i64 - %20 = sub i64 %18, %19 - %21 = trunc i64 %20 to i32 - %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %17, ptr noundef nonnull @.str.18, i32 noundef %21, ptr noundef %.0) #25 - %23 = ptrtoint ptr %3 to i64 - %24 = sub i64 %23, %19 +17: ; preds = %15 + %18 = getelementptr inbounds nuw i8, ptr %.022, i64 1 + br label %15, !llvm.loop !22 + +.critedge2: ; preds = %15, %15 + %19 = load ptr, ptr @stderr, align 8, !tbaa !7 + %20 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef nonnull @.str.17, ptr noundef %0, i32 noundef %2) #25 + %21 = load ptr, ptr @stderr, align 8, !tbaa !7 + %22 = ptrtoint ptr %.022 to i64 + %23 = ptrtoint ptr %.0.lcssa to i64 + %24 = sub i64 %22, %23 %25 = trunc i64 %24 to i32 - %26 = tail call i32 @display_width(ptr noundef %.0, i32 noundef %25) #27 - %27 = add nsw i32 %26, %16 - %28 = load ptr, ptr @stderr, align 8, !tbaa !7 - %29 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %28, ptr noundef nonnull @.str.19, i32 noundef %27, ptr noundef nonnull @.str.20) #25 - %30 = load ptr, ptr @stderr, align 8, !tbaa !7 - %31 = tail call i64 @fwrite(ptr nonnull @.str.21, i64 2, i64 1, ptr %30) #28 - %32 = load ptr, ptr @stderr, align 8, !tbaa !7 - %33 = tail call i32 @vfprintf(ptr noundef %32, ptr noundef %4, ptr noundef nonnull %5) #25 - %34 = load ptr, ptr @stderr, align 8, !tbaa !7 - %fputc = tail call i32 @fputc(i32 10, ptr %34) + %26 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %21, ptr noundef nonnull @.str.18, i32 noundef %25, ptr noundef %.0.lcssa) #25 + %27 = sub i64 %7, %23 + %28 = trunc i64 %27 to i32 + %29 = tail call i32 @display_width(ptr noundef %.0.lcssa, i32 noundef %28) #27 + %30 = add nsw i32 %29, %20 + %31 = load ptr, ptr @stderr, align 8, !tbaa !7 + %32 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull @.str.19, i32 noundef %30, ptr noundef nonnull @.str.20) #25 + %33 = load ptr, ptr @stderr, align 8, !tbaa !7 + %34 = tail call i64 @fwrite(ptr nonnull @.str.21, i64 2, i64 1, ptr %33) #28 + %35 = load ptr, ptr @stderr, align 8, !tbaa !7 + %36 = tail call i32 @vfprintf(ptr noundef %35, ptr noundef %4, ptr noundef nonnull %5) #25 + %37 = load ptr, ptr @stderr, align 8, !tbaa !7 + %fputc = tail call i32 @fputc(i32 10, ptr %37) ret void } diff --git a/bench/clamav/optimized/macho.ll b/bench/clamav/optimized/macho.ll index 1740fa2a697..7de0f210a20 100644 --- a/bench/clamav/optimized/macho.ll +++ b/bench/clamav/optimized/macho.ll @@ -1091,8 +1091,8 @@ fmap_readn.exit.thread: ; preds = %8, %1, %fmap_readn. br label %.loopexit 17: ; preds = %14 - %.4..4..4..sroa_idx79 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %.4..4..4.55 = load i32, ptr %.4..4..4..sroa_idx79, align 4, !tbaa !57 + %.4..4..4..sroa_idx88 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %.4..4..4.55 = load i32, ptr %.4..4..4..sroa_idx88, align 4, !tbaa !57 %18 = tail call i32 @llvm.bswap.i32(i32 %.4..4..4.55) br label %19 @@ -1117,28 +1117,32 @@ fmap_readn.exit.thread: ; preds = %8, %1, %fmap_readn. 26: ; preds = %23 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.49, i32 noundef %20) #8 + %.not69 = icmp eq i32 %20, 0 + br i1 %.not69, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %26 %.8..8..8..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 - %.8..8..8..sroa_idx77 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %.8..8..8..sroa_idx86 = getelementptr inbounds nuw i8, ptr %3, i64 8 %.12..12..12..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 12 - %.12..12..12..sroa_idx78 = getelementptr inbounds nuw i8, ptr %3, i64 12 - br label %27 + %.12..12..12..sroa_idx87 = getelementptr inbounds nuw i8, ptr %3, i64 12 + br label %28 -27: ; preds = %62, %26 - %.022 = phi i32 [ 0, %26 ], [ %49, %62 ] - %.0 = phi i64 [ 8, %26 ], [ %44, %62 ] - %exitcond.not = icmp eq i32 %.022, %20 +27: ; preds = %62 + %exitcond.not = icmp eq i32 %49, %20 br i1 %exitcond.not, label %.loopexit, label %28 -28: ; preds = %27 +28: ; preds = %.lr.ph, %27 + %.066 = phi i64 [ 8, %.lr.ph ], [ %44, %27 ] + %.02265 = phi i32 [ 0, %.lr.ph ], [ %49, %27 ] %29 = load i64, ptr %6, align 8, !tbaa !31 - %or.cond.not = icmp ult i64 %.0, %29 + %or.cond.not = icmp ult i64 %.066, %29 br i1 %or.cond.not, label %30, label %fmap_readn.exit39.thread 30: ; preds = %28 - %31 = sub nuw i64 %29, %.0 + %31 = sub nuw i64 %29, %.066 %spec.select.i36 = tail call i64 @llvm.umin.i64(i64 %31, i64 20) %32 = load ptr, ptr %9, align 8, !tbaa !33 - %33 = tail call ptr %32(ptr noundef nonnull %5, i64 noundef %.0, i64 noundef %spec.select.i36, i32 noundef 0) #8 + %33 = tail call ptr %32(ptr noundef nonnull %5, i64 noundef %.066, i64 noundef %spec.select.i36, i32 noundef 0) #8 %.not26.i37 = icmp eq ptr %33, null br i1 %.not26.i37, label %fmap_readn.exit39.thread, label %fmap_readn.exit39 @@ -1166,16 +1170,16 @@ fmap_readn.exit39.thread: ; preds = %30, %28, %fmap_read br label %.loopexit 43: ; preds = %fmap_readn.exit39 - %44 = add nuw nsw i64 %.0, 20 + %44 = add nuw nsw i64 %.066, 20 %.8..8..8.41 = load i32, ptr %.8..8..8..sroa_idx, align 4 %45 = tail call i32 @llvm.bswap.i32(i32 %.8..8..8.41) %46 = select i1 %13, i32 %.8..8..8.41, i32 %45 - store i32 %46, ptr %.8..8..8..sroa_idx77, align 4, !tbaa !58 + store i32 %46, ptr %.8..8..8..sroa_idx86, align 4, !tbaa !58 %.12..12..12.48 = load i32, ptr %.12..12..12..sroa_idx, align 4 %47 = tail call i32 @llvm.bswap.i32(i32 %.12..12..12.48) %48 = select i1 %13, i32 %.12..12..12.48, i32 %47 - store i32 %48, ptr %.12..12..12..sroa_idx78, align 4, !tbaa !60 - %49 = add nuw nsw i32 %.022, 1 + store i32 %48, ptr %.12..12..12..sroa_idx87, align 4, !tbaa !60 + %49 = add nuw nsw i32 %.02265, 1 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.51, i32 noundef %49, i32 noundef %20) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.52, i32 noundef %46) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.53, i32 noundef %48) #8 @@ -1207,8 +1211,8 @@ fmap_readn.exit39.thread: ; preds = %30, %28, %fmap_read %.not32 = icmp eq i32 %64, 0 br i1 %.not32, label %27, label %.loopexit -.loopexit: ; preds = %27, %62, %58, %39, %19, %61, %42, %25, %16, %fmap_readn.exit.thread - %.020 = phi i32 [ 26, %fmap_readn.exit.thread ], [ 26, %25 ], [ 26, %42 ], [ 26, %61 ], [ 26, %16 ], [ 0, %19 ], [ 1, %39 ], [ 1, %58 ], [ 0, %27 ], [ %64, %62 ] +.loopexit: ; preds = %62, %27, %26, %58, %39, %19, %61, %42, %25, %16, %fmap_readn.exit.thread + %.020 = phi i32 [ 26, %fmap_readn.exit.thread ], [ 26, %25 ], [ 26, %42 ], [ 26, %61 ], [ 26, %16 ], [ 0, %19 ], [ 1, %39 ], [ 1, %58 ], [ 0, %26 ], [ %64, %62 ], [ 0, %27 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.020 diff --git a/bench/clamav/optimized/special.ll b/bench/clamav/optimized/special.ll index 0b1f5b28306..73b412d1b9b 100644 --- a/bench/clamav/optimized/special.ll +++ b/bench/clamav/optimized/special.ll @@ -52,29 +52,25 @@ define i32 @cli_check_mydoom_log(ptr noundef %0) local_unnamed_addr #0 { %14 = load ptr, ptr %13, align 8, !tbaa !25 %15 = tail call ptr %14(ptr noundef nonnull %4, i64 noundef 0, i64 noundef range(i64 0, 4294967296) %12, i32 noundef 0) #7 %.not = icmp eq ptr %15, null - br i1 %.not, label %.loopexit, label %.preheader.preheader + br i1 %.not, label %.loopexit, label %.preheader -.preheader.preheader: ; preds = %10 - %16 = and i64 %7, 4294967295 - %umin = tail call i64 @llvm.umin.i64(i64 %16, i64 5) - br label %.preheader +16: ; preds = %.preheader + %.not82 = icmp eq i32 %17, 0 + br i1 %.not82, label %20, label %.preheader -.preheader: ; preds = %.preheader.preheader, %17 - %indvars.iv = phi i64 [ %umin, %.preheader.preheader ], [ %18, %17 ] - %.not82 = icmp eq i64 %indvars.iv, 0 - br i1 %.not82, label %20, label %17 - -17: ; preds = %.preheader +.preheader: ; preds = %10, %16 + %.07986 = phi i32 [ %17, %16 ], [ %spec.store.select, %10 ] call void @llvm.lifetime.start.p0(ptr nonnull %2) store i32 -1, ptr %2, align 4, !tbaa !26 - %18 = add nsw i64 %indvars.iv, -1 + %17 = add nsw i32 %.07986, -1 + %18 = zext nneg i32 %17 to i64 %19 = getelementptr inbounds nuw i32, ptr %15, i64 %18 %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) %2, i64 4) %.not85.not = icmp eq i32 %bcmp, 0 call void @llvm.lifetime.end.p0(ptr nonnull %2) - br i1 %.not85.not, label %.loopexit, label %.preheader + br i1 %.not85.not, label %.loopexit, label %16 -20: ; preds = %.preheader +20: ; preds = %16 %.sroa.0.0.copyload = load i32, ptr %15, align 4 %.sroa.7.0..0.27.sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 4 %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..0.27.sroa_idx, align 4 @@ -163,8 +159,8 @@ define i32 @cli_check_mydoom_log(ptr noundef %0) local_unnamed_addr #0 { %69 = tail call i32 @cli_append_potentially_unwanted(ptr noundef %0, ptr noundef nonnull @.str.1) #7 br label %.loopexit -.loopexit: ; preds = %17, %44, %20, %10, %1, %68 - %.080 = phi i32 [ %69, %68 ], [ 0, %1 ], [ 0, %10 ], [ 0, %20 ], [ 0, %44 ], [ 0, %17 ] +.loopexit: ; preds = %.preheader, %44, %20, %10, %1, %68 + %.080 = phi i32 [ %69, %68 ], [ 0, %1 ], [ 0, %10 ], [ 0, %20 ], [ 0, %44 ], [ 0, %.preheader ] ret i32 %.080 } @@ -820,9 +816,6 @@ declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_add ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.umin.i8(i8, i8) #5 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #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 = { "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 nosync nounwind willreturn memory(none) "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/cmake/optimized/block_decoder.ll b/bench/cmake/optimized/block_decoder.ll index 1b2d9d34813..6d21654dd7f 100644 --- a/bench/cmake/optimized/block_decoder.ll +++ b/bench/cmake/optimized/block_decoder.ll @@ -131,11 +131,11 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no %10 = load i32, ptr %0, align 8, !tbaa !18 switch i32 %10, label %.thread [ i32 0, label %11 - i32 1, label %._crit_edge + i32 1, label %._crit_edge125 i32 2, label %109 ] -._crit_edge: ; preds = %9 +._crit_edge125: ; preds = %9 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 96 %.promoted.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !33 br label %84 @@ -242,33 +242,39 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no store i32 1, ptr %0, align 8, !tbaa !18 br label %84 -84: ; preds = %._crit_edge, %83 - %.promoted = phi i64 [ %.promoted.pre, %._crit_edge ], [ %68, %83 ] +84: ; preds = %._crit_edge125, %83 + %.promoted = phi i64 [ %.promoted.pre, %._crit_edge125 ], [ %68, %83 ] %85 = getelementptr inbounds nuw i8, ptr %0, i64 96 - br label %86 + %86 = and i64 %.promoted, 3 + %.not112123 = icmp eq i64 %86, 0 + br i1 %.not112123, label %._crit_edge, label %.lr.ph -86: ; preds = %91, %84 - %87 = phi i64 [ %92, %91 ], [ %.promoted, %84 ] - %88 = and i64 %87, 3 +.lr.ph: ; preds = %84 + %.promoted124 = load i64, ptr %3, align 8, !tbaa !17 + br label %89 + +87: ; preds = %92 + %88 = and i64 %93, 3 %.not112 = icmp eq i64 %88, 0 - br i1 %.not112, label %96, label %89 + br i1 %.not112, label %._crit_edge, label %89, !llvm.loop !39 -89: ; preds = %86 - %90 = load i64, ptr %3, align 8, !tbaa !17 +89: ; preds = %.lr.ph, %87 + %90 = phi i64 [ %.promoted124, %.lr.ph ], [ %94, %87 ] + %91 = phi i64 [ %.promoted, %.lr.ph ], [ %93, %87 ] %.not115 = icmp ult i64 %90, %4 - br i1 %.not115, label %91, label %.thread - -91: ; preds = %89 - %92 = add i64 %87, 1 - store i64 %92, ptr %85, align 8, !tbaa !33 - %93 = add nuw i64 %90, 1 - store i64 %93, ptr %3, align 8, !tbaa !17 - %94 = getelementptr inbounds nuw i8, ptr %2, i64 %90 - %95 = load i8, ptr %94, align 1, !tbaa !39 - %.not116 = icmp eq i8 %95, 0 - br i1 %.not116, label %86, label %.thread, !llvm.loop !40 - -96: ; preds = %86 + br i1 %.not115, label %92, label %.thread + +92: ; preds = %89 + %93 = add i64 %91, 1 + store i64 %93, ptr %85, align 8, !tbaa !33 + %94 = add nuw i64 %90, 1 + store i64 %94, ptr %3, align 8, !tbaa !17 + %95 = getelementptr inbounds nuw i8, ptr %2, i64 %90 + %96 = load i8, ptr %95, align 1, !tbaa !41 + %.not116 = icmp eq i8 %96, 0 + br i1 %.not116, label %87, label %.thread, !llvm.loop !39 + +._crit_edge: ; preds = %87, %84 %97 = getelementptr inbounds nuw i8, ptr %0, i64 88 %98 = load ptr, ptr %97, align 8, !tbaa !22 %99 = getelementptr inbounds nuw i8, ptr %98, i64 8 @@ -276,7 +282,7 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no %101 = icmp eq i32 %100, 0 br i1 %101, label %.thread, label %102 -102: ; preds = %96 +102: ; preds = %._crit_edge %103 = getelementptr inbounds nuw i8, ptr %0, i64 240 %104 = load i8, ptr %103, align 8, !tbaa !31, !range !37, !noundef !38 %105 = trunc nuw i8 %104 to i1 @@ -329,8 +335,8 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no 133: ; preds = %130, %125, %121 br label %.thread -.thread: ; preds = %91, %89, %67, %76, %66, %43, %9, %133, %109, %130, %96 - %.3 = phi i32 [ 1, %96 ], [ 1, %133 ], [ 0, %109 ], [ 9, %130 ], [ 11, %9 ], [ 9, %67 ], [ 9, %76 ], [ %33, %66 ], [ 9, %43 ], [ 9, %91 ], [ 0, %89 ] +.thread: ; preds = %92, %89, %67, %76, %66, %43, %9, %133, %109, %130, %._crit_edge + %.3 = phi i32 [ 1, %._crit_edge ], [ 1, %133 ], [ 0, %109 ], [ 9, %130 ], [ 11, %9 ], [ 9, %67 ], [ 9, %76 ], [ %33, %66 ], [ 9, %43 ], [ 9, %92 ], [ 0, %89 ] ret i32 %.3 } @@ -459,9 +465,9 @@ attributes #10 = { nounwind willreturn memory(none) } !36 = !{!19, !6, i64 8} !37 = !{i8 0, i8 2} !38 = !{} -!39 = !{!7, !7, i64 0} -!40 = distinct !{!40, !41} -!41 = !{!"llvm.loop.mustprogress"} +!39 = distinct !{!39, !40} +!40 = !{!"llvm.loop.mustprogress"} +!41 = !{!7, !7, i64 0} !42 = !{!43, !45, i64 56} !43 = !{!"", !44, i64 0, !9, i64 8, !9, i64 16, !44, i64 24, !9, i64 32, !9, i64 40, !6, i64 48, !45, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !9, i64 96, !9, i64 104, !9, i64 112, !9, i64 120, !12, i64 128, !12, i64 132} !44 = !{!"p1 omnipotent char", !6, i64 0} diff --git a/bench/cmake/optimized/cmOrderDirectories.ll b/bench/cmake/optimized/cmOrderDirectories.ll index 2c40fdaba37..c511685d3d9 100644 --- a/bench/cmake/optimized/cmOrderDirectories.ll +++ b/bench/cmake/optimized/cmOrderDirectories.ll @@ -8787,33 +8787,38 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %7 = ptrtoint ptr %1 to i64 %8 = sub i64 %7, %6 %9 = icmp sgt i64 %8, 128 - br i1 %9, label %.lr.ph, label %.loopexit + br i1 %9, label %.lr.ph.preheader, label %.loopexit -.lr.ph: ; preds = %3, %12 - %.013 = phi i64 [ %13, %12 ], [ %2, %3 ] - %storemerge12 = phi ptr [ %14, %12 ], [ %1, %3 ] - %10 = icmp eq i64 %.013, 0 - br i1 %10, label %11, label %12 +.lr.ph.preheader: ; preds = %3 + %10 = icmp eq i64 %2, 0 + br i1 %10, label %.lr.ph._crit_edge, label %.lr.ph19 -11: ; preds = %.lr.ph +.lr.ph: ; preds = %.lr.ph19 + %11 = icmp eq i64 %12, 0 + br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph19, !llvm.loop !450 + +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader + %storemerge12.lcssa = phi ptr [ %1, %.lr.ph.preheader ], [ %13, %.lr.ph ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_RT0_(ptr %0, ptr %storemerge12, ptr noundef nonnull align 1 dereferenceable(1) %4) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_RT0_(ptr %0, ptr %storemerge12.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) - call void @_ZSt11__sort_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_RT0_(ptr %0, ptr %storemerge12, ptr noundef nonnull align 1 dereferenceable(1) %5) + call void @_ZSt11__sort_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_RT0_(ptr %0, ptr %storemerge12.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %5) call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -12: ; preds = %.lr.ph - %13 = add nsw i64 %.013, -1 - %14 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEET_SB_SB_T0_(ptr %0, ptr %storemerge12) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEElNS0_5__ops15_Iter_less_iterEEvT_SB_T0_T1_(ptr %14, ptr %storemerge12, i64 noundef %13) - %15 = ptrtoint ptr %14 to i64 - %16 = sub i64 %15, %6 - %17 = icmp sgt i64 %16, 128 - br i1 %17, label %.lr.ph, label %.loopexit, !llvm.loop !450 +.lr.ph19: ; preds = %.lr.ph.preheader, %.lr.ph + %storemerge1218 = phi ptr [ %13, %.lr.ph ], [ %1, %.lr.ph.preheader ] + %.01317 = phi i64 [ %12, %.lr.ph ], [ %2, %.lr.ph.preheader ] + %12 = add nsw i64 %.01317, -1 + %13 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEET_SB_SB_T0_(ptr %0, ptr %storemerge1218) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEElNS0_5__ops15_Iter_less_iterEEvT_SB_T0_T1_(ptr %13, ptr %storemerge1218, i64 noundef %12) + %14 = ptrtoint ptr %13 to i64 + %15 = sub i64 %14, %6 + %16 = icmp sgt i64 %15, 128 + br i1 %16, label %.lr.ph, label %.loopexit, !llvm.loop !450 -.loopexit: ; preds = %12, %3, %11 +.loopexit: ; preds = %.lr.ph19, %3, %.lr.ph._crit_edge ret void } diff --git a/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll b/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll index cdb15ddd42d..c08fd64603e 100644 --- a/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll +++ b/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll @@ -1077,21 +1077,22 @@ define hidden void @"_ZN52_$LT$std..path..Path$u20$as$u20$core..hash..Hash$GT$4h ; Function Attrs: nonlazybind uwtable define hidden noundef zeroext i1 @"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h0443a2c9cf08ba78E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 8 captures(address) %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { - %4 = getelementptr inbounds { { { { { i64, ptr, {} }, i64 } } } }, ptr %1, i64 %2 - br label %5 - -5: ; preds = %7, %3 - %6 = phi ptr [ %8, %7 ], [ %1, %3 ] - %.not.not.not.i.not.not.not.not.not = icmp ne ptr %6, %4 - br i1 %.not.not.not.i.not.not.not.not.not, label %7, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit" - -7: ; preds = %5 - %8 = getelementptr inbounds nuw i8, ptr %6, i64 24 - %9 = tail call noundef zeroext i1 @"_ZN59_$LT$std..path..PathBuf$u20$as$u20$core..cmp..PartialEq$GT$2eq17h745857070c73a145E.llvm.14531926216617506853"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0), !noalias !213 - br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit", label %5 + %.idx = mul nsw i64 %2, 24 + %4 = getelementptr inbounds i8, ptr %1, i64 %.idx + %.not.not.not.i3.not = icmp eq i64 %2, 0 + br i1 %.not.not.not.i3.not, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit", label %.lr.ph -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit": ; preds = %5, %7 - ret i1 %.not.not.not.i.not.not.not.not.not +.lr.ph: ; preds = %3, %.lr.ph + %5 = phi ptr [ %7, %.lr.ph ], [ %1, %3 ] + %6 = tail call noundef zeroext i1 @"_ZN59_$LT$std..path..PathBuf$u20$as$u20$core..cmp..PartialEq$GT$2eq17h745857070c73a145E.llvm.14531926216617506853"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0), !noalias !213 + %7 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %.not.not.not.i.not = icmp eq ptr %7, %4 + %or.cond = select i1 %6, i1 true, i1 %.not.not.not.i.not + br i1 %or.cond, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit", label %.lr.ph + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit": ; preds = %.lr.ph, %3 + %.not.not.not.i.lcssa = phi i1 [ false, %3 ], [ %6, %.lr.ph ] + ret i1 %.not.not.not.i.lcssa } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/cpython/optimized/obmalloc.ll b/bench/cpython/optimized/obmalloc.ll index 2480e6edfcd..aa5953401d0 100644 --- a/bench/cpython/optimized/obmalloc.ll +++ b/bench/cpython/optimized/obmalloc.ll @@ -17632,15 +17632,18 @@ mi_option_get.exit: ; preds = %4, %7 10: ; preds = %mi_option_get.exit call void @llvm.lifetime.start.p0(ptr nonnull %1) - br label %11 + br label %12 -11: ; preds = %12, %10 - %.0.i = phi i32 [ 0, %10 ], [ %13, %12 ] - %exitcond.not.i = icmp eq i32 %.0.i, 256 - br i1 %exitcond.not.i, label %_mi_prim_numa_node_count.exit, label %12 +11: ; preds = %12 + %exitcond.not.i = icmp eq i32 %13, 256 + br i1 %exitcond.not.i, label %._crit_edge.i, label %12, !llvm.loop !234 -12: ; preds = %11 - %13 = add nuw nsw i32 %.0.i, 1 +._crit_edge.i: ; preds = %11 + br label %_mi_prim_numa_node_count.exit, !llvm.loop !234 + +12: ; preds = %11, %10 + %.04.i = phi i32 [ 0, %10 ], [ %13, %11 ] + %13 = add nuw nsw i32 %.04.i, 1 %14 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %1, i64 noundef 127, ptr noundef nonnull @.str.33, i32 noundef %13) #54 %15 = call i64 (i64, ...) @syscall(i64 noundef 21, ptr noundef nonnull %1, i32 noundef 4) #54 %16 = and i64 %15, 4294967295 @@ -17651,8 +17654,8 @@ split.i: ; preds = %12 %17 = zext nneg i32 %13 to i64 br label %_mi_prim_numa_node_count.exit -_mi_prim_numa_node_count.exit: ; preds = %11, %split.i - %.0.lcssa.i = phi i64 [ %17, %split.i ], [ 257, %11 ] +_mi_prim_numa_node_count.exit: ; preds = %._crit_edge.i, %split.i + %.0.lcssa.i = phi i64 [ 257, %._crit_edge.i ], [ %17, %split.i ] call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %18 @@ -17671,15 +17674,18 @@ _mi_prim_numa_node_count.exit: ; preds = %11, %split.i define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unnamed_addr #1 { %1 = alloca [128 x i8], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %1) - br label %2 + br label %3 -2: ; preds = %3, %0 - %.0 = phi i32 [ 0, %0 ], [ %4, %3 ] - %exitcond.not = icmp eq i32 %.0, 256 - br i1 %exitcond.not, label %._crit_edge, label %3 +2: ; preds = %3 + %exitcond.not = icmp eq i32 %4, 256 + br i1 %exitcond.not, label %._crit_edge, label %3, !llvm.loop !234 -3: ; preds = %2 - %4 = add nuw nsw i32 %.0, 1 +._crit_edge: ; preds = %2 + br label %10, !llvm.loop !234 + +3: ; preds = %0, %2 + %.04 = phi i32 [ 0, %0 ], [ %4, %2 ] + %4 = add nuw nsw i32 %.04, 1 %5 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %1, i64 noundef 127, ptr noundef nonnull @.str.33, i32 noundef %4) #54 %6 = call i64 (i64, ...) @syscall(i64 noundef 21, ptr noundef nonnull %1, i32 noundef 4) #54 %7 = and i64 %6, 4294967295 @@ -17687,12 +17693,12 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn br i1 %.not, label %2, label %split, !llvm.loop !234 split: ; preds = %3 - %8 = add nuw nsw i32 %.0, 1 + %8 = add nuw nsw i32 %.04, 1 %9 = zext nneg i32 %8 to i64 - br label %._crit_edge + br label %10 -._crit_edge: ; preds = %2, %split - %.0.lcssa = phi i64 [ %9, %split ], [ 257, %2 ] +10: ; preds = %split, %._crit_edge + %.0.lcssa = phi i64 [ 257, %._crit_edge ], [ %9, %split ] call void @llvm.lifetime.end.p0(ptr nonnull %1) ret i64 %.0.lcssa } diff --git a/bench/cpython/optimized/posixmodule.ll b/bench/cpython/optimized/posixmodule.ll index fd8d14af442..403e045a2a9 100644 --- a/bench/cpython/optimized/posixmodule.ll +++ b/bench/cpython/optimized/posixmodule.ll @@ -21700,17 +21700,17 @@ declare noundef ptr @ctermid(ptr noundef captures(none)) local_unnamed_addr #9 ; Function Attrs: nounwind uwtable define internal fastcc ptr @posix_getcwd(i32 noundef range(i32 0, 2) %0) unnamed_addr #0 { %2 = tail call ptr @PyEval_SaveThread() #19 - br label %3 + br label %4 -3: ; preds = %10, %1 - %.031 = phi ptr [ null, %1 ], [ %6, %10 ] - %.027 = phi i64 [ 0, %1 ], [ %5, %10 ] - %.not54 = icmp eq i64 %.027, 9223372036854774784 - br i1 %.not54, label %.thread, label %4 +3: ; preds = %10 + %.not54 = icmp eq i64 %5, 9223372036854774784 + br i1 %.not54, label %.thread, label %4, !llvm.loop !314 -4: ; preds = %3 - %5 = add nuw nsw i64 %.027, 1024 - %6 = tail call ptr @PyMem_RawRealloc(ptr noundef %.031, i64 noundef %5) #19 +4: ; preds = %1, %3 + %.02760 = phi i64 [ 0, %1 ], [ %5, %3 ] + %.03159 = phi ptr [ null, %1 ], [ %6, %3 ] + %5 = add nuw nsw i64 %.02760, 1024 + %6 = tail call ptr @PyMem_RawRealloc(ptr noundef %.03159, i64 noundef %5) #19 %7 = icmp eq ptr %6, null br i1 %7, label %.thread, label %8 @@ -21733,7 +21733,8 @@ define internal fastcc ptr @posix_getcwd(i32 noundef range(i32 0, 2) %0) unnamed br label %30 .thread: ; preds = %3, %4 - tail call void @PyMem_RawFree(ptr noundef %.031) #19 + %.031.lcssa = phi ptr [ %6, %3 ], [ %.03159, %4 ] + tail call void @PyMem_RawFree(ptr noundef %.031.lcssa) #19 tail call void @PyEval_RestoreThread(ptr noundef %2) #19 %16 = tail call ptr @PyErr_NoMemory() #19 br label %30 diff --git a/bench/csmith/optimized/ArrayVariable.ll b/bench/csmith/optimized/ArrayVariable.ll index ef40c7ec4bd..7f4203121b9 100644 --- a/bench/csmith/optimized/ArrayVariable.ll +++ b/bench/csmith/optimized/ArrayVariable.ll @@ -3787,60 +3787,66 @@ define dso_local void @_ZNK13ArrayVariable21build_initializer_strERKSt6vectorINS %20 = ptrtoint ptr %18 to i64 %21 = ptrtoint ptr %19 to i64 %22 = sub i64 %20, %21 - %23 = lshr i64 %22, 2 - %24 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %25 = and i64 %23, 4294967295 - br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit - -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit, %15 - %indvars.iv = phi i64 [ %indvars.iv.next, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit ], [ %25, %15 ] + %23 = lshr exact i64 %22, 2 + %24 = trunc i64 %23 to i32 + %.02260 = add i32 %24, -1 + %25 = icmp sgt i32 %.02260, -1 + br i1 %25, label %.lr.ph63, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge + +.lr.ph63: ; preds = %15 + %26 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %27 = zext nneg i32 %.02260 to i64 + br label %40 + +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %26 = and i64 %indvars.iv.next, 2147483648 - %27 = icmp eq i64 %26, 0 - br i1 %27, label %39, label %28 - -28: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit - %29 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %29, ptr %0, align 8, !tbaa !115 - %30 = load ptr, ptr %4, align 8, !tbaa !90 - %31 = icmp eq ptr %30, %6 - br i1 %31, label %32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i - -32: ; preds = %28 - %33 = load i64, ptr %7, align 8, !tbaa !117 - %34 = icmp ult i64 %33, 16 - call void @llvm.assume(i1 %34) - %35 = add nuw nsw i64 %33, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %29, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %35, i1 false) + %28 = icmp sgt i64 %indvars.iv, 0 + %29 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %28, label %40, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge + +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit, %15 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %30, ptr %0, align 8, !tbaa !115 + %31 = load ptr, ptr %4, align 8, !tbaa !90 + %32 = icmp eq ptr %31, %6 + br i1 %32, label %33, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i + +33: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge + %34 = load i64, ptr %7, align 8, !tbaa !117 + %35 = icmp ult i64 %34, 16 + call void @llvm.assume(i1 %35) + %36 = add nuw nsw i64 %34, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %30, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %36, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i: ; preds = %28 - store ptr %30, ptr %0, align 8, !tbaa !90 - %36 = load i64, ptr %6, align 8, !tbaa !91 - store i64 %36, ptr %29, align 8, !tbaa !91 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge + store ptr %31, ptr %0, align 8, !tbaa !90 + %37 = load i64, ptr %6, align 8, !tbaa !91 + store i64 %37, ptr %30, align 8, !tbaa !91 %.pre = load i64, ptr %7, align 8, !tbaa !117 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit: ; preds = %32, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i - %37 = phi i64 [ %33, %32 ], [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i ] - %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %37, ptr %38, align 8, !tbaa !117 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit: ; preds = %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i + %38 = phi i64 [ %34, %33 ], [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i ] + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %38, ptr %39, align 8, !tbaa !117 store ptr %6, ptr %4, align 8, !tbaa !90 store i64 0, ptr %7, align 8, !tbaa !117 store i8 0, ptr %6, align 8, !tbaa !91 br label %99 -39: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit - %40 = and i64 %indvars.iv.next, 2147483647 +40: ; preds = %.lr.ph63, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit + %indvars.iv = phi i64 [ %27, %.lr.ph63 ], [ %indvars.iv.next, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit ] + %.022.in61 = phi i32 [ %24, %.lr.ph63 ], [ %29, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit ] %41 = load ptr, ptr %16, align 8, !tbaa !53 - %42 = getelementptr inbounds nuw i32, ptr %41, i64 %40 + %42 = getelementptr inbounds nuw i32, ptr %41, i64 %indvars.iv %43 = load i32, ptr %42, align 4, !tbaa !4 %44 = zext i32 %43 to i64 %45 = load i64, ptr %9, align 8, !tbaa !117 %46 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0, i64 noundef %45, ptr noundef nonnull @.str, i64 noundef 1) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit.preheader unwind label %.loopexit54 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit.preheader: ; preds = %39 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit.preheader: ; preds = %40 %.not = icmp eq i32 %43, 0 br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit._crit_edge, label %.lr.ph @@ -3864,7 +3870,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.2, i64 noundef 1) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit unwind label %.loopexit54 -.loopexit54: ; preds = %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit +.loopexit54: ; preds = %40, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit %lpad.loopexit56 = landingpad { ptr, i32 } cleanup br label %108 @@ -3882,17 +3888,17 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds %56 = ptrtoint ptr %54 to i64 %57 = sub i64 %55, %56 %58 = lshr exact i64 %57, 2 - %59 = and i64 %58, 4294967295 - %60 = icmp eq i64 %indvars.iv, %59 + %59 = trunc i64 %58 to i32 + %60 = icmp eq i32 %.022.in61, %59 br i1 %60, label %61, label %84 61: ; preds = %52 %62 = add nuw nsw i64 %.01859, 7 %63 = add nuw nsw i64 %.01859, 13 %64 = mul i64 %62, %63 - %65 = add i64 %64, %40 + %65 = add i64 %64, %indvars.iv %66 = mul i64 %65, 52369 - %67 = load ptr, ptr %24, align 8, !tbaa !138 + %67 = load ptr, ptr %26, align 8, !tbaa !138 %68 = load ptr, ptr %2, align 8, !tbaa !141 %69 = ptrtoint ptr %67 to i64 %70 = ptrtoint ptr %68 to i64 diff --git a/bench/curl/optimized/mprintf.ll b/bench/curl/optimized/mprintf.ll index c91bb96fe44..dae6fe58a02 100644 --- a/bench/curl/optimized/mprintf.ll +++ b/bench/curl/optimized/mprintf.ll @@ -985,35 +985,41 @@ addbyter.exit50: ; preds = %32, %28 %389 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %9, i64 noundef 326, ptr noundef nonnull %10, double noundef %388) #12 %390 = load i8, ptr %9, align 16, !tbaa !14 %.not24.i457 = icmp eq i8 %390, 0 - br i1 %.not24.i457, label %addbyter.exit.thread323, label %.lr.ph463 + br i1 %.not24.i457, label %addbyter.exit.thread323, label %.lr.ph463.preheader -addbyter.exit.thread323: ; preds = %393, %386 - %.sroa.51.6.lcssa = phi i64 [ %.sroa.51.4, %386 ], [ %395, %393 ] - %.sroa.0.6.lcssa = phi ptr [ %.sroa.0.4, %386 ], [ %394, %393 ] - %.30.i.lcssa = phi i32 [ %.1357.i, %386 ], [ %396, %393 ] +.lr.ph463.preheader: ; preds = %386 + %391 = icmp ult i64 %.sroa.51.4, %1 + br i1 %391, label %.lr.ph1026, label %addbyter.exit + +addbyter.exit.thread323: ; preds = %.lr.ph1026, %386 + %.sroa.51.6.lcssa = phi i64 [ %.sroa.51.4, %386 ], [ %395, %.lr.ph1026 ] + %.sroa.0.6.lcssa = phi ptr [ %.sroa.0.4, %386 ], [ %394, %.lr.ph1026 ] + %.30.i.lcssa = phi i32 [ %.1357.i, %386 ], [ %396, %.lr.ph1026 ] call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %addbyter.exit48.thread338 -.lr.ph463: ; preds = %386, %393 - %391 = phi i8 [ %398, %393 ], [ %390, %386 ] - %.8337.i461 = phi ptr [ %397, %393 ], [ %9, %386 ] - %.30.i460 = phi i32 [ %396, %393 ], [ %.1357.i, %386 ] - %.sroa.0.6459 = phi ptr [ %394, %393 ], [ %.sroa.0.4, %386 ] - %.sroa.51.6458 = phi i64 [ %395, %393 ], [ %.sroa.51.4, %386 ] - %392 = icmp ult i64 %.sroa.51.6458, %1 - br i1 %392, label %393, label %addbyter.exit - -393: ; preds = %.lr.ph463 - %394 = getelementptr inbounds nuw i8, ptr %.sroa.0.6459, i64 1 - store i8 %391, ptr %.sroa.0.6459, align 1, !tbaa !14 - %395 = add nuw i64 %.sroa.51.6458, 1 - %396 = add nsw i32 %.30.i460, 1 - %397 = getelementptr inbounds nuw i8, ptr %.8337.i461, i64 1 +.lr.ph463: ; preds = %.lr.ph1026 + %392 = icmp ult i64 %395, %1 + br i1 %392, label %.lr.ph1026, label %addbyter.exit, !llvm.loop !37 + +.lr.ph1026: ; preds = %.lr.ph463.preheader, %.lr.ph463 + %.sroa.51.64581025 = phi i64 [ %395, %.lr.ph463 ], [ %.sroa.51.4, %.lr.ph463.preheader ] + %.sroa.0.64591024 = phi ptr [ %394, %.lr.ph463 ], [ %.sroa.0.4, %.lr.ph463.preheader ] + %.30.i4601023 = phi i32 [ %396, %.lr.ph463 ], [ %.1357.i, %.lr.ph463.preheader ] + %.8337.i4611022 = phi ptr [ %397, %.lr.ph463 ], [ %9, %.lr.ph463.preheader ] + %393 = phi i8 [ %398, %.lr.ph463 ], [ %390, %.lr.ph463.preheader ] + %394 = getelementptr inbounds nuw i8, ptr %.sroa.0.64591024, i64 1 + store i8 %393, ptr %.sroa.0.64591024, align 1, !tbaa !14 + %395 = add nuw i64 %.sroa.51.64581025, 1 + %396 = add nsw i32 %.30.i4601023, 1 + %397 = getelementptr inbounds nuw i8, ptr %.8337.i4611022, i64 1 %398 = load i8, ptr %397, align 1, !tbaa !14 %.not24.i = icmp eq i8 %398, 0 br i1 %.not24.i, label %addbyter.exit.thread323, label %.lr.ph463, !llvm.loop !37 -addbyter.exit: ; preds = %.lr.ph463 +addbyter.exit: ; preds = %.lr.ph463.preheader, %.lr.ph463 + %.30.i460.lcssa = phi i32 [ %396, %.lr.ph463 ], [ %.1357.i, %.lr.ph463.preheader ] + %.sroa.0.6459.lcssa = phi ptr [ %394, %.lr.ph463 ], [ %.sroa.0.4, %.lr.ph463.preheader ] %umax736.le = call i64 @llvm.umax.i64(i64 %.sroa.51.4, i64 %1) call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %formatf.specialized.1.exit @@ -1096,8 +1102,8 @@ formatf.specialized.1.exit.loopexit799: ; preds = %30 formatf.specialized.1.exit: ; preds = %addbyter.exit48.thread338, %.loopexit373, %175, %178, %181, %187, %242, %281, %.lr.ph470, %307, %.lr.ph482, %.lr.ph489, %.lr.ph512, %.lr.ph519, %.lr.ph549, %.lr.ph557, %.lr.ph569, %.lr.ph577, %formatf.specialized.1.exit.loopexit799, %formatf.specialized.1.exit.loopexit793, %addbyter.exit, %4 %.sroa.51.31 = phi i64 [ 0, %4 ], [ %umax736.le, %addbyter.exit ], [ %umax737.le, %formatf.specialized.1.exit.loopexit793 ], [ %umax.le, %formatf.specialized.1.exit.loopexit799 ], [ %.sroa.51.14574, %.lr.ph577 ], [ %.sroa.51.13564, %.lr.ph569 ], [ %.sroa.51.11554, %.lr.ph557 ], [ %.sroa.51.15546, %.lr.ph549 ], [ %.sroa.51.30516, %.lr.ph519 ], [ %.sroa.51.25509, %.lr.ph512 ], [ %.sroa.51.27486, %.lr.ph489 ], [ %.sroa.51.20479, %.lr.ph482 ], [ %.sroa.51.18475, %307 ], [ %.sroa.51.16467, %.lr.ph470 ], [ %.sroa.51.3345, %addbyter.exit48.thread338 ], [ %.sroa.51.28, %.loopexit373 ], [ %.sroa.51.8, %175 ], [ %.sroa.51.8, %178 ], [ %.sroa.51.8, %181 ], [ %.sroa.51.9, %187 ], [ %.sroa.51.4, %242 ], [ %.sroa.51.26, %281 ] - %.sroa.0.31 = phi ptr [ %0, %4 ], [ %.sroa.0.6459, %addbyter.exit ], [ %.sroa.0.24496, %formatf.specialized.1.exit.loopexit793 ], [ %.sroa.0.1451, %formatf.specialized.1.exit.loopexit799 ], [ %.sroa.0.14575, %.lr.ph577 ], [ %.sroa.0.13565, %.lr.ph569 ], [ %.sroa.0.11555, %.lr.ph557 ], [ %.sroa.0.15547, %.lr.ph549 ], [ %.sroa.0.30517, %.lr.ph519 ], [ %.sroa.0.25510, %.lr.ph512 ], [ %.sroa.0.27487, %.lr.ph489 ], [ %.sroa.0.20480, %.lr.ph482 ], [ %.sroa.0.18476, %307 ], [ %.sroa.0.16468, %.lr.ph470 ], [ %.sroa.0.3346, %addbyter.exit48.thread338 ], [ %.sroa.0.28, %.loopexit373 ], [ %.sroa.0.8, %175 ], [ %.sroa.0.8, %178 ], [ %.sroa.0.8, %181 ], [ %.sroa.0.9, %187 ], [ %.sroa.0.4, %242 ], [ %.sroa.0.26, %281 ] - %.0322.i = phi i32 [ 0, %4 ], [ %.30.i460, %addbyter.exit ], [ %.20.i497, %formatf.specialized.1.exit.loopexit793 ], [ %.2358.i452, %formatf.specialized.1.exit.loopexit799 ], [ %.15.i576, %.lr.ph577 ], [ %.14.i566, %.lr.ph569 ], [ %.13.i556, %.lr.ph557 ], [ %.9.i548, %.lr.ph549 ], [ %.4360.i518, %.lr.ph519 ], [ %.22.i511, %.lr.ph512 ], [ %.19.i488, %.lr.ph489 ], [ %.29.i481, %.lr.ph482 ], [ %.27.i477, %307 ], [ %.25.i469, %.lr.ph470 ], [ %.3359.i347, %addbyter.exit48.thread338 ], [ %.5361.i, %.loopexit373 ], [ %.8364.i, %175 ], [ %.8364.i, %178 ], [ %.8364.i, %181 ], [ %.10.i, %187 ], [ %.1357.i, %242 ], [ %.21.i, %281 ] + %.sroa.0.31 = phi ptr [ %0, %4 ], [ %.sroa.0.6459.lcssa, %addbyter.exit ], [ %.sroa.0.24496, %formatf.specialized.1.exit.loopexit793 ], [ %.sroa.0.1451, %formatf.specialized.1.exit.loopexit799 ], [ %.sroa.0.14575, %.lr.ph577 ], [ %.sroa.0.13565, %.lr.ph569 ], [ %.sroa.0.11555, %.lr.ph557 ], [ %.sroa.0.15547, %.lr.ph549 ], [ %.sroa.0.30517, %.lr.ph519 ], [ %.sroa.0.25510, %.lr.ph512 ], [ %.sroa.0.27487, %.lr.ph489 ], [ %.sroa.0.20480, %.lr.ph482 ], [ %.sroa.0.18476, %307 ], [ %.sroa.0.16468, %.lr.ph470 ], [ %.sroa.0.3346, %addbyter.exit48.thread338 ], [ %.sroa.0.28, %.loopexit373 ], [ %.sroa.0.8, %175 ], [ %.sroa.0.8, %178 ], [ %.sroa.0.8, %181 ], [ %.sroa.0.9, %187 ], [ %.sroa.0.4, %242 ], [ %.sroa.0.26, %281 ] + %.0322.i = phi i32 [ 0, %4 ], [ %.30.i460.lcssa, %addbyter.exit ], [ %.20.i497, %formatf.specialized.1.exit.loopexit793 ], [ %.2358.i452, %formatf.specialized.1.exit.loopexit799 ], [ %.15.i576, %.lr.ph577 ], [ %.14.i566, %.lr.ph569 ], [ %.13.i556, %.lr.ph557 ], [ %.9.i548, %.lr.ph549 ], [ %.4360.i518, %.lr.ph519 ], [ %.22.i511, %.lr.ph512 ], [ %.19.i488, %.lr.ph489 ], [ %.29.i481, %.lr.ph482 ], [ %.27.i477, %307 ], [ %.25.i469, %.lr.ph470 ], [ %.3359.i347, %addbyter.exit48.thread338 ], [ %.5361.i, %.loopexit373 ], [ %.8364.i, %175 ], [ %.8364.i, %178 ], [ %.8364.i, %181 ], [ %.10.i, %187 ], [ %.1357.i, %242 ], [ %.21.i, %281 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/cvc5/optimized/alpha_equivalence.ll b/bench/cvc5/optimized/alpha_equivalence.ll index 8b4bec0b0e0..2c2e707955d 100644 --- a/bench/cvc5/optimized/alpha_equivalence.ll +++ b/bench/cvc5/optimized/alpha_equivalence.ll @@ -17082,46 +17082,51 @@ define linkonce_odr hidden void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_it %8 = ptrtoint ptr %1 to i64 %9 = sub i64 %8, %7 %10 = icmp sgt i64 %9, 128 - br i1 %10, label %.lr.ph, label %.loopexit + br i1 %10, label %.lr.ph.preheader, label %.loopexit -.lr.ph: ; preds = %4, %17 - %.018 = phi i64 [ %18, %17 ], [ %2, %4 ] - %storemerge17 = phi ptr [ %19, %17 ], [ %1, %4 ] - %11 = icmp eq i64 %.018, 0 - br i1 %11, label %12, label %17 +.lr.ph.preheader: ; preds = %4 + %11 = icmp eq i64 %2, 0 + br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph24 -12: ; preds = %.lr.ph +.lr.ph: ; preds = %.lr.ph24 + %12 = icmp eq i64 %17, 0 + br i1 %12, label %.lr.ph._crit_edge, label %.lr.ph24, !llvm.loop !344 + +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader + %storemerge17.lcssa = phi ptr [ %1, %.lr.ph.preheader ], [ %18, %.lr.ph ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %3, ptr %6, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %3, ptr %5, align 8 - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_RT0_(ptr %0, ptr %storemerge17, ptr noundef nonnull align 8 dereferenceable(8) %5) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_RT0_(ptr %0, ptr %storemerge17.lcssa, ptr noundef nonnull align 8 dereferenceable(8) %5) call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.lr.ph.i9.i -.lr.ph.i9.i: ; preds = %12, %.lr.ph.i9.i - %.sroa.0.05.i.i = phi ptr [ %13, %.lr.ph.i9.i ], [ %storemerge17, %12 ] +.lr.ph.i9.i: ; preds = %.lr.ph._crit_edge, %.lr.ph.i9.i + %.sroa.0.05.i.i = phi ptr [ %13, %.lr.ph.i9.i ], [ %storemerge17.lcssa, %.lr.ph._crit_edge ] %13 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -8 call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_RT0_(ptr %0, ptr nonnull %13, ptr nonnull %13, ptr noundef nonnull align 8 dereferenceable(8) %6) %14 = ptrtoint ptr %13 to i64 %15 = sub i64 %14, %7 %16 = icmp sgt i64 %15, 8 - br i1 %16, label %.lr.ph.i9.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_T0_.exit, !llvm.loop !344 + br i1 %16, label %.lr.ph.i9.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_T0_.exit, !llvm.loop !345 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_T0_.exit: ; preds = %.lr.ph.i9.i call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %.loopexit -17: ; preds = %.lr.ph - %18 = add nsw i64 %.018, -1 - %19 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEET_SG_SG_T0_(ptr %0, ptr %storemerge17, ptr %3) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_T0_T1_(ptr %19, ptr %storemerge17, i64 noundef %18, ptr %3) - %20 = ptrtoint ptr %19 to i64 - %21 = sub i64 %20, %7 - %22 = icmp sgt i64 %21, 128 - br i1 %22, label %.lr.ph, label %.loopexit, !llvm.loop !345 - -.loopexit: ; preds = %17, %4, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_T0_.exit +.lr.ph24: ; preds = %.lr.ph.preheader, %.lr.ph + %storemerge1723 = phi ptr [ %18, %.lr.ph ], [ %1, %.lr.ph.preheader ] + %.01822 = phi i64 [ %17, %.lr.ph ], [ %2, %.lr.ph.preheader ] + %17 = add nsw i64 %.01822, -1 + %18 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEET_SG_SG_T0_(ptr %0, ptr %storemerge1723, ptr %3) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_T0_T1_(ptr %18, ptr %storemerge1723, i64 noundef %17, ptr %3) + %19 = ptrtoint ptr %18 to i64 + %20 = sub i64 %19, %7 + %21 = icmp sgt i64 %20, 128 + br i1 %21, label %.lr.ph, label %.loopexit, !llvm.loop !344 + +.loopexit: ; preds = %.lr.ph24, %4, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_T0_.exit ret void } diff --git a/bench/darktable/optimized/Cr2LJpegDecoder.ll b/bench/darktable/optimized/Cr2LJpegDecoder.ll index 97080814c4e..1b583013e99 100644 --- a/bench/darktable/optimized/Cr2LJpegDecoder.ll +++ b/bench/darktable/optimized/Cr2LJpegDecoder.ll @@ -1389,28 +1389,28 @@ define hidden void @_ZN8rawspeed15Cr2LJpegDecoder6decodeERKNS_14Cr2SliceWidthsE( %3 = getelementptr inbounds nuw i8, ptr %0, i64 236 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %3, ptr noundef nonnull align 4 dereferenceable(12) %1, i64 12, i1 false), !tbaa.struct !177 %4 = load i32, ptr %3, align 4, !tbaa !178 - %smax = tail call i32 @llvm.smax.i32(i32 %4, i32 0) - br label %5 + %5 = icmp sgt i32 %4, 0 + br i1 %5, label %.lr.ph, label %._crit_edge -5: ; preds = %7, %2 - %.0 = phi i32 [ 0, %2 ], [ %8, %7 ] - %exitcond.not = icmp eq i32 %.0, %smax - br i1 %exitcond.not, label %6, label %7 +6: ; preds = %.lr.ph + %exitcond.not = icmp eq i32 %7, %4 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !180 -6: ; preds = %5 +._crit_edge: ; preds = %6, %2 tail call void @_ZN8rawspeed20AbstractLJpegDecoder9decodeSOIEv(ptr noundef nonnull align 8 dereferenceable(236) %0) ret void -7: ; preds = %5 - %8 = add nuw i32 %.0, 1 - %9 = icmp eq i32 %8, %4 - %.0.in.v.i = select i1 %9, i64 8, i64 4 +.lr.ph: ; preds = %2, %6 + %.07 = phi i32 [ %7, %6 ], [ 0, %2 ] + %7 = add nuw nsw i32 %.07, 1 + %8 = icmp eq i32 %7, %4 + %.0.in.v.i = select i1 %8, i64 8, i64 4 %.0.in.i = getelementptr inbounds nuw i8, ptr %3, i64 %.0.in.v.i %.0.i = load i32, ptr %.0.in.i, align 4, !tbaa !16 - %10 = icmp slt i32 %.0.i, 1 - br i1 %10, label %11, label %5, !llvm.loop !180 + %9 = icmp slt i32 %.0.i, 1 + br i1 %9, label %10, label %6, !llvm.loop !180 -11: ; preds = %7 +10: ; preds = %.lr.ph tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed15Cr2LJpegDecoder6decodeERKNS_14Cr2SliceWidthsE, i32 noundef %.0.i) #14 unreachable } @@ -1854,9 +1854,6 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #18 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #19 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #20 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #20 diff --git a/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll b/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll index c0d4cd02522..196bc1f7007 100644 --- a/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll +++ b/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll @@ -726,28 +726,37 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fol %3 = getelementptr inbounds nuw i8, ptr %0, i64 40 %4 = load i64, ptr %3, align 8, !alias.scope !161, !noundef !4 %.promoted = load i64, ptr %2, align 8, !alias.scope !161 - %.val4.i.i = load ptr, ptr %0, align 8, !nonnull !4 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %.val.i.i = load ptr, ptr %5, align 8, !nonnull !4 - br label %6 + %5 = icmp ult i64 %.promoted, %4 + br i1 %5, label %.lr.ph, label %13 -6: ; preds = %9, %1 - %7 = phi i64 [ %10, %9 ], [ %.promoted, %1 ] - %8 = icmp ult i64 %7, %4 - br i1 %8, label %9, label %13 +.lr.ph: ; preds = %1 + %.val4.i.i = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !4, !noundef !4 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %.val.i.i = load ptr, ptr %6, align 8, !alias.scope !161, !nonnull !4, !noundef !4 + br label %8 -9: ; preds = %6 - %10 = add nuw i64 %7, 1 - store i64 %10, ptr %2, align 8, !alias.scope !161 - %11 = getelementptr inbounds i8, ptr %.val4.i.i, i64 %7 - %12 = getelementptr inbounds i8, ptr %.val.i.i, i64 %7 +7: ; preds = %8 + %exitcond.not = icmp eq i64 %10, %4 + br i1 %exitcond.not, label %.sink.split, label %8 + +8: ; preds = %.lr.ph, %7 + %9 = phi i64 [ %.promoted, %.lr.ph ], [ %10, %7 ] + %10 = add i64 %9, 1 + %11 = getelementptr inbounds i8, ptr %.val4.i.i, i64 %9 + %12 = getelementptr inbounds i8, ptr %.val.i.i, i64 %9 %.fca.0.extract.val = load i8, ptr %11, align 1, !range !132, !noundef !4 %.fca.1.extract.val = load i8, ptr %12, align 1, !range !132, !noundef !4 - %.not = icmp eq i8 %.fca.0.extract.val, %.fca.1.extract.val - br i1 %.not, label %6, label %13 + %.not.not.not = icmp ne i8 %.fca.0.extract.val, %.fca.1.extract.val + br i1 %.not.not.not, label %.sink.split, label %7 + +.sink.split: ; preds = %8, %7 + %.lcssa20.sink = phi i64 [ %10, %8 ], [ %4, %7 ] + store i64 %.lcssa20.sink, ptr %2, align 8, !alias.scope !161 + br label %13 -13: ; preds = %6, %9 - ret i1 %8 +13: ; preds = %.sink.split, %1 + %.lcssa = phi i1 [ false, %1 ], [ %.not.not.not, %.sink.split ] + ret i1 %.lcssa } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1868,24 +1877,26 @@ define hidden void @"_ZN71_$LT$std..hash..random..DefaultHasher$u20$as$u20$core. ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: read) uwtable define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h2b3aa12c9f205c1eE"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 captures(none) %2, i64 noundef %3) unnamed_addr #12 personality ptr @rust_eh_personality { %.not = icmp eq i64 %1, %3 - br i1 %.not, label %.preheader, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit - -.preheader: ; preds = %4, %6 - %5 = phi i64 [ %7, %6 ], [ 0, %4 ] - %exitcond.not = icmp eq i64 %5, %1 - br i1 %exitcond.not, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit, label %6 - -6: ; preds = %.preheader - %7 = add i64 %5, 1 - %8 = getelementptr inbounds i8, ptr %0, i64 %5 - %9 = getelementptr inbounds i8, ptr %2, i64 %5 - %.fca.0.extract.val.i = load i8, ptr %8, align 1, !range !132, !noalias !378, !noundef !4 - %.fca.1.extract.val.i = load i8, ptr %9, align 1, !range !132, !noalias !378, !noundef !4 - %.not.i = icmp eq i8 %.fca.0.extract.val.i, %.fca.1.extract.val.i - br i1 %.not.i, label %.preheader, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit - -_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit: ; preds = %6, %.preheader, %4 - %.0 = phi i1 [ false, %4 ], [ %exitcond.not, %.preheader ], [ %exitcond.not, %6 ] + br i1 %.not, label %5, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit + +5: ; preds = %4 + %.not8 = icmp eq i64 %1, 0 + br i1 %.not8, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit, label %.lr.ph.i + +.lr.ph.i: ; preds = %5, %.lr.ph.i + %6 = phi i64 [ %9, %.lr.ph.i ], [ 0, %5 ] + %7 = getelementptr inbounds i8, ptr %0, i64 %6 + %8 = getelementptr inbounds i8, ptr %2, i64 %6 + %.fca.0.extract.val.i = load i8, ptr %7, align 1, !range !132, !noalias !378, !noundef !4 + %.fca.1.extract.val.i = load i8, ptr %8, align 1, !range !132, !noalias !378, !noundef !4 + %.not.i.not = icmp eq i8 %.fca.0.extract.val.i, %.fca.1.extract.val.i + %9 = add nuw i64 %6, 1 + %exitcond.not.i = icmp ne i64 %9, %1 + %or.cond.not = select i1 %.not.i.not, i1 %exitcond.not.i, i1 false + br i1 %or.cond.not, label %.lr.ph.i, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit + +_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit: ; preds = %.lr.ph.i, %5, %4 + %.0 = phi i1 [ false, %4 ], [ true, %5 ], [ %.not.i.not, %.lr.ph.i ] ret i1 %.0 } diff --git a/bench/draco/optimized/mesh_are_equivalent.ll b/bench/draco/optimized/mesh_are_equivalent.ll index 3b5e46c9f5e..b4f5838d350 100644 --- a/bench/draco/optimized/mesh_are_equivalent.ll +++ b/bench/draco/optimized/mesh_are_equivalent.ll @@ -1394,41 +1394,43 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI .lr.ph: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 4 - br label %13 + %13 = icmp eq i64 %2, 0 + br i1 %13, label %._crit_edge, label %.lr.ph24 -13: ; preds = %.lr.ph, %17 - %14 = phi i64 [ %10, %.lr.ph ], [ %25, %17 ] - %.017 = phi i64 [ %2, %.lr.ph ], [ %18, %17 ] - %storemerge16 = phi ptr [ %1, %.lr.ph ], [ %22, %17 ] - %15 = icmp eq i64 %.017, 0 - br i1 %15, label %16, label %17 +14: ; preds = %.lr.ph24 + %15 = icmp eq i64 %17, 0 + br i1 %15, label %._crit_edge, label %.lr.ph24, !llvm.loop !131 -16: ; preds = %13 +._crit_edge: ; preds = %14, %.lr.ph + %storemerge16.lcssa = phi ptr [ %1, %.lr.ph ], [ %21, %14 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %3, ptr %6, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %3, ptr %5, align 8 - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_RT0_(ptr %0, ptr %storemerge16, ptr noundef nonnull align 8 dereferenceable(8) %5) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_RT0_(ptr %0, ptr %storemerge16.lcssa, ptr noundef nonnull align 8 dereferenceable(8) %5) call void @llvm.lifetime.end.p0(ptr nonnull %5) - call void @_ZSt11__sort_heapIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_RT0_(ptr %0, ptr %storemerge16, ptr noundef nonnull align 8 dereferenceable(8) %6) + call void @_ZSt11__sort_heapIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_RT0_(ptr %0, ptr %storemerge16.lcssa, ptr noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %.loopexit -17: ; preds = %13 - %18 = add nsw i64 %.017, -1 - %19 = lshr i64 %14, 1 - %20 = getelementptr inbounds nuw %"class.draco::IndexType", ptr %0, i64 %19 - %21 = getelementptr inbounds i8, ptr %storemerge16, i64 -4 - tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_SG_SG_T0_(ptr %0, ptr nonnull %12, ptr %20, ptr nonnull %21, ptr %3) - %22 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEET_SG_SG_SG_T0_(ptr nonnull %12, ptr %storemerge16, ptr %0, ptr %3) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_T0_T1_(ptr %22, ptr %storemerge16, i64 noundef %18, ptr %3) - %23 = ptrtoint ptr %22 to i64 - %24 = sub i64 %23, %7 - %25 = ashr exact i64 %24, 2 - %26 = icmp sgt i64 %25, 16 - br i1 %26, label %13, label %.loopexit, !llvm.loop !131 - -.loopexit: ; preds = %17, %4, %16 +.lr.ph24: ; preds = %.lr.ph, %14 + %storemerge1623 = phi ptr [ %21, %14 ], [ %1, %.lr.ph ] + %.01722 = phi i64 [ %17, %14 ], [ %2, %.lr.ph ] + %16 = phi i64 [ %24, %14 ], [ %10, %.lr.ph ] + %17 = add nsw i64 %.01722, -1 + %18 = lshr i64 %16, 1 + %19 = getelementptr inbounds nuw %"class.draco::IndexType", ptr %0, i64 %18 + %20 = getelementptr inbounds i8, ptr %storemerge1623, i64 -4 + tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_SG_SG_T0_(ptr %0, ptr nonnull %12, ptr %19, ptr nonnull %20, ptr %3) + %21 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEET_SG_SG_SG_T0_(ptr nonnull %12, ptr %storemerge1623, ptr %0, ptr %3) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN5draco9IndexTypeIjNS2_19FaceIndex_tag_type_EEESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterINS2_17MeshAreEquivalent13FaceIndexLessEEEEvT_SG_T0_T1_(ptr %21, ptr %storemerge1623, i64 noundef %17, ptr %3) + %22 = ptrtoint ptr %21 to i64 + %23 = sub i64 %22, %7 + %24 = ashr exact i64 %23, 2 + %25 = icmp sgt i64 %24, 16 + br i1 %25, label %14, label %.loopexit, !llvm.loop !131 + +.loopexit: ; preds = %.lr.ph24, %4, %._crit_edge ret void } diff --git a/bench/duckdb/optimized/stringpiece.ll b/bench/duckdb/optimized/stringpiece.ll index decb3df3ca8..4510599b2dd 100644 --- a/bench/duckdb/optimized/stringpiece.ll +++ b/bench/duckdb/optimized/stringpiece.ll @@ -261,24 +261,31 @@ define hidden noundef i64 @_ZNK10duckdb_re211StringPiece5rfindEcm(ptr noundef no 7: ; preds = %3 %8 = add i64 %2, 1 + %.not12 = icmp eq i64 %8, 0 + br i1 %.not12, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %7 %spec.select = tail call i64 @llvm.umin.i64(i64 %5, i64 %8) - %9 = load ptr, ptr %0, align 8 - br label %select.unfold + %9 = load ptr, ptr %0, align 8, !tbaa !10 + br label %10 -select.unfold: ; preds = %7, %10 - %.07 = phi i64 [ %11, %10 ], [ %spec.select, %7 ] - %.not = icmp eq i64 %.07, 0 - br i1 %.not, label %.loopexit, label %10 +select.unfold: ; preds = %10 + %.not = icmp eq i64 %11, 0 + br i1 %.not, label %.loopexit, label %10, !llvm.loop !16 -10: ; preds = %select.unfold - %11 = add i64 %.07, -1 +10: ; preds = %.lr.ph, %select.unfold + %.0713 = phi i64 [ %spec.select, %.lr.ph ], [ %11, %select.unfold ] + %11 = add i64 %.0713, -1 %12 = getelementptr inbounds nuw i8, ptr %9, i64 %11 %13 = load i8, ptr %12, align 1, !tbaa !11 %14 = icmp eq i8 %13, %1 - br i1 %14, label %.loopexit, label %select.unfold, !llvm.loop !16 + br i1 %14, label %..loopexit_crit_edge, label %select.unfold, !llvm.loop !16 + +..loopexit_crit_edge: ; preds = %10 + br label %.loopexit, !llvm.loop !16 -.loopexit: ; preds = %10, %select.unfold, %3 - %.08 = phi i64 [ -1, %3 ], [ -1, %select.unfold ], [ %11, %10 ] +.loopexit: ; preds = %select.unfold, %7, %..loopexit_crit_edge, %3 + %.08 = phi i64 [ -1, %3 ], [ %11, %..loopexit_crit_edge ], [ -1, %7 ], [ -1, %select.unfold ] ret i64 %.08 } diff --git a/bench/eastl/optimized/eathread_pool.ll b/bench/eastl/optimized/eathread_pool.ll index d4b6533b88d..dd674a247e4 100644 --- a/bench/eastl/optimized/eathread_pool.ll +++ b/bench/eastl/optimized/eathread_pool.ll @@ -2111,23 +2111,28 @@ invoke.cont: %it.sroa.0.0.in10 = getelementptr inbounds nuw i8, ptr %0, i64 16 %it.sroa.0.011 = load ptr, ptr %it.sroa.0.0.in10, align 8 %cmp.i.not12 = icmp eq ptr %1, %it.sroa.0.011 - br i1 %cmp.i.not12, label %cleanup, label %for.body + br i1 %cmp.i.not12, label %cleanup, label %for.body.preheader -invoke.cont5: ; preds = %for.body - %inc = add nuw nsw i32 %i.013, 1 - %it.sroa.0.0.in = getelementptr inbounds nuw i8, ptr %it.sroa.0.014, i64 16 +for.body.preheader: ; preds = %invoke.cont + %cmp18 = icmp eq i32 %index, 0 + br i1 %cmp18, label %invoke.cont7, label %invoke.cont5 + +invoke.cont5: ; preds = %for.body.preheader, %for.body + %i.01320 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ] + %it.sroa.0.01419 = phi ptr [ %it.sroa.0.0, %for.body ], [ %it.sroa.0.011, %for.body.preheader ] + %it.sroa.0.0.in = getelementptr inbounds nuw i8, ptr %it.sroa.0.01419, i64 16 %it.sroa.0.0 = load ptr, ptr %it.sroa.0.0.in, align 8 %cmp.i.not = icmp eq ptr %1, %it.sroa.0.0 br i1 %cmp.i.not, label %cleanup, label %for.body -for.body: ; preds = %invoke.cont, %invoke.cont5 - %it.sroa.0.014 = phi ptr [ %it.sroa.0.0, %invoke.cont5 ], [ %it.sroa.0.011, %invoke.cont ] - %i.013 = phi i32 [ %inc, %invoke.cont5 ], [ 0, %invoke.cont ] - %cmp = icmp eq i32 %i.013, %index +for.body: ; preds = %invoke.cont5 + %inc = add nuw nsw i32 %i.01320, 1 + %cmp = icmp eq i32 %inc, %index br i1 %cmp, label %invoke.cont7, label %invoke.cont5 -invoke.cont7: ; preds = %for.body - %2 = load ptr, ptr %it.sroa.0.014, align 8 +invoke.cont7: ; preds = %for.body, %for.body.preheader + %it.sroa.0.014.lcssa = phi ptr [ %it.sroa.0.011, %for.body.preheader ], [ %it.sroa.0.0, %for.body ] + %2 = load ptr, ptr %it.sroa.0.014.lcssa, align 8 br label %cleanup cleanup: ; preds = %invoke.cont5, %invoke.cont, %invoke.cont7 diff --git a/bench/eastl/optimized/eathread_semaphore.ll b/bench/eastl/optimized/eathread_semaphore.ll index 57c6b940587..612204bbbc2 100644 --- a/bench/eastl/optimized/eathread_semaphore.ll +++ b/bench/eastl/optimized/eathread_semaphore.ll @@ -390,15 +390,16 @@ entry: if.end: ; preds = %entry %add = add nsw i32 %0, %count - br label %while.cond + %cmp35 = icmp sgt i32 %count, 0 + br i1 %cmp35, label %while.body, label %return -while.cond: ; preds = %while.body, %if.end - %count.addr.0 = phi i32 [ %count, %if.end ], [ %dec, %while.body ] - %cmp3 = icmp sgt i32 %count.addr.0, 0 - br i1 %cmp3, label %while.body, label %return +while.cond: ; preds = %while.body + %dec = add nsw i32 %count.addr.06, -1 + %cmp3 = icmp sgt i32 %count.addr.06, 1 + br i1 %cmp3, label %while.body, label %return, !llvm.loop !9 -while.body: ; preds = %while.cond - %dec = add nsw i32 %count.addr.0, -1 +while.body: ; preds = %if.end, %while.cond + %count.addr.06 = phi i32 [ %dec, %while.cond ], [ %count, %if.end ] %2 = atomicrmw add ptr %mnCount, i32 1 seq_cst, align 4 %call8 = tail call i32 @sem_post(ptr noundef nonnull %this) #13 %cmp9 = icmp eq i32 %call8, -1 @@ -408,8 +409,8 @@ if.then10: ; preds = %while.body %3 = atomicrmw sub ptr %mnCount, i32 1 seq_cst, align 4 br label %return -return: ; preds = %while.cond, %entry, %if.then10 - %retval.0 = phi i32 [ -1, %if.then10 ], [ -1, %entry ], [ %add, %while.cond ] +return: ; preds = %while.cond, %if.end, %entry, %if.then10 + %retval.0 = phi i32 [ -1, %if.then10 ], [ -1, %entry ], [ %add, %if.end ], [ %add, %while.cond ] ret i32 %retval.0 } diff --git a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll index 5ef3bbee0ab..a6a0a51af6f 100644 --- a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll +++ b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll @@ -2416,23 +2416,23 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !129 call void @llvm.lifetime.end.p0(ptr nonnull %20), !noalias !129 %.pre.i = load ptr, ptr %22, align 8, !noalias !129 - %.pre50.i = load i64, ptr %51, align 8, !noalias !129 + %.pre52.i = load i64, ptr %51, align 8, !noalias !129 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !129 call void @llvm.lifetime.start.p0(ptr nonnull %13), !noalias !129 store ptr %48, ptr %13, align 8, !noalias !132 store ptr %49, ptr %12, align 8, !noalias !132 %58 = getelementptr inbounds nuw i8, ptr %12, i64 8 store i64 %50, ptr %58, align 8, !noalias !132 - %.idx.i.i = mul nuw nsw i64 %.pre50.i, 24 + %.idx.i.i = mul nuw nsw i64 %.pre52.i, 24 %59 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 %.idx.i.i call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !132 - %60 = icmp eq i64 %.pre50.i, 0 + %60 = icmp eq i64 %.pre52.i, 0 br i1 %60, label %76, label %61, !prof !137 61: ; preds = %.thread, %57 %62 = phi ptr [ %56, %.thread ], [ %59, %57 ] %63 = phi ptr [ %47, %.thread ], [ %.pre.i, %57 ] - %64 = phi i64 [ %43, %.thread ], [ %.pre50.i, %57 ] + %64 = phi i64 [ %43, %.thread ], [ %.pre52.i, %57 ] invoke fastcc void @"_ZN9elfshaker4repo10repository10Repository19are_snapshots_equal28_$u7b$$u7b$closure$u7d$$u7d$17hc40ef7222efdce78E"(ptr noalias noundef align 1 captures(none) dereferenceable(21) %11, ptr nonnull %13, ptr nonnull %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %63) to label %.noexc unwind label %.thread101.loopexit.split-lp.loopexit.split-lp @@ -2633,28 +2633,34 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot call void @llvm.lifetime.end.p0(ptr nonnull %13), !noalias !129 %124 = load i64, ptr %51, align 8, !noalias !129, !noundef !5 %125 = load ptr, ptr %22, align 8, !noalias !129, !nonnull !5, !align !18, !noundef !5 - %126 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %125, i64 %124 - br label %127 + %.idx.i = mul nuw nsw i64 %124, 24 + %126 = getelementptr inbounds nuw i8, ptr %125, i64 %.idx.i + %127 = icmp eq i64 %124, 0 + br i1 %127, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.thread.i", label %.lr.ph.i -127: ; preds = %.noexc49, %.loopexit47.i - %128 = phi ptr [ %132, %.noexc49 ], [ %125, %.loopexit47.i ] - %129 = icmp eq ptr %128, %126 - br i1 %129, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", label %130 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.thread.i": ; preds = %.loopexit47.i + call void @llvm.lifetime.start.p0(ptr nonnull %18), !noalias !129 + br label %138 + +128: ; preds = %.noexc49 + %129 = getelementptr inbounds nuw i8, ptr %131, i64 24 + %130 = icmp eq ptr %129, %126 + br i1 %130, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", label %.lr.ph.i -130: ; preds = %127 - %131 = invoke noundef zeroext i1 @_ZN9elfshaker4repo10repository10Repository13is_pack_loose17he2b99a4b44c027cbE(ptr noundef nonnull align 8 %48, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %128) +.lr.ph.i: ; preds = %.loopexit47.i, %128 + %131 = phi ptr [ %129, %128 ], [ %125, %.loopexit47.i ] + %132 = invoke noundef zeroext i1 @_ZN9elfshaker4repo10repository10Repository13is_pack_loose17he2b99a4b44c027cbE(ptr noundef nonnull align 8 %48, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %131) to label %.noexc49 unwind label %.thread101.loopexit -.noexc49: ; preds = %130 - %132 = getelementptr inbounds nuw i8, ptr %128, i64 24 - br i1 %131, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", label %127 +.noexc49: ; preds = %.lr.ph.i + br i1 %132, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", label %128 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i": ; preds = %.noexc49, %127 - %.sroa.0.0.i.i = phi ptr [ %128, %.noexc49 ], [ null, %127 ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i": ; preds = %.noexc49, %128 + %.sroa.0.0.i.ph.i = phi ptr [ %131, %.noexc49 ], [ null, %128 ] + %.pre53.i = load i64, ptr %51, align 8, !noalias !129 + %133 = icmp eq i64 %.pre53.i, 0 call void @llvm.lifetime.start.p0(ptr nonnull %18), !noalias !129 - %133 = load i64, ptr %51, align 8, !noalias !129, !noundef !5 - %.not33.i = icmp eq i64 %133, 0 - br i1 %.not33.i, label %138, label %141 + br i1 %133, label %138, label %141 134: ; preds = %106, %"_ZN87_$LT$T$u20$as$u20$alloc..slice..$LT$impl$u20$$u5b$T$u5d$$GT$..to_vec_in..ConvertVec$GT$6to_vec17h6d8a11ee69f90a14E.exit.i" %135 = landingpad { ptr, i32 } @@ -2684,7 +2690,7 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !126 unreachable -138: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i" +138: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.thread.i" invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef 0, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.7d7fa6b3a568edea7c5b2245a49c0080.237) #25 to label %.noexc50 unwind label %.thread101.loopexit.split-lp.loopexit.split-lp @@ -2699,8 +2705,8 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot 141: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i" %142 = load ptr, ptr %22, align 8, !noalias !129, !nonnull !5, !align !18, !noundef !5 - %.not34.i = icmp eq ptr %.sroa.0.0.i.i, null - %spec.select.i = select i1 %.not34.i, ptr %142, ptr %.sroa.0.0.i.i + %.not34.i = icmp eq ptr %.sroa.0.0.i.ph.i, null + %spec.select.i = select i1 %.not34.i, ptr %142, ptr %.sroa.0.0.i.ph.i invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17h264d14c2948c37e0E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %spec.select.i) to label %.noexc51 unwind label %.thread101.loopexit.split-lp.loopexit.split-lp @@ -2783,7 +2789,7 @@ _ZN9elfshaker4repo10repository10Repository21disambiguate_snapshot17h1a11d1daadc1 %170 = load i64, ptr %168, align 8, !noalias !169 br label %.invoke -.thread101.loopexit: ; preds = %130 +.thread101.loopexit: ; preds = %.lr.ph.i %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.thread96 diff --git a/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll b/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll index c51a65e48e4..549f2e364b5 100644 --- a/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll +++ b/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll @@ -2221,32 +2221,35 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$co %6 = icmp ult i64 %.val2, 192153584101141163 tail call void @llvm.assume(i1 %6) %7 = icmp samesign ugt i64 %.val2, 1 - br i1 %7, label %8, label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" + br i1 %7, label %.lr.ph.preheader.i, label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" -8: ; preds = %2 - %9 = icmp ne ptr %.val, null +.lr.ph.preheader.i: ; preds = %2 + %8 = icmp ne ptr %.val, null + tail call void @llvm.assume(i1 %8) + %9 = icmp ne ptr %.val1, null tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %.val1, null - tail call void @llvm.assume(i1 %10) - %11 = getelementptr inbounds nuw { { { { { { i64, ptr, {} }, {} }, i64 } } }, { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %.val1, i64 %.val2 - %12 = load ptr, ptr %.val, align 8, !nonnull !3, !align !4, !noundef !3 + %.idx.i = mul nuw nsw i64 %.val2, 48 + %10 = getelementptr inbounds nuw i8, ptr %.val1, i64 %.idx.i + %11 = load ptr, ptr %.val, align 8, !nonnull !3, !align !4, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !372) - %13 = load ptr, ptr %12, align 8, !alias.scope !372, !noalias !375, !nonnull !3, !align !4 - br label %14 - -14: ; preds = %16, %8 - %15 = phi ptr [ %17, %16 ], [ %.val1, %8 ] - %.not.not.not.i.not.not.i.not.not = icmp ne ptr %15, %11 - br i1 %.not.not.not.i.not.not.i.not.not, label %16, label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" - -16: ; preds = %14 - %17 = getelementptr inbounds nuw i8, ptr %15, i64 48 - %18 = tail call noundef align 8 dereferenceable(24) ptr @_ZN9elfshaker4repo4pack10SnapshotId4pack17hdbb36c0228d6311cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %15), !noalias !377 - %19 = tail call noundef zeroext i1 @_ZN9elfshaker4repo10repository10Repository13is_pack_loose17he2b99a4b44c027cbE(ptr noundef nonnull align 8 %13, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %18), !noalias !377 - br i1 %19, label %14, label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" - -"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit": ; preds = %14, %16, %2 - %.sroa.0.0.i = phi i1 [ false, %2 ], [ %.not.not.not.i.not.not.i.not.not, %16 ], [ %.not.not.not.i.not.not.i.not.not, %14 ] + %12 = load ptr, ptr %11, align 8, !alias.scope !372, !noalias !375, !nonnull !3, !align !4 + br label %.lr.ph.i + +.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i + %13 = phi ptr [ %.val1, %.lr.ph.preheader.i ], [ %16, %.lr.ph.i ] + %14 = tail call noundef align 8 dereferenceable(24) ptr @_ZN9elfshaker4repo4pack10SnapshotId4pack17hdbb36c0228d6311cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %13), !noalias !377 + %15 = tail call noundef zeroext i1 @_ZN9elfshaker4repo10repository10Repository13is_pack_loose17he2b99a4b44c027cbE(ptr noundef nonnull align 8 %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %14), !noalias !377 + %16 = getelementptr inbounds nuw i8, ptr %13, i64 48 + %.not.not.not.i.not.i = icmp ne ptr %16, %10 + %or.cond.not.i = select i1 %15, i1 %.not.not.not.i.not.i, i1 false + br i1 %or.cond.not.i, label %.lr.ph.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i": ; preds = %.lr.ph.i + %.sroa.0.0.ph.i = xor i1 %15, true + br label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" + +"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit": ; preds = %2, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i" + %.sroa.0.0.i = phi i1 [ false, %2 ], [ %.sroa.0.0.ph.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i" ] ret i1 %.sroa.0.0.i } diff --git a/bench/faiss/optimized/colorprint.ll b/bench/faiss/optimized/colorprint.ll index d735ba12b09..20ca8f9d207 100644 --- a/bench/faiss/optimized/colorprint.ll +++ b/bench/faiss/optimized/colorprint.ll @@ -373,29 +373,27 @@ define hidden noundef zeroext i1 @_ZN9benchmark15IsColorTerminalEv() local_unnam .split: ; preds = %0 %2 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(6) @.str.2) #17 %3 = icmp eq i32 %2, 0 - br i1 %3, label %.split21.us, label %.lr.ph - -4: ; preds = %.lr.ph - %.011.ptr = getelementptr inbounds nuw i8, ptr @__const._ZN9benchmark15IsColorTerminalEv.SUPPORTED_TERM_VALUES, i64 %.011.add - %5 = load ptr, ptr %.011.ptr, align 8, !tbaa !19 - %6 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) %5) #17 - %7 = icmp eq i32 %6, 0 - br i1 %7, label %.split21.us, label %.lr.ph - -.lr.ph: ; preds = %.split, %4 - %.011.idx1722 = phi i64 [ %.011.add, %4 ], [ 0, %.split ] - %.011.add = add nuw nsw i64 %.011.idx1722, 8 - %.not.not.not.not = icmp ne i64 %.011.add, 128 - br i1 %.not.not.not.not, label %4, label %.split21.us - -.split21.us: ; preds = %4, %.lr.ph, %0, %.split - %.us-phi = phi i1 [ true, %.split ], [ false, %0 ], [ %.not.not.not.not, %.lr.ph ], [ %.not.not.not.not, %4 ] - %8 = load ptr, ptr @stdout, align 8, !tbaa !20 - %9 = tail call i32 @fileno(ptr noundef %8) #14 - %10 = tail call i32 @isatty(i32 noundef %9) #14 - %11 = icmp ne i32 %10, 0 - %12 = and i1 %.us-phi, %11 - ret i1 %12 + br i1 %3, label %.split21.us, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %.split, %.lr.ph.preheader + %.011.add26 = phi i64 [ %.011.add, %.lr.ph.preheader ], [ 8, %.split ] + %.011.ptr = getelementptr inbounds nuw i8, ptr @__const._ZN9benchmark15IsColorTerminalEv.SUPPORTED_TERM_VALUES, i64 %.011.add26 + %4 = load ptr, ptr %.011.ptr, align 8, !tbaa !19 + %5 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) %4) #17 + %6 = icmp eq i32 %5, 0 + %.011.add = add nuw nsw i64 %.011.add26, 8 + %.not.not.not = icmp eq i64 %.011.add, 128 + %or.cond = select i1 %6, i1 true, i1 %.not.not.not + br i1 %or.cond, label %.split21.us, label %.lr.ph.preheader + +.split21.us: ; preds = %.lr.ph.preheader, %0, %.split + %.us-phi = phi i1 [ true, %.split ], [ false, %0 ], [ %6, %.lr.ph.preheader ] + %7 = load ptr, ptr @stdout, align 8, !tbaa !20 + %8 = tail call i32 @fileno(ptr noundef %7) #14 + %9 = tail call i32 @isatty(i32 noundef %8) #14 + %10 = icmp ne i32 %9, 0 + %11 = and i1 %.us-phi, %10 + ret i1 %11 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/ffmpeg/optimized/ebur128.ll b/bench/ffmpeg/optimized/ebur128.ll index b757cd40f5a..666f5d9994e 100644 --- a/bench/ffmpeg/optimized/ebur128.ll +++ b/bench/ffmpeg/optimized/ebur128.ll @@ -947,23 +947,22 @@ ebur128_calc_relative_threshold.exit: ; preds = %10 ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define range(i32 -22, 1) i32 @ff_ebur128_loudness_global(ptr noundef readonly captures(none) %0, ptr noundef writeonly captures(none) %1) local_unnamed_addr #5 { -.critedge: - %2 = load i32, ptr %0, align 8, !tbaa !25 - %3 = and i32 %2, 5 - %.not41.i = icmp eq i32 %3, 5 - br i1 %.not41.i, label %4, label %ebur128_gated_loudness.exit, !llvm.loop !51 + %3 = load i32, ptr %0, align 8, !tbaa !25 + %4 = and i32 %3, 5 + %.not41.i = icmp eq i32 %4, 5 + br i1 %.not41.i, label %.split.i, label %ebur128_gated_loudness.exit, !llvm.loop !51 -4: ; preds = %.critedge +.split.i: ; preds = %2 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !4 %7 = getelementptr inbounds nuw i8, ptr %6, i64 328 %8 = load ptr, ptr %7, align 8, !tbaa !31 br label %9 -9: ; preds = %9, %4 - %.122.i.i = phi i32 [ 0, %4 ], [ %18, %9 ] - %.02021.i.i = phi i64 [ 0, %4 ], [ %19, %9 ] - %10 = phi double [ 0.000000e+00, %4 ], [ %16, %9 ] +9: ; preds = %9, %.split.i + %.122.i.i = phi i32 [ 0, %.split.i ], [ %18, %9 ] + %.02021.i.i = phi i64 [ 0, %.split.i ], [ %19, %9 ] + %10 = phi double [ 0.000000e+00, %.split.i ], [ %16, %9 ] %11 = getelementptr inbounds nuw i64, ptr %8, i64 %.02021.i.i %12 = load i64, ptr %11, align 8, !tbaa !48 %13 = uitofp i64 %12 to double @@ -1028,26 +1027,26 @@ find_histogram_index.exit.i: ; preds = %.preheader2.i %43 = add i64 %38, %.1346.us.i %44 = add nuw i64 %.0317.us.i, 1 %exitcond.not.i = icmp eq i64 %44, 1000 - br i1 %exitcond.not.i, label %.split12.i, label %.preheader.us.i, !llvm.loop !52 + br i1 %exitcond.not.i, label %.split13.i, label %.preheader.us.i, !llvm.loop !52 -.split12.i: ; preds = %.preheader.us.i +.split13.i: ; preds = %.preheader.us.i %.not40.i = icmp eq i64 %43, 0 br i1 %.not40.i, label %.loopexit3.sink.split.i, label %45 -45: ; preds = %.split12.i +45: ; preds = %.split13.i %46 = uitofp i64 %43 to double %47 = fdiv nsz double %42, %46 %48 = tail call nsz double @llvm.log10.f64(double %47) %49 = tail call nsz noundef double @llvm.fmuladd.f64(double %48, double 1.000000e+01, double -6.910000e-01) br label %.loopexit3.sink.split.i -.loopexit3.sink.split.i: ; preds = %45, %.split12.i, %find_histogram_index.exit.i, %ebur128_calc_relative_threshold.exit.i - %.sink.i = phi double [ %49, %45 ], [ 0xFFF0000000000000, %ebur128_calc_relative_threshold.exit.i ], [ 0xFFF0000000000000, %find_histogram_index.exit.i ], [ 0xFFF0000000000000, %.split12.i ] +.loopexit3.sink.split.i: ; preds = %45, %.split13.i, %find_histogram_index.exit.i, %ebur128_calc_relative_threshold.exit.i + %.sink.i = phi double [ %49, %45 ], [ 0xFFF0000000000000, %ebur128_calc_relative_threshold.exit.i ], [ 0xFFF0000000000000, %find_histogram_index.exit.i ], [ 0xFFF0000000000000, %.split13.i ] store double %.sink.i, ptr %1, align 8, !tbaa !29 br label %ebur128_gated_loudness.exit -ebur128_gated_loudness.exit: ; preds = %.critedge, %.loopexit3.sink.split.i - %.037.i = phi i32 [ 0, %.loopexit3.sink.split.i ], [ -22, %.critedge ] +ebur128_gated_loudness.exit: ; preds = %2, %.loopexit3.sink.split.i + %.037.i = phi i32 [ -22, %2 ], [ 0, %.loopexit3.sink.split.i ] ret i32 %.037.i } diff --git a/bench/ffmpeg/optimized/img2.ll b/bench/ffmpeg/optimized/img2.ll index 4f6ed45cf77..519c25538ab 100644 --- a/bench/ffmpeg/optimized/img2.ll +++ b/bench/ffmpeg/optimized/img2.ll @@ -17,26 +17,28 @@ define i32 @ff_guess_image2_codec(ptr noundef %0) local_unnamed_addr #0 { %4 = getelementptr inbounds nuw i8, ptr %2, i64 1 %5 = tail call i32 @av_strcasecmp(ptr noundef nonnull %4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_img_tags, i64 4)) #4 %.not11.i1 = icmp eq i32 %5, 0 - br i1 %.not11.i1, label %str2id.exit, label %.lr.ph + br i1 %.not11.i1, label %str2id.exit, label %.lr.ph.preheader -.lr.ph: ; preds = %3, %8 - %.01.i2 = phi ptr [ %6, %8 ], [ @ff_img_tags, %3 ] - %6 = getelementptr inbounds nuw i8, ptr %.01.i2, i64 16 +.lr.ph: ; preds = %.lr.ph.preheader + %6 = getelementptr inbounds nuw i8, ptr %9, i64 16 %7 = load i32, ptr %6, align 4, !tbaa !4 %.not10.i = icmp eq i32 %7, 0 - br i1 %.not10.i, label %.str2id.exit.loopexit_crit_edge3, label %8, !llvm.loop !9 + br i1 %.not10.i, label %.str2id.exit.loopexit_crit_edge3, label %.lr.ph.preheader, !llvm.loop !9 -8: ; preds = %.lr.ph - %9 = getelementptr inbounds nuw i8, ptr %.01.i2, i64 20 - %10 = tail call i32 @av_strcasecmp(ptr noundef nonnull %4, ptr noundef nonnull %9) #4 - %.not11.i = icmp eq i32 %10, 0 +.lr.ph.preheader: ; preds = %3, %.lr.ph + %8 = phi i32 [ %7, %.lr.ph ], [ 7, %3 ] + %9 = phi ptr [ %6, %.lr.ph ], [ getelementptr inbounds nuw (i8, ptr @ff_img_tags, i64 16), %3 ] + %.01.i29 = phi ptr [ %9, %.lr.ph ], [ @ff_img_tags, %3 ] + %10 = getelementptr inbounds nuw i8, ptr %.01.i29, i64 20 + %11 = tail call i32 @av_strcasecmp(ptr noundef nonnull %4, ptr noundef nonnull %10) #4 + %.not11.i = icmp eq i32 %11, 0 br i1 %.not11.i, label %str2id.exit, label %.lr.ph, !llvm.loop !9 .str2id.exit.loopexit_crit_edge3: ; preds = %.lr.ph br label %str2id.exit, !llvm.loop !9 -str2id.exit: ; preds = %8, %3, %.str2id.exit.loopexit_crit_edge3, %1 - %.08.i = phi i32 [ 0, %1 ], [ 0, %.str2id.exit.loopexit_crit_edge3 ], [ 7, %3 ], [ %7, %8 ] +str2id.exit: ; preds = %.lr.ph.preheader, %3, %.str2id.exit.loopexit_crit_edge3, %1 + %.08.i = phi i32 [ 0, %1 ], [ 0, %.str2id.exit.loopexit_crit_edge3 ], [ 7, %3 ], [ %8, %.lr.ph.preheader ] ret i32 %.08.i } diff --git a/bench/folly/optimized/Dump.ll b/bench/folly/optimized/Dump.ll index 72caa812b4f..5738ba61245 100644 --- a/bench/folly/optimized/Dump.ll +++ b/bench/folly/optimized/Dump.ll @@ -2137,49 +2137,51 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI .lr.ph: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %0, i64 80 - br label %11 + %11 = icmp eq i64 %2, 0 + br i1 %11, label %._crit_edge, label %.lr.ph21 -11: ; preds = %.lr.ph, %19 - %12 = phi i64 [ %8, %.lr.ph ], [ %26, %19 ] - %.014 = phi i64 [ %2, %.lr.ph ], [ %20, %19 ] - %storemerge13 = phi ptr [ %1, %.lr.ph ], [ %24, %19 ] - %13 = icmp eq i64 %.014, 0 - br i1 %13, label %14, label %19 +12: ; preds = %.lr.ph21 + %13 = icmp eq i64 %19, 0 + br i1 %13, label %._crit_edge, label %.lr.ph21, !llvm.loop !121 -14: ; preds = %11 +._crit_edge: ; preds = %12, %.lr.ph + %storemerge13.lcssa = phi ptr [ %1, %.lr.ph ], [ %23, %12 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_RT0_(ptr %0, ptr %storemerge13, ptr noundef nonnull align 1 dereferenceable(1) %4) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_RT0_(ptr %0, ptr %storemerge13.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.lr.ph.i8.i -.lr.ph.i8.i: ; preds = %14, %.lr.ph.i8.i - %.sroa.0.05.i.i = phi ptr [ %15, %.lr.ph.i8.i ], [ %storemerge13, %14 ] - %15 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -80 - call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_RT0_(ptr %0, ptr nonnull %15, ptr nonnull %15, ptr noundef nonnull align 1 dereferenceable(1) %5) - %16 = ptrtoint ptr %15 to i64 - %17 = sub i64 %16, %6 - %18 = icmp sgt i64 %17, 80 - br i1 %18, label %.lr.ph.i8.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit, !llvm.loop !121 +.lr.ph.i8.i: ; preds = %._crit_edge, %.lr.ph.i8.i + %.sroa.0.05.i.i = phi ptr [ %14, %.lr.ph.i8.i ], [ %storemerge13.lcssa, %._crit_edge ] + %14 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -80 + call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_RT0_(ptr %0, ptr nonnull %14, ptr nonnull %14, ptr noundef nonnull align 1 dereferenceable(1) %5) + %15 = ptrtoint ptr %14 to i64 + %16 = sub i64 %15, %6 + %17 = icmp sgt i64 %16, 80 + br i1 %17, label %.lr.ph.i8.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit, !llvm.loop !122 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit: ; preds = %.lr.ph.i8.i call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -19: ; preds = %11 - %20 = add nsw i64 %.014, -1 - %21 = udiv i64 %12, 160 - %22 = getelementptr inbounds nuw %"struct.std::pair.17", ptr %0, i64 %21 - %23 = getelementptr inbounds i8, ptr %storemerge13, i64 -80 - tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_SD_T0_(ptr %0, ptr nonnull %10, ptr %22, ptr nonnull %23) - %24 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEET_SD_SD_SD_T0_(ptr nonnull %10, ptr %storemerge13, ptr %0) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_less_iterEEvT_SD_T0_T1_(ptr %24, ptr %storemerge13, i64 noundef %20) - %25 = ptrtoint ptr %24 to i64 - %26 = sub i64 %25, %6 - %27 = icmp sgt i64 %26, 1280 - br i1 %27, label %11, label %.loopexit, !llvm.loop !122 - -.loopexit: ; preds = %19, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit +.lr.ph21: ; preds = %.lr.ph, %12 + %storemerge1320 = phi ptr [ %23, %12 ], [ %1, %.lr.ph ] + %.01419 = phi i64 [ %19, %12 ], [ %2, %.lr.ph ] + %18 = phi i64 [ %25, %12 ], [ %8, %.lr.ph ] + %19 = add nsw i64 %.01419, -1 + %20 = udiv i64 %18, 160 + %21 = getelementptr inbounds nuw %"struct.std::pair.17", ptr %0, i64 %20 + %22 = getelementptr inbounds i8, ptr %storemerge1320, i64 -80 + tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_SD_T0_(ptr %0, ptr nonnull %10, ptr %21, ptr nonnull %22) + %23 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEET_SD_SD_SD_T0_(ptr nonnull %10, ptr %storemerge1320, ptr %0) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_less_iterEEvT_SD_T0_T1_(ptr %23, ptr %storemerge1320, i64 noundef %19) + %24 = ptrtoint ptr %23 to i64 + %25 = sub i64 %24, %6 + %26 = icmp sgt i64 %25, 1280 + br i1 %26, label %12, label %.loopexit, !llvm.loop !121 + +.loopexit: ; preds = %.lr.ph21, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit ret void } diff --git a/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll b/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll index 67489513e6c..d0a00028f86 100644 --- a/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll +++ b/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll @@ -11736,28 +11736,30 @@ define internal noundef zeroext i1 @_ZN5tokio2io11async_write10AsyncWrite17is_wr ; Function Attrs: nonlazybind uwtable define internal { i64, ptr } @_ZN5tokio2io11async_write10AsyncWrite19poll_write_vectored17h391dd509303a8d76E(ptr noalias noundef align 8 dereferenceable(80) %0, ptr noalias noundef align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 8 captures(address) %2, i64 noundef %3) unnamed_addr #0 personality ptr @rust_eh_personality { - %5 = getelementptr inbounds nuw { { { ptr, i64 }, {} } }, ptr %2, i64 %3 - br label %6 - -6: ; preds = %9, %4 - %7 = phi ptr [ %10, %9 ], [ %2, %4 ] - %8 = icmp eq ptr %7, %5 - br i1 %8, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit", label %9 - -9: ; preds = %6 - %10 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %11 = getelementptr i8, ptr %7, i64 8 + %.idx = shl nuw nsw i64 %3, 4 + %5 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx + %6 = icmp eq i64 %3, 0 + br i1 %6, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit", label %.lr.ph + +7: ; preds = %.lr.ph + %8 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %9 = icmp eq ptr %8, %5 + br i1 %9, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit", label %.lr.ph + +.lr.ph: ; preds = %4, %7 + %10 = phi ptr [ %8, %7 ], [ %2, %4 ] + %11 = getelementptr i8, ptr %10, i64 8 %12 = load i64, ptr %11, align 8, !noalias !714, !noundef !4 %.not.i = icmp eq i64 %12, 0 - br i1 %.not.i, label %6, label %13 + br i1 %.not.i, label %7, label %13 -13: ; preds = %9 - %.val.i = load ptr, ptr %7, align 8, !alias.scope !717, !noundef !4 +13: ; preds = %.lr.ph + %.val.i = load ptr, ptr %10, align 8, !alias.scope !717, !noundef !4 br label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit" -"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit": ; preds = %6, %13 - %.sroa.3.0.i = phi i64 [ %12, %13 ], [ 0, %6 ] - %.sroa.02.0.i = phi ptr [ %.val.i, %13 ], [ inttoptr (i64 1 to ptr), %6 ] +"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit": ; preds = %7, %4, %13 + %.sroa.3.0.i = phi i64 [ %12, %13 ], [ 0, %4 ], [ 0, %7 ] + %.sroa.02.0.i = phi ptr [ %.val.i, %13 ], [ inttoptr (i64 1 to ptr), %4 ], [ inttoptr (i64 1 to ptr), %7 ] %14 = icmp ne ptr %.sroa.02.0.i, null tail call void @llvm.assume(i1 %14) %15 = tail call { i64, ptr } @"_ZN92_$LT$hyper..proto..h2..H2Upgraded$LT$B$GT$$u20$as$u20$tokio..io..async_write..AsyncWrite$GT$10poll_write17h8576ecc4841d3de1E"(ptr noalias noundef nonnull align 8 dereferenceable(80) %0, ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 1 %.sroa.02.0.i, i64 noundef %.sroa.3.0.i) diff --git a/bench/freetype/optimized/sfnt.ll b/bench/freetype/optimized/sfnt.ll index 3075c6d3668..528c2f194c7 100644 --- a/bench/freetype/optimized/sfnt.ll +++ b/bench/freetype/optimized/sfnt.ll @@ -140,28 +140,35 @@ define internal range(i32 0, 256) i32 @tt_cmap0_char_next(ptr noundef readonly c %4 = load ptr, ptr %3, align 8, !tbaa !3 %5 = load i32, ptr %1, align 4, !tbaa !16 %6 = getelementptr inbounds nuw i8, ptr %4, i64 6 - br label %7 + %7 = add i32 %5, 1 + %8 = icmp ult i32 %7, 256 + br i1 %8, label %.lr.ph.preheader, label %.loopexit -7: ; preds = %10, %2 - %.012 = phi i32 [ %5, %2 ], [ %8, %10 ] - %8 = add i32 %.012, 1 - %9 = icmp ult i32 %8, 256 - br i1 %9, label %10, label %.loopexit +.lr.ph.preheader: ; preds = %2 + %9 = zext nneg i32 %7 to i64 + br label %.lr.ph -10: ; preds = %7 - %11 = zext nneg i32 %8 to i64 - %12 = getelementptr inbounds nuw i8, ptr %6, i64 %11 +10: ; preds = %.lr.ph + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %11 = and i64 %indvars.iv.next, 4294967295 + %exitcond.not = icmp eq i64 %11, 256 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !17 + +.lr.ph: ; preds = %.lr.ph.preheader, %10 + %indvars.iv = phi i64 [ %9, %.lr.ph.preheader ], [ %indvars.iv.next, %10 ] + %12 = getelementptr inbounds nuw i8, ptr %6, i64 %indvars.iv %13 = load i8, ptr %12, align 1, !tbaa !15 %.not = icmp eq i8 %13, 0 - br i1 %.not, label %7, label %14, !llvm.loop !17 + br i1 %.not, label %10, label %14, !llvm.loop !17 -14: ; preds = %10 - %15 = zext i8 %13 to i32 +14: ; preds = %.lr.ph + %15 = trunc nuw nsw i64 %indvars.iv to i32 + %16 = zext i8 %13 to i32 br label %.loopexit -.loopexit: ; preds = %7, %14 - %.011 = phi i32 [ %8, %14 ], [ 0, %7 ] - %.1 = phi i32 [ %15, %14 ], [ 0, %7 ] +.loopexit: ; preds = %10, %2, %14 + %.011 = phi i32 [ %15, %14 ], [ 0, %2 ], [ 0, %10 ] + %.1 = phi i32 [ %16, %14 ], [ 0, %2 ], [ 0, %10 ] store i32 %.011, ptr %1, align 4, !tbaa !16 ret i32 %.1 } diff --git a/bench/git/optimized/delta-islands.ll b/bench/git/optimized/delta-islands.ll index 71019299482..e5b7ba76e3c 100644 --- a/bench/git/optimized/delta-islands.ll +++ b/bench/git/optimized/delta-islands.ll @@ -1973,26 +1973,30 @@ define internal noundef i32 @find_island_for_ref(ptr noundef %0, ptr readnone ca call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) @__const.find_island_for_ref.island_name, i64 24, i1 false) %8 = getelementptr inbounds nuw i8, ptr %4, i64 16 %9 = load i64, ptr %8, align 8, !tbaa !59 - %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %11 = and i64 %9, 4294967295 - br label %12 + %10 = trunc i64 %9 to i32 + %.01945 = add i32 %10, -1 + %11 = icmp sgt i32 %.01945, -1 + br i1 %11, label %.lr.ph, label %.thread + +.lr.ph: ; preds = %5 + %12 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %13 = zext nneg i32 %.01945 to i64 + br label %16 -12: ; preds = %15, %5 - %indvars.iv = phi i64 [ %indvars.iv.next, %15 ], [ %11, %5 ] +14: ; preds = %16 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %13 = and i64 %indvars.iv.next, 2147483648 - %14 = icmp eq i64 %13, 0 - br i1 %14, label %15, label %.thread - -15: ; preds = %12 - %16 = load ptr, ptr %10, align 8, !tbaa !60 - %17 = and i64 %indvars.iv.next, 2147483647 - %18 = getelementptr inbounds nuw %struct.re_pattern_buffer, ptr %16, i64 %17 + %15 = icmp sgt i64 %indvars.iv, 0 + br i1 %15, label %16, label %.thread, !llvm.loop !94 + +16: ; preds = %.lr.ph, %14 + %indvars.iv = phi i64 [ %13, %.lr.ph ], [ %indvars.iv.next, %14 ] + %17 = load ptr, ptr %12, align 8, !tbaa !60 + %18 = getelementptr inbounds nuw %struct.re_pattern_buffer, ptr %17, i64 %indvars.iv %19 = call i32 @regexec(ptr noundef %18, ptr noundef %0, i64 noundef 16, ptr noundef nonnull %6, i32 noundef 0) #17 %.not = icmp eq i32 %19, 0 - br i1 %.not, label %20, label %12, !llvm.loop !94 + br i1 %.not, label %20, label %14, !llvm.loop !94 -20: ; preds = %15 +20: ; preds = %16 %21 = getelementptr inbounds nuw i8, ptr %6, i64 120 %22 = load i32, ptr %21, align 8, !tbaa !95 %.not20 = icmp eq i32 %22, -1 @@ -2018,8 +2022,8 @@ _.exit: ; preds = %23, %25 br label %30 30: ; preds = %27, %52 - %indvars.iv67 = phi i64 [ 1, %27 ], [ %indvars.iv.next68, %52 ] - %31 = getelementptr inbounds nuw %struct.regmatch_t, ptr %6, i64 %indvars.iv67 + %indvars.iv69 = phi i64 [ 1, %27 ], [ %indvars.iv.next70, %52 ] + %31 = getelementptr inbounds nuw %struct.regmatch_t, ptr %6, i64 %indvars.iv69 %32 = load i32, ptr %31, align 8, !tbaa !95 %33 = icmp eq i32 %32, -1 br i1 %33, label %52, label %34 @@ -2069,8 +2073,8 @@ strbuf_addch.exit: ; preds = %36, %strbuf_avail.e br label %52 52: ; preds = %30, %44 - %indvars.iv.next68 = add nuw nsw i64 %indvars.iv67, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next68, 16 + %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next70, 16 br i1 %exitcond.not, label %53, label %30, !llvm.loop !99 53: ; preds = %52 @@ -2508,7 +2512,7 @@ add_ref_to_island.exit: ; preds = %.kh_put_str.exit_cr call void @strbuf_release(ptr noundef nonnull %7) #17 br label %.thread -.thread: ; preds = %12, %add_ref_to_island.exit +.thread: ; preds = %14, %5, %add_ref_to_island.exit call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 0 diff --git a/bench/git/optimized/reftable-backend.ll b/bench/git/optimized/reftable-backend.ll index a5aa4985527..d3c6328670e 100644 --- a/bench/git/optimized/reftable-backend.ll +++ b/bench/git/optimized/reftable-backend.ll @@ -3011,25 +3011,29 @@ select.unfold.preheader: ; preds = %5 %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 %11 = load i64, ptr %10, align 8, !tbaa !77 %12 = load ptr, ptr %6, align 8 - br label %13 + %exitcond.not74 = icmp eq i64 %11, 0 + br i1 %exitcond.not74, label %.critedge, label %select.unfold.preheader76 + +select.unfold.preheader76: ; preds = %select.unfold.preheader + %13 = load ptr, ptr %2, align 8, !tbaa !80 + %.not5773 = icmp eq ptr %13, null + br label %select.unfold -13: ; preds = %select.unfold.preheader, %select.unfold - %.04666 = phi i64 [ 0, %select.unfold.preheader ], [ %19, %select.unfold ] - %exitcond.not = icmp eq i64 %.04666, %11 +14: ; preds = %select.unfold + %15 = add i64 %.0466675, 1 + %exitcond.not = icmp eq i64 %15, %11 br i1 %exitcond.not, label %.critedge, label %select.unfold -select.unfold: ; preds = %13 - %14 = load ptr, ptr %2, align 8, !tbaa !80 - %15 = getelementptr inbounds nuw %struct.write_transaction_table_arg, ptr %14, i64 %.04666 - %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %17 = load ptr, ptr %16, align 8, !tbaa !158 - %18 = icmp ne ptr %17, %12 - %19 = add i64 %.04666, 1 - %.not5773 = icmp eq ptr %14, null - %.not57 = or i1 %18, %.not5773 - br i1 %.not57, label %13, label %.critedge61 - -.critedge: ; preds = %13 +select.unfold: ; preds = %select.unfold.preheader76, %14 + %.0466675 = phi i64 [ %15, %14 ], [ 0, %select.unfold.preheader76 ] + %16 = getelementptr inbounds nuw %struct.write_transaction_table_arg, ptr %13, i64 %.0466675 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %18 = load ptr, ptr %17, align 8, !tbaa !158 + %19 = icmp ne ptr %18, %12 + %.not57 = or i1 %19, %.not5773 + br i1 %.not57, label %14, label %.critedge61 + +.critedge: ; preds = %14, %select.unfold.preheader call void @llvm.lifetime.start.p0(ptr nonnull %7) %20 = load ptr, ptr %12, align 8, !tbaa !65 %21 = tail call i32 @reftable_stack_reload(ptr noundef %20) #20 @@ -3105,7 +3109,7 @@ st_mult.exit: ; preds = %32 br label %.critedge61 .critedge61: ; preds = %select.unfold, %40 - %.2 = phi ptr [ %43, %40 ], [ %15, %select.unfold ] + %.2 = phi ptr [ %43, %40 ], [ %16, %select.unfold ] %48 = getelementptr inbounds nuw i8, ptr %.2, i64 48 %49 = load i64, ptr %48, align 8, !tbaa !85 %50 = add i64 %49, 1 diff --git a/bench/git/optimized/shell.ll b/bench/git/optimized/shell.ll index 232ffb55b2d..cfaeaf4c4db 100644 --- a/bench/git/optimized/shell.ll +++ b/bench/git/optimized/shell.ll @@ -521,35 +521,36 @@ define internal i32 @do_generic_cmd(ptr noundef %0, ptr noundef %1) #0 { tail call void (ptr, ...) @die(ptr noundef nonnull @.str.28) #15 unreachable -.preheader: ; preds = %6, %10 - %.07.i = phi ptr [ %12, %10 ], [ %0, %6 ] - %.06.idx.i = phi i64 [ %.06.add.i, %10 ], [ 0, %6 ] - %exitcond.i = icmp eq i64 %.06.idx.i, 4 - br i1 %exitcond.i, label %15, label %10 - 10: ; preds = %.preheader - %.06.ptr.i = getelementptr inbounds nuw i8, ptr @.str.29, i64 %.06.idx.i - %11 = load i8, ptr %.06.ptr.i, align 1, !tbaa !9 - %12 = getelementptr inbounds nuw i8, ptr %.07.i, i64 1 - %13 = load i8, ptr %.07.i, align 1, !tbaa !9 - %.06.add.i = add nuw nsw i64 %.06.idx.i, 1 - %14 = icmp eq i8 %13, %11 - br i1 %14, label %.preheader, label %skip_prefix.exit, !llvm.loop !22 - -skip_prefix.exit: ; preds = %10 + %.065.add.i = add nuw nsw i64 %.065.idx.i, 1 + %.ptr.i = getelementptr inbounds nuw i8, ptr @.str.29, i64 %.065.add.i + %11 = getelementptr inbounds nuw i8, ptr %.074.i, i64 1 + %12 = load i8, ptr %.ptr.i, align 1, !tbaa !9 + %exitcond.i = icmp eq i64 %.065.add.i, 4 + br i1 %exitcond.i, label %16, label %.preheader, !llvm.loop !22 + +.preheader: ; preds = %6, %10 + %13 = phi i8 [ %12, %10 ], [ 103, %6 ] + %.065.idx.i = phi i64 [ %.065.add.i, %10 ], [ 0, %6 ] + %.074.i = phi ptr [ %11, %10 ], [ %0, %6 ] + %14 = load i8, ptr %.074.i, align 1, !tbaa !9 + %15 = icmp eq i8 %14, %13 + br i1 %15, label %10, label %skip_prefix.exit, !llvm.loop !22 + +skip_prefix.exit: ; preds = %.preheader tail call void (ptr, ...) @die(ptr noundef nonnull @.str.30) #15 unreachable -15: ; preds = %.preheader +16: ; preds = %10 %scevgep.i = getelementptr i8, ptr %0, i64 4 store ptr %scevgep.i, ptr %3, align 16, !tbaa !4 - %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %5, ptr %16, align 8, !tbaa !4 - %17 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr null, ptr %17, align 16, !tbaa !4 - %18 = call i32 @execv_git_cmd(ptr noundef nonnull %3) #14 + %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %5, ptr %17, align 8, !tbaa !4 + %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr null, ptr %18, align 16, !tbaa !4 + %19 = call i32 @execv_git_cmd(ptr noundef nonnull %3) #14 call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %18 + ret i32 %19 } declare void @setup_path() local_unnamed_addr #5 diff --git a/bench/graphviz/optimized/actions.ll b/bench/graphviz/optimized/actions.ll index 6b40db6476e..fecdc50b1c3 100644 --- a/bench/graphviz/optimized/actions.ll +++ b/bench/graphviz/optimized/actions.ll @@ -2659,28 +2659,32 @@ define i64 @rindexOf(ptr noundef %0, ptr noundef readonly captures(none) %1) loc %11 = getelementptr inbounds nuw i8, ptr %0, i64 %10 %12 = tail call i32 @strncmp(ptr noundef nonnull %11, ptr noundef nonnull %1, i64 noundef %5) #25 %13 = icmp eq i32 %12, 0 - br i1 %13, label %._crit_edge, label %.lr.ph + br i1 %13, label %._crit_edge, label %.lr.ph.preheader -._crit_edge: ; preds = %18, %9 - %.018.lcssa = phi ptr [ %11, %9 ], [ %19, %18 ] - %14 = ptrtoint ptr %.018.lcssa to i64 - %15 = ptrtoint ptr %0 to i64 - %16 = sub i64 %14, %15 +.lr.ph.preheader: ; preds = %9 + %14 = icmp eq i64 %4, %5 + br i1 %14, label %.loopexit, label %.lr.ph26 + +._crit_edge: ; preds = %.lr.ph26, %9 + %.018.lcssa = phi ptr [ %11, %9 ], [ %19, %.lr.ph26 ] + %15 = ptrtoint ptr %.018.lcssa to i64 + %16 = ptrtoint ptr %0 to i64 + %17 = sub i64 %15, %16 br label %.loopexit -.lr.ph: ; preds = %9, %18 - %.01822 = phi ptr [ %19, %18 ], [ %11, %9 ] - %17 = icmp eq ptr %.01822, %0 - br i1 %17, label %.loopexit, label %18 +.lr.ph: ; preds = %.lr.ph26 + %18 = icmp eq ptr %19, %0 + br i1 %18, label %.loopexit, label %.lr.ph26 -18: ; preds = %.lr.ph - %19 = getelementptr inbounds i8, ptr %.01822, i64 -1 +.lr.ph26: ; preds = %.lr.ph.preheader, %.lr.ph + %.0182225 = phi ptr [ %19, %.lr.ph ], [ %11, %.lr.ph.preheader ] + %19 = getelementptr inbounds i8, ptr %.0182225, i64 -1 %20 = tail call i32 @strncmp(ptr noundef nonnull %19, ptr noundef nonnull %1, i64 noundef %5) #25 %21 = icmp eq i32 %20, 0 br i1 %21, label %._crit_edge, label %.lr.ph -.loopexit: ; preds = %.lr.ph, %7, %2, %._crit_edge - %.0 = phi i64 [ %16, %._crit_edge ], [ %4, %2 ], [ -1, %7 ], [ -1, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %.lr.ph.preheader, %7, %2, %._crit_edge + %.0 = phi i64 [ %17, %._crit_edge ], [ %4, %2 ], [ -1, %7 ], [ -1, %.lr.ph.preheader ], [ -1, %.lr.ph ] ret i64 %.0 } diff --git a/bench/gromacs/optimized/atomsbuilder.ll b/bench/gromacs/optimized/atomsbuilder.ll index d4ccdf7f5a8..dae1ddb7590 100644 --- a/bench/gromacs/optimized/atomsbuilder.ll +++ b/bench/gromacs/optimized/atomsbuilder.ll @@ -369,33 +369,53 @@ _ZN3gmx12AtomsBuilder12symtabStringEPPc.exit: ; preds = %9, %26 define void @_ZN3gmx12AtomsBuilder21discardCurrentResidueEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(32) %0) local_unnamed_addr #8 align 2 { %2 = load ptr, ptr %0, align 8, !tbaa !4 %3 = load i32, ptr %2, align 8, !tbaa !13 - %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %6 = load i32, ptr %5, align 8 - %smin = tail call i32 @llvm.smin.i32(i32 %3, i32 1) - %7 = add i32 %smin, -1 - br label %8 + %.04 = add i32 %3, -1 + %4 = icmp sgt i32 %3, 1 + br i1 %4, label %.lr.ph, label %..critedge_crit_edge -8: ; preds = %10, %1 - %.0.in = phi i32 [ %3, %1 ], [ %.0, %10 ] - %9 = icmp sgt i32 %.0.in, 1 - br i1 %9, label %10, label %.critedge - -10: ; preds = %8 - %.0 = add nsw i32 %.0.in, -1 - %11 = load ptr, ptr %4, align 8, !tbaa !38 - %12 = zext nneg i32 %.0.in to i64 - %13 = getelementptr %struct.t_atom, ptr %11, i64 %12 - %14 = getelementptr i8, ptr %13, i64 -48 - %15 = load i32, ptr %14, align 4, !tbaa !50 - %16 = icmp eq i32 %15, %6 - br i1 %16, label %8, label %.critedge, !llvm.loop !58 +..critedge_crit_edge: ; preds = %1 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 24 + %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !25 + br label %.critedge -.critedge: ; preds = %8, %10 - %.0.lcssa = phi i32 [ %7, %8 ], [ %.0, %10 ] +.lr.ph: ; preds = %1 + %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %6 = load ptr, ptr %5, align 8, !tbaa !38 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %8 = load i32, ptr %7, align 8, !tbaa !25 + %9 = zext nneg i32 %.04 to i64 + br label %13 + +10: ; preds = %13 + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %11 = icmp sgt i64 %indvars.iv, 1 + %12 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %11, label %13, label %.critedge.loopexit, !llvm.loop !58 + +13: ; preds = %.lr.ph, %10 + %indvars.iv = phi i64 [ %9, %.lr.ph ], [ %indvars.iv.next, %10 ] + %.0.in5 = phi i32 [ %3, %.lr.ph ], [ %12, %10 ] + %14 = zext nneg i32 %.0.in5 to i64 + %15 = getelementptr %struct.t_atom, ptr %6, i64 %14 + %16 = getelementptr i8, ptr %15, i64 -48 + %17 = load i32, ptr %16, align 4, !tbaa !50 + %18 = icmp eq i32 %17, %8 + br i1 %18, label %10, label %..critedge_crit_edge7, !llvm.loop !58 + +..critedge_crit_edge7: ; preds = %13 + %19 = trunc nuw nsw i64 %indvars.iv to i32 + br label %.critedge, !llvm.loop !58 + +.critedge.loopexit: ; preds = %10 + %20 = trunc nsw i64 %indvars.iv.next to i32 + br label %.critedge + +.critedge: ; preds = %..critedge_crit_edge, %.critedge.loopexit, %..critedge_crit_edge7 + %21 = phi i32 [ %8, %..critedge_crit_edge7 ], [ %.pre, %..critedge_crit_edge ], [ %8, %.critedge.loopexit ] + %.0.lcssa = phi i32 [ %19, %..critedge_crit_edge7 ], [ %.04, %..critedge_crit_edge ], [ %20, %.critedge.loopexit ] store i32 %.0.lcssa, ptr %2, align 8, !tbaa !13 - %17 = getelementptr inbounds nuw i8, ptr %2, i64 40 - store i32 %6, ptr %17, align 8, !tbaa !23 + %22 = getelementptr inbounds nuw i8, ptr %2, i64 40 + store i32 %21, ptr %22, align 8, !tbaa !23 ret void } @@ -1471,9 +1491,6 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #15 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #16 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #16 diff --git a/bench/gromacs/optimized/colvarcomp_protein.ll b/bench/gromacs/optimized/colvarcomp_protein.ll index 6d87300e009..6ae64480505 100644 --- a/bench/gromacs/optimized/colvarcomp_protein.ll +++ b/bench/gromacs/optimized/colvarcomp_protein.ll @@ -359,11 +359,11 @@ define noundef i32 @_ZN6colvar12alpha_angles4initERKNSt7__cxx1112basic_stringIcS %.not.i242 = icmp ne i32 %111, 0 %112 = load i32, ptr %19, align 4 %113 = icmp slt i32 %112, 1 - %or.cond6.not1065 = select i1 %.not.i242, i1 true, i1 %113 + %or.cond6.not1072 = select i1 %.not.i242, i1 true, i1 %113 %114 = load i32, ptr %18, align 4 %.not178792 = icmp sgt i32 %114, %112 - %or.cond1063 = select i1 %or.cond6.not1065, i1 true, i1 %.not178792 - br i1 %or.cond1063, label %.loopexit712, label %.lr.ph + %or.cond1070 = select i1 %or.cond6.not1072, i1 true, i1 %.not178792 + br i1 %or.cond1070, label %.loopexit712, label %.lr.ph .thread652: ; preds = %64 %115 = landingpad { ptr, i32 } @@ -400,7 +400,7 @@ define noundef i32 @_ZN6colvar12alpha_angles4initERKNSt7__cxx1112basic_stringIcS br label %171 .lr.ph: ; preds = %104, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit - %.pre832 = phi i32 [ %.pre833, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %112, %104 ] + %.pre836 = phi i32 [ %.pre837, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %112, %104 ] %125 = phi i32 [ %145, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %112, %104 ] %storemerge796 = phi i32 [ %146, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %114, %104 ] %.sroa.0621.1795 = phi ptr [ %.sroa.0621.11, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ null, %104 ] @@ -460,12 +460,12 @@ _ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i: ; preds = %142, %.noe br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i: ; preds = %143, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i - %.pre = phi i32 [ %.pre.pre, %143 ], [ %.pre832, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i ] + %.pre = phi i32 [ %.pre.pre, %143 ], [ %.pre836, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i ] %144 = getelementptr inbounds nuw i32, ptr %139, i64 %137 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i, %126 - %.pre833 = phi i32 [ %.pre, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.pre832, %126 ] + %.pre837 = phi i32 [ %.pre, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.pre836, %126 ] %145 = phi i32 [ %.pre, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %125, %126 ] %.sroa.22.11 = phi ptr [ %144, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.sroa.22.1793, %126 ] %.pn690 = phi ptr [ %140, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.sroa.16.1794, %126 ] @@ -1835,6 +1835,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit420: ; preds = %62 %642 = sub i64 %.sroa.16.2, %641 %643 = ashr exact i64 %642, 2 %644 = add nsw i64 %643, -2 + %.not805 = icmp eq i64 %644, 0 + br i1 %.not805, label %.loopexit699, label %.lr.ph800 + +.lr.ph800: ; preds = %.preheader698 %645 = getelementptr inbounds nuw i8, ptr %0, i64 1624 %646 = getelementptr inbounds nuw i8, ptr %44, i64 16 %647 = getelementptr inbounds nuw i8, ptr %44, i64 8 @@ -1847,7 +1851,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit420: ; preds = %62 %654 = getelementptr inbounds nuw i8, ptr %44, i64 18 %655 = getelementptr inbounds nuw i8, ptr %46, i64 18 %656 = getelementptr inbounds nuw i8, ptr %48, i64 18 - br label %806 + br label %807 657: ; preds = %640 %658 = getelementptr inbounds nuw i8, ptr %12, i64 504 @@ -2210,18 +2214,18 @@ _ZNSt6vectorIPN6colvar5angleESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vect call void @_ZdlPvm(ptr noundef nonnull %752, i64 noundef 1752) #23 br label %1196 -806: ; preds = %.preheader698, %865 - %.078 = phi i64 [ %810, %865 ], [ 0, %.preheader698 ] - %exitcond.not = icmp eq i64 %.078, %644 - br i1 %exitcond.not, label %.loopexit699, label %807 +806: ; preds = %865 + %exitcond.not = icmp eq i64 %810, %644 + br i1 %exitcond.not, label %.loopexit699, label %807, !llvm.loop !156 -807: ; preds = %806 +807: ; preds = %.lr.ph800, %806 + %.078799 = phi i64 [ 0, %.lr.ph800 ], [ %810, %806 ] %808 = invoke noalias noundef nonnull dereferenceable(1752) ptr @_Znwm(i64 noundef 1752) #25 to label %._crit_edge.i.i453 unwind label %873 ._crit_edge.i.i453: ; preds = %807 call void @llvm.lifetime.start.p0(ptr nonnull %43) - %809 = getelementptr i32, ptr %.sroa.0621.10, i64 %.078 + %809 = getelementptr i32, ptr %.sroa.0621.10, i64 %.078799 call void @llvm.lifetime.start.p0(ptr nonnull %44) store ptr %646, ptr %44, align 8, !tbaa !4 store i16 16707, ptr %646, align 8 @@ -2232,7 +2236,7 @@ _ZNSt6vectorIPN6colvar5angleESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vect ._crit_edge.i.i457: ; preds = %._crit_edge.i.i453 call void @llvm.lifetime.start.p0(ptr nonnull %45) - %810 = add i64 %.078, 1 + %810 = add nuw i64 %.078799, 1 %811 = getelementptr inbounds nuw i32, ptr %.sroa.0621.10, i64 %810 call void @llvm.lifetime.start.p0(ptr nonnull %46) store ptr %648, ptr %46, align 8, !tbaa !4 @@ -2570,7 +2574,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit502: ; preds = %91 call void @llvm.lifetime.end.p0(ptr nonnull %49) br label %1196 -.loopexit699: ; preds = %740, %806, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit499 +.loopexit699: ; preds = %740, %806, %.preheader698, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit499 %920 = getelementptr inbounds nuw i8, ptr %0, i64 1680 %921 = invoke noundef zeroext i1 @_ZN11colvarparse10get_keyvalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcRdRKdNS_10Parse_ModeE(ptr noundef nonnull align 8 dereferenceable(320) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %920, ptr noundef nonnull align 8 dereferenceable(8) %920, i32 noundef 131078) to label %922 unwind label %621 @@ -2598,10 +2602,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit502: ; preds = %91 %933 = sub i64 %.sroa.16.2, %932 %934 = ashr exact i64 %933, 2 %935 = add nsw i64 %934, -4 - %.not804 = icmp eq i64 %935, 0 - br i1 %.not804, label %.thread, label %.lr.ph802 + %.not807 = icmp eq i64 %935, 0 + br i1 %.not807, label %.thread, label %.lr.ph804 -.lr.ph802: ; preds = %.preheader +.lr.ph804: ; preds = %.preheader %936 = getelementptr inbounds nuw i8, ptr %0, i64 1648 %937 = getelementptr inbounds nuw i8, ptr %59, i64 16 %938 = getelementptr inbounds nuw i8, ptr %59, i64 8 @@ -2626,10 +2630,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit502: ; preds = %91 br i1 %954, label %959, label %.preheader691 .preheader691: ; preds = %945 - %.not803 = icmp eq i64 %952, 480 - br i1 %.not803, label %.thread, label %.lr.ph800 + %.not806 = icmp eq i64 %952, 480 + br i1 %.not806, label %.thread, label %.lr.ph802 -.lr.ph800: ; preds = %.preheader691 +.lr.ph802: ; preds = %.preheader691 %955 = getelementptr inbounds nuw i8, ptr %0, i64 1648 %956 = getelementptr inbounds nuw i8, ptr %14, i64 504 %957 = getelementptr inbounds nuw i8, ptr %0, i64 1656 @@ -2842,22 +2846,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit532: ; preds = %_Z cleanup br label %1196 -1031: ; preds = %.lr.ph800, %1075 - %.072799 = phi i64 [ 0, %.lr.ph800 ], [ %1076, %1075 ] +1031: ; preds = %.lr.ph802, %1075 + %.072801 = phi i64 [ 0, %.lr.ph802 ], [ %1076, %1075 ] %1032 = invoke noalias noundef nonnull dereferenceable(1624) ptr @_Znwm(i64 noundef 1624) #25 to label %1033 unwind label %1085 1033: ; preds = %1031 call void @llvm.lifetime.start.p0(ptr nonnull %56) %1034 = load ptr, ptr %956, align 8, !tbaa !45 - %1035 = getelementptr inbounds nuw %"class.colvarmodule::atom", ptr %1034, i64 %.072799 + %1035 = getelementptr inbounds nuw %"class.colvarmodule::atom", ptr %1034, i64 %.072801 invoke void @_ZN12colvarmodule4atomC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %56, ptr noundef nonnull align 8 dereferenceable(120) %1035) to label %1036 unwind label %.thread642 1036: ; preds = %1033 call void @llvm.lifetime.start.p0(ptr nonnull %57) %1037 = load ptr, ptr %946, align 8, !tbaa !45 - %1038 = getelementptr %"class.colvarmodule::atom", ptr %1037, i64 %.072799 + %1038 = getelementptr %"class.colvarmodule::atom", ptr %1037, i64 %.072801 %1039 = getelementptr i8, ptr %1038, i64 480 invoke void @_ZN12colvarmodule4atomC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %57, ptr noundef nonnull align 8 dereferenceable(120) %1039) to label %1040 unwind label %.thread646 @@ -2950,7 +2954,7 @@ _ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vec to label %1075 unwind label %1029 1075: ; preds = %_ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit - %1076 = add nuw i64 %.072799, 1 + %1076 = add nuw i64 %.072801, 1 %1077 = load ptr, ptr %947, align 8, !tbaa !42 %1078 = load ptr, ptr %946, align 8, !tbaa !45 %1079 = ptrtoint ptr %1077 to i64 @@ -2969,14 +2973,14 @@ _ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vec .thread642: ; preds = %1033 %1087 = landingpad { ptr, i32 } cleanup - br label %.sink.split1061 + br label %.sink.split1068 .thread646: ; preds = %1036 %1088 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %57) call void @_ZN12colvarmodule4atomD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #22 - br label %.sink.split1061 + br label %.sink.split1068 .loopexit693: ; preds = %_ZNKSt6vectorIPN6colvar6h_bondESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i, %1040 %.069.ph = phi i1 [ false, %_ZNKSt6vectorIPN6colvar6h_bondESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ], [ true, %1040 ] @@ -2998,24 +3002,24 @@ _ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vec call void @llvm.lifetime.end.p0(ptr nonnull %56) br i1 %.069, label %1090, label %1196 -.sink.split1061: ; preds = %.thread642, %.thread646 +.sink.split1068: ; preds = %.thread642, %.thread646 %.pn203.pn645.ph = phi { ptr, i32 } [ %1088, %.thread646 ], [ %1087, %.thread642 ] call void @llvm.lifetime.end.p0(ptr nonnull %56) br label %1090 -1090: ; preds = %.sink.split1061, %1089 - %.pn203.pn645 = phi { ptr, i32 } [ %lpad.phi697, %1089 ], [ %.pn203.pn645.ph, %.sink.split1061 ] +1090: ; preds = %.sink.split1068, %1089 + %.pn203.pn645 = phi { ptr, i32 } [ %lpad.phi697, %1089 ], [ %.pn203.pn645.ph, %.sink.split1068 ] call void @_ZdlPvm(ptr noundef nonnull %1032, i64 noundef 1624) #23 br label %1196 -1091: ; preds = %.lr.ph802, %1138 - %.068801 = phi i64 [ 0, %.lr.ph802 ], [ %1139, %1138 ] +1091: ; preds = %.lr.ph804, %1138 + %.068803 = phi i64 [ 0, %.lr.ph804 ], [ %1139, %1138 ] %1092 = invoke noalias noundef nonnull dereferenceable(1624) ptr @_Znwm(i64 noundef 1624) #25 to label %._crit_edge.i.i539 unwind label %1140 ._crit_edge.i.i539: ; preds = %1091 call void @llvm.lifetime.start.p0(ptr nonnull %58) - %1093 = getelementptr i32, ptr %.sroa.0621.10, i64 %.068801 + %1093 = getelementptr i32, ptr %.sroa.0621.10, i64 %.068803 call void @llvm.lifetime.start.p0(ptr nonnull %59) store ptr %937, ptr %59, align 8, !tbaa !4 store i8 79, ptr %937, align 8, !tbaa !13 @@ -3147,9 +3151,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit562: ; preds = %_Z to label %1138 unwind label %1160 1138: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit562 - %1139 = add nuw i64 %.068801, 1 - %exitcond831.not = icmp eq i64 %1139, %935 - br i1 %exitcond831.not, label %.thread, label %1091, !llvm.loop !167 + %1139 = add nuw i64 %.068803, 1 + %exitcond835.not = icmp eq i64 %1139, %935 + br i1 %exitcond835.not, label %.thread, label %1091, !llvm.loop !167 1140: ; preds = %1091 %1141 = landingpad { ptr, i32 } @@ -3204,13 +3208,13 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa cleanup %1153 = load ptr, ptr %59, align 8, !tbaa !29 %1154 = icmp eq ptr %1153, %937 - br i1 %1154, label %.sink.split1062, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 + br i1 %1154, label %.sink.split1069, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684: ; preds = %.thread675 %1155 = load i64, ptr %937, align 8, !tbaa !13 %1156 = add i64 %1155, 1 call void @_ZdlPvm(ptr noundef %1153, i64 noundef %1156) #23 - br label %.sink.split1062 + br label %.sink.split1069 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i564 call void @llvm.lifetime.end.p0(ptr nonnull %59) @@ -3225,13 +3229,13 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568: ; preds = %_Z call void @llvm.lifetime.end.p0(ptr nonnull %58) br i1 %.4, label %1159, label %1196 -.sink.split1062: ; preds = %.thread675, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 +.sink.split1069: ; preds = %.thread675, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 call void @llvm.lifetime.end.p0(ptr nonnull %59) call void @llvm.lifetime.end.p0(ptr nonnull %58) br label %1159 -1159: ; preds = %.sink.split1062, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 - %.pn195.pn.pn.pn651 = phi { ptr, i32 } [ %.pn195, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 ], [ %.pn195, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567 ], [ %1152, %.sink.split1062 ] +1159: ; preds = %.sink.split1069, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 + %.pn195.pn.pn.pn651 = phi { ptr, i32 } [ %.pn195, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 ], [ %.pn195, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567 ], [ %1152, %.sink.split1069 ] call void @_ZdlPvm(ptr noundef nonnull %1092, i64 noundef 1624) #23 br label %1196 diff --git a/bench/grpc/optimized/compression_internal.ll b/bench/grpc/optimized/compression_internal.ll index 724a50b40a6..791077372c4 100644 --- a/bench/grpc/optimized/compression_internal.ll +++ b/bench/grpc/optimized/compression_internal.ll @@ -1353,25 +1353,35 @@ switch.lookup: ; preds = %16, %_ZZN9grpc_core %switch.load = load ptr, ptr %switch.gep, align 8 %29 = load i8, ptr %switch.load, align 1, !tbaa !6 %.not2018.i.i = icmp eq i8 %29, 0 - br i1 %.not2018.i.i, label %.loopexit.i.i, label %.lr.ph.i.i - -.lr.ph.i.i: ; preds = %switch.lookup, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i - %30 = phi i8 [ %37, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i ], [ %29, %switch.lookup ] - %.020.i.i = phi ptr [ %36, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i ], [ %switch.load, %switch.lookup ] - %.319.i.i = phi ptr [ %35, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i ], [ %.2.i.i, %switch.lookup ] - %31 = ptrtoint ptr %.319.i.i to i64 - %32 = sub i64 %31, ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core12_GLOBAL__N_120kCommaSeparatedListsE, i64 128) to i64) - %33 = icmp eq i64 %32, 86 - br i1 %33, label %34, label %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i - -34: ; preds = %.lr.ph.i.i + br i1 %.not2018.i.i, label %.loopexit.i.i, label %.lr.ph.i.preheader.i + +.lr.ph.i.preheader.i: ; preds = %switch.lookup + %30 = ptrtoint ptr %.2.i.i to i64 + %31 = sub i64 %30, ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core12_GLOBAL__N_120kCommaSeparatedListsE, i64 128) to i64) + %32 = icmp eq i64 %31, 86 + br i1 %32, label %.lr.ph.i.preheader._crit_edge.i, label %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i + +_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i: ; preds = %.lr.ph.i.preheader.i + %scevgep.i = getelementptr i8, ptr %.2.i.i, i64 add (i64 ptrtoint (ptr @_ZN9grpc_core12_GLOBAL__N_120kCommaSeparatedListsE to i64), i64 213) + %33 = sub i64 0, %30 + %scevgep7.i = getelementptr i8, ptr %scevgep.i, i64 %33 + br label %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i + +.lr.ph.i.i: ; preds = %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i + %exitcond.i = icmp eq ptr %.319.i3.i, %scevgep7.i + br i1 %exitcond.i, label %.lr.ph.i.preheader._crit_edge.i, label %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i, !llvm.loop !95 + +.lr.ph.i.preheader._crit_edge.i: ; preds = %.lr.ph.i.preheader.i, %.lr.ph.i.i tail call void @abort() #30 unreachable -_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i: ; preds = %.lr.ph.i.i - %35 = getelementptr inbounds nuw i8, ptr %.319.i.i, i64 1 - store i8 %30, ptr %.319.i.i, align 1, !tbaa !6 - %36 = getelementptr inbounds nuw i8, ptr %.020.i.i, i64 1 +_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.i: ; preds = %.lr.ph.i.i, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i + %.319.i3.i = phi ptr [ %35, %.lr.ph.i.i ], [ %.2.i.i, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i ] + %.020.i2.i = phi ptr [ %36, %.lr.ph.i.i ], [ %switch.load, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i ] + %34 = phi i8 [ %37, %.lr.ph.i.i ], [ %29, %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i ] + %35 = getelementptr inbounds nuw i8, ptr %.319.i3.i, i64 1 + store i8 %34, ptr %.319.i3.i, align 1, !tbaa !6 + %36 = getelementptr inbounds nuw i8, ptr %.020.i2.i, i64 1 %37 = load i8, ptr %36, align 1, !tbaa !6 %.not20.i.i = icmp eq i8 %37, 0 br i1 %.not20.i.i, label %.loopexit.i.i, label %.lr.ph.i.i, !llvm.loop !95 diff --git a/bench/grpc/optimized/writing.ll b/bench/grpc/optimized/writing.ll index 86b66932663..5393f870398 100644 --- a/bench/grpc/optimized/writing.ll +++ b/bench/grpc/optimized/writing.ll @@ -5888,11 +5888,9 @@ define linkonce_odr void @_ZN9grpc_core20hpack_encoder_detail10CompressorINS_26G %8 = alloca %"class.grpc_core::Slice", align 8 %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 %10 = load ptr, ptr %9, align 8, !tbaa !596 - %11 = load i8, ptr %0, align 4 - %12 = load i8, ptr %1, align 1 - %.fr.i.i = freeze i8 %11 - %.fr11.i.i = freeze i8 %12 - %.not.not.i.i = icmp eq i8 %.fr.i.i, %.fr11.i.i + %11 = load i8, ptr %0, align 4, !tbaa !53 + %12 = load i8, ptr %1, align 1, !tbaa !53 + %.not.not.i.i = icmp eq i8 %11, %12 br i1 %.not.not.i.i, label %13, label %24 13: ; preds = %3 diff --git a/bench/harfbuzz/optimized/hb-subset-cff-common.ll b/bench/harfbuzz/optimized/hb-subset-cff-common.ll index 831173f56b6..57dd5fa77af 100644 --- a/bench/harfbuzz/optimized/hb-subset-cff-common.ll +++ b/bench/harfbuzz/optimized/hb-subset-cff-common.ll @@ -2459,22 +2459,30 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIjLb1ETnPN12hb_enable_i %notmask.i = shl nsw i64 -1, %59 %60 = and i64 %58, %notmask.i %.not20.not.not.i.not57 = icmp eq i64 %60, 0 - br i1 %.not20.not.not.i.not57, label %.lr.ph, label %._crit_edge + br i1 %.not20.not.not.i.not57, label %.lr.ph.preheader, label %._crit_edge -thread-pre-split.i: ; preds = %.lr.ph - %61 = getelementptr inbounds nuw i64, ptr %55, i64 %indvars.iv.next.i +.lr.ph.preheader: ; preds = %46 + %indvars.iv.next.i96 = add nuw nsw i64 %56, 1 + %exitcond.not.i97 = icmp eq i64 %indvars.iv.next.i96, 8 + br i1 %exitcond.not.i97, label %.loopexit, label %thread-pre-split.i.lr.ph, !llvm.loop !178 + +thread-pre-split.i.lr.ph: ; preds = %.lr.ph.preheader + br label %thread-pre-split.i, !llvm.loop !178 + +thread-pre-split.i: ; preds = %thread-pre-split.i.lr.ph, %.lr.ph + %indvars.iv.next.i98 = phi i64 [ %indvars.iv.next.i96, %thread-pre-split.i.lr.ph ], [ %indvars.iv.next.i, %.lr.ph ] + %61 = getelementptr inbounds nuw i64, ptr %55, i64 %indvars.iv.next.i98 %.pr.i = load i64, ptr %61, align 8, !tbaa !79 %.not20.not.not.i.not = icmp eq i64 %.pr.i, 0 br i1 %.not20.not.not.i.not, label %.lr.ph, label %._crit_edge.loopexit -.lr.ph: ; preds = %46, %thread-pre-split.i - %indvars.iv.i58 = phi i64 [ %indvars.iv.next.i, %thread-pre-split.i ], [ %56, %46 ] - %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i58, 1 +.lr.ph: ; preds = %thread-pre-split.i + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.next.i98, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 8 - br i1 %exitcond.not.i, label %.loopexit, label %thread-pre-split.i, !llvm.loop !178 + br i1 %exitcond.not.i, label %.lr.ph..loopexit.loopexit_crit_edge, label %thread-pre-split.i, !llvm.loop !178 ._crit_edge.loopexit: ; preds = %thread-pre-split.i - %62 = trunc nuw nsw i64 %indvars.iv.next.i to i32 + %62 = trunc nuw nsw i64 %indvars.iv.next.i98 to i32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %46 @@ -2491,7 +2499,10 @@ thread-pre-split.i: ; preds = %.lr.ph store i32 %69, ptr %1, align 4, !tbaa !4 br label %95 -.loopexit: ; preds = %.lr.ph, %41 +.lr.ph..loopexit.loopexit_crit_edge: ; preds = %.lr.ph + br label %.loopexit, !llvm.loop !178 + +.loopexit: ; preds = %.lr.ph.preheader, %.lr.ph..loopexit.loopexit_crit_edge, %41 store i32 -1, ptr %1, align 4, !tbaa !4 %70 = add i32 %.04483, 1 %.pre71 = load i32, ptr %14, align 4, !tbaa !164 diff --git a/bench/hdf5/optimized/H5FDonion_index.ll b/bench/hdf5/optimized/H5FDonion_index.ll index babb712fcbb..90d6e442fd5 100644 --- a/bench/hdf5/optimized/H5FDonion_index.ll +++ b/bench/hdf5/optimized/H5FDonion_index.ll @@ -1709,24 +1709,32 @@ define noundef zeroext i1 @H5FD__onion_archival_index_is_valid(ptr noundef reado .preheader: ; preds = %14 %18 = add i64 %16, -1 - br label %19 - -19: ; preds = %.preheader, %20 - %.012 = phi i64 [ %21, %20 ], [ 1, %.preheader ] - %exitcond.not = icmp eq i64 %.012, %18 - br i1 %exitcond.not, label %.loopexit, label %20 - -20: ; preds = %19 - %21 = add i64 %.012, 1 - %22 = getelementptr inbounds nuw %struct.H5FD_onion_index_entry_t, ptr %12, i64 %21 - %23 = load i64, ptr %22, align 8, !tbaa !47 - %24 = getelementptr inbounds nuw %struct.H5FD_onion_index_entry_t, ptr %12, i64 %.012 - %25 = load i64, ptr %24, align 8, !tbaa !47 - %.not15 = icmp ugt i64 %23, %25 - br i1 %.not15, label %19, label %.loopexit, !llvm.loop !56 - -.loopexit: ; preds = %20, %19, %1, %14, %8, %10 - %.013 = phi i1 [ true, %14 ], [ true, %1 ], [ false, %8 ], [ false, %10 ], [ %exitcond.not, %19 ], [ %exitcond.not, %20 ] + %19 = icmp ugt i64 %18, 1 + br i1 %19, label %.lr.ph.preheader, label %.loopexit + +.lr.ph.preheader: ; preds = %.preheader + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %12, i64 16 + %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !47 + br label %.lr.ph + +20: ; preds = %.lr.ph + %exitcond.not = icmp eq i64 %22, %18 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !56 + +.lr.ph: ; preds = %.lr.ph.preheader, %20 + %21 = phi i64 [ %24, %20 ], [ %.pre, %.lr.ph.preheader ] + %.01216 = phi i64 [ %22, %20 ], [ 1, %.lr.ph.preheader ] + %22 = add nuw i64 %.01216, 1 + %23 = getelementptr inbounds nuw %struct.H5FD_onion_index_entry_t, ptr %12, i64 %22 + %24 = load i64, ptr %23, align 8, !tbaa !47 + %.not15 = icmp ugt i64 %24, %21 + br i1 %.not15, label %20, label %..loopexit_crit_edge17, !llvm.loop !56 + +..loopexit_crit_edge17: ; preds = %.lr.ph + br label %.loopexit, !llvm.loop !56 + +.loopexit: ; preds = %20, %.preheader, %..loopexit_crit_edge17, %1, %14, %8, %10 + %.013 = phi i1 [ true, %14 ], [ true, %1 ], [ false, %8 ], [ false, %10 ], [ false, %..loopexit_crit_edge17 ], [ true, %.preheader ], [ true, %20 ] ret i1 %.013 } diff --git a/bench/hdf5/optimized/H5Sall.ll b/bench/hdf5/optimized/H5Sall.ll index 2ef655e84a7..01bc81a2ec1 100644 --- a/bench/hdf5/optimized/H5Sall.ll +++ b/bench/hdf5/optimized/H5Sall.ll @@ -388,55 +388,64 @@ define internal range(i32 0, 2) i32 @H5S__all_shape_same(ptr noundef readonly ca %11 = load i32, ptr %10, align 8, !tbaa !30 %12 = getelementptr inbounds nuw i8, ptr %1, i64 56 %13 = load i32, ptr %12, align 8, !tbaa !30 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 64 - %16 = sext i32 %11 to i64 - %17 = zext i32 %13 to i64 - br label %18 - -18: ; preds = %24, %9 - %indvars.iv24 = phi i64 [ %25, %24 ], [ %17, %9 ] - %indvars.iv = phi i64 [ %indvars.iv.next, %24 ], [ %16, %9 ] + %.01418 = add i32 %11, -1 + %14 = icmp sgt i32 %13, 0 + br i1 %14, label %.lr.ph, label %.preheader + +.lr.ph: ; preds = %9 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %16 = load ptr, ptr %15, align 8, !tbaa !31 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 64 + %18 = load ptr, ptr %17, align 8, !tbaa !31 + %19 = sext i32 %.01418 to i64 + %20 = zext nneg i32 %13 to i64 + br label %27 + +21: ; preds = %27 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %19 = trunc nuw i64 %indvars.iv24 to i32 - %20 = icmp sgt i32 %19, 0 - br i1 %20, label %24, label %.preheader + %22 = icmp samesign ugt i64 %indvars.iv28, 1 + br i1 %22, label %27, label %.preheader.loopexit, !llvm.loop !34 -.preheader: ; preds = %18 - %21 = icmp sgt i64 %indvars.iv, 0 - br i1 %21, label %.lr.ph, label %.loopexit +.preheader.loopexit: ; preds = %21 + %23 = trunc nsw i64 %indvars.iv.next to i32 + br label %.preheader -.lr.ph: ; preds = %.preheader - %22 = trunc nsw i64 %indvars.iv.next to i32 - %23 = load ptr, ptr %14, align 8, !tbaa !31 +.preheader: ; preds = %.preheader.loopexit, %9 + %.014.lcssa = phi i32 [ %.01418, %9 ], [ %23, %.preheader.loopexit ] + %24 = icmp sgt i32 %.014.lcssa, -1 + br i1 %24, label %.lr.ph22, label %.loopexit + +.lr.ph22: ; preds = %.preheader + %25 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %26 = load ptr, ptr %25, align 8, !tbaa !31 br label %35 -24: ; preds = %18 - %25 = add nsw i64 %indvars.iv24, -1 - %26 = load ptr, ptr %14, align 8, !tbaa !31 - %27 = getelementptr inbounds i64, ptr %26, i64 %indvars.iv.next - %28 = load i64, ptr %27, align 8, !tbaa !29 - %29 = load ptr, ptr %15, align 8, !tbaa !31 - %30 = getelementptr inbounds nuw i64, ptr %29, i64 %25 +27: ; preds = %.lr.ph, %21 + %indvars.iv28 = phi i64 [ %20, %.lr.ph ], [ %indvars.iv.next29, %21 ] + %indvars.iv = phi i64 [ %19, %.lr.ph ], [ %indvars.iv.next, %21 ] + %indvars.iv.next29 = add nsw i64 %indvars.iv28, -1 + %28 = getelementptr inbounds i64, ptr %16, i64 %indvars.iv + %29 = load i64, ptr %28, align 8, !tbaa !29 + %30 = getelementptr inbounds nuw i64, ptr %18, i64 %indvars.iv.next29 %31 = load i64, ptr %30, align 8, !tbaa !29 - %.not15 = icmp eq i64 %28, %31 - br i1 %.not15, label %18, label %.loopexit, !llvm.loop !34 + %.not15 = icmp eq i64 %29, %31 + br i1 %.not15, label %21, label %.loopexit, !llvm.loop !34 32: ; preds = %35 - %33 = add nsw i32 %.118, -1 - %34 = icmp sgt i32 %.118, 0 + %33 = add nsw i32 %.121, -1 + %34 = icmp sgt i32 %.121, 0 br i1 %34, label %35, label %.loopexit, !llvm.loop !35 -35: ; preds = %.lr.ph, %32 - %.118 = phi i32 [ %22, %.lr.ph ], [ %33, %32 ] - %36 = zext nneg i32 %.118 to i64 - %37 = getelementptr inbounds nuw i64, ptr %23, i64 %36 +35: ; preds = %.lr.ph22, %32 + %.121 = phi i32 [ %.014.lcssa, %.lr.ph22 ], [ %33, %32 ] + %36 = zext nneg i32 %.121 to i64 + %37 = getelementptr inbounds nuw i64, ptr %26, i64 %36 %38 = load i64, ptr %37, align 8, !tbaa !29 %.not = icmp eq i64 %38, 1 br i1 %.not, label %32, label %.loopexit -.loopexit: ; preds = %24, %32, %35, %.preheader, %2 - %.0 = phi i32 [ 1, %2 ], [ 1, %.preheader ], [ 1, %32 ], [ 0, %35 ], [ 0, %24 ] +.loopexit: ; preds = %27, %32, %35, %.preheader, %2 + %.0 = phi i32 [ 1, %2 ], [ 1, %.preheader ], [ 1, %32 ], [ 0, %35 ], [ 0, %27 ] ret i32 %.0 } diff --git a/bench/hermes/optimized/DebugInfo.ll b/bench/hermes/optimized/DebugInfo.ll index c49b4635feb..bbe3bfe986d 100644 --- a/bench/hermes/optimized/DebugInfo.ll +++ b/bench/hermes/optimized/DebugInfo.ll @@ -413,25 +413,38 @@ for.body.lr.ph.i: ; preds = %while.end %wide.trip.count.i = zext nneg i32 %7 to i64 %9 = load i32, ptr %8, align 1 %cmp5.not.i24 = icmp ugt i32 %9, %lastLocationOffset.0.lcssa - br i1 %cmp5.not.i24, label %if.end13, label %if.then.i + br i1 %cmp5.not.i24, label %if.end13, label %if.then.i.preheader -for.body.i: ; preds = %if.then.i - %arrayidx.i13.i = getelementptr inbounds nuw %"struct.hermes::hbc::DebugFileRegion", ptr %8, i64 %indvars.iv.next.i +if.then.i.preheader: ; preds = %for.body.lr.ph.i + %exitcond.not.i41 = icmp eq i32 %7, 1 + br i1 %exitcond.not.i41, label %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge, label %for.body.i.lr.ph, !llvm.loop !9 + +for.body.i.lr.ph: ; preds = %if.then.i.preheader + br label %for.body.i, !llvm.loop !9 + +for.body.i: ; preds = %for.body.i.lr.ph, %if.then.i + %indvars.iv.next.i43 = phi i64 [ 1, %for.body.i.lr.ph ], [ %indvars.iv.next.i, %if.then.i ] + %indvars.iv.i2542 = phi i64 [ 0, %for.body.i.lr.ph ], [ %indvars.iv.next.i43, %if.then.i ] + %arrayidx.i13.i = getelementptr inbounds nuw %"struct.hermes::hbc::DebugFileRegion", ptr %8, i64 %indvars.iv.next.i43 %10 = load i32, ptr %arrayidx.i13.i, align 1 %cmp5.not.i = icmp ugt i32 %10, %lastLocationOffset.0.lcssa br i1 %cmp5.not.i, label %if.then10, label %if.then.i, !llvm.loop !9 -if.then.i: ; preds = %for.body.lr.ph.i, %for.body.i - %indvars.iv.i25 = phi i64 [ %indvars.iv.next.i, %for.body.i ], [ 0, %for.body.lr.ph.i ] - %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i25, 1 +if.then.i: ; preds = %for.body.i + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.next.i43, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge, label %for.body.i, !llvm.loop !9 + br i1 %exitcond.not.i, label %if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge, label %for.body.i, !llvm.loop !9 + +if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge: ; preds = %if.then.i + br label %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge, !llvm.loop !9 -if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge: ; preds = %if.then.i +if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge: ; preds = %if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge, %if.then.i.preheader + %indvars.iv.i25.lcssa = phi i64 [ %indvars.iv.next.i43, %if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge ], [ 0, %if.then.i.preheader ] br label %if.then10, !llvm.loop !9 if.then10: ; preds = %for.body.i, %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge - %arrayidx.i13.i26.le = getelementptr inbounds nuw %"struct.hermes::hbc::DebugFileRegion", ptr %8, i64 %indvars.iv.i25 + %indvars.iv.i2540 = phi i64 [ %indvars.iv.i25.lcssa, %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge ], [ %indvars.iv.i2542, %for.body.i ] + %arrayidx.i13.i26.le = getelementptr inbounds nuw %"struct.hermes::hbc::DebugFileRegion", ptr %8, i64 %indvars.iv.i2540 %filenameId.i.le35 = getelementptr inbounds nuw i8, ptr %arrayidx.i13.i26.le, i64 4 %11 = load i32, ptr %filenameId.i.le35, align 4 store i32 %offsetInFunction, ptr %agg.result, align 4 diff --git a/bench/hermes/optimized/Sorting.ll b/bench/hermes/optimized/Sorting.ll index 73cbc4d5c89..327f380ed8a 100644 --- a/bench/hermes/optimized/Sorting.ll +++ b/bench/hermes/optimized/Sorting.ll @@ -194,20 +194,20 @@ do.body.i: ; preds = %do.cond.i, %if.end. do.cond.i: ; preds = %do.body.i %dec.i = add i32 %start.0.i, -1 %cmp6.not.i = icmp eq i32 %start.0.i, %l.addr.0.lcssa - br i1 %cmp6.not.i, label %while.cond.preheader.i, label %do.body.i, !llvm.loop !8 + br i1 %cmp6.not.i, label %while.body.preheader.i, label %do.body.i, !llvm.loop !8 -while.cond.preheader.i: ; preds = %do.cond.i +while.body.preheader.i: ; preds = %do.cond.i %conv.i.i = zext i32 %l.addr.0.lcssa to i64 - br label %while.cond.i + br label %while.body.i -while.cond.i: ; preds = %if.end13.i, %while.cond.preheader.i - %end.addr.0.i = phi i32 [ %dec9.i, %if.end13.i ], [ %add, %while.cond.preheader.i ] - %sub7.i = sub i32 %end.addr.0.i, %l.addr.0.lcssa +while.cond.i: ; preds = %if.end13.i + %sub7.i = sub i32 %dec9.i, %l.addr.0.lcssa %cmp8.i = icmp ugt i32 %sub7.i, 1 - br i1 %cmp8.i, label %while.body.i, label %return + br i1 %cmp8.i, label %while.body.i, label %return, !llvm.loop !9 -while.body.i: ; preds = %while.cond.i - %dec9.i = add i32 %end.addr.0.i, -1 +while.body.i: ; preds = %while.cond.i, %while.body.preheader.i + %end.addr.026.i = phi i32 [ %dec9.i, %while.cond.i ], [ %add, %while.body.preheader.i ] + %dec9.i = add i32 %end.addr.026.i, -1 %vtable.i.i = load ptr, ptr %sm, align 8 %0 = load ptr, ptr %vtable.i.i, align 8 %call.i.i = tail call noundef i32 %0(ptr noundef nonnull align 8 dereferenceable(8) %sm, i32 noundef %l.addr.0.lcssa, i32 noundef %dec9.i) #10 @@ -225,7 +225,10 @@ if.end13.i: ; preds = %while.body.i store i32 %2, ptr %add.ptr.i4.i.i, align 4 %call14.i = tail call fastcc noundef i32 @_ZN6hermes2vm12_GLOBAL__N_111heapFixDownEPNS0_9SortModelERSt6vectorIjSaIjEEjjj(ptr noundef nonnull %sm, ptr noundef nonnull readonly align 8 dereferenceable(24) %index, i32 noundef %l.addr.0.lcssa, i32 noundef %l.addr.0.lcssa, i32 noundef %dec9.i) %cmp15.i = icmp eq i32 %call14.i, 0 - br i1 %cmp15.i, label %return, label %while.cond.i, !llvm.loop !9 + br i1 %cmp15.i, label %if.end13.return.loopexit_crit_edge.i, label %while.cond.i, !llvm.loop !9 + +if.end13.return.loopexit_crit_edge.i: ; preds = %if.end13.i + br label %return, !llvm.loop !9 if.end: ; preds = %if.end.lr.ph, %if.then71 %limit.addr.0389 = phi i32 [ %limit.addr.0.ph396, %if.end.lr.ph ], [ %dec, %if.then71 ] @@ -843,8 +846,8 @@ for.inc16.i303: ; preds = %cond.true.i.i299, % %cmp1.not.i305 = icmp eq i32 %i.0.i304, %retval.sroa.6.0.i br i1 %cmp1.not.i305, label %return, label %for.cond2.preheader.i287, !llvm.loop !7 -return: ; preds = %if.then83, %if.end33, %if.end19, %if.end6, %if.then31.i, %if.then41, %if.then27, %if.then13, %if.end, %if.then58, %if.end22.i, %for.body4.i249, %if.end10.i266, %for.body.i, %for.body9.i, %for.body4.i, %if.end10.i, %for.inc16.i221, %for.body4.i208, %if.end10.i225, %for.inc16.i303, %for.body4.i290, %if.end10.i307, %do.body.i, %if.end13.i, %while.body.i, %while.cond.i, %if.else73, %if.else102, %if.then - %retval.0 = phi i32 [ 1, %if.then ], [ 1, %if.else102 ], [ 1, %if.else73 ], [ 0, %if.end13.i ], [ 1, %while.cond.i ], [ 0, %while.body.i ], [ 0, %do.body.i ], [ 0, %if.end10.i307 ], [ 0, %for.body4.i290 ], [ 1, %for.inc16.i303 ], [ 0, %if.end10.i225 ], [ 0, %for.body4.i208 ], [ 1, %for.inc16.i221 ], [ 0, %if.end10.i ], [ 0, %for.body4.i ], [ 0, %for.body9.i ], [ 0, %for.body.i ], [ 0, %if.end10.i266 ], [ 0, %for.body4.i249 ], [ 0, %if.end22.i ], [ 0, %if.then58 ], [ 0, %if.end ], [ 0, %if.then13 ], [ 0, %if.then27 ], [ 0, %if.then41 ], [ 0, %if.then31.i ], [ 0, %if.end6 ], [ 0, %if.end19 ], [ 0, %if.end33 ], [ 0, %if.then83 ] +return: ; preds = %if.then83, %if.end33, %if.end19, %if.end6, %if.then31.i, %if.then41, %if.then27, %if.then13, %if.end, %if.then58, %if.end22.i, %for.body4.i249, %if.end10.i266, %for.body.i, %for.body9.i, %for.body4.i, %if.end10.i, %for.inc16.i221, %for.body4.i208, %if.end10.i225, %for.inc16.i303, %for.body4.i290, %if.end10.i307, %do.body.i, %while.body.i, %while.cond.i, %if.else73, %if.else102, %if.end13.return.loopexit_crit_edge.i, %if.then + %retval.0 = phi i32 [ 1, %if.then ], [ 0, %if.end13.return.loopexit_crit_edge.i ], [ 1, %if.else102 ], [ 1, %if.else73 ], [ 0, %while.body.i ], [ 1, %while.cond.i ], [ 0, %do.body.i ], [ 0, %if.end10.i307 ], [ 0, %for.body4.i290 ], [ 1, %for.inc16.i303 ], [ 0, %if.end10.i225 ], [ 0, %for.body4.i208 ], [ 1, %for.inc16.i221 ], [ 0, %if.end10.i ], [ 0, %for.body4.i ], [ 0, %for.body9.i ], [ 0, %for.body.i ], [ 0, %if.end10.i266 ], [ 0, %for.body4.i249 ], [ 0, %if.end22.i ], [ 0, %if.then58 ], [ 0, %if.end ], [ 0, %if.then13 ], [ 0, %if.then27 ], [ 0, %if.then41 ], [ 0, %if.then31.i ], [ 0, %if.end6 ], [ 0, %if.end19 ], [ 0, %if.end33 ], [ 0, %if.then83 ] ret i32 %retval.0 } diff --git a/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll b/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll index b8a98e642a8..ca7969d51e6 100644 --- a/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll +++ b/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll @@ -1013,7 +1013,7 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde %7 = load ptr, ptr %6, align 8, !noundef !4 store ptr null, ptr %6, align 8 %.not = icmp eq ptr %7, null - br i1 %.not, label %57, label %8 + br i1 %.not, label %56, label %8 8: ; preds = %0 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -1039,7 +1039,7 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde "_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread": ; preds = %10, %8 invoke void @_ZN4core6option13expect_failed17hc85eb6037a3050f7E(ptr noalias noundef nonnull readonly align 1 @anon.ca33c84f5f46cddb79da9f4933f043aa.54, i64 noundef 21, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ca33c84f5f46cddb79da9f4933f043aa.55) #24 - to label %20 unwind label %55 + to label %20 unwind label %54 "_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit": ; preds = %13 store ptr %7, ptr %3, align 8 @@ -1054,13 +1054,13 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde invoke void @"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h61d184428ed25fc1E.llvm.10022686776672290337"(ptr noalias noundef nonnull align 8 dereferenceable(8) %1) to label %"_ZN4core3ptr95drop_in_place$LT$core..option..Option$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$$GT$17he56a477076105f75E.exit" unwind label %22 -20: ; preds = %47, %42, %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" +20: ; preds = %._crit_edge, %42, %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" unreachable 21: ; preds = %43, %22 %.pn = phi { ptr, i32 } [ %23, %22 ], [ %44, %43 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..rc..Rc$LT$markup5ever_rcdom..Node$GT$$GT$17h38e6e968ed04c345E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %3) #22 - to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %53 + to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %52 22: ; preds = %19, %42 %23 = landingpad { ptr, i32 } @@ -1081,27 +1081,29 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde %30 = load ptr, ptr %29, align 8, !nonnull !4, !noundef !4 %31 = getelementptr inbounds nuw i8, ptr %7, i64 128 %32 = load i64, ptr %31, align 8, !noundef !4 - %33 = getelementptr inbounds ptr, ptr %30, i64 %32 - br label %34 - -34: ; preds = %38, %27 - %35 = phi i64 [ %41, %38 ], [ 0, %27 ] - %36 = phi ptr [ %39, %38 ], [ %30, %27 ] - %37 = icmp eq ptr %36, %33 - br i1 %37, label %47, label %38 - -38: ; preds = %34 - %39 = getelementptr inbounds nuw i8, ptr %36, i64 8 - %40 = load ptr, ptr %36, align 8, !alias.scope !150, !noalias !155, !nonnull !4, !noundef !4 - %.not.i.i = icmp eq ptr %40, %.0.val - %41 = add nuw nsw i64 %35, 1 - br i1 %.not.i.i, label %52, label %34 + %.idx = shl nsw i64 %32, 3 + %33 = getelementptr inbounds i8, ptr %30, i64 %.idx + %34 = icmp eq i64 %32, 0 + br i1 %34, label %._crit_edge, label %.lr.ph + +35: ; preds = %.lr.ph + %36 = getelementptr inbounds nuw i8, ptr %39, i64 8 + %37 = add nuw nsw i64 %40, 1 + %38 = icmp eq ptr %36, %33 + br i1 %38, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %27, %35 + %39 = phi ptr [ %36, %35 ], [ %30, %27 ] + %40 = phi i64 [ %37, %35 ], [ 0, %27 ] + %41 = load ptr, ptr %39, align 8, !alias.scope !150, !noalias !155, !nonnull !4, !noundef !4 + %.not.i.i = icmp eq ptr %41, %.0.val + br i1 %.not.i.i, label %51, label %35 42: ; preds = %"_ZN4core3ptr95drop_in_place$LT$core..option..Option$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$$GT$17he56a477076105f75E.exit" invoke void @_ZN4core4cell30panic_already_mutably_borrowed17hbc333334528bd302E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ca33c84f5f46cddb79da9f4933f043aa.59) #24 to label %20 unwind label %22 -43: ; preds = %47 +43: ; preds = %._crit_edge %44 = landingpad { ptr, i32 } cleanup %45 = load i64, ptr %24, align 8, !noalias !162, !noundef !4 @@ -1109,47 +1111,47 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde store i64 %46, ptr %24, align 8, !noalias !162 br label %21 -47: ; preds = %34 +._crit_edge: ; preds = %35, %27 call void @llvm.lifetime.start.p0(ptr nonnull %2) store ptr @anon.ca33c84f5f46cddb79da9f4933f043aa.57, ptr %2, align 8 - %48 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 1, ptr %48, align 8 - %49 = getelementptr inbounds nuw i8, ptr %2, i64 32 - store ptr null, ptr %49, align 8 - %50 = getelementptr inbounds nuw i8, ptr %2, i64 16 - store ptr @anon.ca33c84f5f46cddb79da9f4933f043aa.4, ptr %50, align 8 - %51 = getelementptr inbounds nuw i8, ptr %2, i64 24 - store i64 0, ptr %51, align 8 + %47 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 1, ptr %47, align 8 + %48 = getelementptr inbounds nuw i8, ptr %2, i64 32 + store ptr null, ptr %48, align 8 + %49 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store ptr @anon.ca33c84f5f46cddb79da9f4933f043aa.4, ptr %49, align 8 + %50 = getelementptr inbounds nuw i8, ptr %2, i64 24 + store i64 0, ptr %50, align 8 invoke void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ca33c84f5f46cddb79da9f4933f043aa.58) #24 to label %20 unwind label %43 -52: ; preds = %38 +51: ; preds = %.lr.ph store i64 %25, ptr %24, align 8, !noalias !169 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %57 + br label %56 -53: ; preds = %55, %21 - %54 = landingpad { ptr, i32 } +52: ; preds = %54, %21 + %53 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23 unreachable -"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit": ; preds = %55, %21 - %.pn295 = phi { ptr, i32 } [ %.pn, %21 ], [ %56, %55 ] +"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit": ; preds = %54, %21 + %.pn295 = phi { ptr, i32 } [ %.pn, %21 ], [ %55, %54 ] resume { ptr, i32 } %.pn295 -55: ; preds = %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" - %56 = landingpad { ptr, i32 } +54: ; preds = %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" + %55 = landingpad { ptr, i32 } cleanup invoke void @"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h61d184428ed25fc1E.llvm.10022686776672290337"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %53 + to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %52 -57: ; preds = %52, %0 - %.sroa.3.0 = phi i64 [ %35, %52 ], [ undef, %0 ] - %58 = insertvalue { ptr, i64 } poison, ptr %7, 0 - %59 = insertvalue { ptr, i64 } %58, i64 %.sroa.3.0, 1 - ret { ptr, i64 } %59 +56: ; preds = %51, %0 + %.sroa.3.0 = phi i64 [ %40, %51 ], [ undef, %0 ] + %57 = insertvalue { ptr, i64 } poison, ptr %7, 0 + %58 = insertvalue { ptr, i64 } %57, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %58 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/hwloc/optimized/topology.ll b/bench/hwloc/optimized/topology.ll index 8fac8bb6a22..fcd75f6d10b 100644 --- a/bench/hwloc/optimized/topology.ll +++ b/bench/hwloc/optimized/topology.ll @@ -9410,33 +9410,37 @@ define internal fastcc void @propagate_total_memory(ptr noundef captures(none) i %30 = load ptr, ptr %20, align 8, !tbaa !44 %31 = getelementptr inbounds nuw i8, ptr %30, i64 8 %32 = load i32, ptr %31, align 8, !tbaa !53 + %.not2940 = icmp eq i32 %32, 0 + br i1 %.not2940, label %._crit_edge45, label %.lr.ph43 + +.lr.ph43: ; preds = %26 %33 = getelementptr inbounds nuw i8, ptr %30, i64 16 - %34 = zext i32 %32 to i64 - br label %35 + %34 = load ptr, ptr %33, align 8, !tbaa !53 + %35 = zext i32 %32 to i64 + br label %37 -35: ; preds = %36, %26 - %indvars.iv = phi i64 [ %38, %36 ], [ %34, %26 ] - %.not29 = icmp eq i64 %indvars.iv, 0 - br i1 %.not29, label %.split.loop.exit42, label %36 +36: ; preds = %37 + %.not29.wide = icmp eq i64 %38, 0 + br i1 %.not29.wide, label %._crit_edge45, label %37, !llvm.loop !221 -36: ; preds = %35 - %37 = load ptr, ptr %33, align 8, !tbaa !53 +37: ; preds = %.lr.ph43, %36 + %indvars.iv = phi i64 [ %35, %.lr.ph43 ], [ %38, %36 ] %38 = add nsw i64 %indvars.iv, -1 - %39 = getelementptr inbounds nuw %struct.hwloc_memory_page_type_s, ptr %37, i64 %38 - %40 = load i64, ptr %39, align 8, !tbaa !221 + %39 = getelementptr inbounds nuw %struct.hwloc_memory_page_type_s, ptr %34, i64 %38 + %40 = load i64, ptr %39, align 8, !tbaa !222 %.not30 = icmp eq i64 %40, 0 - br i1 %.not30, label %35, label %.split.loop.exit, !llvm.loop !223 + br i1 %.not30, label %36, label %._crit_edge44, !llvm.loop !221 -.split.loop.exit: ; preds = %36 +._crit_edge44: ; preds = %37 %41 = trunc nuw i64 %indvars.iv to i32 - br label %.split.loop.exit42 + br label %._crit_edge45, !llvm.loop !221 -.split.loop.exit42: ; preds = %35, %.split.loop.exit - %.0.lcssa = phi i32 [ %41, %.split.loop.exit ], [ 0, %35 ] +._crit_edge45: ; preds = %36, %._crit_edge44, %26 + %.0.lcssa = phi i32 [ %41, %._crit_edge44 ], [ 0, %26 ], [ 0, %36 ] store i32 %.0.lcssa, ptr %31, align 8, !tbaa !53 br label %42 -42: ; preds = %19, %.split.loop.exit42, %._crit_edge39 +42: ; preds = %19, %._crit_edge45, %._crit_edge39 ret void } @@ -11317,12 +11321,12 @@ declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr noundef captures( ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define internal range(i32 -1, 2) i32 @hwloc_memory_page_type_compare(ptr noundef readonly captures(none) %0, ptr noundef readonly captures(none) %1) #1 { - %3 = load i64, ptr %1, align 8, !tbaa !221 + %3 = load i64, ptr %1, align 8, !tbaa !222 %.not = icmp eq i64 %3, 0 br i1 %.not, label %10, label %4 4: ; preds = %2 - %5 = load i64, ptr %0, align 8, !tbaa !221 + %5 = load i64, ptr %0, align 8, !tbaa !222 %6 = icmp eq i64 %3, %5 br i1 %6, label %10, label %7 @@ -11616,9 +11620,9 @@ attributes #40 = { cold } !218 = distinct !{!218, !47} !219 = distinct !{!219, !47} !220 = distinct !{!220, !47} -!221 = !{!222, !11, i64 0} -!222 = !{!"hwloc_memory_page_type_s", !11, i64 0, !11, i64 8} -!223 = distinct !{!223, !47} +!221 = distinct !{!221, !47} +!222 = !{!223, !11, i64 0} +!223 = !{!"hwloc_memory_page_type_s", !11, i64 0, !11, i64 8} !224 = !{!37, !37, i64 0} !225 = distinct !{!225, !47} !226 = distinct !{!226, !47} diff --git a/bench/hyperscan/optimized/bad_patterns.ll b/bench/hyperscan/optimized/bad_patterns.ll index 93905e38544..320371c37d7 100644 --- a/bench/hyperscan/optimized/bad_patterns.ll +++ b/bench/hyperscan/optimized/bad_patterns.ll @@ -10771,60 +10771,67 @@ define linkonce_odr hidden void @_ZN5boost9algorithm13trim_right_ifINSt7__cxx111 %5 = load ptr, ptr %0, align 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %7 = load i64, ptr %6, align 8 - %8 = getelementptr inbounds nuw i8, ptr %5, i64 %7 - %9 = load i16, ptr %1, align 8 - store i16 %9, ptr %4, align 8 - %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 - call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #24 + %8 = load i16, ptr %1, align 8 + store i16 %8, ptr %4, align 8 + %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 + call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #24 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %12 = load i16, ptr %4, align 8 - store i16 %12, ptr %3, align 8 - %13 = getelementptr inbounds nuw i8, ptr %3, i64 8 - call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %10) #24 - br label %14 + %11 = load i16, ptr %4, align 8 + store i16 %11, ptr %3, align 8 + %12 = getelementptr inbounds nuw i8, ptr %3, i64 8 + call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %9) #24 + %.not10.i.i = icmp samesign eq i64 %7, 0 + br i1 %.not10.i.i, label %.loopexit, label %.lr.ph.i.i.preheader + +.lr.ph.i.i.preheader: ; preds = %2 + %13 = getelementptr inbounds nuw i8, ptr %5, i64 %7 + br label %.lr.ph.i.i + +14: ; preds = %.noexc.i + %.not.i.i = icmp eq ptr %15, %5 + br i1 %.not.i.i, label %.loopexit, label %.lr.ph.i.i, !llvm.loop !73 + +.lr.ph.i.i: ; preds = %.lr.ph.i.i.preheader, %14 + %.sroa.0.011.i.i = phi ptr [ %15, %14 ], [ %13, %.lr.ph.i.i.preheader ] + %15 = getelementptr inbounds i8, ptr %.sroa.0.011.i.i, i64 -1 + %16 = load i8, ptr %15, align 1 + %17 = invoke noundef nonnull align 8 dereferenceable(570) ptr @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale(ptr noundef nonnull align 8 dereferenceable(8) %12) + to label %.noexc.i unwind label %.body -14: ; preds = %.noexc.i, %2 - %.sroa.0.0.i.i = phi ptr [ %8, %2 ], [ %16, %.noexc.i ] - %.not.i.i = icmp eq ptr %.sroa.0.0.i.i, %5 - br i1 %.not.i.i, label %27, label %15 +.noexc.i: ; preds = %.lr.ph.i.i + %18 = load i16, ptr %3, align 8 + %19 = getelementptr inbounds nuw i8, ptr %17, i64 48 + %20 = load ptr, ptr %19, align 8 + %21 = zext i8 %16 to i64 + %22 = getelementptr inbounds nuw i16, ptr %20, i64 %21 + %23 = load i16, ptr %22, align 2 + %24 = and i16 %23, %18 + %.not9.i.i = icmp eq i16 %24, 0 + br i1 %.not9.i.i, label %._crit_edge.i.i, label %14, !llvm.loop !73 -15: ; preds = %14 - %16 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i, i64 -1 - %17 = load i8, ptr %16, align 1 - %18 = invoke noundef nonnull align 8 dereferenceable(570) ptr @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale(ptr noundef nonnull align 8 dereferenceable(8) %13) - to label %.noexc.i unwind label %.body +._crit_edge.i.i: ; preds = %.noexc.i + br label %.loopexit, !llvm.loop !73 -.noexc.i: ; preds = %15 - %19 = load i16, ptr %3, align 8 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 48 - %21 = load ptr, ptr %20, align 8 - %22 = zext i8 %17 to i64 - %23 = getelementptr inbounds nuw i16, ptr %21, i64 %22 - %24 = load i16, ptr %23, align 2 - %25 = and i16 %24, %19 - %.not9.i.i = icmp eq i16 %25, 0 - br i1 %.not9.i.i, label %27, label %14, !llvm.loop !73 - -.body: ; preds = %15 - %26 = landingpad { ptr, i32 } +.body: ; preds = %.lr.ph.i.i + %25 = landingpad { ptr, i32 } cleanup - call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #24 - call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #24 - resume { ptr, i32 } %26 + call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #24 + call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #24 + resume { ptr, i32 } %25 -27: ; preds = %.noexc.i, %14 - %28 = phi ptr [ %5, %14 ], [ %.sroa.0.0.i.i, %.noexc.i ] - call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #24 +.loopexit: ; preds = %14, %._crit_edge.i.i, %2 + %26 = phi ptr [ %.sroa.0.011.i.i, %._crit_edge.i.i ], [ %5, %2 ], [ %5, %14 ] + call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #24 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %29 = load ptr, ptr %0, align 8 - %30 = ptrtoint ptr %28 to i64 - %31 = ptrtoint ptr %29 to i64 - %32 = sub i64 %30, %31 - store i64 %32, ptr %6, align 8 - %33 = getelementptr inbounds nuw i8, ptr %29, i64 %32 - store i8 0, ptr %33, align 1 - call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #24 + %27 = load ptr, ptr %0, align 8 + %28 = ptrtoint ptr %26 to i64 + %29 = ptrtoint ptr %27 to i64 + %30 = sub i64 %28, %29 + store i64 %30, ptr %6, align 8 + %31 = getelementptr inbounds nuw i8, ptr %27, i64 %30 + store i8 0, ptr %31, align 1 + call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #24 ret void } diff --git a/bench/icu/optimized/dtfmtsym.ll b/bench/icu/optimized/dtfmtsym.ll index ba25ead90ba..42f33853e59 100644 --- a/bench/icu/optimized/dtfmtsym.ll +++ b/bench/icu/optimized/dtfmtsym.ll @@ -11523,31 +11523,35 @@ define noundef signext range(i8 0, 2) i8 @_ZN6icu_7717DateFormatSymbols12arrayCo %4 = icmp ne ptr %0, %1 %5 = icmp sgt i32 %2, 0 %or.cond = and i1 %4, %5 - br i1 %or.cond, label %.lr.ph, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread + br i1 %or.cond, label %.lr.ph.preheader, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread -.lr.ph: ; preds = %3 +.lr.ph.preheader: ; preds = %3 %6 = zext nneg i32 %2 to i64 - br label %7 + br label %.lr.ph + +7: ; preds = %14, %_ZNK6icu_7713UnicodeStringneERKS0_.exit + %8 = icmp samesign ugt i64 %indvars.iv, 1 + br i1 %8, label %.lr.ph, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, !llvm.loop !156 -7: ; preds = %.lr.ph, %.preheader.backedge - %indvars.iv14 = phi i64 [ %6, %.lr.ph ], [ %8, %.preheader.backedge ] - %8 = add nsw i64 %indvars.iv14, -1 - %9 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %0, i64 %8 - %10 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %1, i64 %8 +.lr.ph: ; preds = %.lr.ph.preheader, %7 + %indvars.iv = phi i64 [ %6, %.lr.ph.preheader ], [ %indvars.iv.next, %7 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %9 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %0, i64 %indvars.iv.next + %10 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %1, i64 %indvars.iv.next %11 = getelementptr inbounds nuw i8, ptr %9, i64 8 %12 = load i16, ptr %11, align 8, !tbaa !23 %13 = and i16 %12, 1 %.not.i.i = icmp eq i16 %13, 0 br i1 %.not.i.i, label %18, label %14 -14: ; preds = %7 +14: ; preds = %.lr.ph %15 = getelementptr inbounds nuw i8, ptr %10, i64 8 %16 = load i16, ptr %15, align 8, !tbaa !23 %17 = and i16 %16, 1 %.not = icmp eq i16 %17, 0 - br i1 %.not, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, label %.preheader.backedge + br i1 %.not, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, label %7, !llvm.loop !156 -18: ; preds = %7 +18: ; preds = %.lr.ph %19 = icmp slt i16 %12, 0 %20 = ashr i16 %12, 5 %21 = sext i16 %20 to i32 @@ -11576,16 +11580,14 @@ _ZNK6icu_7713UnicodeStringneERKS0_.exit: ; preds = %18 %38 = load ptr, ptr %37, align 8 %39 = select i1 %.not.i.i.i.i, ptr %38, ptr %36 %40 = tail call noundef signext i8 @_ZNK6icu_7713UnicodeString8doEqualsEPKDsi(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef %39, i32 noundef %24) - %.not13 = icmp eq i8 %40, 0 - br i1 %.not13, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, label %.preheader.backedge + %.not18 = icmp eq i8 %40, 0 + br i1 %.not18, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, label %7, !llvm.loop !156 -.preheader.backedge: ; preds = %_ZNK6icu_7713UnicodeStringneERKS0_.exit, %14 - %41 = trunc nuw i64 %8 to i32 - %42 = icmp sgt i32 %41, 0 - br i1 %42, label %7, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, !llvm.loop !156 +_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge: ; preds = %14, %_ZNK6icu_7713UnicodeStringneERKS0_.exit + br label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, !llvm.loop !156 -_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread: ; preds = %14, %_ZNK6icu_7713UnicodeStringneERKS0_.exit, %.preheader.backedge, %18, %3 - %.08 = phi i8 [ 1, %3 ], [ 0, %18 ], [ 1, %.preheader.backedge ], [ 0, %_ZNK6icu_7713UnicodeStringneERKS0_.exit ], [ 0, %14 ] +_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread: ; preds = %7, %18, %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, %3 + %.08 = phi i8 [ 1, %3 ], [ 0, %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge ], [ 1, %7 ], [ 0, %18 ] ret i8 %.08 } diff --git a/bench/icu/optimized/strrepl.ll b/bench/icu/optimized/strrepl.ll index 28583d20390..635b2e430e9 100644 --- a/bench/icu/optimized/strrepl.ll +++ b/bench/icu/optimized/strrepl.ll @@ -1182,33 +1182,33 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 %or.cond = select i1 %26, i1 %27, i1 false br i1 %or.cond, label %.preheader, label %.loopexit57 -.preheader: ; preds = %_ZN6icu_7713UnicodeString8truncateEi.exit, %28 - %.1 = phi i32 [ %29, %28 ], [ %23, %_ZN6icu_7713UnicodeString8truncateEi.exit ] - %exitcond.not = icmp eq i32 %.1, 0 - br i1 %exitcond.not, label %.loopexit57, label %28 - 28: ; preds = %.preheader - %29 = add i32 %.1, 1 + %29 = add nsw i32 %.in, 1 + %exitcond.not = icmp eq i32 %29, 0 + br i1 %exitcond.not, label %.loopexit57, label %.preheader, !llvm.loop !33 + +.preheader: ; preds = %_ZN6icu_7713UnicodeString8truncateEi.exit, %28 + %.in = phi i32 [ %29, %28 ], [ %23, %_ZN6icu_7713UnicodeString8truncateEi.exit ] invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 64, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) - to label %.preheader unwind label %.loopexit.split-lp.loopexit, !llvm.loop !33 + to label %28 unwind label %.loopexit.split-lp.loopexit, !llvm.loop !33 -.loopexit: ; preds = %103 +.loopexit: ; preds = %.lr.ph69 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %28 +.loopexit.split-lp.loopexit: ; preds = %.preheader %lpad.loopexit58 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %106, %105 +.loopexit.split-lp.loopexit.split-lp: ; preds = %105, %._crit_edge70 %lpad.loopexit.split-lp59 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit57: ; preds = %.preheader, %_ZN6icu_7713UnicodeString8truncateEi.exit - %.0 = phi i32 [ %23, %_ZN6icu_7713UnicodeString8truncateEi.exit ], [ 1, %.preheader ] +.loopexit57: ; preds = %28, %_ZN6icu_7713UnicodeString8truncateEi.exit + %.0 = phi i32 [ %23, %_ZN6icu_7713UnicodeString8truncateEi.exit ], [ 1, %28 ] %30 = getelementptr inbounds nuw i8, ptr %0, i64 24 %31 = getelementptr inbounds nuw i8, ptr %0, i64 28 %32 = load i16, ptr %30, align 8, !tbaa !17 @@ -1234,7 +1234,7 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 %.not = icmp ne i8 %44, 0 %45 = icmp sgt i32 %.0, %.lcssa %or.cond54 = select i1 %.not, i1 %45, i1 false - br i1 %or.cond54, label %99, label %106 + br i1 %or.cond54, label %99, label %105 46: ; preds = %53 %47 = landingpad { ptr, i32 } @@ -1253,16 +1253,16 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 53: ; preds = %48 invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 124, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) - to label %._crit_edge71 unwind label %46 + to label %._crit_edge74 unwind label %46 -._crit_edge71: ; preds = %53 +._crit_edge74: ; preds = %53 %.pre = load i16, ptr %30, align 8, !tbaa !17 - %.pre72 = load i32, ptr %31, align 4 + %.pre75 = load i32, ptr %31, align 4 br label %54 -54: ; preds = %._crit_edge71, %48 - %55 = phi i32 [ %.pre72, %._crit_edge71 ], [ %49, %48 ] - %56 = phi i16 [ %.pre, %._crit_edge71 ], [ %50, %48 ] +54: ; preds = %._crit_edge74, %48 + %55 = phi i32 [ %.pre75, %._crit_edge74 ], [ %49, %48 ] + %56 = phi i16 [ %.pre, %._crit_edge74 ], [ %50, %48 ] %57 = icmp slt i16 %56, 0 %58 = ashr i16 %56, 5 %59 = sext i16 %58 to i32 @@ -1354,27 +1354,28 @@ _ZNK6icu_7713UnicodeString6charAtEi.exit: ; preds = %63, %54 99: ; preds = %._crit_edge %100 = sub nsw i32 %.0, %.lcssa - br label %101 + %101 = icmp sgt i32 %100, 0 + br i1 %101, label %.lr.ph69, label %._crit_edge70 -101: ; preds = %103, %99 - %.2 = phi i32 [ %100, %99 ], [ %104, %103 ] - %102 = icmp sgt i32 %.2, 0 - br i1 %102, label %103, label %105 +102: ; preds = %.lr.ph69 + %103 = add nsw i32 %.267, -1 + %104 = icmp sgt i32 %.267, 1 + br i1 %104, label %.lr.ph69, label %._crit_edge70, !llvm.loop !37 -103: ; preds = %101 - %104 = add nsw i32 %.2, -1 +.lr.ph69: ; preds = %99, %102 + %.267 = phi i32 [ %103, %102 ], [ %100, %99 ] invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 64, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) - to label %101 unwind label %.loopexit, !llvm.loop !37 + to label %102 unwind label %.loopexit, !llvm.loop !37 -105: ; preds = %101 +._crit_edge70: ; preds = %102, %99 invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 124, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) - to label %106 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %105 unwind label %.loopexit.split-lp.loopexit.split-lp -106: ; preds = %105, %._crit_edge +105: ; preds = %._crit_edge70, %._crit_edge invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef -1, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) - to label %107 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %106 unwind label %.loopexit.split-lp.loopexit.split-lp -107: ; preds = %106 +106: ; preds = %105 call void @_ZN6icu_7713UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #17 call void @llvm.lifetime.end.p0(ptr nonnull %6) ret ptr %1 diff --git a/bench/icu/optimized/ucnvlat1.ll b/bench/icu/optimized/ucnvlat1.ll index 30006fac8c6..4e36823892a 100644 --- a/bench/icu/optimized/ucnvlat1.ll +++ b/bench/icu/optimized/ucnvlat1.ll @@ -688,22 +688,27 @@ define internal void @_ZL19ucnv_Latin1FromUTF8P25UConverterFromUnicodeArgsP23UCo 46: ; preds = %41, %.thread %.073 = phi ptr [ %9, %.thread ], [ %spec.select, %41 ] %47 = icmp ult ptr %.074, %.073 - br i1 %47, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %46, %63 - %.198 = phi i32 [ %.2, %63 ], [ %.069, %46 ] - %.17197 = phi ptr [ %.272, %63 ], [ %.070, %46 ] - %.17596 = phi ptr [ %.276, %63 ], [ %.074, %46 ] - %48 = icmp sgt i32 %.198, 0 - br i1 %48, label %49, label %.loopexit.thread - -49: ; preds = %.lr.ph - %50 = getelementptr inbounds nuw i8, ptr %.17596, i64 1 - %51 = load i8, ptr %.17596, align 1, !tbaa !19 + br i1 %47, label %.lr.ph.preheader, label %.loopexit + +.lr.ph.preheader: ; preds = %46 + %48 = icmp sgt i32 %.069, 0 + br i1 %48, label %.lr.ph126, label %.loopexit.thread + +.lr.ph: ; preds = %63 + %.2 = add nsw i32 %.198123, -1 + %49 = icmp sgt i32 %.198123, 1 + br i1 %49, label %.lr.ph126, label %.loopexit.thread, !llvm.loop !52 + +.lr.ph126: ; preds = %.lr.ph.preheader, %.lr.ph + %.17596125 = phi ptr [ %.276, %.lr.ph ], [ %.074, %.lr.ph.preheader ] + %.17197124 = phi ptr [ %.272, %.lr.ph ], [ %.070, %.lr.ph.preheader ] + %.198123 = phi i32 [ %.2, %.lr.ph ], [ %.069, %.lr.ph.preheader ] + %50 = getelementptr inbounds nuw i8, ptr %.17596125, i64 1 + %51 = load i8, ptr %.17596125, align 1, !tbaa !19 %52 = icmp sgt i8 %51, -1 br i1 %52, label %63, label %53 -53: ; preds = %49 +53: ; preds = %.lr.ph126 %54 = and i8 %51, -2 %or.cond4 = icmp eq i8 %54, -62 br i1 %or.cond4, label %55, label %62 @@ -714,27 +719,28 @@ define internal void @_ZL19ucnv_Latin1FromUTF8P25UConverterFromUnicodeArgsP23UCo br i1 %57, label %58, label %62 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.17596, i64 2 + %59 = getelementptr inbounds nuw i8, ptr %.17596125, i64 2 %60 = shl i8 %51, 6 %61 = or i8 %56, %60 br label %63 62: ; preds = %55, %53 - store ptr %.17596, ptr %6, align 8, !tbaa !3 - store ptr %.17197, ptr %10, align 8, !tbaa !33 + store ptr %.17596125, ptr %6, align 8, !tbaa !3 + store ptr %.17197124, ptr %10, align 8, !tbaa !33 store i32 -127, ptr %2, align 4, !tbaa !17 br label %89 -.loopexit.thread: ; preds = %.lr.ph +.loopexit.thread: ; preds = %.lr.ph, %.lr.ph.preheader + %.17197.lcssa = phi ptr [ %.070, %.lr.ph.preheader ], [ %.272, %.lr.ph ] + %.17596.lcssa = phi ptr [ %.074, %.lr.ph.preheader ], [ %.276, %.lr.ph ] store i32 15, ptr %2, align 4, !tbaa !17 br label %88 -63: ; preds = %49, %58 - %storemerge = phi i8 [ %61, %58 ], [ %51, %49 ] - %.276 = phi ptr [ %59, %58 ], [ %50, %49 ] - store i8 %storemerge, ptr %.17197, align 1, !tbaa !19 - %.2 = add nsw i32 %.198, -1 - %.272 = getelementptr inbounds nuw i8, ptr %.17197, i64 1 +63: ; preds = %.lr.ph126, %58 + %storemerge = phi i8 [ %61, %58 ], [ %51, %.lr.ph126 ] + %.276 = phi ptr [ %59, %58 ], [ %50, %.lr.ph126 ] + store i8 %storemerge, ptr %.17197124, align 1, !tbaa !19 + %.272 = getelementptr inbounds nuw i8, ptr %.17197124, i64 1 %64 = icmp ult ptr %.276, %.073 br i1 %64, label %.lr.ph, label %.loopexit, !llvm.loop !52 @@ -782,8 +788,8 @@ define internal void @_ZL19ucnv_Latin1FromUTF8P25UConverterFromUnicodeArgsP23UCo br label %88 88: ; preds = %.loopexit.thread, %85, %66, %.loopexit - %.17192114 = phi ptr [ %.17192.ph, %85 ], [ %.17192.ph, %66 ], [ %.17192.ph, %.loopexit ], [ %.17197, %.loopexit.thread ] - %.3 = phi ptr [ %70, %85 ], [ %.17595.ph, %66 ], [ %.17595.ph, %.loopexit ], [ %.17596, %.loopexit.thread ] + %.17192114 = phi ptr [ %.17192.ph, %85 ], [ %.17192.ph, %66 ], [ %.17192.ph, %.loopexit ], [ %.17197.lcssa, %.loopexit.thread ] + %.3 = phi ptr [ %70, %85 ], [ %.17595.ph, %66 ], [ %.17595.ph, %.loopexit ], [ %.17596.lcssa, %.loopexit.thread ] store ptr %.3, ptr %6, align 8, !tbaa !3 store ptr %.17192114, ptr %10, align 8, !tbaa !33 br label %89 diff --git a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll index d126a3da125..81c915cc4ab 100644 --- a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll +++ b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll @@ -8318,7 +8318,7 @@ define internal fastcc void @"_ZN4core3ptr209drop_in_place$LT$alloc..vec..in_pla 16: ; preds = %11 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !2646 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(1696) %12) - to label %.noexc.i.i unwind label %26, !noalias !2636 + to label %.noexc.i.i unwind label %27, !noalias !2636 .noexc.i.i: ; preds = %16 %17 = load i64, ptr %9, align 8, !range !195, !noalias !2646, !noundef !24 @@ -8343,29 +8343,30 @@ define internal fastcc void @"_ZN4core3ptr209drop_in_place$LT$alloc..vec..in_pla %23 = icmp eq i64 %13, %7 br i1 %23, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$u5d$$GT$17h974a40a44948b633E.exit.i", label %11 -24: ; preds = %28, %26 - %.1.i.i = phi i64 [ %13, %26 ], [ %30, %28 ] - %25 = icmp eq i64 %.1.i.i, %7 - br i1 %25, label %.body.i, label %28 +24: ; preds = %.lr.ph10.i.i + %25 = add i64 %.18.i.i, 1 + %26 = icmp eq i64 %25, %7 + br i1 %26, label %.body.i, label %.lr.ph10.i.i -26: ; preds = %16 - %27 = landingpad { ptr, i32 } +27: ; preds = %16 + %28 = landingpad { ptr, i32 } cleanup - br label %24 + %29 = icmp eq i64 %13, %7 + br i1 %29, label %.body.i, label %.lr.ph10.i.i -28: ; preds = %24 - %29 = getelementptr inbounds { i64, [211 x i64] }, ptr %3, i64 %.1.i.i - %30 = add i64 %.1.i.i, 1 - invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %29) #36 +.lr.ph10.i.i: ; preds = %27, %24 + %.18.i.i = phi i64 [ %25, %24 ], [ %13, %27 ] + %30 = getelementptr inbounds { i64, [211 x i64] }, ptr %3, i64 %.18.i.i + invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %30) #36 to label %24 unwind label %31, !noalias !2636 -31: ; preds = %28 +31: ; preds = %.lr.ph10.i.i %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38, !noalias !2636 unreachable -.body.i: ; preds = %24 +.body.i: ; preds = %24, %27 %33 = icmp eq i64 %5, 0 br i1 %33, label %"_ZN4core3ptr114drop_in_place$LT$alloc..raw_vec..RawVec$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$$GT$17hf7eb6ff8abf4c226E.exit.i", label %34 @@ -8384,7 +8385,7 @@ define internal fastcc void @"_ZN4core3ptr209drop_in_place$LT$alloc..vec..in_pla br label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3792507d0b422f15E.exit" "_ZN4core3ptr114drop_in_place$LT$alloc..raw_vec..RawVec$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$$GT$17hf7eb6ff8abf4c226E.exit.i": ; preds = %34, %.body.i - resume { ptr, i32 } %27 + resume { ptr, i32 } %28 "_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3792507d0b422f15E.exit": ; preds = %"_ZN4core3ptr94drop_in_place$LT$$u5b$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$u5d$$GT$17h974a40a44948b633E.exit.i", %37 ret void @@ -17020,7 +17021,7 @@ define internal fastcc void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32fo 19: ; preds = %14 call void @llvm.lifetime.start.p0(ptr nonnull %1), !noalias !4633 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(1696) %15) - to label %.noexc.i unwind label %29 + to label %.noexc.i unwind label %30 .noexc.i: ; preds = %19 %20 = load i64, ptr %12, align 8, !range !195, !noalias !4633, !noundef !24 @@ -17045,27 +17046,28 @@ define internal fastcc void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32fo %26 = icmp eq i64 %16, %9 br i1 %26, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$u5d$$GT$17h974a40a44948b633E.exit", label %14 -27: ; preds = %31, %29 - %.1.i = phi i64 [ %16, %29 ], [ %33, %31 ] - %28 = icmp eq i64 %.1.i, %9 - br i1 %28, label %34, label %31 +27: ; preds = %.lr.ph10.i + %28 = add i64 %.18.i, 1 + %29 = icmp eq i64 %28, %9 + br i1 %29, label %._crit_edge11.i, label %.lr.ph10.i -29: ; preds = %19 - %30 = landingpad { ptr, i32 } +30: ; preds = %19 + %31 = landingpad { ptr, i32 } cleanup - br label %27 + %32 = icmp eq i64 %16, %9 + br i1 %32, label %._crit_edge11.i, label %.lr.ph10.i -31: ; preds = %27 - %32 = getelementptr inbounds { i64, [211 x i64] }, ptr %3, i64 %.1.i - %33 = add i64 %.1.i, 1 - invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %32) #36 - to label %27 unwind label %35 +.lr.ph10.i: ; preds = %30, %27 + %.18.i = phi i64 [ %28, %27 ], [ %16, %30 ] + %33 = getelementptr inbounds { i64, [211 x i64] }, ptr %3, i64 %.18.i + invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %33) #36 + to label %27 unwind label %34 -34: ; preds = %27 - resume { ptr, i32 } %30 +._crit_edge11.i: ; preds = %27, %30 + resume { ptr, i32 } %31 -35: ; preds = %31 - %36 = landingpad { ptr, i32 } +34: ; preds = %.lr.ph10.i + %35 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38 unreachable diff --git a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll index 177a4f0c2a7..583c8b61597 100644 --- a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll +++ b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll @@ -1402,42 +1402,44 @@ define internal fastcc void @"_ZN4core3ptr130drop_in_place$LT$alloc..vec..in_pla store ptr %3, ptr %6, align 8, !noalias !204 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load i64, ptr %7, align 8, !alias.scope !204, !noundef !3 - br label %9 + %9 = icmp eq i64 %8, 0 + br i1 %9, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit", label %.lr.ph.i.i -9: ; preds = %11, %1 - %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %13, %11 ] - %10 = icmp eq i64 %.sroa.0.0.i.i, %8 - br i1 %10, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit", label %11 +10: ; preds = %.lr.ph.i.i + %11 = icmp eq i64 %13, %8 + br i1 %11, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit", label %.lr.ph.i.i -11: ; preds = %9 - %12 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, {} }, ptr %3, i64 %.sroa.0.0.i.i - %13 = add i64 %.sroa.0.0.i.i, 1 +.lr.ph.i.i: ; preds = %1, %10 + %.sroa.0.07.i.i = phi i64 [ %13, %10 ], [ 0, %1 ] + %12 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, {} }, ptr %3, i64 %.sroa.0.07.i.i + %13 = add nuw i64 %.sroa.0.07.i.i, 1 invoke void @"_ZN4core3ptr47drop_in_place$LT$jiff..tz..db..TimeZoneName$GT$17ha2a7616aec938893E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12) - to label %9 unwind label %16, !noalias !204 + to label %10 unwind label %17, !noalias !204 -14: ; preds = %18, %16 - %.sroa.0.1.i.i = phi i64 [ %13, %16 ], [ %20, %18 ] - %15 = icmp eq i64 %.sroa.0.1.i.i, %8 - br i1 %15, label %.body.i, label %18 +14: ; preds = %.lr.ph10.i.i + %15 = add i64 %.sroa.0.18.i.i, 1 + %16 = icmp eq i64 %15, %8 + br i1 %16, label %.body.i, label %.lr.ph10.i.i -16: ; preds = %11 - %17 = landingpad { ptr, i32 } +17: ; preds = %.lr.ph.i.i + %18 = landingpad { ptr, i32 } cleanup - br label %14 + %19 = icmp eq i64 %13, %8 + br i1 %19, label %.body.i, label %.lr.ph10.i.i -18: ; preds = %14 - %19 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, {} }, ptr %3, i64 %.sroa.0.1.i.i - %20 = add i64 %.sroa.0.1.i.i, 1 - invoke void @"_ZN4core3ptr47drop_in_place$LT$jiff..tz..db..TimeZoneName$GT$17ha2a7616aec938893E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %19) #23 +.lr.ph10.i.i: ; preds = %17, %14 + %.sroa.0.18.i.i = phi i64 [ %15, %14 ], [ %13, %17 ] + %20 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, {} }, ptr %3, i64 %.sroa.0.18.i.i + invoke void @"_ZN4core3ptr47drop_in_place$LT$jiff..tz..db..TimeZoneName$GT$17ha2a7616aec938893E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %20) #23 to label %14 unwind label %21, !noalias !204 -21: ; preds = %18 +21: ; preds = %.lr.ph10.i.i %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !204 unreachable -.body.i: ; preds = %14 +.body.i: ; preds = %14, %17 invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17h0ef43960d3ec0807E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) #23 to label %25 unwind label %23, !noalias !204 @@ -1448,9 +1450,9 @@ define internal fastcc void @"_ZN4core3ptr130drop_in_place$LT$alloc..vec..in_pla unreachable 25: ; preds = %.body.i - resume { ptr, i32 } %17 + resume { ptr, i32 } %18 -"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit": ; preds = %9 +"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit": ; preds = %10, %1 call void @"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17h0ef43960d3ec0807E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2), !noalias !204 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !204 ret void @@ -1502,7 +1504,7 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla store i64 %22, ptr %11, align 8, !noalias !224 store ptr %23, ptr %12, align 8, !noalias !224 invoke void @"_ZN4core3ptr76drop_in_place$LT$alloc..sync..Weak$LT$str$C$$RF$alloc..alloc..Global$GT$$GT$17ha1778cbf2f495b48E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) - to label %.noexc.i.i unwind label %27, !noalias !207 + to label %.noexc.i.i unwind label %28, !noalias !207 .noexc.i.i: ; preds = %19 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !224 @@ -1512,29 +1514,30 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla %24 = icmp eq i64 %15, %9 br i1 %24, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef5ffd2c8cbe3f09E.exit", label %13 -25: ; preds = %29, %27 - %.sroa.0.1.i.i = phi i64 [ %15, %27 ], [ %31, %29 ] - %26 = icmp eq i64 %.sroa.0.1.i.i, %9 - br i1 %26, label %.body.i, label %29 +25: ; preds = %.lr.ph10.i.i + %26 = add i64 %.sroa.0.18.i.i, 1 + %27 = icmp eq i64 %26, %9 + br i1 %27, label %.body.i, label %.lr.ph10.i.i -27: ; preds = %19 - %28 = landingpad { ptr, i32 } +28: ; preds = %19 + %29 = landingpad { ptr, i32 } cleanup - br label %25 + %30 = icmp eq i64 %15, %9 + br i1 %30, label %.body.i, label %.lr.ph10.i.i -29: ; preds = %25 - %30 = getelementptr inbounds nuw { { { ptr, i64 } }, {}, {} }, ptr %4, i64 %.sroa.0.1.i.i - %31 = add i64 %.sroa.0.1.i.i, 1 - invoke fastcc void @"_ZN4core3ptr48drop_in_place$LT$alloc..sync..Arc$LT$str$GT$$GT$17h814064097ab838ceE"(ptr noalias noundef align 8 dereferenceable(16) %30) #23 +.lr.ph10.i.i: ; preds = %28, %25 + %.sroa.0.18.i.i = phi i64 [ %26, %25 ], [ %15, %28 ] + %31 = getelementptr inbounds nuw { { { ptr, i64 } }, {}, {} }, ptr %4, i64 %.sroa.0.18.i.i + invoke fastcc void @"_ZN4core3ptr48drop_in_place$LT$alloc..sync..Arc$LT$str$GT$$GT$17h814064097ab838ceE"(ptr noalias noundef align 8 dereferenceable(16) %31) #23 to label %25 unwind label %32, !noalias !207 -32: ; preds = %29 +32: ; preds = %.lr.ph10.i.i %33 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !207 unreachable -.body.i: ; preds = %25 +.body.i: ; preds = %25, %28 invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17h0ef43960d3ec0807E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #23 to label %36 unwind label %34, !noalias !207 @@ -1545,7 +1548,7 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla unreachable 36: ; preds = %.body.i - resume { ptr, i32 } %28 + resume { ptr, i32 } %29 "_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef5ffd2c8cbe3f09E.exit": ; preds = %"_ZN4core3ptr48drop_in_place$LT$alloc..sync..Arc$LT$str$GT$$GT$17h814064097ab838ceE.exit.i.i", %1 call void @"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17h0ef43960d3ec0807E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3), !noalias !207 diff --git a/bench/jq/optimized/big5.ll b/bench/jq/optimized/big5.ll index 1e0ab9d9996..343bc51e46e 100644 --- a/bench/jq/optimized/big5.ll +++ b/bench/jq/optimized/big5.ll @@ -81,48 +81,57 @@ declare i32 @onigenc_not_support_get_ctype_code_range(i32 noundef, ptr noundef, ; Function Attrs: nounwind uwtable define internal ptr @big5_left_adjust_char_head(ptr noundef readnone captures(address) %0, ptr noundef %1) #2 { + %3 = ptrtoint ptr %1 to i64 + %4 = ptrtoint ptr %0 to i64 %.not = icmp ugt ptr %1, %0 - br i1 %.not, label %3, label %25 - -3: ; preds = %2 - %4 = load i8, ptr %1, align 1, !tbaa !4 - %5 = zext i8 %4 to i64 - %6 = getelementptr inbounds nuw i8, ptr @BIG5_CAN_BE_TRAIL_TABLE, i64 %5 - %7 = load i8, ptr %6, align 1, !tbaa !4 - %.not24 = icmp eq i8 %7, 0 - br i1 %.not24, label %.loopexit, label %.preheader - -.preheader: ; preds = %3, %9 - %.1 = phi ptr [ %10, %9 ], [ %1, %3 ] - %8 = icmp ugt ptr %.1, %0 - br i1 %8, label %9, label %.loopexit - -9: ; preds = %.preheader - %10 = getelementptr inbounds i8, ptr %.1, i64 -1 - %11 = load i8, ptr %10, align 1, !tbaa !4 - %12 = add i8 %11, 95 - %13 = icmp ult i8 %12, 94 - br i1 %13, label %.preheader, label %.loopexit, !llvm.loop !9 - -.loopexit: ; preds = %9, %.preheader, %3 - %.019 = phi ptr [ %1, %3 ], [ %.1, %.preheader ], [ %.1, %9 ] - %14 = load ptr, ptr @OnigEncodingBIG5, align 8, !tbaa !11 - %15 = tail call i32 %14(ptr noundef nonnull %.019) #5 - %16 = sext i32 %15 to i64 - %17 = getelementptr inbounds i8, ptr %.019, i64 %16 - %18 = icmp ugt ptr %17, %1 - br i1 %18, label %25, label %19 - -19: ; preds = %.loopexit - %20 = ptrtoint ptr %1 to i64 - %21 = ptrtoint ptr %17 to i64 - %22 = sub i64 %20, %21 - %23 = and i64 %22, -2 - %24 = getelementptr inbounds i8, ptr %17, i64 %23 - br label %25 - -25: ; preds = %.loopexit, %2, %19 - %.0 = phi ptr [ %24, %19 ], [ %1, %2 ], [ %.019, %.loopexit ] + br i1 %.not, label %5, label %27 + +5: ; preds = %2 + %6 = load i8, ptr %1, align 1, !tbaa !4 + %7 = zext i8 %6 to i64 + %8 = getelementptr inbounds nuw i8, ptr @BIG5_CAN_BE_TRAIL_TABLE, i64 %7 + %9 = load i8, ptr %8, align 1, !tbaa !4 + %.not24.not = icmp eq i8 %9, 0 + br i1 %.not24.not, label %.loopexit, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %5 + %10 = sub i64 %4, %3 + %scevgep = getelementptr i8, ptr %1, i64 %10 + br label %.lr.ph + +11: ; preds = %.lr.ph + %12 = icmp ugt ptr %13, %0 + br i1 %12, label %.lr.ph, label %.loopexit, !llvm.loop !9 + +.lr.ph: ; preds = %.lr.ph.preheader, %11 + %.125 = phi ptr [ %13, %11 ], [ %1, %.lr.ph.preheader ] + %13 = getelementptr inbounds i8, ptr %.125, i64 -1 + %14 = load i8, ptr %13, align 1, !tbaa !4 + %15 = add i8 %14, 95 + %16 = icmp ult i8 %15, 94 + br i1 %16, label %11, label %..loopexit_crit_edge26, !llvm.loop !9 + +..loopexit_crit_edge26: ; preds = %.lr.ph + br label %.loopexit, !llvm.loop !9 + +.loopexit: ; preds = %11, %..loopexit_crit_edge26, %5 + %.019 = phi ptr [ %1, %5 ], [ %.125, %..loopexit_crit_edge26 ], [ %scevgep, %11 ] + %17 = load ptr, ptr @OnigEncodingBIG5, align 8, !tbaa !11 + %18 = tail call i32 %17(ptr noundef nonnull %.019) #5 + %19 = sext i32 %18 to i64 + %20 = getelementptr inbounds i8, ptr %.019, i64 %19 + %21 = icmp ugt ptr %20, %1 + br i1 %21, label %27, label %22 + +22: ; preds = %.loopexit + %23 = ptrtoint ptr %20 to i64 + %24 = sub i64 %3, %23 + %25 = and i64 %24, -2 + %26 = getelementptr inbounds i8, ptr %20, i64 %25 + br label %27 + +27: ; preds = %.loopexit, %2, %22 + %.0 = phi ptr [ %26, %22 ], [ %1, %2 ], [ %.019, %.loopexit ] ret ptr %.0 } diff --git a/bench/jq/optimized/regenc.ll b/bench/jq/optimized/regenc.ll index 3f5e50cdc3f..e7dd65c1e9b 100644 --- a/bench/jq/optimized/regenc.ll +++ b/bench/jq/optimized/regenc.ll @@ -394,28 +394,32 @@ define dso_local ptr @onigenc_step_back(ptr noundef readonly captures(none) %0, .lr.ph: ; preds = %4 %5 = getelementptr inbounds nuw i8, ptr %0, i64 104 - br label %6 - -6: ; preds = %.lr.ph, %10 - %.014 = phi i32 [ %3, %.lr.ph ], [ %7, %10 ] - %.0813 = phi ptr [ %2, %.lr.ph ], [ %13, %10 ] - %7 = add nsw i32 %.014, -1 - %8 = icmp sgt i32 %.014, 0 - br i1 %8, label %9, label %.critedge - -9: ; preds = %6 - %.not11 = icmp ugt ptr %.0813, %1 + %6 = icmp sgt i32 %3, 0 + br i1 %6, label %.lr.ph22, label %.critedge + +7: ; preds = %10 + %8 = add nsw i32 %.in, -1 + %9 = icmp sgt i32 %.in, 1 + br i1 %9, label %.lr.ph22, label %.critedge, !llvm.loop !28 + +.lr.ph22: ; preds = %.lr.ph, %7 + %.in = phi i32 [ %8, %7 ], [ %3, %.lr.ph ] + %.081321 = phi ptr [ %13, %7 ], [ %2, %.lr.ph ] + %.not11 = icmp ugt ptr %.081321, %1 br i1 %.not11, label %10, label %.critedge -10: ; preds = %9 +10: ; preds = %.lr.ph22 %11 = load ptr, ptr %5, align 8, !tbaa !25 - %12 = getelementptr inbounds i8, ptr %.0813, i64 -1 + %12 = getelementptr inbounds i8, ptr %.081321, i64 -1 %13 = tail call ptr %11(ptr noundef %1, ptr noundef nonnull %12) #16 %.not = icmp eq ptr %13, null - br i1 %.not, label %.critedge, label %6, !llvm.loop !28 + br i1 %.not, label %..critedge.loopexit_crit_edge23, label %7, !llvm.loop !28 + +..critedge.loopexit_crit_edge23: ; preds = %10 + br label %.critedge, !llvm.loop !28 -.critedge: ; preds = %9, %10, %6, %4 - %.09 = phi ptr [ null, %4 ], [ %.0813, %6 ], [ null, %10 ], [ null, %9 ] +.critedge: ; preds = %7, %.lr.ph22, %.lr.ph, %..critedge.loopexit_crit_edge23, %4 + %.09 = phi ptr [ null, %4 ], [ null, %..critedge.loopexit_crit_edge23 ], [ %2, %.lr.ph ], [ null, %.lr.ph22 ], [ %13, %7 ] ret ptr %.09 } diff --git a/bench/lean4/optimized/instantiate_mvars.ll b/bench/lean4/optimized/instantiate_mvars.ll index 30bf1403cf7..caec16f5772 100644 --- a/bench/lean4/optimized/instantiate_mvars.ll +++ b/bench/lean4/optimized/instantiate_mvars.ll @@ -9851,16 +9851,20 @@ define internal void @"_ZNSt17_Function_handlerIFN4lean8optionalINS0_4exprEEERKS 25: ; preds = %23 %26 = load i64, ptr %.val, align 8, !tbaa !37, !noalias !320 + %.not.not3.i.i.i = icmp eq i64 %26, 0 + br i1 %.not.not3.i.i.i, label %.thread.i.i.i, label %.lr.ph.i.i.i + +.lr.ph.i.i.i: ; preds = %25 %27 = getelementptr inbounds nuw i8, ptr %.val, i64 8 - br label %28 + br label %29 -28: ; preds = %29, %25 - %.013.i.i.i = phi i64 [ %26, %25 ], [ %30, %29 ] - %.not.not.i.i.i = icmp eq i64 %.013.i.i.i, 0 - br i1 %.not.not.i.i.i, label %.thread.i.i.i, label %29 +28: ; preds = %29 + %.not.not.i.i.i = icmp eq i64 %30, 0 + br i1 %.not.not.i.i.i, label %.thread.i.i.i, label %29, !llvm.loop !325 -29: ; preds = %28 - %30 = add i64 %.013.i.i.i, -1 +29: ; preds = %28, %.lr.ph.i.i.i + %.0134.i.i.i = phi i64 [ %26, %.lr.ph.i.i.i ], [ %30, %28 ] + %30 = add i64 %.0134.i.i.i, -1 %31 = load ptr, ptr %27, align 8, !tbaa !3, !noalias !320 %32 = getelementptr inbounds nuw i8, ptr %31, i64 24 %33 = getelementptr inbounds nuw %"class.lean::expr", ptr %32, i64 %30 @@ -9876,14 +9880,14 @@ define internal void @"_ZNSt17_Function_handlerIFN4lean8optionalINS0_4exprEEERKS %40 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %41 = load ptr, ptr %40, align 8, !tbaa !43, !noalias !320 %42 = load i64, ptr %.val, align 8, !tbaa !37, !noalias !320 - %43 = sub i64 %42, %.013.i.i.i + %43 = sub i64 %42, %.0134.i.i.i %44 = getelementptr inbounds nuw %"class.lean::expr", ptr %41, i64 %43 %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 tail call void @_ZN4lean16lift_loose_bvarsERKNS_4exprEj(ptr dead_on_unwind nonnull writable sret(%"class.lean::expr") align 8 %45, ptr noundef nonnull align 8 dereferenceable(8) %44, i32 noundef %.val4) store i8 1, ptr %0, align 8, !tbaa !205, !alias.scope !326 br label %"_ZSt10__invoke_rIN4lean8optionalINS0_4exprEEERZNS0_13replace_fvarsERKS2_RKNS0_9array_refIS2_EEPS4_E3$_0JS5_jEENSt9enable_ifIXntsr7is_voidIT_EE5valueESE_E4typeEOT0_DpOT1_.exit" -.thread.i.i.i: ; preds = %28, %23 +.thread.i.i.i: ; preds = %28, %25, %23 store i8 0, ptr %0, align 8, !tbaa !205, !alias.scope !329 br label %"_ZSt10__invoke_rIN4lean8optionalINS0_4exprEEERZNS0_13replace_fvarsERKS2_RKNS0_9array_refIS2_EEPS4_E3$_0JS5_jEENSt9enable_ifIXntsr7is_voidIT_EE5valueESE_E4typeEOT0_DpOT1_.exit" diff --git a/bench/libcxx/optimized/valarray.ll b/bench/libcxx/optimized/valarray.ll index 3e98db1b1fc..e81c830e4cb 100644 --- a/bench/libcxx/optimized/valarray.ll +++ b/bench/libcxx/optimized/valarray.ll @@ -264,68 +264,72 @@ _ZNSt3__18valarrayImE6resizeEmm.exit: ; preds = %.noexc32, %_ZNSt3__ %phi.call3037 = getelementptr inbounds nuw i64, ptr %52, i64 %50 %53 = getelementptr inbounds nuw i8, ptr %0, i64 16 %54 = load ptr, ptr %53, align 8 + %55 = icmp eq i64 %50, 0 br label %.split .split.loopexit: ; preds = %.lr.ph47, %._crit_edge40 br label %.split, !llvm.loop !16 .split: ; preds = %.split.loopexit, %42 - %.1 = phi i64 [ 0, %42 ], [ %59, %.split.loopexit ] - %55 = load i64, ptr %51, align 8, !tbaa !10 - %56 = add i64 %55, 1 - store i64 %56, ptr %51, align 8, !tbaa !10 - %57 = load i64, ptr %phi.call3037, align 8, !tbaa !10 - %58 = icmp ult i64 %56, %57 - br i1 %58, label %._crit_edge40, label %.lr.ph39 + %.1 = phi i64 [ 0, %42 ], [ %60, %.split.loopexit ] + %56 = load i64, ptr %51, align 8, !tbaa !10 + %57 = add i64 %56, 1 + store i64 %57, ptr %51, align 8, !tbaa !10 + %58 = load i64, ptr %phi.call3037, align 8, !tbaa !10 + %59 = icmp ult i64 %57, %58 + br i1 %59, label %._crit_edge40, label %.lr.ph39.preheader + +.lr.ph39.preheader: ; preds = %.split + br i1 %55, label %.thread, label %.split29 ._crit_edge40: ; preds = %.split29, %.split - %.025.lcssa = phi i64 [ %50, %.split ], [ %74, %.split29 ] - %59 = add i64 %.1, 1 - %60 = getelementptr inbounds nuw i64, ptr %40, i64 %.1 - %61 = load i64, ptr %60, align 8, !tbaa !10 - %62 = getelementptr inbounds nuw i64, ptr %54, i64 %.025.lcssa - %63 = load i64, ptr %62, align 8, !tbaa !10 - %64 = add i64 %63, %61 - %65 = getelementptr inbounds nuw i64, ptr %40, i64 %59 - store i64 %64, ptr %65, align 8, !tbaa !10 + %.025.lcssa = phi i64 [ %50, %.split ], [ %75, %.split29 ] + %60 = add i64 %.1, 1 + %61 = getelementptr inbounds nuw i64, ptr %40, i64 %.1 + %62 = load i64, ptr %61, align 8, !tbaa !10 + %63 = getelementptr inbounds nuw i64, ptr %54, i64 %.025.lcssa + %64 = load i64, ptr %63, align 8, !tbaa !10 + %65 = add i64 %64, %62 + %66 = getelementptr inbounds nuw i64, ptr %40, i64 %60 + store i64 %65, ptr %66, align 8, !tbaa !10 %.02442 = add i64 %.025.lcssa, 1 %.not3143 = icmp eq i64 %.02442, %49 br i1 %.not3143, label %.split.loopexit, label %.lr.ph47 .lr.ph47: ; preds = %._crit_edge40, %.lr.ph47 %.02445 = phi i64 [ %.024, %.lr.ph47 ], [ %.02442, %._crit_edge40 ] - %storemerge44 = phi i64 [ %72, %.lr.ph47 ], [ %64, %._crit_edge40 ] - %66 = getelementptr inbounds nuw i64, ptr %54, i64 %.02445 - %67 = load i64, ptr %66, align 8, !tbaa !10 - %68 = getelementptr inbounds nuw i64, ptr %52, i64 %.02445 - %69 = load i64, ptr %68, align 8, !tbaa !10 - %70 = add i64 %69, -1 - %71 = mul i64 %70, %67 - %72 = sub i64 %storemerge44, %71 - store i64 %72, ptr %65, align 8, !tbaa !10 + %storemerge44 = phi i64 [ %73, %.lr.ph47 ], [ %65, %._crit_edge40 ] + %67 = getelementptr inbounds nuw i64, ptr %54, i64 %.02445 + %68 = load i64, ptr %67, align 8, !tbaa !10 + %69 = getelementptr inbounds nuw i64, ptr %52, i64 %.02445 + %70 = load i64, ptr %69, align 8, !tbaa !10 + %71 = add i64 %70, -1 + %72 = mul i64 %71, %68 + %73 = sub i64 %storemerge44, %72 + store i64 %73, ptr %66, align 8, !tbaa !10 %.024 = add i64 %.02445, 1 %.not31 = icmp eq i64 %.024, %49 br i1 %.not31, label %.split.loopexit, label %.lr.ph47, !llvm.loop !17 -.lr.ph39: ; preds = %.split, %.split29 - %.02538 = phi i64 [ %74, %.split29 ], [ %50, %.split ] - %73 = icmp eq i64 %.02538, 0 - br i1 %73, label %.thread, label %.split29 - -.split29: ; preds = %.lr.ph39 - %74 = add i64 %.02538, -1 - %75 = getelementptr inbounds nuw i64, ptr %45, i64 %.02538 - store i64 0, ptr %75, align 8, !tbaa !10 - %76 = getelementptr inbounds nuw i64, ptr %45, i64 %74 - %77 = load i64, ptr %76, align 8, !tbaa !10 - %78 = add i64 %77, 1 - store i64 %78, ptr %76, align 8, !tbaa !10 - %phi.call30 = getelementptr inbounds nuw i64, ptr %52, i64 %74 - %79 = load i64, ptr %phi.call30, align 8, !tbaa !10 - %80 = icmp ult i64 %78, %79 - br i1 %80, label %._crit_edge40, label %.lr.ph39, !llvm.loop !18 - -.thread: ; preds = %.lr.ph39, %_ZNSt3__18valarrayImE6resizeEmm.exit +.lr.ph39: ; preds = %.split29 + %74 = icmp eq i64 %75, 0 + br i1 %74, label %.thread, label %.split29, !llvm.loop !18 + +.split29: ; preds = %.lr.ph39.preheader, %.lr.ph39 + %.0253857 = phi i64 [ %75, %.lr.ph39 ], [ %50, %.lr.ph39.preheader ] + %75 = add i64 %.0253857, -1 + %76 = getelementptr inbounds nuw i64, ptr %45, i64 %.0253857 + store i64 0, ptr %76, align 8, !tbaa !10 + %77 = getelementptr inbounds nuw i64, ptr %45, i64 %75 + %78 = load i64, ptr %77, align 8, !tbaa !10 + %79 = add i64 %78, 1 + store i64 %79, ptr %77, align 8, !tbaa !10 + %phi.call30 = getelementptr inbounds nuw i64, ptr %52, i64 %75 + %80 = load i64, ptr %phi.call30, align 8, !tbaa !10 + %81 = icmp ult i64 %79, %80 + br i1 %81, label %._crit_edge40, label %.lr.ph39, !llvm.loop !18 + +.thread: ; preds = %.lr.ph39.preheader, %.lr.ph39, %_ZNSt3__18valarrayImE6resizeEmm.exit call void @_ZNSt3__18valarrayImED1Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #13 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void diff --git a/bench/libevent/optimized/event.ll b/bench/libevent/optimized/event.ll index 7acb81d9b6b..d2bee6fe759 100644 --- a/bench/libevent/optimized/event.ll +++ b/bench/libevent/optimized/event.ll @@ -1561,16 +1561,16 @@ define hidden void @event_disable_debug_mode() local_unnamed_addr #0 { br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %event_mm_free_.exit - %.016 = phi ptr [ %.015.i, %event_mm_free_.exit ], [ %12, %.lr.ph.preheader ] - %13 = load ptr, ptr %.016, align 8 + %.017 = phi ptr [ %.015.i, %event_mm_free_.exit ], [ %12, %.lr.ph.preheader ] + %13 = load ptr, ptr %.017, align 8 %14 = getelementptr i8, ptr %13, i64 8 %.val.i = load ptr, ptr %14, align 8 %15 = load ptr, ptr %13, align 8 - store ptr %15, ptr %.016, align 8 + store ptr %15, ptr %.017, align 8 %16 = load i32, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 12), align 4 %17 = add i32 %16, -1 store i32 %17, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 12), align 4 - %18 = load ptr, ptr %.016, align 8 + %18 = load ptr, ptr %.017, align 8 %.not.i8 = icmp eq ptr %18, null br i1 %.not.i8, label %19, label %event_debug_map_HT_NEXT_RMV.exit @@ -1580,75 +1580,81 @@ define hidden void @event_disable_debug_mode() local_unnamed_addr #0 { %22 = lshr i32 %21, 6 %23 = load i32, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 8), align 8 %24 = urem i32 %22, %23 - %25 = load ptr, ptr @global_debug_map, align 8 - br label %26 + %.04.i = add nuw nsw i32 %24, 1 + %25 = icmp ult i32 %.04.i, %23 + br i1 %25, label %.lr.ph.i9, label %event_debug_map_HT_NEXT_RMV.exit + +.lr.ph.i9: ; preds = %19 + %26 = load ptr, ptr @global_debug_map, align 8 + %27 = zext nneg i32 %.04.i to i64 + %28 = zext i32 %23 to i64 + br label %31 -26: ; preds = %28, %19 - %.0.in.i = phi i32 [ %24, %19 ], [ %.0.i, %28 ] - %.0.i = add i32 %.0.in.i, 1 - %27 = icmp ult i32 %.0.i, %23 - br i1 %27, label %28, label %event_debug_map_HT_NEXT_RMV.exit +29: ; preds = %31 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %30 = icmp samesign ult i64 %indvars.iv.next, %28 + br i1 %30, label %31, label %event_debug_map_HT_NEXT_RMV.exit, !llvm.loop !16 -28: ; preds = %26 - %29 = zext i32 %.0.i to i64 - %30 = getelementptr inbounds nuw ptr, ptr %25, i64 %29 - %31 = load ptr, ptr %30, align 8 - %.not16.i = icmp eq ptr %31, null - br i1 %.not16.i, label %26, label %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, !llvm.loop !16 +31: ; preds = %29, %.lr.ph.i9 + %indvars.iv = phi i64 [ %indvars.iv.next, %29 ], [ %27, %.lr.ph.i9 ] + %32 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv + %33 = load ptr, ptr %32, align 8 + %.not16.i = icmp eq ptr %33, null + br i1 %.not16.i, label %29, label %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, !llvm.loop !16 -event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit: ; preds = %28 - %32 = getelementptr inbounds nuw ptr, ptr %25, i64 %29 +event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit: ; preds = %31 + %34 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv br label %event_debug_map_HT_NEXT_RMV.exit -event_debug_map_HT_NEXT_RMV.exit: ; preds = %26, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, %.lr.ph - %.015.i = phi ptr [ %.016, %.lr.ph ], [ %32, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit ], [ null, %26 ] - %33 = load ptr, ptr @mm_free_fn_, align 8 - %.not.i9 = icmp eq ptr %33, null - br i1 %.not.i9, label %35, label %34 +event_debug_map_HT_NEXT_RMV.exit: ; preds = %29, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, %.lr.ph, %19 + %.015.i = phi ptr [ %.017, %.lr.ph ], [ null, %19 ], [ %34, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit ], [ null, %29 ] + %35 = load ptr, ptr @mm_free_fn_, align 8 + %.not.i10 = icmp eq ptr %35, null + br i1 %.not.i10, label %37, label %36 -34: ; preds = %event_debug_map_HT_NEXT_RMV.exit - tail call void %33(ptr noundef nonnull %13) #26 +36: ; preds = %event_debug_map_HT_NEXT_RMV.exit + tail call void %35(ptr noundef nonnull %13) #26 br label %event_mm_free_.exit -35: ; preds = %event_debug_map_HT_NEXT_RMV.exit +37: ; preds = %event_debug_map_HT_NEXT_RMV.exit tail call void @free(ptr noundef %13) #26 br label %event_mm_free_.exit -event_mm_free_.exit: ; preds = %34, %35 +event_mm_free_.exit: ; preds = %36, %37 %.not6 = icmp eq ptr %.015.i, null br i1 %.not6, label %._crit_edge, label %.lr.ph, !llvm.loop !17 ._crit_edge: ; preds = %8, %event_mm_free_.exit, %5 - %36 = load ptr, ptr @global_debug_map, align 8 - %.not.i10 = icmp eq ptr %36, null - br i1 %.not.i10, label %event_debug_map_HT_CLEAR.exit, label %37 + %38 = load ptr, ptr @global_debug_map, align 8 + %.not.i11 = icmp eq ptr %38, null + br i1 %.not.i11, label %event_debug_map_HT_CLEAR.exit, label %39 -37: ; preds = %._crit_edge - %38 = load ptr, ptr @mm_free_fn_, align 8 - %.not.i.i = icmp eq ptr %38, null - br i1 %.not.i.i, label %40, label %39 +39: ; preds = %._crit_edge + %40 = load ptr, ptr @mm_free_fn_, align 8 + %.not.i.i = icmp eq ptr %40, null + br i1 %.not.i.i, label %42, label %41 -39: ; preds = %37 - tail call void %38(ptr noundef nonnull %36) #26 +41: ; preds = %39 + tail call void %40(ptr noundef nonnull %38) #26 br label %event_debug_map_HT_CLEAR.exit -40: ; preds = %37 - tail call void @free(ptr noundef nonnull %36) #26 +42: ; preds = %39 + tail call void @free(ptr noundef nonnull %38) #26 br label %event_debug_map_HT_CLEAR.exit -event_debug_map_HT_CLEAR.exit: ; preds = %._crit_edge, %39, %40 +event_debug_map_HT_CLEAR.exit: ; preds = %._crit_edge, %41, %42 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) @global_debug_map, i8 0, i64 20, i1 false) store i32 -1, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 20), align 4 - %41 = load ptr, ptr @event_debug_map_lock_, align 8 - %.not7 = icmp eq ptr %41, null - br i1 %.not7, label %45, label %42 + %43 = load ptr, ptr @event_debug_map_lock_, align 8 + %.not7 = icmp eq ptr %43, null + br i1 %.not7, label %47, label %44 -42: ; preds = %event_debug_map_HT_CLEAR.exit - %43 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %44 = tail call i32 %43(i32 noundef 0, ptr noundef nonnull %41) #26 - br label %45 +44: ; preds = %event_debug_map_HT_CLEAR.exit + %45 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 + %46 = tail call i32 %45(i32 noundef 0, ptr noundef nonnull %43) #26 + br label %47 -45: ; preds = %42, %event_debug_map_HT_CLEAR.exit +47: ; preds = %44, %event_debug_map_HT_CLEAR.exit store i32 0, ptr @event_debug_mode_on_, align 4 ret void } diff --git a/bench/libevent/optimized/http.ll b/bench/libevent/optimized/http.ll index 03fc93e0fd3..4b2d431eff9 100644 --- a/bench/libevent/optimized/http.ll +++ b/bench/libevent/optimized/http.ll @@ -7767,28 +7767,33 @@ evhttp_find_header.exit: ; preds = %12 19: ; preds = %evhttp_find_header.exit %20 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %18) #17 - %21 = getelementptr inbounds nuw i8, ptr %18, i64 %20 - br label %22 + %21 = icmp sgt i64 %20, 1 + br i1 %21, label %.lr.ph.preheader, label %.critedge45 + +.lr.ph.preheader: ; preds = %19 + %22 = getelementptr i8, ptr %18, i64 %20 + %.03054 = getelementptr i8, ptr %22, i64 -1 + br label %.lr.ph -22: ; preds = %24, %19 - %.pn = phi ptr [ %21, %19 ], [ %.030, %24 ] - %.030 = getelementptr inbounds i8, ptr %.pn, i64 -1 - %23 = icmp ugt ptr %.030, %18 - br i1 %23, label %24, label %.critedge45 +23: ; preds = %.lr.ph + %.030 = getelementptr inbounds i8, ptr %.03055, i64 -1 + %24 = icmp ugt ptr %.030, %18 + br i1 %24, label %.lr.ph, label %.critedge45, !llvm.loop !32 -24: ; preds = %22 - %25 = load i8, ptr %.030, align 1 +.lr.ph: ; preds = %.lr.ph.preheader, %23 + %.03055 = phi ptr [ %.030, %23 ], [ %.03054, %.lr.ph.preheader ] + %25 = load i8, ptr %.03055, align 1 %26 = tail call i32 @EVUTIL_ISDIGIT_(i8 noundef signext %25) #18 %.not43 = icmp eq i32 %26, 0 - br i1 %.not43, label %.critedge, label %22, !llvm.loop !32 + br i1 %.not43, label %.critedge, label %23, !llvm.loop !32 -.critedge: ; preds = %24 - %27 = load i8, ptr %.030, align 1 +.critedge: ; preds = %.lr.ph + %27 = load i8, ptr %.03055, align 1 %28 = icmp eq i8 %27, 58 br i1 %28, label %29, label %.critedge45 29: ; preds = %.critedge - %30 = ptrtoint ptr %.030 to i64 + %30 = ptrtoint ptr %.03055 to i64 %31 = ptrtoint ptr %18 to i64 %32 = sub i64 %30, %31 %33 = add i64 %32, 1 @@ -7809,8 +7814,8 @@ evhttp_find_header.exit: ; preds = %12 %38 = load ptr, ptr %2, align 8 br label %.critedge45 -.critedge45: ; preds = %.preheader, %22, %7, %.thread, %evhttp_find_header.exit, %35, %.critedge, %.critedge46, %1 - %.0 = phi ptr [ %3, %1 ], [ null, %.critedge46 ], [ %9, %7 ], [ null, %.thread ], [ %38, %35 ], [ %18, %.critedge ], [ null, %evhttp_find_header.exit ], [ %18, %22 ], [ null, %.preheader ] +.critedge45: ; preds = %.preheader, %23, %19, %7, %.thread, %evhttp_find_header.exit, %35, %.critedge, %.critedge46, %1 + %.0 = phi ptr [ %3, %1 ], [ null, %.critedge46 ], [ %9, %7 ], [ null, %.thread ], [ %38, %35 ], [ %18, %.critedge ], [ null, %evhttp_find_header.exit ], [ %18, %19 ], [ %18, %23 ], [ null, %.preheader ] ret ptr %.0 } diff --git a/bench/libigl/optimized/exact_geodesic.ll b/bench/libigl/optimized/exact_geodesic.ll index bf1db0ba4b6..f6a965d3d56 100644 --- a/bench/libigl/optimized/exact_geodesic.ll +++ b/bench/libigl/optimized/exact_geodesic.ll @@ -15162,33 +15162,38 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %7 = ptrtoint ptr %1 to i64 %8 = sub i64 %7, %6 %9 = icmp sgt i64 %8, 192 - br i1 %9, label %.lr.ph, label %.loopexit + br i1 %9, label %.lr.ph.preheader, label %.loopexit -.lr.ph: ; preds = %3, %12 - %.013 = phi i64 [ %13, %12 ], [ %2, %3 ] - %storemerge12 = phi ptr [ %14, %12 ], [ %1, %3 ] - %10 = icmp eq i64 %.013, 0 - br i1 %10, label %11, label %12 +.lr.ph.preheader: ; preds = %3 + %10 = icmp eq i64 %2, 0 + br i1 %10, label %.lr.ph._crit_edge, label %.lr.ph19 -11: ; preds = %.lr.ph +.lr.ph: ; preds = %.lr.ph19 + %11 = icmp eq i64 %12, 0 + br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph19, !llvm.loop !472 + +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader + %storemerge12.lcssa = phi ptr [ %1, %.lr.ph.preheader ], [ %13, %.lr.ph ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_RT0_(ptr %0, ptr %storemerge12, ptr noundef nonnull align 1 dereferenceable(1) %4) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_RT0_(ptr %0, ptr %storemerge12.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) - call void @_ZSt11__sort_heapIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_RT0_(ptr %0, ptr %storemerge12, ptr noundef nonnull align 1 dereferenceable(1) %5) + call void @_ZSt11__sort_heapIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_RT0_(ptr %0, ptr %storemerge12.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %5) call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -12: ; preds = %.lr.ph - %13 = add nsw i64 %.013, -1 - %14 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEET_SC_SC_T0_(ptr %0, ptr %storemerge12) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_less_iterEEvT_SC_T0_T1_(ptr %14, ptr %storemerge12, i64 noundef %13) - %15 = ptrtoint ptr %14 to i64 - %16 = sub i64 %15, %6 - %17 = icmp sgt i64 %16, 192 - br i1 %17, label %.lr.ph, label %.loopexit, !llvm.loop !472 - -.loopexit: ; preds = %12, %3, %11 +.lr.ph19: ; preds = %.lr.ph.preheader, %.lr.ph + %storemerge1218 = phi ptr [ %13, %.lr.ph ], [ %1, %.lr.ph.preheader ] + %.01317 = phi i64 [ %12, %.lr.ph ], [ %2, %.lr.ph.preheader ] + %12 = add nsw i64 %.01317, -1 + %13 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEET_SC_SC_T0_(ptr %0, ptr %storemerge1218) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_less_iterEEvT_SC_T0_T1_(ptr %13, ptr %storemerge1218, i64 noundef %12) + %14 = ptrtoint ptr %13 to i64 + %15 = sub i64 %14, %6 + %16 = icmp sgt i64 %15, 192 + br i1 %16, label %.lr.ph, label %.loopexit, !llvm.loop !472 + +.loopexit: ; preds = %.lr.ph19, %3, %.lr.ph._crit_edge ret void } diff --git a/bench/libigl/optimized/sort_angles.ll b/bench/libigl/optimized/sort_angles.ll index 3b55587ecc6..781066292a8 100644 --- a/bench/libigl/optimized/sort_angles.ll +++ b/bench/libigl/optimized/sort_angles.ll @@ -686,44 +686,46 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIPilN9__gnu_cxx5__ops1 .lr.ph: ; preds = %5 %12 = getelementptr inbounds nuw i8, ptr %0, i64 4 - br label %13 + %13 = icmp eq i64 %2, 0 + br i1 %13, label %._crit_edge, label %.lr.ph27 -13: ; preds = %.lr.ph, %19 - %14 = phi i64 [ %10, %.lr.ph ], [ %26, %19 ] - %.020 = phi ptr [ %1, %.lr.ph ], [ %24, %19 ] - %.01719 = phi i64 [ %2, %.lr.ph ], [ %20, %19 ] - %15 = icmp eq i64 %.01719, 0 - br i1 %15, label %16, label %19 +14: ; preds = %.lr.ph27 + %15 = icmp eq i64 %19, 0 + br i1 %15, label %._crit_edge, label %.lr.ph27, !llvm.loop !67 -16: ; preds = %13 +._crit_edge: ; preds = %14, %.lr.ph + %.020.lcssa = phi ptr [ %1, %.lr.ph ], [ %23, %14 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) store ptr %3, ptr %7, align 8 - %17 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr %4, ptr %17, align 8 + %16 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store ptr %4, ptr %16, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %3, ptr %6, align 8 - %18 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store ptr %4, ptr %18, align 8 - call void @_ZSt11__make_heapIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_RSG_(ptr noundef %0, ptr noundef %.020, ptr noundef nonnull align 8 dereferenceable(16) %6) + %17 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store ptr %4, ptr %17, align 8 + call void @_ZSt11__make_heapIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_RSG_(ptr noundef %0, ptr noundef %.020.lcssa, ptr noundef nonnull align 8 dereferenceable(16) %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) - call void @_ZSt11__sort_heapIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_RSG_(ptr noundef %0, ptr noundef %.020, ptr noundef nonnull align 8 dereferenceable(16) %7) + call void @_ZSt11__sort_heapIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_RSG_(ptr noundef %0, ptr noundef %.020.lcssa, ptr noundef nonnull align 8 dereferenceable(16) %7) call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.loopexit -19: ; preds = %13 - %20 = add nsw i64 %.01719, -1 - %21 = lshr i64 %14, 3 - %22 = getelementptr inbounds nuw i32, ptr %0, i64 %21 - %23 = getelementptr inbounds i8, ptr %.020, i64 -4 - tail call void @_ZSt22__move_median_to_firstIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_SB_SB_SG_(ptr noundef %0, ptr noundef nonnull %12, ptr noundef %22, ptr noundef nonnull %23, ptr %3, ptr %4) - %24 = tail call noundef ptr @_ZSt21__unguarded_partitionIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEESB_SB_SB_SB_SG_(ptr noundef nonnull %12, ptr noundef %.020, ptr noundef %0, ptr %3, ptr %4) - tail call void @_ZSt16__introsort_loopIPilN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_SG_T1_(ptr noundef %24, ptr noundef %.020, i64 noundef %20, ptr %3, ptr %4) - %25 = ptrtoint ptr %24 to i64 - %26 = sub i64 %25, %8 - %27 = icmp sgt i64 %26, 64 - br i1 %27, label %13, label %.loopexit, !llvm.loop !67 - -.loopexit: ; preds = %19, %5, %16 +.lr.ph27: ; preds = %.lr.ph, %14 + %.0171926 = phi i64 [ %19, %14 ], [ %2, %.lr.ph ] + %.02025 = phi ptr [ %23, %14 ], [ %1, %.lr.ph ] + %18 = phi i64 [ %25, %14 ], [ %10, %.lr.ph ] + %19 = add nsw i64 %.0171926, -1 + %20 = lshr i64 %18, 3 + %21 = getelementptr inbounds nuw i32, ptr %0, i64 %20 + %22 = getelementptr inbounds i8, ptr %.02025, i64 -4 + tail call void @_ZSt22__move_median_to_firstIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_SB_SB_SG_(ptr noundef %0, ptr noundef nonnull %12, ptr noundef %21, ptr noundef nonnull %22, ptr %3, ptr %4) + %23 = tail call noundef ptr @_ZSt21__unguarded_partitionIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEESB_SB_SB_SB_SG_(ptr noundef nonnull %12, ptr noundef %.02025, ptr noundef %0, ptr %3, ptr %4) + tail call void @_ZSt16__introsort_loopIPilN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_SG_T1_(ptr noundef %23, ptr noundef %.02025, i64 noundef %19, ptr %3, ptr %4) + %24 = ptrtoint ptr %23 to i64 + %25 = sub i64 %24, %8 + %26 = icmp sgt i64 %25, 64 + br i1 %26, label %14, label %.loopexit, !llvm.loop !67 + +.loopexit: ; preds = %.lr.ph27, %5, %._crit_edge ret void } diff --git a/bench/libquic/optimized/prime.ll b/bench/libquic/optimized/prime.ll index 1749c6f2a74..01afd867e0f 100644 --- a/bench/libquic/optimized/prime.ll +++ b/bench/libquic/optimized/prime.ll @@ -879,29 +879,37 @@ define internal fastcc range(i32 -1, 2) i32 @witness(ptr noundef nonnull %0, ptr %13 = icmp eq i32 %12, 0 br i1 %13, label %.loopexit, label %.preheader -.preheader: ; preds = %11, %19 - %.018 = phi i32 [ %14, %19 ], [ %4, %11 ] - %14 = add nsw i32 %.018, -1 - %.not21 = icmp eq i32 %14, 0 - br i1 %.not21, label %.loopexit, label %15 +.preheader: ; preds = %11 + %14 = add nsw i32 %4, -1 + %.not2124 = icmp eq i32 %14, 0 + br i1 %.not2124, label %.loopexit, label %.lr.ph + +15: ; preds = %21 + %16 = add nsw i32 %17, -1 + %.not21 = icmp eq i32 %16, 0 + br i1 %.not21, label %.loopexit, label %.lr.ph, !llvm.loop !33 + +.lr.ph: ; preds = %.preheader, %15 + %17 = phi i32 [ %16, %15 ], [ %14, %.preheader ] + %18 = tail call i32 @BN_mod_mul(ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %5) #5 + %.not22 = icmp eq i32 %18, 0 + br i1 %.not22, label %.loopexit, label %19 + +19: ; preds = %.lr.ph + %20 = tail call i32 @BN_is_one(ptr noundef nonnull %0) #5 + %.not23 = icmp eq i32 %20, 0 + br i1 %.not23, label %21, label %.loopexit -15: ; preds = %.preheader - %16 = tail call i32 @BN_mod_mul(ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %5) #5 - %.not22 = icmp eq i32 %16, 0 - br i1 %.not22, label %.loopexit, label %17 - -17: ; preds = %15 - %18 = tail call i32 @BN_is_one(ptr noundef nonnull %0) #5 - %.not23 = icmp eq i32 %18, 0 - br i1 %.not23, label %19, label %.loopexit +21: ; preds = %19 + %22 = tail call i32 @BN_cmp(ptr noundef nonnull %0, ptr noundef %2) #5 + %23 = icmp eq i32 %22, 0 + br i1 %23, label %..loopexit_crit_edge27, label %15, !llvm.loop !33 -19: ; preds = %17 - %20 = tail call i32 @BN_cmp(ptr noundef nonnull %0, ptr noundef %2) #5 - %21 = icmp eq i32 %20, 0 - br i1 %21, label %.loopexit, label %.preheader, !llvm.loop !33 +..loopexit_crit_edge27: ; preds = %21 + br label %.loopexit, !llvm.loop !33 -.loopexit: ; preds = %.preheader, %19, %17, %15, %11, %9, %7 - %.0 = phi i32 [ -1, %7 ], [ 0, %9 ], [ 0, %11 ], [ 1, %.preheader ], [ 0, %19 ], [ 1, %17 ], [ -1, %15 ] +.loopexit: ; preds = %.lr.ph, %19, %15, %.preheader, %..loopexit_crit_edge27, %11, %9, %7 + %.0 = phi i32 [ -1, %7 ], [ 0, %9 ], [ 0, %11 ], [ 0, %..loopexit_crit_edge27 ], [ 1, %.preheader ], [ -1, %.lr.ph ], [ 1, %19 ], [ 1, %15 ] ret i32 %.0 } diff --git a/bench/libquic/optimized/quic_connection.ll b/bench/libquic/optimized/quic_connection.ll index 660f26651f9..e980dff9498 100644 --- a/bench/libquic/optimized/quic_connection.ll +++ b/bench/libquic/optimized/quic_connection.ll @@ -3181,28 +3181,35 @@ _ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exi .critedge.us83.preheader: ; preds = %.lr.ph.split.split.us71 %80 = add nsw i64 %11, -1 - br label %.critedge.us83 + %exitcond.not156 = icmp eq i64 %80, 0 + br i1 %exitcond.not156, label %.critedge16, label %._crit_edge.i.i.i.i.us72.lr.ph, !llvm.loop !303 -._crit_edge.i.i.i.i.us72: ; preds = %.critedge.us83 - %81 = add nuw i64 %.01430.us7494, 1 +._crit_edge.i.i.i.i.us72.lr.ph: ; preds = %.critedge.us83.preheader + br label %._crit_edge.i.i.i.i.us72, !llvm.loop !303 + +._crit_edge.i.i.i.i.us72: ; preds = %._crit_edge.i.i.i.i.us72.lr.ph, %.critedge.us83 + %.01430.us7494157 = phi i64 [ 0, %._crit_edge.i.i.i.i.us72.lr.ph ], [ %81, %.critedge.us83 ] + %81 = add nuw i64 %.01430.us7494157, 1 %82 = getelementptr inbounds nuw i32, ptr %7, i64 %81 %.pre58.i.i.i.i.us76 = load i32, ptr %82, align 4, !tbaa !301 %83 = icmp ne i32 %78, %.pre58.i.i.i.i.us76 %.not18.us82 = or i1 %83, %.not18.us829397 br i1 %.not18.us82, label %.critedge.us83, label %.split.us, !llvm.loop !303 -.critedge.us83: ; preds = %.critedge.us83.preheader, %._crit_edge.i.i.i.i.us72 - %.01430.us7494 = phi i64 [ %81, %._crit_edge.i.i.i.i.us72 ], [ 0, %.critedge.us83.preheader ] - %exitcond.not = icmp eq i64 %.01430.us7494, %80 - br i1 %exitcond.not, label %.critedge16, label %._crit_edge.i.i.i.i.us72, !llvm.loop !303 +.critedge.us83: ; preds = %._crit_edge.i.i.i.i.us72 + %exitcond.not = icmp eq i64 %81, %80 + br i1 %exitcond.not, label %.critedge.us83..critedge16.loopexit146_crit_edge, label %._crit_edge.i.i.i.i.us72, !llvm.loop !303 .split.us: ; preds = %._crit_edge.i.i.i.i.us72, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us60, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us40, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us, %.lr.ph.split.split.us71 %84 = phi i32 [ %78, %.lr.ph.split.split.us71 ], [ %24, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us ], [ %62, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us40 ], [ %.pre.i.i.i.i.us56, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us60 ], [ %78, %._crit_edge.i.i.i.i.us72 ] tail call void @_ZN3net10QuicFramer11set_versionENS_11QuicVersionE(ptr noundef nonnull align 8 dereferenceable(408) %3, i32 noundef %84) br label %.critedge16 -.critedge16: ; preds = %.critedge.us83, %.critedge.us63, %.critedge.us43, %.critedge.us, %.lr.ph.split, %2, %.split.us - %.not20 = phi i1 [ true, %.split.us ], [ false, %2 ], [ false, %.lr.ph.split ], [ false, %.critedge.us ], [ false, %.critedge.us43 ], [ false, %.critedge.us63 ], [ false, %.critedge.us83 ] +.critedge.us83..critedge16.loopexit146_crit_edge: ; preds = %.critedge.us83 + br label %.critedge16, !llvm.loop !303 + +.critedge16: ; preds = %.critedge.us63, %.critedge.us43, %.critedge.us, %.critedge.us83.preheader, %.critedge.us83..critedge16.loopexit146_crit_edge, %.lr.ph.split, %2, %.split.us + %.not20 = phi i1 [ true, %.split.us ], [ false, %2 ], [ false, %.lr.ph.split ], [ false, %.critedge.us83..critedge16.loopexit146_crit_edge ], [ false, %.critedge.us83.preheader ], [ false, %.critedge.us ], [ false, %.critedge.us43 ], [ false, %.critedge.us63 ] ret i1 %.not20 } diff --git a/bench/libwebp/optimized/alpha_processing.ll b/bench/libwebp/optimized/alpha_processing.ll index 12e13612e94..e905b9e608a 100644 --- a/bench/libwebp/optimized/alpha_processing.ll +++ b/bench/libwebp/optimized/alpha_processing.ll @@ -673,23 +673,27 @@ define internal void @ExtractGreen_C(ptr noalias noundef readonly captures(none) ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define internal range(i32 0, 2) i32 @HasAlpha8b_C(ptr noundef readonly captures(none) %0, i32 noundef %1) #3 { - br label %3 - -3: ; preds = %5, %2 - %.02 = phi ptr [ %0, %2 ], [ %7, %5 ] - %.0 = phi i32 [ %1, %2 ], [ %6, %5 ] - %4 = icmp sgt i32 %.0, 0 - br i1 %4, label %5, label %9 - -5: ; preds = %3 - %6 = add nsw i32 %.0, -1 - %7 = getelementptr inbounds nuw i8, ptr %.02, i64 1 - %8 = load i8, ptr %.02, align 1, !tbaa !9 + %3 = icmp sgt i32 %1, 0 + br i1 %3, label %.lr.ph, label %._crit_edge + +4: ; preds = %.lr.ph + %5 = add nsw i32 %.05, -1 + %6 = getelementptr inbounds nuw i8, ptr %.024, i64 1 + %7 = icmp sgt i32 %.05, 1 + br i1 %7, label %.lr.ph, label %._crit_edge, !llvm.loop !27 + +.lr.ph: ; preds = %2, %4 + %.05 = phi i32 [ %5, %4 ], [ %1, %2 ] + %.024 = phi ptr [ %6, %4 ], [ %0, %2 ] + %8 = load i8, ptr %.024, align 1, !tbaa !9 %.not = icmp eq i8 %8, -1 - br i1 %.not, label %3, label %9, !llvm.loop !27 + br i1 %.not, label %4, label %._crit_edge6, !llvm.loop !27 + +._crit_edge6: ; preds = %.lr.ph + br label %._crit_edge, !llvm.loop !27 -9: ; preds = %3, %5 - %.03 = phi i32 [ 1, %5 ], [ 0, %3 ] +._crit_edge: ; preds = %4, %._crit_edge6, %2 + %.03 = phi i32 [ 1, %._crit_edge6 ], [ 0, %2 ], [ 0, %4 ] ret i32 %.03 } diff --git a/bench/lief/optimized/asn1write.ll b/bench/lief/optimized/asn1write.ll index 3f14d1c3702..5922e2f3a5f 100644 --- a/bench/lief/optimized/asn1write.ll +++ b/bench/lief/optimized/asn1write.ll @@ -1172,38 +1172,43 @@ define hidden i32 @mbedtls_asn1_write_named_bitstring(ptr noundef captures(none) %16 = trunc nuw i32 %15 to i8 %17 = and i8 %16, 1 %.not2627 = icmp eq i8 %17, 0 - br i1 %.not2627, label %.lr.ph, label %.loopexit + br i1 %.not2627, label %.lr.ph.preheader, label %.loopexit -.lr.ph: ; preds = %5, %27 - %.in = phi i8 [ %.119, %27 ], [ %16, %5 ] - %.129 = phi i64 [ %18, %27 ], [ %3, %5 ] - %.02028 = phi ptr [ %.121, %27 ], [ %11, %5 ] - %18 = add i64 %.129, -1 +.lr.ph.preheader: ; preds = %5 + %18 = add i64 %3, -1 %19 = icmp eq i64 %18, 0 - br i1 %19, label %.loopexit, label %20 - -20: ; preds = %.lr.ph - %21 = lshr i8 %.in, 1 - %22 = and i64 %18, 7 - %23 = icmp eq i64 %22, 0 - br i1 %23, label %24, label %27 - -24: ; preds = %20 - %25 = getelementptr inbounds i8, ptr %.02028, i64 -1 - %26 = load i8, ptr %25, align 1, !tbaa !10 - br label %27 - -27: ; preds = %24, %20 - %.121 = phi ptr [ %25, %24 ], [ %.02028, %20 ] - %.119 = phi i8 [ %26, %24 ], [ %21, %20 ] - %28 = and i8 %.119, 1 - %.not26 = icmp eq i8 %28, 0 + br i1 %19, label %.loopexit, label %.lr.ph36 + +.lr.ph: ; preds = %29 + %20 = add i64 %22, -1 + %21 = icmp eq i64 %20, 0 + br i1 %21, label %.loopexit, label %.lr.ph36 + +.lr.ph36: ; preds = %.lr.ph.preheader, %.lr.ph + %22 = phi i64 [ %20, %.lr.ph ], [ %18, %.lr.ph.preheader ] + %.0202835 = phi ptr [ %.121, %.lr.ph ], [ %11, %.lr.ph.preheader ] + %.in34 = phi i8 [ %.119, %.lr.ph ], [ %16, %.lr.ph.preheader ] + %23 = lshr i8 %.in34, 1 + %24 = and i64 %22, 7 + %25 = icmp eq i64 %24, 0 + br i1 %25, label %26, label %29 + +26: ; preds = %.lr.ph36 + %27 = getelementptr inbounds i8, ptr %.0202835, i64 -1 + %28 = load i8, ptr %27, align 1, !tbaa !10 + br label %29 + +29: ; preds = %26, %.lr.ph36 + %.121 = phi ptr [ %27, %26 ], [ %.0202835, %.lr.ph36 ] + %.119 = phi i8 [ %28, %26 ], [ %23, %.lr.ph36 ] + %30 = and i8 %.119, 1 + %.not26 = icmp eq i8 %30, 0 br i1 %.not26, label %.lr.ph, label %.loopexit -.loopexit: ; preds = %.lr.ph, %27, %5, %4 - %.0 = phi i64 [ 0, %4 ], [ %3, %5 ], [ 0, %.lr.ph ], [ %18, %27 ] - %29 = tail call i32 @mbedtls_asn1_write_bitstring(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %.0) - ret i32 %29 +.loopexit: ; preds = %29, %.lr.ph, %.lr.ph.preheader, %5, %4 + %.0 = phi i64 [ 0, %4 ], [ %3, %5 ], [ 0, %.lr.ph.preheader ], [ 0, %.lr.ph ], [ %22, %29 ] + %31 = tail call i32 @mbedtls_asn1_write_bitstring(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %.0) + ret i32 %31 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable diff --git a/bench/lief/optimized/x509.ll b/bench/lief/optimized/x509.ll index 1c4730a12b7..7d5b769b442 100644 --- a/bench/lief/optimized/x509.ll +++ b/bench/lief/optimized/x509.ll @@ -1163,55 +1163,56 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %.not201 = icmp eq i32 %narrow, 0 br i1 %.not201, label %.preheader165, label %.lr.ph185 -.preheader165: ; preds = %74, %70 - %.0133.lcssa = phi i64 [ 1, %70 ], [ %89, %74 ] +.preheader165: ; preds = %75, %70 + %.0133.lcssa = phi i64 [ 1, %70 ], [ %90, %75 ] %72 = load i64, ptr %61, align 8, !tbaa !33 %.not202 = icmp eq i64 %72, 0 br i1 %.not202, label %.loopexit, label %.lr.ph189 .lr.ph189: ; preds = %.preheader165 %73 = getelementptr inbounds nuw i8, ptr %.0123180, i64 40 - br label %92 + %74 = icmp samesign ugt i64 %.0133.lcssa, 253 + br i1 %74, label %.loopexit164, label %.lr.ph273 -.lr.ph185: ; preds = %70, %74 - %.0127183 = phi i64 [ %91, %74 ], [ 0, %70 ] - %.0133182 = phi i64 [ %89, %74 ], [ 1, %70 ] +.lr.ph185: ; preds = %70, %75 + %.0127183 = phi i64 [ %92, %75 ], [ 0, %70 ] + %.0133182 = phi i64 [ %90, %75 ], [ 1, %70 ] %exitcond = icmp eq i64 %.0127183, 127 - br i1 %exitcond, label %.loopexit164, label %74 + br i1 %exitcond, label %.loopexit164, label %75 -74: ; preds = %.lr.ph185 +75: ; preds = %.lr.ph185 %reass.sub = sub nsw i64 %.0127183, %71 - %75 = getelementptr i8, ptr %4, i64 %reass.sub - %76 = getelementptr i8, ptr %75, i64 6 - %77 = load i8, ptr %76, align 1, !tbaa !8 - %78 = and i8 %77, 15 - %79 = lshr i8 %77, 4 - %80 = icmp ult i8 %77, -96 - %81 = or disjoint i8 %79, 48 - %82 = add nuw nsw i8 %79, 55 - %83 = select i1 %80, i8 %81, i8 %82 - %84 = getelementptr inbounds nuw i8, ptr %7, i64 %.0133182 - store i8 %83, ptr %84, align 1, !tbaa !8 - %85 = icmp samesign ult i8 %78, 10 - %86 = or disjoint i8 %78, 48 - %87 = add nuw nsw i8 %78, 55 - %88 = select i1 %85, i8 %86, i8 %87 - %89 = add nuw nsw i64 %.0133182, 2 - %90 = getelementptr inbounds nuw i8, ptr %84, i64 1 - store i8 %88, ptr %90, align 1, !tbaa !8 - %91 = add nuw nsw i64 %.0127183, 1 - %exitcond219.not = icmp eq i64 %91, %71 + %76 = getelementptr i8, ptr %4, i64 %reass.sub + %77 = getelementptr i8, ptr %76, i64 6 + %78 = load i8, ptr %77, align 1, !tbaa !8 + %79 = and i8 %78, 15 + %80 = lshr i8 %78, 4 + %81 = icmp ult i8 %78, -96 + %82 = or disjoint i8 %80, 48 + %83 = add nuw nsw i8 %80, 55 + %84 = select i1 %81, i8 %82, i8 %83 + %85 = getelementptr inbounds nuw i8, ptr %7, i64 %.0133182 + store i8 %84, ptr %85, align 1, !tbaa !8 + %86 = icmp samesign ult i8 %79, 10 + %87 = or disjoint i8 %79, 48 + %88 = add nuw nsw i8 %79, 55 + %89 = select i1 %86, i8 %87, i8 %88 + %90 = add nuw nsw i64 %.0133182, 2 + %91 = getelementptr inbounds nuw i8, ptr %85, i64 1 + store i8 %89, ptr %91, align 1, !tbaa !8 + %92 = add nuw nsw i64 %.0127183, 1 + %exitcond219.not = icmp eq i64 %92, %71 br i1 %exitcond219.not, label %.preheader165, label %.lr.ph185, !llvm.loop !34 -92: ; preds = %.lr.ph189, %94 - %.1128188 = phi i64 [ 0, %.lr.ph189 ], [ %111, %94 ] - %.1134187 = phi i64 [ %.0133.lcssa, %.lr.ph189 ], [ %109, %94 ] - %93 = icmp samesign ugt i64 %.1134187, 253 - br i1 %93, label %.loopexit164, label %94 +93: ; preds = %.lr.ph273 + %94 = icmp ugt i64 %.1134187272, 251 + br i1 %94, label %.loopexit164, label %.lr.ph273, !llvm.loop !35 -94: ; preds = %92 - %95 = load ptr, ptr %73, align 8, !tbaa !35 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 %.1128188 +.lr.ph273: ; preds = %.lr.ph189, %93 + %.1134187272 = phi i64 [ %109, %93 ], [ %.0133.lcssa, %.lr.ph189 ] + %.1128188271 = phi i64 [ %111, %93 ], [ 0, %.lr.ph189 ] + %95 = load ptr, ptr %73, align 8, !tbaa !36 + %96 = getelementptr inbounds nuw i8, ptr %95, i64 %.1128188271 %97 = load i8, ptr %96, align 1, !tbaa !8 %98 = and i8 %97, 15 %99 = lshr i8 %97, 4 @@ -1219,19 +1220,19 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %101 = or disjoint i8 %99, 48 %102 = add nuw nsw i8 %99, 55 %103 = select i1 %100, i8 %101, i8 %102 - %104 = getelementptr inbounds nuw i8, ptr %7, i64 %.1134187 + %104 = getelementptr inbounds nuw i8, ptr %7, i64 %.1134187272 store i8 %103, ptr %104, align 1, !tbaa !8 %105 = icmp samesign ult i8 %98, 10 %106 = or disjoint i8 %98, 48 %107 = add nuw nsw i8 %98, 55 %108 = select i1 %105, i8 %106, i8 %107 - %109 = add nuw nsw i64 %.1134187, 2 + %109 = add nuw nsw i64 %.1134187272, 2 %110 = getelementptr inbounds nuw i8, ptr %104, i64 1 store i8 %108, ptr %110, align 1, !tbaa !8 - %111 = add nuw nsw i64 %.1128188, 1 + %111 = add nuw nsw i64 %.1128188271, 1 %112 = load i64, ptr %61, align 8, !tbaa !33 %113 = icmp ult i64 %111, %112 - br i1 %113, label %92, label %.loopexit, !llvm.loop !36 + br i1 %113, label %93, label %.loopexit, !llvm.loop !35 114: ; preds = %.lr.ph193, %158 %115 = phi i64 [ %58, %.lr.ph193 ], [ %162, %158 ] @@ -1241,7 +1242,7 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun br i1 %116, label %.loopexit164, label %117 117: ; preds = %114 - %118 = load ptr, ptr %59, align 8, !tbaa !35 + %118 = load ptr, ptr %59, align 8, !tbaa !36 %119 = getelementptr inbounds nuw i8, ptr %118, i64 %.2129192 %120 = load i8, ptr %119, align 1, !tbaa !8 %121 = icmp eq i8 %120, 0 @@ -1323,8 +1324,8 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %163 = icmp ult i64 %160, %162 br i1 %163, label %114, label %.loopexit, !llvm.loop !37 -.loopexit: ; preds = %94, %158, %.preheader165, %.preheader - %.2135 = phi i64 [ 0, %.preheader ], [ %.0133.lcssa, %.preheader165 ], [ %161, %158 ], [ %109, %94 ] +.loopexit: ; preds = %.lr.ph273, %158, %.preheader165, %.preheader + %.2135 = phi i64 [ 0, %.preheader ], [ %.0133.lcssa, %.preheader165 ], [ %161, %158 ], [ %109, %.lr.ph273 ] %164 = getelementptr inbounds nuw i8, ptr %7, i64 %.2135 store i8 0, ptr %164, align 1, !tbaa !8 %165 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %56, i64 noundef %55, ptr noundef nonnull @.str.9, ptr noundef nonnull %7) #13 @@ -1352,8 +1353,8 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %176 = trunc i64 %175 to i32 br label %.loopexit164 -.loopexit164: ; preds = %.loopexit, %167, %65, %60, %50, %52, %46, %16, %20, %.lr.ph185, %92, %141, %134, %117, %114, %.outer._crit_edge - %.0125 = phi i32 [ %176, %.outer._crit_edge ], [ -10624, %141 ], [ -10624, %134 ], [ -9088, %117 ], [ -10624, %114 ], [ -10624, %92 ], [ -10624, %.lr.ph185 ], [ -10624, %.loopexit ], [ -10624, %167 ], [ -110, %65 ], [ -110, %60 ], [ -10624, %50 ], [ -10624, %52 ], [ -10624, %46 ], [ -10624, %16 ], [ -10624, %20 ] +.loopexit164: ; preds = %.loopexit, %167, %65, %60, %50, %52, %46, %16, %20, %.lr.ph189, %.lr.ph185, %93, %141, %134, %117, %114, %.outer._crit_edge + %.0125 = phi i32 [ %176, %.outer._crit_edge ], [ -10624, %141 ], [ -10624, %134 ], [ -9088, %117 ], [ -10624, %114 ], [ -10624, %93 ], [ -10624, %.lr.ph185 ], [ -10624, %.loopexit ], [ -10624, %167 ], [ -110, %65 ], [ -110, %60 ], [ -10624, %50 ], [ -10624, %52 ], [ -10624, %46 ], [ -10624, %16 ], [ -10624, %20 ], [ -10624, %.lr.ph189 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -3228,8 +3229,8 @@ attributes #14 = { nounwind allocsize(0,1) } !32 = !{!18, !11, i64 24} !33 = !{!18, !12, i64 32} !34 = distinct !{!34, !31} -!35 = !{!18, !4, i64 40} -!36 = distinct !{!36, !31} +!35 = distinct !{!35, !31} +!36 = !{!18, !4, i64 40} !37 = distinct !{!37, !31} !38 = distinct !{!38, !31} !39 = !{!40, !11, i64 0} diff --git a/bench/linux/optimized/dmaengine.ll b/bench/linux/optimized/dmaengine.ll index 2052d5fc716..a5da3446ef3 100644 --- a/bench/linux/optimized/dmaengine.ll +++ b/bench/linux/optimized/dmaengine.ll @@ -3013,16 +3013,20 @@ define internal fastcc noundef range(i32 -12, 1) i32 @dmaengine_init_unmap_pool( %1 = tail call ptr @kmem_cache_create(ptr noundef nonnull @.str.33, i32 noundef 48, i32 noundef 0, i32 noundef 8192, ptr noundef null) #12 store ptr %1, ptr @unmap_pool.0, align 16 %2 = icmp eq ptr %1, null - br i1 %2, label %.critedge, label %3 + br i1 %2, label %..critedge2_crit_edge, label %3 + +..critedge2_crit_edge: ; preds = %0 + %.pre = load ptr, ptr @unmap_pool.2, align 16 + br label %.critedge2 3: ; preds = %0 %4 = tail call ptr @mempool_create(i32 noundef 1, ptr noundef nonnull @mempool_alloc_slab, ptr noundef nonnull @mempool_free_slab, ptr noundef nonnull %1) #12 store ptr %4, ptr @unmap_pool.2, align 16 %.not = icmp eq ptr %4, null - br i1 %.not, label %.critedge, label %.loopexit, !llvm.loop !75 + br i1 %.not, label %.critedge2, label %.loopexit, !llvm.loop !75 -.critedge: ; preds = %3, %0 - %5 = load ptr, ptr @unmap_pool.2, align 16 +.critedge2: ; preds = %..critedge2_crit_edge, %3 + %5 = phi ptr [ %.pre, %..critedge2_crit_edge ], [ null, %3 ] tail call void @mempool_destroy(ptr noundef %5) #12 store ptr null, ptr @unmap_pool.2, align 16 %6 = load ptr, ptr @unmap_pool.0, align 16 @@ -3030,8 +3034,8 @@ define internal fastcc noundef range(i32 -12, 1) i32 @dmaengine_init_unmap_pool( store ptr null, ptr @unmap_pool.0, align 16 br label %.loopexit -.loopexit: ; preds = %3, %.critedge - %7 = phi i32 [ -12, %.critedge ], [ 0, %3 ] +.loopexit: ; preds = %3, %.critedge2 + %7 = phi i32 [ -12, %.critedge2 ], [ 0, %3 ] ret i32 %7 } diff --git a/bench/linux/optimized/io_apic.ll b/bench/linux/optimized/io_apic.ll index c09b1c70b99..79a712e958c 100644 --- a/bench/linux/optimized/io_apic.ll +++ b/bench/linux/optimized/io_apic.ll @@ -5274,18 +5274,19 @@ define internal fastcc void @delay_with_tsc() unnamed_addr #7 section ".init.tex define internal fastcc void @delay_without_tsc() unnamed_addr #7 section ".init.text" align 16 { %1 = load volatile i64, ptr @jiffies, align 64 %2 = add i64 %1, 4 - br label %3 + tail call void @__delay(i64 noundef 20000) #25 + br label %8 -3: ; preds = %8, %0 - %4 = phi i64 [ %9, %8 ], [ 1, %0 ] - %5 = shl nuw i64 10000000, %4 +3: ; preds = %8 + %4 = add nuw nsw i64 %9, 1 + %5 = shl nuw i64 20000000, %9 %6 = udiv i64 %5, 1000 tail call void @__delay(i64 noundef %6) #25 %7 = icmp eq i64 %4, 11 - br i1 %7, label %13, label %8 + br i1 %7, label %13, label %8, !llvm.loop !102 -8: ; preds = %3 - %9 = add nuw nsw i64 %4, 1 +8: ; preds = %0, %3 + %9 = phi i64 [ 1, %0 ], [ %4, %3 ] %10 = load volatile i64, ptr @jiffies, align 64 %11 = sub i64 %2, %10 %12 = icmp sgt i64 %11, -1 diff --git a/bench/llama.cpp/optimized/llama-chat.ll b/bench/llama.cpp/optimized/llama-chat.ll index 7b441298e2d..8fc71bfca5e 100644 --- a/bench/llama.cpp/optimized/llama-chat.ll +++ b/bench/llama.cpp/optimized/llama-chat.ll @@ -6408,8 +6408,8 @@ define linkonce_odr void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC ; Function Attrs: mustprogress uwtable define internal fastcc void @_ZL4trimRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias nonnull writable align 8 %0, ptr readonly captures(none) %.0.val, i64 %.8.val) unnamed_addr #2 personality ptr @__gxx_personality_v0 { %2 = alloca i64, align 8 - %.not4 = icmp eq i64 %.8.val, 0 - br i1 %.not4, label %.critedge, label %.lr.ph + %.not9 = icmp eq i64 %.8.val, 0 + br i1 %.not9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i, label %.lr.ph .lr.ph: ; preds = %1, %7 %.0161 = phi i64 [ %8, %7 ], [ 0, %1 ] @@ -6423,43 +6423,47 @@ define internal fastcc void @_ZL4trimRKNSt7__cxx1112basic_stringIcSt11char_trait 7: ; preds = %.lr.ph %8 = add nuw i64 %.0161, 1 %exitcond.not = icmp eq i64 %8, %.8.val - br i1 %exitcond.not, label %.critedge, label %.lr.ph, !llvm.loop !62 + br i1 %exitcond.not, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i, label %.lr.ph, !llvm.loop !62 -.critedge: ; preds = %.lr.ph, %7, %1 - %.016.lcssa = phi i64 [ 0, %1 ], [ %.8.val, %7 ], [ %.0161, %.lr.ph ] - %umin = tail call i64 @llvm.umin.i64(i64 %.016.lcssa, i64 %.8.val) - br label %9 +.critedge: ; preds = %.lr.ph + %9 = icmp ugt i64 %.8.val, %.0161 + br i1 %9, label %.lr.ph5, label %.critedge2 -9: ; preds = %11, %.critedge - %.0 = phi i64 [ %.8.val, %.critedge ], [ %12, %11 ] - %10 = icmp ugt i64 %.0, %.016.lcssa - br i1 %10, label %11, label %.critedge2 +10: ; preds = %.lr.ph5 + %11 = icmp ugt i64 %12, %.0161 + br i1 %11, label %.lr.ph5, label %.critedge2, !llvm.loop !63 -11: ; preds = %9 - %12 = add i64 %.0, -1 +.lr.ph5: ; preds = %.critedge, %10 + %.04 = phi i64 [ %12, %10 ], [ %.8.val, %.critedge ] + %12 = add i64 %.04, -1 %13 = getelementptr inbounds nuw i8, ptr %.0.val, i64 %12 %14 = load i8, ptr %13, align 1, !tbaa !44 %15 = sext i8 %14 to i32 %16 = tail call i32 @isspace(i32 noundef %15) #26 %.not17 = icmp eq i32 %16, 0 - br i1 %.not17, label %.critedge2, label %9, !llvm.loop !63 + br i1 %.not17, label %..critedge2_crit_edge7, label %10, !llvm.loop !63 + +..critedge2_crit_edge7: ; preds = %.lr.ph5 + br label %.critedge2, !llvm.loop !63 -.critedge2: ; preds = %9, %11 - %.0.lcssa = phi i64 [ %umin, %9 ], [ %.0, %11 ] +.critedge2: ; preds = %10, %..critedge2_crit_edge7, %.critedge + %.0.lcssa = phi i64 [ %.04, %..critedge2_crit_edge7 ], [ %.8.val, %.critedge ], [ %.0161, %10 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !64) - %17 = icmp ugt i64 %.016.lcssa, %.8.val + %17 = icmp ugt i64 %.0161, %.8.val br i1 %17, label %18, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i 18: ; preds = %.critedge2 - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.147, ptr noundef nonnull @.str.146, i64 noundef %.016.lcssa, i64 noundef %.8.val) #24, !noalias !64 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.147, ptr noundef nonnull @.str.146, i64 noundef %.0161, i64 noundef %.8.val) #24, !noalias !64 unreachable -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; preds = %.critedge2 - %19 = sub i64 %.0.lcssa, %.016.lcssa +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i: ; preds = %7, %1, %.critedge2 + %.0.lcssa18 = phi i64 [ %.0.lcssa, %.critedge2 ], [ %.8.val, %1 ], [ %.8.val, %7 ] + %.016.lcssa1417 = phi i64 [ %.0161, %.critedge2 ], [ %.8.val, %1 ], [ %.8.val, %7 ] + %19 = sub i64 %.0.lcssa18, %.016.lcssa1417 %20 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %20, ptr %0, align 8, !tbaa !42, !alias.scope !64 - %21 = getelementptr inbounds nuw i8, ptr %.0.val, i64 %.016.lcssa - %22 = sub nuw i64 %.8.val, %.016.lcssa + %21 = getelementptr inbounds nuw i8, ptr %.0.val, i64 %.016.lcssa1417 + %22 = sub nuw i64 %.8.val, %.016.lcssa1417 %spec.select.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %19, i64 %22) call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !64 store i64 %spec.select.i.i.i, ptr %2, align 8, !tbaa !43, !noalias !64 diff --git a/bench/llvm/optimized/LangOptions.ll b/bench/llvm/optimized/LangOptions.ll index 58c71d0c7f0..b82cc7ffb0f 100644 --- a/bench/llvm/optimized/LangOptions.ll +++ b/bench/llvm/optimized/LangOptions.ll @@ -447,20 +447,24 @@ define dso_local noundef zeroext i1 @_ZNK5clang11LangOptions15isNoBuiltinFuncEN4 _ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader: ; preds = %.lr.ph.split.us %17 = and i64 %11, 4294967295 - br label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us + %.not.us.not.not35 = icmp eq i64 %17, 1 + br i1 %.not.us.not.not35, label %.thread, label %.lr.ph37, !llvm.loop !65 -18: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us - %19 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %7, i64 %indvars.iv.next29 +.lr.ph37: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader + br label %18, !llvm.loop !65 + +18: ; preds = %.lr.ph37, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us + %indvars.iv.next2936 = phi i64 [ 1, %.lr.ph37 ], [ %indvars.iv.next29, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us ] + %19 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %7, i64 %indvars.iv.next2936 %20 = getelementptr inbounds nuw i8, ptr %19, i64 8 %21 = load i64, ptr %20, align 8, !tbaa !48 %.not.i.us = icmp eq i64 %21, 0 - br i1 %.not.i.us, label %.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us, !llvm.loop !65 + br i1 %.not.i.us, label %..thread.loopexit_crit_edge, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us, !llvm.loop !65 -_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader, %18 - %indvars.iv28 = phi i64 [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader ], [ %indvars.iv.next29, %18 ] - %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1 - %.not.us.not.not.not = icmp ne i64 %indvars.iv.next29, %17 - br i1 %.not.us.not.not.not, label %18, label %.thread, !llvm.loop !65 +_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us: ; preds = %18 + %indvars.iv.next29 = add nuw nsw i64 %indvars.iv.next2936, 1 + %.not.us.not.not = icmp eq i64 %indvars.iv.next29, %17 + br i1 %.not.us.not.not, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us..thread.loopexit_crit_edge, label %18, !llvm.loop !65 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11 %indvars.iv = phi i64 [ 0, %.lr.ph.split.preheader ], [ %indvars.iv.next, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11 ] @@ -481,8 +485,14 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread11: ; preds = %.lr.ph.split, %_ZN4 %.not.not = icmp eq i64 %indvars.iv.next, %14 br i1 %.not.not, label %.thread, label %.lr.ph.split, !llvm.loop !65 -.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11, %_ZN4llvmeqENS_9StringRefES0_.exit, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us, %18, %.lr.ph.split.us, %3 - %.not.lcssa = phi i1 [ false, %3 ], [ true, %.lr.ph.split.us ], [ %.not.us.not.not.not, %18 ], [ %.not.us.not.not.not, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit ], [ false, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11 ] +..thread.loopexit_crit_edge: ; preds = %18 + br label %.thread, !llvm.loop !65 + +_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us..thread.loopexit_crit_edge: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us + br label %.thread, !llvm.loop !65 + +.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11, %_ZN4llvmeqENS_9StringRefES0_.exit, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader, %..thread.loopexit_crit_edge, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us..thread.loopexit_crit_edge, %.lr.ph.split.us, %3 + %.not.lcssa = phi i1 [ false, %3 ], [ true, %.lr.ph.split.us ], [ true, %..thread.loopexit_crit_edge ], [ false, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us..thread.loopexit_crit_edge ], [ false, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader ], [ true, %_ZN4llvmeqENS_9StringRefES0_.exit ], [ false, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11 ] ret i1 %.not.lcssa } diff --git a/bench/llvm/optimized/OptimizedStructLayout.ll b/bench/llvm/optimized/OptimizedStructLayout.ll index 1f38fcfac7f..888a3fc1b42 100644 --- a/bench/llvm/optimized/OptimizedStructLayout.ll +++ b/bench/llvm/optimized/OptimizedStructLayout.ll @@ -512,16 +512,22 @@ define internal fastcc noundef zeroext i1 @"_ZZN4llvm28performOptimizedStructLay %41 = add i64 %40, %37 %42 = sub i64 0, %40 %43 = and i64 %41, %42 - br label %44 + %.not37.us107191 = icmp eq i32 %.val41, 1 + br i1 %.not37.us107191, label %.thread.i, label %.lr.ph194 -44: ; preds = %.preheader.us112.lr.ph, %45 - %.129.pn.us105 = phi ptr [ %.230.us106, %45 ], [ %7, %.preheader.us112.lr.ph ] - %.230.us106 = getelementptr inbounds i8, ptr %.129.pn.us105, i64 -24 +.lr.ph194: ; preds = %.preheader.us112.lr.ph + %.230.us106190 = getelementptr inbounds i8, ptr %7, i64 -24 + br label %45 + +44: ; preds = %45 + %.230.us106 = getelementptr inbounds i8, ptr %.230.us106193, i64 -24 %.not37.us107 = icmp eq ptr %.230.us106, %.val - br i1 %.not37.us107, label %.thread.i, label %45 + br i1 %.not37.us107, label %.thread.i, label %45, !llvm.loop !46 -45: ; preds = %44 - %46 = getelementptr inbounds i8, ptr %.129.pn.us105, i64 -32 +45: ; preds = %.lr.ph194, %44 + %.230.us106193 = phi ptr [ %.230.us106190, %.lr.ph194 ], [ %.230.us106, %44 ] + %.129.pn.us105192 = phi ptr [ %7, %.lr.ph194 ], [ %.230.us106193, %44 ] + %46 = getelementptr inbounds i8, ptr %.129.pn.us105192, i64 -32 %.sroa.0.0.copyload.us108 = load i8, ptr %46, align 8, !tbaa !10 %47 = zext nneg i8 %.sroa.0.0.copyload.us108 to i64 %48 = shl nuw i64 1, %47 @@ -529,12 +535,15 @@ define internal fastcc noundef zeroext i1 @"_ZZN4llvm28performOptimizedStructLay %50 = sub i64 0, %48 %51 = and i64 %49, %50 %52 = icmp eq i64 %43, %51 - br i1 %52, label %44, label %.thread.i, !llvm.loop !46 + br i1 %52, label %44, label %..thread.i.loopexit181_crit_edge195, !llvm.loop !46 + +..thread.i.loopexit181_crit_edge195: ; preds = %45 + br label %.thread.i, !llvm.loop !46 -.thread.i: ; preds = %45, %44, %.lr.ph60.us, %34, %.split - %.us-phi = phi i64 [ %.pre160, %.split ], [ %.031.us, %34 ], [ %.031.us, %.lr.ph60.us ], [ %43, %44 ], [ %43, %45 ] - %.us-phi62 = phi ptr [ %.028.lcssa, %.split ], [ %36, %34 ], [ %.129.us, %.lr.ph60.us ], [ %.230.us106, %45 ], [ %.val, %44 ] - %.us-phi64 = phi i64 [ -1, %.split ], [ %32, %34 ], [ %32, %.lr.ph60.us ], [ -1, %44 ], [ -1, %45 ] +.thread.i: ; preds = %44, %.lr.ph60.us, %34, %.preheader.us112.lr.ph, %..thread.i.loopexit181_crit_edge195, %.split + %.us-phi = phi i64 [ %.pre160, %.split ], [ %43, %..thread.i.loopexit181_crit_edge195 ], [ %43, %.preheader.us112.lr.ph ], [ %.031.us, %34 ], [ %.031.us, %.lr.ph60.us ], [ %43, %44 ] + %.us-phi62 = phi ptr [ %.028.lcssa, %.split ], [ %.230.us106193, %..thread.i.loopexit181_crit_edge195 ], [ %.val, %.preheader.us112.lr.ph ], [ %36, %34 ], [ %.129.us, %.lr.ph60.us ], [ %.val, %44 ] + %.us-phi64 = phi i64 [ -1, %.split ], [ -1, %..thread.i.loopexit181_crit_edge195 ], [ -1, %.preheader.us112.lr.ph ], [ %32, %34 ], [ %32, %.lr.ph60.us ], [ -1, %44 ] %53 = getelementptr inbounds nuw i8, ptr %0, i64 16 %54 = load ptr, ptr %53, align 8, !tbaa !49 %.val42.le = load ptr, ptr %54, align 8 diff --git a/bench/luajit/optimized/lj_debug.ll b/bench/luajit/optimized/lj_debug.ll index 536c5583283..3dcc4fc1132 100644 --- a/bench/luajit/optimized/lj_debug.ll +++ b/bench/luajit/optimized/lj_debug.ll @@ -1208,64 +1208,72 @@ lj_debug_line.exit: ; preds = %3, %21, %25, %32, % 51: ; preds = %lj_debug_line.exit %52 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.14, ptr noundef nonnull %7) #11 - br label %78 + br label %79 53: ; preds = %lj_debug_line.exit %54 = load i8, ptr %7, align 1, !tbaa !15 %55 = icmp eq i8 %54, 64 - br i1 %55, label %56, label %67 + br i1 %55, label %56, label %68 56: ; preds = %53 %57 = getelementptr inbounds nuw i8, ptr %6, i64 25 - br label %58 - -58: ; preds = %59, %56 - %.033.in = phi i32 [ %9, %56 ], [ %.033, %59 ] - %.033 = add i32 %.033.in, -1 - %.not = icmp eq i32 %.033, 0 - br i1 %.not, label %.loopexit, label %59 - -59: ; preds = %58 - %60 = zext i32 %.033 to i64 - %61 = getelementptr inbounds nuw i8, ptr %57, i64 %60 - %62 = load i8, ptr %61, align 1, !tbaa !15 - switch i8 %62, label %58 [ - i8 47, label %63 - i8 92, label %63 + %.03337 = add i32 %9, -1 + %.not38 = icmp eq i32 %.03337, 0 + br i1 %.not38, label %.loopexit, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %56 + %58 = zext i32 %.03337 to i64 + br label %.lr.ph + +59: ; preds = %.lr.ph + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %60 = and i64 %indvars.iv.next, 4294967295 + %.not = icmp eq i64 %60, 0 + %61 = trunc nuw i64 %indvars.iv to i32 + br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !55 + +.lr.ph: ; preds = %.lr.ph.preheader, %59 + %indvars.iv = phi i64 [ %58, %.lr.ph.preheader ], [ %indvars.iv.next, %59 ] + %.033.in39 = phi i32 [ %9, %.lr.ph.preheader ], [ %61, %59 ] + %62 = getelementptr inbounds nuw i8, ptr %57, i64 %indvars.iv + %63 = load i8, ptr %62, align 1, !tbaa !15 + switch i8 %63, label %59 [ + i8 47, label %64 + i8 92, label %64 ], !llvm.loop !55 -63: ; preds = %59, %59 - %64 = zext i32 %.033.in to i64 - %65 = getelementptr inbounds nuw i8, ptr %57, i64 %64 +64: ; preds = %.lr.ph, %.lr.ph + %65 = zext i32 %.033.in39 to i64 + %66 = getelementptr inbounds nuw i8, ptr %57, i64 %65 br label %.loopexit -.loopexit: ; preds = %58, %63 - %.0 = phi ptr [ %65, %63 ], [ %57, %58 ] - %66 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %.0, i32 noundef %.1.i) #11 - br label %78 +.loopexit: ; preds = %59, %56, %64 + %.0 = phi ptr [ %66, %64 ], [ %57, %56 ], [ %57, %59 ] + %67 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %.0, i32 noundef %.1.i) #11 + br label %79 -67: ; preds = %53 - %68 = icmp ugt i32 %9, 40 - br i1 %68, label %69, label %71 +68: ; preds = %53 + %69 = icmp ugt i32 %9, 40 + br i1 %69, label %70, label %72 -69: ; preds = %67 - %70 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.16, ptr noundef nonnull %1, i32 noundef %.1.i) #11 - br label %78 +70: ; preds = %68 + %71 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.16, ptr noundef nonnull %1, i32 noundef %.1.i) #11 + br label %79 -71: ; preds = %67 - %72 = icmp eq i8 %54, 61 - br i1 %72, label %73, label %76 +72: ; preds = %68 + %73 = icmp eq i8 %54, 61 + br i1 %73, label %74, label %77 -73: ; preds = %71 - %74 = getelementptr inbounds nuw i8, ptr %6, i64 25 - %75 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %74, i32 noundef %.1.i) #11 - br label %78 +74: ; preds = %72 + %75 = getelementptr inbounds nuw i8, ptr %6, i64 25 + %76 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %75, i32 noundef %.1.i) #11 + br label %79 -76: ; preds = %71 - %77 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %7, i32 noundef %.1.i) #11 - br label %78 +77: ; preds = %72 + %78 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %7, i32 noundef %.1.i) #11 + br label %79 -78: ; preds = %.loopexit, %73, %76, %69, %51 +79: ; preds = %.loopexit, %74, %77, %70, %51 ret void } diff --git a/bench/lvgl/optimized/lv_group.ll b/bench/lvgl/optimized/lv_group.ll index f9abd33e7c0..39e00e429eb 100644 --- a/bench/lvgl/optimized/lv_group.ll +++ b/bench/lvgl/optimized/lv_group.ll @@ -1203,26 +1203,31 @@ declare i32 @lv_ll_get_len(ptr noundef) local_unnamed_addr #1 define ptr @lv_group_get_obj_by_index(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = tail call ptr @lv_ll_get_head(ptr noundef %0) #10 %.not11 = icmp eq ptr %3, null - br i1 %.not11, label %.loopexit, label %.lr.ph + br i1 %.not11, label %.loopexit, label %.lr.ph.preheader -.lr.ph: ; preds = %2, %7 - %.013 = phi ptr [ %9, %7 ], [ %3, %2 ] - %.0812 = phi i32 [ %8, %7 ], [ 0, %2 ] - %4 = icmp eq i32 %.0812, %1 - br i1 %4, label %5, label %7 +.lr.ph.preheader: ; preds = %2 + %4 = icmp eq i32 %1, 0 + br i1 %4, label %.lr.ph._crit_edge, label %.lr.ph20 -5: ; preds = %.lr.ph - %6 = load ptr, ptr %.013, align 8, !tbaa !13 +.lr.ph: ; preds = %.lr.ph20 + %5 = add i32 %.081219, 1 + %6 = icmp eq i32 %5, %1 + br i1 %6, label %.lr.ph._crit_edge, label %.lr.ph20, !llvm.loop !61 + +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader + %.013.lcssa = phi ptr [ %3, %.lr.ph.preheader ], [ %8, %.lr.ph ] + %7 = load ptr, ptr %.013.lcssa, align 8, !tbaa !13 br label %.loopexit -7: ; preds = %.lr.ph - %8 = add i32 %.0812, 1 - %9 = tail call ptr @lv_ll_get_next(ptr noundef %0, ptr noundef nonnull %.013) #10 - %.not = icmp eq ptr %9, null +.lr.ph20: ; preds = %.lr.ph.preheader, %.lr.ph + %.081219 = phi i32 [ %5, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %.01318 = phi ptr [ %8, %.lr.ph ], [ %3, %.lr.ph.preheader ] + %8 = tail call ptr @lv_ll_get_next(ptr noundef %0, ptr noundef nonnull %.01318) #10 + %.not = icmp eq ptr %8, null br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !61 -.loopexit: ; preds = %7, %2, %5 - %.09 = phi ptr [ %6, %5 ], [ null, %2 ], [ null, %7 ] +.loopexit: ; preds = %.lr.ph20, %2, %.lr.ph._crit_edge + %.09 = phi ptr [ %7, %.lr.ph._crit_edge ], [ null, %2 ], [ null, %.lr.ph20 ] ret ptr %.09 } diff --git a/bench/lvgl/optimized/lv_span.ll b/bench/lvgl/optimized/lv_span.ll index 20e10435705..9785af31347 100644 --- a/bench/lvgl/optimized/lv_span.ll +++ b/bench/lvgl/optimized/lv_span.ll @@ -1734,6 +1734,7 @@ define ptr @lv_spangroup_get_child(ptr noundef %0, i32 noundef %1) local_unnamed 4: ; preds = %2 %5 = getelementptr inbounds nuw i8, ptr %0, i64 80 %6 = icmp slt i32 %1, 0 + %.lobit = ashr i32 %1, 31 %spec.select25.v = select i1 %6, i64 96, i64 88 %spec.select25 = getelementptr inbounds nuw i8, ptr %0, i64 %spec.select25.v %.0 = load ptr, ptr %spec.select25, align 8, !tbaa !84 @@ -1741,35 +1742,41 @@ define ptr @lv_spangroup_get_child(ptr noundef %0, i32 noundef %1) local_unnamed br i1 %.not26, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %4 - %.lobit = ashr i32 %1, 31 + %7 = icmp eq i32 %.lobit, %1 br i1 %6, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %8 - %.128.us = phi ptr [ %9, %8 ], [ %.0, %.lr.ph ] - %.12027.us = phi i32 [ %10, %8 ], [ %.lobit, %.lr.ph ] - %7 = icmp eq i32 %.12027.us, %1 - br i1 %7, label %.loopexit, label %8 - -8: ; preds = %.lr.ph.split.us - %9 = tail call ptr @lv_ll_get_prev(ptr noundef nonnull %5, ptr noundef nonnull %.128.us) #9 - %10 = add nsw i32 %.12027.us, -1 - %.not.us = icmp eq ptr %9, null - br i1 %.not.us, label %.loopexit, label %.lr.ph.split.us, !llvm.loop !85 - -.lr.ph.split: ; preds = %.lr.ph, %12 - %.128 = phi ptr [ %13, %12 ], [ %.0, %.lr.ph ] - %.12027 = phi i32 [ %14, %12 ], [ %.lobit, %.lr.ph ] - %11 = icmp eq i32 %.12027, %1 - br i1 %11, label %.loopexit, label %12 - -12: ; preds = %.lr.ph.split - %13 = tail call ptr @lv_ll_get_next(ptr noundef nonnull %5, ptr noundef nonnull %.128) #9 - %14 = add nuw nsw i32 %.12027, 1 - %.not = icmp eq ptr %13, null - br i1 %.not, label %.loopexit, label %.lr.ph.split, !llvm.loop !85 - -.loopexit: ; preds = %12, %.lr.ph.split, %8, %.lr.ph.split.us, %4, %2 - %.022 = phi ptr [ null, %2 ], [ null, %4 ], [ null, %8 ], [ %.128.us, %.lr.ph.split.us ], [ null, %12 ], [ %.128, %.lr.ph.split ] +.lr.ph.split.us: ; preds = %.lr.ph + br i1 %7, label %.loopexit, label %.lr.ph38 + +8: ; preds = %.lr.ph38 + %9 = add nsw i32 %.12027.us37, -1 + %10 = icmp eq i32 %9, %1 + br i1 %10, label %.loopexit, label %.lr.ph38, !llvm.loop !85 + +.lr.ph38: ; preds = %.lr.ph.split.us, %8 + %.12027.us37 = phi i32 [ %9, %8 ], [ %.lobit, %.lr.ph.split.us ] + %.128.us36 = phi ptr [ %11, %8 ], [ %.0, %.lr.ph.split.us ] + %11 = tail call ptr @lv_ll_get_prev(ptr noundef nonnull %5, ptr noundef nonnull %.128.us36) #9 + %.not.us = icmp eq ptr %11, null + br i1 %.not.us, label %.loopexit, label %8, !llvm.loop !85 + +.lr.ph.split: ; preds = %.lr.ph + br i1 %7, label %.loopexit, label %.lr.ph34 + +12: ; preds = %.lr.ph34 + %13 = add nuw nsw i32 %.1202733, 1 + %14 = icmp eq i32 %13, %1 + br i1 %14, label %.loopexit, label %.lr.ph34, !llvm.loop !85 + +.lr.ph34: ; preds = %.lr.ph.split, %12 + %.1202733 = phi i32 [ %13, %12 ], [ %.lobit, %.lr.ph.split ] + %.12832 = phi ptr [ %15, %12 ], [ %.0, %.lr.ph.split ] + %15 = tail call ptr @lv_ll_get_next(ptr noundef nonnull %5, ptr noundef nonnull %.12832) #9 + %.not = icmp eq ptr %15, null + br i1 %.not, label %.loopexit, label %12, !llvm.loop !85 + +.loopexit: ; preds = %.lr.ph34, %12, %.lr.ph38, %8, %4, %.lr.ph.split, %.lr.ph.split.us, %2 + %.022 = phi ptr [ null, %2 ], [ null, %4 ], [ %.0, %.lr.ph.split.us ], [ %.0, %.lr.ph.split ], [ null, %.lr.ph38 ], [ %11, %8 ], [ null, %.lr.ph34 ], [ %15, %12 ] ret ptr %.022 } diff --git a/bench/lvgl/optimized/lv_table.ll b/bench/lvgl/optimized/lv_table.ll index b0886ba622f..33103358d87 100644 --- a/bench/lvgl/optimized/lv_table.ll +++ b/bench/lvgl/optimized/lv_table.ll @@ -283,26 +283,33 @@ define internal void @lv_table_event(ptr readnone captures(none) %0, ptr noundef .lr.ph162: ; preds = %.lr.ph.i %62 = zext i32 %57 to i64 %63 = add nsw i64 %62, -1 - br label %64 + %exitcond188.not208 = icmp eq i64 %63, 0 + br i1 %exitcond188.not208, label %.._crit_edge.i.loopexit_crit_edge, label %.lr.ph210, !llvm.loop !38 -64: ; preds = %.lr.ph162, %66 - %65 = phi i32 [ %60, %.lr.ph162 ], [ %69, %66 ] - %indvars.iv.i161 = phi i64 [ 0, %.lr.ph162 ], [ %indvars.iv.next.i, %66 ] - %exitcond188.not = icmp eq i64 %indvars.iv.i161, %63 - br i1 %exitcond188.not, label %.._crit_edge.i.loopexit_crit_edge, label %66, !llvm.loop !38 +.lr.ph210: ; preds = %.lr.ph162 + br label %65, !llvm.loop !38 -66: ; preds = %64 - %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i161, 1 +64: ; preds = %65 + %exitcond188.not = icmp eq i64 %indvars.iv.next.i, %63 + br i1 %exitcond188.not, label %..._crit_edge.i.loopexit_crit_edge_crit_edge, label %65, !llvm.loop !38 + +65: ; preds = %.lr.ph210, %64 + %indvars.iv.i161209 = phi i64 [ 0, %.lr.ph210 ], [ %indvars.iv.next.i, %64 ] + %66 = phi i32 [ %60, %.lr.ph210 ], [ %69, %64 ] + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i161209, 1 %67 = getelementptr inbounds nuw i32, ptr %59, i64 %indvars.iv.next.i %68 = load i32, ptr %67, align 4, !tbaa !21 - %69 = add nsw i32 %68, %65 + %69 = add nsw i32 %68, %66 %70 = icmp slt i32 %55, %69 br i1 %70, label %._crit_edge.i.loopexit, label %64, !llvm.loop !38 -.._crit_edge.i.loopexit_crit_edge: ; preds = %64 +..._crit_edge.i.loopexit_crit_edge_crit_edge: ; preds = %64 + br label %.._crit_edge.i.loopexit_crit_edge, !llvm.loop !38 + +.._crit_edge.i.loopexit_crit_edge: ; preds = %..._crit_edge.i.loopexit_crit_edge_crit_edge, %.lr.ph162 br label %._crit_edge.i, !llvm.loop !38 -._crit_edge.i.loopexit: ; preds = %66 +._crit_edge.i.loopexit: ; preds = %65 %71 = trunc nuw i64 %indvars.iv.next.i to i32 br label %._crit_edge.i @@ -335,26 +342,33 @@ define internal void @lv_table_event(ptr readnone captures(none) %0, ptr noundef .lr.ph169: ; preds = %.lr.ph80.i %87 = zext i32 %82 to i64 %88 = add nsw i64 %87, -1 - br label %89 + %exitcond189.not211 = icmp eq i64 %88, 0 + br i1 %exitcond189.not211, label %.get_pressed_cell.exit.loopexit_crit_edge172, label %.lr.ph213, !llvm.loop !40 -89: ; preds = %.lr.ph169, %91 - %90 = phi i32 [ %85, %.lr.ph169 ], [ %94, %91 ] - %indvars.iv87.i168 = phi i64 [ 0, %.lr.ph169 ], [ %indvars.iv.next88.i, %91 ] - %exitcond189.not = icmp eq i64 %indvars.iv87.i168, %88 - br i1 %exitcond189.not, label %.get_pressed_cell.exit.loopexit_crit_edge172, label %91, !llvm.loop !40 +.lr.ph213: ; preds = %.lr.ph169 + br label %90, !llvm.loop !40 -91: ; preds = %89 - %indvars.iv.next88.i = add nuw nsw i64 %indvars.iv87.i168, 1 +89: ; preds = %90 + %exitcond189.not = icmp eq i64 %indvars.iv.next88.i, %88 + br i1 %exitcond189.not, label %..get_pressed_cell.exit.loopexit_crit_edge172_crit_edge, label %90, !llvm.loop !40 + +90: ; preds = %.lr.ph213, %89 + %indvars.iv87.i168212 = phi i64 [ 0, %.lr.ph213 ], [ %indvars.iv.next88.i, %89 ] + %91 = phi i32 [ %85, %.lr.ph213 ], [ %94, %89 ] + %indvars.iv.next88.i = add nuw nsw i64 %indvars.iv87.i168212, 1 %92 = getelementptr inbounds nuw i32, ptr %84, i64 %indvars.iv.next88.i %93 = load i32, ptr %92, align 4, !tbaa !21 - %94 = add nsw i32 %93, %90 + %94 = add nsw i32 %93, %91 %95 = icmp slt i32 %80, %94 br i1 %95, label %get_pressed_cell.exit.loopexit, label %89, !llvm.loop !40 -.get_pressed_cell.exit.loopexit_crit_edge172: ; preds = %89 +..get_pressed_cell.exit.loopexit_crit_edge172_crit_edge: ; preds = %89 + br label %.get_pressed_cell.exit.loopexit_crit_edge172, !llvm.loop !40 + +.get_pressed_cell.exit.loopexit_crit_edge172: ; preds = %..get_pressed_cell.exit.loopexit_crit_edge172_crit_edge, %.lr.ph169 br label %get_pressed_cell.exit, !llvm.loop !40 -get_pressed_cell.exit.loopexit: ; preds = %91 +get_pressed_cell.exit.loopexit: ; preds = %90 %96 = trunc nuw i64 %indvars.iv.next88.i to i32 br label %get_pressed_cell.exit diff --git a/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll b/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll index fc495c7fe32..1d31618a071 100644 --- a/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll +++ b/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll @@ -2275,7 +2275,7 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_pla %13 = add nuw i64 %.sroa.0.07.i.i, 1 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !253 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdccf034b0721b487E.llvm.7557364402226394005"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) - to label %.noexc.i.i unwind label %24, !noalias !250 + to label %.noexc.i.i unwind label %25, !noalias !250 .noexc.i.i: ; preds = %11 %14 = load i64, ptr %9, align 8, !range !98, !noalias !253, !noundef !4 @@ -2297,29 +2297,30 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_pla %21 = icmp eq i64 %13, %7 br i1 %21, label %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17h23ec8b681ee2b602E.exit.i", label %11 -22: ; preds = %26, %24 - %.sroa.0.1.i.i = phi i64 [ %13, %24 ], [ %28, %26 ] - %23 = icmp eq i64 %.sroa.0.1.i.i, %7 - br i1 %23, label %.body.i, label %26 +22: ; preds = %.lr.ph10.i.i + %23 = add i64 %.sroa.0.18.i.i, 1 + %24 = icmp eq i64 %23, %7 + br i1 %24, label %.body.i, label %.lr.ph10.i.i -24: ; preds = %11 - %25 = landingpad { ptr, i32 } +25: ; preds = %11 + %26 = landingpad { ptr, i32 } cleanup - br label %22 + %27 = icmp eq i64 %13, %7 + br i1 %27, label %.body.i, label %.lr.ph10.i.i -26: ; preds = %22 - %27 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %3, i64 %.sroa.0.1.i.i - %28 = add i64 %.sroa.0.1.i.i, 1 - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h31db3b6058ec61a7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %27) #24 +.lr.ph10.i.i: ; preds = %25, %22 + %.sroa.0.18.i.i = phi i64 [ %23, %22 ], [ %13, %25 ] + %28 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %3, i64 %.sroa.0.18.i.i + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h31db3b6058ec61a7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %28) #24 to label %22 unwind label %29, !noalias !250 -29: ; preds = %26 +29: ; preds = %.lr.ph10.i.i %30 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #25, !noalias !250 unreachable -.body.i: ; preds = %22 +.body.i: ; preds = %22, %25 %31 = icmp eq i64 %5, 0 br i1 %31, label %"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17hc86612f60ea115c0E.exit.i", label %32 @@ -2338,7 +2339,7 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_pla br label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h29e10dfd413a4181E.exit" "_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17hc86612f60ea115c0E.exit.i": ; preds = %32, %.body.i - resume { ptr, i32 } %25 + resume { ptr, i32 } %26 "_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h29e10dfd413a4181E.exit": ; preds = %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17h23ec8b681ee2b602E.exit.i", %35 ret void diff --git a/bench/meshlab/optimized/TexturePainter.ll b/bench/meshlab/optimized/TexturePainter.ll index 4d72409c1ee..abfa41fa632 100644 --- a/bench/meshlab/optimized/TexturePainter.ll +++ b/bench/meshlab/optimized/TexturePainter.ll @@ -13937,32 +13937,35 @@ define linkonce_odr void @_ZN7QVectorI5PatchE7reallocEi6QFlagsIN10QArrayData16Al %25 = getelementptr inbounds nuw i8, ptr %8, i64 16 %26 = load i64, ptr %25, align 8 %27 = getelementptr inbounds i8, ptr %8, i64 %26 + %.not2737 = icmp eq i32 %22, 0 br i1 %6, label %.preheader, label %.preheader32 .preheader32: ; preds = %12 - %.not2634 = icmp eq i32 %22, 0 - br i1 %.not2634, label %.loopexit, label %.lr.ph - -.preheader: ; preds = %12, %28 - %.023 = phi ptr [ %30, %28 ], [ %20, %12 ] - %.0 = phi ptr [ %29, %28 ], [ %27, %12 ] - %.not27 = icmp eq ptr %.023, %24 - br i1 %.not27, label %.loopexit, label %28 - -28: ; preds = %.preheader - %29 = getelementptr inbounds nuw i8, ptr %.0, i64 168 - %30 = getelementptr inbounds nuw i8, ptr %.023, i64 168 - invoke void @_ZN5PatchC2ERKS_(ptr noundef nonnull align 8 dereferenceable(161) %.0, ptr noundef nonnull align 8 dereferenceable(161) %.023) - to label %.preheader unwind label %31, !llvm.loop !104 - -31: ; preds = %28 + br i1 %.not2737, label %.loopexit, label %.lr.ph + +.preheader: ; preds = %12 + br i1 %.not2737, label %.loopexit, label %.lr.ph40 + +28: ; preds = %.lr.ph40 + %29 = getelementptr inbounds nuw i8, ptr %.02338, i64 168 + %.not27 = icmp eq ptr %29, %24 + br i1 %.not27, label %.loopexit, label %.lr.ph40, !llvm.loop !104 + +.lr.ph40: ; preds = %.preheader, %28 + %.039 = phi ptr [ %30, %28 ], [ %27, %.preheader ] + %.02338 = phi ptr [ %29, %28 ], [ %20, %.preheader ] + %30 = getelementptr inbounds nuw i8, ptr %.039, i64 168 + invoke void @_ZN5PatchC2ERKS_(ptr noundef nonnull align 8 dereferenceable(161) %.039, ptr noundef nonnull align 8 dereferenceable(161) %.02338) + to label %28 unwind label %31, !llvm.loop !104 + +31: ; preds = %.lr.ph40 %32 = landingpad { ptr, i32 } catch ptr null %33 = extractvalue { ptr, i32 } %32, 0 %34 = tail call ptr @__cxa_begin_catch(ptr %33) #22 %35 = load i64, ptr %25, align 8 %36 = getelementptr inbounds i8, ptr %8, i64 %35 - tail call void @_ZN7QVectorI5PatchE8destructEPS0_S2_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %36, ptr noundef nonnull %29) + tail call void @_ZN7QVectorI5PatchE8destructEPS0_S2_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %36, ptr noundef nonnull %30) invoke void @__cxa_rethrow() #27 to label %108 unwind label %69 @@ -14038,7 +14041,7 @@ define linkonce_odr void @_ZN7QVectorI5PatchE7reallocEi6QFlagsIN10QArrayData16Al invoke void @__cxa_end_catch() to label %104 unwind label %105 -.loopexit: ; preds = %.lr.ph, %.preheader, %.preheader32 +.loopexit: ; preds = %.lr.ph, %28, %.preheader32, %.preheader %75 = load ptr, ptr %0, align 8 %76 = getelementptr inbounds nuw i8, ptr %75, i64 8 %77 = load i32, ptr %76, align 8 diff --git a/bench/meshlab/optimized/packing.ll b/bench/meshlab/optimized/packing.ll index 6aae01da14d..2a29730429d 100644 --- a/bench/meshlab/optimized/packing.ll +++ b/bench/meshlab/optimized/packing.ll @@ -6527,17 +6527,17 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI .lr.ph: ; preds = %4 %10 = getelementptr inbounds nuw i8, ptr %0, i64 4 - br label %11 + %11 = icmp eq i64 %2, 0 + br i1 %11, label %.split.i.i, label %.lr.ph34 -11: ; preds = %.lr.ph, %26 - %12 = phi i64 [ %8, %.lr.ph ], [ %34, %26 ] - %.021 = phi i64 [ %2, %.lr.ph ], [ %27, %26 ] - %storemerge20 = phi ptr [ %1, %.lr.ph ], [ %31, %26 ] - %13 = icmp eq i64 %.021, 0 - br i1 %13, label %.split.i.i, label %26 +12: ; preds = %.lr.ph34 + %13 = icmp eq i64 %27, 0 + br i1 %13, label %.split.i.i, label %.lr.ph34, !llvm.loop !83 -.split.i.i: ; preds = %11 - %14 = add nsw i64 %12, -2 +.split.i.i: ; preds = %12, %.lr.ph + %.lcssa = phi i64 [ %8, %.lr.ph ], [ %34, %12 ] + %storemerge20.lcssa = phi ptr [ %1, %.lr.ph ], [ %31, %12 ] + %14 = add nsw i64 %.lcssa, -2 %15 = lshr i64 %14, 1 br label %.split9.i.i @@ -6545,13 +6545,13 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %.0.i.i = phi i64 [ %15, %.split.i.i ], [ %18, %.split9.i.i ] %phi.call.i.i = getelementptr inbounds i32, ptr %0, i64 %.0.i.i %16 = load i32, ptr %phi.call.i.i, align 4 - tail call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEliNS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_T0_SE_T1_T2_(ptr %0, i64 noundef %.0.i.i, i64 noundef %12, i32 noundef %16, ptr %3) + tail call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEliNS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_T0_SE_T1_T2_(ptr %0, i64 noundef %.0.i.i, i64 noundef %.lcssa, i32 noundef %16, ptr %3) %17 = icmp eq i64 %.0.i.i, 0 %18 = add nsw i64 %.0.i.i, -1 - br i1 %17, label %.lr.ph.i.i, label %.split9.i.i, !llvm.loop !83 + br i1 %17, label %.lr.ph.i.i, label %.split9.i.i, !llvm.loop !84 .lr.ph.i.i: ; preds = %.split9.i.i, %.lr.ph.i.i - %.sroa.0.05.i.i = phi ptr [ %19, %.lr.ph.i.i ], [ %storemerge20, %.split9.i.i ] + %.sroa.0.05.i.i = phi ptr [ %19, %.lr.ph.i.i ], [ %storemerge20.lcssa, %.split9.i.i ] %19 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -4 %20 = load i32, ptr %19, align 4 %21 = load i32, ptr %0, align 4 @@ -6561,23 +6561,26 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %24 = ashr exact i64 %23, 2 tail call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEliNS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_T0_SE_T1_T2_(ptr nonnull %0, i64 noundef 0, i64 noundef %24, i32 noundef %20, ptr %3) %25 = icmp sgt i64 %23, 4 - br i1 %25, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !84 - -26: ; preds = %11 - %27 = add nsw i64 %.021, -1 - %28 = lshr i64 %12, 1 + br i1 %25, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !85 + +.lr.ph34: ; preds = %.lr.ph, %12 + %storemerge2033 = phi ptr [ %31, %12 ], [ %1, %.lr.ph ] + %.02132 = phi i64 [ %27, %12 ], [ %2, %.lr.ph ] + %26 = phi i64 [ %34, %12 ], [ %8, %.lr.ph ] + %27 = add nsw i64 %.02132, -1 + %28 = lshr i64 %26, 1 %29 = getelementptr inbounds nuw i32, ptr %0, i64 %28 - %30 = getelementptr inbounds i8, ptr %storemerge20, i64 -4 + %30 = getelementptr inbounds i8, ptr %storemerge2033, i64 -4 tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_SD_T0_(ptr %0, ptr nonnull %10, ptr %29, ptr nonnull %30, ptr %3) - %31 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEET_SD_SD_SD_T0_(ptr nonnull %10, ptr %storemerge20, ptr %0, ptr %3) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEElNS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_T0_T1_(ptr %31, ptr %storemerge20, i64 noundef %27, ptr %3) + %31 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEET_SD_SD_SD_T0_(ptr nonnull %10, ptr %storemerge2033, ptr %0, ptr %3) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEElNS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_T0_T1_(ptr %31, ptr %storemerge2033, i64 noundef %27, ptr %3) %32 = ptrtoint ptr %31 to i64 %33 = sub i64 %32, %5 %34 = ashr exact i64 %33, 2 %35 = icmp sgt i64 %34, 16 - br i1 %35, label %11, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !85 + br i1 %35, label %12, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !83 -_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit: ; preds = %26, %.lr.ph.i.i, %4 +_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit: ; preds = %.lr.ph34, %.lr.ph.i.i, %4 ret void } diff --git a/bench/meshoptimizer/optimized/vcacheoptimizer.ll b/bench/meshoptimizer/optimized/vcacheoptimizer.ll index 2392adbb530..217bbfc0eff 100644 --- a/bench/meshoptimizer/optimized/vcacheoptimizer.ll +++ b/bench/meshoptimizer/optimized/vcacheoptimizer.ll @@ -720,14 +720,14 @@ define dso_local void @meshopt_optimizeVertexCacheFifo(ptr noundef writeonly cap br label %59 59: ; preds = %51, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit - %.0106168 = phi i32 [ 0, %51 ], [ %.1107, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0109167 = phi i32 [ %54, %51 ], [ %.1110.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0114166 = phi i32 [ 0, %51 ], [ %.1115.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0144165 = phi i32 [ 1, %51 ], [ %.1, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0145164 = phi i32 [ 0, %51 ], [ %.3148, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %60 = zext i32 %.0145164 to i64 + %.0106165 = phi i32 [ 0, %51 ], [ %.1107, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0109164 = phi i32 [ %54, %51 ], [ %.1110.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0114163 = phi i32 [ 0, %51 ], [ %.1115.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0144162 = phi i32 [ 1, %51 ], [ %.1, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0145161 = phi i32 [ 0, %51 ], [ %.3148, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %60 = zext i32 %.0145161 to i64 %61 = getelementptr inbounds nuw i32, ptr %45, i64 %60 - %62 = zext i32 %.0106168 to i64 + %62 = zext i32 %.0106165 to i64 %63 = getelementptr inbounds nuw i32, ptr %58, i64 %62 %64 = load i32, ptr %63, align 4, !tbaa !14 %65 = zext i32 %64 to i64 @@ -737,8 +737,8 @@ define dso_local void @meshopt_optimizeVertexCacheFifo(ptr noundef writeonly cap %69 = zext i32 %68 to i64 %.idx = shl nuw nsw i64 %69, 2 %70 = getelementptr inbounds nuw i8, ptr %66, i64 %.idx - %.not127153 = icmp eq i32 %68, 0 - br i1 %.not127153, label %._crit_edge, label %.lr.ph + %.not127154 = icmp eq i32 %68, 0 + br i1 %.not127154, label %._crit_edge, label %.lr.ph ._crit_edge.loopexit: ; preds = %166 %.pre = zext i32 %.2147 to i64 @@ -746,11 +746,11 @@ define dso_local void @meshopt_optimizeVertexCacheFifo(ptr noundef writeonly cap ._crit_edge: ; preds = %._crit_edge.loopexit, %59 %.pre-phi = phi i64 [ %.pre, %._crit_edge.loopexit ], [ %60, %59 ] - %.1146.lcssa = phi i32 [ %.2147, %._crit_edge.loopexit ], [ %.0145164, %59 ] - %.1115.lcssa = phi i32 [ %.2116, %._crit_edge.loopexit ], [ %.0114166, %59 ] - %.1110.lcssa = phi i32 [ %.2111, %._crit_edge.loopexit ], [ %.0109167, %59 ] + %.1146.lcssa = phi i32 [ %.2147, %._crit_edge.loopexit ], [ %.0145161, %59 ] + %.1115.lcssa = phi i32 [ %.2116, %._crit_edge.loopexit ], [ %.0114163, %59 ] + %.1110.lcssa = phi i32 [ %.2111, %._crit_edge.loopexit ], [ %.0109164, %59 ] %71 = getelementptr inbounds nuw i32, ptr %45, i64 %.pre-phi - %.not28.i = icmp eq i32 %.0145164, %.1146.lcssa + %.not28.i = icmp eq i32 %.0145161, %.1146.lcssa br i1 %.not28.i, label %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread, label %.lr.ph.i .lr.ph.i: ; preds = %._crit_edge, %84 @@ -815,11 +815,11 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 br label %193 .lr.ph: ; preds = %59, %166 - %.0108157 = phi ptr [ %167, %166 ], [ %66, %59 ] - %.1110156 = phi i32 [ %.2111, %166 ], [ %.0109167, %59 ] - %.1115155 = phi i32 [ %.2116, %166 ], [ %.0114166, %59 ] - %.1146154 = phi i32 [ %.2147, %166 ], [ %.0145164, %59 ] - %97 = load i32, ptr %.0108157, align 4, !tbaa !14 + %.0108158 = phi ptr [ %167, %166 ], [ %66, %59 ] + %.1110157 = phi i32 [ %.2111, %166 ], [ %.0109164, %59 ] + %.1115156 = phi i32 [ %.2116, %166 ], [ %.0114163, %59 ] + %.1146155 = phi i32 [ %.2147, %166 ], [ %.0145161, %59 ] + %97 = load i32, ptr %.0108158, align 4, !tbaa !14 %98 = zext i32 %97 to i64 %99 = getelementptr inbounds nuw i8, ptr %50, i64 %98 %100 = load i8, ptr %99, align 1, !tbaa !23 @@ -839,7 +839,7 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 %111 = zext i32 %110 to i64 %112 = getelementptr inbounds nuw i32, ptr %.0, i64 %111 %113 = load i32, ptr %112, align 4, !tbaa !14 - %114 = mul i32 %.1115155, 3 + %114 = mul i32 %.1115156, 3 %115 = zext i32 %114 to i64 %116 = getelementptr inbounds nuw i32, ptr %0, i64 %115 store i32 %105, ptr %116, align 4, !tbaa !14 @@ -851,19 +851,19 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 %121 = zext i32 %120 to i64 %122 = getelementptr inbounds nuw i32, ptr %0, i64 %121 store i32 %113, ptr %122, align 4, !tbaa !14 - %123 = add i32 %.1115155, 1 - %124 = zext i32 %.1146154 to i64 + %123 = add i32 %.1115156, 1 + %124 = zext i32 %.1146155 to i64 %125 = getelementptr inbounds nuw i32, ptr %45, i64 %124 store i32 %105, ptr %125, align 4, !tbaa !14 - %126 = add i32 %.1146154, 1 + %126 = add i32 %.1146155, 1 %127 = zext i32 %126 to i64 %128 = getelementptr inbounds nuw i32, ptr %45, i64 %127 store i32 %109, ptr %128, align 4, !tbaa !14 - %129 = add i32 %.1146154, 2 + %129 = add i32 %.1146155, 2 %130 = zext i32 %129 to i64 %131 = getelementptr inbounds nuw i32, ptr %45, i64 %130 store i32 %113, ptr %131, align 4, !tbaa !14 - %132 = add i32 %.1146154, 3 + %132 = add i32 %.1146155, 3 %133 = zext i32 %105 to i64 %134 = getelementptr inbounds nuw i32, ptr %29, i64 %133 %135 = load i32, ptr %134, align 4, !tbaa !14 @@ -881,17 +881,17 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 store i32 %144, ptr %142, align 4, !tbaa !14 %145 = getelementptr inbounds nuw i32, ptr %37, i64 %133 %146 = load i32, ptr %145, align 4, !tbaa !14 - %147 = sub i32 %.1110156, %146 + %147 = sub i32 %.1110157, %146 %148 = icmp ugt i32 %147, %4 br i1 %148, label %149, label %151 149: ; preds = %101 - %150 = add i32 %.1110156, 1 - store i32 %.1110156, ptr %145, align 4, !tbaa !14 + %150 = add i32 %.1110157, 1 + store i32 %.1110157, ptr %145, align 4, !tbaa !14 br label %151 151: ; preds = %149, %101 - %.3112 = phi i32 [ %150, %149 ], [ %.1110156, %101 ] + %.3112 = phi i32 [ %150, %149 ], [ %.1110157, %101 ] %152 = getelementptr inbounds nuw i32, ptr %37, i64 %137 %153 = load i32, ptr %152, align 4, !tbaa !14 %154 = sub i32 %.3112, %153 @@ -922,29 +922,30 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 br label %166 166: ; preds = %165, %.lr.ph - %.2147 = phi i32 [ %132, %165 ], [ %.1146154, %.lr.ph ] - %.2116 = phi i32 [ %123, %165 ], [ %.1115155, %.lr.ph ] - %.2111 = phi i32 [ %.5, %165 ], [ %.1110156, %.lr.ph ] - %167 = getelementptr inbounds nuw i8, ptr %.0108157, i64 4 + %.2147 = phi i32 [ %132, %165 ], [ %.1146155, %.lr.ph ] + %.2116 = phi i32 [ %123, %165 ], [ %.1115156, %.lr.ph ] + %.2111 = phi i32 [ %.5, %165 ], [ %.1110157, %.lr.ph ] + %167 = getelementptr inbounds nuw i8, ptr %.0108158, i64 4 %.not127 = icmp eq ptr %167, %70 br i1 %.not127, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !37 _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread: ; preds = %._crit_edge, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit - %.not.i132160 = icmp eq i32 %.1146.lcssa, 0 - br i1 %.not.i132160, label %.preheader.i, label %.lr.ph162 + %.not19.i = icmp eq i32 %.1146.lcssa, 0 + br i1 %.not19.i, label %.preheader.i, label %.lr.ph.i132 -168: ; preds = %.lr.ph162 - %.not.i132 = icmp eq i64 %indvars.iv.next.i, 0 - br i1 %.not.i132, label %.preheader.i, label %.lr.ph162 +168: ; preds = %.lr.ph.i132 + %.not.i134 = icmp eq i32 %indvars.i, 0 + br i1 %.not.i134, label %.preheader.i, label %.lr.ph.i132 .preheader.i: ; preds = %168, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread - %169 = zext i32 %.0144165 to i64 + %169 = zext i32 %.0144162 to i64 %170 = icmp ugt i64 %3, %169 - br i1 %170, label %.lr.ph.i134, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread + br i1 %170, label %.lr.ph21.i, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread -.lr.ph162: ; preds = %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread, %168 - %indvars.iv.i161 = phi i64 [ %indvars.iv.next.i, %168 ], [ %.pre-phi, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread ] - %indvars.iv.next.i = add nsw i64 %indvars.iv.i161, -1 +.lr.ph.i132: ; preds = %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread, %168 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %168 ], [ %.pre-phi, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread ] + %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 + %indvars.i = trunc i64 %indvars.iv.next.i to i32 %171 = and i64 %indvars.iv.next.i, 4294967295 %172 = getelementptr inbounds nuw i32, ptr %45, i64 %171 %173 = load i32, ptr %172, align 4, !tbaa !14 @@ -952,30 +953,26 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread: ; preds = %._cri %175 = getelementptr inbounds nuw i32, ptr %29, i64 %174 %176 = load i32, ptr %175, align 4, !tbaa !14 %.not17.not.i = icmp eq i32 %176, 0 - br i1 %.not17.not.i, label %168, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169 + br i1 %.not17.not.i, label %168, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit -.lr.ph.i134: ; preds = %.preheader.i, %180 - %.2 = phi i32 [ %181, %180 ], [ %.0144165, %.preheader.i ] +.lr.ph21.i: ; preds = %.preheader.i, %180 + %.2 = phi i32 [ %181, %180 ], [ %.0144162, %.preheader.i ] %177 = phi i64 [ %182, %180 ], [ %169, %.preheader.i ] %178 = getelementptr inbounds nuw i32, ptr %29, i64 %177 %179 = load i32, ptr %178, align 4, !tbaa !14 %.not16.i = icmp eq i32 %179, 0 br i1 %.not16.i, label %180, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit -180: ; preds = %.lr.ph.i134 +180: ; preds = %.lr.ph21.i %181 = add i32 %.2, 1 %182 = zext i32 %181 to i64 %183 = icmp ugt i64 %3, %182 - br i1 %183, label %.lr.ph.i134, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread, !llvm.loop !38 + br i1 %183, label %.lr.ph21.i, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread, !llvm.loop !38 -_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169: ; preds = %.lr.ph162 - %indvars.i = trunc nuw i64 %indvars.iv.next.i to i32 - br label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit - -_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit: ; preds = %.lr.ph.i134, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit - %.3148 = phi i32 [ %.1146.lcssa, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %indvars.i, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169 ], [ 0, %.lr.ph.i134 ] - %.1 = phi i32 [ %.0144165, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %.0144165, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169 ], [ %.2, %.lr.ph.i134 ] - %.1107 = phi i32 [ %.1.i, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %173, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169 ], [ %.2, %.lr.ph.i134 ] +_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit: ; preds = %.lr.ph.i132, %.lr.ph21.i, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit + %.3148 = phi i32 [ %.1146.lcssa, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ 0, %.lr.ph21.i ], [ %indvars.i, %.lr.ph.i132 ] + %.1 = phi i32 [ %.0144162, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %.2, %.lr.ph21.i ], [ %.0144162, %.lr.ph.i132 ] + %.1107 = phi i32 [ %.1.i, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %.2, %.lr.ph21.i ], [ %173, %.lr.ph.i132 ] %.not = icmp eq i32 %.1107, -1 br i1 %.not, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread, label %59, !llvm.loop !39 diff --git a/bench/mimalloc/optimized/prim.ll b/bench/mimalloc/optimized/prim.ll index ed8c4dc6f85..44cbd1658b3 100644 --- a/bench/mimalloc/optimized/prim.ll +++ b/bench/mimalloc/optimized/prim.ll @@ -464,15 +464,18 @@ declare i64 @syscall(i64 noundef, ...) local_unnamed_addr #1 define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unnamed_addr #0 { %1 = alloca [128 x i8], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %1) - br label %2 + br label %3 + +2: ; preds = %3 + %exitcond.not = icmp eq i32 %4, 256 + br i1 %exitcond.not, label %._crit_edge, label %3, !llvm.loop !23 -2: ; preds = %3, %0 - %.0 = phi i32 [ 0, %0 ], [ %4, %3 ] - %exitcond.not = icmp eq i32 %.0, 256 - br i1 %exitcond.not, label %._crit_edge, label %3 +._crit_edge: ; preds = %2 + br label %10, !llvm.loop !23 -3: ; preds = %2 - %4 = add nuw nsw i32 %.0, 1 +3: ; preds = %0, %2 + %.04 = phi i32 [ 0, %0 ], [ %4, %2 ] + %4 = add nuw nsw i32 %.04, 1 %5 = call i32 (ptr, i64, ptr, ...) @_mi_snprintf(ptr noundef nonnull %1, i64 noundef 127, ptr noundef nonnull @.str.1, i32 noundef %4) #10 %6 = call i64 (i64, ...) @syscall(i64 noundef 21, ptr noundef nonnull %1, i32 noundef 4) #10 %7 = and i64 %6, 4294967295 @@ -480,12 +483,12 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn br i1 %.not, label %2, label %split, !llvm.loop !23 split: ; preds = %3 - %8 = add nuw nsw i32 %.0, 1 + %8 = add nuw nsw i32 %.04, 1 %9 = zext nneg i32 %8 to i64 - br label %._crit_edge + br label %10 -._crit_edge: ; preds = %2, %split - %.0.lcssa = phi i64 [ %9, %split ], [ 257, %2 ] +10: ; preds = %split, %._crit_edge + %.0.lcssa = phi i64 [ 257, %._crit_edge ], [ %9, %split ] call void @llvm.lifetime.end.p0(ptr nonnull %1) ret i64 %.0.lcssa } diff --git a/bench/minetest/optimized/CFileList.ll b/bench/minetest/optimized/CFileList.ll index 50ecc3d22f9..2575696bb23 100644 --- a/bench/minetest/optimized/CFileList.ll +++ b/bench/minetest/optimized/CFileList.ll @@ -3032,47 +3032,49 @@ entry: while.body.lr.ph: ; preds = %entry %add.ptr.i28.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 80 - br label %while.body + %cmp22 = icmp eq i64 %__depth_limit, 0 + br i1 %cmp22, label %if.then, label %if.end -while.body: ; preds = %if.end, %while.body.lr.ph - %sub.ptr.sub.i31 = phi i64 [ %sub.ptr.sub.i27, %while.body.lr.ph ], [ %sub.ptr.sub.i, %if.end ] - %__depth_limit.addr.030 = phi i64 [ %__depth_limit, %while.body.lr.ph ], [ %dec, %if.end ] - %storemerge29 = phi ptr [ %__last.coerce, %while.body.lr.ph ], [ %call25.i, %if.end ] - %cmp2 = icmp eq i64 %__depth_limit.addr.030, 0 - br i1 %cmp2, label %if.then, label %if.end +while.body: ; preds = %if.end + %cmp2 = icmp eq i64 %dec, 0 + br i1 %cmp2, label %if.then, label %if.end, !llvm.loop !71 -if.then: ; preds = %while.body +if.then: ; preds = %while.body, %while.body.lr.ph + %storemerge29.lcssa = phi ptr [ %__last.coerce, %while.body.lr.ph ], [ %call25.i, %while.body ] call void @llvm.lifetime.start.p0(ptr nonnull %__comp.i) call void @llvm.lifetime.start.p0(ptr nonnull %__comp.i23) - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_RT0_(ptr %__first.coerce, ptr %storemerge29, ptr noundef nonnull align 1 dereferenceable(1) %__comp.i23) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_RT0_(ptr %__first.coerce, ptr %storemerge29.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %__comp.i23) call void @llvm.lifetime.end.p0(ptr nonnull %__comp.i23) br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i, %if.then - %__last.sroa.0.012.i.i = phi ptr [ %incdec.ptr.i.i.i, %while.body.i.i ], [ %storemerge29, %if.then ] + %__last.sroa.0.012.i.i = phi ptr [ %incdec.ptr.i.i.i, %while.body.i.i ], [ %storemerge29.lcssa, %if.then ] %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.012.i.i, i64 -80 call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_RT0_(ptr %__first.coerce, ptr nonnull %incdec.ptr.i.i.i, ptr nonnull %incdec.ptr.i.i.i, ptr noundef nonnull align 1 dereferenceable(1) %__comp.i) %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %incdec.ptr.i.i.i to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i, 80 - br i1 %cmp.i.i, label %while.body.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_T0_.exit, !llvm.loop !71 + br i1 %cmp.i.i, label %while.body.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_T0_.exit, !llvm.loop !72 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_T0_.exit: ; preds = %while.body.i.i call void @llvm.lifetime.end.p0(ptr nonnull %__comp.i) br label %while.end -if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.030, -1 - %div.i = udiv i64 %sub.ptr.sub.i31, 160 +if.end: ; preds = %while.body.lr.ph, %while.body + %storemerge295 = phi ptr [ %call25.i, %while.body ], [ %__last.coerce, %while.body.lr.ph ] + %__depth_limit.addr.0304 = phi i64 [ %dec, %while.body ], [ %__depth_limit, %while.body.lr.ph ] + %sub.ptr.sub.i313 = phi i64 [ %sub.ptr.sub.i, %while.body ], [ %sub.ptr.sub.i27, %while.body.lr.ph ] + %dec = add nsw i64 %__depth_limit.addr.0304, -1 + %div.i = udiv i64 %sub.ptr.sub.i313, 160 %add.ptr.i.i = getelementptr inbounds nuw %"struct.irr::io::SFileListEntry", ptr %__first.coerce, i64 %div.i - %add.ptr.i29.i = getelementptr inbounds i8, ptr %storemerge29, i64 -80 + %add.ptr.i29.i = getelementptr inbounds i8, ptr %storemerge295, i64 -80 tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_SC_T0_(ptr %__first.coerce, ptr nonnull %add.ptr.i28.i, ptr %add.ptr.i.i, ptr nonnull %add.ptr.i29.i) - %call25.i = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEET_SC_SC_SC_T0_(ptr nonnull %add.ptr.i28.i, ptr %storemerge29, ptr %__first.coerce) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_less_iterEEvT_SC_T0_T1_(ptr %call25.i, ptr %storemerge29, i64 noundef %dec) + %call25.i = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEET_SC_SC_SC_T0_(ptr nonnull %add.ptr.i28.i, ptr %storemerge295, ptr %__first.coerce) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_less_iterEEvT_SC_T0_T1_(ptr %call25.i, ptr %storemerge295, i64 noundef %dec) %sub.ptr.lhs.cast.i = ptrtoint ptr %call25.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %cmp = icmp sgt i64 %sub.ptr.sub.i, 1280 - br i1 %cmp, label %while.body, label %while.end, !llvm.loop !72 + br i1 %cmp, label %while.body, label %while.end, !llvm.loop !71 while.end: ; preds = %if.end, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN3irr2io14SFileListEntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_T0_.exit, %entry ret void diff --git a/bench/minetest/optimized/CFileSystem.ll b/bench/minetest/optimized/CFileSystem.ll index b5c349d5d41..7bc6d50cb7a 100644 --- a/bench/minetest/optimized/CFileSystem.ll +++ b/bench/minetest/optimized/CFileSystem.ll @@ -1687,17 +1687,25 @@ for.body.preheader: ; preds = %entry %3 = and i64 %sub.ptr.div.i.i, 4294967295 %4 = load ptr, ptr %1, align 8, !tbaa !27 %cmp422 = icmp eq ptr %4, %archive - br i1 %cmp422, label %if.then, label %for.inc + br i1 %cmp422, label %if.then, label %for.inc.preheader -for.body: ; preds = %for.inc - %add.ptr.i.i = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv.next +for.inc.preheader: ; preds = %for.body.preheader + %exitcond.not2 = icmp eq i64 %3, 1 + br i1 %exitcond.not2, label %cleanup, label %for.body.lr.ph, !llvm.loop !56 + +for.body.lr.ph: ; preds = %for.inc.preheader + br label %for.body, !llvm.loop !56 + +for.body: ; preds = %for.body.lr.ph, %for.inc + %indvars.iv.next3 = phi i64 [ 1, %for.body.lr.ph ], [ %indvars.iv.next, %for.inc ] + %add.ptr.i.i = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv.next3 %5 = load ptr, ptr %add.ptr.i.i, align 8, !tbaa !27 %cmp4 = icmp eq ptr %5, %archive br i1 %cmp4, label %for.body.if.then_crit_edge, label %for.inc, !llvm.loop !56 for.body.if.then_crit_edge: ; preds = %for.body - %cmp.not.le = icmp samesign ult i64 %indvars.iv.next, %3 - %6 = trunc i64 %indvars.iv.next to i32 + %cmp.not.le = icmp samesign ult i64 %indvars.iv.next3, %3 + %6 = trunc i64 %indvars.iv.next3 to i32 br label %if.then if.then: ; preds = %for.body.if.then_crit_edge, %for.body.preheader @@ -1709,15 +1717,17 @@ if.then: ; preds = %for.body.if.then_cr %call5 = tail call noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(144) %this, i32 noundef %indvars.iv.lcssa) #23 br label %cleanup -for.inc: ; preds = %for.body.preheader, %for.body - %indvars.iv23 = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ] - %indvars.iv.next = add nuw nsw i64 %indvars.iv23, 1 +for.inc: ; preds = %for.body + %indvars.iv.next = add nuw nsw i64 %indvars.iv.next3, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %3 - br i1 %exitcond.not, label %cleanup, label %for.body, !llvm.loop !56 + br i1 %exitcond.not, label %for.inc.cleanup.loopexit_crit_edge, label %for.body, !llvm.loop !56 -cleanup: ; preds = %for.inc, %if.then, %entry - %cmp.not11 = phi i1 [ %cmp.not15.lcssa, %if.then ], [ false, %entry ], [ false, %for.inc ] - %retval.0 = phi i1 [ %call5, %if.then ], [ undef, %entry ], [ undef, %for.inc ] +for.inc.cleanup.loopexit_crit_edge: ; preds = %for.inc + br label %cleanup, !llvm.loop !56 + +cleanup: ; preds = %for.inc.preheader, %for.inc.cleanup.loopexit_crit_edge, %if.then, %entry + %cmp.not11 = phi i1 [ %cmp.not15.lcssa, %if.then ], [ false, %entry ], [ false, %for.inc.cleanup.loopexit_crit_edge ], [ false, %for.inc.preheader ] + %retval.0 = phi i1 [ %call5, %if.then ], [ undef, %entry ], [ undef, %for.inc.cleanup.loopexit_crit_edge ], [ undef, %for.inc.preheader ] %spec.select = and i1 %cmp.not11, %retval.0 ret i1 %spec.select } diff --git a/bench/minetest/optimized/l_mapgen.ll b/bench/minetest/optimized/l_mapgen.ll index 71ccca24009..56f45d30b9b 100644 --- a/bench/minetest/optimized/l_mapgen.ll +++ b/bench/minetest/optimized/l_mapgen.ll @@ -15400,20 +15400,21 @@ for.cond74.preheader: ; preds = %if.end72 %schemdata = getelementptr inbounds nuw i8, ptr %schem.0256, i64 176 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %call.i204, i64 8 %wide.trip.count = zext i32 %mul26 to i64 - br label %for.cond74 + %exitcond.not6 = icmp eq i32 %mul26, 0 + br i1 %exitcond.not6, label %for.cond.cleanup76, label %for.body77 -for.cond74: ; preds = %if.end117, %for.cond74.preheader - %indvars.iv = phi i64 [ 0, %for.cond74.preheader ], [ %indvars.iv.next, %if.end117 ] - %exitcond.not = icmp eq i64 %indvars.iv, %wide.trip.count - br i1 %exitcond.not, label %for.cond.cleanup76, label %for.body77 +for.cond74: ; preds = %if.end117 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond.not, label %for.cond.cleanup76, label %for.body77, !llvm.loop !353 -for.cond.cleanup76: ; preds = %for.cond74 +for.cond.cleanup76: ; preds = %for.cond74, %for.cond74.preheader invoke void @lua_setfield(ptr noundef %L, i32 noundef 1, ptr noundef nonnull @.str.47) to label %invoke.cont128 unwind label %lpad31 -for.body77: ; preds = %for.cond74 +for.body77: ; preds = %for.cond74.preheader, %for.cond74 + %indvars.iv7 = phi i64 [ %indvars.iv.next, %for.cond74 ], [ 0, %for.cond74.preheader ] %31 = load ptr, ptr %schemdata, align 8, !tbaa !42 - %arrayidx79 = getelementptr inbounds nuw %struct.MapNode, ptr %31, i64 %indvars.iv + %arrayidx79 = getelementptr inbounds nuw %struct.MapNode, ptr %31, i64 %indvars.iv7 %32 = load i32, ptr %arrayidx79, align 4, !tbaa.struct !69 %node.sroa.6.0.extract.shift = lshr i32 %32, 16 %node.sroa.6.0.extract.trunc = trunc i32 %node.sroa.6.0.extract.shift to i8 @@ -15424,8 +15425,8 @@ for.body77: ; preds = %for.cond74 br i1 %tobool.i.not, label %cond.false, label %cond.true cond.true: ; preds = %for.body77 - %33 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !353 - %34 = load ptr, ptr %call.i204, align 8, !tbaa !355 + %33 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !354 + %34 = load ptr, ptr %call.i204, align 8, !tbaa !356 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %33 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %34 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i @@ -15505,10 +15506,10 @@ lpad100: ; preds = %if.end117, %invoke. br label %ehcleanup135 if.end117: ; preds = %invoke.cont115, %invoke.cont112 - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv7, 1 %40 = trunc i64 %indvars.iv.next to i32 invoke void @lua_rawseti(ptr noundef %L, i32 noundef 2, i32 noundef %40) - to label %for.cond74 unwind label %lpad100, !llvm.loop !356 + to label %for.cond74 unwind label %lpad100, !llvm.loop !353 invoke.cont128: ; preds = %for.cond.cleanup76 br i1 %tobool.not, label %delete.notnull, label %cleanup @@ -19392,10 +19393,10 @@ attributes #33 = { nounwind willreturn memory(read) } !350 = !{!43, !41, i64 168} !351 = !{!46, !53, i64 72} !352 = distinct !{!352, !39} -!353 = !{!354, !6, i64 8} -!354 = !{!"_ZTSNSt12_Vector_baseI15ContentFeaturesSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16} -!355 = !{!354, !6, i64 0} -!356 = distinct !{!356, !39} +!353 = distinct !{!353, !39} +!354 = !{!355, !6, i64 8} +!355 = !{!"_ZTSNSt12_Vector_baseI15ContentFeaturesSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16} +!356 = !{!355, !6, i64 0} !357 = !{!114, !6, i64 192} !358 = !{!205, !41, i64 24} !359 = !{!167, !45, i64 12} diff --git a/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll b/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll index ca9f4e153e8..3b8b2f13cc6 100644 --- a/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll +++ b/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll @@ -12534,8 +12534,8 @@ define hidden void @"_ZN4moka9sync_base11invalidator28Invalidator$LT$K$C$V$C$S$G %.not = icmp eq i64 %24, 0 br i1 %.not, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %48 -.body: ; preds = %37, %.thread, %68, %27, %127, %122 - %.pn13.pn = phi { ptr, i32 } [ %.pn, %127 ], [ %.pn, %122 ], [ %28, %27 ], [ %eh.lpad-body.i, %68 ], [ %123, %.thread ], [ %40, %37 ] +.body: ; preds = %37, %.thread, %68, %40, %27, %127, %122 + %.pn13.pn = phi { ptr, i32 } [ %.pn, %127 ], [ %.pn, %122 ], [ %28, %27 ], [ %41, %40 ], [ %eh.lpad-body.i, %68 ], [ %123, %.thread ], [ %41, %37 ] %25 = cmpxchg ptr %1, i8 1, i8 0 release monotonic, align 1, !noalias !1750 %.sroa.18.0.in.i.i.i.i = extractvalue { i8, i1 } %25, 1 br i1 %.sroa.18.0.in.i.i.i.i, label %"_ZN4core3ptr236drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$$GT$$GT$17h4b85d64a2a20c00fE.llvm.3998950267652723875.exit", label %26 @@ -12553,42 +12553,44 @@ define hidden void @"_ZN4moka9sync_base11invalidator28Invalidator$LT$K$C$V$C$S$G %30 = load ptr, ptr %19, align 8, !nonnull !9, !noundef !9 %31 = load i64, ptr %21, align 8, !noundef !9 store i64 0, ptr %21, align 8 - br label %32 + %32 = icmp eq i64 %31, 0 + br i1 %32, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %.lr.ph.i -32: ; preds = %34, %29 - %.0.i = phi i64 [ 0, %29 ], [ %36, %34 ] - %33 = icmp eq i64 %.0.i, %31 - br i1 %33, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %34 +33: ; preds = %.lr.ph.i + %34 = icmp eq i64 %36, %31 + br i1 %34, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %.lr.ph.i -34: ; preds = %32 - %35 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 }, ptr %30, i64 %.0.i - %36 = add i64 %.0.i, 1 +.lr.ph.i: ; preds = %29, %33 + %.07.i = phi i64 [ %36, %33 ], [ 0, %29 ] + %35 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 }, ptr %30, i64 %.07.i + %36 = add nuw i64 %.07.i, 1 invoke void @"_ZN4core3ptr143drop_in_place$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$17h117a180a4e25ab7cE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %35) - to label %32 unwind label %39 + to label %33 unwind label %40 -37: ; preds = %41, %39 - %.1.i = phi i64 [ %36, %39 ], [ %43, %41 ] - %38 = icmp eq i64 %.1.i, %31 - br i1 %38, label %.body, label %41 +37: ; preds = %.lr.ph10.i + %38 = add i64 %.18.i, 1 + %39 = icmp eq i64 %38, %31 + br i1 %39, label %.body, label %.lr.ph10.i -39: ; preds = %34 - %40 = landingpad { ptr, i32 } +40: ; preds = %.lr.ph.i + %41 = landingpad { ptr, i32 } cleanup - br label %37 + %42 = icmp eq i64 %36, %31 + br i1 %42, label %.body, label %.lr.ph10.i -41: ; preds = %37 - %42 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 }, ptr %30, i64 %.1.i - %43 = add i64 %.1.i, 1 - invoke void @"_ZN4core3ptr143drop_in_place$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$17h117a180a4e25ab7cE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %42) #36 +.lr.ph10.i: ; preds = %40, %37 + %.18.i = phi i64 [ %38, %37 ], [ %36, %40 ] + %43 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 }, ptr %30, i64 %.18.i + invoke void @"_ZN4core3ptr143drop_in_place$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$17h117a180a4e25ab7cE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %43) #36 to label %37 unwind label %44 -44: ; preds = %41 +44: ; preds = %.lr.ph10.i %45 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #37 unreachable -"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit": ; preds = %32, %124, %23 +"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit": ; preds = %33, %29, %124, %23 %46 = cmpxchg ptr %1, i8 1, i8 0 release monotonic, align 1, !noalias !1755 %.sroa.18.0.in.i.i.i.i16 = extractvalue { i8, i1 } %46, 1 br i1 %.sroa.18.0.in.i.i.i.i16, label %"_ZN4core3ptr236drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$$GT$$GT$17h4b85d64a2a20c00fE.llvm.3998950267652723875.exit17", label %47 diff --git a/bench/mitsuba3/optimized/filesystem.ll b/bench/mitsuba3/optimized/filesystem.ll index 90783a81e44..05ed197ec01 100644 --- a/bench/mitsuba3/optimized/filesystem.ll +++ b/bench/mitsuba3/optimized/filesystem.ll @@ -998,21 +998,21 @@ _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stri _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit %.pre = load ptr, ptr %10, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 -24 - %.pre22 = load i8, ptr %.phi.trans.insert, align 8 - %.phi.trans.insert23 = getelementptr inbounds i8, ptr %.pre, i64 -16 - %.pre24 = load i64, ptr %.phi.trans.insert23, align 8 - %.pre25 = and i8 %.pre22, 1 - %.pre26 = lshr i8 %.pre22, 1 - %.pre28 = zext nneg i8 %.pre26 to i64 + %.pre24 = load i8, ptr %.phi.trans.insert, align 8 + %.phi.trans.insert25 = getelementptr inbounds i8, ptr %.pre, i64 -16 + %.pre26 = load i64, ptr %.phi.trans.insert25, align 8 + %.pre27 = and i8 %.pre24, 1 + %.pre28 = lshr i8 %.pre24, 1 + %.pre30 = zext nneg i8 %.pre28 to i64 br label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge, %13 - %.pre-phi29 = phi i64 [ %.pre28, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %20, %13 ] - %.pre-phi = phi i8 [ %.pre25, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %16, %13 ] - %28 = phi i64 [ %.pre24, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %18, %13 ] + %.pre-phi31 = phi i64 [ %.pre30, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %20, %13 ] + %.pre-phi = phi i8 [ %.pre27, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %16, %13 ] + %28 = phi i64 [ %.pre26, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %18, %13 ] %29 = phi ptr [ %.pre, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %11, %13 ] %.not.i.i9 = icmp eq i8 %.pre-phi, 0 - %30 = select i1 %.not.i.i9, i64 %.pre-phi29, i64 %28 + %30 = select i1 %.not.i.i9, i64 %.pre-phi31, i64 %28 %.not.i10 = icmp eq i64 %30, 2 br i1 %.not.i10, label %31, label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit12.thread @@ -1120,16 +1120,20 @@ _ZN7mitsuba10filesystem4pathD2Ev.exit: ; preds = %_ZNK7mitsuba10files %61 = getelementptr inbounds nuw i8, ptr %6, i64 8 %62 = load i64, ptr %61, align 8 %63 = select i1 %.not.i.i.i13, i64 %60, i64 %62 + %.not2123.i.i = icmp eq i64 %63, 0 + br i1 %.not2123.i.i, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i + +_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i: ; preds = %_ZN7mitsuba10filesystem4pathD2Ev.exit %64 = getelementptr inbounds i8, ptr %58, i64 %63 - br label %65 + br label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i -65: ; preds = %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i, %_ZN7mitsuba10filesystem4pathD2Ev.exit - %.015.i.i = phi ptr [ %64, %_ZN7mitsuba10filesystem4pathD2Ev.exit ], [ %66, %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i ] - %.not21.i.i = icmp eq ptr %.015.i.i, %58 - br i1 %.not21.i.i, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i +65: ; preds = %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i + %.not21.i.i = icmp eq ptr %66, %58 + br i1 %.not21.i.i, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i, !llvm.loop !28 -_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i: ; preds = %65 - %66 = getelementptr inbounds i8, ptr %.015.i.i, i64 -1 +_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i: ; preds = %65, %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i + %.01524.i.i = phi ptr [ %66, %65 ], [ %64, %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i ] + %66 = getelementptr inbounds i8, ptr %.01524.i.i, i64 -1 %67 = load i8, ptr %66, align 1 %memchr.char0cmp.not = icmp eq i8 %67, 46 br i1 %memchr.char0cmp.not, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit, label %65, !llvm.loop !28 @@ -1141,7 +1145,7 @@ _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8 %71 = icmp eq i64 %70, -1 br i1 %71, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %79 -_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread: ; preds = %65, %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread: ; preds = %65, %_ZN7mitsuba10filesystem4pathD2Ev.exit, %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(25) %0, i8 0, i64 24, i1 false) invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull @.str.7, i64 noundef 0) @@ -1351,21 +1355,21 @@ _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stri _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit %.pre = load ptr, ptr %11, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 -24 - %.pre35 = load i8, ptr %.phi.trans.insert, align 8 - %.phi.trans.insert36 = getelementptr inbounds i8, ptr %.pre, i64 -16 - %.pre37 = load i64, ptr %.phi.trans.insert36, align 8 - %.pre38 = and i8 %.pre35, 1 - %.pre39 = lshr i8 %.pre35, 1 - %.pre41 = zext nneg i8 %.pre39 to i64 + %.pre37 = load i8, ptr %.phi.trans.insert, align 8 + %.phi.trans.insert38 = getelementptr inbounds i8, ptr %.pre, i64 -16 + %.pre39 = load i64, ptr %.phi.trans.insert38, align 8 + %.pre40 = and i8 %.pre37, 1 + %.pre41 = lshr i8 %.pre37, 1 + %.pre43 = zext nneg i8 %.pre41 to i64 br label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge, %14 - %.pre-phi42 = phi i64 [ %.pre41, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %21, %14 ] - %.pre-phi = phi i8 [ %.pre38, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %17, %14 ] - %29 = phi i64 [ %.pre37, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %19, %14 ] + %.pre-phi44 = phi i64 [ %.pre43, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %21, %14 ] + %.pre-phi = phi i8 [ %.pre40, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %17, %14 ] + %29 = phi i64 [ %.pre39, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %19, %14 ] %30 = phi ptr [ %.pre, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %12, %14 ] %.not.i.i16 = icmp eq i8 %.pre-phi, 0 - %31 = select i1 %.not.i.i16, i64 %.pre-phi42, i64 %29 + %31 = select i1 %.not.i.i16, i64 %.pre-phi44, i64 %29 %.not.i17 = icmp eq i64 %31, 2 br i1 %.not.i17, label %32, label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit19.thread @@ -1438,16 +1442,20 @@ _ZN7mitsuba10filesystem4pathD2Ev.exit: ; preds = %_ZNK7mitsuba10files %56 = getelementptr inbounds nuw i8, ptr %4, i64 8 %57 = load i64, ptr %56, align 8 %58 = select i1 %.not.i.i.i20, i64 %55, i64 %57 + %.not2123.i.i = icmp eq i64 %58, 0 + br i1 %.not2123.i.i, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i + +_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i: ; preds = %_ZN7mitsuba10filesystem4pathD2Ev.exit %59 = getelementptr inbounds i8, ptr %53, i64 %58 - br label %60 + br label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i -60: ; preds = %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i, %_ZN7mitsuba10filesystem4pathD2Ev.exit - %.015.i.i = phi ptr [ %59, %_ZN7mitsuba10filesystem4pathD2Ev.exit ], [ %61, %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i ] - %.not21.i.i = icmp eq ptr %.015.i.i, %53 - br i1 %.not21.i.i, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i +60: ; preds = %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i + %.not21.i.i = icmp eq ptr %61, %53 + br i1 %.not21.i.i, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread, label %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i, !llvm.loop !28 -_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i: ; preds = %60 - %61 = getelementptr inbounds i8, ptr %.015.i.i, i64 -1 +_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.i.i: ; preds = %60, %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i + %.01524.i.i = phi ptr [ %61, %60 ], [ %59, %_ZNSt3__111char_traitsIcE4findB8ne190000EPKcmRS2_.exit.preheader.i.i ] + %61 = getelementptr inbounds i8, ptr %.01524.i.i, i64 -1 %62 = load i8, ptr %61, align 1 %memchr.char0cmp.not = icmp eq i8 %62, 46 br i1 %memchr.char0cmp.not, label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit, label %60, !llvm.loop !28 @@ -1489,7 +1497,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_ cleanup br label %169 -_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread: ; preds = %60, %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_.exit, %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit +_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit.thread: ; preds = %60, %_ZN7mitsuba10filesystem4pathD2Ev.exit, %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_.exit, %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE12find_last_ofB8ne190000EPKcm.exit invoke void @_ZNK7mitsuba10filesystem4path3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__1::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(25) %1) to label %_ZNK7mitsuba10filesystem4pathcvNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEv.exit21 unwind label %75 diff --git a/bench/ncnn/optimized/imreadwrite.ll b/bench/ncnn/optimized/imreadwrite.ll index 94dd6017803..57547eacda1 100644 --- a/bench/ncnn/optimized/imreadwrite.ll +++ b/bench/ncnn/optimized/imreadwrite.ll @@ -13453,24 +13453,27 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi__build_huffmanP13s %9 = sext i32 %.06073 to i64 %smax = tail call i32 @llvm.smax.i32(i32 %.06073, i32 256) %10 = sub i32 %smax, %.06073 - br label %11 - -11: ; preds = %.lr.ph, %13 - %indvars.iv = phi i64 [ %9, %.lr.ph ], [ %indvars.iv.next, %13 ] - %.05572 = phi i32 [ 0, %.lr.ph ], [ %14, %13 ] - %12 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv - store i8 %8, ptr %12, align 1, !tbaa !23 - %exitcond = icmp eq i32 %.05572, %10 - br i1 %exitcond, label %.loopexit65.sink.split, label %13 - -13: ; preds = %11 - %indvars.iv.next = add nsw i64 %indvars.iv, 1 - %14 = add nuw nsw i32 %.05572, 1 + %11 = getelementptr inbounds i8, ptr %3, i64 %9 + store i8 %8, ptr %11, align 1, !tbaa !23 + %exitcond114 = icmp sgt i32 %.06073, 255 + br i1 %exitcond114, label %.loopexit65.sink.split, label %.lr.ph117 + +12: ; preds = %.lr.ph117 + %13 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv.next + store i8 %8, ptr %13, align 1, !tbaa !23 + %exitcond = icmp eq i32 %14, %10 + br i1 %exitcond, label %.loopexit65.sink.split, label %.lr.ph117, !llvm.loop !269 + +.lr.ph117: ; preds = %.lr.ph, %12 + %.05572116 = phi i32 [ %14, %12 ], [ 0, %.lr.ph ] + %indvars.iv115 = phi i64 [ %indvars.iv.next, %12 ], [ %9, %.lr.ph ] + %indvars.iv.next = add nsw i64 %indvars.iv115, 1 + %14 = add nuw nsw i32 %.05572116, 1 %15 = load i32, ptr %4, align 4, !tbaa !10 %16 = icmp slt i32 %14, %15 - br i1 %16, label %11, label %._crit_edge.loopexit, !llvm.loop !269 + br i1 %16, label %12, label %._crit_edge.loopexit, !llvm.loop !269 -._crit_edge.loopexit: ; preds = %13 +._crit_edge.loopexit: ; preds = %.lr.ph117 %17 = trunc nsw i64 %indvars.iv.next to i32 br label %._crit_edge @@ -13582,8 +13585,8 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi__build_huffmanP13s %exitcond110.not = icmp eq i64 %indvars.iv.next107, %wide.trip.count br i1 %exitcond110.not, label %.loopexit65, label %50, !llvm.loop !274 -.loopexit65.sink.split: ; preds = %11, %._crit_edge78 - %.str.51.sink = phi ptr [ @.str.51, %._crit_edge78 ], [ @.str.50, %11 ] +.loopexit65.sink.split: ; preds = %.lr.ph, %12, %._crit_edge78 + %.str.51.sink = phi ptr [ @.str.51, %._crit_edge78 ], [ @.str.50, %12 ], [ @.str.50, %.lr.ph ] store ptr %.str.51.sink, ptr @_ZL22stbi__g_failure_reason, align 8, !tbaa !5 br label %.loopexit65 diff --git a/bench/nghttp2/optimized/sfparse.ll b/bench/nghttp2/optimized/sfparse.ll index 13f86970161..ebea5f37ab7 100644 --- a/bench/nghttp2/optimized/sfparse.ll +++ b/bench/nghttp2/optimized/sfparse.ll @@ -506,7 +506,7 @@ define hidden range(i32 -2, 1) i32 @sfparse_parser_inner_list(ptr noundef captur i32 0, label %6 i32 1, label %.preheader i32 3, label %parser_skip_params.exit.thread - i32 2, label %18 + i32 2, label %20 ] 6: ; preds = %2 @@ -551,26 +551,35 @@ parser_skip_params.exit.thread: ; preds = %.preheader, %2 14: ; preds = %parser_skip_params.exit.thread %15 = load i8, ptr %.val26, align 1, !tbaa !12 switch i8 %15, label %parser_skip_params.exit [ - i8 32, label %.lr.ph.i33.preheader + i8 32, label %.lr.ph.i33.preheader.preheader i8 41, label %parser_discard_sp.exit36.thread50 ] -.lr.ph.i33thread-pre-split: ; preds = %.lr.ph.i33.preheader +.lr.ph.i33.preheader.preheader: ; preds = %14 + %16 = getelementptr inbounds nuw i8, ptr %.val26, i64 1 + store ptr %16, ptr %0, align 8, !tbaa !10 + %.not.i3557 = icmp eq ptr %16, %.val27 + br i1 %.not.i3557, label %parser_skip_params.exit, label %.lr.ph.i33thread-pre-split.lr.ph, !llvm.loop !13 + +.lr.ph.i33thread-pre-split.lr.ph: ; preds = %.lr.ph.i33.preheader.preheader + br label %.lr.ph.i33thread-pre-split, !llvm.loop !13 + +.lr.ph.i33thread-pre-split: ; preds = %.lr.ph.i33thread-pre-split.lr.ph, %.lr.ph.i33.preheader + %17 = phi ptr [ %16, %.lr.ph.i33thread-pre-split.lr.ph ], [ %19, %.lr.ph.i33.preheader ] %.pr = load i8, ptr %17, align 1, !tbaa !12 - %16 = icmp eq i8 %.pr, 32 - br i1 %16, label %.lr.ph.i33.preheader, label %parser_discard_sp.exit36 + %18 = icmp eq i8 %.pr, 32 + br i1 %18, label %.lr.ph.i33.preheader, label %parser_discard_sp.exit36 -.lr.ph.i33.preheader: ; preds = %14, %.lr.ph.i33thread-pre-split - %.val46.i3442 = phi ptr [ %17, %.lr.ph.i33thread-pre-split ], [ %.val26, %14 ] - %17 = getelementptr inbounds nuw i8, ptr %.val46.i3442, i64 1 - store ptr %17, ptr %0, align 8, !tbaa !10 - %.not.i35 = icmp eq ptr %17, %.val27 - br i1 %.not.i35, label %parser_skip_params.exit, label %.lr.ph.i33thread-pre-split, !llvm.loop !13 +.lr.ph.i33.preheader: ; preds = %.lr.ph.i33thread-pre-split + %19 = getelementptr inbounds nuw i8, ptr %17, i64 1 + store ptr %19, ptr %0, align 8, !tbaa !10 + %.not.i35 = icmp eq ptr %19, %.val27 + br i1 %.not.i35, label %.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge, label %.lr.ph.i33thread-pre-split, !llvm.loop !13 default.unreachable48: ; preds = %.preheader, %2 unreachable -18: ; preds = %2 +20: ; preds = %2 tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 1329, ptr noundef nonnull @__PRETTY_FUNCTION__.sfparse_parser_inner_list) #8 unreachable @@ -579,33 +588,36 @@ parser_discard_sp.exit36thread-pre-split: ; preds = %parser_discard_sp.e br label %parser_discard_sp.exit36 parser_discard_sp.exit36: ; preds = %.lr.ph.i33thread-pre-split, %parser_discard_sp.exit36thread-pre-split - %19 = phi i8 [ %.pr49, %parser_discard_sp.exit36thread-pre-split ], [ %.pr, %.lr.ph.i33thread-pre-split ] - %20 = phi ptr [ %.val28, %parser_discard_sp.exit36thread-pre-split ], [ %17, %.lr.ph.i33thread-pre-split ] - %21 = icmp eq i8 %19, 41 - br i1 %21, label %parser_discard_sp.exit36.thread50, label %24 + %21 = phi i8 [ %.pr49, %parser_discard_sp.exit36thread-pre-split ], [ %.pr, %.lr.ph.i33thread-pre-split ] + %22 = phi ptr [ %.val28, %parser_discard_sp.exit36thread-pre-split ], [ %17, %.lr.ph.i33thread-pre-split ] + %23 = icmp eq i8 %21, 41 + br i1 %23, label %parser_discard_sp.exit36.thread50, label %26 parser_discard_sp.exit36.thread50: ; preds = %14, %parser_discard_sp.exit36 - %22 = phi ptr [ %20, %parser_discard_sp.exit36 ], [ %.val26, %14 ] - %23 = getelementptr inbounds nuw i8, ptr %22, i64 1 - store ptr %23, ptr %0, align 8, !tbaa !10 + %24 = phi ptr [ %22, %parser_discard_sp.exit36 ], [ %.val26, %14 ] + %25 = getelementptr inbounds nuw i8, ptr %24, i64 1 + store ptr %25, ptr %0, align 8, !tbaa !10 br label %parser_skip_params.exit.sink.split -24: ; preds = %parser_discard_sp.exit36 - %25 = tail call fastcc i32 @parser_bare_item(ptr noundef nonnull %0, ptr noundef %1) - %.not24 = icmp eq i32 %25, 0 +26: ; preds = %parser_discard_sp.exit36 + %27 = tail call fastcc i32 @parser_bare_item(ptr noundef nonnull %0, ptr noundef %1) + %.not24 = icmp eq i32 %27, 0 br i1 %.not24, label %parser_skip_params.exit.sink.split, label %parser_skip_params.exit -parser_skip_params.exit.sink.split: ; preds = %24, %parser_discard_sp.exit36.thread50 - %.sink54 = phi i32 [ -8, %parser_discard_sp.exit36.thread50 ], [ -4, %24 ] - %.0.ph = phi i32 [ -2, %parser_discard_sp.exit36.thread50 ], [ 0, %24 ] - %26 = load i32, ptr %3, align 8, !tbaa !3 - %27 = and i32 %26, %.sink54 - %28 = or disjoint i32 %27, 1 - store i32 %28, ptr %3, align 8, !tbaa !3 +parser_skip_params.exit.sink.split: ; preds = %26, %parser_discard_sp.exit36.thread50 + %.sink54 = phi i32 [ -8, %parser_discard_sp.exit36.thread50 ], [ -4, %26 ] + %.0.ph = phi i32 [ -2, %parser_discard_sp.exit36.thread50 ], [ 0, %26 ] + %28 = load i32, ptr %3, align 8, !tbaa !3 + %29 = and i32 %28, %.sink54 + %30 = or disjoint i32 %29, 1 + store i32 %30, ptr %3, align 8, !tbaa !3 br label %parser_skip_params.exit -parser_skip_params.exit: ; preds = %.preheader, %.lr.ph.i33.preheader, %parser_skip_params.exit.sink.split, %24, %14, %parser_skip_params.exit.thread, %parser_discard_sp.exit - %.0 = phi i32 [ -1, %parser_discard_sp.exit ], [ -1, %parser_skip_params.exit.thread ], [ -1, %14 ], [ -1, %24 ], [ %.0.ph, %parser_skip_params.exit.sink.split ], [ -1, %.lr.ph.i33.preheader ], [ %12, %.preheader ] +.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge: ; preds = %.lr.ph.i33.preheader + br label %parser_skip_params.exit, !llvm.loop !13 + +parser_skip_params.exit: ; preds = %.preheader, %.lr.ph.i33.preheader.preheader, %.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge, %parser_skip_params.exit.sink.split, %26, %14, %parser_skip_params.exit.thread, %parser_discard_sp.exit + %.0 = phi i32 [ -1, %parser_discard_sp.exit ], [ -1, %parser_skip_params.exit.thread ], [ -1, %14 ], [ -1, %26 ], [ %.0.ph, %parser_skip_params.exit.sink.split ], [ -1, %.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge ], [ -1, %.lr.ph.i33.preheader.preheader ], [ %12, %.preheader ] ret i32 %.0 } diff --git a/bench/nix/optimized/eval-settings.ll b/bench/nix/optimized/eval-settings.ll index 3704c1c6056..2325be27586 100644 --- a/bench/nix/optimized/eval-settings.ll +++ b/bench/nix/optimized/eval-settings.ll @@ -1882,26 +1882,31 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i34.i %508 = load ptr, ptr %78, align 8, !noalias !6 %509 = load i64, ptr %421, align 8, !noalias !6 %510 = getelementptr inbounds i8, ptr %508, i64 %509 - br label %511 - -511: ; preds = %513, %507 - %.sroa.068.1.pn.i = phi ptr [ %.sroa.068.1106.i, %507 ], [ %.sroa.068.4.i, %513 ] - %.sroa.068.4.i = getelementptr inbounds nuw i8, ptr %.sroa.068.1.pn.i, i64 1 - %512 = icmp eq ptr %.sroa.068.4.i, %510 - br i1 %512, label %.critedge2.i, label %513 - -513: ; preds = %511 - %514 = load i8, ptr %.sroa.068.4.i, align 1 + %.sroa.068.4.i403 = getelementptr inbounds nuw i8, ptr %.sroa.068.1106.i, i64 1 + %511 = icmp eq ptr %.sroa.068.4.i403, %510 + br i1 %511, label %.critedge2.i, label %.lr.ph + +512: ; preds = %.lr.ph + %.sroa.068.4.i = getelementptr inbounds nuw i8, ptr %.sroa.068.4.i404, i64 1 + %513 = icmp eq ptr %.sroa.068.4.i, %510 + br i1 %513, label %.critedge2.i, label %.lr.ph, !llvm.loop !10 + +.lr.ph: ; preds = %507, %512 + %.sroa.068.4.i404 = phi ptr [ %.sroa.068.4.i, %512 ], [ %.sroa.068.4.i403, %507 ] + %514 = load i8, ptr %.sroa.068.4.i404, align 1 %.not27.i = icmp eq i8 %514, 58 - br i1 %.not27.i, label %.critedge2.i, label %511, !llvm.loop !10 + br i1 %.not27.i, label %..critedge2.i.loopexit_crit_edge405, label %512, !llvm.loop !10 515: ; preds = %502, %496 %516 = landingpad { ptr, i32 } cleanup br label %560 -.critedge2.i: ; preds = %513, %511, %506 - %.sroa.068.3.i = phi ptr [ %.sroa.068.1106.i, %506 ], [ %.sroa.068.4.i, %511 ], [ %.sroa.068.4.i, %513 ] +..critedge2.i.loopexit_crit_edge405: ; preds = %.lr.ph + br label %.critedge2.i, !llvm.loop !10 + +.critedge2.i: ; preds = %512, %507, %..critedge2.i.loopexit_crit_edge405, %506 + %.sroa.068.3.i = phi ptr [ %.sroa.068.1106.i, %506 ], [ %.sroa.068.4.i404, %..critedge2.i.loopexit_crit_edge405 ], [ %.sroa.068.4.i403, %507 ], [ %.sroa.068.4.i, %512 ] call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #21 call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) #21 store ptr %428, ptr %6, align 8, !noalias !6 diff --git a/bench/node/optimized/libnode.fs_permission.ll b/bench/node/optimized/libnode.fs_permission.ll index 43079d26599..64d513a2efb 100644 --- a/bench/node/optimized/libnode.fs_permission.ll +++ b/bench/node/optimized/libnode.fs_permission.ll @@ -812,24 +812,25 @@ if.end11: ; preds = %if.end %call12 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %prefix) #13 %call1436 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #13 %cmp1537.not = icmp eq i64 %call1436, 0 - br i1 %cmp1537.not, label %for.end, label %for.body + br i1 %cmp1537.not, label %for.end, label %lor.lhs.false -for.body: ; preds = %if.end11, %for.inc - %i.038 = phi i64 [ %inc, %for.inc ], [ 0, %if.end11 ] - %cmp16 = icmp ugt i64 %i.038, %call12 - br i1 %cmp16, label %if.then22, label %lor.lhs.false +for.body: ; preds = %for.inc + %cmp16.not = icmp ult i64 %i.03842, %call12 + br i1 %cmp16.not, label %lor.lhs.false, label %if.then22, !llvm.loop !18 -lor.lhs.false: ; preds = %for.body - %call17 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %prefix, i64 noundef %i.038) #13 +lor.lhs.false: ; preds = %if.end11, %for.body + %i.03842 = phi i64 [ %inc, %for.body ], [ 0, %if.end11 ] + %call17 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %prefix, i64 noundef %i.03842) #13 %4 = load i8, ptr %call17, align 1 - %call19 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %i.038) #13 + %call19 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %i.03842) #13 %5 = load i8, ptr %call19, align 1 %cmp21.not = icmp eq i8 %4, %5 br i1 %cmp21.not, label %for.inc, label %if.then22 if.then22: ; preds = %lor.lhs.false, %for.body - call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %parent_prefix, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef 0, i64 noundef %i.038) #13 - call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %child_prefix, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %i.038, i64 noundef -1) #13 + %i.038.lcssa = phi i64 [ %i.03842, %lor.lhs.false ], [ %inc, %for.body ] + call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %parent_prefix, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef 0, i64 noundef %i.038.lcssa) #13 + call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %child_prefix, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %i.038.lcssa, i64 noundef -1) #13 %call26 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %child_prefix) #13 %call27 = call noalias noundef nonnull dereferenceable(104) ptr @_Znwm(i64 noundef 104) #14 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(97) %call27, ptr noundef nonnull align 8 dereferenceable(32) %parent_prefix) #13 @@ -850,7 +851,7 @@ if.then22: ; preds = %lor.lhs.false, %for %call32 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %parent_prefix, i64 noundef 0) #13 %call.i34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail9_Map_baseIcSt4pairIKcPN4node10permission12FSPermission9RadixTree4NodeEESaIS9_ENS_10_Select1stESt8equal_toIcESt4hashIcENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_(ptr noundef nonnull align 8 dereferenceable(56) %children, ptr noundef nonnull align 1 dereferenceable(1) %call32) store ptr %call27, ptr %call.i34, align 8 - call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %prefix, i64 noundef %i.038, i64 noundef -1) #13 + call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %prefix, i64 noundef %i.038.lcssa, i64 noundef -1) #13 %call34 = call noundef ptr @_ZN4node10permission12FSPermission9RadixTree4Node11CreateChildERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(97) %call27, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #13 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %child_prefix) #13 @@ -858,7 +859,7 @@ if.then22: ; preds = %lor.lhs.false, %for br label %return for.inc: ; preds = %lor.lhs.false - %inc = add nuw i64 %i.038, 1 + %inc = add nuw i64 %i.03842, 1 %call14 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %2) #13 %cmp15 = icmp ult i64 %inc, %call14 br i1 %cmp15, label %for.body, label %for.end, !llvm.loop !18 diff --git a/bench/node/optimized/libnode.string_decoder.ll b/bench/node/optimized/libnode.string_decoder.ll index 7a03fdde130..f570dbb7307 100644 --- a/bench/node/optimized/libnode.string_decoder.ll +++ b/bench/node/optimized/libnode.string_decoder.ll @@ -244,11 +244,19 @@ for.cond107.preheader: ; preds = %land.lhs.true %conv112137148 = zext i8 %19 to i32 %and113138 = and i32 %conv112137148, 192 %cmp114139 = icmp eq i32 %and113138, 128 - br i1 %cmp114139, label %if.then115, label %if.else126 - -for.cond107: ; preds = %if.then115 - %dec = add i64 %i105.0140, -1 - %inc110 = add nuw nsw i8 %inc110141, 1 + br i1 %cmp114139, label %if.then115.preheader, label %if.else126 + +if.then115.preheader: ; preds = %for.cond107.preheader + %cmp119156 = icmp ugt i8 %inc110135, 3 + %cmp121157 = icmp eq i64 %sub100, 0 + %or.cond158 = or i1 %cmp121157, %cmp119156 + br i1 %or.cond158, label %if.then122, label %for.cond107 + +for.cond107: ; preds = %if.then115.preheader, %if.then115 + %i105.0140160 = phi i64 [ %dec, %if.then115 ], [ %sub100, %if.then115.preheader ] + %inc110141159 = phi i8 [ %inc110, %if.then115 ], [ %inc110135, %if.then115.preheader ] + %dec = add i64 %i105.0140160, -1 + %inc110 = add nuw nsw i8 %inc110141159, 1 store i8 %inc110, ptr %arrayidx109, align 1 %arrayidx111 = getelementptr inbounds i8, ptr %data.addr.0, i64 %dec %20 = load i8, ptr %arrayidx111, align 1 @@ -257,15 +265,13 @@ for.cond107: ; preds = %if.then115 %cmp114 = icmp eq i32 %and113, 128 br i1 %cmp114, label %if.then115, label %if.else126, !llvm.loop !7 -if.then115: ; preds = %for.cond107.preheader, %for.cond107 - %inc110141 = phi i8 [ %inc110, %for.cond107 ], [ %inc110135, %for.cond107.preheader ] - %i105.0140 = phi i64 [ %dec, %for.cond107 ], [ %sub100, %for.cond107.preheader ] - %cmp119 = icmp ugt i8 %inc110141, 3 - %cmp121 = icmp eq i64 %i105.0140, 0 +if.then115: ; preds = %for.cond107 + %cmp119 = icmp ugt i8 %inc110141159, 2 + %cmp121 = icmp eq i64 %dec, 0 %or.cond = or i1 %cmp121, %cmp119 - br i1 %or.cond, label %if.then122, label %for.cond107 + br i1 %or.cond, label %if.then122, label %for.cond107, !llvm.loop !7 -if.then122: ; preds = %if.then115 +if.then122: ; preds = %if.then115, %if.then115.preheader store i8 0, ptr %arrayidx109, align 1 br label %if.end223 diff --git a/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll b/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll index 083ac64facd..3a6edaa70eb 100644 --- a/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll +++ b/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll @@ -265,7 +265,7 @@ define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$alloc..vec..in_pla %11 = add nuw i64 %.07.i.i, 1 call void @llvm.lifetime.start.p0(ptr nonnull %1), !noalias !51 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h607f29a7f26bd4e3E.llvm.3482039573647521366"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10) - to label %.noexc.i.i unwind label %21 + to label %.noexc.i.i unwind label %22 .noexc.i.i: ; preds = %9 %12 = load i64, ptr %7, align 8, !range !64, !noalias !51, !noundef !12 @@ -287,27 +287,28 @@ define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$alloc..vec..in_pla %18 = icmp eq i64 %11, %5 br i1 %18, label %"_ZN89_$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he140a7f4ae4dbf72E.exit", label %9 -19: ; preds = %23, %21 - %.1.i.i = phi i64 [ %11, %21 ], [ %25, %23 ] - %20 = icmp eq i64 %.1.i.i, %5 - br i1 %20, label %26, label %23 +19: ; preds = %.lr.ph10.i.i + %20 = add i64 %.18.i.i, 1 + %21 = icmp eq i64 %20, %5 + br i1 %21, label %._crit_edge11.i.i, label %.lr.ph10.i.i -21: ; preds = %9 - %22 = landingpad { ptr, i32 } +22: ; preds = %9 + %23 = landingpad { ptr, i32 } cleanup - br label %19 + %24 = icmp eq i64 %11, %5 + br i1 %24, label %._crit_edge11.i.i, label %.lr.ph10.i.i -23: ; preds = %19 - %24 = getelementptr inbounds { { { { i64, ptr, {} }, i64 } }, { i8, [23 x i8] } }, ptr %.0.val, i64 %.1.i.i - %25 = add i64 %.1.i.i, 1 - invoke fastcc void @"_ZN4core3ptr81drop_in_place$LT$$LP$alloc..string..String$C$nom..error..VerboseErrorKind$RP$$GT$17hc42087fc2d90126bE"(ptr noalias noundef align 8 dereferenceable(48) %24) #12 - to label %19 unwind label %27 +.lr.ph10.i.i: ; preds = %22, %19 + %.18.i.i = phi i64 [ %20, %19 ], [ %11, %22 ] + %25 = getelementptr inbounds { { { { i64, ptr, {} }, i64 } }, { i8, [23 x i8] } }, ptr %.0.val, i64 %.18.i.i + invoke fastcc void @"_ZN4core3ptr81drop_in_place$LT$$LP$alloc..string..String$C$nom..error..VerboseErrorKind$RP$$GT$17hc42087fc2d90126bE"(ptr noalias noundef align 8 dereferenceable(48) %25) #12 + to label %19 unwind label %26 -26: ; preds = %19 - resume { ptr, i32 } %22 +._crit_edge11.i.i: ; preds = %19, %22 + resume { ptr, i32 } %23 -27: ; preds = %23 - %28 = landingpad { ptr, i32 } +26: ; preds = %.lr.ph10.i.i + %27 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #13 unreachable @@ -337,7 +338,7 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla %11 = add nuw i64 %.07.i.i, 1 call void @llvm.lifetime.start.p0(ptr nonnull %1), !noalias !65 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h607f29a7f26bd4e3E.llvm.3482039573647521366"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10) - to label %.noexc.i.i unwind label %21 + to label %.noexc.i.i unwind label %22 .noexc.i.i: ; preds = %9 %12 = load i64, ptr %7, align 8, !range !64, !noalias !65, !noundef !12 @@ -359,27 +360,28 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla %18 = icmp eq i64 %11, %5 br i1 %18, label %"_ZN89_$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7125aef01a03bcecE.exit", label %9 -19: ; preds = %23, %21 - %.1.i.i = phi i64 [ %11, %21 ], [ %25, %23 ] - %20 = icmp eq i64 %.1.i.i, %5 - br i1 %20, label %26, label %23 +19: ; preds = %.lr.ph10.i.i + %20 = add i64 %.18.i.i, 1 + %21 = icmp eq i64 %20, %5 + br i1 %21, label %._crit_edge11.i.i, label %.lr.ph10.i.i -21: ; preds = %9 - %22 = landingpad { ptr, i32 } +22: ; preds = %9 + %23 = landingpad { ptr, i32 } cleanup - br label %19 + %24 = icmp eq i64 %11, %5 + br i1 %24, label %._crit_edge11.i.i, label %.lr.ph10.i.i -23: ; preds = %19 - %24 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { i8, [23 x i8] } }, ptr %.0.val, i64 %.1.i.i - %25 = add i64 %.1.i.i, 1 - invoke fastcc void @"_ZN4core3ptr85drop_in_place$LT$$LP$alloc..vec..Vec$LT$u8$GT$$C$nom..error..VerboseErrorKind$RP$$GT$17h095cc7a8d2e1b564E"(ptr noalias noundef align 8 dereferenceable(48) %24) #12 - to label %19 unwind label %27 +.lr.ph10.i.i: ; preds = %22, %19 + %.18.i.i = phi i64 [ %20, %19 ], [ %11, %22 ] + %25 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { i8, [23 x i8] } }, ptr %.0.val, i64 %.18.i.i + invoke fastcc void @"_ZN4core3ptr85drop_in_place$LT$$LP$alloc..vec..Vec$LT$u8$GT$$C$nom..error..VerboseErrorKind$RP$$GT$17h095cc7a8d2e1b564E"(ptr noalias noundef align 8 dereferenceable(48) %25) #12 + to label %19 unwind label %26 -26: ; preds = %19 - resume { ptr, i32 } %22 +._crit_edge11.i.i: ; preds = %19, %22 + resume { ptr, i32 } %23 -27: ; preds = %23 - %28 = landingpad { ptr, i32 } +26: ; preds = %.lr.ph10.i.i + %27 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #13 unreachable diff --git a/bench/nori/optimized/common.ll b/bench/nori/optimized/common.ll index a7d814c1a76..8a7f68cccf8 100644 --- a/bench/nori/optimized/common.ll +++ b/bench/nori/optimized/common.ll @@ -2049,22 +2049,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr 28: ; preds = %9 %29 = landingpad { ptr, i32 } cleanup - br label %60 + br label %59 30: ; preds = %12 %31 = landingpad { ptr, i32 } cleanup - br label %59 + br label %58 32: ; preds = %14 %33 = landingpad { ptr, i32 } cleanup - br label %58 + br label %57 34: ; preds = %16 %35 = landingpad { ptr, i32 } cleanup - br label %57 + br label %56 36: ; preds = %.noexc, %18 %37 = landingpad { ptr, i32 } @@ -2074,74 +2074,78 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr .body: ; preds = %21, %36 %eh.lpad-body = phi { ptr, i32 } [ %37, %36 ], [ %22, %21 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #31 - br label %56 + br label %55 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit %39 = landingpad { ptr, i32 } cleanup - br label %55 + br label %54 40: ; preds = %24 %41 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #31 - %42 = and i64 %41, 4294967295 - br label %43 + %42 = trunc i64 %41 to i32 + %43 = icmp sgt i32 %42, 0 + br i1 %43, label %.lr.ph.preheader, label %.critedge -43: ; preds = %51, %40 - %indvars.iv = phi i64 [ %44, %51 ], [ %42, %40 ] - %44 = add nsw i64 %indvars.iv, -1 - %45 = trunc nuw i64 %indvars.iv to i32 - %46 = icmp sgt i32 %45, 0 - br i1 %46, label %47, label %.critedge +.lr.ph.preheader: ; preds = %40 + %44 = and i64 %41, 2147483647 + br label %.lr.ph -47: ; preds = %43 - %48 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %44) - to label %49 unwind label %53 +45: ; preds = %50 + %46 = icmp samesign ugt i64 %indvars.iv, 1 + br i1 %46, label %.lr.ph, label %.critedge, !llvm.loop !29 -49: ; preds = %47 - %50 = load i8, ptr %48, align 1 - %.not20 = icmp eq i8 %50, 10 - br i1 %.not20, label %.critedge, label %51 +.lr.ph: ; preds = %.lr.ph.preheader, %45 + %indvars.iv = phi i64 [ %44, %.lr.ph.preheader ], [ %indvars.iv.next, %45 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %47 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %indvars.iv.next) + to label %48 unwind label %52 -51: ; preds = %49 - %52 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 noundef signext 32) - to label %43 unwind label %53, !llvm.loop !29 +48: ; preds = %.lr.ph + %49 = load i8, ptr %47, align 1 + %.not20 = icmp eq i8 %49, 10 + br i1 %.not20, label %.critedge, label %50 -53: ; preds = %51, %47 - %54 = landingpad { ptr, i32 } +50: ; preds = %48 + %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 noundef signext 32) + to label %45 unwind label %52, !llvm.loop !29 + +52: ; preds = %50, %.lr.ph + %53 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #31 - br label %55 + br label %54 -.critedge: ; preds = %43, %49, %24 +.critedge: ; preds = %48, %45, %40, %24 ret void -55: ; preds = %53, %38 - %.pn = phi { ptr, i32 } [ %54, %53 ], [ %39, %38 ] +54: ; preds = %52, %38 + %.pn = phi { ptr, i32 } [ %53, %52 ], [ %39, %38 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #31 - br label %56 + br label %55 -56: ; preds = %55, %.body - %.pn.pn = phi { ptr, i32 } [ %.pn, %55 ], [ %eh.lpad-body, %.body ] +55: ; preds = %54, %.body + %.pn.pn = phi { ptr, i32 } [ %.pn, %54 ], [ %eh.lpad-body, %.body ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #31 - br label %57 + br label %56 -57: ; preds = %56, %34 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %56 ], [ %35, %34 ] +56: ; preds = %55, %34 + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %55 ], [ %35, %34 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #31 - br label %58 + br label %57 -58: ; preds = %57, %32 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %57 ], [ %33, %32 ] +57: ; preds = %56, %32 + %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %56 ], [ %33, %32 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #31 - br label %59 + br label %58 -59: ; preds = %58, %30 - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %58 ], [ %31, %30 ] +58: ; preds = %57, %30 + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %57 ], [ %31, %30 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #31 - br label %60 + br label %59 -60: ; preds = %59, %28 - %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %59 ], [ %29, %28 ] +59: ; preds = %58, %28 + %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %58 ], [ %29, %28 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #31 resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn } diff --git a/bench/open3d/optimized/contrib.ll b/bench/open3d/optimized/contrib.ll index 12c9fbc322f..ecf357bcec5 100644 --- a/bench/open3d/optimized/contrib.ll +++ b/bench/open3d/optimized/contrib.ll @@ -21161,55 +21161,59 @@ define linkonce_odr hidden void @_ZN8pybind1110make_tupleILNS_19return_value_pol call void @llvm.lifetime.start.p0(ptr nonnull %3) %5 = load ptr, ptr %1, align 8, !tbaa !112 %.not.i.i.i = icmp eq ptr %5, null - br i1 %.not.i.i.i, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit, label %6 + br i1 %.not.i.i.i, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread, label %6 + +_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread: ; preds = %2 + store ptr null, ptr %3, align 8, !alias.scope !785 + br label %.split.us 6: ; preds = %2 %7 = load i32, ptr %5, align 8, !tbaa !111 %8 = add i32 %7, 1 %9 = icmp eq i32 %8, 0 - br i1 %9, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit, label %10 + br i1 %9, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit -10: ; preds = %6 +_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46: ; preds = %6 + store ptr %5, ptr %3, align 8, !alias.scope !785 + br label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split + +_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit: ; preds = %6 store i32 %8, ptr %5, align 8, !tbaa !111 %.sroa.01.0.copyload.pre.i = load ptr, ptr %1, align 8 - br label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit - -_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit: ; preds = %2, %6, %10 - %.sroa.01.0.copyload.i = phi ptr [ null, %2 ], [ %5, %6 ], [ %.sroa.01.0.copyload.pre.i, %10 ] - %.sroa.01.0.copyload.i.fr = freeze ptr %.sroa.01.0.copyload.i - store ptr %.sroa.01.0.copyload.i.fr, ptr %3, align 8, !alias.scope !785 - %.not32 = icmp eq ptr %.sroa.01.0.copyload.i.fr, null - br i1 %.not32, label %.split35.us, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split.preheader, !llvm.loop !788 + store ptr %.sroa.01.0.copyload.pre.i, ptr %3, align 8, !alias.scope !785 + %.not32 = icmp eq ptr %.sroa.01.0.copyload.pre.i, null + br i1 %.not32, label %.split.us, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split, !llvm.loop !788 -_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split.preheader: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit - %11 = invoke ptr @PyTuple_New(i64 noundef 1) - to label %.noexc unwind label %28 - -.noexc: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split.preheader - store ptr %11, ptr %0, align 8 - %.not.i = icmp eq ptr %11, null - br i1 %.not.i, label %12, label %_ZNSt5arrayIN8pybind116objectELm1EED2Ev.exit +.noexc: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split + store ptr %15, ptr %0, align 8 + %.not.i = icmp eq ptr %15, null + br i1 %.not.i, label %10, label %_ZNSt5arrayIN8pybind116objectELm1EED2Ev.exit -12: ; preds = %.noexc +10: ; preds = %.noexc invoke void @_ZN8pybind1113pybind11_failEPKc(ptr noundef nonnull @.str.90) #30 - to label %13 unwind label %14 + to label %11 unwind label %12 -13: ; preds = %12 +11: ; preds = %10 unreachable -14: ; preds = %12 - %15 = landingpad { ptr, i32 } +12: ; preds = %10 + %13 = landingpad { ptr, i32 } cleanup tail call void @_ZN8pybind116objectD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #29 br label %.body -.split35.us: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit +_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit + %14 = phi ptr [ %5, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46 ], [ %.sroa.01.0.copyload.pre.i, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit ] + %15 = invoke ptr @PyTuple_New(i64 noundef 1) + to label %.noexc unwind label %28 + +.split.us: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit %16 = tail call ptr @__cxa_allocate_exception(i64 16) #29 call void @llvm.lifetime.start.p0(ptr nonnull %4) invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, i64 noundef 0) to label %17 unwind label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread -17: ; preds = %.split35.us +17: ; preds = %.split.us invoke void @_ZN8pybind1137cast_error_unable_to_convert_call_argERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.pybind11::cast_error") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %4) to label %18 unwind label %20 @@ -21217,7 +21221,7 @@ _ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_po invoke void @__cxa_throw(ptr %16, ptr nonnull @_ZTIN8pybind1110cast_errorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #30 to label %31 unwind label %20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %.split35.us +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.thread: ; preds = %.split.us %19 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -21248,19 +21252,19 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %20 call void @__cxa_free_exception(ptr %16) #29 br label %.body -28: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split.preheader +28: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split %29 = landingpad { ptr, i32 } cleanup br label %.body _ZNSt5arrayIN8pybind116objectELm1EED2Ev.exit: ; preds = %.noexc - %30 = getelementptr inbounds nuw i8, ptr %11, i64 24 - store ptr %.sroa.01.0.copyload.i.fr, ptr %30, align 8, !tbaa !156 + %30 = getelementptr inbounds nuw i8, ptr %15, i64 24 + store ptr %14, ptr %30, align 8, !tbaa !156 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void -.body: ; preds = %28, %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %27 - %.pn.pn = phi { ptr, i32 } [ %.pn31, %27 ], [ %21, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %29, %28 ], [ %15, %14 ] +.body: ; preds = %28, %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %27 + %.pn.pn = phi { ptr, i32 } [ %.pn31, %27 ], [ %21, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %29, %28 ], [ %13, %12 ] call void @_ZNSt5arrayIN8pybind116objectELm1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #29 call void @llvm.lifetime.end.p0(ptr nonnull %3) resume { ptr, i32 } %.pn.pn diff --git a/bench/opencv/optimized/jp2.ll b/bench/opencv/optimized/jp2.ll index cb39445ee6f..f7a2b30a8ac 100644 --- a/bench/opencv/optimized/jp2.ll +++ b/bench/opencv/optimized/jp2.ll @@ -515,15 +515,19 @@ opj_jp2_free_pclr.exit: ; preds = %131, %142 %159 = zext i8 %151 to i64 %160 = add nuw nsw i64 %159, 65535 %wide.trip.count = and i64 %160, 65535 - br label %.lr.ph + %exitcond.not150 = icmp eq i8 %151, 1 + br i1 %exitcond.not150, label %._crit_edge.i27, label %.lr.ph152, !llvm.loop !58 -.lr.ph: ; preds = %.lr.ph.preheader, %161 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %161 ] - %exitcond.not = icmp eq i64 %indvars.iv, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.i27, label %161, !llvm.loop !58 +.lr.ph152: ; preds = %.lr.ph.preheader + br label %161, !llvm.loop !58 -161: ; preds = %.lr.ph - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 +.lr.ph: ; preds = %161 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond.not, label %.lr.ph.._crit_edge.i27_crit_edge, label %161, !llvm.loop !58 + +161: ; preds = %.lr.ph152, %.lr.ph + %indvars.iv151 = phi i64 [ 0, %.lr.ph152 ], [ %indvars.iv.next, %.lr.ph ] + %indvars.iv.next = add nuw nsw i64 %indvars.iv151, 1 %162 = getelementptr inbounds nuw %struct.opj_jp2_cmap_comp, ptr %130, i64 %indvars.iv.next %163 = load i16, ptr %162, align 2, !tbaa !41 %164 = zext i16 %163 to i64 @@ -542,7 +546,10 @@ opj_jp2_free_pclr.exit: ; preds = %131, %142 %170 = tail call i32 (ptr, i32, ptr, ...) @opj_event_msg(ptr noundef %2, i32 noundef 1, ptr noundef nonnull @.str.21, i32 noundef %.lcssa) #6 br label %opj_jp2_check_color.exit.thread -._crit_edge.i27: ; preds = %.lr.ph +.lr.ph.._crit_edge.i27_crit_edge: ; preds = %.lr.ph + br label %._crit_edge.i27, !llvm.loop !58 + +._crit_edge.i27: ; preds = %.lr.ph.._crit_edge.i27_crit_edge, %.lr.ph.preheader %171 = zext i8 %151 to i64 %172 = shl nuw nsw i64 %171, 6 %173 = tail call ptr @opj_malloc(i64 noundef %172) #6 diff --git a/bench/openjdk/optimized/elfFile.ll b/bench/openjdk/optimized/elfFile.ll index 9da1dce8526..25bdd249745 100644 --- a/bench/openjdk/optimized/elfFile.ll +++ b/bench/openjdk/optimized/elfFile.ll @@ -4227,22 +4227,24 @@ _ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit: ; preds = %4, %13 .lr.ph: ; preds = %_ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit %24 = getelementptr inbounds nuw i8, ptr %0, i64 16 - br label %25 + %25 = icmp eq i32 %1, 1 + br i1 %25, label %._crit_edge, label %.lr.ph42 -25: ; preds = %.lr.ph, %85 - %26 = phi i64 [ %22, %.lr.ph ], [ %89, %85 ] - %.028 = phi i32 [ 1, %.lr.ph ], [ %86, %85 ] - %27 = icmp eq i32 %.028, %1 - br i1 %27, label %28, label %30 +26: ; preds = %85 + %27 = add i32 %.02841, 1 + %28 = icmp eq i32 %27, %1 + br i1 %28, label %._crit_edge, label %.lr.ph42, !llvm.loop !22 -28: ; preds = %25 +._crit_edge: ; preds = %26, %.lr.ph %29 = tail call noundef zeroext i1 @_ZN9DwarfFile17LineNumberProgram13read_filenameEPcm(ptr noundef nonnull align 8 dereferenceable(113) %0, ptr noundef %2, i64 noundef %3) br label %.loopexit -30: ; preds = %25 +.lr.ph42: ; preds = %.lr.ph, %26 + %.02841 = phi i32 [ %27, %26 ], [ 1, %.lr.ph ] + %30 = phi i64 [ %88, %26 ], [ %22, %.lr.ph ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) - %31 = add nsw i64 %26, 1 + %31 = add nsw i64 %30, 1 store i64 %31, ptr %19, align 8 %32 = load ptr, ptr %24, align 8 %33 = call i64 @fread(ptr noundef nonnull %8, i64 noundef 1, i64 noundef 1, ptr noundef %32) @@ -4252,7 +4254,7 @@ _ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit: ; preds = %4, %13 %or.cond.i = select i1 %34, i1 %36, i1 false br i1 %or.cond.i, label %.split.us.i, label %_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread -.split.us.i: ; preds = %30, %46 +.split.us.i: ; preds = %.lr.ph42, %46 %37 = load i64, ptr %18, align 8 %38 = icmp ne i64 %37, -1 %39 = load i64, ptr %19, align 8 @@ -4273,7 +4275,7 @@ _ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit: ; preds = %4, %13 %48 = icmp eq i8 %47, 0 br i1 %48, label %49, label %.split.us.i, !llvm.loop !18 -_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread: ; preds = %30, %.split.us.i, %41 +_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread: ; preds = %.lr.ph42, %.split.us.i, %41 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %.loopexit @@ -4362,16 +4364,15 @@ _ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit15.thread: ; pre 85: ; preds = %80 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %86 = add i32 %.028, 1 - %87 = load i64, ptr %18, align 8 - %88 = icmp ne i64 %87, -1 - %89 = load i64, ptr %19, align 8 - %90 = icmp slt i64 %89, %87 - %.0.i7 = select i1 %88, i1 %90, i1 false - br i1 %.0.i7, label %25, label %.loopexit, !llvm.loop !22 - -.loopexit: ; preds = %85, %_ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit15.thread, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit11.thread, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit.thread, %_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread, %28 - %.06 = phi i1 [ %29, %28 ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit11.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit15.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit ], [ false, %85 ] + %86 = load i64, ptr %18, align 8 + %87 = icmp ne i64 %86, -1 + %88 = load i64, ptr %19, align 8 + %89 = icmp slt i64 %88, %86 + %.0.i7 = select i1 %87, i1 %89, i1 false + br i1 %.0.i7, label %26, label %.loopexit, !llvm.loop !22 + +.loopexit: ; preds = %85, %_ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit15.thread, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit11.thread, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit.thread, %_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread, %._crit_edge + %.06 = phi i1 [ %29, %._crit_edge ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit11.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader19read_uleb128_ignoreEa.exit15.thread ], [ false, %_ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit ], [ false, %85 ] ret i1 %.06 } diff --git a/bench/openjdk/optimized/type.ll b/bench/openjdk/optimized/type.ll index e711a584ba1..c903f73ea62 100644 --- a/bench/openjdk/optimized/type.ll +++ b/bench/openjdk/optimized/type.ll @@ -15331,27 +15331,34 @@ define hidden noundef nonnull ptr @_ZNK14TypeInterfaces17intersection_withEPKS_( .critedge4.us.preheader: ; preds = %.lr.ph.split.us %28 = sext i32 %16 to i64 %29 = add nsw i64 %28, -1 - br label %.critedge4.us + %exitcond.not.not94 = icmp eq i64 %29, %24 + br i1 %exitcond.not.not94, label %.critedge2, label %.lr.ph96, !llvm.loop !28 -30: ; preds = %.critedge4.us - %indvars.iv.next = add nsw i64 %indvars.iv, 1 +.lr.ph96: ; preds = %.critedge4.us.preheader + br label %30, !llvm.loop !28 + +30: ; preds = %.lr.ph96, %.critedge4.us + %indvars.iv95 = phi i64 [ %24, %.lr.ph96 ], [ %indvars.iv.next, %.critedge4.us ] + %indvars.iv.next = add nsw i64 %indvars.iv95, 1 %31 = getelementptr inbounds ptr, ptr %19, i64 %indvars.iv.next %32 = load ptr, ptr %31, align 8 %33 = icmp slt ptr %32, %23 br i1 %33, label %.critedge4.us, label %.critedge2.loopexit.split.loop.exit, !llvm.loop !28 -.critedge4.us: ; preds = %.critedge4.us.preheader, %30 - %indvars.iv = phi i64 [ %24, %.critedge4.us.preheader ], [ %indvars.iv.next, %30 ] - %exitcond.not.not = icmp eq i64 %indvars.iv, %29 - br i1 %exitcond.not.not, label %.critedge2, label %30, !llvm.loop !28 +.critedge4.us: ; preds = %30 + %exitcond.not.not = icmp eq i64 %indvars.iv.next, %29 + br i1 %exitcond.not.not, label %.critedge4.us..critedge2.loopexit_crit_edge, label %30, !llvm.loop !28 .critedge2.loopexit.split.loop.exit: ; preds = %30 %34 = trunc nsw i64 %indvars.iv.next to i32 br label %.critedge2 -.critedge2: ; preds = %.critedge4.us, %.critedge2.loopexit.split.loop.exit, %.lr.ph, %18 - %.1.lcssa = phi i32 [ %.0, %18 ], [ %16, %.lr.ph ], [ %34, %.critedge2.loopexit.split.loop.exit ], [ %16, %.critedge4.us ] - %.lcssa = phi i1 [ false, %18 ], [ false, %.lr.ph ], [ true, %.critedge2.loopexit.split.loop.exit ], [ false, %.critedge4.us ] +.critedge4.us..critedge2.loopexit_crit_edge: ; preds = %.critedge4.us + br label %.critedge2, !llvm.loop !28 + +.critedge2: ; preds = %.critedge4.us.preheader, %.critedge4.us..critedge2.loopexit_crit_edge, %.critedge2.loopexit.split.loop.exit, %.lr.ph, %18 + %.1.lcssa = phi i32 [ %.0, %18 ], [ %16, %.lr.ph ], [ %34, %.critedge2.loopexit.split.loop.exit ], [ %16, %.critedge4.us..critedge2.loopexit_crit_edge ], [ %16, %.critedge4.us.preheader ] + %.lcssa = phi i1 [ false, %18 ], [ false, %.lr.ph ], [ true, %.critedge2.loopexit.split.loop.exit ], [ false, %.critedge4.us..critedge2.loopexit_crit_edge ], [ false, %.critedge4.us.preheader ] %35 = icmp slt i32 %.035, %.pre.pre br i1 %35, label %.lr.ph61, label %.critedge6 diff --git a/bench/openspiel/optimized/infostate_tree.ll b/bench/openspiel/optimized/infostate_tree.ll index 4c7c0ad296e..b58a66287d4 100644 --- a/bench/openspiel/optimized/infostate_tree.ll +++ b/bench/openspiel/optimized/infostate_tree.ll @@ -10513,44 +10513,49 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %7 = ptrtoint ptr %1 to i64 %8 = sub i64 %7, %6 %9 = icmp sgt i64 %8, 512 - br i1 %9, label %.lr.ph, label %.loopexit + br i1 %9, label %.lr.ph.preheader, label %.loopexit -.lr.ph: ; preds = %3, %16 - %.014 = phi i64 [ %17, %16 ], [ %2, %3 ] - %storemerge13 = phi ptr [ %18, %16 ], [ %1, %3 ] - %10 = icmp eq i64 %.014, 0 - br i1 %10, label %11, label %16 +.lr.ph.preheader: ; preds = %3 + %10 = icmp eq i64 %2, 0 + br i1 %10, label %.lr.ph._crit_edge, label %.lr.ph20 -11: ; preds = %.lr.ph +.lr.ph: ; preds = %.lr.ph20 + %11 = icmp eq i64 %16, 0 + br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph20, !llvm.loop !87 + +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader + %storemerge13.lcssa = phi ptr [ %1, %.lr.ph.preheader ], [ %17, %.lr.ph ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_RT0_(ptr %0, ptr %storemerge13, ptr noundef nonnull align 1 dereferenceable(1) %4) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_RT0_(ptr %0, ptr %storemerge13.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.lr.ph.i8.i -.lr.ph.i8.i: ; preds = %11, %.lr.ph.i8.i - %.sroa.0.05.i.i = phi ptr [ %12, %.lr.ph.i8.i ], [ %storemerge13, %11 ] +.lr.ph.i8.i: ; preds = %.lr.ph._crit_edge, %.lr.ph.i8.i + %.sroa.0.05.i.i = phi ptr [ %12, %.lr.ph.i8.i ], [ %storemerge13.lcssa, %.lr.ph._crit_edge ] %12 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -32 call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_RT0_(ptr %0, ptr nonnull %12, ptr nonnull %12, ptr noundef nonnull align 1 dereferenceable(1) %5) %13 = ptrtoint ptr %12 to i64 %14 = sub i64 %13, %6 %15 = icmp sgt i64 %14, 32 - br i1 %15, label %.lr.ph.i8.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit, !llvm.loop !87 + br i1 %15, label %.lr.ph.i8.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit, !llvm.loop !88 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit: ; preds = %.lr.ph.i8.i call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -16: ; preds = %.lr.ph - %17 = add nsw i64 %.014, -1 - %18 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEET_SF_SF_T0_(ptr %0, ptr %storemerge13) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEElNS0_5__ops15_Iter_less_iterEEvT_SF_T0_T1_(ptr %18, ptr %storemerge13, i64 noundef %17) - %19 = ptrtoint ptr %18 to i64 - %20 = sub i64 %19, %6 - %21 = icmp sgt i64 %20, 512 - br i1 %21, label %.lr.ph, label %.loopexit, !llvm.loop !88 +.lr.ph20: ; preds = %.lr.ph.preheader, %.lr.ph + %storemerge1319 = phi ptr [ %17, %.lr.ph ], [ %1, %.lr.ph.preheader ] + %.01418 = phi i64 [ %16, %.lr.ph ], [ %2, %.lr.ph.preheader ] + %16 = add nsw i64 %.01418, -1 + %17 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEET_SF_SF_T0_(ptr %0, ptr %storemerge1319) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEElNS0_5__ops15_Iter_less_iterEEvT_SF_T0_T1_(ptr %17, ptr %storemerge1319, i64 noundef %16) + %18 = ptrtoint ptr %17 to i64 + %19 = sub i64 %18, %6 + %20 = icmp sgt i64 %19, 512 + br i1 %20, label %.lr.ph, label %.loopexit, !llvm.loop !87 -.loopexit: ; preds = %16, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit +.loopexit: ; preds = %.lr.ph20, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit ret void } diff --git a/bench/openssl/optimized/rsa_kem.ll b/bench/openssl/optimized/rsa_kem.ll index 012407386c3..f6bab9938a0 100644 --- a/bench/openssl/optimized/rsa_kem.ll +++ b/bench/openssl/optimized/rsa_kem.ll @@ -354,20 +354,20 @@ ossl_param_is_empty.exit: ; preds = %4 %13 = getelementptr inbounds nuw i8, ptr %8, i64 16 %14 = load ptr, ptr %13, align 8, !tbaa !23 %15 = icmp eq ptr %14, null - br i1 %15, label %ossl_param_is_empty.exit.thread, label %.preheader.i.i + br i1 %15, label %ossl_param_is_empty.exit.thread, label %rsakem_opname2id.exit -.preheader.i.i: ; preds = %12 +rsakem_opname2id.exit: ; preds = %12 %16 = tail call i32 @OPENSSL_strcasecmp(ptr noundef nonnull @.str.4, ptr noundef nonnull %14) #5 - %17 = icmp eq i32 %16, 0 - br i1 %17, label %rsakem_opname2id.exit, label %ossl_param_is_empty.exit.thread, !llvm.loop !24 + %.not17 = icmp eq i32 %16, 0 + br i1 %.not17, label %17, label %ossl_param_is_empty.exit.thread -rsakem_opname2id.exit: ; preds = %.preheader.i.i +17: ; preds = %rsakem_opname2id.exit %18 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 0, ptr %18, align 8, !tbaa !11 br label %ossl_param_is_empty.exit.thread -ossl_param_is_empty.exit.thread: ; preds = %.preheader.i.i, %12, %4, %7, %rsakem_opname2id.exit, %9, %ossl_param_is_empty.exit, %2 - %.0 = phi i32 [ 0, %2 ], [ 1, %ossl_param_is_empty.exit ], [ 0, %9 ], [ 1, %rsakem_opname2id.exit ], [ 1, %7 ], [ 1, %4 ], [ 0, %12 ], [ 0, %.preheader.i.i ] +ossl_param_is_empty.exit.thread: ; preds = %12, %4, %7, %17, %rsakem_opname2id.exit, %9, %ossl_param_is_empty.exit, %2 + %.0 = phi i32 [ 0, %2 ], [ 1, %ossl_param_is_empty.exit ], [ 0, %9 ], [ 0, %rsakem_opname2id.exit ], [ 1, %17 ], [ 1, %7 ], [ 1, %4 ], [ 0, %12 ] ret i32 %.0 } @@ -435,20 +435,20 @@ ossl_param_is_empty.exit.i: ; preds = %14 %25 = getelementptr inbounds nuw i8, ptr %20, i64 16 %26 = load ptr, ptr %25, align 8, !tbaa !23 %27 = icmp eq ptr %26, null - br i1 %27, label %rsakem_set_ctx_params.exit, label %.preheader.i.i.i + br i1 %27, label %rsakem_set_ctx_params.exit, label %rsakem_opname2id.exit.i -.preheader.i.i.i: ; preds = %24 +rsakem_opname2id.exit.i: ; preds = %24 %28 = call i32 @OPENSSL_strcasecmp(ptr noundef nonnull @.str.4, ptr noundef nonnull %26) #5 - %29 = icmp eq i32 %28, 0 - br i1 %29, label %rsakem_opname2id.exit.i, label %rsakem_set_ctx_params.exit, !llvm.loop !24 + %.not17.i = icmp eq i32 %28, 0 + br i1 %.not17.i, label %29, label %rsakem_set_ctx_params.exit -rsakem_opname2id.exit.i: ; preds = %.preheader.i.i.i +29: ; preds = %rsakem_opname2id.exit.i %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 0, ptr %30, align 8, !tbaa !11 br label %rsakem_set_ctx_params.exit -rsakem_set_ctx_params.exit: ; preds = %.preheader.i.i.i, %14, %19, %rsakem_opname2id.exit.i, %ossl_param_is_empty.exit.i, %24, %21, %12, %10, %7, %4 - %.0 = phi i32 [ 0, %4 ], [ 0, %7 ], [ 0, %10 ], [ 0, %12 ], [ 0, %24 ], [ 0, %21 ], [ 1, %ossl_param_is_empty.exit.i ], [ 1, %rsakem_opname2id.exit.i ], [ 1, %19 ], [ 1, %14 ], [ 0, %.preheader.i.i.i ] +rsakem_set_ctx_params.exit: ; preds = %14, %19, %29, %ossl_param_is_empty.exit.i, %rsakem_opname2id.exit.i, %24, %21, %12, %10, %7, %4 + %.0 = phi i32 [ 0, %4 ], [ 0, %7 ], [ 0, %10 ], [ 0, %12 ], [ 0, %rsakem_opname2id.exit.i ], [ 0, %24 ], [ 0, %21 ], [ 1, %ossl_param_is_empty.exit.i ], [ 1, %29 ], [ 1, %19 ], [ 1, %14 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 } @@ -545,5 +545,3 @@ attributes #5 = { nounwind } !21 = !{!"p1 omnipotent char", !6, i64 0} !22 = !{!20, !10, i64 8} !23 = !{!20, !6, i64 16} -!24 = distinct !{!24, !25} -!25 = !{!"llvm.loop.mustprogress"} diff --git a/bench/openusd/optimized/avif.ll b/bench/openusd/optimized/avif.ll index a1282ba527d..f184ef2c848 100644 --- a/bench/openusd/optimized/avif.ll +++ b/bench/openusd/optimized/avif.ll @@ -2588,11 +2588,10 @@ findAvailableCodec.exit.thread: ret i32 %.0 } -; Function Attrs: nofree norecurse nounwind memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nounwind willreturn memory(read, inaccessiblemem: none) uwtable define hidden i32 @avifCodecChoiceFromName(ptr noundef readonly captures(none) %0) local_unnamed_addr #12 { -.critedge: - %1 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(4) @.str.64, ptr noundef nonnull dereferenceable(1) %0) #15 - %.not = icmp eq i32 %1, 0 + %2 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(4) @.str.64, ptr noundef nonnull dereferenceable(1) %0) #15 + %.not = icmp eq i32 %2, 0 %.05 = zext i1 %.not to i32 ret i32 %.05 } @@ -2659,7 +2658,7 @@ attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memor attributes #9 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { 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" } attributes #11 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nofree norecurse nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #12 = { mustprogress nofree norecurse nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #14 = { nounwind } attributes #15 = { nounwind willreturn memory(read) } diff --git a/bench/pbrt-v4/optimized/stbimage.ll b/bench/pbrt-v4/optimized/stbimage.ll index 1b1402d49c6..fea1912803e 100644 --- a/bench/pbrt-v4/optimized/stbimage.ll +++ b/bench/pbrt-v4/optimized/stbimage.ll @@ -17281,27 +17281,40 @@ define internal fastcc void @_ZL18stbi__out_gif_codeP9stbi__gift(ptr noundef non %61 = getelementptr inbounds nuw i8, ptr %0, i64 34916 %62 = getelementptr inbounds nuw i8, ptr %0, i64 34896 %.promoted46 = load i32, ptr %59, align 8, !tbaa !292 - br label %63 + %63 = icmp sgt i32 %.promoted46, 0 + br i1 %63, label %.lr.ph50.preheader, label %.critedge + +.lr.ph50.preheader: ; preds = %.lr.ph + %64 = load i32, ptr %61, align 4, !tbaa !284 + %65 = load i32, ptr %62, align 8, !tbaa !286 + br label %.lr.ph50 + +66: ; preds = %.lr.ph50 + %67 = icmp sgt i32 %68, 1 + br i1 %67, label %.lr.ph50, label %.critedge.loopexit, !llvm.loop !310 + +.lr.ph50: ; preds = %.lr.ph50.preheader, %66 + %68 = phi i32 [ %72, %66 ], [ %.promoted46, %.lr.ph50.preheader ] + %69 = shl i32 %64, %68 + %70 = ashr i32 %69, 1 + %71 = add nsw i32 %65, %70 + %72 = add nsw i32 %68, -1 + %.not43 = icmp slt i32 %71, %60 + br i1 %.not43, label %..critedge.loopexit_crit_edge, label %66, !llvm.loop !310 -63: ; preds = %.lr.ph, %66 - %64 = phi i32 [ %.promoted46, %.lr.ph ], [ %72, %66 ] - %65 = icmp sgt i32 %64, 0 - br i1 %65, label %66, label %.critedge - -66: ; preds = %63 - %67 = load i32, ptr %61, align 4, !tbaa !284 - %68 = shl i32 %67, %64 - store i32 %68, ptr %55, align 4, !tbaa !291 - %69 = load i32, ptr %62, align 8, !tbaa !286 - %70 = ashr i32 %68, 1 - %71 = add nsw i32 %69, %70 +..critedge.loopexit_crit_edge: ; preds = %.lr.ph50 + store i32 %69, ptr %55, align 4, !tbaa !291 store i32 %71, ptr %10, align 8, !tbaa !309 - %72 = add nsw i32 %64, -1 store i32 %72, ptr %59, align 8, !tbaa !292 - %.not43 = icmp slt i32 %71, %60 - br i1 %.not43, label %.critedge, label %63, !llvm.loop !310 + br label %.critedge, !llvm.loop !310 + +.critedge.loopexit: ; preds = %66 + store i32 %69, ptr %55, align 4, !tbaa !291 + store i32 %71, ptr %10, align 8, !tbaa !309 + store i32 %72, ptr %59, align 8, !tbaa !292 + br label %.critedge -.critedge: ; preds = %63, %66, %52, %47, %9 +.critedge: ; preds = %.critedge.loopexit, %.lr.ph, %..critedge.loopexit_crit_edge, %52, %47, %9 ret void } diff --git a/bench/php/optimized/parse_tz.ll b/bench/php/optimized/parse_tz.ll index 6bef41d4bbc..9f02e313ca2 100644 --- a/bench/php/optimized/parse_tz.ll +++ b/bench/php/optimized/parse_tz.ll @@ -2280,12 +2280,12 @@ define hidden ptr @timelib_get_time_zone_info(i64 noundef %0, ptr noundef %1) lo br label %20 20: ; preds = %17, %6 - %.sink29 = phi i32 [ 0, %17 ], [ %15, %6 ] + %.sink31 = phi i32 [ 0, %17 ], [ %15, %6 ] %.sink = phi i64 [ 0, %17 ], [ %16, %6 ] %.021 = phi ptr [ %19, %17 ], [ %13, %6 ] %.0 = phi i32 [ 0, %17 ], [ %7, %6 ] %21 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i32 %.sink29, ptr %21, align 8, !tbaa !84 + store i32 %.sink31, ptr %21, align 8, !tbaa !84 %22 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 %.sink, ptr %22, align 8, !tbaa !86 %23 = getelementptr inbounds nuw i8, ptr %1, i64 48 @@ -2296,39 +2296,42 @@ define hidden ptr @timelib_get_time_zone_info(i64 noundef %0, ptr noundef %1) lo 25: ; preds = %20 %26 = getelementptr inbounds nuw i8, ptr %1, i64 112 %27 = load ptr, ptr %26, align 8, !tbaa !58 - %.not12.i = icmp eq ptr %27, null - br i1 %.not12.i, label %fetch_leaptime_offset.exit.thread, label %.preheader - -.preheader: ; preds = %25, %29 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %29 ], [ %24, %25 ] - %indvars.iv.next.i = add i64 %indvars.iv.i, -1 - %indvars.i = trunc i64 %indvars.iv.next.i to i32 - %28 = icmp sgt i32 %indvars.i, 0 - br i1 %28, label %29, label %fetch_leaptime_offset.exit.thread - -29: ; preds = %.preheader - %30 = and i64 %indvars.iv.next.i, 2147483647 - %31 = getelementptr inbounds nuw %struct._tlinfo, ptr %27, i64 %30 - %32 = load i64, ptr %31, align 8, !tbaa !59 - %33 = icmp sgt i64 %0, %32 - br i1 %33, label %fetch_leaptime_offset.exit, label %.preheader - -fetch_leaptime_offset.exit: ; preds = %29 - %34 = getelementptr inbounds nuw i8, ptr %31, i64 8 - %35 = load i32, ptr %34, align 8, !tbaa !61 - %36 = sub i32 0, %35 + %.not12.i = icmp ne ptr %27, null + %28 = trunc i64 %24 to i32 + %.013.i = add i32 %28, -1 + %29 = icmp sgt i32 %.013.i, 0 + %or.cond.i = and i1 %29, %.not12.i + br i1 %or.cond.i, label %.lr.ph.i, label %fetch_leaptime_offset.exit.thread + +30: ; preds = %.lr.ph.i + %.0.i = add nsw i32 %.014.i, -1 + %31 = icmp sgt i32 %.014.i, 1 + br i1 %31, label %.lr.ph.i, label %fetch_leaptime_offset.exit.thread + +.lr.ph.i: ; preds = %25, %30 + %.014.i = phi i32 [ %.0.i, %30 ], [ %.013.i, %25 ] + %32 = zext nneg i32 %.014.i to i64 + %33 = getelementptr inbounds nuw %struct._tlinfo, ptr %27, i64 %32 + %34 = load i64, ptr %33, align 8, !tbaa !59 + %35 = icmp sgt i64 %0, %34 + br i1 %35, label %fetch_leaptime_offset.exit, label %30 + +fetch_leaptime_offset.exit: ; preds = %.lr.ph.i + %36 = getelementptr inbounds nuw i8, ptr %33, i64 8 + %37 = load i32, ptr %36, align 8, !tbaa !61 + %38 = sub i32 0, %37 br label %fetch_leaptime_offset.exit.thread -fetch_leaptime_offset.exit.thread: ; preds = %.preheader, %20, %25, %fetch_leaptime_offset.exit - %.022 = phi i32 [ %36, %fetch_leaptime_offset.exit ], [ 0, %25 ], [ 0, %20 ], [ 0, %.preheader ] +fetch_leaptime_offset.exit.thread: ; preds = %30, %20, %25, %fetch_leaptime_offset.exit + %.022 = phi i32 [ %38, %fetch_leaptime_offset.exit ], [ 0, %25 ], [ 0, %20 ], [ 0, %30 ] store i32 %.0, ptr %4, align 8, !tbaa !87 - %37 = getelementptr inbounds nuw i8, ptr %4, i64 4 - store i32 %.022, ptr %37, align 4, !tbaa !88 + %39 = getelementptr inbounds nuw i8, ptr %4, i64 4 + store i32 %.022, ptr %39, align 4, !tbaa !88 %.not26 = icmp eq ptr %.021, null %.str.493..021 = select i1 %.not26, ptr @.str.493, ptr %.021 - %38 = call noalias ptr @_estrdup(ptr noundef nonnull %.str.493..021) #17 - %39 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr %38, ptr %39, align 8, !tbaa !89 + %40 = call noalias ptr @_estrdup(ptr noundef nonnull %.str.493..021) #17 + %41 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr %40, ptr %41, align 8, !tbaa !89 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret ptr %4 } diff --git a/bench/php/optimized/plain_wrapper.ll b/bench/php/optimized/plain_wrapper.ll index 8313640b01e..2bd66af690b 100644 --- a/bench/php/optimized/plain_wrapper.ll +++ b/bench/php/optimized/plain_wrapper.ll @@ -1672,75 +1672,77 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 %41 = getelementptr inbounds nuw i8, ptr %39, i64 24 %42 = getelementptr inbounds nuw i8, ptr %39, i64 16 %43 = load i64, ptr %42, align 8, !tbaa !31 - br label %44 - -44: ; preds = %46, %40 - %.0144 = phi i64 [ %43, %40 ], [ %45, %46 ] - %45 = add i64 %.0144, -1 - %.not165 = icmp eq i64 %.0144, 0 - br i1 %.not165, label %.critedge.thread, label %46 - -46: ; preds = %44 - %47 = getelementptr inbounds nuw i8, ptr %41, i64 %45 - %48 = load i8, ptr %47, align 1, !tbaa !4 - %.not166 = icmp eq i8 %48, 47 + %.not165182 = icmp eq i64 %43, 0 + br i1 %.not165182, label %.critedge.thread, label %.lr.ph + +44: ; preds = %.lr.ph + br i1 %48, label %.critedge.thread, label %.lr.ph + +.lr.ph: ; preds = %40, %44 + %.0144183 = phi i64 [ %45, %44 ], [ %43, %40 ] + %45 = add i64 %.0144183, -1 + %46 = getelementptr inbounds nuw i8, ptr %41, i64 %45 + %47 = load i8, ptr %46, align 1, !tbaa !4 + %.not166 = icmp eq i8 %47, 47 + %48 = icmp eq i64 %45, 0 br i1 %.not166, label %.critedge, label %44 -.critedge: ; preds = %46 - %49 = icmp eq i64 %45, 0 - br i1 %49, label %57, label %.critedge.thread +.critedge: ; preds = %.lr.ph + br i1 %48, label %57, label %.critedge.thread -.critedge.thread: ; preds = %44, %.critedge +.critedge.thread: ; preds = %44, %40, %.critedge + %.0144181 = phi i64 [ %.0144183, %.critedge ], [ 0, %40 ], [ 0, %44 ] + %49 = phi i64 [ %45, %.critedge ], [ -1, %40 ], [ -1, %44 ] %50 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16 - %51 = add i64 %50, %.0144 + %51 = add i64 %50, %.0144181 %52 = add i64 %51, 1 %53 = tail call noalias ptr @_emalloc(i64 noundef %52) #18 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %53, ptr nonnull align 1 %2, i64 %50, i1 false) %54 = getelementptr inbounds nuw i8, ptr %53, i64 %50 store i8 58, ptr %54, align 1, !tbaa !4 %55 = getelementptr inbounds nuw i8, ptr %54, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 1 dereferenceable(1) %41, i64 %45, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 1 dereferenceable(1) %41, i64 %49, i1 false) %56 = getelementptr inbounds nuw i8, ptr %53, i64 %51 store i8 0, ptr %56, align 1, !tbaa !4 - br label %.lr.ph + br label %.lr.ph187 57: ; preds = %36, %38, %.critedge %58 = tail call noalias ptr @_estrdup(ptr noundef nonnull %2) #17 - %.not167182 = icmp eq ptr %58, null - br i1 %.not167182, label %.critedge2, label %.lr.ph + %.not167185 = icmp eq ptr %58, null + br i1 %.not167185, label %.critedge2, label %.lr.ph187 -.lr.ph: ; preds = %.critedge.thread, %57 - %.1205 = phi ptr [ %53, %.critedge.thread ], [ %58, %57 ] +.lr.ph187: ; preds = %.critedge.thread, %57 + %.1211 = phi ptr [ %53, %.critedge.thread ], [ %58, %57 ] %59 = and i32 %4, 1024 %60 = icmp eq i32 %59, 0 - br i1 %60, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %60, label %.lr.ph187.split.us, label %.lr.ph187.split -.lr.ph.split.us: ; preds = %.lr.ph, %74 - %.1148183.us = phi ptr [ %.0146177.us, %74 ], [ %.1205, %.lr.ph ] - %61 = load i8, ptr %.1148183.us, align 1, !tbaa !4 +.lr.ph187.split.us: ; preds = %.lr.ph187, %74 + %.1148186.us = phi ptr [ %.0146177.us, %74 ], [ %.1211, %.lr.ph187 ] + %61 = load i8, ptr %.1148186.us, align 1, !tbaa !4 %.not168.us = icmp eq i8 %61, 0 br i1 %.not168.us, label %.critedge2, label %62 -62: ; preds = %.lr.ph.split.us - %63 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148183.us, i32 noundef 58) #16 +62: ; preds = %.lr.ph187.split.us + %63 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148186.us, i32 noundef 58) #16 %.not169.us = icmp eq ptr %63, null br i1 %.not169.us, label %.thread174.us, label %64 64: ; preds = %62 store i8 0, ptr %63, align 1, !tbaa !4 %65 = getelementptr inbounds nuw i8, ptr %63, i64 1 - %.pr.us = load i8, ptr %.1148183.us, align 1, !tbaa !4 + %.pr.us = load i8, ptr %.1148186.us, align 1, !tbaa !4 %66 = icmp eq i8 %.pr.us, 0 br i1 %66, label %74, label %.thread174.us .thread174.us: ; preds = %64, %62 %.0146176.us = phi ptr [ %65, %64 ], [ null, %62 ] - %67 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148183.us, ptr noundef nonnull %0) #17 + %67 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148186.us, ptr noundef nonnull %0) #17 %68 = icmp sgt i32 %67, 4095 br i1 %68, label %69, label %70 69: ; preds = %.thread174.us - call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148183.us, ptr noundef nonnull %0, i32 noundef 4096) #17 + call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148186.us, ptr noundef nonnull %0, i32 noundef 4096) #17 br label %70 70: ; preds = %69, %.thread174.us @@ -1756,34 +1758,34 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 74: ; preds = %72, %70, %64 %.0146177.us = phi ptr [ %.0146176.us, %72 ], [ %.0146176.us, %70 ], [ %65, %64 ] %.not167.us = icmp eq ptr %.0146177.us, null - br i1 %.not167.us, label %.critedge2, label %.lr.ph.split.us + br i1 %.not167.us, label %.critedge2, label %.lr.ph187.split.us -.lr.ph.split: ; preds = %.lr.ph, %86 - %.1148183 = phi ptr [ %.0146177, %86 ], [ %.1205, %.lr.ph ] - %75 = load i8, ptr %.1148183, align 1, !tbaa !4 +.lr.ph187.split: ; preds = %.lr.ph187, %86 + %.1148186 = phi ptr [ %.0146177, %86 ], [ %.1211, %.lr.ph187 ] + %75 = load i8, ptr %.1148186, align 1, !tbaa !4 %.not168 = icmp eq i8 %75, 0 br i1 %.not168, label %.critedge2, label %76 -76: ; preds = %.lr.ph.split - %77 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148183, i32 noundef 58) #16 +76: ; preds = %.lr.ph187.split + %77 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148186, i32 noundef 58) #16 %.not169 = icmp eq ptr %77, null br i1 %.not169, label %.thread174, label %78 78: ; preds = %76 store i8 0, ptr %77, align 1, !tbaa !4 %79 = getelementptr inbounds nuw i8, ptr %77, i64 1 - %.pr = load i8, ptr %.1148183, align 1, !tbaa !4 + %.pr = load i8, ptr %.1148186, align 1, !tbaa !4 %80 = icmp eq i8 %.pr, 0 br i1 %80, label %86, label %.thread174 .thread174: ; preds = %76, %78 %.0146176 = phi ptr [ %79, %78 ], [ null, %76 ] - %81 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148183, ptr noundef nonnull %0) #17 + %81 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148186, ptr noundef nonnull %0) #17 %82 = icmp sgt i32 %81, 4095 br i1 %82, label %83, label %84 83: ; preds = %.thread174 - call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148183, ptr noundef nonnull %0, i32 noundef 4096) #17 + call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148186, ptr noundef nonnull %0, i32 noundef 4096) #17 br label %84 84: ; preds = %83, %.thread174 @@ -1793,17 +1795,17 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 .split.us: ; preds = %84, %72 %.us-phi = phi ptr [ %73, %72 ], [ %85, %84 ] - call void @_efree(ptr noundef nonnull %.1205) #17 + call void @_efree(ptr noundef nonnull %.1211) #17 br label %87 86: ; preds = %84, %78 %.0146177 = phi ptr [ %.0146176, %84 ], [ %79, %78 ] %.not167 = icmp eq ptr %.0146177, null - br i1 %.not167, label %.critedge2, label %.lr.ph.split + br i1 %.not167, label %.critedge2, label %.lr.ph187.split -.critedge2: ; preds = %.lr.ph.split, %86, %.lr.ph.split.us, %74, %57 - %.1206 = phi ptr [ null, %57 ], [ %.1205, %74 ], [ %.1205, %.lr.ph.split.us ], [ %.1205, %86 ], [ %.1205, %.lr.ph.split ] - call void @_efree(ptr noundef %.1206) #17 +.critedge2: ; preds = %.lr.ph187.split, %86, %.lr.ph187.split.us, %74, %57 + %.1212 = phi ptr [ null, %57 ], [ %.1211, %74 ], [ %.1211, %.lr.ph187.split.us ], [ %.1211, %86 ], [ %.1211, %.lr.ph187.split ] + call void @_efree(ptr noundef %.1212) #17 br label %87 87: ; preds = %28, %21, %8, %.critedge2, %.split.us, %34, %30, %23 diff --git a/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll b/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll index 93c488a3f8c..f8d528aa1e5 100644 --- a/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll +++ b/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll @@ -6797,27 +6797,29 @@ define internal noundef zeroext i1 @_ZN5bytes5bytes16static_is_unique17h27d008ef ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: read, inaccessiblemem: write) uwtable define hidden { i64, ptr } @_ZN5tokio2io11async_write10AsyncWrite19poll_write_vectored17h03e14a812d5dccd6E(ptr noalias noundef nonnull readnone align 1 captures(none) %0, ptr noalias noundef readnone align 8 captures(none) dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 8 captures(address) %2, i64 noundef %3) unnamed_addr #6 personality ptr @rust_eh_personality { - %5 = getelementptr inbounds nuw { { { ptr, i64 }, {} } }, ptr %2, i64 %3 - br label %6 - -6: ; preds = %9, %4 - %7 = phi ptr [ %10, %9 ], [ %2, %4 ] - %8 = icmp eq ptr %7, %5 - br i1 %8, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit", label %9 - -9: ; preds = %6 - %10 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %11 = getelementptr i8, ptr %7, i64 8 + %.idx = shl nuw nsw i64 %3, 4 + %5 = getelementptr inbounds nuw i8, ptr %2, i64 %.idx + %6 = icmp eq i64 %3, 0 + br i1 %6, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit", label %.lr.ph + +7: ; preds = %.lr.ph + %8 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %9 = icmp eq ptr %8, %5 + br i1 %9, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit", label %.lr.ph + +.lr.ph: ; preds = %4, %7 + %10 = phi ptr [ %8, %7 ], [ %2, %4 ] + %11 = getelementptr i8, ptr %10, i64 8 %12 = load i64, ptr %11, align 8, !noalias !448, !noundef !8 %.not.i = icmp eq i64 %12, 0 - br i1 %.not.i, label %6, label %13 + br i1 %.not.i, label %7, label %13 -13: ; preds = %9 +13: ; preds = %.lr.ph %14 = inttoptr i64 %12 to ptr br label %"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit" -"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit": ; preds = %6, %13 - %.sroa.3.0.i = phi ptr [ %14, %13 ], [ null, %6 ] +"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit": ; preds = %7, %4, %13 + %.sroa.3.0.i = phi ptr [ %14, %13 ], [ null, %4 ], [ null, %7 ] %15 = insertvalue { i64, ptr } { i64 0, ptr poison }, ptr %.sroa.3.0.i, 1 ret { i64, ptr } %15 } diff --git a/bench/pocketpy/optimized/expr.ll b/bench/pocketpy/optimized/expr.ll index 1cf4f0ae990..a8f52309afa 100644 --- a/bench/pocketpy/optimized/expr.ll +++ b/bench/pocketpy/optimized/expr.ll @@ -3997,8 +3997,8 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE br i1 %34, label %._crit_edge.thread, label %68 ._crit_edge.thread: ; preds = %2, %._crit_edge - %.lcssa51 = phi i32 [ %33, %._crit_edge ], [ %11, %2 ] - %.lcssa2750 = phi i64 [ %32, %._crit_edge ], [ %10, %2 ] + %.lcssa57 = phi i32 [ %33, %._crit_edge ], [ %11, %2 ] + %.lcssa2756 = phi i64 [ %32, %._crit_edge ], [ %10, %2 ] %35 = getelementptr inbounds nuw i8, ptr %1, i64 24 %36 = load ptr, ptr %35, align 8 %37 = getelementptr inbounds nuw i8, ptr %36, i64 56 @@ -4014,7 +4014,7 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE %42 = getelementptr inbounds i8, ptr %38, i64 -2 %43 = load i16, ptr %42, align 2 %44 = zext i16 %43 to i32 - %45 = icmp eq i32 %.lcssa51, %44 + %45 = icmp eq i32 %.lcssa57, %44 br i1 %45, label %46, label %.thread 46: ; preds = %41 @@ -4045,7 +4045,7 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE br label %77 .thread: ; preds = %._crit_edge.thread, %41 - %64 = trunc i64 %.lcssa2750 to i16 + %64 = trunc i64 %.lcssa2756 to i16 %65 = getelementptr inbounds nuw i8, ptr %0, i64 8 %66 = load i32, ptr %65, align 8 %67 = tail call noundef i32 @_ZN4pkpy15CodeEmitContext5emit_ENS_6OpcodeEtib(ptr noundef nonnull align 8 dereferenceable(232) %1, i8 noundef zeroext 100, i16 noundef zeroext %64, i32 noundef %66, i1 noundef zeroext false) @@ -4072,29 +4072,36 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE %80 = ptrtoint ptr %78 to i64 %81 = ptrtoint ptr %79 to i64 %82 = sub i64 %80, %81 - %83 = lshr i64 %82, 3 - %84 = and i64 %83, 4294967295 - br label %85 + %83 = lshr exact i64 %82, 3 + %84 = trunc i64 %83 to i32 + %85 = icmp sgt i32 %84, 0 + br i1 %85, label %.lr.ph40.preheader, label %.loopexit + +.lr.ph40.preheader: ; preds = %77 + %86 = and i64 %83, 2147483647 + br label %.lr.ph40 + +87: ; preds = %.lr.ph40 + %88 = icmp samesign ugt i64 %indvars.iv48, 1 + br i1 %88, label %.lr.ph40, label %.loopexit, !llvm.loop !32 + +.lr.ph40: ; preds = %.lr.ph40.preheader, %87 + %indvars.iv48 = phi i64 [ %86, %.lr.ph40.preheader ], [ %indvars.iv.next49, %87 ] + %indvars.iv.next49 = add nsw i64 %indvars.iv48, -1 + %89 = load ptr, ptr %4, align 8 + %90 = getelementptr inbounds nuw %"class.pkpy::unique_ptr_128", ptr %89, i64 %indvars.iv.next49 + %91 = load ptr, ptr %90, align 8 + %92 = load ptr, ptr %91, align 8 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 88 + %94 = load ptr, ptr %93, align 8 + %95 = tail call noundef zeroext i1 %94(ptr noundef nonnull align 8 dereferenceable(12) %91, ptr noundef %1) + br i1 %95, label %87, label %..loopexit_crit_edge, !llvm.loop !32 -85: ; preds = %88, %77 - %indvars.iv42 = phi i64 [ %89, %88 ], [ %84, %77 ] - %86 = trunc nuw i64 %indvars.iv42 to i32 - %87 = icmp slt i32 %86, 1 - br i1 %87, label %.loopexit, label %88 +..loopexit_crit_edge: ; preds = %.lr.ph40 + br label %.loopexit, !llvm.loop !32 -88: ; preds = %85 - %89 = add nsw i64 %indvars.iv42, -1 - %90 = load ptr, ptr %4, align 8 - %91 = getelementptr inbounds nuw %"class.pkpy::unique_ptr_128", ptr %90, i64 %89 - %92 = load ptr, ptr %91, align 8 - %93 = load ptr, ptr %92, align 8 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 88 - %95 = load ptr, ptr %94, align 8 - %96 = tail call noundef zeroext i1 %95(ptr noundef nonnull align 8 dereferenceable(12) %92, ptr noundef %1) - br i1 %96, label %85, label %.loopexit, !llvm.loop !32 - -.loopexit: ; preds = %21, %85, %88, %68 - %.0 = phi i1 [ false, %68 ], [ %87, %88 ], [ %87, %85 ], [ false, %21 ] +.loopexit: ; preds = %21, %87, %77, %..loopexit_crit_edge, %68 + %.0 = phi i1 [ false, %68 ], [ false, %..loopexit_crit_edge ], [ true, %77 ], [ true, %87 ], [ false, %21 ] ret i1 %.0 } diff --git a/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll b/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll index 661afe03912..dc467b203d9 100644 --- a/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll +++ b/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll @@ -75544,39 +75544,47 @@ define hidden void @"_ZN93_$LT$slotmap..basic..Drain$LT$K$C$V$GT$$u20$as$u20$cor tail call void @llvm.assume(i1 %6) %7 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.promoted = load i64, ptr %7, align 8 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 8 - br label %9 + %8 = icmp ult i64 %.promoted, %5 + br i1 %8, label %.lr.ph, label %12 -9: ; preds = %13, %2 - %10 = phi i64 [ %14, %13 ], [ %.promoted, %2 ] - %11 = icmp ult i64 %10, %5 - br i1 %11, label %13, label %12 +.lr.ph: ; preds = %2 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %10 = load ptr, ptr %9, align 8, !nonnull !7, !noundef !7 + br label %13 -12: ; preds = %9 +11: ; preds = %13 + %exitcond.not = icmp eq i64 %15, %5 + br i1 %exitcond.not, label %._crit_edge, label %13 + +._crit_edge: ; preds = %11 + store i64 %5, ptr %7, align 8 + br label %12 + +12: ; preds = %._crit_edge, %2 store i32 0, ptr %0, align 8 br label %20 -13: ; preds = %9 - %14 = add nuw nsw i64 %10, 1 - store i64 %14, ptr %7, align 8 - %15 = load ptr, ptr %8, align 8, !nonnull !7, !noundef !7 - %16 = getelementptr inbounds nuw { { [2 x i64] }, i32, [1 x i32] }, ptr %15, i64 %10 +13: ; preds = %.lr.ph, %11 + %14 = phi i64 [ %.promoted, %.lr.ph ], [ %15, %11 ] + %15 = add i64 %14, 1 + %16 = getelementptr inbounds nuw { { [2 x i64] }, i32, [1 x i32] }, ptr %10, i64 %14 %17 = getelementptr inbounds nuw i8, ptr %16, i64 16 %18 = load i32, ptr %17, align 8, !noundef !7 %19 = and i32 %18, 1 %.not = icmp eq i32 %19, 0 - br i1 %.not, label %9, label %21 + br i1 %.not, label %11, label %21 20: ; preds = %21, %12 ret void 21: ; preds = %13 - %22 = trunc i64 %10 to i32 + store i64 %15, ptr %7, align 8 + %22 = trunc i64 %14 to i32 %23 = tail call { i32, i32 } @"_ZN102_$LT$polars_stream..async_executor..TaskKey$u20$as$u20$core..convert..From$LT$slotmap..KeyData$GT$$GT$4from17h94b95924699d4b99E"(i32 noundef %18, i32 noundef %22) %24 = extractvalue { i32, i32 } %23, 0 %25 = extractvalue { i32, i32 } %23, 1 - %26 = load ptr, ptr %8, align 8, !nonnull !7, !noundef !7 - %27 = getelementptr inbounds nuw { { [2 x i64] }, i32, [1 x i32] }, ptr %26, i64 %10 + %26 = load ptr, ptr %9, align 8, !nonnull !7, !noundef !7 + %27 = getelementptr inbounds nuw { { [2 x i64] }, i32, [1 x i32] }, ptr %26, i64 %14 %28 = load ptr, ptr %27, align 8, !nonnull !7, !noundef !7 %29 = getelementptr inbounds nuw i8, ptr %27, i64 8 %30 = load ptr, ptr %29, align 8, !nonnull !7, !align !740, !noundef !7 diff --git a/bench/postgres/optimized/execIndexing.ll b/bench/postgres/optimized/execIndexing.ll index a6fa82810f3..51549ef6883 100644 --- a/bench/postgres/optimized/execIndexing.ll +++ b/bench/postgres/optimized/execIndexing.ll @@ -370,16 +370,25 @@ ExecQual.exit: ; preds = %54, %.thread %102 = getelementptr inbounds nuw i16, ptr %100, i64 %indvars.iv.ph.i %103 = load i16, ptr %102, align 2 %104 = icmp slt i16 %103, 1 - br i1 %104, label %.thread.i, label %._crit_edge + br i1 %104, label %.thread.i.preheader, label %._crit_edge -105: ; preds = %.thread.i - %106 = getelementptr inbounds nuw i16, ptr %100, i64 %indvars.iv.next60.i +.thread.i.preheader: ; preds = %.outer.i + %indvars.iv.next60.i142 = add nuw nsw i64 %indvars.iv.ph.i, 1 + %.not61.i143 = icmp slt i64 %indvars.iv.next60.i142, %101 + br i1 %.not61.i143, label %.lr.ph145, label %.thread.i.preheader.._crit_edge.thread.i.loopexit_crit_edge, !llvm.loop !9 + +.lr.ph145: ; preds = %.thread.i.preheader + br label %105, !llvm.loop !9 + +105: ; preds = %.lr.ph145, %.thread.i + %indvars.iv.next60.i144 = phi i64 [ %indvars.iv.next60.i142, %.lr.ph145 ], [ %indvars.iv.next60.i, %.thread.i ] + %106 = getelementptr inbounds nuw i16, ptr %100, i64 %indvars.iv.next60.i144 %107 = load i16, ptr %106, align 2 %108 = icmp slt i16 %107, 1 br i1 %108, label %.thread.i, label %._crit_edge, !llvm.loop !9 ._crit_edge: ; preds = %105, %.outer.i - %indvars.iv.i.lcssa = phi i64 [ %indvars.iv.ph.i, %.outer.i ], [ %indvars.iv.next60.i, %105 ] + %indvars.iv.i.lcssa = phi i64 [ %indvars.iv.ph.i, %.outer.i ], [ %indvars.iv.next60.i144, %105 ] %.03952.i.lcssa = phi i1 [ %.03952.ph.i, %.outer.i ], [ true, %105 ] %.lcssa = phi i16 [ %103, %.outer.i ], [ %107, %105 ] %narrow.i = add nuw i16 %.lcssa, 7 @@ -403,11 +412,10 @@ ExecQual.exit: ; preds = %54, %.thread %.not.i = icmp slt i64 %indvars.iv.next.i, %115 br i1 %.not.i, label %.outer.i, label %._crit_edge.i, !llvm.loop !9 -.thread.i: ; preds = %.outer.i, %105 - %indvars.iv.i111 = phi i64 [ %indvars.iv.next60.i, %105 ], [ %indvars.iv.ph.i, %.outer.i ] - %indvars.iv.next60.i = add nuw nsw i64 %indvars.iv.i111, 1 +.thread.i: ; preds = %105 + %indvars.iv.next60.i = add nuw nsw i64 %indvars.iv.next60.i144, 1 %.not61.i = icmp slt i64 %indvars.iv.next60.i, %101 - br i1 %.not61.i, label %105, label %._crit_edge.thread.i, !llvm.loop !9 + br i1 %.not61.i, label %105, label %.thread.i.._crit_edge.thread.i.loopexit_crit_edge, !llvm.loop !9 ._crit_edge.i: ; preds = %114 br i1 %.03952.i.lcssa, label %._crit_edge.thread.i, label %.critedge.i @@ -417,7 +425,13 @@ ExecQual.exit: ; preds = %54, %.thread store i8 1, ptr %116, align 4 br label %index_unchanged_by_update.exit -._crit_edge.thread.i: ; preds = %.thread.i, %._crit_edge.i +.thread.i.preheader.._crit_edge.thread.i.loopexit_crit_edge: ; preds = %.thread.i.preheader + br label %._crit_edge.thread.i, !llvm.loop !9 + +.thread.i.._crit_edge.thread.i.loopexit_crit_edge: ; preds = %.thread.i + br label %._crit_edge.thread.i, !llvm.loop !9 + +._crit_edge.thread.i: ; preds = %.thread.i.preheader.._crit_edge.thread.i.loopexit_crit_edge, %.thread.i.._crit_edge.thread.i.loopexit_crit_edge, %._crit_edge.i %.not44.i = icmp eq ptr %97, null br i1 %.not44.i, label %119, label %117 diff --git a/bench/postgres/optimized/proc.ll b/bench/postgres/optimized/proc.ll index 4c355e47050..da6ff832eba 100644 --- a/bench/postgres/optimized/proc.ll +++ b/bench/postgres/optimized/proc.ll @@ -1203,23 +1203,31 @@ define dso_local zeroext i1 @HaveNFreeProcs(i32 noundef %0, ptr noundef captures %.not9 = icmp eq ptr %12, null %.not101114 = icmp eq ptr %12, %10 %.not1011 = select i1 %.not9, i1 true, i1 %.not101114 - br i1 %.not1011, label %._crit_edge, label %.lr.ph + br i1 %.not1011, label %._crit_edge, label %.lr.ph.preheader -.lr.ph: ; preds = %8, %16 - %13 = phi i32 [ %14, %16 ], [ 0, %8 ] - %.sroa.0.012 = phi ptr [ %18, %16 ], [ %12, %8 ] - %14 = add i32 %13, 1 +.lr.ph.preheader: ; preds = %8 + store i32 1, ptr %1, align 4 + %13 = icmp eq i32 %0, 1 + br i1 %13, label %._crit_edge, label %.lr.ph19 + +.lr.ph: ; preds = %.lr.ph19 + %14 = add i32 %16, 1 store i32 %14, ptr %1, align 4 %15 = icmp eq i32 %14, %0 - br i1 %15, label %._crit_edge, label %16 + br i1 %15, label %._crit_edge, label %.lr.ph19, !llvm.loop !19 -16: ; preds = %.lr.ph - %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.012, i64 8 +.lr.ph19: ; preds = %.lr.ph.preheader, %.lr.ph + %16 = phi i32 [ %14, %.lr.ph ], [ 1, %.lr.ph.preheader ] + %.sroa.0.01218 = phi ptr [ %18, %.lr.ph ], [ %12, %.lr.ph.preheader ] + %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.01218, i64 8 %18 = load ptr, ptr %17, align 8 %.not10 = icmp eq ptr %18, %10 - br i1 %.not10, label %._crit_edge, label %.lr.ph, !llvm.loop !19 + br i1 %.not10, label %.._crit_edge.loopexit_crit_edge, label %.lr.ph, !llvm.loop !19 + +.._crit_edge.loopexit_crit_edge: ; preds = %.lr.ph19 + br label %._crit_edge, !llvm.loop !19 -._crit_edge: ; preds = %.lr.ph, %16, %8 +._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader, %.._crit_edge.loopexit_crit_edge, %8 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !20 %19 = load ptr, ptr @ProcStructLock, align 8 store i8 0, ptr %19, align 1 diff --git a/bench/proj/optimized/proj_mdist.ll b/bench/proj/optimized/proj_mdist.ll index 5add865bdc1..69203aeafae 100644 --- a/bench/proj/optimized/proj_mdist.ll +++ b/bench/proj/optimized/proj_mdist.ll @@ -156,21 +156,21 @@ define hidden noundef double @_Z14proj_inv_mdistP6pj_ctxdPKv(ptr noundef %0, dou %9 = load double, ptr %8, align 8, !tbaa !13 %10 = fneg double %5 %11 = getelementptr inbounds nuw i8, ptr %2, i64 24 - br label %12 + br label %13 -12: ; preds = %_Z10proj_mdistdddPKv.exit, %3 - %.022 = phi double [ %1, %3 ], [ %41, %_Z10proj_mdistdddPKv.exit ] - %.0 = phi i32 [ 20, %3 ], [ %14, %_Z10proj_mdistdddPKv.exit ] - %.not = icmp eq i32 %.0, 0 - br i1 %.not, label %44, label %13 +12: ; preds = %_Z10proj_mdistdddPKv.exit + %.not = icmp eq i32 %14, 0 + br i1 %.not, label %44, label %13, !llvm.loop !17 -13: ; preds = %12 - %14 = add nsw i32 %.0, -1 - %15 = tail call double @sin(double noundef %.022) #10, !tbaa !15 +13: ; preds = %3, %12 + %.026 = phi i32 [ 20, %3 ], [ %14, %12 ] + %.02225 = phi double [ %1, %3 ], [ %41, %12 ] + %14 = add nsw i32 %.026, -1 + %15 = tail call double @sin(double noundef %.02225) #10, !tbaa !15 %16 = fneg double %15 %17 = fmul double %5, %16 %18 = tail call double @llvm.fmuladd.f64(double %17, double %15, double 1.000000e+00) - %19 = tail call double @cos(double noundef %.022) #10, !tbaa !15 + %19 = tail call double @cos(double noundef %.02225) #10, !tbaa !15 %20 = fmul double %15, %15 %21 = tail call double @llvm.fmuladd.f64(double %10, double %20, double 1.000000e+00) %22 = tail call double @sqrt(double noundef %21) #10, !tbaa !15 @@ -197,14 +197,14 @@ _Z10proj_mdistdddPKv.exit: ; preds = %.lr.ph.i, %13 %31 = fneg double %30 %32 = fmul double %5, %31 %33 = fdiv double %32, %22 - %34 = tail call double @llvm.fmuladd.f64(double %.022, double %9, double %33) + %34 = tail call double @llvm.fmuladd.f64(double %.02225, double %9, double %33) %35 = tail call noundef double @llvm.fmuladd.f64(double %30, double %.020.lcssa.i, double %34) %36 = fsub double %35, %1 %37 = tail call double @sqrt(double noundef %18) #10, !tbaa !15 %38 = fmul double %18, %37 %39 = fmul double %36, %38 %40 = fmul double %7, %39 - %41 = fsub double %.022, %40 + %41 = fsub double %.02225, %40 %42 = tail call double @llvm.fabs.f64(double %40) %43 = fcmp olt double %42, 0x3D06849B86A12B9B br i1 %43, label %.loopexit, label %12, !llvm.loop !17 @@ -214,8 +214,7 @@ _Z10proj_mdistdddPKv.exit: ; preds = %.lr.ph.i, %13 br label %.loopexit .loopexit: ; preds = %_Z10proj_mdistdddPKv.exit, %44 - %.021 = phi double [ %.022, %44 ], [ %41, %_Z10proj_mdistdddPKv.exit ] - ret double %.021 + ret double %41 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(errnomem: write) diff --git a/bench/proj/optimized/proj_strtod.ll b/bench/proj/optimized/proj_strtod.ll index 6fd649f4e58..ff7823882c4 100644 --- a/bench/proj/optimized/proj_strtod.ll +++ b/bench/proj/optimized/proj_strtod.ll @@ -289,7 +289,8 @@ thread-pre-split: ; preds = %77 .critedge6.lr.ph.preheader: ; preds = %.preheader244 %smax = tail call i32 @llvm.smax.i32(i32 %.0160.ph.lcssa.fr, i32 18) %90 = sub i32 %smax, %.0160.ph.lcssa.fr - br label %.critedge6.lr.ph + %exitcond551 = icmp eq i32 %90, 0 + br i1 %exitcond551, label %.critedge6.lr.ph.split.us, label %.critedge6.lr.ph.split 91: ; preds = %86, %.loopexit %.not225 = icmp eq ptr %1, null @@ -310,7 +311,7 @@ thread-pre-split: ; preds = %77 br i1 %99, label %.lr.ph, label %.outer245, !llvm.loop !21 .lr.ph: ; preds = %.critedge6.lr.ph.split, %.critedge6 - %.7295332 = phi ptr [ %96, %.critedge6 ], [ %.7.ph341, %.critedge6.lr.ph.split ] + %.7295332 = phi ptr [ %96, %.critedge6 ], [ %.7.ph341555, %.critedge6.lr.ph.split ] %96 = getelementptr inbounds nuw i8, ptr %.7295332, i64 1 %97 = load i8, ptr %96, align 1, !tbaa !13 %98 = sext i8 %97 to i32 @@ -321,16 +322,16 @@ thread-pre-split: ; preds = %77 br i1 %or.cond237, label %.critedge6, label %.outer245._crit_edge, !llvm.loop !21 .outer245: ; preds = %.critedge6, %.critedge6.lr.ph.split - %.7.lcssa257 = phi ptr [ %.7.ph341, %.critedge6.lr.ph.split ], [ %96, %.critedge6 ] - %.lcssa256 = phi i8 [ %109, %.critedge6.lr.ph.split ], [ %97, %.critedge6 ] - %isdigittmp212.lcssa254 = phi i32 [ %isdigittmp212292344, %.critedge6.lr.ph.split ], [ %isdigittmp212, %.critedge6 ] + %.7.lcssa257 = phi ptr [ %.7.ph341555, %.critedge6.lr.ph.split ], [ %96, %.critedge6 ] + %.lcssa256 = phi i8 [ %112, %.critedge6.lr.ph.split ], [ %97, %.critedge6 ] + %isdigittmp212.lcssa254 = phi i32 [ %isdigittmp212292344552, %.critedge6.lr.ph.split ], [ %isdigittmp212, %.critedge6 ] %100 = sitofp i32 %isdigittmp212.lcssa254 to double - %101 = tail call double @llvm.fmuladd.f64(double %.2176.ph339, double 1.000000e+01, double %100) + %101 = tail call double @llvm.fmuladd.f64(double %.2176.ph339557, double 1.000000e+01, double %100) %.not224 = icmp eq i8 %.lcssa256, 48 - %spec.select238 = select i1 %.not224, i32 %.0170.ph340, i32 1 + %spec.select238 = select i1 %.not224, i32 %.0170.ph340556, i32 1 %102 = getelementptr inbounds nuw i8, ptr %.7.lcssa257, i64 1 - %103 = add i32 %.2162.ph342, 1 - %104 = add nuw i32 %.0159.ph343, 1 + %103 = add i32 %.2162.ph342554, 1 + %104 = add nuw i32 %.0159.ph343553, 1 %105 = load i8, ptr %102, align 1, !tbaa !13 %106 = sext i8 %105 to i32 %isdigittmp212292 = add nsw i32 %106, -48 @@ -339,39 +340,45 @@ thread-pre-split: ; preds = %77 %or.cond237294 = or i1 %107, %isdigit213293 br i1 %or.cond237294, label %.critedge6.lr.ph, label %.outer245._crit_edge, !llvm.loop !21 -.critedge6.lr.ph: ; preds = %.critedge6.lr.ph.preheader, %.outer245 - %108 = phi i1 [ %107, %.outer245 ], [ %89, %.critedge6.lr.ph.preheader ] - %isdigittmp212292344 = phi i32 [ %isdigittmp212292, %.outer245 ], [ %isdigittmp212292336, %.critedge6.lr.ph.preheader ] - %109 = phi i8 [ %105, %.outer245 ], [ %84, %.critedge6.lr.ph.preheader ] - %.0159.ph343 = phi i32 [ %104, %.outer245 ], [ 0, %.critedge6.lr.ph.preheader ] - %.2162.ph342 = phi i32 [ %103, %.outer245 ], [ %.0160.ph.lcssa.fr, %.critedge6.lr.ph.preheader ] - %.7.ph341 = phi ptr [ %102, %.outer245 ], [ %.5, %.critedge6.lr.ph.preheader ] - %.0170.ph340 = phi i32 [ %spec.select238, %.outer245 ], [ 0, %.critedge6.lr.ph.preheader ] - %.2176.ph339 = phi double [ %101, %.outer245 ], [ %.0174.ph.lcssa, %.critedge6.lr.ph.preheader ] - %exitcond = icmp eq i32 %.0159.ph343, %90 - br i1 %exitcond, label %.critedge6.us, label %.critedge6.lr.ph.split - -.critedge6.us: ; preds = %.critedge6.lr.ph, %.critedge6.us - %.7295.us = phi ptr [ %110, %.critedge6.us ], [ %.7.ph341, %.critedge6.lr.ph ] - %110 = getelementptr inbounds nuw i8, ptr %.7295.us, i64 1 - %111 = load i8, ptr %110, align 1, !tbaa !13 - %112 = sext i8 %111 to i32 - %isdigittmp212.us = add nsw i32 %112, -48 +.critedge6.lr.ph: ; preds = %.outer245 + %exitcond = icmp eq i32 %104, %90 + br i1 %exitcond, label %.critedge6.lr.ph.split.us, label %.critedge6.lr.ph.split, !llvm.loop !21 + +.critedge6.lr.ph.split.us: ; preds = %.critedge6.lr.ph, %.critedge6.lr.ph.preheader + %.7.ph341.lcssa = phi ptr [ %.5, %.critedge6.lr.ph.preheader ], [ %102, %.critedge6.lr.ph ] + %.0170.ph340.lcssa = phi i32 [ 0, %.critedge6.lr.ph.preheader ], [ %spec.select238, %.critedge6.lr.ph ] + %.2176.ph339.lcssa = phi double [ %.0174.ph.lcssa, %.critedge6.lr.ph.preheader ], [ %101, %.critedge6.lr.ph ] + br label %.critedge6.us + +.critedge6.us: ; preds = %.critedge6.us, %.critedge6.lr.ph.split.us + %.7295.us = phi ptr [ %.7.ph341.lcssa, %.critedge6.lr.ph.split.us ], [ %108, %.critedge6.us ] + %108 = getelementptr inbounds nuw i8, ptr %.7295.us, i64 1 + %109 = load i8, ptr %108, align 1, !tbaa !13 + %110 = sext i8 %109 to i32 + %isdigittmp212.us = add nsw i32 %110, -48 %isdigit213.us = icmp ult i32 %isdigittmp212.us, 10 - %113 = icmp eq i8 %111, 95 - %or.cond237.us = or i1 %113, %isdigit213.us + %111 = icmp eq i8 %109, 95 + %or.cond237.us = or i1 %111, %isdigit213.us br i1 %or.cond237.us, label %.critedge6.us, label %.outer245._crit_edge, !llvm.loop !21 -.critedge6.lr.ph.split: ; preds = %.critedge6.lr.ph - br i1 %108, label %.lr.ph, label %.outer245 +.critedge6.lr.ph.split: ; preds = %.critedge6.lr.ph.preheader, %.critedge6.lr.ph + %.2176.ph339557 = phi double [ %101, %.critedge6.lr.ph ], [ %.0174.ph.lcssa, %.critedge6.lr.ph.preheader ] + %.0170.ph340556 = phi i32 [ %spec.select238, %.critedge6.lr.ph ], [ 0, %.critedge6.lr.ph.preheader ] + %.7.ph341555 = phi ptr [ %102, %.critedge6.lr.ph ], [ %.5, %.critedge6.lr.ph.preheader ] + %.2162.ph342554 = phi i32 [ %103, %.critedge6.lr.ph ], [ %.0160.ph.lcssa.fr, %.critedge6.lr.ph.preheader ] + %.0159.ph343553 = phi i32 [ %104, %.critedge6.lr.ph ], [ 0, %.critedge6.lr.ph.preheader ] + %112 = phi i8 [ %105, %.critedge6.lr.ph ], [ %84, %.critedge6.lr.ph.preheader ] + %isdigittmp212292344552 = phi i32 [ %isdigittmp212292, %.critedge6.lr.ph ], [ %isdigittmp212292336, %.critedge6.lr.ph.preheader ] + %113 = phi i1 [ %107, %.critedge6.lr.ph ], [ %89, %.critedge6.lr.ph.preheader ] + br i1 %113, label %.lr.ph, label %.outer245 .outer245._crit_edge: ; preds = %.outer245, %.lr.ph, %.critedge6.us - %114 = phi i8 [ %111, %.critedge6.us ], [ %97, %.lr.ph ], [ %105, %.outer245 ] - %.2176.ph.lcssa = phi double [ %.2176.ph339, %.critedge6.us ], [ %.2176.ph339, %.lr.ph ], [ %101, %.outer245 ] - %.0170.ph.lcssa = phi i32 [ %.0170.ph340, %.critedge6.us ], [ %.0170.ph340, %.lr.ph ], [ %spec.select238, %.outer245 ] - %.2162.ph.lcssa = phi i32 [ %smax, %.critedge6.us ], [ %.2162.ph342, %.lr.ph ], [ %103, %.outer245 ] - %.0159.ph.lcssa = phi i32 [ %90, %.critedge6.us ], [ %.0159.ph343, %.lr.ph ], [ %104, %.outer245 ] - %.7.lcssa = phi ptr [ %110, %.critedge6.us ], [ %96, %.lr.ph ], [ %102, %.outer245 ] + %114 = phi i8 [ %109, %.critedge6.us ], [ %97, %.lr.ph ], [ %105, %.outer245 ] + %.2176.ph.lcssa = phi double [ %.2176.ph339.lcssa, %.critedge6.us ], [ %.2176.ph339557, %.lr.ph ], [ %101, %.outer245 ] + %.0170.ph.lcssa = phi i32 [ %.0170.ph340.lcssa, %.critedge6.us ], [ %.0170.ph340556, %.lr.ph ], [ %spec.select238, %.outer245 ] + %.2162.ph.lcssa = phi i32 [ %smax, %.critedge6.us ], [ %.2162.ph342554, %.lr.ph ], [ %103, %.outer245 ] + %.0159.ph.lcssa = phi i32 [ %90, %.critedge6.us ], [ %.0159.ph343553, %.lr.ph ], [ %104, %.outer245 ] + %.7.lcssa = phi ptr [ %108, %.critedge6.us ], [ %96, %.lr.ph ], [ %102, %.outer245 ] %.not214 = icmp eq i32 %.0170.ph.lcssa, 0 br i1 %.not214, label %.outer245._crit_edge.thread, label %115 @@ -462,14 +469,14 @@ thread-pre-split: ; preds = %77 %isdigittmp219351366 = phi i32 [ %isdigittmp219351, %.outer ], [ %isdigittmp219351361, %140 ] %.0163.ph365 = phi i32 [ %150, %.outer ], [ 0, %140 ] %.11.ph364 = phi ptr [ %151, %.outer ], [ %.10, %140 ] - br i1 %144, label %.lr.ph552, label %.outer + br i1 %144, label %.lr.ph562, label %.outer -.critedge11: ; preds = %.lr.ph552 - br i1 %148, label %.lr.ph552, label %.outer, !llvm.loop !23 +.critedge11: ; preds = %.lr.ph562 + br i1 %148, label %.lr.ph562, label %.outer, !llvm.loop !23 -.lr.ph552: ; preds = %.critedge11.lr.ph, %.critedge11 - %.11354551 = phi ptr [ %145, %.critedge11 ], [ %.11.ph364, %.critedge11.lr.ph ] - %145 = getelementptr inbounds nuw i8, ptr %.11354551, i64 1 +.lr.ph562: ; preds = %.critedge11.lr.ph, %.critedge11 + %.11354561 = phi ptr [ %145, %.critedge11 ], [ %.11.ph364, %.critedge11.lr.ph ] + %145 = getelementptr inbounds nuw i8, ptr %.11354561, i64 1 %146 = load i8, ptr %145, align 1, !tbaa !13 %147 = sext i8 %146 to i32 %isdigittmp219 = add nsw i32 %147, -48 @@ -492,9 +499,9 @@ thread-pre-split: ; preds = %77 %or.cond239353 = or i1 %154, %isdigit220352 br i1 %or.cond239353, label %.critedge11.lr.ph, label %.outer._crit_edge, !llvm.loop !23 -.outer._crit_edge: ; preds = %.outer, %.lr.ph552, %140 - %.0163.ph.lcssa = phi i32 [ 0, %140 ], [ %.0163.ph365, %.lr.ph552 ], [ %150, %.outer ] - %.11.lcssa = phi ptr [ %.10, %140 ], [ %145, %.lr.ph552 ], [ %151, %.outer ] +.outer._crit_edge: ; preds = %.outer, %.lr.ph562, %140 + %.0163.ph.lcssa = phi i32 [ 0, %140 ], [ %.0163.ph365, %.lr.ph562 ], [ %150, %.outer ] + %.11.lcssa = phi ptr [ %.10, %140 ], [ %145, %.lr.ph562 ], [ %151, %.outer ] %155 = sub nsw i32 0, %.0163.ph.lcssa %spec.select240 = select i1 %135, i32 %155, i32 %.0163.ph.lcssa %156 = add nsw i32 %spec.select240, %.0172 diff --git a/bench/protobuf/optimized/csharp_message.ll b/bench/protobuf/optimized/csharp_message.ll index c95eace2c11..019e1ceb8be 100644 --- a/bench/protobuf/optimized/csharp_message.ll +++ b/bench/protobuf/optimized/csharp_message.ll @@ -10661,22 +10661,27 @@ entry: %sub.ptr.lhs.cast.i4 = ptrtoint ptr %__last.coerce to i64 %sub.ptr.sub.i5 = sub i64 %sub.ptr.lhs.cast.i4, %sub.ptr.rhs.cast.i %cmp6 = icmp sgt i64 %sub.ptr.sub.i5, 128 - br i1 %cmp6, label %while.body, label %while.end + br i1 %cmp6, label %while.body.preheader, label %while.end -while.body: ; preds = %entry, %if.end - %__depth_limit.addr.08 = phi i64 [ %dec, %if.end ], [ %__depth_limit, %entry ] - %storemerge7 = phi ptr [ %call17, %if.end ], [ %__last.coerce, %entry ] - %cmp3 = icmp eq i64 %__depth_limit.addr.08, 0 - br i1 %cmp3, label %if.then, label %if.end +while.body.preheader: ; preds = %entry + %cmp312 = icmp eq i64 %__depth_limit, 0 + br i1 %cmp312, label %if.then, label %if.end -if.then: ; preds = %while.body - tail call void @_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_SH_T0_(ptr %__first.coerce, ptr %storemerge7, ptr %storemerge7, ptr %__comp.coerce) +while.body: ; preds = %if.end + %cmp3 = icmp eq i64 %dec, 0 + br i1 %cmp3, label %if.then, label %if.end, !llvm.loop !328 + +if.then: ; preds = %while.body, %while.body.preheader + %storemerge7.lcssa = phi ptr [ %__last.coerce, %while.body.preheader ], [ %call17, %while.body ] + tail call void @_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_SH_T0_(ptr %__first.coerce, ptr %storemerge7.lcssa, ptr %storemerge7.lcssa, ptr %__comp.coerce) br label %while.end -if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.08, -1 - %call17 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEET_SH_SH_T0_(ptr %__first.coerce, ptr %storemerge7, ptr %__comp.coerce) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_(ptr %call17, ptr %storemerge7, i64 noundef %dec, ptr %__comp.coerce) +if.end: ; preds = %while.body.preheader, %while.body + %storemerge714 = phi ptr [ %call17, %while.body ], [ %__last.coerce, %while.body.preheader ] + %__depth_limit.addr.0813 = phi i64 [ %dec, %while.body ], [ %__depth_limit, %while.body.preheader ] + %dec = add nsw i64 %__depth_limit.addr.0813, -1 + %call17 = tail call ptr @_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEET_SH_SH_T0_(ptr %__first.coerce, ptr %storemerge714, ptr %__comp.coerce) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_(ptr %call17, ptr %storemerge714, i64 noundef %dec, ptr %__comp.coerce) %sub.ptr.lhs.cast.i = ptrtoint ptr %call17 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %cmp = icmp sgt i64 %sub.ptr.sub.i, 128 diff --git a/bench/proxygen/optimized/ParseURL.ll b/bench/proxygen/optimized/ParseURL.ll index 1918c6966f4..79f6563e524 100644 --- a/bench/proxygen/optimized/ParseURL.ll +++ b/bench/proxygen/optimized/ParseURL.ll @@ -580,18 +580,23 @@ for.body.lr.ph.split.us.i: ; preds = %for.body.lr.ph.i %cmp2.us13.i = icmp ult i8 %2, 33 %cmp4.us14.i = icmp eq i8 %2, 127 %or.cond.us15.i = or i1 %cmp2.us13.i, %cmp4.us14.i - br i1 %or.cond.us15.i, label %if.then6, label %lor.lhs.false5.us.i + br i1 %or.cond.us15.i, label %if.then6, label %lor.lhs.false5.us.i.preheader -for.body.us.i: ; preds = %lor.lhs.false5.us.i - %3 = load i8, ptr %incdec.ptr.us.i, align 1 +lor.lhs.false5.us.i.preheader: ; preds = %for.body.lr.ph.split.us.i + %incdec.ptr.us.i105 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %cmp.not.us.i106 = icmp eq ptr %incdec.ptr.us.i105, %1 + br i1 %cmp.not.us.i106, label %if.end.i.i, label %for.body.us.i + +for.body.us.i: ; preds = %lor.lhs.false5.us.i.preheader, %lor.lhs.false5.us.i + %incdec.ptr.us.i107 = phi ptr [ %incdec.ptr.us.i, %lor.lhs.false5.us.i ], [ %incdec.ptr.us.i105, %lor.lhs.false5.us.i.preheader ] + %3 = load i8, ptr %incdec.ptr.us.i107, align 1 %cmp2.us.i = icmp ult i8 %3, 33 %cmp4.us.i = icmp eq i8 %3, 127 %or.cond.us.i = or i1 %cmp2.us.i, %cmp4.us.i br i1 %or.cond.us.i, label %if.then6, label %lor.lhs.false5.us.i -lor.lhs.false5.us.i: ; preds = %for.body.lr.ph.split.us.i, %for.body.us.i - %__begin1.08.us16.i = phi ptr [ %incdec.ptr.us.i, %for.body.us.i ], [ %0, %for.body.lr.ph.split.us.i ] - %incdec.ptr.us.i = getelementptr inbounds nuw i8, ptr %__begin1.08.us16.i, i64 1 +lor.lhs.false5.us.i: ; preds = %for.body.us.i + %incdec.ptr.us.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.us.i107, i64 1 %cmp.not.us.i = icmp eq ptr %incdec.ptr.us.i, %1 br i1 %cmp.not.us.i, label %if.end.i.i, label %for.body.us.i @@ -612,7 +617,7 @@ if.then6: ; preds = %for.body.us.i, %for store i8 0, ptr %valid_7, align 2 br label %return -if.end.i.i: ; preds = %lor.lhs.false5.us.i, %for.cond.i +if.end.i.i: ; preds = %lor.lhs.false5.us.i, %for.cond.i, %lor.lhs.false5.us.i.preheader %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %0 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i @@ -673,10 +678,10 @@ invoke.cont33: ; preds = %if.then30 br label %if.end38 if.end38: ; preds = %invoke.cont28, %invoke.cont33 - %.str.1.sink110 = phi ptr [ %add.ptr.i, %invoke.cont33 ], [ @.str.1, %invoke.cont28 ] + %.str.1.sink113 = phi ptr [ %add.ptr.i, %invoke.cont33 ], [ @.str.1, %invoke.cont28 ] %.str.1.sink = phi ptr [ %add.ptr.i.i51, %invoke.cont33 ], [ @.str.1, %invoke.cont28 ] %path_37 = getelementptr inbounds nuw i8, ptr %this, i64 96 - store ptr %.str.1.sink110, ptr %path_37, align 8 + store ptr %.str.1.sink113, ptr %path_37, align 8 %ref.tmp35.sroa.2.0.path_37.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 104 store ptr %.str.1.sink, ptr %ref.tmp35.sroa.2.0.path_37.sroa_idx, align 8 %cmp39 = icmp ult i64 %retval.0.i.i20, %retval.0.i.i35 diff --git a/bench/qemu/optimized/libvhost-user.ll b/bench/qemu/optimized/libvhost-user.ll index 5213726517d..faead15056b 100644 --- a/bench/qemu/optimized/libvhost-user.ll +++ b/bench/qemu/optimized/libvhost-user.ll @@ -5833,35 +5833,37 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt 9: ; preds = %6 %.not35 = icmp eq i64 %5, 0 - br i1 %.not35, label %12, label %.preheader + br i1 %.not35, label %13, label %.preheader .preheader: ; preds = %9 %10 = getelementptr inbounds nuw i8, ptr %0, i64 4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %13 + %12 = icmp eq i32 %7, %3 + br i1 %12, label %._crit_edge, label %.lr.ph -12: ; preds = %9 +13: ; preds = %9 tail call void (ptr, ptr, ...) @vu_panic(ptr noundef %0, ptr noundef nonnull @.str.106) br label %.critedge -13: ; preds = %.preheader, %49 - %.02552 = phi i32 [ %7, %.preheader ], [ %54, %49 ] - %.02651 = phi i64 [ %5, %.preheader ], [ %55, %49 ] - %.02850 = phi i64 [ %4, %.preheader ], [ %56, %49 ] - %14 = icmp eq i32 %.02552, %3 - br i1 %14, label %15, label %16 +14: ; preds = %49 + %15 = add i64 %spec.select, %.0285013 + %16 = icmp eq i32 %54, %3 + br i1 %16, label %._crit_edge, label %.lr.ph -15: ; preds = %13 +._crit_edge: ; preds = %14, %.preheader tail call void (ptr, ptr, ...) @vu_panic(ptr noundef %0, ptr noundef nonnull @.str.107) br label %.critedge -16: ; preds = %13 +.lr.ph: ; preds = %.preheader, %14 + %.0285013 = phi i64 [ %15, %14 ], [ %4, %.preheader ] + %.0265112 = phi i64 [ %55, %14 ], [ %5, %.preheader ] + %.0255211 = phi i32 [ %54, %14 ], [ %7, %.preheader ] %17 = load i32, ptr %10, align 4 %18 = add i32 %17, -1 %.not37.i.i = icmp slt i32 %18, 0 br i1 %.not37.i.i, label %vu_gpa_to_va.exit.thread, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %16 +.lr.ph.i.i: ; preds = %.lr.ph %19 = load ptr, ptr %11, align 8 br label %20 @@ -5875,12 +5877,12 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt %25 = getelementptr inbounds nuw %struct.VuDevRegion, ptr %19, i64 %24 %26 = load i64, ptr %25, align 8 %.fr.i.i = freeze i64 %26 - %.not31.i.i = icmp ult i64 %.02850, %.fr.i.i + %.not31.i.i = icmp ult i64 %.0285013, %.fr.i.i %.phi.trans.insert.i.i = getelementptr inbounds nuw i8, ptr %25, i64 8 %.pre.i.i = load i64, ptr %.phi.trans.insert.i.i, align 8 %.pre.fr.i.i = freeze i64 %.pre.i.i %.pre42.i.i = add i64 %.pre.fr.i.i, %.fr.i.i - %27 = icmp ult i64 %.02850, %.pre42.i.i + %27 = icmp ult i64 %.0285013, %.pre42.i.i br i1 %.not31.i.i, label %30, label %28 28: ; preds = %20 @@ -5903,7 +5905,7 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt br i1 %.not.i.i, label %vu_gpa_to_va.exit.thread, label %20 vu_gpa_to_mem_region.exit.i: ; preds = %28 - %35 = inttoptr i64 %.02850 to ptr + %35 = inttoptr i64 %.0285013 to ptr %36 = sub i64 0, %.fr.i.i %37 = getelementptr inbounds i8, ptr %35, i64 %36 %38 = getelementptr inbounds nuw i8, ptr %25, i64 32 @@ -5912,14 +5914,14 @@ vu_gpa_to_mem_region.exit.i: ; preds = %28 %41 = getelementptr inbounds nuw i8, ptr %25, i64 24 %42 = load i64, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %40, i64 %42 - %44 = zext i32 %.02552 to i64 + %44 = zext i32 %.0255211 to i64 %45 = getelementptr inbounds nuw %struct.iovec, ptr %2, i64 %44 store ptr %43, ptr %45, align 8 - %46 = icmp eq i64 %.02850, 0 + %46 = icmp eq i64 %.0285013, 0 br i1 %46, label %.loopexit, label %49 -vu_gpa_to_va.exit.thread: ; preds = %16, %32 - %47 = zext i32 %.02552 to i64 +vu_gpa_to_va.exit.thread: ; preds = %.lr.ph, %32 + %47 = zext i32 %.0255211 to i64 %48 = getelementptr inbounds nuw %struct.iovec, ptr %2, i64 %47 store ptr null, ptr %48, align 8 br label %.loopexit @@ -5929,24 +5931,23 @@ vu_gpa_to_va.exit.thread: ; preds = %16, %32 br label %.critedge 49: ; preds = %vu_gpa_to_mem_region.exit.i - %50 = add i64 %.02651, %.02850 + %50 = add i64 %.0265112, %.0285013 %51 = icmp ugt i64 %50, %.pre42.i.i - %52 = sub nuw i64 %.pre42.i.i, %.02850 - %spec.select = select i1 %51, i64 %52, i64 %.02651 + %52 = sub nuw i64 %.pre42.i.i, %.0285013 + %spec.select = select i1 %51, i64 %52, i64 %.0265112 %53 = getelementptr inbounds nuw i8, ptr %45, i64 8 store i64 %spec.select, ptr %53, align 8 - %54 = add i32 %.02552, 1 - %55 = sub i64 %.02651, %spec.select - %56 = add i64 %spec.select, %.02850 + %54 = add i32 %.0255211, 1 + %55 = sub i64 %.0265112, %spec.select %.not36 = icmp eq i64 %55, 0 - br i1 %.not36, label %57, label %13 + br i1 %.not36, label %56, label %14 -57: ; preds = %49 +56: ; preds = %49 store i32 %54, ptr %1, align 4 br label %.critedge -.critedge: ; preds = %15, %.loopexit, %57, %12 - %.030 = phi i1 [ true, %57 ], [ false, %12 ], [ false, %.loopexit ], [ false, %15 ] +.critedge: ; preds = %._crit_edge, %.loopexit, %56, %13 + %.030 = phi i1 [ true, %56 ], [ false, %13 ], [ false, %.loopexit ], [ false, %._crit_edge ] ret i1 %.030 } diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index a1ec32c62f4..6341db2d05c 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10054,58 +10054,59 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt 12: ; preds = %8 %.not46 = icmp eq i64 %7, 0 - br i1 %.not46, label %14, label %.preheader + br i1 %.not46, label %15, label %.preheader .preheader: ; preds = %12 %13 = getelementptr inbounds nuw i8, ptr %0, i64 464 - br label %15 + %14 = icmp eq i32 %10, %4 + br i1 %14, label %._crit_edge, label %.lr.ph -14: ; preds = %12 +15: ; preds = %12 tail call void (ptr, ptr, ...) @virtio_error(ptr noundef %0, ptr noundef nonnull @.str.85) br label %.thread -15: ; preds = %.preheader, %25 - %.03759 = phi i64 [ %6, %.preheader ], [ %29, %25 ] - %.03858 = phi i64 [ %7, %.preheader ], [ %28, %25 ] - %.14257 = phi i32 [ %10, %.preheader ], [ %30, %25 ] - %16 = icmp eq i32 %.14257, %4 - br i1 %16, label %17, label %18 +16: ; preds = %25 + %17 = add i64 %21, %.0375969 + %18 = icmp eq i32 %29, %4 + br i1 %18, label %._crit_edge, label %.lr.ph -17: ; preds = %15 +._crit_edge: ; preds = %16, %.preheader call void (ptr, ptr, ...) @virtio_error(ptr noundef %0, ptr noundef nonnull @.str.86) br label %.thread -18: ; preds = %15 +.lr.ph: ; preds = %.preheader, %16 + %.1425771 = phi i32 [ %29, %16 ], [ %10, %.preheader ] + %.0385870 = phi i64 [ %28, %16 ], [ %7, %.preheader ] + %.0375969 = phi i64 [ %17, %16 ], [ %6, %.preheader ] %19 = load ptr, ptr %13, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %9) - store i64 %.03858, ptr %9, align 8 - %20 = call ptr @address_space_map(ptr noundef %19, i64 noundef %.03759, ptr noundef nonnull %9, i1 noundef zeroext %5, i64 4294967296) #24 + store i64 %.0385870, ptr %9, align 8 + %20 = call ptr @address_space_map(ptr noundef %19, i64 noundef %.0375969, ptr noundef nonnull %9, i1 noundef zeroext %5, i64 4294967296) #24 %21 = load i64, ptr %9, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %9) - %22 = zext i32 %.14257 to i64 + %22 = zext i32 %.1425771 to i64 %23 = getelementptr inbounds nuw %struct.iovec, ptr %3, i64 %22 store ptr %20, ptr %23, align 8 %.not48 = icmp eq ptr %20, null br i1 %.not48, label %24, label %25 -24: ; preds = %18 +24: ; preds = %.lr.ph call void (ptr, ptr, ...) @virtio_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.87) br label %.thread -25: ; preds = %18 +25: ; preds = %.lr.ph %26 = getelementptr inbounds nuw i8, ptr %23, i64 8 store i64 %21, ptr %26, align 8 %27 = getelementptr inbounds nuw i64, ptr %2, i64 %22 - store i64 %.03759, ptr %27, align 8 - %28 = sub i64 %.03858, %21 - %29 = add i64 %21, %.03759 - %30 = add i32 %.14257, 1 + store i64 %.0375969, ptr %27, align 8 + %28 = sub i64 %.0385870, %21 + %29 = add i32 %.1425771, 1 %.not47 = icmp eq i64 %28, 0 - br i1 %.not47, label %.thread, label %15 + br i1 %.not47, label %.thread, label %16 -.thread: ; preds = %25, %24, %17, %14 - %.041 = phi i32 [ %10, %14 ], [ %4, %17 ], [ %.14257, %24 ], [ %30, %25 ] - %.040 = phi i1 [ false, %14 ], [ false, %17 ], [ false, %24 ], [ true, %25 ] +.thread: ; preds = %25, %24, %._crit_edge, %15 + %.041 = phi i32 [ %10, %15 ], [ %4, %._crit_edge ], [ %.1425771, %24 ], [ %29, %25 ] + %.040 = phi i1 [ false, %15 ], [ false, %._crit_edge ], [ false, %24 ], [ true, %25 ] store i32 %.041, ptr %1, align 4 ret i1 %.040 } diff --git a/bench/quantlib/optimized/bspline.ll b/bench/quantlib/optimized/bspline.ll index c07341cb63e..2b9aed47deb 100644 --- a/bench/quantlib/optimized/bspline.ll +++ b/bench/quantlib/optimized/bspline.ll @@ -572,7 +572,12 @@ do.body113: ; preds = %do.body70 for.cond.preheader: ; preds = %do.body113 %sub = add nsw i64 %sub.ptr.div.i, -1 - br label %for.cond + %cmp159270.not = icmp eq i64 %sub, 0 + br i1 %cmp159270.not, label %for.cond.cleanup, label %do.body160.preheader + +do.body160.preheader: ; preds = %for.cond.preheader + %.pre = load double, ptr %2, align 8, !tbaa !24 + br label %do.body160 if.then117: ; preds = %do.body113 call void @llvm.lifetime.start.p0(ptr nonnull %_ql_msg_stream118) @@ -717,18 +722,17 @@ ehcleanup154: ; preds = %ehcleanup153, %lpad call void @llvm.lifetime.end.p0(ptr nonnull %_ql_msg_stream118) br label %ehcleanup207 -for.cond: ; preds = %for.cond.preheader, %do.body160 - %i.0 = phi i64 [ %add162, %do.body160 ], [ 0, %for.cond.preheader ] - %exitcond.not = icmp eq i64 %i.0, %sub - br i1 %exitcond.not, label %for.cond.cleanup, label %do.body160 +for.cond: ; preds = %do.body160 + %exitcond.not = icmp eq i64 %add162, %sub + br i1 %exitcond.not, label %for.cond.cleanup, label %do.body160, !llvm.loop !26 -for.cond.cleanup: ; preds = %for.cond +for.cond.cleanup: ; preds = %for.cond, %for.cond.preheader ret void -do.body160: ; preds = %for.cond - %add.ptr.i = getelementptr inbounds nuw double, ptr %2, i64 %i.0 - %77 = load double, ptr %add.ptr.i, align 8, !tbaa !24 - %add162 = add i64 %i.0, 1 +do.body160: ; preds = %do.body160.preheader, %for.cond + %77 = phi double [ %78, %for.cond ], [ %.pre, %do.body160.preheader ] + %i.0271 = phi i64 [ %add162, %for.cond ], [ 0, %do.body160.preheader ] + %add162 = add nuw i64 %i.0271, 1 %add.ptr.i148 = getelementptr inbounds nuw double, ptr %2, i64 %add162 %78 = load double, ptr %add.ptr.i148, align 8, !tbaa !24 %cmp164 = fcmp ugt double %77, %78 diff --git a/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll b/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll index bd29b0e7505..eda2ef2293e 100644 --- a/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll +++ b/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll @@ -1029,28 +1029,30 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ %.not.i.i = icmp eq i64 %.val2, %.val4 br i1 %.not.i.i, label %.preheader.split.i.i, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit" -.preheader.split.i.i: ; preds = %2, %7 - %.sroa.01.0.i.i = phi i64 [ %8, %7 ], [ 0, %2 ] - %exitcond.not.i.i = icmp eq i64 %.sroa.01.0.i.i, %.val2 - br i1 %exitcond.not.i.i, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit", label %7 - -7: ; preds = %.preheader.split.i.i - %8 = add i64 %.sroa.01.0.i.i, 1 - %9 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.01.0.i.i - %10 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val3, i64 %.sroa.01.0.i.i - %11 = getelementptr i8, ptr %9, i64 8 - %.val.i.i = load ptr, ptr %11, align 8, !alias.scope !119, !noalias !122, !nonnull !6, !noundef !6 - %12 = getelementptr i8, ptr %9, i64 16 - %.val5.i.i = load i64, ptr %12, align 8, !alias.scope !119, !noalias !122, !noundef !6 - %13 = getelementptr i8, ptr %10, i64 8 - %.val6.i.i = load ptr, ptr %13, align 8, !alias.scope !122, !noalias !119, !nonnull !6, !noundef !6 - %14 = getelementptr i8, ptr %10, i64 16 - %.val7.i.i = load i64, ptr %14, align 8, !alias.scope !122, !noalias !119, !noundef !6 - %15 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hd23a799ddb71a7d3E"(ptr noalias noundef nonnull readonly align 1 %.val.i.i, i64 noundef %.val5.i.i, ptr noalias noundef nonnull readonly align 1 %.val6.i.i, i64 noundef %.val7.i.i), !noalias !124 - br i1 %15, label %.preheader.split.i.i, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit" - -"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit": ; preds = %.preheader.split.i.i, %7, %2 - %.sroa.0.0.i.i = phi i1 [ false, %2 ], [ %exitcond.not.i.i, %7 ], [ %exitcond.not.i.i, %.preheader.split.i.i ] +.preheader.split.i.i: ; preds = %2 + %.not12.i.i = icmp eq i64 %.val2, 0 + br i1 %.not12.i.i, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit", label %.lr.ph.i.i + +.lr.ph.i.i: ; preds = %.preheader.split.i.i, %.lr.ph.i.i + %.sroa.01.09.i.i = phi i64 [ %14, %.lr.ph.i.i ], [ 0, %.preheader.split.i.i ] + %7 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.01.09.i.i + %8 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val3, i64 %.sroa.01.09.i.i + %9 = getelementptr i8, ptr %7, i64 8 + %.val.i.i = load ptr, ptr %9, align 8, !alias.scope !119, !noalias !122, !nonnull !6, !noundef !6 + %10 = getelementptr i8, ptr %7, i64 16 + %.val5.i.i = load i64, ptr %10, align 8, !alias.scope !119, !noalias !122, !noundef !6 + %11 = getelementptr i8, ptr %8, i64 8 + %.val6.i.i = load ptr, ptr %11, align 8, !alias.scope !122, !noalias !119, !nonnull !6, !noundef !6 + %12 = getelementptr i8, ptr %8, i64 16 + %.val7.i.i = load i64, ptr %12, align 8, !alias.scope !122, !noalias !119, !noundef !6 + %13 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hd23a799ddb71a7d3E"(ptr noalias noundef nonnull readonly align 1 %.val.i.i, i64 noundef %.val5.i.i, ptr noalias noundef nonnull readonly align 1 %.val6.i.i, i64 noundef %.val7.i.i), !noalias !124 + %14 = add nuw i64 %.sroa.01.09.i.i, 1 + %exitcond.not.i.i = icmp ne i64 %14, %.val2 + %or.cond.not = select i1 %13, i1 %exitcond.not.i.i, i1 false + br i1 %or.cond.not, label %.lr.ph.i.i, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit" + +"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17ha37a08304dc542c8E.exit": ; preds = %.lr.ph.i.i, %2, %.preheader.split.i.i + %.sroa.0.0.i.i = phi i1 [ false, %2 ], [ true, %.preheader.split.i.i ], [ %13, %.lr.ph.i.i ] ret i1 %.sroa.0.0.i.i } diff --git a/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll b/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll index 32892c92ebf..53db4d75aac 100644 --- a/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll +++ b/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll @@ -7554,54 +7554,60 @@ _ZN11quinn_proto8endpoint8Endpoint14cids_exhausted17hc771a0d18a2ee089E.exit.thre %.val = load i32, ptr %105, align 8 %106 = and i64 %104, -16 %107 = getelementptr inbounds nuw i32, ptr %102, i64 %106 - %108 = and i64 %104, 15 - br label %109 - -109: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i", %98 - %.sroa.5.0.i = phi i64 [ %106, %98 ], [ %117, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i" ] - %.sroa.0.03.i = phi ptr [ %102, %98 ], [ %116, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i" ] - %110 = icmp eq i64 %.sroa.5.0.i, 0 - br i1 %110, label %118, label %.preheader - -.preheader: ; preds = %109, %.preheader - %.sroa.07.0.i.i = phi i1 [ %113, %.preheader ], [ false, %109 ] - %.sroa.09.0.i.i131 = phi i64 [ %114, %.preheader ], [ 0, %109 ] - %111 = getelementptr inbounds nuw i32, ptr %.sroa.0.03.i, i64 %.sroa.09.0.i.i131 - %.val19.i.i = load i32, ptr %111, align 4, !alias.scope !388, !noalias !391, !noundef !3 - %112 = icmp eq i32 %.val19.i.i, %.val - %113 = or i1 %.sroa.07.0.i.i, %112 - %114 = add nuw nsw i64 %.sroa.09.0.i.i131, 1 - %115 = icmp eq i64 %114, 16 - br i1 %115, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i", label %.preheader - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i": ; preds = %.preheader - %116 = getelementptr inbounds nuw i8, ptr %.sroa.0.03.i, i64 64 - %117 = add i64 %.sroa.5.0.i, -16 - br i1 %113, label %.loopexit, label %109 - -118: ; preds = %109 - %119 = getelementptr inbounds nuw i32, ptr %107, i64 %108 - br label %120 - -120: ; preds = %122, %118 - %121 = phi ptr [ %123, %122 ], [ %107, %118 ] - %.not.not.not.i.not.not.i = icmp eq ptr %121, %119 - br i1 %.not.not.not.i.not.not.i, label %"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit", label %122 - -122: ; preds = %120 - %123 = getelementptr inbounds nuw i8, ptr %121, i64 4 - %.val4.i.i = load i32, ptr %121, align 4, !alias.scope !388, !noalias !394, !noundef !3 + %108 = icmp eq i64 %106, 0 + br i1 %108, label %._crit_edge.i, label %.lr.ph.i + +109: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i" + %110 = add i64 %.sroa.5.09.i, -16 + %111 = getelementptr inbounds nuw i8, ptr %.sroa.0.0310.i, i64 64 + %112 = icmp eq i64 %110, 0 + br i1 %112, label %._crit_edge.i, label %.lr.ph.i + +.lr.ph.i: ; preds = %98, %109 + %.sroa.0.0310.i = phi ptr [ %111, %109 ], [ %102, %98 ] + %.sroa.5.09.i = phi i64 [ %110, %109 ], [ %106, %98 ] + br label %113 + +113: ; preds = %113, %.lr.ph.i + %.sroa.07.0.i.i = phi i1 [ false, %.lr.ph.i ], [ %116, %113 ] + %.sroa.09.0.i.i131 = phi i64 [ 0, %.lr.ph.i ], [ %117, %113 ] + %114 = getelementptr inbounds nuw i32, ptr %.sroa.0.0310.i, i64 %.sroa.09.0.i.i131 + %.val19.i.i = load i32, ptr %114, align 4, !alias.scope !388, !noalias !391, !noundef !3 + %115 = icmp eq i32 %.val19.i.i, %.val + %116 = or i1 %.sroa.07.0.i.i, %115 + %117 = add nuw nsw i64 %.sroa.09.0.i.i131, 1 + %118 = icmp eq i64 %117, 16 + br i1 %118, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i", label %113 + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i": ; preds = %113 + br i1 %116, label %.loopexit, label %109 + +._crit_edge.i: ; preds = %109, %98 + %119 = shl i64 %104, 2 + %.idx.i = and i64 %119, 60 + %120 = getelementptr inbounds nuw i8, ptr %107, i64 %.idx.i + %.not.not.not.i.not11.i = icmp samesign eq i64 %.idx.i, 0 + br i1 %.not.not.not.i.not11.i, label %"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit", label %.lr.ph13.i + +121: ; preds = %.lr.ph13.i + %122 = getelementptr inbounds nuw i8, ptr %123, i64 4 + %.not.not.not.i.not.i = icmp eq ptr %122, %120 + br i1 %.not.not.not.i.not.i, label %"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit", label %.lr.ph13.i + +.lr.ph13.i: ; preds = %._crit_edge.i, %121 + %123 = phi ptr [ %122, %121 ], [ %107, %._crit_edge.i ] + %.val4.i.i = load i32, ptr %123, align 4, !alias.scope !388, !noalias !394, !noundef !3 %124 = icmp eq i32 %.val4.i.i, %.val - br i1 %124, label %.loopexit, label %120 + br i1 %124, label %.loopexit, label %121 -"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit": ; preds = %120 +"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit": ; preds = %121, %._crit_edge.i %125 = getelementptr inbounds nuw i8, ptr %0, i64 24 store i16 7, ptr %125, align 8 %126 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 2, ptr %126, align 16 br label %139 -.loopexit: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i", %122 +.loopexit: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i", %.lr.ph13.i %127 = getelementptr inbounds nuw i8, ptr %4, i64 40 %128 = load ptr, ptr %127, align 8, !nonnull !3, !noundef !3 %129 = getelementptr inbounds nuw i8, ptr %4, i64 48 diff --git a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll index 2f87150bbc7..3346ab0a1d7 100644 --- a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll +++ b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll @@ -711,15 +711,19 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT %5 = load i64, ptr %4, align 8, !noundef !3 %6 = icmp ult i64 %5, 164703072086692426 tail call void @llvm.assume(i1 %6) - %7 = getelementptr inbounds nuw i8, ptr %1, i64 8 - br label %8 + %7 = icmp samesign ugt i64 %5, 1 + br i1 %7, label %.lr.ph, label %._crit_edge -8: ; preds = %13, %2 - %.sroa.0.0 = phi i64 [ %5, %2 ], [ %14, %13 ] - %9 = icmp ugt i64 %.sroa.0.0, 1 - br i1 %9, label %13, label %10 +.lr.ph: ; preds = %2 + %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.pre = load ptr, ptr %8, align 8 + br label %13 -10: ; preds = %8 +9: ; preds = %13 + %10 = icmp ugt i64 %14, 1 + br i1 %10, label %13, label %._crit_edge + +._crit_edge: ; preds = %9, %2 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 24, i1 false) ret void @@ -727,27 +731,27 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT %12 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr114drop_in_place$LT$alloc..collections..binary_heap..BinaryHeap$LT$quinn_proto..connection..assembler..Buffer$GT$$GT$17h72159f4f219c81d3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1) #24 - to label %20 unwind label %18 + to label %19 unwind label %17 -13: ; preds = %8 - %14 = add nsw i64 %.sroa.0.0, -1 - %15 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 - %16 = getelementptr inbounds nuw { { ptr, ptr, i64, { ptr } }, i64, i64, i8, [7 x i8] }, ptr %15, i64 %14 +13: ; preds = %.lr.ph, %9 + %.sroa.0.06 = phi i64 [ %5, %.lr.ph ], [ %14, %9 ] + %14 = add nsw i64 %.sroa.0.06, -1 + %15 = getelementptr inbounds nuw { { ptr, ptr, i64, { ptr } }, i64, i64, i8, [7 x i8] }, ptr %.pre, i64 %14 call void @llvm.lifetime.start.p0(ptr nonnull %3) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(56) %15, i64 56, i1 false) - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull align 8 dereferenceable(56) %16, i64 56, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(56) %3, i64 56, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(56) %.pre, i64 56, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %.pre, ptr noundef nonnull align 8 dereferenceable(56) %15, i64 56, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull align 8 dereferenceable(56) %3, i64 56, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %17 = invoke noundef i64 @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$15sift_down_range17hd69b9ecf8446d082E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0, i64 noundef %14) - to label %8 unwind label %11 + %16 = invoke noundef i64 @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$15sift_down_range17hd69b9ecf8446d082E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0, i64 noundef %14) + to label %9 unwind label %11 -18: ; preds = %11 - %19 = landingpad { ptr, i32 } +17: ; preds = %11 + %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #23 unreachable -20: ; preds = %11 +19: ; preds = %11 resume { ptr, i32 } %12 } @@ -3971,28 +3975,30 @@ define noundef zeroext i1 @_ZN11quinn_proto9range_set15array_range_set13ArrayRan "_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit": ; preds = %5, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb30a6265ef15fdb4E.exit.i" %.pn6 = phi ptr [ %7, %5 ], [ %16, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb30a6265ef15fdb4E.exit.i" ] %.pn4 = phi i64 [ %9, %5 ], [ %13, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb30a6265ef15fdb4E.exit.i" ] - %17 = getelementptr inbounds nuw { i64, i64 }, ptr %.pn6, i64 %.pn4 - br label %18 + %.idx = shl nuw nsw i64 %.pn4, 4 + %17 = getelementptr inbounds nuw i8, ptr %.pn6, i64 %.idx + %18 = icmp eq i64 %.pn4, 0 + br i1 %18, label %._crit_edge, label %.lr.ph -18: ; preds = %22, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" - %.sroa.02.0 = phi ptr [ %.pn6, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" ], [ %23, %22 ] - %19 = icmp eq ptr %.sroa.02.0, %17 - br i1 %19, label %27, label %20 +19: ; preds = %23 + %20 = getelementptr inbounds nuw i8, ptr %.sroa.02.07, i64 16 + %21 = icmp eq ptr %20, %17 + br i1 %21, label %._crit_edge, label %.lr.ph -20: ; preds = %18 - %21 = load i64, ptr %.sroa.02.0, align 8, !noundef !3 - %.not = icmp ugt i64 %21, %1 - br i1 %.not, label %27, label %22 +.lr.ph: ; preds = %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit", %19 + %.sroa.02.07 = phi ptr [ %20, %19 ], [ %.pn6, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" ] + %22 = load i64, ptr %.sroa.02.07, align 8, !noundef !3 + %.not = icmp ugt i64 %22, %1 + br i1 %.not, label %._crit_edge, label %23 -22: ; preds = %20 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.02.0, i64 16 - %24 = getelementptr inbounds nuw i8, ptr %.sroa.02.0, i64 8 +23: ; preds = %.lr.ph + %24 = getelementptr inbounds nuw i8, ptr %.sroa.02.07, i64 8 %25 = load i64, ptr %24, align 8, !alias.scope !498 %26 = icmp ult i64 %1, %25 - br i1 %26, label %27, label %18 + br i1 %26, label %._crit_edge, label %19 -27: ; preds = %20, %22, %18 - %.sroa.0.0 = phi i1 [ false, %18 ], [ true, %22 ], [ false, %20 ] +._crit_edge: ; preds = %19, %23, %.lr.ph, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" + %.sroa.0.0 = phi i1 [ false, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" ], [ false, %.lr.ph ], [ true, %23 ], [ false, %19 ] ret i1 %.sroa.0.0 } diff --git a/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll b/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll index 71eb418bd22..ba7fa775854 100644 --- a/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll +++ b/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll @@ -1317,30 +1317,35 @@ define hidden noundef ptr @"_ZN66_$LT$slog_envlogger..EnvLogger$LT$T$GT$$u20$as$ %.val = load ptr, ptr %20, align 8, !nonnull !12, !noundef !12 %21 = getelementptr i8, ptr %0, i64 16 %.val7 = load i64, ptr %21, align 8, !noundef !12 - %22 = getelementptr inbounds nuw { { i64, [2 x i64] }, i8, [7 x i8] }, ptr %.val, i64 %.val7 - br label %23 + %22 = icmp eq i64 %.val7, 0 + br i1 %22, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread", label %.lr.ph.preheader.i -23: ; preds = %28, %3 - %.sroa.5.0.i = phi ptr [ %22, %3 ], [ %26, %28 ] - %24 = icmp eq ptr %.val, %.sroa.5.0.i - br i1 %24, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread", label %25 +.lr.ph.preheader.i: ; preds = %3 + %.idx.i = shl nuw nsw i64 %.val7, 5 + %23 = getelementptr inbounds nuw i8, ptr %.val, i64 %.idx.i + br label %.lr.ph.i -25: ; preds = %23 - %26 = getelementptr inbounds i8, ptr %.sroa.5.0.i, i64 -32 +24: ; preds = %28 + %25 = icmp eq ptr %.val, %26 + br i1 %25, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread", label %.lr.ph.i + +.lr.ph.i: ; preds = %24, %.lr.ph.preheader.i + %.sroa.5.05.i = phi ptr [ %26, %24 ], [ %23, %.lr.ph.preheader.i ] + %26 = getelementptr inbounds i8, ptr %.sroa.5.05.i, i64 -32 %27 = load i64, ptr %26, align 8, !range !41, !noalias !119, !noundef !12 %.not5.i = icmp eq i64 %27, -9223372036854775808 br i1 %.not5.i, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit", label %28 -28: ; preds = %25 - %29 = getelementptr inbounds i8, ptr %.sroa.5.0.i, i64 -24 +28: ; preds = %.lr.ph.i + %29 = getelementptr inbounds i8, ptr %.sroa.5.05.i, i64 -24 %30 = load ptr, ptr %29, align 8, !noalias !119, !nonnull !12, !noundef !12 - %31 = getelementptr inbounds i8, ptr %.sroa.5.0.i, i64 -16 + %31 = getelementptr inbounds i8, ptr %.sroa.5.05.i, i64 -16 %32 = load i64, ptr %31, align 8, !noalias !119, !noundef !12 %33 = tail call noundef zeroext i1 @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h23561a96f53ada5bE"(ptr noalias noundef nonnull readonly align 1 %17, i64 noundef %19, ptr noalias noundef nonnull readonly align 1 %30, i64 noundef %32) - br i1 %33, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit", label %23 + br i1 %33, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit", label %24 -"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit": ; preds = %25, %28 - %34 = getelementptr inbounds i8, ptr %.sroa.5.0.i, i64 -8 +"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit": ; preds = %.lr.ph.i, %28 + %34 = getelementptr inbounds i8, ptr %.sroa.5.05.i, i64 -8 %35 = load i8, ptr %34, align 8, !range !122, !noalias !119, !noundef !12 %36 = icmp samesign ult i8 %14, %35 br i1 %36, label %37, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread" @@ -1351,8 +1356,8 @@ define hidden noundef ptr @"_ZN66_$LT$slog_envlogger..EnvLogger$LT$T$GT$$u20$as$ %.not = icmp eq ptr %39, null br i1 %.not, label %48, label %40 -"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread": ; preds = %23, %54, %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit", %48 - %.sroa.0.0 = phi ptr [ %51, %48 ], [ null, %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit" ], [ null, %54 ], [ null, %23 ] +"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread": ; preds = %24, %54, %3, %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit", %48 + %.sroa.0.0 = phi ptr [ %51, %48 ], [ null, %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit" ], [ null, %3 ], [ null, %54 ], [ null, %24 ] ret ptr %.sroa.0.0 40: ; preds = %37 diff --git a/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll b/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll index ecb45f2ba92..039dc19ecb8 100644 --- a/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll +++ b/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll @@ -709,34 +709,38 @@ define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice. %.not = icmp eq i64 %1, %3 br i1 %.not, label %.preheader.split, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread" -.preheader.split: ; preds = %4, %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit" - %.sroa.01.0 = phi i64 [ %10, %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit" ], [ 0, %4 ] - %exitcond.not = icmp eq i64 %.sroa.01.0, %1 - br i1 %exitcond.not, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread", label %5 - -5: ; preds = %.preheader.split - %6 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %0, i64 %.sroa.01.0 - %7 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %2, i64 %.sroa.01.0 - %8 = getelementptr i8, ptr %6, i64 16 - %.val5 = load i64, ptr %8, align 8, !noundef !12 +.preheader.split: ; preds = %4 + %.not15 = icmp eq i64 %1, 0 + br i1 %.not15, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread", label %.lr.ph + +5: ; preds = %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit" + %6 = add nuw i64 %.sroa.01.011, 1 + %exitcond.not = icmp eq i64 %6, %1 + br i1 %exitcond.not, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread", label %.lr.ph + +.lr.ph: ; preds = %.preheader.split, %5 + %.sroa.01.011 = phi i64 [ %6, %5 ], [ 0, %.preheader.split ] + %7 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %0, i64 %.sroa.01.011 + %8 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %2, i64 %.sroa.01.011 %9 = getelementptr i8, ptr %7, i64 16 - %.val7 = load i64, ptr %9, align 8, !noundef !12 + %.val5 = load i64, ptr %9, align 8, !noundef !12 + %10 = getelementptr i8, ptr %8, i64 16 + %.val7 = load i64, ptr %10, align 8, !noundef !12 %.not.i.i = icmp eq i64 %.val5, %.val7 br i1 %.not.i.i, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit", label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread" -"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread": ; preds = %5, %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit", %.preheader.split, %4 - %.sroa.0.0 = phi i1 [ false, %4 ], [ %exitcond.not, %.preheader.split ], [ %exitcond.not, %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit" ], [ %exitcond.not, %5 ] +"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread": ; preds = %5, %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit", %.lr.ph, %.preheader.split, %4 + %.sroa.0.0 = phi i1 [ false, %4 ], [ true, %.preheader.split ], [ true, %5 ], [ false, %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit" ], [ false, %.lr.ph ] ret i1 %.sroa.0.0 -"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit": ; preds = %5 - %10 = add i64 %.sroa.01.0, 1 - %11 = getelementptr i8, ptr %7, i64 8 +"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit": ; preds = %.lr.ph + %11 = getelementptr i8, ptr %8, i64 8 %.val6 = load ptr, ptr %11, align 8, !nonnull !12, !noundef !12 - %12 = getelementptr i8, ptr %6, i64 8 + %12 = getelementptr i8, ptr %7, i64 8 %.val = load ptr, ptr %12, align 8, !nonnull !12, !noundef !12 %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.val, ptr nonnull readonly align 1 %.val6, i64 %.val5), !alias.scope !106 %.not9 = icmp eq i32 %bcmp.i.i, 0 - br i1 %.not9, label %.preheader.split, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread" + br i1 %.not9, label %5, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread" } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll b/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll index da934fde9a5..e4052d50b01 100644 --- a/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll +++ b/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll @@ -20,7 +20,7 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core br i1 %trunc30, label %10, label %9 8: ; preds = %2 - br i1 %trunc30, label %28, label %27 + br i1 %trunc30, label %26, label %25 9: ; preds = %7 br i1 %.not.i44, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" @@ -28,19 +28,19 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core 10: ; preds = %7 br i1 %.not.i44, label %15, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split": ; preds = %9, %28 - %.sink73 = phi i64 [ 3, %28 ], [ 2, %9 ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split": ; preds = %9, %26 + %.sink77 = phi i64 [ 3, %26 ], [ 2, %9 ] %11 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.val39 = load ptr, ptr %11, align 8, !nonnull !5, !noundef !5 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val41 = load ptr, ptr %12, align 8, !nonnull !5, !noundef !5 - %13 = shl nsw i64 %.val42, %.sink73 + %13 = shl nsw i64 %.val42, %.sink77 %bcmp.i46 = tail call i32 @bcmp(ptr nonnull readonly align 4 %.val41, ptr nonnull readonly align 4 %.val39, i64 %13) %14 = icmp eq i32 %bcmp.i46, 0 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit": ; preds = %22, %20, %36, %34, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split", %28, %9, %27, %10 - %.0.shrunk = phi i1 [ false, %10 ], [ false, %27 ], [ false, %9 ], [ false, %28 ], [ %14, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split" ], [ %exitcond67.not, %34 ], [ %exitcond67.not, %36 ], [ %exitcond.not, %20 ], [ %exitcond.not, %22 ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit": ; preds = %.lr.ph.i, %.lr.ph.i50, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split", %27, %15, %26, %9, %25, %10 + %.0.shrunk = phi i1 [ false, %10 ], [ false, %25 ], [ false, %9 ], [ false, %26 ], [ true, %15 ], [ true, %27 ], [ %14, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split" ], [ %.not.i55.not, %.lr.ph.i50 ], [ %.not.i43.not, %.lr.ph.i ] ret i1 %.0.shrunk 15: ; preds = %10 @@ -48,50 +48,48 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core %17 = load ptr, ptr %16, align 8, !nonnull !5, !noundef !5 %18 = getelementptr inbounds nuw i8, ptr %1, i64 16 %19 = load ptr, ptr %18, align 8, !nonnull !5, !noundef !5 - br label %20 - -20: ; preds = %22, %15 - %21 = phi i64 [ %23, %22 ], [ 0, %15 ] - %exitcond.not = icmp eq i64 %21, %.val42 - br i1 %exitcond.not, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit", label %22 - -22: ; preds = %20 - %23 = add i64 %21, 1 - %24 = getelementptr inbounds i32, ptr %17, i64 %21 - %25 = getelementptr inbounds i64, ptr %19, i64 %21 - %.fca.0.extract.val.i = load i32, ptr %24, align 4, !noalias !6, !noundef !5 - %.fca.1.extract.val.i = load i64, ptr %25, align 8, !noalias !6, !noundef !5 - %26 = zext i32 %.fca.0.extract.val.i to i64 - %.not.i43 = icmp eq i64 %.fca.1.extract.val.i, %26 - br i1 %.not.i43, label %20, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" - -27: ; preds = %8 - br i1 %.not.i44, label %29, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" - -28: ; preds = %8 + %.not67 = icmp eq i64 %.val42, 0 + br i1 %.not67, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit", label %.lr.ph.i + +.lr.ph.i: ; preds = %15, %.lr.ph.i + %20 = phi i64 [ %24, %.lr.ph.i ], [ 0, %15 ] + %21 = getelementptr inbounds i32, ptr %17, i64 %20 + %22 = getelementptr inbounds i64, ptr %19, i64 %20 + %.fca.0.extract.val.i = load i32, ptr %21, align 4, !noalias !6, !noundef !5 + %.fca.1.extract.val.i = load i64, ptr %22, align 8, !noalias !6, !noundef !5 + %23 = zext i32 %.fca.0.extract.val.i to i64 + %.not.i43.not = icmp eq i64 %.fca.1.extract.val.i, %23 + %24 = add nuw i64 %20, 1 + %exitcond.not.i = icmp ne i64 %24, %.val42 + %or.cond.not = select i1 %.not.i43.not, i1 %exitcond.not.i, i1 false + br i1 %or.cond.not, label %.lr.ph.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" + +25: ; preds = %8 + br i1 %.not.i44, label %27, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" + +26: ; preds = %8 br i1 %.not.i44, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" -29: ; preds = %27 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 +27: ; preds = %25 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %29 = load ptr, ptr %28, align 8, !nonnull !5, !noundef !5 + %30 = getelementptr inbounds nuw i8, ptr %1, i64 16 %31 = load ptr, ptr %30, align 8, !nonnull !5, !noundef !5 - %32 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %33 = load ptr, ptr %32, align 8, !nonnull !5, !noundef !5 - br label %34 - -34: ; preds = %36, %29 - %35 = phi i64 [ %37, %36 ], [ 0, %29 ] - %exitcond67.not = icmp eq i64 %35, %.val42 - br i1 %exitcond67.not, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit", label %36 - -36: ; preds = %34 - %37 = add i64 %35, 1 - %38 = getelementptr inbounds i64, ptr %31, i64 %35 - %39 = getelementptr inbounds i32, ptr %33, i64 %35 - %.fca.0.extract.val.i51 = load i64, ptr %38, align 8, !noalias !9, !noundef !5 - %.fca.1.extract.val.i52 = load i32, ptr %39, align 4, !noalias !9, !noundef !5 - %40 = zext i32 %.fca.1.extract.val.i52 to i64 - %.not.i53 = icmp eq i64 %.fca.0.extract.val.i51, %40 - br i1 %.not.i53, label %34, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" + %.not = icmp eq i64 %.val42, 0 + br i1 %.not, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit", label %.lr.ph.i50 + +.lr.ph.i50: ; preds = %27, %.lr.ph.i50 + %32 = phi i64 [ %36, %.lr.ph.i50 ], [ 0, %27 ] + %33 = getelementptr inbounds i64, ptr %29, i64 %32 + %34 = getelementptr inbounds i32, ptr %31, i64 %32 + %.fca.0.extract.val.i53 = load i64, ptr %33, align 8, !noalias !9, !noundef !5 + %.fca.1.extract.val.i54 = load i32, ptr %34, align 4, !noalias !9, !noundef !5 + %35 = zext i32 %.fca.1.extract.val.i54 to i64 + %.not.i55.not = icmp eq i64 %.fca.0.extract.val.i53, %35 + %36 = add nuw i64 %32, 1 + %exitcond.not.i56 = icmp ne i64 %36, %.val42 + %or.cond80.not = select i1 %.not.i55.not, i1 %exitcond.not.i56, i1 false + br i1 %or.cond80.not, label %.lr.ph.i50, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" } ; Function Attrs: nonlazybind uwtable diff --git a/bench/raylib/optimized/rtextures.ll b/bench/raylib/optimized/rtextures.ll index 2551220eca2..87009ad4215 100644 --- a/bench/raylib/optimized/rtextures.ll +++ b/bench/raylib/optimized/rtextures.ll @@ -38895,27 +38895,32 @@ define internal fastcc void @stbi__out_gif_code(ptr noundef nonnull captures(non %61 = getelementptr inbounds nuw i8, ptr %0, i64 34916 %62 = getelementptr inbounds nuw i8, ptr %0, i64 34896 %.promoted46 = load i32, ptr %59, align 8 - br label %63 - -63: ; preds = %.lr.ph, %66 - %64 = phi i32 [ %.promoted46, %.lr.ph ], [ %72, %66 ] - %65 = icmp sgt i32 %64, 0 - br i1 %65, label %66, label %.critedge + %63 = icmp sgt i32 %.promoted46, 0 + br i1 %63, label %.lr.ph50.preheader, label %.critedge + +.lr.ph50.preheader: ; preds = %.lr.ph + %64 = load i32, ptr %61, align 4 + %65 = load i32, ptr %62, align 8 + br label %.lr.ph50 + +.lr.ph50: ; preds = %.lr.ph50.preheader, %.lr.ph50 + %66 = phi i32 [ %70, %.lr.ph50 ], [ %.promoted46, %.lr.ph50.preheader ] + %67 = shl i32 %64, %66 + %68 = ashr i32 %67, 1 + %69 = add nsw i32 %65, %68 + %70 = add nsw i32 %66, -1 + %.not43 = icmp sge i32 %69, %60 + %71 = icmp sgt i32 %66, 1 + %or.cond = and i1 %.not43, %71 + br i1 %or.cond, label %.lr.ph50, label %.critedge.loopexit + +.critedge.loopexit: ; preds = %.lr.ph50 + store i32 %67, ptr %55, align 4 + store i32 %69, ptr %10, align 8 + store i32 %70, ptr %59, align 8 + br label %.critedge -66: ; preds = %63 - %67 = load i32, ptr %61, align 4 - %68 = shl i32 %67, %64 - store i32 %68, ptr %55, align 4 - %69 = load i32, ptr %62, align 8 - %70 = ashr i32 %68, 1 - %71 = add nsw i32 %69, %70 - store i32 %71, ptr %10, align 8 - %72 = add nsw i32 %64, -1 - store i32 %72, ptr %59, align 8 - %.not43 = icmp slt i32 %71, %60 - br i1 %.not43, label %.critedge, label %63 - -.critedge: ; preds = %63, %66, %52, %47, %9 +.critedge: ; preds = %.critedge.loopexit, %.lr.ph, %52, %47, %9 ret void } @@ -41353,24 +41358,27 @@ define internal fastcc range(i32 0, 2) i32 @stbi__build_huffman(ptr noundef nonn %9 = sext i32 %.06073 to i64 %smax = tail call i32 @llvm.smax.i32(i32 %.06073, i32 256) %10 = sub i32 %smax, %.06073 - br label %11 - -11: ; preds = %.lr.ph, %13 - %indvars.iv = phi i64 [ %9, %.lr.ph ], [ %indvars.iv.next, %13 ] - %.05572 = phi i32 [ 0, %.lr.ph ], [ %14, %13 ] - %12 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv - store i8 %8, ptr %12, align 1 - %exitcond = icmp eq i32 %.05572, %10 - br i1 %exitcond, label %.loopexit65.sink.split, label %13 - -13: ; preds = %11 - %indvars.iv.next = add nsw i64 %indvars.iv, 1 - %14 = add nuw nsw i32 %.05572, 1 + %11 = getelementptr inbounds i8, ptr %3, i64 %9 + store i8 %8, ptr %11, align 1 + %exitcond114 = icmp sgt i32 %.06073, 255 + br i1 %exitcond114, label %.loopexit65.sink.split, label %.lr.ph117 + +12: ; preds = %.lr.ph117 + %13 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv.next + store i8 %8, ptr %13, align 1 + %exitcond = icmp eq i32 %14, %10 + br i1 %exitcond, label %.loopexit65.sink.split, label %.lr.ph117 + +.lr.ph117: ; preds = %.lr.ph, %12 + %.05572116 = phi i32 [ %14, %12 ], [ 0, %.lr.ph ] + %indvars.iv115 = phi i64 [ %indvars.iv.next, %12 ], [ %9, %.lr.ph ] + %indvars.iv.next = add nsw i64 %indvars.iv115, 1 + %14 = add nuw nsw i32 %.05572116, 1 %15 = load i32, ptr %4, align 4 %16 = icmp slt i32 %14, %15 - br i1 %16, label %11, label %._crit_edge.loopexit + br i1 %16, label %12, label %._crit_edge.loopexit -._crit_edge.loopexit: ; preds = %13 +._crit_edge.loopexit: ; preds = %.lr.ph117 %17 = trunc nsw i64 %indvars.iv.next to i32 br label %._crit_edge @@ -41482,8 +41490,8 @@ define internal fastcc range(i32 0, 2) i32 @stbi__build_huffman(ptr noundef nonn %exitcond110.not = icmp eq i64 %indvars.iv.next107, %wide.trip.count br i1 %exitcond110.not, label %.loopexit65, label %50 -.loopexit65.sink.split: ; preds = %11, %._crit_edge78 - %.str.142.sink = phi ptr [ @.str.142, %._crit_edge78 ], [ @.str.141, %11 ] +.loopexit65.sink.split: ; preds = %.lr.ph, %12, %._crit_edge78 + %.str.142.sink = phi ptr [ @.str.142, %._crit_edge78 ], [ @.str.141, %12 ], [ @.str.141, %.lr.ph ] store ptr %.str.142.sink, ptr @stbi__g_failure_reason, align 8 br label %.loopexit65 diff --git a/bench/re2/optimized/re2.ll b/bench/re2/optimized/re2.ll index 4df783927f9..df692425efd 100644 --- a/bench/re2/optimized/re2.ll +++ b/bench/re2/optimized/re2.ll @@ -1951,11 +1951,11 @@ invoke.cont7.i: ; preds = %if.end12 br i1 %cmp.not3.i.i, label %invoke.cont19, label %invoke.cont7.i.for.body.preheader.i.i_crit_edge invoke.cont7.i.for.body.preheader.i.i_crit_edge: ; preds = %invoke.cont7.i - %.pre31 = shl nuw nsw i64 %conv, 4 + %.pre35 = shl nuw nsw i64 %conv, 4 br label %for.body.preheader.i.i for.body.preheader.i.i: ; preds = %invoke.cont7.i.for.body.preheader.i.i_crit_edge, %invoke.cont7.thread.i - %add.ptr.i.idx.i.pre-phi = phi i64 [ %.pre31, %invoke.cont7.i.for.body.preheader.i.i_crit_edge ], [ %mul.i.i.i.i.i, %invoke.cont7.thread.i ] + %add.ptr.i.idx.i.pre-phi = phi i64 [ %.pre35, %invoke.cont7.i.for.body.preheader.i.i_crit_edge ], [ %mul.i.i.i.i.i, %invoke.cont7.thread.i ] %retval.0.i.i8.i = phi ptr [ %vec_storage, %invoke.cont7.i.for.body.preheader.i.i_crit_edge ], [ %call5.i.i.i2.i.i18, %invoke.cont7.thread.i ] call void @llvm.memset.p0.i64(ptr nonnull align 8 %retval.0.i.i8.i, i8 0, i64 %add.ptr.i.idx.i.pre-phi, i1 false) %data_.i.i19.phi.trans.insert = getelementptr inbounds nuw i8, ptr %vec_storage, i64 280 @@ -2008,20 +2008,20 @@ if.then29: ; preds = %if.end27 if.end36: ; preds = %if.then29, %if.end27 %cmp38 = icmp eq ptr %args, null - %or.cond1 = or i1 %cmp38, %cmp13 - br i1 %or.cond1, label %cleanup, label %for.cond.preheader + %cmp4130 = icmp slt i32 %n, 1 + %or.cond33.not = or i1 %cmp38, %cmp4130 + br i1 %or.cond33.not, label %cleanup, label %for.body.preheader -for.cond.preheader: ; preds = %if.end36 - %smax = call i32 @llvm.smax.i32(i32 %n, i32 0) - %wide.trip.count = zext nneg i32 %smax to i64 - br label %for.cond +for.body.preheader: ; preds = %if.end36 + %wide.trip.count = zext nneg i32 %n to i64 + br label %for.body -for.cond: ; preds = %for.cond.preheader, %invoke.cont48 - %indvars.iv = phi i64 [ 0, %for.cond.preheader ], [ %indvars.iv.next, %invoke.cont48 ] - %exitcond.not = icmp eq i64 %indvars.iv, %wide.trip.count - br i1 %exitcond.not, label %cleanup, label %for.body +for.cond: ; preds = %invoke.cont48 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond.not, label %cleanup, label %for.body, !llvm.loop !18 -for.body: ; preds = %for.cond +for.body: ; preds = %for.body.preheader, %for.cond + %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.cond ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %arrayidx43 = getelementptr inbounds nuw %"class.absl::debian2::string_view", ptr %5, i64 %indvars.iv.next %s.sroa.0.0.copyload = load ptr, ptr %arrayidx43, align 8 @@ -2036,10 +2036,13 @@ for.body: ; preds = %for.cond to label %invoke.cont48 unwind label %lpad20.loopexit invoke.cont48: ; preds = %for.body - br i1 %call.i22, label %for.cond, label %cleanup, !llvm.loop !18 + br i1 %call.i22, label %for.cond, label %invoke.cont48.cleanup.loopexit_crit_edge, !llvm.loop !18 + +invoke.cont48.cleanup.loopexit_crit_edge: ; preds = %invoke.cont48 + br label %cleanup, !llvm.loop !18 -cleanup: ; preds = %for.cond, %invoke.cont48, %if.end36, %invoke.cont24 - %retval.1 = phi i1 [ false, %invoke.cont24 ], [ true, %if.end36 ], [ %exitcond.not, %invoke.cont48 ], [ %exitcond.not, %for.cond ] +cleanup: ; preds = %for.cond, %invoke.cont48.cleanup.loopexit_crit_edge, %if.end36, %invoke.cont24 + %retval.1 = phi i1 [ false, %invoke.cont24 ], [ true, %if.end36 ], [ false, %invoke.cont48.cleanup.loopexit_crit_edge ], [ true, %for.cond ] %11 = load i64, ptr %size_alloc_.i.i, align 8 %cmp.i.i.i24 = icmp ult i64 %11, 18 br i1 %cmp.i.i.i24, label %return, label %invoke.cont11.i.i25 diff --git a/bench/re2/optimized/set.ll b/bench/re2/optimized/set.ll index c79ebc31161..c2421729323 100644 --- a/bench/re2/optimized/set.ll +++ b/bench/re2/optimized/set.ll @@ -1620,17 +1620,17 @@ while.body.lr.ph: ; preds = %entry %add.ptr.i2.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 40 %second.i.i.i23.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 32 %second3.i.i.i18.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 72 - br label %while.body + %cmp2106 = icmp eq i64 %__depth_limit, 0 + br i1 %cmp2106, label %if.then, label %if.end -while.body: ; preds = %while.body.lr.ph, %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit" - %sub.ptr.sub.i42 = phi i64 [ %sub.ptr.sub.i38, %while.body.lr.ph ], [ %sub.ptr.sub.i, %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit" ] - %__depth_limit.addr.041 = phi i64 [ %__depth_limit, %while.body.lr.ph ], [ %dec, %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit" ] - %storemerge40 = phi ptr [ %__last.coerce, %while.body.lr.ph ], [ %__first.sroa.0.1.i.i, %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit" ] - %cmp2 = icmp eq i64 %__depth_limit.addr.041, 0 - br i1 %cmp2, label %if.then, label %if.end +while.body: ; preds = %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit" + %cmp2 = icmp eq i64 %dec, 0 + br i1 %cmp2, label %if.then, label %if.end, !llvm.loop !26 -if.then: ; preds = %while.body - %sub.ptr.div.i.le = udiv exact i64 %sub.ptr.sub.i42, 40 +if.then: ; preds = %while.body, %while.body.lr.ph + %sub.ptr.sub.i42.lcssa = phi i64 [ %sub.ptr.sub.i38, %while.body.lr.ph ], [ %sub.ptr.sub.i, %while.body ] + %storemerge40.lcssa = phi ptr [ %__last.coerce, %while.body.lr.ph ], [ %__first.sroa.0.1.i.i, %while.body ] + %sub.ptr.div.i.le = udiv exact i64 %sub.ptr.sub.i42.lcssa, 40 call void @llvm.lifetime.start.p0(ptr nonnull %__value.i.i.i) call void @llvm.lifetime.start.p0(ptr nonnull %agg.tmp6.i.i.i) %sub.i.i.i = add nsw i64 %sub.ptr.div.i.le, -2 @@ -1664,7 +1664,7 @@ while.body.i.i.i: ; preds = %while.body.i.i.i, % br label %while.body.i.i while.body.i.i: ; preds = %while.body.i.i, %"_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEEvT_SO_RT0_.exit.i.i.thread" - %__last.sroa.0.05.i.i = phi ptr [ %storemerge40, %"_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEEvT_SO_RT0_.exit.i.i.thread" ], [ %incdec.ptr.i.i6.i, %while.body.i.i ] + %__last.sroa.0.05.i.i = phi ptr [ %storemerge40.lcssa, %"_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEEvT_SO_RT0_.exit.i.i.thread" ], [ %incdec.ptr.i.i6.i, %while.body.i.i ] %incdec.ptr.i.i6.i = getelementptr inbounds i8, ptr %__last.sroa.0.05.i.i, i64 -40 call void @llvm.lifetime.start.p0(ptr nonnull %__value.i.i1.i) call void @llvm.lifetime.start.p0(ptr nonnull %agg.tmp7.i.i2.i) @@ -1687,13 +1687,16 @@ while.body.i.i: ; preds = %while.body.i.i, %"_ call void @llvm.lifetime.end.p0(ptr nonnull %__value.i.i1.i) call void @llvm.lifetime.end.p0(ptr nonnull %agg.tmp7.i.i2.i) %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i10.i, 40 - br i1 %cmp.i.i, label %while.body.i.i, label %while.end, !llvm.loop !26 - -if.end: ; preds = %while.body - %dec = add nsw i64 %__depth_limit.addr.041, -1 - %div.i = udiv i64 %sub.ptr.sub.i42, 80 + br i1 %cmp.i.i, label %while.body.i.i, label %while.end, !llvm.loop !27 + +if.end: ; preds = %while.body.lr.ph, %while.body + %storemerge40109 = phi ptr [ %__first.sroa.0.1.i.i, %while.body ], [ %__last.coerce, %while.body.lr.ph ] + %__depth_limit.addr.041108 = phi i64 [ %dec, %while.body ], [ %__depth_limit, %while.body.lr.ph ] + %sub.ptr.sub.i42107 = phi i64 [ %sub.ptr.sub.i, %while.body ], [ %sub.ptr.sub.i38, %while.body.lr.ph ] + %dec = add nsw i64 %__depth_limit.addr.041108, -1 + %div.i = udiv i64 %sub.ptr.sub.i42107, 80 %add.ptr.i.i = getelementptr inbounds nuw %"struct.std::pair", ptr %__first.coerce, i64 %div.i - %add.ptr.i3.i = getelementptr inbounds i8, ptr %storemerge40, i64 -40 + %add.ptr.i3.i = getelementptr inbounds i8, ptr %storemerge40109, i64 -40 %call.i.i.i.i.i = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(40) %add.ptr.i2.i, ptr noundef nonnull align 8 dereferenceable(40) %add.ptr.i.i) to label %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit.i.i" unwind label %terminate.lpad.i.i.i.i.i @@ -1749,7 +1752,7 @@ terminate.lpad.i.i.i6.i.i: ; preds = %if.else.i.i if.then22.i.i: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit8.i.i" tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_(ptr noundef nonnull align 8 dereferenceable(40) %__first.coerce, ptr noundef nonnull align 8 dereferenceable(40) %add.ptr.i3.i) #19 - %second3.i.i.i10.i.i = getelementptr inbounds i8, ptr %storemerge40, i64 -8 + %second3.i.i.i10.i.i = getelementptr inbounds i8, ptr %storemerge40109, i64 -8 %13 = load ptr, ptr %second.i.i.i23.i.i, align 8 %14 = load ptr, ptr %second3.i.i.i10.i.i, align 8 store ptr %14, ptr %second.i.i.i23.i.i, align 8 @@ -1804,7 +1807,7 @@ terminate.lpad.i.i.i20.i.i: ; preds = %if.else44.i.i if.then50.i.i: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit22.i.i" tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_(ptr noundef nonnull align 8 dereferenceable(40) %__first.coerce, ptr noundef nonnull align 8 dereferenceable(40) %add.ptr.i3.i) #19 - %second3.i.i.i24.i.i = getelementptr inbounds i8, ptr %storemerge40, i64 -8 + %second3.i.i.i24.i.i = getelementptr inbounds i8, ptr %storemerge40109, i64 -8 %23 = load ptr, ptr %second.i.i.i23.i.i, align 8 %24 = load ptr, ptr %second3.i.i.i24.i.i, align 8 store ptr %24, ptr %second.i.i.i23.i.i, align 8 @@ -1825,7 +1828,7 @@ while.body.i.i5.preheader: ; preds = %if.else55.i.i, %if. while.body.i.i5: ; preds = %while.body.i.i5.preheader, %if.end.i.i %__first.sroa.0.0.i.i = phi ptr [ %incdec.ptr.i7.i.i, %if.end.i.i ], [ %add.ptr.i2.i, %while.body.i.i5.preheader ] - %__last.sroa.0.0.i.i = phi ptr [ %__last.sroa.0.1.i.i, %if.end.i.i ], [ %storemerge40, %while.body.i.i5.preheader ] + %__last.sroa.0.0.i.i = phi ptr [ %__last.sroa.0.1.i.i, %if.end.i.i ], [ %storemerge40109, %while.body.i.i5.preheader ] br label %while.cond3.i.i while.cond3.i.i: ; preds = %while.body7.i.i, %while.body.i.i5 @@ -1846,7 +1849,7 @@ terminate.lpad.i.i.i.i6.i: ; preds = %while.cond3.i.i while.body7.i.i: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit.i7.i" %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 - br label %while.cond3.i.i, !llvm.loop !27 + br label %while.cond3.i.i, !llvm.loop !28 while.cond10.i.i: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit.i7.i", %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit5.i.i" %__last.sroa.0.0.pn.i.i = phi ptr [ %__last.sroa.0.1.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit5.i.i" ], [ %__last.sroa.0.0.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit.i7.i" ] @@ -1863,7 +1866,7 @@ terminate.lpad.i.i.i3.i.i: ; preds = %while.cond10.i.i "_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit5.i.i": ; preds = %while.cond10.i.i %cmp.i.i.i4.i.i = icmp slt i32 %call.i.i.i2.i.i, 0 - br i1 %cmp.i.i.i4.i.i, label %while.cond10.i.i, label %while.end18.i.i, !llvm.loop !28 + br i1 %cmp.i.i.i4.i.i, label %while.cond10.i.i, label %while.end18.i.i, !llvm.loop !29 while.end18.i.i: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN3re23RE23Set7CompileEvE3$_0EclINS_17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS2_6RegexpEESt6vectorISI_SaISI_EEEESN_EEbT_T0_.exit5.i.i" %cmp.i.i.i6 = icmp ult ptr %__first.sroa.0.1.i.i, %__last.sroa.0.1.i.i @@ -1878,14 +1881,14 @@ if.end.i.i: ; preds = %while.end18.i.i store ptr %32, ptr %second.i.i.i.i10.i, align 8 store ptr %31, ptr %second3.i.i.i.i11.i, align 8 %incdec.ptr.i7.i.i = getelementptr inbounds nuw i8, ptr %__first.sroa.0.1.i.i, i64 40 - br label %while.body.i.i5, !llvm.loop !29 + br label %while.body.i.i5, !llvm.loop !30 "_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit": ; preds = %while.end18.i.i - tail call fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEElNS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEEvT_SO_T0_T1_"(ptr nonnull %__first.sroa.0.1.i.i, ptr %storemerge40, i64 noundef %dec) + tail call fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEElNS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEEvT_SO_T0_T1_"(ptr nonnull %__first.sroa.0.1.i.i, ptr %storemerge40109, i64 noundef %dec) %sub.ptr.lhs.cast.i = ptrtoint ptr %__first.sroa.0.1.i.i to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %cmp = icmp sgt i64 %sub.ptr.sub.i, 640 - br i1 %cmp, label %while.body, label %while.end, !llvm.loop !30 + br i1 %cmp, label %while.body, label %while.end, !llvm.loop !26 while.end: ; preds = %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3re26RegexpEESt6vectorISC_SaISC_EEEENS0_5__ops15_Iter_comp_iterIZNS9_3RE23Set7CompileEvE3$_0EEET_SO_SO_T0_.exit", %while.body.i.i, %entry ret void diff --git a/bench/redis/optimized/networking.ll b/bench/redis/optimized/networking.ll index b91e2e2aaa0..5be9a40da30 100644 --- a/bench/redis/optimized/networking.ll +++ b/bench/redis/optimized/networking.ll @@ -14705,39 +14705,38 @@ define dso_local void @processEventsWhileBlocked() local_unnamed_addr #0 { %3 = load i32, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 %4 = add nsw i32 %3, 1 store i32 %4, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 + %.pre = load i64, ptr getelementptr inbounds nuw (i8, ptr @server, i64 2392), align 8, !tbaa !276 br label %5 -5: ; preds = %6, %0 - %.06 = phi i32 [ 4, %0 ], [ %7, %6 ] - %.not = icmp eq i32 %.06, 0 - br i1 %.not, label %14, label %6 - -6: ; preds = %5 - %7 = add nsw i32 %.06, -1 - %8 = load i64, ptr getelementptr inbounds nuw (i8, ptr @server, i64 2392), align 8, !tbaa !276 - %9 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @server, i64 88), align 8, !tbaa !277 - %10 = tail call i32 @aeProcessEvents(ptr noundef %9, i32 noundef 29) #26 - %11 = sext i32 %10 to i64 - %12 = load i64, ptr getelementptr inbounds nuw (i8, ptr @server, i64 2392), align 8, !tbaa !276 - %13 = add nsw i64 %12, %11 - store i64 %13, ptr getelementptr inbounds nuw (i8, ptr @server, i64 2392), align 8, !tbaa !276 - %.not7 = icmp eq i64 %13, %8 - br i1 %.not7, label %14, label %5 +5: ; preds = %5, %0 + %6 = phi i64 [ %.pre, %0 ], [ %11, %5 ] + %.068 = phi i32 [ 4, %0 ], [ %12, %5 ] + %7 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @server, i64 88), align 8, !tbaa !277 + %8 = tail call i32 @aeProcessEvents(ptr noundef %7, i32 noundef 29) #26 + %9 = sext i32 %8 to i64 + %10 = load i64, ptr getelementptr inbounds nuw (i8, ptr @server, i64 2392), align 8, !tbaa !276 + %11 = add nsw i64 %10, %9 + store i64 %11, ptr getelementptr inbounds nuw (i8, ptr @server, i64 2392), align 8, !tbaa !276 + %.not7 = icmp eq i64 %11, %6 + %12 = add nsw i32 %.068, -1 + %.not = icmp eq i32 %12, 0 + %or.cond = select i1 %.not7, i1 true, i1 %.not + br i1 %or.cond, label %13, label %5 -14: ; preds = %6, %5 +13: ; preds = %5 tail call void @whileBlockedCron() #26 - %15 = load i32, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 - %16 = add nsw i32 %15, -1 - store i32 %16, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 - %17 = icmp sgt i32 %15, 0 - br i1 %17, label %19, label %18, !prof !5 + %14 = load i32, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 + %15 = add nsw i32 %14, -1 + store i32 %15, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 + %16 = icmp sgt i32 %14, 0 + br i1 %16, label %18, label %17, !prof !5 -18: ; preds = %14 +17: ; preds = %13 tail call void @_serverAssert(ptr noundef nonnull @.str.243, ptr noundef nonnull @.str.1, i32 noundef 4492) #26 tail call void @abort() #27 unreachable -19: ; preds = %14 +18: ; preds = %13 store i64 %1, ptr getelementptr inbounds nuw (i8, ptr @server, i64 7824), align 8, !tbaa !275 ret void } diff --git a/bench/redis/optimized/tracking.ll b/bench/redis/optimized/tracking.ll index 22638799b2c..cee74ae0e2c 100644 --- a/bench/redis/optimized/tracking.ll +++ b/bench/redis/optimized/tracking.ll @@ -1566,47 +1566,51 @@ define dso_local void @trackingLimitUsedSlots() local_unnamed_addr #0 { call void @llvm.lifetime.start.p0(ptr nonnull %1) %13 = load ptr, ptr @TrackingTable, align 8, !tbaa !31 call void @raxStart(ptr noundef nonnull %1, ptr noundef %13) #9 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 32 - br label %.critedge - -.critedge: ; preds = %21, %9 - %.07 = phi i32 [ %12, %9 ], [ %22, %21 ] - %16 = icmp sgt i32 %.07, 0 - br i1 %16, label %17, label %29 - -17: ; preds = %.critedge - %18 = call i32 @raxSeek(ptr noundef nonnull %1, ptr noundef nonnull @.str, ptr noundef null, i64 noundef 0) #9 - %19 = call i32 @raxRandomWalk(ptr noundef nonnull %1, i64 noundef 0) #9 - %20 = call i32 @raxEOF(ptr noundef nonnull %1) #9 - %.not10 = icmp eq i32 %20, 0 - br i1 %.not10, label %21, label %29 - -21: ; preds = %17 - %22 = add nsw i32 %.07, -1 - %23 = load ptr, ptr %14, align 8, !tbaa !32 - %24 = load i64, ptr %15, align 8, !tbaa !36 - %25 = call ptr @createStringObject(ptr noundef %23, i64 noundef %24) #9 - call void @trackingInvalidateKey(ptr noundef null, ptr noundef %25, i32 noundef 0) - call void @decrRefCount(ptr noundef %25) #9 - %26 = load ptr, ptr @TrackingTable, align 8, !tbaa !31 - %27 = call i64 @raxSize(ptr noundef %26) #9 - %.not11 = icmp ugt i64 %27, %4 - br i1 %.not11, label %.critedge, label %28 - -28: ; preds = %21 + %14 = icmp sgt i32 %12, 0 + br i1 %14, label %.lr.ph, label %._crit_edge + +.lr.ph: ; preds = %9 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %16 = getelementptr inbounds nuw i8, ptr %1, i64 32 + br label %19 + +.critedge: ; preds = %23 + %17 = add nsw i32 %.0712, -1 + %18 = icmp sgt i32 %.0712, 1 + br i1 %18, label %19, label %._crit_edge + +19: ; preds = %.lr.ph, %.critedge + %.0712 = phi i32 [ %12, %.lr.ph ], [ %17, %.critedge ] + %20 = call i32 @raxSeek(ptr noundef nonnull %1, ptr noundef nonnull @.str, ptr noundef null, i64 noundef 0) #9 + %21 = call i32 @raxRandomWalk(ptr noundef nonnull %1, i64 noundef 0) #9 + %22 = call i32 @raxEOF(ptr noundef nonnull %1) #9 + %.not10 = icmp eq i32 %22, 0 + br i1 %.not10, label %23, label %._crit_edge + +23: ; preds = %19 + %24 = load ptr, ptr %15, align 8, !tbaa !32 + %25 = load i64, ptr %16, align 8, !tbaa !36 + %26 = call ptr @createStringObject(ptr noundef %24, i64 noundef %25) #9 + call void @trackingInvalidateKey(ptr noundef null, ptr noundef %26, i32 noundef 0) + call void @decrRefCount(ptr noundef %26) #9 + %27 = load ptr, ptr @TrackingTable, align 8, !tbaa !31 + %28 = call i64 @raxSize(ptr noundef %27) #9 + %.not11 = icmp ugt i64 %28, %4 + br i1 %.not11, label %.critedge, label %29 + +29: ; preds = %23 store i32 0, ptr @trackingLimitUsedSlots.timeout_counter, align 4, !tbaa !70 call void @raxStop(ptr noundef nonnull %1) #9 br label %32, !llvm.loop !111 -29: ; preds = %17, %.critedge +._crit_edge: ; preds = %.critedge, %19, %9 call void @raxStop(ptr noundef nonnull %1) #9 %30 = load i32, ptr @trackingLimitUsedSlots.timeout_counter, align 4, !tbaa !70 %31 = add i32 %30, 1 store i32 %31, ptr @trackingLimitUsedSlots.timeout_counter, align 4, !tbaa !70 br label %32 -32: ; preds = %28, %29 +32: ; preds = %29, %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %33 diff --git a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll index ccb2d18dba2..d4196e36a96 100644 --- a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll +++ b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll @@ -1742,7 +1742,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %20 = lshr i64 %13, 3 %21 = add nuw nsw i64 %20, %19 %.not = icmp eq i64 %2, %21 - br i1 %.not, label %22, label %64 + br i1 %.not, label %22, label %63 22: ; preds = %4 call void @llvm.lifetime.start.p0(ptr nonnull %6) @@ -1762,7 +1762,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 .body: ; preds = %34, %44, %28 %.pn = phi { ptr, i32 } [ %29, %28 ], [ %35, %34 ], [ %45, %44 ] invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) - to label %"_ZN4core3ptr71drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..N$GT$$GT$17hca841a5ba4c97177E.exit" unwind label %67 + to label %"_ZN4core3ptr71drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..N$GT$$GT$17hca841a5ba4c97177E.exit" unwind label %66 28: ; preds = %32, %25 %29 = landingpad { ptr, i32 } @@ -1777,7 +1777,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %33 = invoke { ptr, i64 } @_ZN4ring3rsa10public_key5Inner17exponentiate_elem17h311edcef4128318fE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %6) to label %36 unwind label %28 -34: ; preds = %60 +34: ; preds = %.loopexit.i %35 = landingpad { ptr, i32 } cleanup br label %.body @@ -1806,7 +1806,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %45 = landingpad { ptr, i32 } cleanup invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) - to label %.body unwind label %61 + to label %.body unwind label %60 46: ; preds = %36 invoke void @_ZN4ring4limb21big_endian_from_limbs17h8493c2949eb38239E(ptr noalias noundef nonnull readonly align 8 %37, i64 noundef %38, ptr noalias noundef nonnull align 1 dereferenceable(1024) %3, i64 noundef %41) @@ -1819,62 +1819,63 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 48: ; preds = %47 %49 = sub nuw nsw i64 %41, %2 %50 = getelementptr inbounds nuw i8, ptr %3, i64 %49 - br label %51 + %51 = icmp eq i64 %41, %2 + br i1 %51, label %.loopexit.i, label %.lr.ph.i.i -51: ; preds = %54, %48 - %52 = phi ptr [ %55, %54 ], [ %3, %48 ] - %53 = icmp eq ptr %52, %50 - br i1 %53, label %60, label %54 +52: ; preds = %.lr.ph.i.i + %53 = getelementptr inbounds nuw i8, ptr %55, i64 1 + %54 = icmp eq ptr %53, %50 + br i1 %54, label %.loopexit.i, label %.lr.ph.i.i -54: ; preds = %51 - %55 = getelementptr inbounds nuw i8, ptr %52, i64 1 - %.val.i.i = load i8, ptr %52, align 1, !alias.scope !440, !noalias !445, !noundef !7 +.lr.ph.i.i: ; preds = %48, %52 + %55 = phi ptr [ %53, %52 ], [ %3, %48 ] + %.val.i.i = load i8, ptr %55, align 1, !alias.scope !440, !noalias !445, !noundef !7 %56 = icmp eq i8 %.val.i.i, 0 - br i1 %56, label %51, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i" + br i1 %56, label %52, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i": ; preds = %54, %47 - %57 = phi ptr [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.31, %47 ], [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.33, %54 ] - %58 = phi i64 [ 35, %47 ], [ 49, %54 ] - %59 = phi ptr [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.32, %47 ], [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.34, %54 ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i": ; preds = %.lr.ph.i.i, %47 + %57 = phi ptr [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.31, %47 ], [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.33, %.lr.ph.i.i ] + %58 = phi i64 [ 35, %47 ], [ 49, %.lr.ph.i.i ] + %59 = phi ptr [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.32, %47 ], [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.34, %.lr.ph.i.i ] invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 %57, i64 noundef %58, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %59) #19 to label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.cont.i" unwind label %44 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.cont.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i" unreachable -60: ; preds = %51 +.loopexit.i: ; preds = %52, %48 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) - to label %63 unwind label %34 + to label %62 unwind label %34 -61: ; preds = %44 - %62 = landingpad { ptr, i32 } +60: ; preds = %44 + %61 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #20 unreachable -63: ; preds = %60 +62: ; preds = %.loopexit.i call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.sink.split.sink.split -.sink.split.sink.split: ; preds = %30, %63 - %.sroa.02.2.ph.ph = phi ptr [ %50, %63 ], [ null, %30 ] +.sink.split.sink.split: ; preds = %30, %62 + %.sroa.02.2.ph.ph = phi ptr [ %50, %62 ], [ null, %30 ] call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) br label %.sink.split .sink.split: ; preds = %.sink.split.sink.split, %22 %.sroa.02.2.ph = phi ptr [ null, %22 ], [ %.sroa.02.2.ph.ph, %.sink.split.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %64 + br label %63 -64: ; preds = %.sink.split, %4 +63: ; preds = %.sink.split, %4 %.sroa.02.2 = phi ptr [ null, %4 ], [ %.sroa.02.2.ph, %.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %7) - %65 = insertvalue { ptr, i64 } poison, ptr %.sroa.02.2, 0 - %66 = insertvalue { ptr, i64 } %65, i64 %2, 1 - ret { ptr, i64 } %66 + %64 = insertvalue { ptr, i64 } poison, ptr %.sroa.02.2, 0 + %65 = insertvalue { ptr, i64 } %64, i64 %2, 1 + ret { ptr, i64 } %65 -67: ; preds = %.body - %68 = landingpad { ptr, i32 } +66: ; preds = %.body + %67 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #20 unreachable diff --git a/bench/rocksdb/optimized/plain_table_reader.ll b/bench/rocksdb/optimized/plain_table_reader.ll index 7c0d39b0558..074f926bd95 100644 --- a/bench/rocksdb/optimized/plain_table_reader.ll +++ b/bench/rocksdb/optimized/plain_table_reader.ll @@ -8463,8 +8463,8 @@ define linkonce_odr void @_ZN7rocksdb11TableReader8MultiGetERKNS_11ReadOptionsEP _ZNK7rocksdb15MultiGetContext5Range5beginEv.exit: ; preds = %21, %5 %storemerge.lcssa.i.i = phi i64 [ %8, %5 ], [ %storemerge3.i.i, %21 ] - %.not17 = icmp eq i64 %storemerge.lcssa.i.i, %11 - br i1 %.not17, label %._crit_edge, label %.lr.ph + %.not18 = icmp eq i64 %storemerge.lcssa.i.i, %11 + br i1 %.not18, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZNK7rocksdb15MultiGetContext5Range5beginEv.exit %26 = getelementptr inbounds nuw i8, ptr %9, i64 3584 @@ -8478,13 +8478,13 @@ _ZNK7rocksdb15MultiGetContext5Range5beginEv.exit: ; preds = %21, %5 %34 = getelementptr inbounds nuw i8, ptr %2, i64 32 br label %35 -._crit_edge: ; preds = %24, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, %_ZNK7rocksdb15MultiGetContext5Range5beginEv.exit +._crit_edge: ; preds = %24, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, %73, %_ZNK7rocksdb15MultiGetContext5Range5beginEv.exit ret void 35: ; preds = %.lr.ph, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit - %.sroa.8.018 = phi i64 [ %storemerge.lcssa.i.i, %.lr.ph ], [ %.lcssa.i, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit ] + %.sroa.8.019 = phi i64 [ %storemerge.lcssa.i.i, %.lr.ph ], [ %.lcssa.i, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit ] call void @llvm.lifetime.start.p0(ptr nonnull %6) - %36 = getelementptr inbounds nuw ptr, ptr %26, i64 %.sroa.8.018 + %36 = getelementptr inbounds nuw ptr, ptr %26, i64 %.sroa.8.019 %37 = load ptr, ptr %36, align 8, !tbaa !476 %38 = getelementptr inbounds nuw i8, ptr %37, i64 48 %39 = getelementptr inbounds nuw i8, ptr %37, i64 160 @@ -8547,32 +8547,37 @@ _ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_E _ZN7rocksdb6StatusD2Ev.exit: ; preds = %_ZN7rocksdb6StatusaSEOS0_.exit, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %6) %63 = load i64, ptr %10, align 8, !tbaa !463 - %64 = add i64 %.sroa.8.018, 1 - %umax.i = call i64 @llvm.umax.i64(i64 %63, i64 %64) - %65 = add i64 %umax.i, -1 - br label %66 - -66: ; preds = %68, %_ZN7rocksdb6StatusD2Ev.exit - %67 = phi i64 [ %69, %68 ], [ %.sroa.8.018, %_ZN7rocksdb6StatusD2Ev.exit ] - %exitcond.not = icmp eq i64 %67, %65 - br i1 %exitcond.not, label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, label %68 - -68: ; preds = %66 - %69 = add i64 %67, 1 - %70 = shl nuw i64 1, %69 - %71 = load ptr, ptr %2, align 8, !tbaa !462 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 3848 - %73 = load i64, ptr %72, align 8, !tbaa !464 - %74 = load i64, ptr %33, align 8, !tbaa !473 - %75 = or i64 %74, %73 - %76 = load i64, ptr %34, align 8, !tbaa !474 - %77 = or i64 %75, %76 - %78 = and i64 %77, %70 + %64 = add i64 %.sroa.8.019, 1 + %65 = icmp ult i64 %64, %63 + br i1 %65, label %.lr.ph.i, label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit + +.lr.ph.i: ; preds = %_ZN7rocksdb6StatusD2Ev.exit + %66 = load ptr, ptr %2, align 8, !tbaa !462 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 3848 + %68 = load i64, ptr %67, align 8, !tbaa !464 + %69 = load i64, ptr %33, align 8, !tbaa !473 + %70 = or i64 %69, %68 + %71 = load i64, ptr %34, align 8, !tbaa !474 + %72 = or i64 %70, %71 + br label %75 + +73: ; preds = %75 + %74 = add nuw i64 %76, 1 + %exitcond.not.i = icmp eq i64 %74, %63 + br i1 %exitcond.not.i, label %._crit_edge, label %75, !llvm.loop !502 + +75: ; preds = %73, %.lr.ph.i + %76 = phi i64 [ %64, %.lr.ph.i ], [ %74, %73 ] + %77 = shl nuw i64 1, %76 + %78 = and i64 %77, %72 %.not.i6 = icmp eq i64 %78, 0 - br i1 %.not.i6, label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, label %66, !llvm.loop !502 + br i1 %.not.i6, label %..critedge_crit_edge1.i, label %73, !llvm.loop !502 -_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit: ; preds = %66, %68 - %.lcssa.i = phi i64 [ %umax.i, %66 ], [ %69, %68 ] +..critedge_crit_edge1.i: ; preds = %75 + br label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, !llvm.loop !502 + +_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit: ; preds = %_ZN7rocksdb6StatusD2Ev.exit, %..critedge_crit_edge1.i + %.lcssa.i = phi i64 [ %76, %..critedge_crit_edge1.i ], [ %64, %_ZN7rocksdb6StatusD2Ev.exit ] %.not = icmp eq i64 %.lcssa.i, %63 br i1 %.not, label %._crit_edge, label %35, !llvm.loop !503 } @@ -13983,9 +13988,6 @@ declare i32 @llvm.fshl.i32(i32, i32, i32) #30 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #31 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #30 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #30 @@ -13995,6 +13997,9 @@ declare i64 @llvm.smax.i64(i64, i64) #30 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #30 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #30 + attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #1 = { inlinehint uwtable "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-avx512,-amx-bf16,-amx-complex,-amx-fp16,-amx-fp8,-amx-int8,-amx-movrs,-amx-tf32,-amx-tile,-amx-transpose,-avx10.1-256,-avx10.1-512,-avx10.2-256,-avx10.2-512,-avx512bf16,-avx512fp16,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-movrs,-mwaitx,-ndd,-nf,-pconfig,-ppx,-prefetchi,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop,-zu" } attributes #2 = { mustprogress nounwind uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-avx512,-amx-bf16,-amx-complex,-amx-fp16,-amx-fp8,-amx-int8,-amx-movrs,-amx-tf32,-amx-tile,-amx-transpose,-avx10.1-256,-avx10.1-512,-avx10.2-256,-avx10.2-512,-avx512bf16,-avx512fp16,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-movrs,-mwaitx,-ndd,-nf,-pconfig,-ppx,-prefetchi,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop,-zu" } diff --git a/bench/ruby/optimized/date_core.ll b/bench/ruby/optimized/date_core.ll index f71df7a2f5c..91a316ac107 100644 --- a/bench/ruby/optimized/date_core.ll +++ b/bench/ruby/optimized/date_core.ll @@ -9393,20 +9393,24 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(ptr nonnull %10) %134 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %.0.i38, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) %.not54 = icmp eq i32 %134, 0 - br i1 %.not54, label %.lr.ph, label %._crit_edge + br i1 %.not54, label %.lr.ph.preheader, label %._crit_edge -.lr.ph: ; preds = %m_sg.exit, %138 - %.02855 = phi i32 [ %139, %138 ], [ %.0.i38, %m_sg.exit ] - %135 = icmp slt i32 %.02855, 2 - br i1 %135, label %136, label %138 +.lr.ph.preheader: ; preds = %m_sg.exit + %135 = icmp samesign ult i32 %.0.i38, 2 + br i1 %135, label %.lr.ph._crit_edge, label %.lr.ph62 -136: ; preds = %.lr.ph +.lr.ph: ; preds = %.lr.ph62 + %136 = icmp slt i32 %.0285561, 3 + br i1 %136, label %.lr.ph._crit_edge, label %.lr.ph62 + +.lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader %137 = load i64, ptr @eDateError, align 8, !tbaa !6 tail call void (i64, ptr, ...) @rb_raise(i64 noundef %137, ptr noundef nonnull @.str.168) #22 unreachable -138: ; preds = %.lr.ph - %139 = add nsw i32 %.02855, -1 +.lr.ph62: ; preds = %.lr.ph.preheader, %.lr.ph + %.0285561 = phi i32 [ %138, %.lr.ph ], [ %.0.i38, %.lr.ph.preheader ] + %138 = add nsw i32 %.0285561, -1 call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) @@ -9415,42 +9419,42 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.lifetime.start.p0(ptr nonnull %10) - %140 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %139, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) - %.not = icmp eq i32 %140, 0 + %139 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %138, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) + %.not = icmp eq i32 %139, 0 br i1 %.not, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %138, %m_sg.exit +._crit_edge: ; preds = %.lr.ph62, %m_sg.exit call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) - %141 = load i64, ptr %4, align 8, !tbaa !6 - %142 = load i32, ptr %6, align 4, !tbaa !33 - call fastcc void @encode_jd(i64 noundef %141, i32 noundef %142, ptr noundef %5) - %143 = load i64, ptr %5, align 8, !tbaa !6 + %140 = load i64, ptr %4, align 8, !tbaa !6 + %141 = load i32, ptr %6, align 4, !tbaa !33 + call fastcc void @encode_jd(i64 noundef %140, i32 noundef %141, ptr noundef %5) + %142 = load i64, ptr %5, align 8, !tbaa !6 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %144 = load i32, ptr %11, align 8, !tbaa !47 - %145 = and i32 %144, 128 - %.not.i.i50 = icmp eq i32 %145, 0 - br i1 %.not.i.i50, label %m_real_local_jd.exit, label %146 + %143 = load i32, ptr %11, align 8, !tbaa !47 + %144 = and i32 %143, 128 + %.not.i.i50 = icmp eq i32 %144, 0 + br i1 %.not.i.i50, label %m_real_local_jd.exit, label %145 -146: ; preds = %._crit_edge +145: ; preds = %._crit_edge tail call fastcc void @get_c_civil(ptr noundef nonnull %11) br label %m_real_local_jd.exit -m_real_local_jd.exit: ; preds = %._crit_edge, %146 +m_real_local_jd.exit: ; preds = %._crit_edge, %145 %.0.in.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 %.0.i.i = load i64, ptr %.0.in.i.i, align 8, !tbaa !47 - %147 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) - call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %147, ptr noundef %3) - %148 = load i64, ptr %3, align 8, !tbaa !6 + %146 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) + call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %146, ptr noundef %3) + %147 = load i64, ptr %3, align 8, !tbaa !6 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %149 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %143, i64 noundef 45, i32 noundef 1, i64 noundef %148) #21 - %150 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %149) + %148 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %142, i64 noundef 45, i32 noundef 1, i64 noundef %147) #21 + %149 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %148) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) - ret i64 %150 + ret i64 %149 } ; Function Attrs: nounwind sspstrong uwtable diff --git a/bench/ruff-rs/optimized/2stcslco4i4t6tsofnxak4n4v.ll b/bench/ruff-rs/optimized/2stcslco4i4t6tsofnxak4n4v.ll index 677ef43643a..0bcf4522dcd 100644 --- a/bench/ruff-rs/optimized/2stcslco4i4t6tsofnxak4n4v.ll +++ b/bench/ruff-rs/optimized/2stcslco4i4t6tsofnxak4n4v.ll @@ -957,7 +957,12 @@ define noundef zeroext i1 @"_ZN66_$LT$ty_ide..hover..DisplayHover$u20$as$u20$cor %8 = load ptr, ptr %7, align 8, !nonnull !11, !noundef !11 %9 = getelementptr inbounds nuw i8, ptr %6, i64 16 %10 = load i64, ptr %9, align 8, !noundef !11 - %11 = getelementptr inbounds nuw { { i8, [15 x i8] } }, ptr %8, i64 %10 + %.idx = shl nuw nsw i64 %10, 4 + %11 = getelementptr inbounds nuw i8, ptr %8, i64 %.idx + %.not = icmp eq i64 %10, 0 + br i1 %.not, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %2 %12 = getelementptr inbounds nuw i8, ptr %0, i64 24 %13 = load i8, ptr %12, align 8, !range !153 %14 = trunc nuw i8 %13 to i1 @@ -968,17 +973,17 @@ define noundef zeroext i1 @"_ZN66_$LT$ty_ide..hover..DisplayHover$u20$as$u20$cor %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 %20 = getelementptr inbounds nuw i8, ptr %3, i64 8 %21 = getelementptr inbounds nuw i8, ptr %3, i64 40 - br label %22 + br label %23 -22: ; preds = %29, %2 - %.sroa.02.0 = phi i1 [ true, %2 ], [ false, %29 ] - %.sroa.03.0 = phi ptr [ %8, %2 ], [ %24, %29 ] - %.not.not.not.not.not = icmp ne ptr %.sroa.03.0, %11 - br i1 %.not.not.not.not.not, label %23, label %.loopexit +22: ; preds = %29 + %.not9 = icmp eq ptr %24, %11 + br i1 %.not9, label %.loopexit, label %23 -23: ; preds = %22 - %24 = getelementptr inbounds nuw i8, ptr %.sroa.03.0, i64 16 - br i1 %.sroa.02.0, label %29, label %25 +23: ; preds = %.lr.ph, %22 + %.sroa.03.06 = phi ptr [ %8, %.lr.ph ], [ %24, %22 ] + %.sroa.02.05 = phi i1 [ true, %.lr.ph ], [ false, %22 ] + %24 = getelementptr inbounds nuw i8, ptr %.sroa.03.06, i64 16 + br i1 %.sroa.02.05, label %29, label %25 25: ; preds = %23 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -995,7 +1000,7 @@ define noundef zeroext i1 @"_ZN66_$LT$ty_ide..hover..DisplayHover$u20$as$u20$cor %31 = call { ptr, ptr } %30(ptr noundef nonnull align 1 %15), !noalias !154 %32 = extractvalue { ptr, ptr } %31, 0 %33 = extractvalue { ptr, ptr } %31, 1 - call void @"_ZN18ty_python_semantic5types7display49_$LT$impl$u20$ty_python_semantic..types..Type$GT$7display17h348b5b09c21d8e14E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.03.0, ptr noundef nonnull align 1 %32, ptr noalias noundef readonly align 8 dereferenceable(224) %33), !noalias !154 + call void @"_ZN18ty_python_semantic5types7display49_$LT$impl$u20$ty_python_semantic..types..Type$GT$7display17h348b5b09c21d8e14E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.03.06, ptr noundef nonnull align 1 %32, ptr noalias noundef readonly align 8 dereferenceable(224) %33), !noalias !154 store ptr @anon.19defe271c17600efb7d4e3e4ec768e2.26, ptr %3, align 8, !noalias !154 store i64 4, ptr %20, align 8, !noalias !154 store i8 %13, ptr %21, align 8, !noalias !154 @@ -1003,8 +1008,9 @@ define noundef zeroext i1 @"_ZN66_$LT$ty_ide..hover..DisplayHover$u20$as$u20$cor call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !154 br i1 %34, label %.loopexit, label %22 -.loopexit: ; preds = %29, %22, %25 - ret i1 %.not.not.not.not.not +.loopexit: ; preds = %22, %29, %25, %2 + %35 = phi i1 [ false, %2 ], [ true, %25 ], [ false, %22 ], [ true, %29 ] + ret i1 %35 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll b/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll index 6e508f05e8e..b4feed8ef94 100644 --- a/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll +++ b/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll @@ -4703,22 +4703,24 @@ define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice. %.not = icmp eq i64 %1, %3 br i1 %.not, label %.preheader.split, label %.loopexit -.preheader.split: ; preds = %4, %5 - %.sroa.01.0 = phi i64 [ %6, %5 ], [ 0, %4 ] - %exitcond.not = icmp eq i64 %.sroa.01.0, %1 - br i1 %exitcond.not, label %.loopexit, label %5 - -5: ; preds = %.preheader.split - %6 = add i64 %.sroa.01.0, 1 - %7 = getelementptr inbounds nuw i32, ptr %0, i64 %.sroa.01.0 - %8 = getelementptr inbounds nuw i32, ptr %2, i64 %.sroa.01.0 - %.val = load i32, ptr %7, align 4, !noundef !3 - %.val5 = load i32, ptr %8, align 4, !noundef !3 +.preheader.split: ; preds = %4 + %.not11 = icmp eq i64 %1, 0 + br i1 %.not11, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %.preheader.split, %.lr.ph + %.sroa.01.08 = phi i64 [ %7, %.lr.ph ], [ 0, %.preheader.split ] + %5 = getelementptr inbounds nuw i32, ptr %0, i64 %.sroa.01.08 + %6 = getelementptr inbounds nuw i32, ptr %2, i64 %.sroa.01.08 + %.val = load i32, ptr %5, align 4, !noundef !3 + %.val5 = load i32, ptr %6, align 4, !noundef !3 %.not6 = icmp eq i32 %.val, %.val5 - br i1 %.not6, label %.preheader.split, label %.loopexit + %7 = add nuw i64 %.sroa.01.08, 1 + %exitcond.not = icmp ne i64 %7, %1 + %or.cond.not = select i1 %.not6, i1 %exitcond.not, i1 false + br i1 %or.cond.not, label %.lr.ph, label %.loopexit -.loopexit: ; preds = %5, %.preheader.split, %4 - %.sroa.0.0 = phi i1 [ false, %4 ], [ %exitcond.not, %.preheader.split ], [ %exitcond.not, %5 ] +.loopexit: ; preds = %.lr.ph, %.preheader.split, %4 + %.sroa.0.0 = phi i1 [ false, %4 ], [ true, %.preheader.split ], [ %.not6, %.lr.ph ] ret i1 %.sroa.0.0 } diff --git a/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll b/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll index a3b9dc25cb0..c76fb8deb9c 100644 --- a/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll +++ b/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll @@ -281,6 +281,10 @@ _ZN16ruff_source_file8newlines24UniversalNewlineIterator11with_offset17he5485eb4 %14 = icmp samesign eq i64 %2, 0 br i1 %14, label %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread, label %15 +_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread: ; preds = %_ZN16ruff_source_file8newlines24UniversalNewlineIterator11with_offset17he5485eb4ab9dd750E.exit + call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !41 + br label %56 + 15: ; preds = %_ZN16ruff_source_file8newlines24UniversalNewlineIterator11with_offset17he5485eb4ab9dd750E.exit %16 = getelementptr inbounds i8, ptr %10, i64 -1 store ptr %16, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !alias.scope !58, !noalias !61 @@ -348,27 +352,25 @@ _ZN16ruff_source_file8newlines24UniversalNewlineIterator11with_offset17he5485eb4 %.sroa.4.1.i.ph.i.i.i = phi i32 [ %26, %25 ], [ %37, %33 ] %53 = icmp samesign ult i32 %.sroa.4.1.i.ph.i.i.i, 1114112 tail call void @llvm.assume(i1 %53) - br label %.preheader.i.i.i.i + br label %54 -.preheader.i.i.i.i: ; preds = %54, %52 - %.idx.i.i.i.i = phi i64 [ %.add.i.i.i.i, %54 ], [ 0, %52 ] - %.not.not.not.i.not.not.i.not.not.not.i.not.i.not.not.i = icmp eq i64 %.idx.i.i.i.i, 8 - br i1 %.not.not.not.i.not.not.i.not.not.not.i.not.i.not.not.i, label %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread, label %54 - -54: ; preds = %.preheader.i.i.i.i - %.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %6, i64 %.idx.i.i.i.i - %.add.i.i.i.i = add nuw nsw i64 %.idx.i.i.i.i, 4 +54: ; preds = %54, %52 + %.idx12.i.i.i.i = phi i64 [ 0, %52 ], [ %.add.i.i.i.i, %54 ] + %.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %6, i64 %.idx12.i.i.i.i %.val4.i.i.i.i.i = load i32, ptr %.ptr.i.i.i.i, align 4, !range !73, !alias.scope !74, !noalias !79, !noundef !25 %55 = icmp eq i32 %.val4.i.i.i.i.i, %.sroa.4.1.i.ph.i.i.i - br i1 %55, label %.split12, label %.preheader.i.i.i.i + %.add.i.i.i.i = add nuw nsw i64 %.idx12.i.i.i.i, 4 + %.not.not.not.i.not.i.i.i.i = icmp eq i64 %.add.i.i.i.i, 8 + %or.cond.i.i.i.i = select i1 %55, i1 true, i1 %.not.not.not.i.not.i.i.i.i + br i1 %or.cond.i.i.i.i, label %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit, label %54 -_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread: ; preds = %.preheader.i.i.i.i, %_ZN16ruff_source_file8newlines24UniversalNewlineIterator11with_offset17he5485eb4ab9dd750E.exit +_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit: ; preds = %54 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !41 - br label %56 + br i1 %55, label %.split12, label %56 -56: ; preds = %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread, %.split12 - %.sroa.5.sroa.4.0 = phi i32 [ %60, %.split12 ], [ undef, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread ] - %.sroa.0.0 = phi ptr [ inttoptr (i64 1 to ptr), %.split12 ], [ null, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread ] +56: ; preds = %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit, %.split12 + %.sroa.5.sroa.4.0 = phi i32 [ %60, %.split12 ], [ undef, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit ], [ undef, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread ] + %.sroa.0.0 = phi ptr [ inttoptr (i64 1 to ptr), %.split12 ], [ null, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit ], [ null, %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread ] %57 = add i32 %9, %3 %58 = getelementptr inbounds nuw i8, ptr %0, i64 24 store ptr %.sroa.0.0, ptr %58, align 8 @@ -385,8 +387,7 @@ _ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread: ; pr store i32 %57, ptr %.sroa.6.0..sroa_idx, align 4 ret void -.split12: ; preds = %54 - call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !41 +.split12: ; preds = %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit %59 = tail call noundef i32 @_ZN14ruff_text_size4size8TextSize3new17h074aa630890fc876E(i32 noundef %8) %60 = add i32 %59, %3 br label %56 diff --git a/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll b/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll index 9a2bb30da33..7255b536ad9 100644 --- a/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll +++ b/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll @@ -454,45 +454,47 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11resize_with17h9ec1ef132d96 %24 = load ptr, ptr %23, align 8, !nonnull !3, !noundef !3 %25 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %24, i64 %1 store i64 %1, ptr %4, align 8 - br label %26 + %26 = icmp eq i64 %5, %1 + br i1 %26, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit", label %.lr.ph.i -26: ; preds = %28, %21 - %.sroa.0.0.i = phi i64 [ 0, %21 ], [ %30, %28 ] - %27 = icmp eq i64 %.sroa.0.0.i, %22 - br i1 %27, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit", label %28 +27: ; preds = %.lr.ph.i + %28 = icmp eq i64 %30, %22 + br i1 %28, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit", label %.lr.ph.i -28: ; preds = %26 - %29 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %25, i64 %.sroa.0.0.i - %30 = add i64 %.sroa.0.0.i, 1 +.lr.ph.i: ; preds = %21, %27 + %.sroa.0.07.i = phi i64 [ %30, %27 ], [ 0, %21 ] + %29 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %25, i64 %.sroa.0.07.i + %30 = add nuw i64 %.sroa.0.07.i, 1 invoke void @"_ZN4core3ptr73drop_in_place$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$17h4366da475814f7b0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %29) - to label %26 unwind label %33 + to label %27 unwind label %34 -31: ; preds = %35, %33 - %.sroa.0.1.i = phi i64 [ %30, %33 ], [ %37, %35 ] - %32 = icmp eq i64 %.sroa.0.1.i, %22 - br i1 %32, label %38, label %35 +31: ; preds = %.lr.ph10.i + %32 = add i64 %.sroa.0.18.i, 1 + %33 = icmp eq i64 %32, %22 + br i1 %33, label %._crit_edge11.i, label %.lr.ph10.i -33: ; preds = %28 - %34 = landingpad { ptr, i32 } +34: ; preds = %.lr.ph.i + %35 = landingpad { ptr, i32 } cleanup - br label %31 + %36 = icmp eq i64 %30, %22 + br i1 %36, label %._crit_edge11.i, label %.lr.ph10.i -35: ; preds = %31 - %36 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %25, i64 %.sroa.0.1.i - %37 = add i64 %.sroa.0.1.i, 1 - invoke void @"_ZN4core3ptr73drop_in_place$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$17h4366da475814f7b0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %36) #14 - to label %31 unwind label %39 +.lr.ph10.i: ; preds = %34, %31 + %.sroa.0.18.i = phi i64 [ %32, %31 ], [ %30, %34 ] + %37 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %25, i64 %.sroa.0.18.i + invoke void @"_ZN4core3ptr73drop_in_place$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$17h4366da475814f7b0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %37) #14 + to label %31 unwind label %38 -38: ; preds = %31 - resume { ptr, i32 } %34 +._crit_edge11.i: ; preds = %31, %34 + resume { ptr, i32 } %35 -39: ; preds = %35 - %40 = landingpad { ptr, i32 } +38: ; preds = %.lr.ph10.i + %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #15 unreachable -"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit": ; preds = %26, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17ha90d52c797e78adcE.exit" +"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit": ; preds = %27, %21, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17ha90d52c797e78adcE.exit" ret void } diff --git a/bench/sdl/optimized/SDL_string.ll b/bench/sdl/optimized/SDL_string.ll index d8e4379fde4..05831a02e6e 100644 --- a/bench/sdl/optimized/SDL_string.ll +++ b/bench/sdl/optimized/SDL_string.ll @@ -759,43 +759,46 @@ define hidden range(i32 0, 1966080) i32 @SDL_StepBackUTF8_REAL(ptr noundef readn %3 = ptrtoint ptr %0 to i64 %4 = alloca ptr, align 8 %.not = icmp eq ptr %1, null - br i1 %.not, label %22, label %5 + br i1 %.not, label %19, label %5 5: ; preds = %2 %6 = load ptr, ptr %1, align 8 %7 = ptrtoint ptr %6 to i64 %.not11 = icmp ugt ptr %6, %0 - br i1 %.not11, label %8, label %22 + br i1 %.not11, label %.lr.ph.preheader, label %19 -8: ; preds = %5 +.lr.ph.preheader: ; preds = %5 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %9 = sub i64 %3, %7 - %scevgep = getelementptr i8, ptr %6, i64 %9 - br label %10 - -10: ; preds = %13, %8 - %11 = phi ptr [ %14, %13 ], [ %6, %8 ] - %12 = icmp eq ptr %11, %0 - br i1 %12, label %17, label %13 - -13: ; preds = %10 - %14 = getelementptr inbounds i8, ptr %11, i64 -1 - %15 = load i8, ptr %14, align 1 - %16 = icmp slt i8 %15, -64 - br i1 %16, label %10, label %17, !llvm.loop !8 + %8 = sub i64 %3, %7 + %scevgep = getelementptr i8, ptr %6, i64 %8 + br label %.lr.ph -17: ; preds = %10, %13 - %18 = phi ptr [ %scevgep, %10 ], [ %14, %13 ] - store ptr %18, ptr %4, align 8 - %19 = ptrtoint ptr %18 to i64 - %20 = sub i64 %7, %19 - store ptr %18, ptr %1, align 8 - %21 = call fastcc i32 @StepUTF8(ptr noundef nonnull %4, i64 noundef %20) +9: ; preds = %.lr.ph + %10 = icmp eq ptr %12, %0 + br i1 %10, label %._crit_edge, label %.lr.ph, !llvm.loop !8 + +.lr.ph: ; preds = %.lr.ph.preheader, %9 + %11 = phi ptr [ %12, %9 ], [ %6, %.lr.ph.preheader ] + %12 = getelementptr inbounds i8, ptr %11, i64 -1 + %13 = load i8, ptr %12, align 1 + %14 = icmp slt i8 %13, -64 + br i1 %14, label %9, label %._crit_edge12, !llvm.loop !8 + +._crit_edge12: ; preds = %.lr.ph + br label %._crit_edge, !llvm.loop !8 + +._crit_edge: ; preds = %9, %._crit_edge12 + %15 = phi ptr [ %12, %._crit_edge12 ], [ %scevgep, %9 ] + store ptr %15, ptr %4, align 8 + %16 = ptrtoint ptr %15 to i64 + %17 = sub i64 %7, %16 + store ptr %15, ptr %1, align 8 + %18 = call fastcc i32 @StepUTF8(ptr noundef nonnull %4, i64 noundef %17) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %22 + br label %19 -22: ; preds = %2, %5, %17 - %.0 = phi i32 [ %21, %17 ], [ 0, %5 ], [ 0, %2 ] +19: ; preds = %2, %5, %._crit_edge + %.0 = phi i32 [ %18, %._crit_edge ], [ 0, %5 ], [ 0, %2 ] ret i32 %.0 } diff --git a/bench/sentencepiece/optimized/builder.ll b/bench/sentencepiece/optimized/builder.ll index 120551378b1..db468f5ba05 100644 --- a/bench/sentencepiece/optimized/builder.ll +++ b/bench/sentencepiece/optimized/builder.ll @@ -19159,49 +19159,51 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI .lr.ph: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %0, i64 40 - br label %11 + %11 = icmp eq i64 %2, 0 + br i1 %11, label %._crit_edge, label %.lr.ph21 -11: ; preds = %.lr.ph, %19 - %12 = phi i64 [ %8, %.lr.ph ], [ %26, %19 ] - %.014 = phi i64 [ %2, %.lr.ph ], [ %20, %19 ] - %storemerge13 = phi ptr [ %1, %.lr.ph ], [ %24, %19 ] - %13 = icmp eq i64 %.014, 0 - br i1 %13, label %14, label %19 +12: ; preds = %.lr.ph21 + %13 = icmp eq i64 %19, 0 + br i1 %13, label %._crit_edge, label %.lr.ph21, !llvm.loop !416 -14: ; preds = %11 +._crit_edge: ; preds = %12, %.lr.ph + %storemerge13.lcssa = phi ptr [ %1, %.lr.ph ], [ %23, %12 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) - call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_RT0_(ptr %0, ptr %storemerge13, ptr noundef nonnull align 1 dereferenceable(1) %4) + call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_RT0_(ptr %0, ptr %storemerge13.lcssa, ptr noundef nonnull align 1 dereferenceable(1) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %14, %.lr.ph.i.i - %.sroa.0.05.i.i = phi ptr [ %15, %.lr.ph.i.i ], [ %storemerge13, %14 ] - %15 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -40 - call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_RT0_(ptr %0, ptr nonnull %15, ptr nonnull %15, ptr noundef nonnull align 1 dereferenceable(1) %5) - %16 = ptrtoint ptr %15 to i64 - %17 = sub i64 %16, %6 - %18 = icmp sgt i64 %17, 40 - br i1 %18, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit, !llvm.loop !416 +.lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i + %.sroa.0.05.i.i = phi ptr [ %14, %.lr.ph.i.i ], [ %storemerge13.lcssa, %._crit_edge ] + %14 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -40 + call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_RT0_(ptr %0, ptr nonnull %14, ptr nonnull %14, ptr noundef nonnull align 1 dereferenceable(1) %5) + %15 = ptrtoint ptr %14 to i64 + %16 = sub i64 %15, %6 + %17 = icmp sgt i64 %16, 40 + br i1 %17, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit, !llvm.loop !417 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit: ; preds = %.lr.ph.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -19: ; preds = %11 - %20 = add nsw i64 %.014, -1 - %21 = udiv i64 %12, 80 - %22 = getelementptr inbounds nuw %"struct.std::pair.20", ptr %0, i64 %21 - %23 = getelementptr inbounds i8, ptr %storemerge13, i64 -40 - tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_SH_T0_(ptr %0, ptr nonnull %10, ptr %22, ptr nonnull %23) - %24 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEET_SH_SH_SH_T0_(ptr nonnull %10, ptr %storemerge13, ptr %0) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEElNS0_5__ops15_Iter_less_iterEEvT_SH_T0_T1_(ptr %24, ptr %storemerge13, i64 noundef %20) - %25 = ptrtoint ptr %24 to i64 - %26 = sub i64 %25, %6 - %27 = icmp sgt i64 %26, 640 - br i1 %27, label %11, label %.loopexit, !llvm.loop !417 +.lr.ph21: ; preds = %.lr.ph, %12 + %storemerge1320 = phi ptr [ %23, %12 ], [ %1, %.lr.ph ] + %.01419 = phi i64 [ %19, %12 ], [ %2, %.lr.ph ] + %18 = phi i64 [ %25, %12 ], [ %8, %.lr.ph ] + %19 = add nsw i64 %.01419, -1 + %20 = udiv i64 %18, 80 + %21 = getelementptr inbounds nuw %"struct.std::pair.20", ptr %0, i64 %20 + %22 = getelementptr inbounds i8, ptr %storemerge1320, i64 -40 + tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_SH_T0_(ptr %0, ptr nonnull %10, ptr %21, ptr nonnull %22) + %23 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEET_SH_SH_SH_T0_(ptr nonnull %10, ptr %storemerge1320, ptr %0) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEElNS0_5__ops15_Iter_less_iterEEvT_SH_T0_T1_(ptr %23, ptr %storemerge1320, i64 noundef %19) + %24 = ptrtoint ptr %23 to i64 + %25 = sub i64 %24, %6 + %26 = icmp sgt i64 %25, 640 + br i1 %26, label %12, label %.loopexit, !llvm.loop !416 -.loopexit: ; preds = %19, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit +.loopexit: ; preds = %.lr.ph21, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit ret void } diff --git a/bench/slurm/optimized/cbuf.ll b/bench/slurm/optimized/cbuf.ll index b5f31fb7580..b4a6d517be8 100644 --- a/bench/slurm/optimized/cbuf.ll +++ b/bench/slurm/optimized/cbuf.ll @@ -313,41 +313,51 @@ define dso_local i32 @cbuf_lines_used(ptr noundef %0) local_unnamed_addr #0 { %18 = getelementptr inbounds nuw i8, ptr %0, i64 80 %19 = load ptr, ptr %18, align 8 %20 = add nuw nsw i32 %7, 1 - br label %21 - -21: ; preds = %28, %.lr.ph.i - %.03050.i = phi i32 [ 0, %.lr.ph.i ], [ %.232.i, %28 ] - %.03747.i = phi i32 [ %15, %.lr.ph.i ], [ %30, %28 ] - %.14046.i = phi i32 [ %7, %.lr.ph.i ], [ %spec.select43.i, %28 ] - %spec.select43.i = add nsw i32 %.14046.i, -1 - %22 = sext i32 %.03747.i to i64 - %23 = getelementptr inbounds i8, ptr %19, i64 %22 - %24 = load i8, ptr %23, align 1 - %25 = icmp eq i8 %24, 10 - %26 = zext i1 %25 to i32 - %.232.i = add nuw nsw i32 %.03050.i, %26 - %27 = icmp eq i32 %spec.select43.i, 0 - br i1 %27, label %cbuf_find_unread_line.exit, label %28 - -28: ; preds = %21 - %29 = add nsw i32 %.03747.i, 1 - %30 = srem i32 %29, %20 - %.not.i = icmp eq i32 %30, %17 - br i1 %.not.i, label %cbuf_find_unread_line.exit, label %21, !llvm.loop !8 - -cbuf_find_unread_line.exit: ; preds = %21, %28, %13, %5, %9 - %.0 = phi i32 [ 0, %5 ], [ 0, %9 ], [ 0, %13 ], [ %.232.i, %28 ], [ %.232.i, %21 ] - %31 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 - %.not8 = icmp eq i32 %31, 0 - br i1 %.not8, label %34, label %32 - -32: ; preds = %cbuf_find_unread_line.exit - %33 = tail call ptr @__errno_location() #14 - store i32 %31, ptr %33, align 4 + %spec.select43.i19 = add nsw i32 %7, -1 + %21 = sext i32 %15 to i64 + %22 = getelementptr inbounds i8, ptr %19, i64 %21 + %23 = load i8, ptr %22, align 1 + %24 = icmp eq i8 %23, 10 + %25 = zext i1 %24 to i32 + %26 = icmp eq i32 %spec.select43.i19, 0 + br i1 %26, label %cbuf_find_unread_line.exit, label %.lr.ph + +27: ; preds = %.lr.ph + %spec.select43.i = add nsw i32 %spec.select43.i21, -1 + %28 = sext i32 %35 to i64 + %29 = getelementptr inbounds i8, ptr %19, i64 %28 + %30 = load i8, ptr %29, align 1 + %31 = icmp eq i8 %30, 10 + %32 = zext i1 %31 to i32 + %.232.i = add nuw nsw i32 %.232.i22, %32 + %33 = icmp eq i32 %spec.select43.i, 0 + br i1 %33, label %cbuf_find_unread_line.exit, label %.lr.ph, !llvm.loop !8 + +.lr.ph: ; preds = %.lr.ph.i, %27 + %.232.i22 = phi i32 [ %.232.i, %27 ], [ %25, %.lr.ph.i ] + %spec.select43.i21 = phi i32 [ %spec.select43.i, %27 ], [ %spec.select43.i19, %.lr.ph.i ] + %.03747.i20 = phi i32 [ %35, %27 ], [ %15, %.lr.ph.i ] + %34 = add nsw i32 %.03747.i20, 1 + %35 = srem i32 %34, %20 + %.not.i = icmp eq i32 %35, %17 + br i1 %.not.i, label %.cbuf_find_unread_line.exit.loopexit_crit_edge, label %27, !llvm.loop !8 + +.cbuf_find_unread_line.exit.loopexit_crit_edge: ; preds = %.lr.ph + br label %cbuf_find_unread_line.exit, !llvm.loop !8 + +cbuf_find_unread_line.exit: ; preds = %27, %.lr.ph.i, %.cbuf_find_unread_line.exit.loopexit_crit_edge, %13, %5, %9 + %.0 = phi i32 [ 0, %5 ], [ 0, %9 ], [ 0, %13 ], [ %.232.i22, %.cbuf_find_unread_line.exit.loopexit_crit_edge ], [ %25, %.lr.ph.i ], [ %.232.i, %27 ] + %36 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 + %.not8 = icmp eq i32 %36, 0 + br i1 %.not8, label %39, label %37 + +37: ; preds = %cbuf_find_unread_line.exit + %38 = tail call ptr @__errno_location() #14 + store i32 %36, ptr %38, align 4 tail call void (ptr, ...) @fatal_abort(ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.cbuf_lines_used) #16 unreachable -34: ; preds = %cbuf_find_unread_line.exit +39: ; preds = %cbuf_find_unread_line.exit ret i32 %.0 } diff --git a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll index bc05b4e6b66..601805a3029 100644 --- a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll +++ b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll @@ -681,31 +681,18 @@ define linkonce_odr dso_local noundef ptr @_ZN6VlWideILm3EEcvPjEv(ptr noundef no define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__icoP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #2 { tail call void @_Z41Vmycpu_top___024root___eval_triggers__icoP20Vmycpu_top___024root(ptr noundef %0) %2 = getelementptr inbounds nuw i8, ptr %0, i64 19216 - br label %3 - -3: ; preds = %5, %1 - %4 = phi i1 [ true, %1 ], [ false, %5 ] - %.0.i = phi i64 [ 0, %1 ], [ 1, %5 ] - br i1 %4, label %5, label %_ZNK12VlTriggerVecILm1EE3anyEv.exit - -5: ; preds = %3 - %6 = getelementptr inbounds nuw i64, ptr %2, i64 %.0.i - %7 = load i64, ptr %6, align 8 - %.not.i = icmp eq i64 %7, 0 - br i1 %.not.i, label %3, label %8, !llvm.loop !5 - -8: ; preds = %5 - %9 = load i64, ptr %2, align 8 - %10 = and i64 %9, 1 - %.not.i5 = icmp eq i64 %10, 0 - br i1 %.not.i5, label %_ZNK12VlTriggerVecILm1EE3anyEv.exit, label %11 - -11: ; preds = %8 + %3 = load i64, ptr %2, align 8 + %4 = and i64 %3, 1 + %.not.i5.not = icmp eq i64 %4, 0 + br i1 %.not.i5.not, label %_Z31Vmycpu_top___024root___eval_icoP20Vmycpu_top___024root.exit, label %5 + +5: ; preds = %1 tail call void @_Z42Vmycpu_top___024root___ico_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef nonnull %0) - br label %_ZNK12VlTriggerVecILm1EE3anyEv.exit + br label %_Z31Vmycpu_top___024root___eval_icoP20Vmycpu_top___024root.exit -_ZNK12VlTriggerVecILm1EE3anyEv.exit: ; preds = %3, %11, %8 - ret i1 %4 +_Z31Vmycpu_top___024root___eval_icoP20Vmycpu_top___024root.exit: ; preds = %5, %1 + %.not.i = icmp ne i64 %3, 0 + ret i1 %.not.i } declare void @_Z41Vmycpu_top___024root___eval_triggers__icoP20Vmycpu_top___024root(ptr noundef) local_unnamed_addr #3 @@ -881,7 +868,7 @@ define dso_local void @_Z42Vmycpu_top___024root___act_sequent__TOP__0P20Vmycpu_t 78: ; preds = %73 %79 = add nsw i32 %storemerge562725, -1 %80 = icmp eq i32 %storemerge562725, 0 - br i1 %80, label %.loopexit719, label %73, !llvm.loop !7 + br i1 %80, label %.loopexit719, label %73, !llvm.loop !5 81: ; preds = %66 br i1 %.not558, label %322, label %82 @@ -909,7 +896,7 @@ define dso_local void @_Z42Vmycpu_top___024root___act_sequent__TOP__0P20Vmycpu_t 91: ; preds = %86 %92 = add nsw i32 %storemerge727, -1 %93 = icmp eq i32 %storemerge727, 0 - br i1 %93, label %.loopexit718, label %86, !llvm.loop !8 + br i1 %93, label %.loopexit718, label %86, !llvm.loop !7 94: ; preds = %31 %95 = and i32 %20, 2097152 @@ -1501,7 +1488,7 @@ define dso_local void @_Z42Vmycpu_top___024root___act_sequent__TOP__0P20Vmycpu_t 382: ; preds = %377 %383 = add nsw i32 %storemerge649729, -1 %384 = icmp eq i32 %storemerge649729, 0 - br i1 %384, label %.loopexit717, label %377, !llvm.loop !9 + br i1 %384, label %.loopexit717, label %377, !llvm.loop !8 385: ; preds = %370 br i1 %.not644, label %626, label %386 @@ -1527,7 +1514,7 @@ define dso_local void @_Z42Vmycpu_top___024root___act_sequent__TOP__0P20Vmycpu_t 395: ; preds = %390 %396 = add nsw i32 %storemerge645731, -1 %397 = icmp eq i32 %storemerge645731, 0 - br i1 %397, label %.loopexit, label %390, !llvm.loop !10 + br i1 %397, label %.loopexit, label %390, !llvm.loop !9 398: ; preds = %337 br i1 %.not583, label %436, label %399 @@ -12406,4 +12393,3 @@ attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn mem !7 = distinct !{!7, !6} !8 = distinct !{!8, !6} !9 = distinct !{!9, !6} -!10 = distinct !{!10, !6} diff --git a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll index 11f2b598f20..a9ec638749c 100644 --- a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll +++ b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll @@ -220,25 +220,16 @@ declare void @_Z11VL_FATAL_MTPKciS0_S0_(ptr noundef, i32 noundef, ptr noundef, p define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #6 { tail call void @_Z41Vmycpu_top___024root___eval_triggers__stlP20Vmycpu_top___024root(ptr noundef %0) #12 %2 = getelementptr inbounds nuw i8, ptr %0, i64 19200 - br label %3 - -3: ; preds = %5, %1 - %4 = phi i1 [ true, %1 ], [ false, %5 ] - %.0.i = phi i64 [ 0, %1 ], [ 1, %5 ] - br i1 %4, label %5, label %_ZNK12VlTriggerVecILm2EE3anyEv.exit - -5: ; preds = %3 - %6 = getelementptr inbounds nuw i64, ptr %2, i64 %.0.i - %7 = load i64, ptr %6, align 8 - %.not.i = icmp eq i64 %7, 0 - br i1 %.not.i, label %3, label %8, !llvm.loop !10 + %3 = load i64, ptr %2, align 8 + %.not.i = icmp ne i64 %3, 0 + br i1 %.not.i, label %4, label %5 -8: ; preds = %5 +4: ; preds = %1 tail call void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024root(ptr noundef nonnull %0) #12 - br label %_ZNK12VlTriggerVecILm2EE3anyEv.exit + br label %5 -_ZNK12VlTriggerVecILm2EE3anyEv.exit: ; preds = %3, %8 - ret i1 %4 +5: ; preds = %4, %1 + ret i1 %.not.i } ; Function Attrs: cold mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable @@ -5656,7 +5647,7 @@ define dso_local void @_Z39Vmycpu_top___024root___stl_comb__TOP__0P20Vmycpu_top_ 78: ; preds = %73 %79 = add nsw i32 %storemerge562725, -1 %80 = icmp eq i32 %storemerge562725, 0 - br i1 %80, label %.loopexit719, label %73, !llvm.loop !11 + br i1 %80, label %.loopexit719, label %73, !llvm.loop !10 81: ; preds = %66 br i1 %.not558, label %322, label %82 @@ -5684,7 +5675,7 @@ define dso_local void @_Z39Vmycpu_top___024root___stl_comb__TOP__0P20Vmycpu_top_ 91: ; preds = %86 %92 = add nsw i32 %storemerge727, -1 %93 = icmp eq i32 %storemerge727, 0 - br i1 %93, label %.loopexit718, label %86, !llvm.loop !12 + br i1 %93, label %.loopexit718, label %86, !llvm.loop !11 94: ; preds = %31 %95 = and i32 %20, 2097152 @@ -6276,7 +6267,7 @@ define dso_local void @_Z39Vmycpu_top___024root___stl_comb__TOP__0P20Vmycpu_top_ 382: ; preds = %377 %383 = add nsw i32 %storemerge649729, -1 %384 = icmp eq i32 %storemerge649729, 0 - br i1 %384, label %.loopexit717, label %377, !llvm.loop !13 + br i1 %384, label %.loopexit717, label %377, !llvm.loop !12 385: ; preds = %370 br i1 %.not644, label %626, label %386 @@ -6302,7 +6293,7 @@ define dso_local void @_Z39Vmycpu_top___024root___stl_comb__TOP__0P20Vmycpu_top_ 395: ; preds = %390 %396 = add nsw i32 %storemerge645731, -1 %397 = icmp eq i32 %storemerge645731, 0 - br i1 %397, label %.loopexit, label %390, !llvm.loop !14 + br i1 %397, label %.loopexit, label %390, !llvm.loop !13 398: ; preds = %337 br i1 %.not583, label %436, label %399 @@ -7817,7 +7808,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ %613 = tail call noundef ptr @_Z15VL_RAND_RESET_WiPj(i32 noundef 66, ptr noundef nonnull %612) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 - br i1 %exitcond.not, label %614, label %611, !llvm.loop !15 + br i1 %exitcond.not, label %614, label %611, !llvm.loop !14 614: ; preds = %611 %615 = getelementptr inbounds nuw i8, ptr %0, i64 816 @@ -7862,7 +7853,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %641, ptr %642, align 4 %indvars.iv.next573 = add nuw nsw i64 %indvars.iv572, 1 %exitcond575.not = icmp eq i64 %indvars.iv.next573, 32 - br i1 %exitcond575.not, label %.preheader540, label %640, !llvm.loop !16 + br i1 %exitcond575.not, label %.preheader540, label %640, !llvm.loop !15 .preheader539: ; preds = %644 %643 = getelementptr inbounds nuw i8, ptr %0, i64 1296 @@ -7876,7 +7867,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i8 %646, ptr %647, align 1 %indvars.iv.next577 = add nuw nsw i64 %indvars.iv576, 1 %exitcond579.not = icmp eq i64 %indvars.iv.next577, 16 - br i1 %exitcond579.not, label %.preheader539, label %644, !llvm.loop !17 + br i1 %exitcond579.not, label %.preheader539, label %644, !llvm.loop !16 648: ; preds = %.preheader539, %648 %indvars.iv580 = phi i64 [ 0, %.preheader539 ], [ %indvars.iv.next581, %648 ] @@ -7886,7 +7877,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i8 %650, ptr %651, align 1 %indvars.iv.next581 = add nuw nsw i64 %indvars.iv580, 1 %exitcond583.not = icmp eq i64 %indvars.iv.next581, 64 - br i1 %exitcond583.not, label %652, label %648, !llvm.loop !18 + br i1 %exitcond583.not, label %652, label %648, !llvm.loop !17 652: ; preds = %648 %653 = getelementptr inbounds nuw i8, ptr %0, i64 616 @@ -8085,7 +8076,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ %785 = tail call noundef ptr @_Z15VL_RAND_RESET_WiPj(i32 noundef 74, ptr noundef nonnull %784) %indvars.iv.next585 = add nuw nsw i64 %indvars.iv584, 1 %exitcond587.not = icmp eq i64 %indvars.iv.next585, 8 - br i1 %exitcond587.not, label %.preheader538, label %783, !llvm.loop !19 + br i1 %exitcond587.not, label %.preheader538, label %783, !llvm.loop !18 .preheader537: ; preds = %787 %786 = getelementptr inbounds nuw i8, ptr %0, i64 1460 @@ -8099,7 +8090,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i8 %789, ptr %790, align 1 %indvars.iv.next589 = add nuw nsw i64 %indvars.iv588, 1 %exitcond591.not = icmp eq i64 %indvars.iv.next589, 3 - br i1 %exitcond591.not, label %.preheader537, label %787, !llvm.loop !20 + br i1 %exitcond591.not, label %.preheader537, label %787, !llvm.loop !19 .preheader536: ; preds = %792 %791 = getelementptr inbounds nuw i8, ptr %0, i64 1472 @@ -8112,7 +8103,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %793, ptr %794, align 4 %indvars.iv.next593 = add nuw nsw i64 %indvars.iv592, 1 %exitcond595.not = icmp eq i64 %indvars.iv.next593, 3 - br i1 %exitcond595.not, label %.preheader536, label %792, !llvm.loop !21 + br i1 %exitcond595.not, label %.preheader536, label %792, !llvm.loop !20 795: ; preds = %.preheader536, %795 %indvars.iv596 = phi i64 [ 0, %.preheader536 ], [ %indvars.iv.next597, %795 ] @@ -8122,7 +8113,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i8 %797, ptr %798, align 1 %indvars.iv.next597 = add nuw nsw i64 %indvars.iv596, 1 %exitcond599.not = icmp eq i64 %indvars.iv.next597, 3 - br i1 %exitcond599.not, label %799, label %795, !llvm.loop !22 + br i1 %exitcond599.not, label %799, label %795, !llvm.loop !21 799: ; preds = %795 %800 = getelementptr inbounds nuw i8, ptr %0, i64 708 @@ -8138,7 +8129,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i8 %804, ptr %805, align 1 %indvars.iv.next601 = add nuw nsw i64 %indvars.iv600, 1 %exitcond603.not = icmp eq i64 %indvars.iv.next601, 64 - br i1 %exitcond603.not, label %.preheader535.critedge, label %802, !llvm.loop !23 + br i1 %exitcond603.not, label %.preheader535.critedge, label %802, !llvm.loop !22 .preheader535.critedge: ; preds = %802 %806 = tail call noundef i64 @_Z15VL_RAND_RESET_Qi(i32 noundef 42) @@ -8273,7 +8264,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i64 %894, ptr %895, align 8 %indvars.iv.next614 = add nuw nsw i64 %indvars.iv613, 1 %exitcond616.not = icmp eq i64 %indvars.iv.next614, 512 - br i1 %exitcond616.not, label %.preheader533, label %893, !llvm.loop !24 + br i1 %exitcond616.not, label %.preheader533, label %893, !llvm.loop !23 .preheader532: ; preds = %897 %896 = getelementptr inbounds nuw i8, ptr %0, i64 5920 @@ -8286,7 +8277,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %898, ptr %899, align 4 %indvars.iv.next618 = add nuw nsw i64 %indvars.iv617, 1 %exitcond620.not = icmp eq i64 %indvars.iv.next618, 64 - br i1 %exitcond620.not, label %.preheader532, label %897, !llvm.loop !25 + br i1 %exitcond620.not, label %.preheader532, label %897, !llvm.loop !24 .preheader531: ; preds = %901 %900 = getelementptr inbounds nuw i8, ptr %0, i64 10016 @@ -8299,7 +8290,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i64 %902, ptr %903, align 8 %indvars.iv.next622 = add nuw nsw i64 %indvars.iv621, 1 %exitcond624.not = icmp eq i64 %indvars.iv.next622, 512 - br i1 %exitcond624.not, label %.preheader531, label %901, !llvm.loop !26 + br i1 %exitcond624.not, label %.preheader531, label %901, !llvm.loop !25 904: ; preds = %.preheader531, %904 %indvars.iv625 = phi i64 [ 0, %.preheader531 ], [ %indvars.iv.next626, %904 ] @@ -8308,7 +8299,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %905, ptr %906, align 4 %indvars.iv.next626 = add nuw nsw i64 %indvars.iv625, 1 %exitcond628.not = icmp eq i64 %indvars.iv.next626, 64 - br i1 %exitcond628.not, label %907, label %904, !llvm.loop !27 + br i1 %exitcond628.not, label %907, label %904, !llvm.loop !26 907: ; preds = %904 %908 = tail call noundef i64 @_Z15VL_RAND_RESET_Qi(i32 noundef 43) @@ -8346,7 +8337,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i8 %926, ptr %927, align 1 %indvars.iv.next630 = add nuw nsw i64 %indvars.iv629, 1 %exitcond632.not = icmp eq i64 %indvars.iv.next630, 64 - br i1 %exitcond632.not, label %.preheader530, label %924, !llvm.loop !28 + br i1 %exitcond632.not, label %.preheader530, label %924, !llvm.loop !27 928: ; preds = %.preheader530, %928 %indvars.iv633 = phi i64 [ 0, %.preheader530 ], [ %indvars.iv.next634, %928 ] @@ -8354,7 +8345,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ %930 = tail call noundef ptr @_Z15VL_RAND_RESET_WiPj(i32 noundef 70, ptr noundef nonnull %929) %indvars.iv.next634 = add nuw nsw i64 %indvars.iv633, 1 %exitcond636.not = icmp eq i64 %indvars.iv.next634, 4 - br i1 %exitcond636.not, label %931, label %928, !llvm.loop !29 + br i1 %exitcond636.not, label %931, label %928, !llvm.loop !28 931: ; preds = %928 %932 = tail call noundef i32 @_Z15VL_RAND_RESET_Ii(i32 noundef 5) @@ -8399,7 +8390,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %958, ptr %959, align 4 %indvars.iv.next638 = add nuw nsw i64 %indvars.iv637, 1 %exitcond640.not = icmp eq i64 %indvars.iv.next638, 16 - br i1 %exitcond640.not, label %.preheader529.critedge, label %957, !llvm.loop !30 + br i1 %exitcond640.not, label %.preheader529.critedge, label %957, !llvm.loop !29 .preheader529.critedge: ; preds = %957 %960 = getelementptr inbounds nuw i8, ptr %0, i64 200 @@ -8564,7 +8555,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %1070, ptr %1071, align 4 %indvars.iv.next663 = add nuw nsw i64 %indvars.iv662, 1 %exitcond665.not = icmp eq i64 %indvars.iv.next663, 1024 - br i1 %exitcond665.not, label %.preheader526, label %1069, !llvm.loop !31 + br i1 %exitcond665.not, label %.preheader526, label %1069, !llvm.loop !30 .preheader525: ; preds = %1073 %1072 = getelementptr inbounds nuw i8, ptr %0, i64 14840 @@ -8577,7 +8568,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %1074, ptr %1075, align 4 %indvars.iv.next667 = add nuw nsw i64 %indvars.iv666, 1 %exitcond669.not = icmp eq i64 %indvars.iv.next667, 64 - br i1 %exitcond669.not, label %.preheader525, label %1073, !llvm.loop !32 + br i1 %exitcond669.not, label %.preheader525, label %1073, !llvm.loop !31 .preheader: ; preds = %1077 %1076 = getelementptr inbounds nuw i8, ptr %0, i64 18936 @@ -8590,7 +8581,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %1078, ptr %1079, align 4 %indvars.iv.next671 = add nuw nsw i64 %indvars.iv670, 1 %exitcond673.not = icmp eq i64 %indvars.iv.next671, 1024 - br i1 %exitcond673.not, label %.preheader, label %1077, !llvm.loop !33 + br i1 %exitcond673.not, label %.preheader, label %1077, !llvm.loop !32 1080: ; preds = %.preheader, %1080 %indvars.iv674 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next675, %1080 ] @@ -8599,7 +8590,7 @@ define dso_local void @_Z37Vmycpu_top___024root___ctor_var_resetP20Vmycpu_top___ store i32 %1081, ptr %1082, align 4 %indvars.iv.next675 = add nuw nsw i64 %indvars.iv674, 1 %exitcond677.not = icmp eq i64 %indvars.iv.next675, 64 - br i1 %exitcond677.not, label %1083, label %1080, !llvm.loop !34 + br i1 %exitcond677.not, label %1083, label %1080, !llvm.loop !33 1083: ; preds = %1080 %1084 = tail call noundef i32 @_Z15VL_RAND_RESET_Ii(i32 noundef 1) @@ -8732,4 +8723,3 @@ attributes #12 = { cold } !31 = distinct !{!31, !6} !32 = distinct !{!32, !6} !33 = distinct !{!33, !6} -!34 = distinct !{!34, !6} diff --git a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll index 6e93025eae3..8fcdcecf41d 100644 --- a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll +++ b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll @@ -2127,60 +2127,62 @@ define hidden void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc.. %.val = load double, ptr %3, align 8 br label %5 -5: ; preds = %24, %4 - %.sroa.3.0 = phi i64 [ %2, %4 ], [ %29, %24 ] - %.sroa.0.0 = phi ptr [ %1, %4 ], [ %28, %24 ] +5: ; preds = %23, %4 + %.sroa.3.0 = phi i64 [ %2, %4 ], [ %28, %23 ] + %.sroa.0.0 = phi ptr [ %1, %4 ], [ %27, %23 ] %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 %7 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 186 %8 = load i16, ptr %7, align 2, !noalias !431, !noundef !4 %9 = zext i16 %8 to i64 - %10 = getelementptr inbounds nuw double, ptr %6, i64 %9 - br label %11 + %.idx.i.i = shl nuw nsw i64 %9, 3 + %10 = getelementptr inbounds nuw i8, ptr %6, i64 %.idx.i.i + %11 = icmp eq i16 %8, 0 + br i1 %11, label %.loopexit.i, label %.lr.ph.i.i -11: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i", %5 - %.sroa.03.0.i.i = phi ptr [ %6, %5 ], [ %18, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ] - %.sroa.8.0.i.i = phi i64 [ 0, %5 ], [ %17, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ] - %12 = icmp eq ptr %.sroa.03.0.i.i, %10 - br i1 %12, label %21, label %13 +12: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" + %13 = add nuw nsw i64 %.sroa.8.012.i.i, 1 + %14 = getelementptr inbounds nuw i8, ptr %.sroa.03.011.i.i, i64 8 + %15 = icmp eq ptr %14, %10 + br i1 %15, label %.loopexit.i, label %.lr.ph.i.i default.unreachable.i.i: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" unreachable -13: ; preds = %11 +.lr.ph.i.i: ; preds = %5, %12 + %.sroa.8.012.i.i = phi i64 [ %13, %12 ], [ 0, %5 ] + %.sroa.03.011.i.i = phi ptr [ %14, %12 ], [ %6, %5 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !434) - %14 = load double, ptr %.sroa.03.0.i.i, align 8, !alias.scope !437, !noalias !440, !noundef !4 - %15 = fcmp uno double %.val, %14 - br i1 %15, label %16, label %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" + %16 = load double, ptr %.sroa.03.011.i.i, align 8, !alias.scope !437, !noalias !440, !noundef !4 + %17 = fcmp uno double %.val, %16 + br i1 %17, label %18, label %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" -16: ; preds = %13 +18: ; preds = %.lr.ph.i.i tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.2e0ec6afcc8886635c093ddcdbf46286.10.llvm.9554138872291501309) #20, !noalias !443 unreachable -"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i": ; preds = %13 - %17 = add nuw nsw i64 %.sroa.8.0.i.i, 1 - %18 = getelementptr inbounds nuw i8, ptr %.sroa.03.0.i.i, i64 8 - %19 = fcmp ult double %.val, %14 - %20 = fcmp ugt double %.val, %14 +"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i": ; preds = %.lr.ph.i.i + %19 = fcmp ult double %.val, %16 + %20 = fcmp ugt double %.val, %16 %..i.i.i.i = select i1 %19, i8 2, i8 1 %.1.i.i.i.i = sext i1 %19 to i8 %.sroa.0.0.i.i.i.i = select i1 %20, i8 %..i.i.i.i, i8 %.1.i.i.i.i switch i8 %.sroa.0.0.i.i.i.i, label %default.unreachable.i.i [ - i8 -1, label %21 + i8 -1, label %.loopexit.i i8 0, label %.loopexit - i8 1, label %11 + i8 1, label %12 ] -21: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i", %11 - %.sroa.4.0.i.ph.sink.i.ph = phi i64 [ %9, %11 ], [ %.sroa.8.0.i.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ] - %22 = icmp eq i64 %.sroa.3.0, 0 - br i1 %22, label %.loopexit, label %24 - -.loopexit: ; preds = %21, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" - %.sink = phi i64 [ %.sroa.3.0, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ 0, %21 ] - %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.0.i.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %21 ] - %storemerge = phi i64 [ 0, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ 1, %21 ] - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0.0, ptr %23, align 8 +.loopexit.i: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i", %12, %5 + %.sroa.4.0.i.ph.sink.i.ph = phi i64 [ 0, %5 ], [ %.sroa.8.012.i.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ %9, %12 ] + %21 = icmp eq i64 %.sroa.3.0, 0 + br i1 %21, label %.loopexit, label %23 + +.loopexit: ; preds = %.loopexit.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" + %.sink = phi i64 [ %.sroa.3.0, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ 0, %.loopexit.i ] + %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.012.i.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.i ] + %storemerge = phi i64 [ 0, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ 1, %.loopexit.i ] + %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %.sroa.0.0, ptr %22, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.319.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2188,13 +2190,13 @@ default.unreachable.i.i: ; preds = %"_ZN83_$LT$statrs.. store i64 %storemerge, ptr %0, align 8 ret void -24: ; preds = %21 - %25 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 192 - %26 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph, 12 - tail call void @llvm.assume(i1 %26) - %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %.sroa.4.0.i.ph.sink.i.ph - %28 = load ptr, ptr %27, align 8, !noalias !444, !nonnull !4, !noundef !4 - %29 = add i64 %.sroa.3.0, -1 +23: ; preds = %.loopexit.i + %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 192 + %25 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph, 12 + tail call void @llvm.assume(i1 %25) + %26 = getelementptr inbounds nuw ptr, ptr %24, i64 %.sroa.4.0.i.ph.sink.i.ph + %27 = load ptr, ptr %26, align 8, !noalias !444, !nonnull !4, !noundef !4 + %28 = add i64 %.sroa.3.0, -1 br label %5 } diff --git a/bench/stockfish/optimized/search.ll b/bench/stockfish/optimized/search.ll index 054836bb384..e0fa753c11a 100644 --- a/bench/stockfish/optimized/search.ll +++ b/bench/stockfish/optimized/search.ll @@ -840,13 +840,13 @@ define dso_local void @_ZN9Stockfish6Search6Worker19iterative_deepeningEv(ptr no br i1 %37, label %32, label %.preheader365, !llvm.loop !9 .preheader365: ; preds = %32, %.preheader365 - %indvars.iv460 = phi i64 [ %indvars.iv.next461, %.preheader365 ], [ 0, %32 ] - %38 = getelementptr inbounds nuw %"struct.Stockfish::Search::Stack", ptr %30, i64 %indvars.iv460 + %indvars.iv464 = phi i64 [ %indvars.iv.next465, %.preheader365 ], [ 0, %32 ] + %38 = getelementptr inbounds nuw %"struct.Stockfish::Search::Stack", ptr %30, i64 %indvars.iv464 %39 = getelementptr inbounds nuw i8, ptr %38, i64 16 - %40 = trunc nuw nsw i64 %indvars.iv460 to i32 + %40 = trunc nuw nsw i64 %indvars.iv464 to i32 store i32 %40, ptr %39, align 8 - %indvars.iv.next461 = add nuw nsw i64 %indvars.iv460, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next461, 249 + %indvars.iv.next465 = add nuw nsw i64 %indvars.iv464, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next465, 249 br i1 %exitcond.not, label %41, label %.preheader365, !llvm.loop !10 41: ; preds = %.preheader365 @@ -1036,7 +1036,7 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio %120 = getelementptr inbounds nuw i8, ptr %0, i64 9570388 %121 = getelementptr inbounds nuw i8, ptr %0, i64 9570424 %122 = getelementptr inbounds nuw i8, ptr %0, i64 9570416 - %.not424 = icmp eq i64 %.sroa.speculated333, 0 + %.not428 = icmp eq i64 %.sroa.speculated333, 0 %123 = getelementptr inbounds nuw i8, ptr %0, i64 9570456 %124 = getelementptr inbounds nuw i8, ptr %0, i64 9570464 %125 = zext i32 %29 to i64 @@ -1124,58 +1124,67 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio %169 = zext nneg i8 %168 to i32 %spec.select = add nsw i32 %.0145, %169 store i64 0, ptr %122, align 16 - br i1 %.not424, label %.critedge3, label %.lr.ph414 + br i1 %.not428, label %.critedge3, label %.lr.ph418 -.lr.ph414: ; preds = %._crit_edge +.lr.ph418: ; preds = %._crit_edge %170 = mul i32 %spec.select, 3 %171 = add i32 %170, 3 %.neg = sdiv i32 %171, -4 %172 = load ptr, ptr %119, align 16 %173 = load atomic i8, ptr %172 seq_cst, align 1 %174 = trunc i8 %173 to i1 - br i1 %174, label %.critedge3, label %.lr.ph581 + br i1 %174, label %.critedge3, label %.lr.ph587 175: ; preds = %383 %176 = load ptr, ptr %119, align 16 %177 = load atomic i8, ptr %176 seq_cst, align 1 %178 = trunc i8 %177 to i1 - br i1 %178, label %.critedge3, label %.lr.ph581, !llvm.loop !12 + br i1 %178, label %.critedge3, label %.lr.ph587, !llvm.loop !12 -.lr.ph581: ; preds = %.lr.ph414, %175 - %.0147411580 = phi i64 [ %.1148, %175 ], [ 0, %.lr.ph414 ] +.lr.ph587: ; preds = %.lr.ph418, %175 + %.0147415586 = phi i64 [ %.1148, %175 ], [ 0, %.lr.ph418 ] %179 = load i64, ptr %122, align 16 %180 = load i64, ptr %121, align 8 %181 = icmp eq i64 %179, %180 %.pre = load ptr, ptr %110, align 64 br i1 %181, label %.preheader, label %.loopexit -.preheader: ; preds = %.lr.ph581 +.preheader: ; preds = %.lr.ph587 %182 = load ptr, ptr %111, align 8 %183 = ptrtoint ptr %182 to i64 %184 = ptrtoint ptr %.pre to i64 %185 = sub i64 %183, %184 %186 = sdiv exact i64 %185, 56 - %187 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %179 - %188 = getelementptr inbounds nuw i8, ptr %187, i64 24 - br label %189 - -189: ; preds = %.preheader, %191 - %storemerge159.in = phi i64 [ %storemerge159, %191 ], [ %179, %.preheader ] - %storemerge159 = add i64 %storemerge159.in, 1 + %storemerge159411 = add i64 %179, 1 + store i64 %storemerge159411, ptr %121, align 8 + %187 = icmp ult i64 %storemerge159411, %186 + br i1 %187, label %.lr.ph413, label %.loopexit + +.lr.ph413: ; preds = %.preheader + %188 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %179 + %189 = getelementptr inbounds nuw i8, ptr %188, i64 24 + br label %191 + +190: ; preds = %191 + %storemerge159 = add nuw i64 %storemerge159412, 1 store i64 %storemerge159, ptr %121, align 8 - %190 = icmp ult i64 %storemerge159, %186 - br i1 %190, label %191, label %.loopexit + %exitcond467.not = icmp eq i64 %storemerge159, %186 + br i1 %exitcond467.not, label %.loopexit, label %191, !llvm.loop !13 -191: ; preds = %189 - %192 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %storemerge159 +191: ; preds = %.lr.ph413, %190 + %storemerge159412 = phi i64 [ %storemerge159411, %.lr.ph413 ], [ %storemerge159, %190 ] + %192 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %storemerge159412 %193 = getelementptr inbounds nuw i8, ptr %192, i64 24 %194 = load i32, ptr %193, align 8 - %195 = load i32, ptr %188, align 8 + %195 = load i32, ptr %189, align 8 %.not160 = icmp eq i32 %194, %195 - br i1 %.not160, label %189, label %.loopexit, !llvm.loop !13 + br i1 %.not160, label %190, label %..loopexit_crit_edge, !llvm.loop !13 + +..loopexit_crit_edge: ; preds = %191 + br label %.loopexit, !llvm.loop !13 -.loopexit: ; preds = %189, %191, %.lr.ph581 - %.1148 = phi i64 [ %.0147411580, %.lr.ph581 ], [ %179, %191 ], [ %179, %189 ] +.loopexit: ; preds = %190, %.preheader, %..loopexit_crit_edge, %.lr.ph587 + %.1148 = phi i64 [ %.0147415586, %.lr.ph587 ], [ %179, %..loopexit_crit_edge ], [ %179, %.preheader ], [ %179, %190 ] store i32 0, ptr %123, align 8 %196 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %179 %197 = getelementptr inbounds nuw i8, ptr %196, i64 8 @@ -1614,8 +1623,8 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, ..critedge3.loopexit_crit_edge: ; preds = %383 br label %.critedge3, !llvm.loop !12 -.critedge3: ; preds = %175, %.lr.ph414, %..critedge3.loopexit_crit_edge, %._crit_edge - %.1131.lcssa = phi i32 [ %.0130, %._crit_edge ], [ %213, %..critedge3.loopexit_crit_edge ], [ %.0130, %.lr.ph414 ], [ %213, %175 ] +.critedge3: ; preds = %175, %.lr.ph418, %..critedge3.loopexit_crit_edge, %._crit_edge + %.1131.lcssa = phi i32 [ %.0130, %._crit_edge ], [ %213, %..critedge3.loopexit_crit_edge ], [ %.0130, %.lr.ph418 ], [ %213, %175 ] %387 = load ptr, ptr %119, align 16 %388 = load atomic i8, ptr %387 seq_cst, align 1 %389 = trunc i8 %388 to i1 @@ -1631,11 +1640,11 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, %394 = getelementptr inbounds nuw i8, ptr %393, i64 1 %395 = load atomic i8, ptr %394 seq_cst, align 1 %396 = trunc i8 %395 to i1 - %.pre464 = load ptr, ptr %110, align 64 + %.pre469 = load ptr, ptr %110, align 64 br i1 %396, label %397, label %450 397: ; preds = %392 - %398 = load i32, ptr %.pre464, align 8 + %398 = load i32, ptr %.pre469, align 8 %.not = icmp ne i32 %398, -32001 %399 = icmp slt i32 %398, -31506 %or.cond354 = and i1 %.not, %399 @@ -1645,7 +1654,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, %.val179 = load ptr, ptr %111, align 8 %.val180 = load ptr, ptr %3, align 8 %401 = ptrtoint ptr %.val179 to i64 - %402 = ptrtoint ptr %.pre464 to i64 + %402 = ptrtoint ptr %.pre469 to i64 %403 = sub i64 %401, %402 %404 = sdiv exact i64 %403, 56 %405 = ashr i64 %404, 2 @@ -1655,12 +1664,12 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, .lr.ph.i.i.i.i: ; preds = %400 %.val.val.val.i.i.i.i = load i16, ptr %.val180, align 2 %407 = mul nuw nsw i64 %405, 224 - %scevgep.i.i.i.i = getelementptr i8, ptr %.pre464, i64 %407 + %scevgep.i.i.i.i = getelementptr i8, ptr %.pre469, i64 %407 br label %408 408: ; preds = %420, %.lr.ph.i.i.i.i %.064.i.i.i.i = phi i64 [ %405, %.lr.ph.i.i.i.i ], [ %422, %420 ] - %.sroa.044.063.i.i.i.i = phi ptr [ %.pre464, %.lr.ph.i.i.i.i ], [ %421, %420 ] + %.sroa.044.063.i.i.i.i = phi ptr [ %.pre469, %.lr.ph.i.i.i.i ], [ %421, %420 ] %409 = getelementptr i8, ptr %.sroa.044.063.i.i.i.i, i64 32 %.val1.i.i.i.i.i = load ptr, ptr %409, align 8 %.val1.val.i.i.i.i.i = load i16, ptr %.val1.i.i.i.i.i, align 2 @@ -1701,7 +1710,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, ._crit_edge.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i, %400 %.pre-phi75.i.i.i.i = phi i64 [ %.pre74.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %403, %400 ] - %.sroa.044.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %.pre464, %400 ] + %.sroa.044.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %.pre469, %400 ] %424 = sdiv exact i64 %.pre-phi75.i.i.i.i, 56 switch i64 %424, label %"_ZN9Stockfish7Utility13move_to_frontINS_6Search8RootMoveEZNS2_6Worker19iterative_deepeningEvE3$_0EEvRSt6vectorIT_SaIS7_EET0_.exit" [ i64 3, label %425 @@ -1771,12 +1780,12 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, 441: ; preds = %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i" %442 = getelementptr inbounds nuw i8, ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, i64 56 - %443 = call ptr @_ZNSt3_V28__rotateIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_St26random_access_iterator_tag(ptr nonnull %.pre464, ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, ptr nonnull %442) - %.pre466 = load ptr, ptr %110, align 64 + %443 = call ptr @_ZNSt3_V28__rotateIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_St26random_access_iterator_tag(ptr nonnull %.pre469, ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, ptr nonnull %442) + %.pre471 = load ptr, ptr %110, align 64 br label %"_ZN9Stockfish7Utility13move_to_frontINS_6Search8RootMoveEZNS2_6Worker19iterative_deepeningEvE3$_0EEvRSt6vectorIT_SaIS7_EET0_.exit" "_ZN9Stockfish7Utility13move_to_frontINS_6Search8RootMoveEZNS2_6Worker19iterative_deepeningEvE3$_0EEvRSt6vectorIT_SaIS7_EET0_.exit": ; preds = %._crit_edge.i.i.i.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i", %441 - %444 = phi ptr [ %.pre464, %._crit_edge.i.i.i.i ], [ %.pre464, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i" ], [ %.pre466, %441 ] + %444 = phi ptr [ %.pre469, %._crit_edge.i.i.i.i ], [ %.pre469, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i" ], [ %.pre471, %441 ] %445 = getelementptr inbounds nuw i8, ptr %444, i64 32 %446 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %445, ptr noundef nonnull align 8 dereferenceable(24) %3) %447 = load ptr, ptr %110, align 64 @@ -1787,7 +1796,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, br label %495 450: ; preds = %397, %392 - %451 = getelementptr inbounds nuw i8, ptr %.pre464, i64 32 + %451 = getelementptr inbounds nuw i8, ptr %.pre469, i64 32 %452 = load ptr, ptr %451, align 8 %453 = load ptr, ptr %3, align 8 %454 = load i16, ptr %452, align 2 @@ -1800,7 +1809,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, br i1 %.not.i209, label %_ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit, label %457 457: ; preds = %456 - %458 = getelementptr inbounds nuw i8, ptr %.pre464, i64 40 + %458 = getelementptr inbounds nuw i8, ptr %.pre469, i64 40 %459 = load ptr, ptr %458, align 8 %460 = ptrtoint ptr %459 to i64 %461 = ptrtoint ptr %452 to i64 @@ -1886,11 +1895,11 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_E %490 = load ptr, ptr %3, align 8 %491 = getelementptr inbounds i8, ptr %490, i64 %462 store ptr %491, ptr %27, align 8 - %.pre465 = load ptr, ptr %110, align 64 + %.pre470 = load ptr, ptr %110, align 64 br label %_ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit _ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit: ; preds = %456, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i - %492 = phi ptr [ %.pre464, %456 ], [ %.pre465, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] + %492 = phi ptr [ %.pre469, %456 ], [ %.pre470, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %493 = load i32, ptr %492, align 8 %494 = load i32, ptr %118, align 8 br label %495 @@ -1941,28 +1950,28 @@ _ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit: ; preds = %456, %_ZSt4copyI %518 = load ptr, ptr %517, align 8 %519 = getelementptr inbounds nuw i8, ptr %516, i64 24 %520 = load ptr, ptr %519, align 8 - %.not362417 = icmp eq ptr %518, %520 - br i1 %.not362417, label %._crit_edge422, label %.lr.ph421 + %.not362421 = icmp eq ptr %518, %520 + br i1 %.not362421, label %._crit_edge426, label %.lr.ph425 -.lr.ph421: ; preds = %515, %.lr.ph421 - %.2419 = phi double [ %527, %.lr.ph421 ], [ %506, %515 ] - %.sroa.0289.0418 = phi ptr [ %530, %.lr.ph421 ], [ %518, %515 ] - %521 = load ptr, ptr %.sroa.0289.0418, align 8 +.lr.ph425: ; preds = %515, %.lr.ph425 + %.2423 = phi double [ %527, %.lr.ph425 ], [ %506, %515 ] + %.sroa.0289.0422 = phi ptr [ %530, %.lr.ph425 ], [ %518, %515 ] + %521 = load ptr, ptr %.sroa.0289.0422, align 8 %522 = getelementptr inbounds nuw i8, ptr %521, i64 8 %523 = load ptr, ptr %522, align 8 %524 = getelementptr inbounds nuw i8, ptr %523, i64 9570448 %525 = load atomic i64, ptr %524 seq_cst, align 8 %526 = uitofp i64 %525 to double - %527 = fadd double %.2419, %526 + %527 = fadd double %.2423, %526 %528 = load ptr, ptr %522, align 8 %529 = getelementptr inbounds nuw i8, ptr %528, i64 9570448 store atomic i64 0, ptr %529 seq_cst, align 8 - %530 = getelementptr inbounds nuw i8, ptr %.sroa.0289.0418, i64 8 + %530 = getelementptr inbounds nuw i8, ptr %.sroa.0289.0422, i64 8 %.not362 = icmp eq ptr %530, %520 - br i1 %.not362, label %._crit_edge422, label %.lr.ph421 + br i1 %.not362, label %._crit_edge426, label %.lr.ph425 -._crit_edge422: ; preds = %.lr.ph421, %515 - %.2.lcssa = phi double [ %506, %515 ], [ %527, %.lr.ph421 ] +._crit_edge426: ; preds = %.lr.ph425, %515 + %.2.lcssa = phi double [ %506, %515 ], [ %527, %.lr.ph425 ] %531 = load i64, ptr %136, align 8 %.not.i211 = icmp ne i64 %531, 0 %532 = load i64, ptr %137, align 32 @@ -1970,7 +1979,7 @@ _ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit: ; preds = %456, %_ZSt4copyI %534 = select i1 %.not.i211, i1 true, i1 %533 br i1 %534, label %535, label %679 -535: ; preds = %._crit_edge422 +535: ; preds = %._crit_edge426 %536 = load ptr, ptr %119, align 16 %537 = load atomic i8, ptr %536 seq_cst, align 1 %538 = trunc i8 %537 to i1 @@ -2185,8 +2194,8 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit234: ; preds = %.lr.ph.i.i229, store atomic i8 1, ptr %678 seq_cst, align 1 br label %679 -679: ; preds = %653, %652, %676, %673, %539, %535, %._crit_edge422 - %.1133 = phi double [ %.0132.ph, %535 ], [ %.0132.ph, %539 ], [ %577, %652 ], [ %577, %653 ], [ %577, %676 ], [ %577, %673 ], [ %.0132.ph, %._crit_edge422 ] +679: ; preds = %653, %652, %676, %673, %539, %535, %._crit_edge426 + %.1133 = phi double [ %.0132.ph, %535 ], [ %.0132.ph, %539 ], [ %577, %652 ], [ %577, %653 ], [ %577, %676 ], [ %577, %673 ], [ %.0132.ph, %._crit_edge426 ] %680 = zext nneg i32 %.0137.ph to i64 %681 = getelementptr inbounds nuw i32, ptr %142, i64 %680 store i32 %.1131.lcssa, ptr %681, align 4 diff --git a/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll b/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll index febf631d0f9..05a80804444 100644 --- a/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll +++ b/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll @@ -50,42 +50,44 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTra %3 = load ptr, ptr %2, align 8, !alias.scope !4, !nonnull !3, !noundef !3 %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8, !alias.scope !4, !noundef !3 - br label %6 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit", label %.lr.ph -6: ; preds = %8, %1 - %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %10, %8 ] - %7 = icmp eq i64 %.sroa.0.0.i.i, %5 - br i1 %7, label %"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit", label %8 +7: ; preds = %.lr.ph + %8 = icmp eq i64 %10, %5 + br i1 %8, label %"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit", label %.lr.ph -8: ; preds = %6 - %9 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %3, i64 %.sroa.0.0.i.i - %10 = add i64 %.sroa.0.0.i.i, 1 +.lr.ph: ; preds = %1, %7 + %.sroa.0.0.i.i1 = phi i64 [ %10, %7 ], [ 0, %1 ] + %9 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %3, i64 %.sroa.0.0.i.i1 + %10 = add nuw i64 %.sroa.0.0.i.i1, 1 invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %9) - to label %6 unwind label %13, !noalias !4 + to label %7 unwind label %14, !noalias !4 -11: ; preds = %15, %13 - %.sroa.0.1.i.i = phi i64 [ %10, %13 ], [ %17, %15 ] - %12 = icmp eq i64 %.sroa.0.1.i.i, %5 - br i1 %12, label %.body, label %15 +11: ; preds = %.lr.ph3 + %12 = add i64 %.sroa.0.1.i.i2, 1 + %13 = icmp eq i64 %12, %5 + br i1 %13, label %.body, label %.lr.ph3 -13: ; preds = %8 - %14 = landingpad { ptr, i32 } +14: ; preds = %.lr.ph + %15 = landingpad { ptr, i32 } cleanup - br label %11 + %16 = icmp eq i64 %10, %5 + br i1 %16, label %.body, label %.lr.ph3 -15: ; preds = %11 - %16 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %3, i64 %.sroa.0.1.i.i - %17 = add i64 %.sroa.0.1.i.i, 1 - invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %16) #6 +.lr.ph3: ; preds = %14, %11 + %.sroa.0.1.i.i2 = phi i64 [ %12, %11 ], [ %10, %14 ] + %17 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %3, i64 %.sroa.0.1.i.i2 + invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %17) #6 to label %11 unwind label %18, !noalias !4 -18: ; preds = %15 +18: ; preds = %.lr.ph3 %19 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #7, !noalias !4 unreachable -.body: ; preds = %11 +.body: ; preds = %11, %14 invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef 8, i64 noundef 48) to label %"_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit" unwind label %20 @@ -96,9 +98,9 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTra unreachable "_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit": ; preds = %.body - resume { ptr, i32 } %14 + resume { ptr, i32 } %15 -"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit": ; preds = %6 +"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit": ; preds = %7, %1 tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef 8, i64 noundef 48) ret void } @@ -115,46 +117,48 @@ define hidden void @"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_allo %.val = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val1 = load i64, ptr %3, align 8, !noundef !3 - br label %4 + %4 = icmp eq i64 %.val1, 0 + br i1 %4, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit", label %.lr.ph.i -4: ; preds = %6, %1 - %.sroa.0.0.i.i = phi i64 [ 0, %1 ], [ %8, %6 ] - %5 = icmp eq i64 %.sroa.0.0.i.i, %.val1 - br i1 %5, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit", label %6 +5: ; preds = %.lr.ph.i + %6 = icmp eq i64 %8, %.val1 + br i1 %6, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit", label %.lr.ph.i -6: ; preds = %4 - %7 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %.val, i64 %.sroa.0.0.i.i - %8 = add i64 %.sroa.0.0.i.i, 1 +.lr.ph.i: ; preds = %1, %5 + %.sroa.0.0.i1.i = phi i64 [ %8, %5 ], [ 0, %1 ] + %7 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %.val, i64 %.sroa.0.0.i1.i + %8 = add nuw i64 %.sroa.0.0.i1.i, 1 invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %7) - to label %4 unwind label %11 + to label %5 unwind label %12 -9: ; preds = %13, %11 - %.sroa.0.1.i.i = phi i64 [ %8, %11 ], [ %15, %13 ] - %10 = icmp eq i64 %.sroa.0.1.i.i, %.val1 - br i1 %10, label %.body, label %13 +9: ; preds = %.lr.ph3.i + %10 = add i64 %.sroa.0.1.i2.i, 1 + %11 = icmp eq i64 %10, %.val1 + br i1 %11, label %.body, label %.lr.ph3.i -11: ; preds = %6 - %12 = landingpad { ptr, i32 } +12: ; preds = %.lr.ph.i + %13 = landingpad { ptr, i32 } cleanup - br label %9 + %14 = icmp eq i64 %8, %.val1 + br i1 %14, label %.body, label %.lr.ph3.i -13: ; preds = %9 - %14 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %.val, i64 %.sroa.0.1.i.i - %15 = add i64 %.sroa.0.1.i.i, 1 - invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %14) #6 +.lr.ph3.i: ; preds = %12, %9 + %.sroa.0.1.i2.i = phi i64 [ %10, %9 ], [ %8, %12 ] + %15 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %.val, i64 %.sroa.0.1.i2.i + invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) #6 to label %9 unwind label %16 -16: ; preds = %13 +16: ; preds = %.lr.ph3.i %17 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #7 unreachable -.body: ; preds = %9 +.body: ; preds = %9, %12 invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef 8, i64 noundef 48) to label %"_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit" unwind label %18 -"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit": ; preds = %4 +"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit": ; preds = %5, %1 tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef 8, i64 noundef 48) ret void @@ -165,7 +169,7 @@ define hidden void @"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_allo unreachable "_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit": ; preds = %.body - resume { ptr, i32 } %12 + resume { ptr, i32 } %13 } ; Function Attrs: nounwind nonlazybind uwtable diff --git a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll index ee3b2964f1b..600f0e71381 100644 --- a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll +++ b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll @@ -30230,30 +30230,32 @@ define { ptr, ptr } @"_ZN103_$LT$tokenizers..pre_tokenizers..PreTokenizerWrapper %40 = load ptr, ptr %39, align 8, !alias.scope !8189, !noalias !8194, !nonnull !4, !noundef !4 %41 = getelementptr inbounds nuw i8, ptr %0, i64 24 %42 = load i64, ptr %41, align 8, !alias.scope !8189, !noalias !8194, !noundef !4 - %43 = getelementptr inbounds { i64, [5 x i64] }, ptr %40, i64 %42 - br label %44 - -44: ; preds = %46, %38 - %.sroa.0.0 = phi ptr [ %40, %38 ], [ %47, %46 ] - %45 = icmp eq ptr %.sroa.0.0, %43 - br i1 %45, label %"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit", label %46 - -46: ; preds = %44 - %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 48 - %48 = tail call { ptr, ptr } @"_ZN103_$LT$tokenizers..pre_tokenizers..PreTokenizerWrapper$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h3dc2169f03a01c15E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.0, ptr noalias noundef nonnull align 8 dereferenceable(48) %1) + %.idx = mul nsw i64 %42, 48 + %43 = getelementptr inbounds i8, ptr %40, i64 %.idx + %44 = icmp eq i64 %42, 0 + br i1 %44, label %"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit", label %.lr.ph + +45: ; preds = %.lr.ph + %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.07, i64 48 + %47 = icmp eq ptr %46, %43 + br i1 %47, label %"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit", label %.lr.ph + +.lr.ph: ; preds = %38, %45 + %.sroa.0.07 = phi ptr [ %46, %45 ], [ %40, %38 ] + %48 = tail call { ptr, ptr } @"_ZN103_$LT$tokenizers..pre_tokenizers..PreTokenizerWrapper$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h3dc2169f03a01c15E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.07, ptr noalias noundef nonnull align 8 dereferenceable(48) %1) %49 = extractvalue { ptr, ptr } %48, 0 %50 = icmp eq ptr %49, null - br i1 %50, label %44, label %51 + br i1 %50, label %45, label %51 -51: ; preds = %46 +51: ; preds = %.lr.ph %52 = extractvalue { ptr, ptr } %48, 1 %53 = icmp ne ptr %52, null tail call void @llvm.assume(i1 %53) br label %"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit" -"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit": ; preds = %44, %51 - %.sroa.3.0.i = phi ptr [ %52, %51 ], [ undef, %44 ] - %.sroa.0.0.i = phi ptr [ %49, %51 ], [ null, %44 ] +"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit": ; preds = %45, %38, %51 + %.sroa.3.0.i = phi ptr [ %52, %51 ], [ undef, %38 ], [ undef, %45 ] + %.sroa.0.0.i = phi ptr [ %49, %51 ], [ null, %38 ], [ null, %45 ] %54 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0.i, 0 %55 = insertvalue { ptr, ptr } %54, ptr %.sroa.3.0.i, 1 br label %"_ZN106_$LT$tokenizers..pre_tokenizers..bert..BertPreTokenizer$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h8a3e051e8afb2459E.exit" diff --git a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll index 1cfcd5a2a87..63c14dfc9a0 100644 --- a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll +++ b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll @@ -2652,35 +2652,37 @@ define hidden void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$ %11 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 362 %12 = load i16, ptr %11, align 2, !noalias !708, !noundef !53 %13 = zext i16 %12 to i64 - %14 = getelementptr inbounds nuw i128, ptr %.sroa.0.0.i, i64 %13 - br label %15 + %.idx.i.i.i = shl nuw nsw i64 %13, 4 + %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 %.idx.i.i.i + %15 = icmp eq i16 %12, 0 + br i1 %15, label %.loopexit.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" -15: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i", %10 - %.sroa.8.0.i.i.i = phi i64 [ 0, %10 ], [ %17, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" ] - %.sroa.0.03.i.i.i = phi ptr [ %.sroa.0.0.i, %10 ], [ %18, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" ] - %16 = icmp eq ptr %.sroa.0.03.i.i.i, %14 - br i1 %16, label %19, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" +16: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" + %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.0312.i.i.i, i64 16 + %18 = add nuw nsw i64 %.sroa.8.011.i.i.i, 1 + %19 = icmp eq ptr %17, %14 + br i1 %19, label %.loopexit.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" default.unreachable.i.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" unreachable -"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i": ; preds = %15 - %17 = add nuw nsw i64 %.sroa.8.0.i.i.i, 1 - %18 = getelementptr inbounds nuw i8, ptr %.sroa.0.03.i.i.i, i64 16 - %.val20.i.i.i = load i128, ptr %.sroa.0.03.i.i.i, align 8, !noalias !708, !noundef !53 +"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i": ; preds = %10, %16 + %.sroa.0.0312.i.i.i = phi ptr [ %17, %16 ], [ %.sroa.0.0.i, %10 ] + %.sroa.8.011.i.i.i = phi i64 [ %18, %16 ], [ 0, %10 ] + %.val20.i.i.i = load i128, ptr %.sroa.0.0312.i.i.i, align 8, !noalias !708, !noundef !53 %.0.i.i.i.i = tail call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i128(i128 %2, i128 %.val20.i.i.i) switch i8 %.0.i.i.i.i, label %default.unreachable.i.i.i [ - i8 -1, label %19 + i8 -1, label %.loopexit.i.i i8 0, label %26 - i8 1, label %15 + i8 1, label %16 ] -19: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i", %15 - %.sroa.4.0.i.ph.sink.i.ph.i = phi i64 [ %13, %15 ], [ %.sroa.8.0.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" ] +.loopexit.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i", %16, %10 + %.sroa.4.0.i.ph.sink.i.ph.i = phi i64 [ 0, %10 ], [ %13, %16 ], [ %.sroa.8.011.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" ] %.not.i.not.i = icmp eq i64 %.sroa.3.0.i, 0 br i1 %.not.i.not.i, label %28, label %20 -20: ; preds = %19 +20: ; preds = %.loopexit.i.i %21 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 368 %22 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph.i, 12 tail call void @llvm.assume(i1 %22) @@ -2695,13 +2697,13 @@ default.unreachable.i.i.i: ; preds = %"_ZN110_$LT$core..i %.sroa.06.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.3.0.i, ptr %.sroa.06.sroa.4.0..sroa_idx, align 8 %.sroa.06.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %.sroa.8.0.i.i.i, ptr %.sroa.06.sroa.5.0..sroa_idx, align 8 + store i64 %.sroa.8.011.i.i.i, ptr %.sroa.06.sroa.5.0..sroa_idx, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr %1, ptr %.sroa.47.0..sroa_idx, align 8 store ptr null, ptr %0, align 8 br label %29 -28: ; preds = %19 +28: ; preds = %.loopexit.i.i store ptr %1, ptr %0, align 8 %.sroa.410.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i128 %2, ptr %.sroa.410.0..sroa_idx, align 8 @@ -2734,35 +2736,37 @@ define hidden { ptr, ptr } @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V %12 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 362 %13 = load i16, ptr %12, align 2, !noalias !719, !noundef !53 %14 = zext i16 %13 to i64 - %15 = getelementptr inbounds nuw i128, ptr %.sroa.0.0.i.i, i64 %14 - br label %16 + %.idx.i.i.i.i = shl nuw nsw i64 %14, 4 + %15 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 %.idx.i.i.i.i + %16 = icmp eq i16 %13, 0 + br i1 %16, label %.loopexit.i.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" -16: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i", %11 - %.sroa.8.0.i.i.i.i = phi i64 [ 0, %11 ], [ %18, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" ] - %.sroa.0.03.i.i.i.i = phi ptr [ %.sroa.0.0.i.i, %11 ], [ %19, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" ] - %17 = icmp eq ptr %.sroa.0.03.i.i.i.i, %15 - br i1 %17, label %20, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" +17: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" + %18 = getelementptr inbounds nuw i8, ptr %.sroa.0.0312.i.i.i.i, i64 16 + %19 = add nuw nsw i64 %.sroa.8.011.i.i.i.i, 1 + %20 = icmp eq ptr %18, %15 + br i1 %20, label %.loopexit.i.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" default.unreachable.i.i.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" unreachable -"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i": ; preds = %16 - %18 = add nuw nsw i64 %.sroa.8.0.i.i.i.i, 1 - %19 = getelementptr inbounds nuw i8, ptr %.sroa.0.03.i.i.i.i, i64 16 - %.val20.i.i.i.i = load i128, ptr %.sroa.0.03.i.i.i.i, align 8, !noalias !719, !noundef !53 +"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i": ; preds = %11, %17 + %.sroa.0.0312.i.i.i.i = phi ptr [ %18, %17 ], [ %.sroa.0.0.i.i, %11 ] + %.sroa.8.011.i.i.i.i = phi i64 [ %19, %17 ], [ 0, %11 ] + %.val20.i.i.i.i = load i128, ptr %.sroa.0.0312.i.i.i.i, align 8, !noalias !719, !noundef !53 %.0.i.i.i.i.i = tail call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i128(i128 %1, i128 %.val20.i.i.i.i) switch i8 %.0.i.i.i.i.i, label %default.unreachable.i.i.i.i [ - i8 -1, label %20 + i8 -1, label %.loopexit.i.i.i i8 0, label %31 - i8 1, label %16 + i8 1, label %17 ] -20: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i", %16 - %.sroa.4.0.i.ph.sink.i.ph.i.i = phi i64 [ %14, %16 ], [ %.sroa.8.0.i.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" ] +.loopexit.i.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i", %17, %11 + %.sroa.4.0.i.ph.sink.i.ph.i.i = phi i64 [ 0, %11 ], [ %.sroa.8.011.i.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" ], [ %14, %17 ] %.not.i.not.i.i = icmp eq i64 %.sroa.3.0.i.i, 0 br i1 %.not.i.not.i.i, label %.loopexit, label %21 -21: ; preds = %20 +21: ; preds = %.loopexit.i.i.i %22 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 368 %23 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph.i.i, 12 tail call void @llvm.assume(i1 %23) @@ -2771,8 +2775,8 @@ default.unreachable.i.i.i.i: ; preds = %"_ZN110_$LT$core..i %26 = add i64 %.sroa.3.0.i.i, -1 br label %11 -.loopexit: ; preds = %20, %4 - %.sroa.13.0.ph = phi ptr [ null, %4 ], [ %.sroa.0.0.i.i, %20 ] +.loopexit: ; preds = %.loopexit.i.i.i, %4 + %.sroa.13.0.ph = phi ptr [ null, %4 ], [ %.sroa.0.0.i.i, %.loopexit.i.i.i ] store ptr %0, ptr %5, align 8 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 store i128 %1, ptr %.sroa.9.0..sroa_idx, align 8 @@ -2792,7 +2796,7 @@ default.unreachable.i.i.i.i: ; preds = %"_ZN110_$LT$core..i 31: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 176 - %33 = getelementptr inbounds nuw { ptr, ptr }, ptr %32, i64 %.sroa.8.0.i.i.i.i + %33 = getelementptr inbounds nuw { ptr, ptr }, ptr %32, i64 %.sroa.8.011.i.i.i.i %34 = load ptr, ptr %33, align 8, !noalias !725, !nonnull !53, !noundef !53 %35 = getelementptr inbounds nuw i8, ptr %33, i64 8 %36 = load ptr, ptr %35, align 8, !noalias !725, !nonnull !53, !align !103, !noundef !53 diff --git a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll index d5f21a4d0b7..a711dfdb356 100644 --- a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll +++ b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll @@ -3341,54 +3341,56 @@ define void @_RNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtB5_8IntoIterTNtNtN %6 = ptrtoint ptr %3 to i64 %7 = sub nuw i64 %5, %6 %8 = udiv exact i64 %7, 48 - br label %15 - -.body: ; preds = %20 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %10 = load i64, ptr %9, align 8, !noalias !447, !noundef !8 - %11 = icmp eq i64 %10, 0 - br i1 %11, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit, label %12 - -12: ; preds = %.body - %13 = load ptr, ptr %0, align 8, !noalias !447, !nonnull !8, !noundef !8 - %14 = mul nuw i64 %10, 48 - tail call void @__rust_dealloc(ptr noundef nonnull %13, i64 noundef %14, i64 noundef range(i64 1, -9223372036854775807) 8) #20, !noalias !452 + %9 = icmp eq ptr %.val2, %3 + br i1 %9, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit, label %.lr.ph.i + +.body: ; preds = %20, %23 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %11 = load i64, ptr %10, align 8, !noalias !447, !noundef !8 + %12 = icmp eq i64 %11, 0 + br i1 %12, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit, label %13 + +13: ; preds = %.body + %14 = load ptr, ptr %0, align 8, !noalias !447, !nonnull !8, !noundef !8 + %15 = mul nuw i64 %11, 48 + tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %15, i64 noundef range(i64 1, -9223372036854775807) 8) #20, !noalias !452 br label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit -15: ; preds = %17, %1 - %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %19, %17 ] - %16 = icmp eq i64 %.sroa.0.0.i, %8 - br i1 %16, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit, label %17 +16: ; preds = %.lr.ph.i + %17 = icmp eq i64 %19, %8 + br i1 %17, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit, label %.lr.ph.i -17: ; preds = %15 - %18 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, i64 } } }, { { { { i64, ptr, {} }, i64 } } } }, ptr %3, i64 %.sroa.0.0.i - %19 = add nuw nsw i64 %.sroa.0.0.i, 1 +.lr.ph.i: ; preds = %1, %16 + %.sroa.0.07.i = phi i64 [ %19, %16 ], [ 0, %1 ] + %18 = getelementptr inbounds { { { { { i64, ptr, {} }, i64 } } }, { { { { i64, ptr, {} }, i64 } } } }, ptr %3, i64 %.sroa.0.07.i + %19 = add nuw i64 %.sroa.0.07.i, 1 invoke fastcc void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBH_EECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef align 8 dereferenceable(48) %18) - to label %15 unwind label %22 + to label %16 unwind label %23 -20: ; preds = %24, %22 - %.sroa.0.1.i = phi i64 [ %19, %22 ], [ %26, %24 ] - %21 = icmp eq i64 %.sroa.0.1.i, %8 - br i1 %21, label %.body, label %24 +20: ; preds = %.lr.ph10.i + %21 = add i64 %.sroa.0.18.i, 1 + %22 = icmp eq i64 %21, %8 + br i1 %22, label %.body, label %.lr.ph10.i -22: ; preds = %17 - %23 = landingpad { ptr, i32 } +23: ; preds = %.lr.ph.i + %24 = landingpad { ptr, i32 } cleanup - br label %20 + %25 = icmp eq i64 %19, %8 + br i1 %25, label %.body, label %.lr.ph10.i -24: ; preds = %20 - %25 = getelementptr inbounds { { { { { i64, ptr, {} }, i64 } } }, { { { { i64, ptr, {} }, i64 } } } }, ptr %3, i64 %.sroa.0.1.i - %26 = add i64 %.sroa.0.1.i, 1 - invoke fastcc void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBH_EECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef align 8 dereferenceable(48) %25) #19 +.lr.ph10.i: ; preds = %23, %20 + %.sroa.0.18.i = phi i64 [ %21, %20 ], [ %19, %23 ] + %26 = getelementptr inbounds { { { { { i64, ptr, {} }, i64 } } }, { { { { i64, ptr, {} }, i64 } } } }, ptr %3, i64 %.sroa.0.18.i + invoke fastcc void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBH_EECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef align 8 dereferenceable(48) %26) #19 to label %20 unwind label %27 -27: ; preds = %24 +27: ; preds = %.lr.ph10.i %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #18 unreachable -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %15 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %16, %1 %29 = getelementptr inbounds nuw i8, ptr %0, i64 16 %30 = load i64, ptr %29, align 8, !noalias !457, !noundef !8 %31 = icmp eq i64 %30, 0 @@ -3403,8 +3405,8 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_s _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit3: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit, %32 ret void -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %12, %.body - resume { ptr, i32 } %23 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %13, %.body + resume { ptr, i32 } %24 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll index 0f97396be4e..364cebb0cfd 100644 --- a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll +++ b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll @@ -708,7 +708,7 @@ define void @_RNvMs_NtCs8mTrBI1stz4_15turborepo_vt1004cellNtB4_4Cell8contents(pt %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 %7 = load i64, ptr %6, align 8, !range !36, !noundef !4 %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 - br i1 %trunc, label %15, label %9 + br i1 %trunc, label %16, label %9 9: ; preds = %2 %10 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 @@ -721,49 +721,53 @@ define void @_RNvMs_NtCs8mTrBI1stz4_15turborepo_vt1004cellNtB4_4Cell8contents(pt %11 = getelementptr inbounds nuw i8, ptr %1, i64 34 %12 = load i8, ptr %11, align 2, !noundef !4 %13 = and i8 %12, 15 - %14 = zext nneg i8 %13 to i64 - br label %17 + %14 = icmp eq i8 %13, 0 + br i1 %14, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread, label %.lr.ph.preheader -15: ; preds = %2 - %16 = load i64, ptr %8, align 8 - tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %7, i64 %16) #19 +.lr.ph.preheader: ; preds = %9 + %15 = zext nneg i8 %13 to i64 + br label %.lr.ph + +16: ; preds = %2 + %17 = load i64, ptr %8, align 8 + tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %7, i64 %17) #19 unreachable -17: ; preds = %22, %9 - %.sroa.7.0 = phi i64 [ %14, %9 ], [ %23, %22 ] - %.sroa.0.0.idx = phi i64 [ 0, %9 ], [ %.sroa.0.0.add, %22 ] - %18 = icmp eq i64 %.sroa.7.0, 0 - %19 = icmp eq i64 %.sroa.0.0.idx, 24 - %or.cond = select i1 %18, i1 true, i1 %19 - br i1 %or.cond, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread, label %22 +18: ; preds = %.lr.ph + %.sroa.0.0.add = add nuw nsw i64 %.sroa.0.0.idx9, 4 + %19 = add nsw i64 %.sroa.7.08, -1 + %20 = icmp eq i64 %19, 0 + %21 = icmp eq i64 %.sroa.0.0.add, 24 + %or.cond = select i1 %20, i1 true, i1 %21 + br i1 %or.cond, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread, label %.lr.ph -_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread: ; preds = %17 +_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread: ; preds = %18, %9 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 -20: ; preds = %22 - %21 = landingpad { ptr, i32 } +22: ; preds = %.lr.ph + %23 = landingpad { ptr, i32 } cleanup invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #20 to label %27 unwind label %25 -22: ; preds = %17 - %.sroa.0.0.ptr = getelementptr inbounds nuw i8, ptr %1, i64 %.sroa.0.0.idx - %23 = add nsw i64 %.sroa.7.0, -1 - %.sroa.0.0.add = add nuw nsw i64 %.sroa.0.0.idx, 4 - %24 = load i32, ptr %.sroa.0.0.ptr, align 4, !range !37, !noundef !4 +.lr.ph: ; preds = %.lr.ph.preheader, %18 + %.sroa.0.0.idx9 = phi i64 [ %.sroa.0.0.add, %18 ], [ 0, %.lr.ph.preheader ] + %.sroa.7.08 = phi i64 [ %19, %18 ], [ %15, %.lr.ph.preheader ] + %.sroa.0.0.ptr10 = getelementptr inbounds nuw i8, ptr %1, i64 %.sroa.0.0.idx9 + %24 = load i32, ptr %.sroa.0.0.ptr10, align 4, !range !37, !noundef !4 invoke void @_ZN5alloc6string6String4push17h2eefef5338b5c74cE.llvm.6172016698289805888(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %24) - to label %17 unwind label %20 + to label %18 unwind label %22 -25: ; preds = %20 +25: ; preds = %22 %26 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #21 unreachable -27: ; preds = %20 - resume { ptr, i32 } %21 +27: ; preds = %22 + resume { ptr, i32 } %23 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable diff --git a/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll b/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll index 9db6c5e840d..54bdc117ab8 100644 --- a/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll +++ b/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll @@ -2247,17 +2247,21 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17hf95cca0234f68c8fE.exit: ; preds store double %31, ptr %8, align 8 %.val = load ptr, ptr %12, align 8, !nonnull !37, !noundef !37 %.val28 = load i64, ptr %13, align 8, !noundef !37 - %32 = getelementptr inbounds { { { i64, [1 x i64] }, ptr, { double, double }, i8, [7 x i8] }, { [32 x i8], i8, [7 x i8] }, i64 }, ptr %.val, i64 %.val28 - %33 = getelementptr inbounds nuw i8, ptr %6, i64 48 - %34 = getelementptr inbounds nuw i8, ptr %6, i64 56 - br label %35 + %.idx39 = mul nsw i64 %.val28, 96 + %32 = getelementptr inbounds i8, ptr %.val, i64 %.idx39 + %33 = icmp eq i64 %.val28, 0 + br i1 %33, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %30 + %34 = getelementptr inbounds nuw i8, ptr %6, i64 48 + %35 = getelementptr inbounds nuw i8, ptr %6, i64 56 + br label %38 -35: ; preds = %52, %30 - %.sroa.0.0 = phi ptr [ %.val, %30 ], [ %39, %52 ] - %36 = icmp eq ptr %.sroa.0.0, %32 - br i1 %36, label %37, label %38 +36: ; preds = %52 + %37 = icmp eq ptr %39, %32 + br i1 %37, label %._crit_edge, label %38 -37: ; preds = %35 +._crit_edge: ; preds = %36, %30 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(616) %4, ptr noundef nonnull align 8 dereferenceable(616) %9, i64 616, i1 false) call fastcc void @_ZN9typst_svg11SVGRenderer8finalize17hef11d202670dcc6bE(ptr noalias noundef align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef align 8 captures(none) dereferenceable(616) %4) @@ -2266,14 +2270,15 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17hf95cca0234f68c8fE.exit: ; preds call void @llvm.lifetime.end.p0(ptr nonnull %9) ret void -38: ; preds = %35 - %39 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 96 +38: ; preds = %.lr.ph, %36 + %.sroa.0.038 = phi ptr [ %.val, %.lr.ph ], [ %39, %36 ] + %39 = getelementptr inbounds nuw i8, ptr %.sroa.0.038, i64 96 %40 = load double, ptr %8, align 8, !noundef !37 invoke void @_ZN5typst6layout9transform9Transform9translate17hb31d06de3fa3dbb6E(ptr noalias noundef nonnull sret({ double, double, double, double, double, double }) align 8 captures(none) dereferenceable(48) %7, double noundef %31, double noundef %40) to label %41 unwind label %.loopexit 41: ; preds = %38 - %42 = invoke { double, double } @_ZN5typst6layout5frame5Frame4size17hc0c2fe724df65569E(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.0) + %42 = invoke { double, double } @_ZN5typst6layout5frame5Frame4size17hc0c2fe724df65569E(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.038) to label %43 unwind label %.loopexit 43: ; preds = %41 @@ -2286,14 +2291,14 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17hf95cca0234f68c8fE.exit: ; preds %46 = extractvalue { double, double } %42, 0 call void @llvm.experimental.noalias.scope.decl(metadata !399) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull readonly align 8 dereferenceable(48) %5, i64 48, i1 false), !alias.scope !402 - store double %46, ptr %33, align 8, !alias.scope !404, !noalias !399 - store double %45, ptr %34, align 8, !alias.scope !404, !noalias !399 + store double %46, ptr %34, align 8, !alias.scope !404, !noalias !399 + store double %45, ptr %35, align 8, !alias.scope !404, !noalias !399 call void @llvm.lifetime.end.p0(ptr nonnull %5) - invoke fastcc void @_ZN9typst_svg11SVGRenderer12render_frame17h25620b8e6ff0124bE(ptr noalias noundef align 8 dereferenceable(616) %9, ptr noalias noundef align 8 captures(none) dereferenceable(64) %6, ptr noalias noundef align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(48) %.sroa.0.0) + invoke fastcc void @_ZN9typst_svg11SVGRenderer12render_frame17h25620b8e6ff0124bE(ptr noalias noundef align 8 dereferenceable(616) %9, ptr noalias noundef align 8 captures(none) dereferenceable(64) %6, ptr noalias noundef align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(48) %.sroa.0.038) to label %47 unwind label %.loopexit 47: ; preds = %44 - %48 = invoke noundef double @_ZN5typst6layout5frame5Frame6height17h618ab57f74087c67E(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.0) + %48 = invoke noundef double @_ZN5typst6layout5frame5Frame6height17h618ab57f74087c67E(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.038) to label %49 unwind label %.loopexit 49: ; preds = %47 @@ -2303,7 +2308,7 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17hf95cca0234f68c8fE.exit: ; preds 52: ; preds = %49 invoke void @"_ZN71_$LT$typst..layout..abs..Abs$u20$as$u20$core..ops..arith..AddAssign$GT$10add_assign17h777cfa6a43af3738E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %8, double noundef %51) - to label %35 unwind label %.loopexit + to label %36 unwind label %.loopexit 53: ; preds = %54 resume { ptr, i32 } %lpad.phi diff --git a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll index 2fb610ae897..b8c2fda8056 100644 --- a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll +++ b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll @@ -15976,7 +15976,7 @@ define hidden void @_ZN12typst_syntax6parser6Parser11trim_errors17h9325fdc1dcc1b switch i8 %trunc.i.i, label %default.unreachable [ i8 0, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i i8 1, label %21 - i8 2, label %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit + i8 2, label %.lr.ph ] default.unreachable: ; preds = %16, %42 @@ -15990,7 +15990,7 @@ default.unreachable: ; preds = %16, %42 _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i: ; preds = %21, %16 %.0.i.i = phi i8 [ %24, %21 ], [ %20, %16 ] - switch i8 %.0.i.i, label %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit [ + switch i8 %.0.i.i, label %.lr.ph [ i8 2, label %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i i8 4, label %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i i8 126, label %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i @@ -15999,34 +15999,41 @@ _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i: ; preds = %2 _ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i: ; preds = %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i %.old1.not.i = icmp eq i64 %17, 0 - br i1 %.old1.not.i, label %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit, label %16 + br i1 %.old1.not.i, label %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge, label %16 -_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit: ; preds = %16, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i, %1, %7 - %.0.i = phi i64 [ %4, %7 ], [ %4, %1 ], [ 0, %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i ], [ %.1.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i ], [ %.1.i, %16 ] - %25 = getelementptr inbounds nuw i8, ptr %0, i64 88 - br label %26 +_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit: ; preds = %1, %7 + %.not26 = icmp eq i64 %4, 0 + br i1 %.not26, label %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge, label %.lr.ph -26: ; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit - %.0 = phi i64 [ %.0.i, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit ], [ %28, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ] - %.not = icmp eq i64 %.0, 0 - br i1 %.not, label %._crit_edge, label %27 +_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge: ; preds = %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 88 + %.pre = load ptr, ptr %.phi.trans.insert, align 8, !alias.scope !3745, !noalias !3748 + br label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge -._crit_edge: ; preds = %26 - %.pre = load ptr, ptr %25, align 8, !alias.scope !3745, !noalias !3748 - br label %split +.lr.ph: ; preds = %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %16, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit + %.0.i40 = phi i64 [ %4, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit ], [ %.1.i, %16 ], [ %.1.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i ] + %25 = getelementptr inbounds nuw i8, ptr %0, i64 88 + br label %27 -27: ; preds = %26 - %28 = add i64 %.0, -1 +26: ; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit + %.not = icmp eq i64 %28, 0 + br i1 %.not, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge, label %27 + +27: ; preds = %.lr.ph, %26 + %.027 = phi i64 [ %.0.i40, %.lr.ph ], [ %28, %26 ] + %28 = add i64 %.027, -1 %29 = icmp ult i64 %28, %4 br i1 %29, label %42, label %55, !prof !1710 -split: ; preds = %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit, %._crit_edge - %30 = phi ptr [ %.pre, %._crit_edge ], [ %43, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ], [ %43, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ] +_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge: ; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit, %26, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge + %.0.i39 = phi i64 [ 0, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %.0.i40, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ], [ %.0.i40, %26 ], [ %.0.i40, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ] + %30 = phi ptr [ %.pre, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %43, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ], [ %43, %26 ], [ %43, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ] + %.0.lcssa = phi i64 [ 0, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %.027, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ], [ 0, %26 ], [ %.027, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ] call void @llvm.lifetime.start.p0(ptr nonnull %2) %31 = getelementptr inbounds nuw i8, ptr %0, i64 80 tail call void @llvm.experimental.noalias.scope.decl(metadata !3748) tail call void @llvm.experimental.noalias.scope.decl(metadata !3745) - %32 = tail call { i64, i64 } @_ZN4core5slice5index5range17hcd550d7dfb1dd288E(i64 noundef %.0, i64 noundef %.0.i, i64 noundef %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.5ab2de7f43314cdaa70b1332ba871678.29.llvm.13506474886552808233), !noalias !3750 + %32 = tail call { i64, i64 } @_ZN4core5slice5index5range17hcd550d7dfb1dd288E(i64 noundef %.0.lcssa, i64 noundef %.0.i39, i64 noundef %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.5ab2de7f43314cdaa70b1332ba871678.29.llvm.13506474886552808233), !noalias !3750 %33 = extractvalue { i64, i64 } %32, 0 %34 = extractvalue { i64, i64 } %32, 1 store i64 %33, ptr %3, align 8, !alias.scope !3745, !noalias !3748 @@ -16074,7 +16081,7 @@ split: ; preds = %_ZN12typst_syntax4n _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit: ; preds = %42, %47 %.0.i16 = phi i8 [ %50, %47 ], [ %46, %42 ] %54 = icmp eq i8 %.0.i16, -128 - br i1 %54, label %56, label %split + br i1 %54, label %56, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge 55: ; preds = %27 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %28, i64 noundef %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.cbbb257abe6dee889b44eb762842009f.160) #23 @@ -16100,7 +16107,7 @@ _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit: ; preds = %42, _ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit: ; preds = %58, %61, %.thread %.0.i.i18 = phi i64 [ %60, %58 ], [ %64, %61 ], [ %53, %.thread ] %65 = icmp eq i64 %.0.i.i18, 0 - br i1 %65, label %26, label %split + br i1 %65, label %26, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge } ; Function Attrs: nonlazybind uwtable diff --git a/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll b/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll index 3411a9f9cc3..1be4befe68a 100644 --- a/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll +++ b/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll @@ -550,35 +550,37 @@ define hidden noundef align 2 dereferenceable_or_null(98) ptr @_ZN12clap_builder %5 = load ptr, ptr %4, align 8, !alias.scope !37, !noalias !40, !nonnull !3, !noundef !3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %7 = load i64, ptr %6, align 8, !alias.scope !37, !noalias !40, !noundef !3 - %8 = getelementptr inbounds { { { i64, i64 } } }, ptr %5, i64 %7 - br label %9 - -9: ; preds = %11, %1 - %.sroa.8.0.i = phi i64 [ 0, %1 ], [ %13, %11 ] - %.sroa.0.06.i = phi ptr [ %5, %1 ], [ %12, %11 ] - %10 = icmp eq ptr %.sroa.0.06.i, %8 - br i1 %10, label %"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread", label %11 - -11: ; preds = %9 - %12 = getelementptr inbounds nuw i8, ptr %.sroa.0.06.i, i64 16 - %13 = add nuw nsw i64 %.sroa.8.0.i, 1 - %14 = call noundef zeroext i1 @"_ZN82_$LT$clap_builder..util..any_value..AnyValueId$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd07ecf55208d1f1dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.06.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2), !noalias !37 - br i1 %14, label %15, label %9 - -15: ; preds = %11 + %.idx.i = shl nsw i64 %7, 4 + %8 = getelementptr inbounds i8, ptr %5, i64 %.idx.i + %9 = icmp eq i64 %7, 0 + br i1 %9, label %"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread", label %.lr.ph.i + +10: ; preds = %.lr.ph.i + %11 = getelementptr inbounds nuw i8, ptr %.sroa.0.0613.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.012.i, 1 + %13 = icmp eq ptr %11, %8 + br i1 %13, label %"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread", label %.lr.ph.i + +.lr.ph.i: ; preds = %1, %10 + %.sroa.0.0613.i = phi ptr [ %11, %10 ], [ %5, %1 ] + %.sroa.8.012.i = phi i64 [ %12, %10 ], [ 0, %1 ] + %14 = call noundef zeroext i1 @"_ZN82_$LT$clap_builder..util..any_value..AnyValueId$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd07ecf55208d1f1dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.0613.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2), !noalias !37 + br i1 %14, label %15, label %10 + +15: ; preds = %.lr.ph.i %16 = getelementptr inbounds nuw i8, ptr %0, i64 40 %17 = load i64, ptr %16, align 8, !alias.scope !37, !noalias !40, !noundef !3 - %18 = icmp ult i64 %.sroa.8.0.i, %17 + %18 = icmp ult i64 %.sroa.8.012.i, %17 br i1 %18, label %20, label %19 19: ; preds = %15 - call void @_ZN4core9panicking18panic_bounds_check17h0328ca7e7f0749c4E(i64 noundef %.sroa.8.0.i, i64 noundef %17, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b1a593b580c1f9921ff48b9a7a9ecc6f.7.llvm.14345549290412151827) #25, !noalias !37 + call void @_ZN4core9panicking18panic_bounds_check17h0328ca7e7f0749c4E(i64 noundef %.sroa.8.012.i, i64 noundef %17, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b1a593b580c1f9921ff48b9a7a9ecc6f.7.llvm.14345549290412151827) #25, !noalias !37 unreachable 20: ; preds = %15 %21 = getelementptr inbounds nuw i8, ptr %0, i64 32 %22 = load ptr, ptr %21, align 8, !alias.scope !37, !noalias !40, !nonnull !3, !noundef !3 - %23 = getelementptr inbounds nuw { { { { ptr, ptr } }, {}, {} }, { { { i64, i64 } } } }, ptr %22, i64 %.sroa.8.0.i + %23 = getelementptr inbounds nuw { { { { ptr, ptr } }, {}, {} }, { { { i64, i64 } } } }, ptr %22, i64 %.sroa.8.012.i %24 = load ptr, ptr %23, align 8, !nonnull !3, !noundef !3 %25 = getelementptr inbounds nuw i8, ptr %23, i64 8 %26 = load ptr, ptr %25, align 8, !nonnull !3, !align !42, !noundef !3 @@ -599,8 +601,8 @@ define hidden noundef align 2 dereferenceable_or_null(98) ptr @_ZN12clap_builder %.sroa.0.0.i4 = select i1 %37, i1 %39, i1 false br i1 %.sroa.0.0.i4, label %"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread", label %40, !prof !47 -"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread": ; preds = %9, %20 - %.sroa.0.0 = phi ptr [ %32, %20 ], [ null, %9 ] +"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread": ; preds = %10, %1, %20 + %.sroa.0.0 = phi ptr [ %32, %20 ], [ null, %1 ], [ null, %10 ] call void @llvm.lifetime.end.p0(ptr nonnull %2) ret ptr %.sroa.0.0 diff --git a/bench/verilator/optimized/V3Number.ll b/bench/verilator/optimized/V3Number.ll index 85d1785b663..aef0b8c6cf9 100644 --- a/bench/verilator/optimized/V3Number.ll +++ b/bench/verilator/optimized/V3Number.ll @@ -12267,63 +12267,64 @@ _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev.exit: ; preds = define dso_local noundef zeroext i1 @_ZNK8V3Number6isAllXEv(ptr noundef nonnull align 8 dereferenceable(56) %0) #3 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 36 %3 = load i8, ptr %2, align 4, !tbaa !40 - %.fr = freeze i8 %3 - %4 = and i8 %.fr, -2 + %4 = and i8 %3, -2 %switch = icmp eq i8 %4, 2 br i1 %switch, label %.critedge, label %5 5: ; preds = %1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 %7 = load i32, ptr %6, align 8, !tbaa !39 - %8 = add i8 %.fr, -1 - %spec.select.i.i = icmp ult i8 %8, 2 - %9 = icmp slt i32 %7, 129 - %10 = load ptr, ptr %0, align 8 - %spec.select.i = select i1 %9, ptr %0, ptr %10 - br i1 %spec.select.i.i, label %.split.us.preheader, label %.split, !prof !41 - -.split.us.preheader: ; preds = %5 - %11 = add nsw i32 %7, 31 - %12 = sdiv i32 %11, 32 - %13 = and i32 %7, 31 - %.not.i = icmp eq i32 %13, 0 - %notmask.i = shl nsw i32 -1, %13 - %14 = xor i32 %notmask.i, -1 - %15 = select i1 %.not.i, i32 -1, i32 %14 - %16 = zext i32 %12 to i64 - br label %.split.us - -.split.us: ; preds = %.split.us.preheader, %_ZNK12V3NumberData3numEv.exit.us - %indvars.iv = phi i64 [ %16, %.split.us.preheader ], [ %19, %_ZNK12V3NumberData3numEv.exit.us ] - %.08.us = phi i32 [ %15, %.split.us.preheader ], [ -1, %_ZNK12V3NumberData3numEv.exit.us ] - %17 = trunc nuw i64 %indvars.iv to i32 - %18 = icmp slt i32 %17, 1 - br i1 %18, label %.critedge, label %_ZNK12V3NumberData3numEv.exit.us - -_ZNK12V3NumberData3numEv.exit.us: ; preds = %.split.us - %19 = add nsw i64 %indvars.iv, -1 - %20 = getelementptr inbounds nuw %"struct.V3NumberData::ValueAndX", ptr %spec.select.i, i64 %19 - %.sroa.0.0.copyload.us = load i32, ptr %20, align 4, !tbaa !62 - %.sroa.4.0..sroa_idx.us = getelementptr inbounds nuw i8, ptr %20, i64 4 - %.sroa.4.0.copyload.us = load i32, ptr %.sroa.4.0..sroa_idx.us, align 4, !tbaa !62 - %21 = and i32 %.sroa.4.0.copyload.us, %.sroa.0.0.copyload.us - %.not.us = icmp eq i32 %21, %.08.us - br i1 %.not.us, label %.split.us, label %.critedge, !llvm.loop !245 - -.split: ; preds = %5 - %22 = icmp slt i32 %7, 1 - br i1 %22, label %.critedge, label %23 - -23: ; preds = %.split - %24 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKci(i8 4, ptr noundef nonnull @.str.95, i32 noundef 198) - %25 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %26 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.96) - %27 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN12V3NumberData16V3NumberDataTypeE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 1 dereferenceable(1) %2) - tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %27) #35 + %8 = icmp slt i32 %7, 1 + br i1 %8, label %.critedge, label %.lr.ph + +.lr.ph: ; preds = %5 + %9 = add i8 %3, -1 + %spec.select.i.i = icmp ult i8 %9, 2 + %10 = icmp samesign ult i32 %7, 129 + %11 = load ptr, ptr %0, align 8 + %spec.select.i = select i1 %10, ptr %0, ptr %11 + br i1 %spec.select.i.i, label %_ZNK12V3NumberData3numEv.exit.preheader, label %22, !prof !41 + +_ZNK12V3NumberData3numEv.exit.preheader: ; preds = %.lr.ph + %12 = and i32 %7, 31 + %.not.i = icmp eq i32 %12, 0 + %notmask.i = shl nsw i32 -1, %12 + %13 = xor i32 %notmask.i, -1 + %14 = select i1 %.not.i, i32 -1, i32 %13 + %15 = add nuw i32 %7, 31 + %16 = lshr i32 %15, 5 + %17 = zext nneg i32 %16 to i64 + br label %_ZNK12V3NumberData3numEv.exit + +18: ; preds = %_ZNK12V3NumberData3numEv.exit + %19 = icmp samesign ult i64 %indvars.iv, 2 + br i1 %19, label %.critedge, label %_ZNK12V3NumberData3numEv.exit, !llvm.loop !245 + +_ZNK12V3NumberData3numEv.exit: ; preds = %_ZNK12V3NumberData3numEv.exit.preheader, %18 + %indvars.iv = phi i64 [ %17, %_ZNK12V3NumberData3numEv.exit.preheader ], [ %indvars.iv.next, %18 ] + %.0814 = phi i32 [ %14, %_ZNK12V3NumberData3numEv.exit.preheader ], [ -1, %18 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %20 = getelementptr inbounds nuw %"struct.V3NumberData::ValueAndX", ptr %spec.select.i, i64 %indvars.iv.next + %.sroa.0.0.copyload = load i32, ptr %20, align 4, !tbaa !62 + %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %20, i64 4 + %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !62 + %21 = and i32 %.sroa.4.0.copyload, %.sroa.0.0.copyload + %.not = icmp eq i32 %21, %.0814 + br i1 %.not, label %18, label %_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge, !llvm.loop !245 + +22: ; preds = %.lr.ph + %23 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKci(i8 4, ptr noundef nonnull @.str.95, i32 noundef 198) + %24 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull @.str.96) + %26 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN12V3NumberData16V3NumberDataTypeE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 1 dereferenceable(1) %2) + tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %26) #35 unreachable -.critedge: ; preds = %_ZNK12V3NumberData3numEv.exit.us, %.split.us, %.split, %1 - %.0 = phi i1 [ false, %1 ], [ true, %.split ], [ %18, %.split.us ], [ %18, %_ZNK12V3NumberData3numEv.exit.us ] +_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge: ; preds = %_ZNK12V3NumberData3numEv.exit + br label %.critedge, !llvm.loop !245 + +.critedge: ; preds = %18, %5, %_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge, %1 + %.0 = phi i1 [ false, %1 ], [ false, %_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge ], [ true, %5 ], [ true, %18 ] ret i1 %.0 } diff --git a/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll b/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll index ce48d9264cb..f6d720382e1 100644 --- a/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll +++ b/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll @@ -1878,57 +1878,55 @@ define internal void @"_ZN4core3ptr85drop_in_place$LT$alloc..boxed..Box$LT$$u5b$ %2 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !3 - br label %5 + %5 = icmp eq i64 %4, 0 + br i1 %5, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4", label %.lr.ph.i -5: ; preds = %7, %1 - %.sroa.0.0.i = phi i64 [ 0, %1 ], [ %9, %7 ] - %6 = icmp eq i64 %.sroa.0.0.i, %4 - br i1 %6, label %"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit", label %7 +6: ; preds = %.lr.ph.i + %7 = icmp eq i64 %9, %4 + br i1 %7, label %"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit", label %.lr.ph.i -7: ; preds = %5 - %8 = getelementptr inbounds nuw { i64, [10 x i64] }, ptr %2, i64 %.sroa.0.0.i - %9 = add i64 %.sroa.0.0.i, 1 +.lr.ph.i: ; preds = %1, %6 + %.sroa.0.07.i = phi i64 [ %9, %6 ], [ 0, %1 ] + %8 = getelementptr inbounds nuw { i64, [10 x i64] }, ptr %2, i64 %.sroa.0.07.i + %9 = add nuw i64 %.sroa.0.07.i, 1 invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$wast..core..expr..Instruction$GT$17h1922c3517e072e36E"(ptr noalias noundef align 8 dereferenceable(88) %8) - to label %5 unwind label %12 + to label %6 unwind label %13 -10: ; preds = %14, %12 - %.sroa.0.1.i = phi i64 [ %9, %12 ], [ %16, %14 ] - %11 = icmp eq i64 %.sroa.0.1.i, %4 - br i1 %11, label %.body, label %14 +10: ; preds = %.lr.ph10.i + %11 = add i64 %.sroa.0.18.i, 1 + %12 = icmp eq i64 %11, %4 + br i1 %12, label %.loopexit, label %.lr.ph10.i -12: ; preds = %7 - %13 = landingpad { ptr, i32 } +13: ; preds = %.lr.ph.i + %14 = landingpad { ptr, i32 } cleanup - br label %10 + %15 = icmp eq i64 %9, %4 + br i1 %15, label %.loopexit, label %.lr.ph10.i -14: ; preds = %10 - %15 = getelementptr inbounds nuw { i64, [10 x i64] }, ptr %2, i64 %.sroa.0.1.i - %16 = add i64 %.sroa.0.1.i, 1 - invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$wast..core..expr..Instruction$GT$17h1922c3517e072e36E"(ptr noalias noundef align 8 dereferenceable(88) %15) #10 +.lr.ph10.i: ; preds = %13, %10 + %.sroa.0.18.i = phi i64 [ %11, %10 ], [ %9, %13 ] + %16 = getelementptr inbounds nuw { i64, [10 x i64] }, ptr %2, i64 %.sroa.0.18.i + invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$wast..core..expr..Instruction$GT$17h1922c3517e072e36E"(ptr noalias noundef align 8 dereferenceable(88) %16) #10 to label %10 unwind label %17 -17: ; preds = %14 +17: ; preds = %.lr.ph10.i %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #11 unreachable -.body: ; preds = %10 +"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit": ; preds = %6 %19 = mul nuw nsw i64 %4, 88 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef range(i64 1, -9223372036854775808) %19, i64 noundef 8) #9 - resume { ptr, i32 } %13 - -"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit": ; preds = %5 - %20 = icmp eq i64 %4, 0 - br i1 %20, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4", label %21 - -21: ; preds = %"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit" - %22 = mul nuw nsw i64 %4, 88 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef range(i64 1, -9223372036854775808) %22, i64 noundef 8) #9 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4": ; preds = %"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit", %21 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4": ; preds = %1, %"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit" ret void + +.loopexit: ; preds = %10, %13 + %20 = mul nuw nsw i64 %4, 88 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef range(i64 1, -9223372036854775808) %20, i64 noundef 8) #9 + resume { ptr, i32 } %14 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll b/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll index 7e4d3a5305e..ecce7550c56 100644 --- a/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll +++ b/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll @@ -227,39 +227,46 @@ define hidden void @"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u2 define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator5eq_by17hab4d9df25472426eE(ptr noundef nonnull readonly captures(address) %0, ptr noundef readnone captures(address) %1, ptr noundef nonnull %2, ptr noundef readnone captures(address) %3) unnamed_addr #0 personality ptr @rust_eh_personality { %5 = icmp ne ptr %1, null tail call void @llvm.assume(i1 %5) - br label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" - -"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i": ; preds = %10, %4 - %.sroa.06.0.i = phi ptr [ %2, %4 ], [ %12, %10 ] - %6 = phi ptr [ %0, %4 ], [ %11, %10 ] - %7 = icmp eq ptr %6, %1 - br i1 %7, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i, label %8 - -8: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" - %9 = icmp eq ptr %.sroa.06.0.i, %3 - br i1 %9, label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit, label %10 - -10: ; preds = %8 - %.val8.i.i.i.i = load i8, ptr %6, align 1, !range !3, !noalias !32, !noundef !7 - %11 = getelementptr inbounds nuw i8, ptr %6, i64 1 - %12 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i, i64 24 - %13 = tail call noundef range(i8 0, 7) i8 @"_ZN71_$LT$wasmi..value..Val$u20$as$u20$wasmi..func..ty..DynamicallyTyped$GT$2ty17h41fa0523649a52cbE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.06.0.i), !noalias !42 - %.not.i.i.i.i.i.i.i = icmp eq i8 %.val8.i.i.i.i, %13 + %6 = icmp eq ptr %0, %1 + br i1 %6, label %.loopexit.i, label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i: ; preds = %4 + %7 = icmp ne ptr %3, null + tail call void @llvm.assume(i1 %7) + br label %10 + +"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i": ; preds = %14 + %8 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i, i64 24 + %9 = icmp eq ptr %12, %1 + br i1 %9, label %.loopexit.i, label %10 + +10: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", %.lr.ph.i.i.i.i + %.sroa.06.0.i = phi ptr [ %2, %.lr.ph.i.i.i.i ], [ %8, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" ] + %11 = phi ptr [ %0, %.lr.ph.i.i.i.i ], [ %12, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" ] + %12 = getelementptr inbounds nuw i8, ptr %11, i64 1 + %13 = icmp eq ptr %.sroa.06.0.i, %3 + br i1 %13, label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit, label %14 + +14: ; preds = %10 + %.val8.i.i.i.i = load i8, ptr %11, align 1, !range !3, !noalias !32, !noundef !7 + %15 = tail call noundef range(i8 0, 7) i8 @"_ZN71_$LT$wasmi..value..Val$u20$as$u20$wasmi..func..ty..DynamicallyTyped$GT$2ty17h41fa0523649a52cbE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.06.0.i), !noalias !42 + %.not.i.i.i.i.i.i.i = icmp eq i8 %.val8.i.i.i.i, %15 br i1 %.not.i.i.i.i.i.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit -_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" - %14 = icmp ne ptr %3, null - tail call void @llvm.assume(i1 %14) - %15 = icmp eq ptr %.sroa.06.0.i, %3 - br i1 %15, label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" +.loopexit.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", %4 + %.sroa.06.1.ph.i = phi ptr [ %2, %4 ], [ %8, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" ] + %16 = icmp ne ptr %3, null + tail call void @llvm.assume(i1 %16) + %17 = icmp eq ptr %.sroa.06.1.ph.i, %3 + br i1 %17, label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i": ; preds = %_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i - %16 = tail call noundef range(i8 0, 7) i8 @"_ZN71_$LT$wasmi..value..Val$u20$as$u20$wasmi..func..ty..DynamicallyTyped$GT$2ty17h41fa0523649a52cbE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.06.0.i), !noalias !45 +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i": ; preds = %.loopexit.i + %18 = tail call noundef range(i8 0, 7) i8 @"_ZN71_$LT$wasmi..value..Val$u20$as$u20$wasmi..func..ty..DynamicallyTyped$GT$2ty17h41fa0523649a52cbE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.06.1.ph.i), !noalias !45 br label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit -_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit: ; preds = %8, %10, %_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" - %17 = phi i1 [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" ], [ true, %_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i ], [ false, %10 ], [ false, %8 ] - ret i1 %17 +_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit: ; preds = %10, %14, %.loopexit.i, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" + %19 = phi i1 [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" ], [ true, %.loopexit.i ], [ false, %14 ], [ false, %10 ] + ret i1 %19 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll b/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll index dc89404d6bf..37ac409ccee 100644 --- a/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll +++ b/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll @@ -18431,20 +18431,25 @@ define hidden void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAd %5 = load i32, ptr %4, align 8, !noundef !16 %6 = getelementptr inbounds nuw i8, ptr %0, i64 48 %7 = tail call noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h21f601848d5677f6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6, i32 noundef 1, i32 noundef %5) - br i1 %7, label %._crit_edge, label %.lr.ph + br i1 %7, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %3 + tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %5) + %8 = icmp eq i32 %5, 0 + br i1 %8, label %._crit_edge, label %.lr.ph8 -8: ; preds = %.lr.ph - %9 = add i32 %.05, -1 +.lr.ph8: ; preds = %.lr.ph.preheader, %.lr.ph + %.057 = phi i32 [ %9, %.lr.ph ], [ %5, %.lr.ph.preheader ] + %9 = add i32 %.057, -1 %10 = tail call noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h21f601848d5677f6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6, i32 noundef 1, i32 noundef %9) br i1 %10, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %3, %8 - %.05 = phi i32 [ %9, %8 ], [ %5, %3 ] - tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %.05) - %11 = icmp eq i32 %.05, 0 - br i1 %11, label %._crit_edge, label %8 +.lr.ph: ; preds = %.lr.ph8 + tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %9) + %11 = icmp eq i32 %9, 0 + br i1 %11, label %._crit_edge, label %.lr.ph8 -._crit_edge: ; preds = %.lr.ph, %8, %3 +._crit_edge: ; preds = %.lr.ph8, %.lr.ph, %.lr.ph.preheader, %3 ret void } @@ -18454,20 +18459,25 @@ define hidden void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAd %5 = load i32, ptr %4, align 8, !noundef !16 %6 = getelementptr inbounds nuw i8, ptr %0, i64 48 %7 = tail call noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h21f601848d5677f6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6, i32 noundef 1, i32 noundef %5) - br i1 %7, label %._crit_edge, label %.lr.ph + br i1 %7, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %3 + tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %5) + %8 = icmp eq i32 %5, 0 + br i1 %8, label %._crit_edge, label %.lr.ph8 -8: ; preds = %.lr.ph - %9 = add i32 %.05, -1 +.lr.ph8: ; preds = %.lr.ph.preheader, %.lr.ph + %.057 = phi i32 [ %9, %.lr.ph ], [ %5, %.lr.ph.preheader ] + %9 = add i32 %.057, -1 %10 = tail call noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h21f601848d5677f6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6, i32 noundef 1, i32 noundef %9) br i1 %10, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %3, %8 - %.05 = phi i32 [ %9, %8 ], [ %5, %3 ] - tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %.05) - %11 = icmp eq i32 %.05, 0 - br i1 %11, label %._crit_edge, label %8 +.lr.ph: ; preds = %.lr.ph8 + tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %9) + %11 = icmp eq i32 %9, 0 + br i1 %11, label %._crit_edge, label %.lr.ph8 -._crit_edge: ; preds = %.lr.ph, %8, %3 +._crit_edge: ; preds = %.lr.ph8, %.lr.ph, %.lr.ph.preheader, %3 ret void } diff --git a/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll b/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll index 138a50be49a..b8ebffc3843 100644 --- a/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll +++ b/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll @@ -6127,8 +6127,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %25 invoke fastcc void @"_ZN16wasmtime_runtime8instance9allocator7pooling24PoolingInstanceAllocator27validate_core_instance_size28_$u7b$$u7b$closure$u7d$$u7d$17h5760d9aba60b8834E"(ptr noalias noundef align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 1 @anon.48a310daf047e914c00cc15599afb284.131, i64 noundef 25, i64 noundef 160) to label %42 unwind label %40, !noalias !817 -39: ; preds = %49, %40 - %.pn.i = phi { ptr, i32 } [ %41, %40 ], [ %50, %49 ] +39: ; preds = %48, %40 + %.pn.i = phi { ptr, i32 } [ %41, %40 ], [ %49, %48 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2295fe8ca205893fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) #32 to label %75 unwind label %73 @@ -6147,39 +6147,43 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %25 %44 = getelementptr inbounds nuw i8, ptr %10, i64 8 %45 = load i64, ptr %44, align 8, !alias.scope !835, !noalias !838, !noundef !4 %.promoted.i = load i64, ptr %10, align 8, !alias.scope !835, !noalias !838 + %.not.not.i13.i = icmp eq i64 %45, %.promoted.i + br i1 %.not.not.i13.i, label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i", label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.lr.ph.i" + +"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.lr.ph.i": ; preds = %43 %46 = getelementptr inbounds nuw i8, ptr %10, i64 16 - br label %47 + br label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i" -47: ; preds = %54, %43 - %48 = phi i64 [ %55, %54 ], [ %.promoted.i, %43 ] - call void @llvm.experimental.noalias.scope.decl(metadata !840) - %.not.not.i.i = icmp eq i64 %45, %48 +47: ; preds = %55 + %.not.not.i.i = icmp eq i64 %45, %51 br i1 %.not.not.i.i, label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i", label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i" -49: ; preds = %54 - %50 = landingpad { ptr, i32 } +48: ; preds = %55 + %49 = landingpad { ptr, i32 } cleanup br label %39 -"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i": ; preds = %47 - %51 = icmp ult i64 %48, 19 - call void @llvm.assume(i1 %51) - %52 = getelementptr inbounds nuw { [3 x i64] }, ptr %46, i64 %48 - %.sroa.01.0.copyload.i = load ptr, ptr %52, align 8, !alias.scope !841, !noalias !817 - %53 = icmp eq ptr %.sroa.01.0.copyload.i, null - br i1 %53, label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i", label %54 - -54: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i" - %55 = add nuw nsw i64 %48, 1 - %.sroa.72.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %52, i64 16 +"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i": ; preds = %47, %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.lr.ph.i" + %50 = phi i64 [ %.promoted.i, %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.lr.ph.i" ], [ %51, %47 ] + call void @llvm.experimental.noalias.scope.decl(metadata !840) + %51 = add nuw nsw i64 %50, 1 + %52 = icmp ult i64 %50, 19 + call void @llvm.assume(i1 %52) + %53 = getelementptr inbounds nuw { [3 x i64] }, ptr %46, i64 %50 + %.sroa.01.0.copyload.i = load ptr, ptr %53, align 8, !alias.scope !841, !noalias !817 + %54 = icmp eq ptr %.sroa.01.0.copyload.i, null + br i1 %54, label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i", label %55 + +55: ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i" + %.sroa.72.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %53, i64 16 %.sroa.72.0.copyload.i = load i32, ptr %.sroa.72.0..sroa_idx.i, align 8, !alias.scope !841, !noalias !817 - %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %52, i64 8 + %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %53, i64 8 %.sroa.6.0.copyload.i = load i64, ptr %.sroa.6.0..sroa_idx.i, align 8, !alias.scope !841, !noalias !817 %56 = zext i32 %.sroa.72.0.copyload.i to i64 invoke fastcc void @"_ZN16wasmtime_runtime8instance9allocator7pooling24PoolingInstanceAllocator27validate_core_instance_size28_$u7b$$u7b$closure$u7d$$u7d$17h5760d9aba60b8834E"(ptr noalias noundef align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 1 %.sroa.01.0.copyload.i, i64 noundef %.sroa.6.0.copyload.i, i64 noundef %56) - to label %47 unwind label %49 + to label %47 unwind label %48 -"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i": ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i", %47 +"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i": ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i", %47, %43 call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !817 %57 = load i64, ptr %13, align 8, !noalias !817, !noundef !4 %58 = icmp eq i64 %57, 0 diff --git a/bench/wireshark/optimized/proto.ll b/bench/wireshark/optimized/proto.ll index 14d60662a0e..02b593d4f5a 100644 --- a/bench/wireshark/optimized/proto.ll +++ b/bench/wireshark/optimized/proto.ll @@ -24691,21 +24691,28 @@ define ptr @proto_item_get_parent_nth(ptr noundef readonly captures(address_is_n %.not = icmp eq ptr %0, null br i1 %.not, label %.loopexit, label %.preheader -.preheader: ; preds = %2, %3 - %.05 = phi ptr [ %6, %3 ], [ %0, %2 ] - %.0 = phi i32 [ %4, %3 ], [ %1, %2 ] - %.not9 = icmp eq i32 %.0, 0 - br i1 %.not9, label %.loopexit, label %3 - -3: ; preds = %.preheader - %4 = add i32 %.0, -1 - %5 = getelementptr inbounds nuw i8, ptr %.05, i64 24 +.preheader: ; preds = %2 + %.not911 = icmp eq i32 %1, 0 + br i1 %.not911, label %.loopexit, label %.lr.ph + +3: ; preds = %.lr.ph + %4 = add i32 %.013, -1 + %.not9 = icmp eq i32 %4, 0 + br i1 %.not9, label %.loopexit, label %.lr.ph, !llvm.loop !40 + +.lr.ph: ; preds = %.preheader, %3 + %.013 = phi i32 [ %4, %3 ], [ %1, %.preheader ] + %.0512 = phi ptr [ %6, %3 ], [ %0, %.preheader ] + %5 = getelementptr inbounds nuw i8, ptr %.0512, i64 24 %6 = load ptr, ptr %5, align 8 %.not10 = icmp eq ptr %6, null - br i1 %.not10, label %.loopexit, label %.preheader, !llvm.loop !40 + br i1 %.not10, label %..loopexit_crit_edge, label %3, !llvm.loop !40 -.loopexit: ; preds = %.preheader, %3, %2 - %.06 = phi ptr [ null, %2 ], [ %.05, %.preheader ], [ null, %3 ] +..loopexit_crit_edge: ; preds = %.lr.ph + br label %.loopexit, !llvm.loop !40 + +.loopexit: ; preds = %3, %.preheader, %..loopexit_crit_edge, %2 + %.06 = phi ptr [ null, %2 ], [ null, %..loopexit_crit_edge ], [ %0, %.preheader ], [ %6, %3 ] ret ptr %.06 } diff --git a/bench/wireshark/optimized/ws_mempbrk.ll b/bench/wireshark/optimized/ws_mempbrk.ll index 800809a46e8..05171cda2f1 100644 --- a/bench/wireshark/optimized/ws_mempbrk.ll +++ b/bench/wireshark/optimized/ws_mempbrk.ll @@ -115,23 +115,24 @@ declare ptr @ws_mempbrk_sse42_exec(ptr noundef, i64 noundef, ptr noundef, ptr no ; Function Attrs: nofree norecurse nosync nounwind null_pointer_is_valid sspstrong memory(argmem: readwrite) uwtable define noundef ptr @ws_memrpbrk_exec(ptr noundef readonly captures(address, ret: address, provenance) %0, i64 noundef %1, ptr noundef readonly captures(none) %2, ptr noundef writeonly captures(address_is_null) %3) local_unnamed_addr #2 { %5 = getelementptr i8, ptr %0, i64 %1 - br label %6 + %6 = icmp ugt ptr %5, %0 + br i1 %6, label %.lr.ph, label %.loopexit -6: ; preds = %8, %4 - %.0 = phi ptr [ %5, %4 ], [ %9, %8 ] - %7 = icmp ugt ptr %.0, %0 - br i1 %7, label %8, label %.loopexit +7: ; preds = %.lr.ph + %8 = icmp ugt ptr %9, %0 + br i1 %8, label %.lr.ph, label %.loopexit, !llvm.loop !11 -8: ; preds = %6 - %9 = getelementptr i8, ptr %.0, i64 -1 +.lr.ph: ; preds = %4, %7 + %.014 = phi ptr [ %9, %7 ], [ %5, %4 ] + %9 = getelementptr i8, ptr %.014, i64 -1 %10 = load i8, ptr %9, align 1 %11 = zext i8 %10 to i64 %12 = getelementptr i8, ptr %2, i64 %11 %13 = load i8, ptr %12, align 1 %.not = icmp eq i8 %13, 0 - br i1 %.not, label %6, label %14, !llvm.loop !11 + br i1 %.not, label %7, label %14, !llvm.loop !11 -14: ; preds = %8 +14: ; preds = %.lr.ph %.not12 = icmp eq ptr %3, null br i1 %.not12, label %.loopexit, label %15 @@ -139,8 +140,8 @@ define noundef ptr @ws_memrpbrk_exec(ptr noundef readonly captures(address, ret: store i8 %10, ptr %3, align 1 br label %.loopexit -.loopexit: ; preds = %6, %14, %15 - %.010 = phi ptr [ %9, %15 ], [ %9, %14 ], [ null, %6 ] +.loopexit: ; preds = %7, %4, %14, %15 + %.010 = phi ptr [ %9, %15 ], [ %9, %14 ], [ null, %4 ], [ null, %7 ] ret ptr %.010 } diff --git a/bench/xgboost/optimized/coll.ll b/bench/xgboost/optimized/coll.ll index 6b9a2185000..86c711dda5b 100644 --- a/bench/xgboost/optimized/coll.ll +++ b/bench/xgboost/optimized/coll.ll @@ -18456,15 +18456,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNSt ; Function Attrs: mustprogress uwtable define linkonce_odr { ptr, i64 } @_ZSt11partial_sumIN7xgboost6common6detail12SpanIteratorINS1_4SpanIKlLm18446744073709551615EEELb1EEENS3_INS4_IlLm18446744073709551615EEELb0EEEET0_T_SB_SA_(ptr %0, i64 %1, ptr %2, i64 %3, ptr %4, i64 %5) local_unnamed_addr #3 comdat { - %.fr48 = freeze ptr %2 - %.fr47 = freeze ptr %0 - %7 = icmp eq ptr %.fr47, %.fr48 + %.fr50 = freeze ptr %2 + %.fr49 = freeze ptr %0 + %7 = icmp eq ptr %.fr49, %.fr50 %8 = icmp eq i64 %1, %3 %9 = select i1 %7, i1 %8, i1 false br i1 %9, label %52, label %10 10: ; preds = %6 - %11 = load i64, ptr %.fr47, align 8, !tbaa !552 + %11 = load i64, ptr %.fr49, align 8, !tbaa !552 %12 = icmp ult i64 %1, %11 br i1 %12, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit, label %13, !prof !441 @@ -18473,7 +18473,7 @@ define linkonce_odr { ptr, i64 } @_ZSt11partial_sumIN7xgboost6common6detail12Spa unreachable _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit: ; preds = %10 - %14 = getelementptr inbounds nuw i8, ptr %.fr47, i64 8 + %14 = getelementptr inbounds nuw i8, ptr %.fr49, i64 8 %15 = load ptr, ptr %14, align 8, !tbaa !554 %16 = load i64, ptr %4, align 8, !tbaa !465 %17 = icmp ult i64 %5, %16 @@ -18490,12 +18490,12 @@ _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0 %22 = load ptr, ptr %21, align 8, !tbaa !467 %23 = getelementptr inbounds nuw i64, ptr %22, i64 %5 store i64 %20, ptr %23, align 8, !tbaa !18 - %24 = load i64, ptr %.fr47, align 8, !tbaa !552 + %24 = load i64, ptr %.fr49, align 8, !tbaa !552 %.not.i39 = icmp eq i64 %1, %24 br i1 %.not.i39, label %._crit_edge, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph, !prof !555 _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit - br i1 %7, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us + br i1 %7, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18.us %25 = phi i64 [ %35, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18.us ], [ %24, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph ] @@ -18522,37 +18522,42 @@ _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0E _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit.us %34 = getelementptr inbounds nuw i64, ptr %22, i64 %32 store i64 %30, ptr %34, align 8, !tbaa !18 - %35 = load i64, ptr %.fr47, align 8, !tbaa !552 + %35 = load i64, ptr %.fr49, align 8, !tbaa !552 %.not.i.us = icmp eq i64 %26, %35 br i1 %.not.i.us, label %._crit_edge, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us, !prof !556, !llvm.loop !557 +_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph + %36 = add nuw i64 %1, 1 + %.not51 = icmp eq i64 %36, %3 + br i1 %.not51, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge, label %.lr.ph + ._crit_edge: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18.us, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit tail call void @_ZSt9terminatev() #31 unreachable -_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18 - %36 = phi i64 [ %47, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18 ], [ %24, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph ] - %.042 = phi i64 [ %42, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18 ], [ %20, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph ] - %.sroa.5.041 = phi i64 [ %37, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18 ], [ %1, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph ] - %.sroa.6.040 = phi i64 [ %44, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18 ], [ %5, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph ] - %37 = add nuw i64 %.sroa.5.041, 1 - %.not49 = icmp eq i64 %37, %3 - br i1 %.not49, label %48, label %38 +_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18 + %37 = add nuw i64 %38, 1 + %.not52 = icmp eq i64 %37, %3 + br i1 %.not52, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge, label %.lr.ph, !llvm.loop !557 -38: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit - %39 = icmp ult i64 %37, %36 - br i1 %39, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16, label %.split.us, !prof !441 +.lr.ph: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit + %38 = phi i64 [ %37, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %36, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] + %.sroa.6.04048 = phi i64 [ %45, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %5, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] + %.04247 = phi i64 [ %43, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %20, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] + %39 = phi i64 [ %48, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %24, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] + %40 = icmp ult i64 %38, %39 + br i1 %40, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16, label %.split.us, !prof !441 -.split.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us, %38 +.split.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us, %.lr.ph tail call void @_ZSt9terminatev() #31 unreachable -_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16: ; preds = %38 - %40 = getelementptr inbounds nuw i64, ptr %15, i64 %37 - %41 = load i64, ptr %40, align 8, !tbaa !18 - %42 = add nsw i64 %41, %.042 - %43 = load i64, ptr %4, align 8, !tbaa !465 - %.not.i17 = icmp eq i64 %.sroa.6.040, %43 +_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16: ; preds = %.lr.ph + %41 = getelementptr inbounds nuw i64, ptr %15, i64 %38 + %42 = load i64, ptr %41, align 8, !tbaa !18 + %43 = add nsw i64 %42, %.04247 + %44 = load i64, ptr %4, align 8, !tbaa !465 + %.not.i17 = icmp eq i64 %.sroa.6.04048, %44 br i1 %.not.i17, label %.split44.us, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit, !prof !451 .split44.us: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16.us, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16 @@ -18560,32 +18565,33 @@ _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb unreachable _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16 - %44 = add nuw i64 %.sroa.6.040, 1 - %45 = icmp ult i64 %44, %43 - br i1 %45, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18, label %.split46.us, !prof !441 + %45 = add nuw i64 %.sroa.6.04048, 1 + %46 = icmp ult i64 %45, %44 + br i1 %46, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18, label %.split46.us, !prof !441 .split46.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit.us, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit tail call void @_ZSt9terminatev() #31 unreachable _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit - %46 = getelementptr inbounds nuw i64, ptr %22, i64 %44 - store i64 %42, ptr %46, align 8, !tbaa !18 - %47 = load i64, ptr %.fr47, align 8, !tbaa !552 - %.not.i = icmp eq i64 %37, %47 + %47 = getelementptr inbounds nuw i64, ptr %22, i64 %45 + store i64 %43, ptr %47, align 8, !tbaa !18 + %48 = load i64, ptr %.fr49, align 8, !tbaa !552 + %.not.i = icmp eq i64 %38, %48 br i1 %.not.i, label %._crit_edge, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit, !prof !556, !llvm.loop !557 -48: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit +_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split + %.sroa.6.0.lcssa35 = phi i64 [ %5, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ], [ %45, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ] %49 = load i64, ptr %4, align 8, !tbaa !465 - %.not.i19 = icmp eq i64 %.sroa.6.040, %49 + %.not.i19 = icmp eq i64 %.sroa.6.0.lcssa35, %49 br i1 %.not.i19, label %50, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20, !prof !451 -50: ; preds = %48 +50: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge tail call void @_ZSt9terminatev() #31 unreachable -_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20: ; preds = %48 - %51 = add nuw i64 %.sroa.6.040, 1 +_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge + %51 = add nuw i64 %.sroa.6.0.lcssa35, 1 br label %52 52: ; preds = %6, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20 diff --git a/bench/yosys/optimized/json11.ll b/bench/yosys/optimized/json11.ll index 2ca3c054571..89e280cdd4a 100644 --- a/bench/yosys/optimized/json11.ll +++ b/bench/yosys/optimized/json11.ll @@ -3607,18 +3607,24 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %_ZN i8 42, label %86 ] -.preheader.i: ; preds = %79, %83 - %storemerge.in69.i = phi i64 [ %storemerge.i, %83 ], [ %38, %79 ] - %storemerge.i = add i64 %storemerge.in69.i, 1 +.preheader.i: ; preds = %79 + %storemerge70.i = add i64 %34, 2 + store i64 %storemerge70.i, ptr %11, align 8, !tbaa !95 + %82 = icmp ult i64 %storemerge70.i, %40 + br i1 %82, label %.lr.ph.i, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit + +83: ; preds = %.lr.ph.i + %storemerge.i = add nuw i64 %storemerge71.i, 1 store i64 %storemerge.i, ptr %11, align 8, !tbaa !95 - %82 = icmp ult i64 %storemerge.i, %40 - br i1 %82, label %83, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit + %exitcond.not.i = icmp eq i64 %storemerge.i, %40 + br i1 %exitcond.not.i, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, label %.lr.ph.i, !llvm.loop !138 -83: ; preds = %.preheader.i - %84 = getelementptr inbounds nuw i8, ptr %33, i64 %storemerge.i +.lr.ph.i: ; preds = %.preheader.i, %83 + %storemerge71.i = phi i64 [ %storemerge.i, %83 ], [ %storemerge70.i, %.preheader.i ] + %84 = getelementptr inbounds nuw i8, ptr %33, i64 %storemerge71.i %85 = load i8, ptr %84, align 1, !tbaa !18 %.not.i = icmp eq i8 %85, 10 - br i1 %.not.i, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, label %.preheader.i, !llvm.loop !138 + br i1 %.not.i, label %..critedge.loopexit_crit_edge.i, label %83, !llvm.loop !138 86: ; preds = %79 %87 = add i64 %34, 2 @@ -4000,8 +4006,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i: ; preds = %_ call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit -_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit: ; preds = %.preheader.i, %83, %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44.i, %173, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i - %.06.i = phi i1 [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27.i ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44.i ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i ], [ true, %173 ], [ false, %31 ], [ true, %83 ], [ true, %.preheader.i ] +..critedge.loopexit_crit_edge.i: ; preds = %.lr.ph.i + br label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, !llvm.loop !138 + +_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit: ; preds = %83, %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44.i, %173, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i, %..critedge.loopexit_crit_edge.i + %.06.i = phi i1 [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27.i ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44.i ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i ], [ true, %173 ], [ false, %31 ], [ true, %..critedge.loopexit_crit_edge.i ], [ true, %.preheader.i ], [ true, %83 ] %213 = load i8, ptr %23, align 8, !tbaa !99, !range !101, !noundef !102 %214 = trunc nuw i8 %213 to i1 br i1 %214, label %.loopexit, label %215 diff --git a/bench/zfp/optimized/decode4d.ll b/bench/zfp/optimized/decode4d.ll index cf7b5c0e50c..338341b19b4 100644 --- a/bench/zfp/optimized/decode4d.ll +++ b/bench/zfp/optimized/decode4d.ll @@ -942,48 +942,49 @@ define internal fastcc i32 @decode_ints_uint64(ptr noalias noundef captures(none .lr.ph126.preheader.i: ; preds = %7 %8 = tail call i32 @llvm.usub.sat.i32(i32 64, i32 %2) %9 = zext nneg i32 %8 to i64 - br label %.lr.ph126.i - -.lr.ph126.i: ; preds = %stream_read_bit.exit58._crit_edge.i, %.lr.ph126.preheader.i - %indvars.iv143.i = phi i64 [ 64, %.lr.ph126.preheader.i ], [ %indvars.iv.next144.i, %stream_read_bit.exit58._crit_edge.i ] - %.0125.i = phi i32 [ 0, %.lr.ph126.preheader.i ], [ %.1.lcssa.i, %stream_read_bit.exit58._crit_edge.i ] - %.047123.i = phi i32 [ %1, %.lr.ph126.preheader.i ], [ %.249.i, %stream_read_bit.exit58._crit_edge.i ] - %.sroa.0.0122.i = phi i64 [ %.sroa.0.0.copyload.i, %.lr.ph126.preheader.i ], [ %.sroa.0.3.i, %stream_read_bit.exit58._crit_edge.i ] - %.sroa.16.0121.i = phi ptr [ %.sroa.16.0.copyload.i, %.lr.ph126.preheader.i ], [ %.sroa.16.3.i, %stream_read_bit.exit58._crit_edge.i ] - %.sroa.10.0120.i = phi i64 [ %.sroa.10.0.copyload.i, %.lr.ph126.preheader.i ], [ %.sroa.10.3.i, %stream_read_bit.exit58._crit_edge.i ] - %indvars.iv.next144.i = add nsw i64 %indvars.iv143.i, -1 - %10 = icmp ugt i64 %indvars.iv143.i, %9 - br i1 %10, label %11, label %decode_many_ints_uint64.exit - -11: ; preds = %.lr.ph126.i - %12 = tail call i32 @llvm.umin.i32(i32 %.0125.i, i32 %.047123.i) - %13 = sub i32 %.047123.i, %12 - %.not136.i = icmp eq i32 %.0125.i, 0 + %10 = icmp samesign ult i32 %8, 64 + br i1 %10, label %.lr.ph, label %decode_many_ints_uint64.exit + +.lr.ph126.i: ; preds = %stream_read_bit.exit58._crit_edge.i + %indvars.iv.next144.i = add nsw i64 %indvars.iv.next144.i66, -1 + %11 = icmp ugt i64 %indvars.iv.next144.i66, %9 + br i1 %11, label %.lr.ph, label %decode_many_ints_uint64.exit + +.lr.ph: ; preds = %.lr.ph126.preheader.i, %.lr.ph126.i + %indvars.iv.next144.i66 = phi i64 [ %indvars.iv.next144.i, %.lr.ph126.i ], [ 63, %.lr.ph126.preheader.i ] + %.sroa.10.0120.i65 = phi i64 [ %.sroa.10.3.i, %.lr.ph126.i ], [ %.sroa.10.0.copyload.i, %.lr.ph126.preheader.i ] + %.sroa.16.0121.i64 = phi ptr [ %.sroa.16.3.i, %.lr.ph126.i ], [ %.sroa.16.0.copyload.i, %.lr.ph126.preheader.i ] + %.sroa.0.0122.i63 = phi i64 [ %.sroa.0.3.i, %.lr.ph126.i ], [ %.sroa.0.0.copyload.i, %.lr.ph126.preheader.i ] + %.047123.i62 = phi i32 [ %.249.i, %.lr.ph126.i ], [ %1, %.lr.ph126.preheader.i ] + %.0125.i61 = phi i32 [ %.1.lcssa.i, %.lr.ph126.i ], [ 0, %.lr.ph126.preheader.i ] + %12 = tail call i32 @llvm.umin.i32(i32 %.0125.i61, i32 %.047123.i62) + %13 = sub i32 %.047123.i62, %12 + %.not136.i = icmp eq i32 %.0125.i61, 0 br i1 %.not136.i, label %.preheader77.i, label %.lr.ph.i -.lr.ph.i: ; preds = %11 - %14 = shl nuw i64 1, %indvars.iv.next144.i +.lr.ph.i: ; preds = %.lr.ph + %14 = shl nuw i64 1, %indvars.iv.next144.i66 %wide.trip.count.i = zext i32 %12 to i64 br label %19 -.preheader77.i: ; preds = %30, %11 - %.sroa.10.1.lcssa.i = phi i64 [ %.sroa.10.0120.i, %11 ], [ %24, %30 ] - %.sroa.16.1.lcssa.i = phi ptr [ %.sroa.16.0121.i, %11 ], [ %.sroa.16.6.i, %30 ] - %.sroa.0.1.lcssa.i = phi i64 [ %.sroa.0.0122.i, %11 ], [ %23, %30 ] +.preheader77.i: ; preds = %30, %.lr.ph + %.sroa.10.1.lcssa.i = phi i64 [ %.sroa.10.0120.i65, %.lr.ph ], [ %24, %30 ] + %.sroa.16.1.lcssa.i = phi ptr [ %.sroa.16.0121.i64, %.lr.ph ], [ %.sroa.16.6.i, %30 ] + %.sroa.0.1.lcssa.i = phi i64 [ %.sroa.0.0122.i63, %.lr.ph ], [ %23, %30 ] %15 = icmp ne i32 %13, 0 - %16 = icmp ult i32 %.0125.i, 256 - %17 = select i1 %15, i1 %16, i1 false + %16 = icmp ult i32 %.0125.i61, 256 + %17 = and i1 %15, %16 br i1 %17, label %.lr.ph107.i, label %stream_read_bit.exit58._crit_edge.i .lr.ph107.i: ; preds = %.preheader77.i - %18 = shl nuw i64 1, %indvars.iv.next144.i + %18 = shl nuw i64 1, %indvars.iv.next144.i66 br label %31 19: ; preds = %30, %.lr.ph.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %30 ] - %.sroa.0.182.i = phi i64 [ %.sroa.0.0122.i, %.lr.ph.i ], [ %23, %30 ] - %.sroa.16.181.i = phi ptr [ %.sroa.16.0121.i, %.lr.ph.i ], [ %.sroa.16.6.i, %30 ] - %.sroa.10.180.i = phi i64 [ %.sroa.10.0120.i, %.lr.ph.i ], [ %24, %30 ] + %.sroa.0.182.i = phi i64 [ %.sroa.0.0122.i63, %.lr.ph.i ], [ %23, %30 ] + %.sroa.16.181.i = phi ptr [ %.sroa.16.0121.i64, %.lr.ph.i ], [ %.sroa.16.6.i, %30 ] + %.sroa.10.180.i = phi i64 [ %.sroa.10.0120.i65, %.lr.ph.i ], [ %24, %30 ] %.not.i.i = icmp eq i64 %.sroa.0.182.i, 0 br i1 %.not.i.i, label %21, label %._crit_edge.i.i @@ -1018,7 +1019,7 @@ stream_read_bit.exit.i: ; preds = %21, %._crit_edge.i. br i1 %exitcond.not.i, label %.preheader77.i, label %19 31: ; preds = %stream_read_bit.exit63._crit_edge.i, %.lr.ph107.i - %.1106.i = phi i32 [ %.0125.i, %.lr.ph107.i ], [ %58, %stream_read_bit.exit63._crit_edge.i ] + %.1106.i = phi i32 [ %.0125.i61, %.lr.ph107.i ], [ %58, %stream_read_bit.exit63._crit_edge.i ] %.148105.i = phi i32 [ %13, %.lr.ph107.i ], [ %.4.i, %stream_read_bit.exit63._crit_edge.i ] %.sroa.0.2104.i = phi i64 [ %.sroa.0.1.lcssa.i, %.lr.ph107.i ], [ %.sroa.0.5.i, %stream_read_bit.exit63._crit_edge.i ] %.sroa.16.2103.i = phi ptr [ %.sroa.16.1.lcssa.i, %.lr.ph107.i ], [ %.sroa.16.5.i, %stream_read_bit.exit63._crit_edge.i ] @@ -1104,7 +1105,7 @@ stream_read_bit.exit63._crit_edge.i: ; preds = %49, %stream_read_bi br i1 %61, label %31, label %stream_read_bit.exit58._crit_edge.i stream_read_bit.exit58._crit_edge.i: ; preds = %stream_read_bit.exit63._crit_edge.i, %stream_read_bit.exit58.i, %.preheader77.i - %.1.lcssa.i = phi i32 [ %.0125.i, %.preheader77.i ], [ %58, %stream_read_bit.exit63._crit_edge.i ], [ %.1106.i, %stream_read_bit.exit58.i ] + %.1.lcssa.i = phi i32 [ %.0125.i61, %.preheader77.i ], [ %58, %stream_read_bit.exit63._crit_edge.i ], [ %.1106.i, %stream_read_bit.exit58.i ] %.sroa.10.3.i = phi i64 [ %.sroa.10.1.lcssa.i, %.preheader77.i ], [ %.sroa.10.5.i, %stream_read_bit.exit63._crit_edge.i ], [ %37, %stream_read_bit.exit58.i ] %.sroa.16.3.i = phi ptr [ %.sroa.16.1.lcssa.i, %.preheader77.i ], [ %.sroa.16.5.i, %stream_read_bit.exit63._crit_edge.i ], [ %.sroa.16.7.i, %stream_read_bit.exit58.i ] %.sroa.0.3.i = phi i64 [ %.sroa.0.1.lcssa.i, %.preheader77.i ], [ %.sroa.0.5.i, %stream_read_bit.exit63._crit_edge.i ], [ %36, %stream_read_bit.exit58.i ] @@ -1112,11 +1113,11 @@ stream_read_bit.exit58._crit_edge.i: ; preds = %stream_read_bit.exi %.not.i = icmp eq i32 %.249.i, 0 br i1 %.not.i, label %decode_many_ints_uint64.exit, label %.lr.ph126.i -decode_many_ints_uint64.exit: ; preds = %.lr.ph126.i, %stream_read_bit.exit58._crit_edge.i, %7 - %.sroa.10.0.lcssa.i = phi i64 [ %.sroa.10.0.copyload.i, %7 ], [ %.sroa.10.0120.i, %.lr.ph126.i ], [ %.sroa.10.3.i, %stream_read_bit.exit58._crit_edge.i ] - %.sroa.16.0.lcssa.i = phi ptr [ %.sroa.16.0.copyload.i, %7 ], [ %.sroa.16.0121.i, %.lr.ph126.i ], [ %.sroa.16.3.i, %stream_read_bit.exit58._crit_edge.i ] - %.sroa.0.0.lcssa.i = phi i64 [ %.sroa.0.0.copyload.i, %7 ], [ %.sroa.0.0122.i, %.lr.ph126.i ], [ %.sroa.0.3.i, %stream_read_bit.exit58._crit_edge.i ] - %.047.lcssa.i = phi i32 [ 0, %7 ], [ %.047123.i, %.lr.ph126.i ], [ 0, %stream_read_bit.exit58._crit_edge.i ] +decode_many_ints_uint64.exit: ; preds = %stream_read_bit.exit58._crit_edge.i, %.lr.ph126.i, %.lr.ph126.preheader.i, %7 + %.sroa.10.0.lcssa.i = phi i64 [ %.sroa.10.0.copyload.i, %7 ], [ %.sroa.10.0.copyload.i, %.lr.ph126.preheader.i ], [ %.sroa.10.3.i, %.lr.ph126.i ], [ %.sroa.10.3.i, %stream_read_bit.exit58._crit_edge.i ] + %.sroa.16.0.lcssa.i = phi ptr [ %.sroa.16.0.copyload.i, %7 ], [ %.sroa.16.0.copyload.i, %.lr.ph126.preheader.i ], [ %.sroa.16.3.i, %.lr.ph126.i ], [ %.sroa.16.3.i, %stream_read_bit.exit58._crit_edge.i ] + %.sroa.0.0.lcssa.i = phi i64 [ %.sroa.0.0.copyload.i, %7 ], [ %.sroa.0.0.copyload.i, %.lr.ph126.preheader.i ], [ %.sroa.0.3.i, %.lr.ph126.i ], [ %.sroa.0.3.i, %stream_read_bit.exit58._crit_edge.i ] + %.047.lcssa.i = phi i32 [ 0, %7 ], [ %1, %.lr.ph126.preheader.i ], [ 0, %stream_read_bit.exit58._crit_edge.i ], [ %.249.i, %.lr.ph126.i ] store i64 %.sroa.0.0.lcssa.i, ptr %0, align 8, !tbaa !18, !alias.scope !28, !noalias !31 store i64 %.sroa.10.0.lcssa.i, ptr %.sroa.10.0..sroa_idx.i, align 8, !tbaa !18, !alias.scope !28, !noalias !31 store ptr %.sroa.16.0.lcssa.i, ptr %.sroa.16.0..sroa_idx.i, align 8, !tbaa !33, !alias.scope !28, !noalias !31 diff --git a/bench/zstd/optimized/cover.ll b/bench/zstd/optimized/cover.ll index b8b6c4e2fb4..9f972ad6354 100644 --- a/bench/zstd/optimized/cover.ll +++ b/bench/zstd/optimized/cover.ll @@ -580,11 +580,11 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %102 = tail call i64 @fwrite(ptr nonnull @.str.21, i64 35, i64 1, ptr %101) #22 %103 = load ptr, ptr @stderr, align 8, !tbaa !9 %104 = tail call i32 @fflush(ptr noundef %103) - %.pre128 = load ptr, ptr %88, align 8, !tbaa !31 + %.pre141 = load ptr, ptr %88, align 8, !tbaa !31 br label %105 105: ; preds = %100, %97 - %106 = phi ptr [ %.pre128, %100 ], [ %87, %97 ] + %106 = phi ptr [ %.pre141, %100 ], [ %87, %97 ] %.not.i115 = icmp eq ptr %106, null br i1 %.not.i115, label %108, label %107 @@ -658,21 +658,21 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %134 = load ptr, ptr @stderr, align 8, !tbaa !9 %135 = tail call i32 @fflush(ptr noundef %134) %.pre = load i64, ptr %85, align 8, !tbaa !20 - %.pre127.pre = load ptr, ptr %88, align 8, !tbaa !31 + %.pre140.pre = load ptr, ptr %88, align 8, !tbaa !31 br label %136 136: ; preds = %131, %128 - %.pre127 = phi ptr [ %.pre127.pre, %131 ], [ %87, %128 ] + %.pre140 = phi ptr [ %.pre140.pre, %131 ], [ %87, %128 ] %137 = phi i64 [ %.pre, %131 ], [ %84, %128 ] - %.not123 = icmp eq i64 %137, 0 - br i1 %.not123, label %._crit_edge, label %.lr.ph + %.not133 = icmp eq i64 %137, 0 + br i1 %.not133, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %136, %.lr.ph %138 = phi i64 [ %141, %.lr.ph ], [ 0, %136 ] - %.0122 = phi i32 [ %140, %.lr.ph ], [ 0, %136 ] - %139 = getelementptr inbounds nuw i32, ptr %.pre127, i64 %138 - store i32 %.0122, ptr %139, align 4, !tbaa !18 - %140 = add i32 %.0122, 1 + %.0126 = phi i32 [ %140, %.lr.ph ], [ 0, %136 ] + %139 = getelementptr inbounds nuw i32, ptr %.pre140, i64 %138 + store i32 %.0126, ptr %139, align 4, !tbaa !18 + %140 = add i32 %.0126, 1 %141 = zext i32 %140 to i64 %142 = icmp ugt i64 %137, %141 br i1 %142, label %.lr.ph, label %._crit_edge, !llvm.loop !42 @@ -681,7 +681,7 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %143 = load i32, ptr %120, align 8, !tbaa !40 %144 = icmp ult i32 %143, 9 %145 = select i1 %144, ptr @COVER_strict_cmp8, ptr @COVER_strict_cmp - tail call void @qsort_r(ptr noundef %.pre127, i64 noundef %137, i64 noundef 4, ptr noundef nonnull %145, ptr noundef nonnull %0) #24 + tail call void @qsort_r(ptr noundef %.pre140, i64 noundef %137, i64 noundef 4, ptr noundef nonnull %145, ptr noundef nonnull %0) #24 %146 = load i32, ptr @g_displayLevel, align 4, !tbaa !18 %147 = icmp sgt i32 %146, 1 br i1 %147, label %148, label %153 @@ -703,30 +703,59 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop br i1 %.not.i116, label %COVER_groupBy.exit, label %.preheader.i .preheader.i: ; preds = %153, %COVER_group.exit.i - %.0192.i = phi i64 [ %.1.lcssa.i, %COVER_group.exit.i ], [ 0, %153 ] - %.0201.i = phi ptr [ %.0.i, %COVER_group.exit.i ], [ %154, %153 ] - %159 = add nuw i64 %.0192.i, 1 - %umax.i = tail call i64 @llvm.umax.i64(i64 %155, i64 %159) - %160 = add i64 %umax.i, -1 - br label %161 - -161: ; preds = %162, %.preheader.i - %.1.in.i = phi i64 [ %.1.i, %162 ], [ %.0192.i, %.preheader.i ] - %.020.pn.i = phi ptr [ %.0.i, %162 ], [ %.0201.i, %.preheader.i ] - %.0.i = getelementptr inbounds nuw i8, ptr %.020.pn.i, i64 4 - %exitcond.not.i117 = icmp eq i64 %.1.in.i, %160 - br i1 %exitcond.not.i117, label %.critedge.i, label %162 - -162: ; preds = %161 - %.1.i = add i64 %.1.in.i, 1 - %163 = tail call i32 %158(ptr noundef nonnull %0, ptr noundef %.0201.i, ptr noundef nonnull %.0.i) #24, !callees !43 + %.01913.i = phi i64 [ %.1.lcssa.i, %COVER_group.exit.i ], [ 0, %153 ] + %.02012.i = phi ptr [ %.0.lcssa.i, %COVER_group.exit.i ], [ %154, %153 ] + %.01.i = getelementptr inbounds nuw i8, ptr %.02012.i, i64 4 + %.12.i = add nuw i64 %.01913.i, 1 + %159 = icmp ult i64 %.12.i, %155 + br i1 %159, label %.lr.ph.i117.preheader, label %.critedge.i + +.lr.ph.i117.preheader: ; preds = %.preheader.i + %160 = tail call i32 %158(ptr noundef nonnull %0, ptr noundef %.02012.i, ptr noundef nonnull %.01.i) #24, !callees !43 + %161 = icmp eq i32 %160, 0 + br i1 %161, label %.lr.ph129, label %..critedge_crit_edge8.i, !llvm.loop !44 + +.lr.ph129: ; preds = %.lr.ph.i117.preheader + %.0.i170 = getelementptr inbounds nuw i8, ptr %.02012.i, i64 8 + %.1.i171 = add nuw i64 %.01913.i, 2 + %exitcond.not.i118172 = icmp eq i64 %.1.i171, %155 + br i1 %exitcond.not.i118172, label %.critedge.i, label %.lr.ph.i117.lr.ph, !llvm.loop !44 + +.lr.ph.i117.lr.ph: ; preds = %.lr.ph129 + br label %.lr.ph.i117, !llvm.loop !44 + +162: ; preds = %.lr.ph.i117 + %.0.i = getelementptr inbounds nuw i8, ptr %.0.i174, i64 4 + %.1.i = add nuw i64 %.1.i175, 1 + %exitcond.not.i118 = icmp eq i64 %.1.i, %155 + br i1 %exitcond.not.i118, label %..critedge.i.loopexit_crit_edge, label %.lr.ph.i117, !llvm.loop !44 + +.lr.ph.i117: ; preds = %.lr.ph.i117.lr.ph, %162 + %.1.i175 = phi i64 [ %.1.i171, %.lr.ph.i117.lr.ph ], [ %.1.i, %162 ] + %.0.i174 = phi ptr [ %.0.i170, %.lr.ph.i117.lr.ph ], [ %.0.i, %162 ] + %.04.i128173 = phi ptr [ %.01.i, %.lr.ph.i117.lr.ph ], [ %.0.i174, %162 ] + %163 = tail call i32 %158(ptr noundef nonnull %0, ptr noundef %.02012.i, ptr noundef nonnull %.0.i174) #24, !callees !43 %164 = icmp eq i32 %163, 0 - br i1 %164, label %161, label %.critedge.i, !llvm.loop !44 + br i1 %164, label %162, label %.lr.ph.i117...critedge_crit_edge8.i_crit_edge, !llvm.loop !44 -.critedge.i: ; preds = %162, %161 - %.1.lcssa.i = phi i64 [ %umax.i, %161 ], [ %.1.i, %162 ] +.lr.ph.i117...critedge_crit_edge8.i_crit_edge: ; preds = %.lr.ph.i117 + br label %..critedge_crit_edge8.i, !llvm.loop !44 + +..critedge_crit_edge8.i: ; preds = %.lr.ph.i117...critedge_crit_edge8.i_crit_edge, %.lr.ph.i117.preheader + %.15.i.lcssa = phi i64 [ %.1.i175, %.lr.ph.i117...critedge_crit_edge8.i_crit_edge ], [ %.12.i, %.lr.ph.i117.preheader ] + %.04.i.lcssa = phi ptr [ %.0.i174, %.lr.ph.i117...critedge_crit_edge8.i_crit_edge ], [ %.01.i, %.lr.ph.i117.preheader ] + %.020.pn3.i.lcssa = phi ptr [ %.04.i128173, %.lr.ph.i117...critedge_crit_edge8.i_crit_edge ], [ %.02012.i, %.lr.ph.i117.preheader ] + br label %.critedge.i, !llvm.loop !44 + +..critedge.i.loopexit_crit_edge: ; preds = %162 + br label %.critedge.i, !llvm.loop !44 + +.critedge.i: ; preds = %.lr.ph129, %..critedge.i.loopexit_crit_edge, %..critedge_crit_edge8.i, %.preheader.i + %.020.pn.lcssa.i = phi ptr [ %.020.pn3.i.lcssa, %..critedge_crit_edge8.i ], [ %.02012.i, %.preheader.i ], [ %.0.i174, %..critedge.i.loopexit_crit_edge ], [ %.01.i, %.lr.ph129 ] + %.0.lcssa.i = phi ptr [ %.04.i.lcssa, %..critedge_crit_edge8.i ], [ %.01.i, %.preheader.i ], [ %.0.i, %..critedge.i.loopexit_crit_edge ], [ %.0.i170, %.lr.ph129 ] + %.1.lcssa.i = phi i64 [ %.15.i.lcssa, %..critedge_crit_edge8.i ], [ %.12.i, %.preheader.i ], [ %155, %..critedge.i.loopexit_crit_edge ], [ %155, %.lr.ph129 ] %165 = load ptr, ptr %88, align 8, !tbaa !31 - %166 = ptrtoint ptr %.0201.i to i64 + %166 = ptrtoint ptr %.02012.i to i64 %167 = ptrtoint ptr %165 to i64 %168 = sub i64 %166, %167 %169 = lshr exact i64 %168, 2 @@ -740,7 +769,7 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop br label %177 177: ; preds = %198, %.critedge.i - %.038.i.i = phi ptr [ %.0201.i, %.critedge.i ], [ %199, %198 ] + %.038.i.i = phi ptr [ %.02012.i, %.critedge.i ], [ %199, %198 ] %.02637.i.i = phi i64 [ %174, %.critedge.i ], [ %.1.i.i, %198 ] %.02736.i.i = phi i32 [ 0, %.critedge.i ], [ %.128.i.i, %198 ] %.02935.i.i = phi ptr [ %171, %.critedge.i ], [ %.130.i.i, %198 ] @@ -755,7 +784,7 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop 184: ; preds = %177 %185 = add i32 %.02736.i.i, 1 - %.not33.i.i = icmp eq ptr %.038.i.i, %.020.pn.i + %.not33.i.i = icmp eq ptr %.038.i.i, %.020.pn.lcssa.i br i1 %.not33.i.i, label %198, label %186 186: ; preds = %184 @@ -794,7 +823,7 @@ COVER_lower_bound.exit.i.i: ; preds = %.lr.ph.i.i.i, %186 %.128.i.i = phi i32 [ %.02736.i.i, %177 ], [ %185, %COVER_lower_bound.exit.i.i ], [ %185, %184 ] %.1.i.i = phi i64 [ %.02637.i.i, %177 ], [ %196, %COVER_lower_bound.exit.i.i ], [ %.02637.i.i, %184 ] %199 = getelementptr inbounds nuw i8, ptr %.038.i.i, i64 4 - %.not.i.i = icmp eq ptr %.038.i.i, %.020.pn.i + %.not.i.i = icmp eq ptr %.038.i.i, %.020.pn.lcssa.i br i1 %.not.i.i, label %COVER_group.exit.i, label %177, !llvm.loop !46 COVER_group.exit.i: ; preds = %198 diff --git a/bench/zxing/optimized/Utf.ll b/bench/zxing/optimized/Utf.ll index fe604b85c2d..bf3e97687b9 100644 --- a/bench/zxing/optimized/Utf.ll +++ b/bench/zxing/optimized/Utf.ll @@ -113,71 +113,79 @@ define internal fastcc void @_ZN5ZXingL14AppendFromUtf8ESt17basic_string_viewIDu %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 %5 = load i64, ptr %4, align 8, !tbaa !9 %.not.i = icmp eq i64 %0, 0 - br i1 %.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread, label %.lr.ph.i + br i1 %.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread, label %.lr.ph23.i _ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread: ; preds = %3 tail call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %5) br label %._crit_edge -.lr.ph.i: ; preds = %3, %.critedge.i - %.018.i = phi i64 [ %.1.i, %.critedge.i ], [ 0, %3 ] - %.01317.i = phi i64 [ %26, %.critedge.i ], [ 0, %3 ] - %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.018.i +.lr.ph23.i: ; preds = %3, %.critedge.i + %.022.i = phi i64 [ %.1.i, %.critedge.i ], [ 0, %3 ] + %.01321.i = phi i64 [ %27, %.critedge.i ], [ 0, %3 ] + %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.022.i %7 = load i8, ptr %6, align 1, !tbaa !16 %8 = icmp sgt i8 %7, -1 br i1 %8, label %9, label %11 -9: ; preds = %.lr.ph.i - %10 = add nuw i64 %.018.i, 1 +9: ; preds = %.lr.ph23.i + %10 = add nuw i64 %.022.i, 1 br label %.critedge.i -11: ; preds = %.lr.ph.i +11: ; preds = %.lr.ph23.i %12 = zext i8 %7 to i32 %13 = add nsw i32 %12, -192 %14 = lshr i32 %13, 4 switch i32 %14, label %.preheader.i [ - i32 0, label %15 - i32 1, label %15 - i32 2, label %17 - i32 3, label %19 + i32 0, label %16 + i32 1, label %16 + i32 2, label %18 + i32 3, label %20 ] -15: ; preds = %11, %11 - %16 = add i64 %.018.i, 2 +.preheader.i: ; preds = %11 + %.217.i = add nuw i64 %.022.i, 1 + %15 = icmp ult i64 %.217.i, %0 + br i1 %15, label %.lr.ph.i, label %.critedge.i + +16: ; preds = %11, %11 + %17 = add i64 %.022.i, 2 br label %.critedge.i -17: ; preds = %11 - %18 = add i64 %.018.i, 3 +18: ; preds = %11 + %19 = add i64 %.022.i, 3 br label %.critedge.i -19: ; preds = %11 - %20 = add i64 %.018.i, 4 +20: ; preds = %11 + %21 = add i64 %.022.i, 4 br label %.critedge.i -.preheader.i: ; preds = %11, %22 - %.2.in.i = phi i64 [ %.2.i, %22 ], [ %.018.i, %11 ] - %.2.i = add nuw i64 %.2.in.i, 1 - %21 = icmp ult i64 %.2.i, %0 - br i1 %21, label %22, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit - -22: ; preds = %.preheader.i - %23 = getelementptr inbounds nuw i8, ptr %1, i64 %.2.i - %24 = load i8, ptr %23, align 1, !tbaa !16 - %25 = icmp slt i8 %24, -64 - br i1 %25, label %.preheader.i, label %.critedge.i, !llvm.loop !18 - -.critedge.i: ; preds = %22, %19, %17, %15, %9 - %.1.i = phi i64 [ %10, %9 ], [ %16, %15 ], [ %18, %17 ], [ %20, %19 ], [ %.2.i, %22 ] - %26 = add i64 %.01317.i, 1 - %27 = icmp ult i64 %.1.i, %0 - br i1 %27, label %.lr.ph.i, label %.lr.ph, !llvm.loop !20 - -_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit: ; preds = %.preheader.i - %28 = add i64 %.01317.i, 1 +22: ; preds = %.lr.ph.i + %.2.i = add nuw i64 %.218.i, 1 + %exitcond.not.i = icmp eq i64 %.2.i, %0 + br i1 %exitcond.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29, label %.lr.ph.i, !llvm.loop !18 + +_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29: ; preds = %22 + %23 = add i64 %.01321.i, 1 br label %.lr.ph -.lr.ph: ; preds = %.critedge.i, %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit - %.sink35 = phi i64 [ %28, %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit ], [ %26, %.critedge.i ] +.lr.ph.i: ; preds = %.preheader.i, %22 + %.218.i = phi i64 [ %.2.i, %22 ], [ %.217.i, %.preheader.i ] + %24 = getelementptr inbounds nuw i8, ptr %1, i64 %.218.i + %25 = load i8, ptr %24, align 1, !tbaa !16 + %26 = icmp slt i8 %25, -64 + br i1 %26, label %22, label %..critedge.loopexit_crit_edge.i, !llvm.loop !18 + +..critedge.loopexit_crit_edge.i: ; preds = %.lr.ph.i + br label %.critedge.i, !llvm.loop !18 + +.critedge.i: ; preds = %..critedge.loopexit_crit_edge.i, %20, %18, %16, %.preheader.i, %9 + %.1.i = phi i64 [ %10, %9 ], [ %17, %16 ], [ %19, %18 ], [ %21, %20 ], [ %.218.i, %..critedge.loopexit_crit_edge.i ], [ %.217.i, %.preheader.i ] + %27 = add i64 %.01321.i, 1 + %28 = icmp ult i64 %.1.i, %0 + br i1 %28, label %.lr.ph23.i, label %.lr.ph, !llvm.loop !20 + +.lr.ph: ; preds = %.critedge.i, %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29 + %.sink35 = phi i64 [ %23, %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29 ], [ %27, %.critedge.i ] %29 = add i64 %.sink35, %5 tail call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %29) %30 = getelementptr inbounds nuw i8, ptr %1, i64 %0 From 55185e53fca70d263695e8aefd26d266ba4aee1e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:02:32 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/cbaBlast.ll | 24 ++--- bench/abc/optimized/dauGia.ll | 26 ++--- bench/abc/optimized/extraUtilFile.ll | 8 +- bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll | 14 +-- bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll | 26 ++--- bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll | 8 +- bench/arrow/optimized/os.ll | 4 +- bench/assimp/optimized/RemoveComments.ll | 46 ++++----- bench/bdwgc/optimized/cordxtra.ll | 8 +- bench/boost/optimized/params_base.ll | 12 +-- bench/boost/optimized/test_fs.ll | 10 +- bench/bullet3/optimized/poly34.ll | 44 ++++----- bench/c3c/optimized/sema_name_resolution.ll | 26 ++--- bench/c3c/optimized/whereami.ll | 22 ++--- bench/chibicc/optimized/tokenize.ll | 28 +++--- bench/clamav/optimized/macho.ll | 12 +-- bench/clamav/optimized/special.ll | 12 +-- bench/cmake/optimized/block_decoder.ll | 38 ++++---- bench/cmake/optimized/cmOrderDirectories.ll | 10 +- .../optimized/3x959pa9na58uqov.ll | 2 +- bench/cpython/optimized/obmalloc.ll | 10 +- bench/csmith/optimized/ArrayVariable.ll | 54 +++++------ bench/curl/optimized/mprintf.ll | 8 +- bench/cvc5/optimized/alpha_equivalence.ll | 12 +-- bench/darktable/optimized/Cr2LJpegDecoder.ll | 16 ++-- bench/diesel-rs/optimized/23kokisxi5pskw1l.ll | 22 ++--- bench/draco/optimized/mesh_are_equivalent.ll | 8 +- bench/eastl/optimized/eathread_pool.ll | 4 +- .../optimized/3a1f053714hdbf2r1u9m19s6u.ll | 24 ++--- .../optimized/9wkk97gvpzd6xthejxapvo559.ll | 18 ++-- bench/faiss/optimized/colorprint.ll | 8 +- bench/ffmpeg/optimized/ebur128.ll | 14 +-- bench/ffmpeg/optimized/img2.ll | 10 +- bench/folly/optimized/Dump.ll | 24 ++--- .../optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll | 4 +- bench/freetype/optimized/sfnt.ll | 2 +- bench/git/optimized/delta-islands.ll | 16 ++-- bench/git/optimized/reftable-backend.ll | 16 ++-- bench/git/optimized/shell.ll | 18 ++-- bench/graphviz/optimized/actions.ll | 12 +-- bench/gromacs/optimized/atomsbuilder.ll | 10 +- bench/gromacs/optimized/colvarcomp_protein.ll | 62 ++++++------ bench/grpc/optimized/compression_internal.ll | 6 +- .../optimized/hb-subset-cff-common.ll | 6 +- bench/hdf5/optimized/H5FDonion_index.ll | 6 +- bench/hdf5/optimized/H5Sall.ll | 24 ++--- bench/hermes/optimized/DebugInfo.ll | 4 +- bench/hermes/optimized/Sorting.ll | 4 +- .../optimized/1wenjtbhc61q6deg.ll | 62 ++++++------ bench/hwloc/optimized/topology.ll | 14 +-- bench/hyperscan/optimized/bad_patterns.ll | 36 +++---- bench/icu/optimized/dtfmtsym.ll | 28 +++--- bench/icu/optimized/strrepl.ll | 28 +++--- bench/icu/optimized/ucnvlat1.ll | 10 +- bench/image-rs/optimized/ptscn4jakoj4p9m.ll | 44 ++++----- .../optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll | 42 ++++---- bench/jq/optimized/big5.ll | 34 +++---- bench/jq/optimized/regenc.ll | 2 +- bench/libcxx/optimized/valarray.ll | 74 +++++++------- bench/libevent/optimized/event.ll | 80 ++++++++-------- bench/libevent/optimized/http.ll | 10 +- bench/libigl/optimized/exact_geodesic.ll | 10 +- bench/libigl/optimized/sort_angles.ll | 16 ++-- bench/libquic/optimized/prime.ll | 12 +-- bench/libquic/optimized/quic_connection.ll | 6 +- bench/libwebp/optimized/alpha_processing.ll | 6 +- bench/lief/optimized/asn1write.ll | 14 +-- bench/lief/optimized/x509.ll | 64 ++++++------- bench/linux/optimized/dmaengine.ll | 6 +- bench/llama.cpp/optimized/llama-chat.ll | 12 +-- bench/llvm/optimized/LangOptions.ll | 8 +- bench/llvm/optimized/OptimizedStructLayout.ll | 4 +- bench/luajit/optimized/lj_debug.ll | 54 +++++------ bench/lvgl/optimized/lv_group.ll | 10 +- bench/lvgl/optimized/lv_span.ll | 8 +- bench/lvgl/optimized/lv_table.ll | 12 +-- .../optimized/54ajasddlqavlxt2.ll | 18 ++-- bench/meshlab/optimized/TexturePainter.ll | 4 +- bench/meshlab/optimized/packing.ll | 12 +-- .../optimized/vcacheoptimizer.ll | 96 +++++++++---------- bench/mimalloc/optimized/prim.ll | 6 +- bench/minetest/optimized/CFileSystem.ll | 8 +- .../mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll | 26 ++--- bench/mitsuba3/optimized/filesystem.ll | 40 ++++---- bench/ncnn/optimized/imreadwrite.ll | 4 +- bench/nghttp2/optimized/sfparse.ll | 44 ++++----- bench/nix/optimized/eval-settings.ll | 8 +- .../node/optimized/libnode.string_decoder.ll | 4 +- bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll | 48 +++++----- bench/nori/optimized/common.ll | 48 +++++----- bench/open3d/optimized/contrib.ll | 22 ++--- bench/opencv/optimized/jp2.ll | 6 +- bench/openjdk/optimized/elfFile.ll | 12 +-- bench/openjdk/optimized/type.ll | 6 +- bench/openspiel/optimized/infostate_tree.ll | 10 +- bench/openssl/optimized/rsa_kem.ll | 22 ++--- bench/openusd/optimized/avif.ll | 2 +- bench/pbrt-v4/optimized/stbimage.ll | 4 +- bench/php/optimized/parse_tz.ll | 20 ++-- bench/php/optimized/plain_wrapper.ll | 66 ++++++------- .../optimized/4hq7qqfz57g4ftqe0u539725f.ll | 4 +- bench/pocketpy/optimized/expr.ll | 14 +-- .../optimized/0qbeb52i2e81o7of4uqvbqn1y.ll | 8 +- bench/postgres/optimized/execIndexing.ll | 4 +- bench/postgres/optimized/proc.ll | 12 +-- bench/proj/optimized/proj_strtod.ll | 30 +++--- bench/protobuf/optimized/csharp_message.ll | 8 +- bench/proxygen/optimized/ParseURL.ll | 8 +- bench/qemu/optimized/libvhost-user.ll | 22 ++--- bench/qemu/optimized/virtio.ll | 20 ++-- .../optimized/43xnog1a87dssj1hwthynpevl.ll | 4 +- .../optimized/ddriv7i4doqny17a487136o1r.ll | 18 ++-- .../optimized/em94uyxz0wp9gccfab963606p.ll | 40 ++++---- .../optimized/6l7kltspw5elnc95wd7ksy4mp.ll | 6 +- .../optimized/6u02ixh93hrjm23fysoy5xrjw.ll | 4 +- bench/rand-rs/optimized/34yh0c028yq5fj4d.ll | 10 +- bench/raylib/optimized/rtextures.ll | 8 +- bench/re2/optimized/re2.ll | 6 +- bench/redis/optimized/networking.ll | 20 ++-- bench/redis/optimized/tracking.ll | 20 ++-- bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll | 44 ++++----- bench/rocksdb/optimized/plain_table_reader.ll | 18 ++-- bench/ruby/optimized/date_core.ll | 46 ++++----- .../optimized/7qxi6ixqvlegea1o7y7fo6yub.ll | 4 +- .../optimized/9dt8mtshsu2ct8ugypwqwozwg.ll | 12 +-- .../optimized/35mx14hjf8oh90noer0x3ymew.ll | 32 +++---- bench/sdl/optimized/SDL_string.ll | 18 ++-- bench/sentencepiece/optimized/builder.ll | 26 ++--- bench/slurm/optimized/cbuf.ll | 12 +-- ...ycpu_top___024root__DepSet_hcf0db31f__0.ll | 8 +- ...op___024root__DepSet_hcf0db31f__0__Slow.ll | 8 +- bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll | 54 +++++------ bench/stockfish/optimized/search.ll | 88 ++++++++--------- .../optimized/07d18yovueuilo4ucwbczrjk9.ll | 52 +++++----- .../optimized/10h1ju7dwsvagf79.ll | 4 +- bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll | 42 ++++---- .../optimized/68uz0ms18epwru7402hblucwm.ll | 28 +++--- .../optimized/7fw9xnh6zcxu0x094jeq6b04v.ll | 30 +++--- bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll | 12 +-- bench/typst-rs/optimized/2hy987uth4sp8yoc.ll | 22 ++--- .../optimized/1v5vjcevp56t5ndlvgh9f608z.ll | 4 +- bench/verilator/optimized/V3Number.ll | 12 +-- .../optimized/4m6wfct6oj4zo483nw31mpwkd.ll | 26 ++--- .../optimized/5o0hleoi639h6rlkufrksw131.ll | 20 ++-- .../wasmtime-rs/optimized/1r2x5absurxbrq18.ll | 16 ++-- .../wasmtime-rs/optimized/2lz954crgst412nx.ll | 10 +- bench/wireshark/optimized/proto.ll | 6 +- bench/wireshark/optimized/ws_mempbrk.ll | 10 +- bench/xgboost/optimized/coll.ll | 50 +++++----- bench/yosys/optimized/json11.ll | 10 +- bench/zfp/optimized/decode4d.ll | 4 +- bench/zstd/optimized/cover.ll | 46 ++++----- bench/zxing/optimized/Utf.ll | 40 ++++---- 153 files changed, 1562 insertions(+), 1562 deletions(-) diff --git a/bench/abc/optimized/cbaBlast.ll b/bench/abc/optimized/cbaBlast.ll index 56f0745d54f..ba415ba7a0d 100644 --- a/bench/abc/optimized/cbaBlast.ll +++ b/bench/abc/optimized/cbaBlast.ll @@ -1621,29 +1621,29 @@ declare i32 @Gia_ManHashXor(ptr noundef, i32 noundef, i32 noundef) local_unnamed ; Function Attrs: nounwind uwtable define i32 @Cba_BlastLess2(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef readonly captures(none) %2, i32 noundef %3) local_unnamed_addr #0 { %5 = icmp sgt i32 %3, 0 - br i1 %5, label %.lr.ph.preheader, label %._crit_edge25 + br i1 %5, label %6, label %._crit_edge25 -.lr.ph.preheader: ; preds = %4 +6: ; preds = %4 %6 = zext nneg i32 %3 to i64 - br label %.lr.ph + br label %14 -7: ; preds = %.lr.ph +7:; preds = %.lr.ph %8 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %8, label %.lr.ph, label %._crit_edge25, !llvm.loop !54 + br i1 %8, label %9, label %._crit_edge25, !llvm.loop !54 -.lr.ph: ; preds = %.lr.ph.preheader, %7 +9: ; preds = %6, %7 %indvars.iv = phi i64 [ %6, %.lr.ph.preheader ], [ %indvars.iv.next, %7 ] - %.024 = phi i32 [ 0, %.lr.ph.preheader ], [ %15, %7 ] + %.024 = phi i32 [ 0, %.lr.ph.preheader ], [ %20, %7 ] %.01923 = phi i32 [ 0, %.lr.ph.preheader ], [ %19, %7 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %9 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv.next - %10 = load i32, ptr %9, align 4, !tbaa !11 + %14 = getelementptr inbounds nuw i32, ptr %1, i64 %indvars.iv.next + %15 = load i32, ptr %14, align 4, !tbaa !11 %11 = xor i32 %10, 1 %12 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next - %13 = load i32, ptr %12, align 4, !tbaa !11 + %18 = load i32, ptr %12, align 4, !tbaa !11 %14 = tail call i32 @Gia_ManHashAnd(ptr noundef %0, i32 noundef %11, i32 noundef %13) #21 - %15 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.01923, i32 noundef %.024, i32 noundef %14) #21 - %16 = load i32, ptr %9, align 4, !tbaa !11 + %20 = tail call i32 @Gia_ManHashMux(ptr noundef %0, i32 noundef %.01923, i32 noundef %.024, i32 noundef %14) #21 + %16 = load i32, ptr %14, align 4, !tbaa !11 %17 = load i32, ptr %12, align 4, !tbaa !11 %18 = tail call i32 @Gia_ManHashXor(ptr noundef %0, i32 noundef %16, i32 noundef %17) #21 %19 = tail call i32 @Gia_ManHashOr(ptr noundef %0, i32 noundef %.01923, i32 noundef %18) #21 diff --git a/bench/abc/optimized/dauGia.ll b/bench/abc/optimized/dauGia.ll index ed99bd4af59..8d69a62e6f0 100644 --- a/bench/abc/optimized/dauGia.ll +++ b/bench/abc/optimized/dauGia.ll @@ -22,7 +22,7 @@ define i32 @Dau_DsdToGiaCompose_rec(ptr noundef %0, i64 noundef %1, ptr noundef i64 -1, label %40 ] -.split: ; preds = %4 +tailrecurse.preheader: ; preds = %4 %5 = add nsw i32 %3, -1 %6 = icmp eq i32 %5, 0 br i1 %6, label %tailrecurse._crit_edge, label %.lr.ph.preheader @@ -33,17 +33,17 @@ define i32 @Dau_DsdToGiaCompose_rec(ptr noundef %0, i64 noundef %1, ptr noundef tailrecurse: ; preds = %.lr.ph %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %8 = icmp eq i64 %indvars.iv.next, 0 - br i1 %8, label %tailrecurse._crit_edge, label %.lr.ph - -tailrecurse._crit_edge: ; preds = %tailrecurse, %.split - %9 = load i32, ptr %2, align 4, !tbaa !3 - %10 = icmp eq i64 %1, 6148914691236517205 - %11 = zext i1 %10 to i32 - %12 = xor i32 %9, %11 + %6 = icmp eq i64 %indvars.iv.next, 0 + br i1 %6, label %7, label %12 + +7: ; preds = %tailrecurse, %.split + %8 = load i32, ptr %2, align 4, !tbaa !3 + %9 = icmp eq i64 %1, 6148914691236517205 + %10 = zext i1 %9 to i32 + %11 = xor i32 %8, %10 br label %40 -.lr.ph: ; preds = %.lr.ph.preheader, %tailrecurse +12: ; preds = %.lr.ph.preheader, %tailrecurse %indvars.iv = phi i64 [ %7, %.lr.ph.preheader ], [ %indvars.iv.next, %tailrecurse ] %13 = trunc nsw i64 %indvars.iv to i32 %14 = shl nuw i32 1, %13 @@ -56,7 +56,7 @@ tailrecurse._crit_edge: ; preds = %tailrecurse, %.spli %.not35 = icmp eq i64 %20, 0 br i1 %.not35, label %tailrecurse, label %21 -21: ; preds = %.lr.ph +21: ; preds = %12 %22 = and i64 %18, %1 %23 = shl i64 %22, %15 %24 = or i64 %23, %22 @@ -85,8 +85,8 @@ tailrecurse._crit_edge: ; preds = %tailrecurse, %.spli .loopexit: ; preds = %4 br label %40 -40: ; preds = %4, %.loopexit, %38, %36, %tailrecurse._crit_edge - %.0 = phi i32 [ %12, %tailrecurse._crit_edge ], [ %37, %36 ], [ %39, %38 ], [ 0, %.loopexit ], [ 1, %4 ] +40: ; preds = %4, %.loopexit, %38, %36, %7 + %.0 = phi i32 [ %11, %tailrecurse._crit_edge ], [ %37, %36 ], [ %39, %38 ], [ 0, %.loopexit ], [ 1, %4 ] ret i32 %.0 } diff --git a/bench/abc/optimized/extraUtilFile.ll b/bench/abc/optimized/extraUtilFile.ll index 99dd5967195..c4273043406 100644 --- a/bench/abc/optimized/extraUtilFile.ll +++ b/bench/abc/optimized/extraUtilFile.ll @@ -295,11 +295,11 @@ define noundef nonnull ptr @Extra_FileInTheSameDir(ptr noundef readonly captures %.not14 = icmp slt i64 %4, 1 br i1 %.not14, label %._crit_edge19, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %2 +6: ; preds = %2 %.013 = getelementptr inbounds i8, ptr %5, i64 -1 br label %.lr.ph -6: ; preds = %.lr.ph +7: ; preds = %.lr.ph %.0 = getelementptr inbounds i8, ptr %.016, i64 -1 %.not = icmp ult ptr %.0, @Extra_FileInTheSameDir.pBuffer br i1 %.not, label %._crit_edge19, label %.lr.ph, !llvm.loop !11 @@ -313,10 +313,10 @@ define noundef nonnull ptr @Extra_FileInTheSameDir(ptr noundef readonly captures i8 47, label %._crit_edge ], !llvm.loop !11 -._crit_edge: ; preds = %.lr.ph, %.lr.ph +9: ; preds = %.lr.ph, %.lr.ph br label %._crit_edge19, !llvm.loop !11 -._crit_edge19: ; preds = %6, %._crit_edge, %2 +._crit_edge19:; preds = %6, %9, %2 %.pn.lcssa = phi ptr [ %.pn15, %._crit_edge ], [ %5, %2 ], [ %.016, %6 ] %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #23 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.pn.lcssa, ptr nonnull align 1 %1, i64 %8, i1 false) diff --git a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll index 8077e7ec9eb..0ff3bed9501 100644 --- a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll +++ b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll @@ -701,16 +701,16 @@ define internal fastcc void @"_ZN4core3ptr123drop_in_place$LT$alloc..vec..in_pla %27 = icmp eq i64 %7, %4 br i1 %27, label %"_ZN89_$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h199f6b020ba2db4fE.exit", label %.lr.ph.i.i -28: ; preds = %.lr.ph12.i.i +.body.i.i: ; preds = %.lr.ph12.i.i %29 = add i64 %.111.i.i, 1 - %30 = icmp eq i64 %29, %4 - br i1 %30, label %._crit_edge13.i.i, label %.lr.ph12.i.i + %28 = icmp eq i64 %29, %4 + br i1 %28, label %33, label %.lr.ph12.i.i -.body.i.i: ; preds = %18, %10 +29: ; preds = %18, %10 %31 = icmp eq i64 %7, %4 - br i1 %31, label %._crit_edge13.i.i, label %.lr.ph12.i.i + br i1 %31, label %33, label %.lr.ph12.i.i -.lr.ph12.i.i: ; preds = %.body.i.i, %28 +.lr.ph12.i.i:; preds = %.body.i.i, %28 %.111.i.i = phi i64 [ %29, %28 ], [ %7, %.body.i.i ] %32 = getelementptr inbounds { { { { ptr, ptr } }, {} }, {} }, ptr %.0.val, i64 %.111.i.i %.val.i.i = load ptr, ptr %32, align 8, !alias.scope !276, !noundef !7 @@ -719,7 +719,7 @@ define internal fastcc void @"_ZN4core3ptr123drop_in_place$LT$alloc..vec..in_pla invoke fastcc void @"_ZN4core3ptr77drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$actix_web..guard..Guard$GT$$GT$17ha6966e6e168ed420E"(ptr %.val.i.i, ptr nonnull %.val7.i.i) #27 to label %28 unwind label %34, !noalias !276 -._crit_edge13.i.i: ; preds = %28, %.body.i.i +33: ; preds = %28, %.body.i.i resume { ptr, i32 } %11 34: ; preds = %.lr.ph12.i.i diff --git a/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll b/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll index fd3f507f0e6..ce537a9f4df 100644 --- a/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll +++ b/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll @@ -5504,7 +5504,7 @@ define void @_ZN9actix_web7request15HttpRequestPool5clear17h05fc4c2a5dccbeffE(pt 16: ; preds = %.lr.ph.i %17 = getelementptr inbounds nuw i8, ptr %12, i64 16 invoke void @"_ZN4core3ptr57drop_in_place$LT$actix_web..request..HttpRequestInner$GT$17h4ae6078b2d45952eE.llvm.11632439649900387884"(ptr noalias noundef nonnull align 8 dereferenceable(224) %17) - to label %.noexc.i unwind label %27, !noalias !984 + to label %.noexc.i unwind label %26, !noalias !984 .noexc.i: ; preds = %16 %18 = getelementptr inbounds nuw i8, ptr %12, i64 8 @@ -5522,24 +5522,24 @@ define void @_ZN9actix_web7request15HttpRequestPool5clear17h05fc4c2a5dccbeffE(pt %23 = icmp eq i64 %11, %8 br i1 %23, label %"_ZN4core3ptr88drop_in_place$LT$$u5b$alloc..rc..Rc$LT$actix_web..request..HttpRequestInner$GT$$u5d$$GT$17hbf08865e40507a4aE.exit.loopexit", label %.lr.ph.i -24: ; preds = %.lr.ph10.i +24: ; preds = %28 %25 = add i64 %.18.i, 1 - %26 = icmp eq i64 %25, %8 - br i1 %26, label %.loopexit, label %.lr.ph10.i + %25 = icmp eq i64 %25, %8 + br i1 %25, label %36, label %28 -27: ; preds = %16 - %28 = landingpad { ptr, i32 } +26: ; preds = %16 + %27 = landingpad { ptr, i32 } cleanup %29 = icmp eq i64 %11, %8 br i1 %29, label %.loopexit, label %.lr.ph10.i -.lr.ph10.i: ; preds = %27, %24 +28: ; preds = %27, %24 %.18.i = phi i64 [ %25, %24 ], [ %11, %27 ] %30 = getelementptr inbounds ptr, ptr %6, i64 %.18.i invoke void @"_ZN4core3ptr78drop_in_place$LT$alloc..rc..Rc$LT$actix_web..request..HttpRequestInner$GT$$GT$17h04a2a33fc96f09d7E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %30) #31 to label %24 unwind label %31 -31: ; preds = %.lr.ph10.i +31: ; preds = %28 %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #32 @@ -5559,11 +5559,11 @@ define void @_ZN9actix_web7request15HttpRequestPool5clear17h05fc4c2a5dccbeffE(pt store i64 %35, ptr %0, align 8, !noalias !994 ret void -.loopexit: ; preds = %24, %27 - %36 = load i64, ptr %0, align 8, !noalias !1001, !noundef !4 - %37 = add i64 %36, 1 - store i64 %37, ptr %0, align 8, !noalias !1001 - resume { ptr, i32 } %28 +36: ; preds = %24, %27 + %37 = load i64, ptr %0, align 8, !noalias !1001, !noundef !4 + %38 = add i64 %37, 1 + store i64 %38, ptr %0, align 8, !noalias !1001 + resume { ptr, i32 } %27 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll b/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll index 4834a788f74..ed361a0a62c 100644 --- a/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll +++ b/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll @@ -3457,17 +3457,17 @@ define noundef zeroext i1 @"_ZN76_$LT$actix_router..resource..ResourceDef$u20$as .lr.ph.i.i.i: ; preds = %.preheader.split.i.i.i, %.lr.ph.i.i.i %.sroa.01.09.i.i.i = phi i64 [ %22, %.lr.ph.i.i.i ], [ 0, %.preheader.split.i.i.i ] %19 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val6.i, i64 %.sroa.01.09.i.i.i - %20 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val8.i, i64 %.sroa.01.09.i.i.i + %21 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.val8.i, i64 %.sroa.01.09.i.i.i %21 = tail call noundef zeroext i1 @"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17h5101c8de422f1c19E.llvm.3646540950948783737"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %20), !noalias !455 %22 = add nuw i64 %.sroa.01.09.i.i.i, 1 %exitcond.not.i.i.i = icmp ne i64 %22, %.val7.i %or.cond.not = select i1 %21, i1 %exitcond.not.i.i.i, i1 false br i1 %or.cond.not, label %.lr.ph.i.i.i, label %"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit" -"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit": ; preds = %.lr.ph.i.i.i, %2, %7, %10, %14, %.preheader.split.i.i.i +"_ZN72_$LT$actix_router..pattern..Patterns$u20$as$u20$core..cmp..PartialEq$GT$2eq17h658df384a9a5d314E.exit":; preds = %.lr.ph.i.i.i, %2, %7, %10, %14, %.preheader.split.i.i.i %.0.shrunk.i = phi i1 [ false, %2 ], [ %13, %10 ], [ false, %7 ], [ false, %14 ], [ true, %.preheader.split.i.i.i ], [ %21, %.lr.ph.i.i.i ] - %23 = getelementptr inbounds nuw i8, ptr %0, i64 146 - %24 = load i8, ptr %23, align 2, !range !115 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 146 + %27 = load i8, ptr %26, align 2, !range !115 %25 = getelementptr inbounds nuw i8, ptr %1, i64 146 %26 = load i8, ptr %25, align 2, !range !115 %27 = icmp eq i8 %24, %26 diff --git a/bench/arrow/optimized/os.ll b/bench/arrow/optimized/os.ll index 6c04f536d0d..af2f19b80c8 100644 --- a/bench/arrow/optimized/os.ll +++ b/bench/arrow/optimized/os.ll @@ -1314,7 +1314,7 @@ define hidden range(i64 1, 0) i64 @_mi_os_numa_node_count_get() local_unnamed_ad %exitcond.not.i = icmp eq i32 %10, 256 br i1 %exitcond.not.i, label %._crit_edge.i, label %9, !llvm.loop !23 -._crit_edge.i: ; preds = %8 +9: ; preds = %8 br label %mi_os_numa_node_countx.exit, !llvm.loop !23 9: ; preds = %8, %7 @@ -1329,7 +1329,7 @@ split.i: ; preds = %9 %13 = zext nneg i32 %10 to i64 br label %mi_os_numa_node_countx.exit -mi_os_numa_node_countx.exit: ; preds = %._crit_edge.i, %split.i +mi_os_numa_node_countx.exit: ; preds = %9, %split.i %.0.lcssa.i = phi i64 [ 257, %._crit_edge.i ], [ %13, %split.i ] call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %14 diff --git a/bench/assimp/optimized/RemoveComments.ll b/bench/assimp/optimized/RemoveComments.ll index d83f0b033c8..f1f6d5b9b28 100644 --- a/bench/assimp/optimized/RemoveComments.ll +++ b/bench/assimp/optimized/RemoveComments.ll @@ -9,28 +9,28 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r %5 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #3 %spec.select = tail call i64 @llvm.umin.i64(i64 %4, i64 %5) %.not = icmp eq i64 %5, 0 - br i1 %.not, label %.critedge._crit_edge, label %.lr.ph59 + br i1 %.not, label %.critedge._crit_edge, label %.lr.ph53 -.lr.ph59: ; preds = %3, %.critedge2 - %.058 = phi i64 [ %25, %.critedge2 ], [ 0, %3 ] - %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.058 +.lr.ph53: ; preds = %3, %.critedge2 + %.052 = phi i64 [ %25, %.critedge2 ], [ 0, %3 ] + %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.052 %7 = load i8, ptr %6, align 1 switch i8 %7, label %.critedge [ i8 34, label %8 i8 39, label %8 ] -8: ; preds = %.lr.ph59, %.lr.ph59 - %9 = add nuw i64 %.058, 1 +8: ; preds = %.lr.ph53, %.lr.ph53 + %9 = add nuw i64 %.052, 1 %10 = icmp ult i64 %9, %5 - br i1 %10, label %.lr.ph, label %.critedge + br i1 %10, label %13, label %.critedge -11: ; preds = %.lr.ph +10: ; preds = %13 %12 = add nuw i64 %13, 1 %exitcond.not = icmp eq i64 %12, %5 - br i1 %exitcond.not, label %.critedge, label %.lr.ph + br i1 %exitcond.not, label %.critedge, label %13 -.lr.ph: ; preds = %8, %11 +13: ; preds = %8, %10 %13 = phi i64 [ %12, %11 ], [ %9, %8 ] %14 = getelementptr inbounds nuw i8, ptr %1, i64 %13 %15 = load i8, ptr %14, align 1 @@ -39,8 +39,8 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r i8 39, label %.critedge ] -.critedge: ; preds = %11, %.lr.ph, %.lr.ph, %8, %.lr.ph59 - %.1 = phi i64 [ %.058, %.lr.ph59 ], [ %9, %8 ], [ %5, %11 ], [ %13, %.lr.ph ], [ %13, %.lr.ph ] +.critedge: ; preds = %11, %13, %13, %8, %.lr.ph53 + %.1 = phi i64 [ %.052, %.lr.ph59 ], [ %9, %8 ], [ %5, %11 ], [ %13, %.lr.ph ], [ %13, %.lr.ph ] %16 = sub i64 %5, %.1 %17 = icmp ult i64 %16, %spec.select br i1 %17, label %.critedge._crit_edge, label %18 @@ -51,11 +51,11 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r %.not42 = icmp eq i32 %20, 0 %21 = icmp ult i64 %.1, %5 %or.cond = and i1 %.not42, %21 - br i1 %or.cond, label %.lr.ph48, label %.critedge2 + br i1 %or.cond, label %.lr.ph, label %.critedge2 -.lr.ph48: ; preds = %18, %_ZN6Assimp9IsLineEndIcEEbT_.exit - %.347 = phi i64 [ %24, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.1, %18 ] - %22 = getelementptr inbounds nuw i8, ptr %1, i64 %.347 +.lr.ph: ; preds = %18, %_ZN6Assimp9IsLineEndIcEEbT_.exit + %.343 = phi i64 [ %24, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.1, %18 ] + %22 = getelementptr inbounds nuw i8, ptr %1, i64 %.343 %23 = load i8, ptr %22, align 1 switch i8 %23, label %_ZN6Assimp9IsLineEndIcEEbT_.exit [ i8 13, label %.critedge2 @@ -64,17 +64,17 @@ define void @_ZN6Assimp14CommentRemover18RemoveLineCommentsEPKcPcc(ptr noundef r i8 12, label %.critedge2 ] -_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %.lr.ph48 - %24 = add i64 %.347, 1 +_ZN6Assimp9IsLineEndIcEEbT_.exit: ; preds = %.lr.ph + %24 = add i64 %.343, 1 store i8 %2, ptr %22, align 1 - %exitcond60.not = icmp eq i64 %24, %5 - br i1 %exitcond60.not, label %.critedge2, label %.lr.ph48, !llvm.loop !3 + %exitcond.not = icmp eq i64 %24, %5 + br i1 %exitcond.not, label %.critedge2, label %.lr.ph, !llvm.loop !3 -.critedge2: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit, %.lr.ph48, %.lr.ph48, %.lr.ph48, %.lr.ph48, %18 - %.4 = phi i64 [ %.1, %18 ], [ %5, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.347, %.lr.ph48 ], [ %.347, %.lr.ph48 ], [ %.347, %.lr.ph48 ], [ %.347, %.lr.ph48 ] +.critedge2: ; preds = %_ZN6Assimp9IsLineEndIcEEbT_.exit, %.lr.ph, %.lr.ph, %.lr.ph, %.lr.ph, %18 + %.4 = phi i64 [ %.1, %18 ], [ %5, %_ZN6Assimp9IsLineEndIcEEbT_.exit ], [ %.343, %.lr.ph48 ], [ %.343, %.lr.ph48 ], [ %.343, %.lr.ph48 ], [ %.343, %.lr.ph48 ] %25 = add i64 %.4, 1 %26 = icmp ult i64 %25, %5 - br i1 %26, label %.lr.ph59, label %.critedge._crit_edge, !llvm.loop !5 + br i1 %26, label %.lr.ph53, label %.critedge._crit_edge, !llvm.loop !5 .critedge._crit_edge: ; preds = %.critedge2, %.critedge, %3 ret void diff --git a/bench/bdwgc/optimized/cordxtra.ll b/bench/bdwgc/optimized/cordxtra.ll index 3da3782f783..fa7430c4fe6 100644 --- a/bench/bdwgc/optimized/cordxtra.ll +++ b/bench/bdwgc/optimized/cordxtra.ll @@ -895,13 +895,13 @@ define i64 @CORD_str(ptr noundef %0, i64 noundef %1, ptr noundef %2) local_unnam %.051.lcssa98 = phi i64 [ 0, %.preheader.thread ], [ %72, %.preheader ] %37 = and i64 %.050.lcssa99, %.049.lcssa100 %38 = icmp eq i64 %37, %.051.lcssa98 - br i1 %38, label %.loopexit, label %.lr.ph73.preheader + br i1 %38, label %.loopexit, label %.lr.ph73 -.lr.ph73.preheader: ; preds = %.preheader.split.us +.lr.ph73: ; preds = %.preheader.split.us %39 = icmp eq i64 %1, %36 br i1 %39, label %.loopexit, label %.lr.ph111 -.lr.ph73: ; preds = %61 +40: ; preds = %61 %40 = icmp eq i64 %62, %36 br i1 %40, label %.loopexit, label %.lr.ph111 @@ -1067,7 +1067,7 @@ define i64 @CORD_str(ptr noundef %0, i64 noundef %1, ptr noundef %2) local_unnam %125 = add i64 %.0, 1 br label %.preheader.split -.loopexit: ; preds = %101, %97, %61, %.lr.ph73, %.lr.ph73.preheader, %.preheader.split.us, %15, %3 +.loopexit: ; preds = %101, %97, %61, %.lr.ph73, %40, %.preheader.split.us, %15, %3 %.054 = phi i64 [ %1, %3 ], [ -1, %15 ], [ %1, %.preheader.split.us ], [ -1, %.lr.ph73.preheader ], [ -1, %.lr.ph73 ], [ %62, %61 ], [ %.0, %97 ], [ -1, %101 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i64 %.054 diff --git a/bench/boost/optimized/params_base.ll b/bench/boost/optimized/params_base.ll index 9f93c3a0932..cc1da4882e7 100644 --- a/bench/boost/optimized/params_base.ll +++ b/bench/boost/optimized/params_base.ll @@ -998,14 +998,14 @@ _ZN5boost4urls7grammar6detail11ci_is_equalINS_4core17basic_string_viewIcEENS0_11 ._crit_edge.i12: ; preds = %63, %38 %.011.lcssa.i = phi ptr [ %44, %38 ], [ %66, %63 ] - %53 = icmp eq ptr %.011.lcssa.i, %50 + %52 = icmp eq ptr %.011.lcssa.i, %50 br label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit .lr.ph.i5: ; preds = %63 %54 = icmp eq ptr %66, %50 - br i1 %54, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit, label %.lr.ph, !llvm.loop !109 + br i1 %54, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit, label %54, !llvm.loop !109 -.lr.ph: ; preds = %.lr.ph.i5.preheader, %.lr.ph.i5 +54: ; preds = %.lr.ph.i5.preheader, %.lr.ph.i5 %.01114.i13 = phi ptr [ %66, %.lr.ph.i5 ], [ %44, %.lr.ph.i5.preheader ] %55 = call noundef signext i8 @_ZNK5boost4urls11decode_view8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(17) %3) #15 %56 = add i8 %55, -65 @@ -1020,7 +1020,7 @@ _ZN5boost4urls7grammar6detail11ci_is_equalINS_4core17basic_string_viewIcEENS0_11 %.not.i7 = icmp eq i8 %58, %62 br i1 %.not.i7, label %63, label %_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit -63: ; preds = %.lr.ph +63: ; preds = %54 %64 = load ptr, ptr %42, align 8, !tbaa !95 %65 = load i8, ptr %64, align 1, !tbaa !30 %.not.i.i9 = icmp eq i8 %65, 37 @@ -1031,8 +1031,8 @@ _ZN5boost4urls7grammar6detail11ci_is_equalINS_4core17basic_string_viewIcEENS0_11 %67 = icmp eq ptr %storemerge.i.i11, %47 br i1 %67, label %._crit_edge.i12, label %.lr.ph.i5, !llvm.loop !109 -_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit: ; preds = %.lr.ph, %.lr.ph.i5, %.lr.ph.i5.preheader, %._crit_edge.i12 - %.0.i8 = phi i1 [ %53, %._crit_edge.i12 ], [ false, %.lr.ph.i5.preheader ], [ false, %.lr.ph.i5 ], [ false, %.lr.ph ] +_ZN5boost4urls7grammar6detail11ci_is_equalINS0_11decode_viewENS_4core17basic_string_viewIcEEEENSt9enable_ifIXoontsr3std14is_convertibleIT_S7_EE5valuentsr3std14is_convertibleIT0_S7_EE5valueEbE4typeERKS9_RKSA_.exit: ; preds = %54, %.lr.ph.i5, %.lr.ph.i5.preheader, %._crit_edge.i12 + %.0.i8 = phi i1 [ %52, %._crit_edge.i12 ], [ false, %.lr.ph.i5.preheader ], [ false, %.lr.ph.i5 ], [ false, %.lr.ph ] call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %68 diff --git a/bench/boost/optimized/test_fs.ll b/bench/boost/optimized/test_fs.ll index 822f21aed1a..38887809c65 100644 --- a/bench/boost/optimized/test_fs.ll +++ b/bench/boost/optimized/test_fs.ll @@ -9898,11 +9898,11 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN5 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %6, i64 noundef %21) to label %.preheader.i.preheader.i.i unwind label %30 -.preheader.i.preheader.i.i: ; preds = %19 +_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i:; preds = %19 %.not.i3.i.i = icmp eq i64 %21, 0 br i1 %.not.i3.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i -.preheader.i.i.i: ; preds = %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i +_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i %25 = getelementptr inbounds nuw i8, ptr %.0.i4.i.i, i64 4 %.not.i.i.i = icmp eq ptr %25, %22 br i1 %.not.i.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i, !llvm.loop !296 @@ -9940,7 +9940,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i call void @_ZdlPvm(ptr noundef %35, i64 noundef %38) #31 br label %.body -_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i, %.preheader.i.preheader.i.i +_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i, %.preheader.i.i.i %39 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %39, ptr %5, align 8, !tbaa !10 %40 = load ptr, ptr %6, align 8, !tbaa !14 @@ -11435,7 +11435,7 @@ define linkonce_odr hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN5 %.not.i.i.i = icmp eq ptr %25, %22 br i1 %.not.i.i.i, label %_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit, label %_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i, !llvm.loop !296 -_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %.preheader.i.preheader.i.i, %.preheader.i.i.i +_ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds = %.preheader.i.i.i, %.preheader.i.i.i %.0.i4.i.i = phi ptr [ %25, %.preheader.i.i.i ], [ %20, %.preheader.i.preheader.i.i ] %26 = load i32, ptr %.0.i4.i.i, align 4, !tbaa !135, !noalias !336 %27 = icmp ugt i32 %26, 1114111 @@ -11462,7 +11462,7 @@ _ZN5boost6nowide3utf10utf_traitsIwLi4EE6decodeIPKwEEjRT_S7_.exit.i.i.i: ; preds %36 = icmp eq ptr %35, %23 br i1 %36, label %.body, label %.body.sink.split -_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i, %.preheader.i.preheader.i.i +_ZN5boost6nowide6detail20maybe_convert_stringIcwvEENSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKNS4_IT0_S6_ISA_ESaISA_EEE.exit: ; preds = %.preheader.i.i.i, %.preheader.i.i.i %37 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %37, ptr %5, align 8, !tbaa !10 %38 = load ptr, ptr %6, align 8, !tbaa !14 diff --git a/bench/bullet3/optimized/poly34.ll b/bench/bullet3/optimized/poly34.ll index de91e7620a7..77206fc7add 100644 --- a/bench/bullet3/optimized/poly34.ll +++ b/bench/bullet3/optimized/poly34.ll @@ -925,7 +925,7 @@ define dso_local noundef float @_Z9SolveP5_1fffff(float noundef %0, float nounde %36 = fcmp olt float %35, 0x3E80000000000000 br i1 %36, label %.loopexit, label %.preheader131 -.lr.ph: ; preds = %49 +.preheader: ; preds = %49 %37 = fmul float %0, 4.000000e+00 %38 = fmul float %1, 3.000000e+00 %39 = fmul float %2, 2.000000e+00 @@ -952,7 +952,7 @@ define dso_local noundef float @_Z9SolveP5_1fffff(float noundef %0, float nounde %..1112 = select i1 %50, float %41, float %.1112139 %51 = add nuw nsw i32 %.0126137, 1 %exitcond.not = icmp eq i32 %51, 10 - br i1 %exitcond.not, label %.lr.ph, label %.preheader131, !llvm.loop !13 + br i1 %exitcond.not, label %.preheader, label %.preheader131, !llvm.loop !13 52: ; preds = %68 %53 = fcmp ogt float %65, 0.000000e+00 @@ -962,7 +962,7 @@ define dso_local noundef float @_Z9SolveP5_1fffff(float noundef %0, float nounde %exitcond151 = icmp eq i32 %54, 52 br i1 %exitcond151, label %.loopexit, label %55, !llvm.loop !14 -55: ; preds = %.lr.ph, %52 +55: ; preds = %.lr.ph, %52 %56 = phi i32 [ 11, %.lr.ph ], [ %54, %52 ] %.0143 = phi float [ 0.000000e+00, %.lr.ph ], [ %.1, %52 ] %.2142 = phi float [ %41, %.lr.ph ], [ %.5, %52 ] @@ -970,35 +970,35 @@ define dso_local noundef float @_Z9SolveP5_1fffff(float noundef %0, float nounde %.3120140 = phi float [ %.1118., %.lr.ph ], [ %.3120..4, %52 ] %57 = fcmp ugt float %.2142, %.3120140 %58 = fcmp ult float %.2142, %.3114141 - %or.cond = select i1 %57, i1 %58, i1 false + %.4 = select i1 %57, i1 %58, i1 false %59 = fadd float %.3120140, %.3114141 %60 = fmul float %59, 5.000000e-01 %.4 = select i1 %or.cond, float %.2142, float %60 %61 = fadd float %0, %.4 - %62 = tail call float @llvm.fmuladd.f32(float %61, float %.4, float %1) - %63 = tail call float @llvm.fmuladd.f32(float %62, float %.4, float %2) + %63 = tail call float @llvm.fmuladd.f32(float %61, float %.4, float %1) + %64 = tail call float @llvm.fmuladd.f32(float %63, float %.4, float %2) %64 = tail call float @llvm.fmuladd.f32(float %63, float %.4, float %3) %65 = tail call float @llvm.fmuladd.f32(float %64, float %.4, float %4) %66 = tail call noundef float @llvm.fabs.f32(float %65) %67 = fcmp olt float %66, 0x3E80000000000000 br i1 %67, label %.loopexit, label %68 -68: ; preds = %55 - %69 = tail call float @llvm.fmuladd.f32(float %.4, float 5.000000e+00, float %37) - %70 = tail call float @llvm.fmuladd.f32(float %69, float %.4, float %38) - %71 = tail call float @llvm.fmuladd.f32(float %70, float %.4, float %39) - %72 = tail call float @llvm.fmuladd.f32(float %71, float %.4, float %3) - %73 = tail call noundef float @llvm.fabs.f32(float %72) - %74 = fcmp olt float %73, 0x3E80000000000000 - %75 = fdiv float %65, %72 - %76 = fsub float %.4, %75 - %.5 = select i1 %74, float 0x7FF0000000000000, float %76 - %.1 = select i1 %74, float %.0143, float %75 - %77 = tail call noundef float @llvm.fabs.f32(float %.1) - %78 = fcmp ogt float %77, 0x3E80000000000000 - br i1 %78, label %52, label %..loopexit_crit_edge, !llvm.loop !14 - -..loopexit_crit_edge: ; preds = %68 +68:; preds = %55 + %68 = tail call float @llvm.fmuladd.f32(float %.4, float 5.000000e+00, float %37) + %69 = tail call float @llvm.fmuladd.f32(float %68, float %.4, float %38) + %70 = tail call float @llvm.fmuladd.f32(float %69, float %.4, float %39) + %71 = tail call float @llvm.fmuladd.f32(float %70, float %.4, float %3) + %72 = tail call noundef float @llvm.fabs.f32(float %71) + %73 = fcmp olt float %72, 0x3E80000000000000 + %74 = fdiv float %65, %71 + %75 = fsub float %.4, %74 + %.5 = select i1 %73, float 0x7FF0000000000000, float %75 + %.1 = select i1 %73, float %.0143, float %74 + %76 = tail call noundef float @llvm.fabs.f32(float %.1) + %77 = fcmp ogt float %76, 0x3E80000000000000 + br i1 %77, label %52, label %.loopexit, !llvm.loop !14 + +.loopexit: ; preds = %68 br label %.loopexit, !llvm.loop !14 .loopexit: ; preds = %.preheader131, %52, %55, %..loopexit_crit_edge, %32, %34, %5 diff --git a/bench/c3c/optimized/sema_name_resolution.ll b/bench/c3c/optimized/sema_name_resolution.ll index b3f7e327d2d..c3aea5acfbe 100644 --- a/bench/c3c/optimized/sema_name_resolution.ll +++ b/bench/c3c/optimized/sema_name_resolution.ll @@ -2040,22 +2040,22 @@ define dso_local noundef ptr @sema_find_label_symbol(ptr noundef readonly captur .lr.ph.preheader: ; preds = %8 %13 = zext i32 %12 to i64 - br label %.lr.ph + br label %15 -14: ; preds = %.lr.ph +14: ; preds = %15 %15 = add nsw i64 %.01218, -1 - %.not16.not = icmp sgt i64 %.01218, %11 - br i1 %.not16.not, label %.lr.ph, label %.loopexit, !llvm.loop !25 + %.not16 = icmp sgt i64 %.01218, %11 + br i1 %.not16, label %15, label %.loopexit, !llvm.loop !25 -.lr.ph: ; preds = %.lr.ph.preheader, %14 +15: ; preds = %.lr.ph.preheader, %14 %.01218 = phi i64 [ %15, %14 ], [ %13, %.lr.ph.preheader ] - %16 = getelementptr inbounds nuw ptr, ptr %4, i64 %.01218 + %17 = getelementptr inbounds nuw ptr, ptr %4, i64 %.01218 %17 = load ptr, ptr %16, align 8 %18 = load ptr, ptr %17, align 8 %19 = icmp eq ptr %18, %1 - br i1 %19, label %..loopexit_crit_edge, label %14, !llvm.loop !25 + br i1 %19, label %.loopexit, label %14, !llvm.loop !25 -..loopexit_crit_edge: ; preds = %.lr.ph +.loopexit: ; preds = %15 br label %.loopexit, !llvm.loop !25 .loopexit: ; preds = %14, %8, %..loopexit_crit_edge, %2, %5 @@ -2081,12 +2081,12 @@ define dso_local noundef ptr @sema_find_label_symbol_anywhere(ptr noundef readon %10 = zext i32 %9 to i64 br label %14 -11: ; preds = %14 +11: ; preds = %13 %12 = add nsw i64 %.01115, -1 - %13 = icmp sgt i64 %.01115, 0 - br i1 %13, label %14, label %.loopexit, !llvm.loop !26 + %12 = icmp sgt i64 %.01115, 0 + br i1 %12, label %13, label %.loopexit, !llvm.loop !26 -14: ; preds = %8, %11 +13: ; preds = %8, %11 %.01115 = phi i64 [ %10, %8 ], [ %12, %11 ] %15 = getelementptr inbounds nuw ptr, ptr %4, i64 %.01115 %16 = load ptr, ptr %15, align 8 @@ -2094,7 +2094,7 @@ define dso_local noundef ptr @sema_find_label_symbol_anywhere(ptr noundef readon %18 = icmp eq ptr %17, %1 br i1 %18, label %.loopexit, label %11, !llvm.loop !26 -.loopexit: ; preds = %11, %14, %2, %5 +.loopexit: ; preds = %11, %13, %2, %5 %.0 = phi ptr [ null, %5 ], [ null, %2 ], [ null, %11 ], [ %16, %14 ] ret ptr %.0 } diff --git a/bench/c3c/optimized/whereami.ll b/bench/c3c/optimized/whereami.ll index cc3684124c5..3c58efc6171 100644 --- a/bench/c3c/optimized/whereami.ll +++ b/bench/c3c/optimized/whereami.ll @@ -17,7 +17,7 @@ define dso_local noundef ptr @find_executable_path() local_unnamed_addr #0 { get_executable_path_raw.exit.thread: ; preds = %0 call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %27 + br label %28 get_executable_path_raw.exit.thread33: ; preds = %0 %4 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #8 @@ -61,15 +61,15 @@ get_executable_path_raw.exit31: ; preds = %get_executable_path store i8 %spec.store.select, ptr %17, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %15 - br i1 %exitcond.not, label %.lr.ph39, label %.lr.ph, !llvm.loop !7 + br i1 %exitcond.not, label %.preheader, label %.lr.ph, !llvm.loop !7 -20: ; preds = %.lr.ph39 +.preheader.preheader: ; preds = %.lr.ph39 %21 = icmp samesign ugt i64 %indvars.iv42, 1 br i1 %21, label %.lr.ph39, label %._crit_edge, !llvm.loop !9 -.lr.ph39: ; preds = %.lr.ph, %20 - %indvars.iv42 = phi i64 [ %indvars.iv.next43, %20 ], [ %15, %.lr.ph ] - %indvars.iv.next43 = add nsw i64 %indvars.iv42, -1 +.preheader: ; preds = %.lr.ph, %.preheader.preheader + %indvars.iv40 = phi i64 [ %indvars.iv.next43, %20 ], [ %15, %.lr.ph ] + %indvars.iv.next43 = add nsw i64 %indvars.iv40, -1 %22 = getelementptr inbounds nuw i8, ptr %8, i64 %indvars.iv.next43 %23 = load i8, ptr %22, align 1 switch i8 %23, label %20 [ @@ -78,16 +78,16 @@ get_executable_path_raw.exit31: ; preds = %get_executable_path ], !llvm.loop !9 24: ; preds = %.lr.ph39, %.lr.ph39 - %25 = and i64 %indvars.iv42, 4294967295 + %25 = and i64 %indvars.iv40, 4294967295 %26 = getelementptr inbounds nuw i8, ptr %8, i64 %25 store i8 0, ptr %26, align 1 - br label %27 + br label %28 -._crit_edge: ; preds = %20, %get_executable_path_raw.exit31 +27: ; preds = %.preheader.preheader, %get_executable_path_raw.exit31 store i8 0, ptr %16, align 1 - br label %27 + br label %28 -27: ; preds = %get_executable_path_raw.exit.thread, %._crit_edge, %24 +28: ; preds = %get_executable_path_raw.exit.thread, %27, %24 %.025 = phi ptr [ %8, %24 ], [ %8, %._crit_edge ], [ @.str, %get_executable_path_raw.exit.thread ] ret ptr %.025 } diff --git a/bench/chibicc/optimized/tokenize.ll b/bench/chibicc/optimized/tokenize.ll index fde7a5ebfdf..1e29cd7b098 100644 --- a/bench/chibicc/optimized/tokenize.ll +++ b/bench/chibicc/optimized/tokenize.ll @@ -180,17 +180,17 @@ define internal fastcc void @verror_at(ptr noundef %0, ptr noundef readnone capt %8 = icmp ult ptr %1, %3 br i1 %8, label %.lr.ph.preheader, label %.critedge -.lr.ph.preheader: ; preds = %6 +.lr.ph.preheader:; preds = %6 %9 = ptrtoint ptr %1 to i64 %10 = sub i64 %9, %7 %scevgep = getelementptr i8, ptr %3, i64 %10 br label %.lr.ph -11: ; preds = %.lr.ph +11:; preds = %.lr.ph %12 = icmp ult ptr %1, %13 br i1 %12, label %.lr.ph, label %.critedge, !llvm.loop !21 -.lr.ph: ; preds = %.lr.ph.preheader, %11 +.lr.ph:; preds = %.lr.ph.preheader, %11 %.026 = phi ptr [ %13, %11 ], [ %3, %.lr.ph.preheader ] %13 = getelementptr inbounds i8, ptr %.026, i64 -1 %14 = load i8, ptr %13, align 1, !tbaa !18 @@ -212,22 +212,22 @@ define internal fastcc void @verror_at(ptr noundef %0, ptr noundef readnone capt i8 10, label %.critedge2 ] -17: ; preds = %15 - %18 = getelementptr inbounds nuw i8, ptr %.022, i64 1 +13: ; preds = %15 + %14 = getelementptr inbounds nuw i8, ptr %.022, i64 1 br label %15, !llvm.loop !22 .critedge2: ; preds = %15, %15 - %19 = load ptr, ptr @stderr, align 8, !tbaa !7 - %20 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef nonnull @.str.17, ptr noundef %0, i32 noundef %2) #25 - %21 = load ptr, ptr @stderr, align 8, !tbaa !7 - %22 = ptrtoint ptr %.022 to i64 - %23 = ptrtoint ptr %.0.lcssa to i64 - %24 = sub i64 %22, %23 + %15 = load ptr, ptr @stderr, align 8, !tbaa !7 + %16 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %15, ptr noundef nonnull @.str.17, ptr noundef %0, i32 noundef %2) #25 + %17 = load ptr, ptr @stderr, align 8, !tbaa !7 + %18 = ptrtoint ptr %.022 to i64 + %19 = ptrtoint ptr %.0.lcssa to i64 + %20 = sub i64 %18, %19 %25 = trunc i64 %24 to i32 - %26 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %21, ptr noundef nonnull @.str.18, i32 noundef %25, ptr noundef %.0.lcssa) #25 - %27 = sub i64 %7, %23 + %26 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %21, ptr noundef nonnull @.str.18, i32 noundef %25, ptr noundef %.0.lcssa) #27 + %27 = sub i64 %7, %19 %28 = trunc i64 %27 to i32 - %29 = tail call i32 @display_width(ptr noundef %.0.lcssa, i32 noundef %28) #27 + %29 = tail call i32 @display_width(ptr noundef %.0.lcssa, i32 noundef %28) #25 %30 = add nsw i32 %29, %20 %31 = load ptr, ptr @stderr, align 8, !tbaa !7 %32 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull @.str.19, i32 noundef %30, ptr noundef nonnull @.str.20) #25 diff --git a/bench/clamav/optimized/macho.ll b/bench/clamav/optimized/macho.ll index 7de0f210a20..f2b1bfb7672 100644 --- a/bench/clamav/optimized/macho.ll +++ b/bench/clamav/optimized/macho.ll @@ -1091,8 +1091,8 @@ fmap_readn.exit.thread: ; preds = %8, %1, %fmap_readn. br label %.loopexit 17: ; preds = %14 - %.4..4..4..sroa_idx88 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %.4..4..4.55 = load i32, ptr %.4..4..4..sroa_idx88, align 4, !tbaa !57 + %.4..4..4..sroa_idx79 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %.4..4..4.55 = load i32, ptr %.4..4..4..sroa_idx79, align 4, !tbaa !57 %18 = tail call i32 @llvm.bswap.i32(i32 %.4..4..4.55) br label %19 @@ -1122,9 +1122,9 @@ fmap_readn.exit.thread: ; preds = %8, %1, %fmap_readn. .lr.ph: ; preds = %26 %.8..8..8..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 - %.8..8..8..sroa_idx86 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %.8..8..8..sroa_idx77 = getelementptr inbounds nuw i8, ptr %3, i64 8 %.12..12..12..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 12 - %.12..12..12..sroa_idx87 = getelementptr inbounds nuw i8, ptr %3, i64 12 + %.12..12..12..sroa_idx78 = getelementptr inbounds nuw i8, ptr %3, i64 12 br label %28 27: ; preds = %62 @@ -1174,11 +1174,11 @@ fmap_readn.exit39.thread: ; preds = %30, %28, %fmap_read %.8..8..8.41 = load i32, ptr %.8..8..8..sroa_idx, align 4 %45 = tail call i32 @llvm.bswap.i32(i32 %.8..8..8.41) %46 = select i1 %13, i32 %.8..8..8.41, i32 %45 - store i32 %46, ptr %.8..8..8..sroa_idx86, align 4, !tbaa !58 + store i32 %46, ptr %.8..8..8..sroa_idx77, align 4, !tbaa !58 %.12..12..12.48 = load i32, ptr %.12..12..12..sroa_idx, align 4 %47 = tail call i32 @llvm.bswap.i32(i32 %.12..12..12.48) %48 = select i1 %13, i32 %.12..12..12.48, i32 %47 - store i32 %48, ptr %.12..12..12..sroa_idx87, align 4, !tbaa !60 + store i32 %48, ptr %.12..12..12..sroa_idx78, align 4, !tbaa !60 %49 = add nuw nsw i32 %.02265, 1 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.51, i32 noundef %49, i32 noundef %20) #8 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.52, i32 noundef %46) #8 diff --git a/bench/clamav/optimized/special.ll b/bench/clamav/optimized/special.ll index 73b412d1b9b..1e166c0ea0e 100644 --- a/bench/clamav/optimized/special.ll +++ b/bench/clamav/optimized/special.ll @@ -54,23 +54,23 @@ define i32 @cli_check_mydoom_log(ptr noundef %0) local_unnamed_addr #0 { %.not = icmp eq ptr %15, null br i1 %.not, label %.loopexit, label %.preheader -16: ; preds = %.preheader +.preheader.preheader: ; preds = %.preheader %.not82 = icmp eq i32 %17, 0 br i1 %.not82, label %20, label %.preheader -.preheader: ; preds = %10, %16 - %.07986 = phi i32 [ %17, %16 ], [ %spec.store.select, %10 ] +.preheader: ; preds = %10, %.preheader.preheader + %indvars.iv = phi i32 [ %17, %16 ], [ %spec.store.select, %10 ] call void @llvm.lifetime.start.p0(ptr nonnull %2) store i32 -1, ptr %2, align 4, !tbaa !26 - %17 = add nsw i32 %.07986, -1 + %18 = add nsw i32 %indvars.iv, -1 %18 = zext nneg i32 %17 to i64 %19 = getelementptr inbounds nuw i32, ptr %15, i64 %18 %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %19, ptr noundef nonnull dereferenceable(4) %2, i64 4) %.not85.not = icmp eq i32 %bcmp, 0 call void @llvm.lifetime.end.p0(ptr nonnull %2) - br i1 %.not85.not, label %.loopexit, label %16 + br i1 %.not85.not, label %.loopexit, label %.preheader.preheader -20: ; preds = %16 +20: ; preds = %.preheader.preheader %.sroa.0.0.copyload = load i32, ptr %15, align 4 %.sroa.7.0..0.27.sroa_idx = getelementptr inbounds nuw i8, ptr %15, i64 4 %.sroa.7.0.copyload = load i32, ptr %.sroa.7.0..0.27.sroa_idx, align 4 diff --git a/bench/cmake/optimized/block_decoder.ll b/bench/cmake/optimized/block_decoder.ll index 6d21654dd7f..48d4825be33 100644 --- a/bench/cmake/optimized/block_decoder.ll +++ b/bench/cmake/optimized/block_decoder.ll @@ -131,11 +131,11 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no %10 = load i32, ptr %0, align 8, !tbaa !18 switch i32 %10, label %.thread [ i32 0, label %11 - i32 1, label %._crit_edge125 + i32 1, label %._crit_edge i32 2, label %109 ] -._crit_edge125: ; preds = %9 +._crit_edge: ; preds = %9 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 96 %.promoted.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !33 br label %84 @@ -242,39 +242,39 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no store i32 1, ptr %0, align 8, !tbaa !18 br label %84 -84: ; preds = %._crit_edge125, %83 +84: ; preds = %._crit_edge, %83 %.promoted = phi i64 [ %.promoted.pre, %._crit_edge125 ], [ %68, %83 ] %85 = getelementptr inbounds nuw i8, ptr %0, i64 96 %86 = and i64 %.promoted, 3 %.not112123 = icmp eq i64 %86, 0 br i1 %.not112123, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %84 +86: ; preds = %84 %.promoted124 = load i64, ptr %3, align 8, !tbaa !17 br label %89 87: ; preds = %92 %88 = and i64 %93, 3 %.not112 = icmp eq i64 %88, 0 - br i1 %.not112, label %._crit_edge, label %89, !llvm.loop !39 + br i1 %.not112, label %96, label %89, !llvm.loop !39 -89: ; preds = %.lr.ph, %87 +89: ; preds = %86, %87 %90 = phi i64 [ %.promoted124, %.lr.ph ], [ %94, %87 ] %91 = phi i64 [ %.promoted, %.lr.ph ], [ %93, %87 ] %.not115 = icmp ult i64 %90, %4 - br i1 %.not115, label %92, label %.thread - -92: ; preds = %89 - %93 = add i64 %91, 1 - store i64 %93, ptr %85, align 8, !tbaa !33 - %94 = add nuw i64 %90, 1 - store i64 %94, ptr %3, align 8, !tbaa !17 - %95 = getelementptr inbounds nuw i8, ptr %2, i64 %90 - %96 = load i8, ptr %95, align 1, !tbaa !41 - %.not116 = icmp eq i8 %96, 0 + br i1 %.not115, label %91, label %.thread + +91: ; preds = %89 + %92 = add i64 %91, 1 + store i64 %92, ptr %85, align 8, !tbaa !33 + %93 = add nuw i64 %90, 1 + store i64 %93, ptr %3, align 8, !tbaa !17 + %94 = getelementptr inbounds nuw i8, ptr %2, i64 %90 + %95 = load i8, ptr %94, align 1, !tbaa !41 + %.not116 = icmp eq i8 %95, 0 br i1 %.not116, label %87, label %.thread, !llvm.loop !39 -._crit_edge: ; preds = %87, %84 +96: ; preds = %87, %84 %97 = getelementptr inbounds nuw i8, ptr %0, i64 88 %98 = load ptr, ptr %97, align 8, !tbaa !22 %99 = getelementptr inbounds nuw i8, ptr %98, i64 8 @@ -282,7 +282,7 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no %101 = icmp eq i32 %100, 0 br i1 %101, label %.thread, label %102 -102: ; preds = %._crit_edge +102: ; preds = %96 %103 = getelementptr inbounds nuw i8, ptr %0, i64 240 %104 = load i8, ptr %103, align 8, !tbaa !31, !range !37, !noundef !38 %105 = trunc nuw i8 %104 to i1 @@ -335,7 +335,7 @@ define internal i32 @block_decode(ptr noundef %0, ptr noundef %1, ptr noalias no 133: ; preds = %130, %125, %121 br label %.thread -.thread: ; preds = %92, %89, %67, %76, %66, %43, %9, %133, %109, %130, %._crit_edge +.thread: ; preds = %91, %89, %67, %76, %66, %43, %9, %133, %109, %130, %96 %.3 = phi i32 [ 1, %._crit_edge ], [ 1, %133 ], [ 0, %109 ], [ 9, %130 ], [ 11, %9 ], [ 9, %67 ], [ 9, %76 ], [ %33, %66 ], [ 9, %43 ], [ 9, %92 ], [ 0, %89 ] ret i32 %.3 } diff --git a/bench/cmake/optimized/cmOrderDirectories.ll b/bench/cmake/optimized/cmOrderDirectories.ll index c511685d3d9..e27993b88da 100644 --- a/bench/cmake/optimized/cmOrderDirectories.ll +++ b/bench/cmake/optimized/cmOrderDirectories.ll @@ -8787,13 +8787,13 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %7 = ptrtoint ptr %1 to i64 %8 = sub i64 %7, %6 %9 = icmp sgt i64 %8, 128 - br i1 %9, label %.lr.ph.preheader, label %.loopexit + br i1 %9, label %.lr.ph, label %.loopexit -.lr.ph.preheader: ; preds = %3 +.lr.ph: ; preds = %3 %10 = icmp eq i64 %2, 0 br i1 %10, label %.lr.ph._crit_edge, label %.lr.ph19 -.lr.ph: ; preds = %.lr.ph19 +11: ; preds = %.lr.ph19 %11 = icmp eq i64 %12, 0 br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph19, !llvm.loop !450 @@ -8807,7 +8807,7 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.lr.ph19: ; preds = %.lr.ph.preheader, %.lr.ph +12: ; preds = %11, %.lr.ph %storemerge1218 = phi ptr [ %13, %.lr.ph ], [ %1, %.lr.ph.preheader ] %.01317 = phi i64 [ %12, %.lr.ph ], [ %2, %.lr.ph.preheader ] %12 = add nsw i64 %.01317, -1 @@ -8818,7 +8818,7 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %16 = icmp sgt i64 %15, 128 br i1 %16, label %.lr.ph, label %.loopexit, !llvm.loop !450 -.loopexit: ; preds = %.lr.ph19, %3, %.lr.ph._crit_edge +.loopexit: ; preds = %12, %3, %.lr.ph._crit_edge ret void } diff --git a/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll b/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll index c08fd64603e..75dd8cb82c0 100644 --- a/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll +++ b/bench/coreutils-rs/optimized/3x959pa9na58uqov.ll @@ -1082,7 +1082,7 @@ define hidden noundef zeroext i1 @"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..Slic %.not.not.not.i3.not = icmp eq i64 %2, 0 br i1 %.not.not.not.i3.not, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit", label %.lr.ph -.lr.ph: ; preds = %3, %.lr.ph +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h9e47f5b69ef4f655E.llvm.14531926216617506853.exit": ; preds = %3, %.lr.ph %5 = phi ptr [ %7, %.lr.ph ], [ %1, %3 ] %6 = tail call noundef zeroext i1 @"_ZN59_$LT$std..path..PathBuf$u20$as$u20$core..cmp..PartialEq$GT$2eq17h745857070c73a145E.llvm.14531926216617506853"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %0), !noalias !213 %7 = getelementptr inbounds nuw i8, ptr %5, i64 24 diff --git a/bench/cpython/optimized/obmalloc.ll b/bench/cpython/optimized/obmalloc.ll index aa5953401d0..4eff491a984 100644 --- a/bench/cpython/optimized/obmalloc.ll +++ b/bench/cpython/optimized/obmalloc.ll @@ -17638,7 +17638,7 @@ mi_option_get.exit: ; preds = %4, %7 %exitcond.not.i = icmp eq i32 %13, 256 br i1 %exitcond.not.i, label %._crit_edge.i, label %12, !llvm.loop !234 -._crit_edge.i: ; preds = %11 +12: ; preds = %11 br label %_mi_prim_numa_node_count.exit, !llvm.loop !234 12: ; preds = %11, %10 @@ -17654,7 +17654,7 @@ split.i: ; preds = %12 %17 = zext nneg i32 %13 to i64 br label %_mi_prim_numa_node_count.exit -_mi_prim_numa_node_count.exit: ; preds = %._crit_edge.i, %split.i +_mi_prim_numa_node_count.exit: ; preds = %12, %split.i %.0.lcssa.i = phi i64 [ 257, %._crit_edge.i ], [ %17, %split.i ] call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %18 @@ -17680,7 +17680,7 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn %exitcond.not = icmp eq i32 %4, 256 br i1 %exitcond.not, label %._crit_edge, label %3, !llvm.loop !234 -._crit_edge: ; preds = %2 +3: ; preds = %2 br label %10, !llvm.loop !234 3: ; preds = %0, %2 @@ -17695,9 +17695,9 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn split: ; preds = %3 %8 = add nuw nsw i32 %.04, 1 %9 = zext nneg i32 %8 to i64 - br label %10 + br label %._crit_edge -10: ; preds = %split, %._crit_edge +._crit_edge: ; preds = %split, %3 %.0.lcssa = phi i64 [ 257, %._crit_edge ], [ %9, %split ] call void @llvm.lifetime.end.p0(ptr nonnull %1) ret i64 %.0.lcssa diff --git a/bench/csmith/optimized/ArrayVariable.ll b/bench/csmith/optimized/ArrayVariable.ll index 7f4203121b9..7678c748668 100644 --- a/bench/csmith/optimized/ArrayVariable.ll +++ b/bench/csmith/optimized/ArrayVariable.ll @@ -3793,7 +3793,7 @@ define dso_local void @_ZNK13ArrayVariable21build_initializer_strERKSt6vectorINS %25 = icmp sgt i32 %.02260, -1 br i1 %25, label %.lr.ph63, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge -.lr.ph63: ; preds = %15 +.lr.ph63: ; preds = %15 %26 = getelementptr inbounds nuw i8, ptr %2, i64 8 %27 = zext nneg i32 %.02260 to i64 br label %40 @@ -3802,40 +3802,40 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit: ; preds = %_ %indvars.iv.next = add nsw i64 %indvars.iv, -1 %28 = icmp sgt i64 %indvars.iv, 0 %29 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %28, label %40, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge - -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit, %15 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %30, ptr %0, align 8, !tbaa !115 - %31 = load ptr, ptr %4, align 8, !tbaa !90 - %32 = icmp eq ptr %31, %6 - br i1 %32, label %33, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i - -33: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge - %34 = load i64, ptr %7, align 8, !tbaa !117 - %35 = icmp ult i64 %34, 16 - call void @llvm.assume(i1 %35) - %36 = add nuw nsw i64 %34, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %30, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %36, i1 false) + br i1 %28, label %39, label %28 + +28: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit, %15 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %29, ptr %0, align 8, !tbaa !115 + %30 = load ptr, ptr %4, align 8, !tbaa !90 + %31 = icmp eq ptr %30, %6 + br i1 %31, label %32, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i + +32: ; preds = %28 + %33 = load i64, ptr %7, align 8, !tbaa !117 + %34 = icmp ult i64 %33, 16 + call void @llvm.assume(i1 %34) + %35 = add nuw nsw i64 %33, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %29, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %35, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit._crit_edge - store ptr %31, ptr %0, align 8, !tbaa !90 - %37 = load i64, ptr %6, align 8, !tbaa !91 - store i64 %37, ptr %30, align 8, !tbaa !91 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i: ; preds = %28 + store ptr %30, ptr %0, align 8, !tbaa !90 + %36 = load i64, ptr %6, align 8, !tbaa !91 + store i64 %36, ptr %29, align 8, !tbaa !91 %.pre = load i64, ptr %7, align 8, !tbaa !117 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit: ; preds = %33, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i - %38 = phi i64 [ %34, %33 ], [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i ] - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %38, ptr %39, align 8, !tbaa !117 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit: ; preds = %32, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i + %37 = phi i64 [ %33, %33 ], [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i ] + %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %37, ptr %38, align 8, !tbaa !117 store ptr %6, ptr %4, align 8, !tbaa !90 store i64 0, ptr %7, align 8, !tbaa !117 store i8 0, ptr %6, align 8, !tbaa !91 br label %99 -40: ; preds = %.lr.ph63, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit +39: ; preds = %.lr.ph63, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit %indvars.iv = phi i64 [ %27, %.lr.ph63 ], [ %indvars.iv.next, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit ] %.022.in61 = phi i32 [ %24, %.lr.ph63 ], [ %29, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit ] %41 = load ptr, ptr %16, align 8, !tbaa !53 @@ -3846,7 +3846,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit: ; preds = %33 %46 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0, i64 noundef %45, ptr noundef nonnull @.str, i64 noundef 1) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit.preheader unwind label %.loopexit54 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit.preheader: ; preds = %40 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit.preheader: ; preds = %39 %.not = icmp eq i32 %43, 0 br i1 %.not, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc.exit._crit_edge, label %.lr.ph @@ -3870,7 +3870,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.2, i64 noundef 1) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit unwind label %.loopexit54 -.loopexit54: ; preds = %40, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit +.loopexit54: ; preds = %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit %lpad.loopexit56 = landingpad { ptr, i32 } cleanup br label %108 diff --git a/bench/curl/optimized/mprintf.ll b/bench/curl/optimized/mprintf.ll index dae6fe58a02..34593c63f43 100644 --- a/bench/curl/optimized/mprintf.ll +++ b/bench/curl/optimized/mprintf.ll @@ -987,7 +987,7 @@ addbyter.exit50: ; preds = %32, %28 %.not24.i457 = icmp eq i8 %390, 0 br i1 %.not24.i457, label %addbyter.exit.thread323, label %.lr.ph463.preheader -.lr.ph463.preheader: ; preds = %386 +addbyter.exit.thread323: ; preds = %386 %391 = icmp ult i64 %.sroa.51.4, %1 br i1 %391, label %.lr.ph1026, label %addbyter.exit @@ -1002,15 +1002,15 @@ addbyter.exit.thread323: ; preds = %.lr.ph1026, %386 %392 = icmp ult i64 %395, %1 br i1 %392, label %.lr.ph1026, label %addbyter.exit, !llvm.loop !37 -.lr.ph1026: ; preds = %.lr.ph463.preheader, %.lr.ph463 - %.sroa.51.64581025 = phi i64 [ %395, %.lr.ph463 ], [ %.sroa.51.4, %.lr.ph463.preheader ] +.lr.ph1026:; preds = %.lr.ph463.preheader, %.lr.ph463 + %.sroa.51.6458 = phi i64 [ %395, %.lr.ph463 ], [ %.sroa.51.4, %.lr.ph463.preheader ] %.sroa.0.64591024 = phi ptr [ %394, %.lr.ph463 ], [ %.sroa.0.4, %.lr.ph463.preheader ] %.30.i4601023 = phi i32 [ %396, %.lr.ph463 ], [ %.1357.i, %.lr.ph463.preheader ] %.8337.i4611022 = phi ptr [ %397, %.lr.ph463 ], [ %9, %.lr.ph463.preheader ] %393 = phi i8 [ %398, %.lr.ph463 ], [ %390, %.lr.ph463.preheader ] %394 = getelementptr inbounds nuw i8, ptr %.sroa.0.64591024, i64 1 store i8 %393, ptr %.sroa.0.64591024, align 1, !tbaa !14 - %395 = add nuw i64 %.sroa.51.64581025, 1 + %395 = add nuw i64 %.sroa.51.6458, 1 %396 = add nsw i32 %.30.i4601023, 1 %397 = getelementptr inbounds nuw i8, ptr %.8337.i4611022, i64 1 %398 = load i8, ptr %397, align 1, !tbaa !14 diff --git a/bench/cvc5/optimized/alpha_equivalence.ll b/bench/cvc5/optimized/alpha_equivalence.ll index 2c2e707955d..ee7d5eacf52 100644 --- a/bench/cvc5/optimized/alpha_equivalence.ll +++ b/bench/cvc5/optimized/alpha_equivalence.ll @@ -17082,13 +17082,13 @@ define linkonce_odr hidden void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_it %8 = ptrtoint ptr %1 to i64 %9 = sub i64 %8, %7 %10 = icmp sgt i64 %9, 128 - br i1 %10, label %.lr.ph.preheader, label %.loopexit + br i1 %10, label %.lr.ph, label %.loopexit -.lr.ph.preheader: ; preds = %4 +.lr.ph: ; preds = %4 %11 = icmp eq i64 %2, 0 - br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph24 + br i1 %11, label %.lr.ph._crit_edge, label %17 -.lr.ph: ; preds = %.lr.ph24 +12: ; preds = %.lr.ph24 %12 = icmp eq i64 %17, 0 br i1 %12, label %.lr.ph._crit_edge, label %.lr.ph24, !llvm.loop !344 @@ -17115,7 +17115,7 @@ _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %.loopexit -.lr.ph24: ; preds = %.lr.ph.preheader, %.lr.ph +17: ; preds = %12, %.lr.ph %storemerge1723 = phi ptr [ %18, %.lr.ph ], [ %1, %.lr.ph.preheader ] %.01822 = phi i64 [ %17, %.lr.ph ], [ %2, %.lr.ph.preheader ] %17 = add nsw i64 %.01822, -1 @@ -17124,7 +17124,7 @@ _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt %19 = ptrtoint ptr %18 to i64 %20 = sub i64 %19, %7 %21 = icmp sgt i64 %20, 128 - br i1 %21, label %.lr.ph, label %.loopexit, !llvm.loop !344 + br i1 %21, label %12, label %.loopexit, !llvm.loop !344 .loopexit: ; preds = %.lr.ph24, %4, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal8TypeNodeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_6theory11quantifiers13sortTypeOrderEEEEvT_SG_SG_T0_.exit ret void diff --git a/bench/darktable/optimized/Cr2LJpegDecoder.ll b/bench/darktable/optimized/Cr2LJpegDecoder.ll index 1b583013e99..c608385a85b 100644 --- a/bench/darktable/optimized/Cr2LJpegDecoder.ll +++ b/bench/darktable/optimized/Cr2LJpegDecoder.ll @@ -1390,27 +1390,27 @@ define hidden void @_ZN8rawspeed15Cr2LJpegDecoder6decodeERKNS_14Cr2SliceWidthsE( tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %3, ptr noundef nonnull align 4 dereferenceable(12) %1, i64 12, i1 false), !tbaa.struct !177 %4 = load i32, ptr %3, align 4, !tbaa !178 %5 = icmp sgt i32 %4, 0 - br i1 %5, label %.lr.ph, label %._crit_edge + br i1 %5, label %7, label %5 -6: ; preds = %.lr.ph +5: ; preds = %7 %exitcond.not = icmp eq i32 %7, %4 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !180 + br i1 %exitcond.not, label %6, label %.lr.ph, !llvm.loop !180 -._crit_edge: ; preds = %6, %2 +6: ; preds = %5, %2 tail call void @_ZN8rawspeed20AbstractLJpegDecoder9decodeSOIEv(ptr noundef nonnull align 8 dereferenceable(236) %0) ret void -.lr.ph: ; preds = %2, %6 +7: ; preds = %2, %5 %.07 = phi i32 [ %7, %6 ], [ 0, %2 ] %7 = add nuw nsw i32 %.07, 1 %8 = icmp eq i32 %7, %4 %.0.in.v.i = select i1 %8, i64 8, i64 4 %.0.in.i = getelementptr inbounds nuw i8, ptr %3, i64 %.0.in.v.i %.0.i = load i32, ptr %.0.in.i, align 4, !tbaa !16 - %9 = icmp slt i32 %.0.i, 1 - br i1 %9, label %10, label %6, !llvm.loop !180 + %10 = icmp slt i32 %.0.i, 1 + br i1 %10, label %11, label %5, !llvm.loop !180 -10: ; preds = %.lr.ph +11: ; preds = %7 tail call void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed15Cr2LJpegDecoder6decodeERKNS_14Cr2SliceWidthsE, i32 noundef %.0.i) #14 unreachable } diff --git a/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll b/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll index 196bc1f7007..80acea570f5 100644 --- a/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll +++ b/bench/diesel-rs/optimized/23kokisxi5pskw1l.ll @@ -727,27 +727,27 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fol %4 = load i64, ptr %3, align 8, !alias.scope !161, !noundef !4 %.promoted = load i64, ptr %2, align 8, !alias.scope !161 %5 = icmp ult i64 %.promoted, %4 - br i1 %5, label %.lr.ph, label %13 + br i1 %5, label %6, label %13 -.lr.ph: ; preds = %1 +6: ; preds = %1 %.val4.i.i = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !4, !noundef !4 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val.i.i = load ptr, ptr %6, align 8, !alias.scope !161, !nonnull !4, !noundef !4 br label %8 -7: ; preds = %8 +9: ; preds = %8 %exitcond.not = icmp eq i64 %10, %4 br i1 %exitcond.not, label %.sink.split, label %8 -8: ; preds = %.lr.ph, %7 +8: ; preds = %.lr.ph, %7 %9 = phi i64 [ %.promoted, %.lr.ph ], [ %10, %7 ] %10 = add i64 %9, 1 %11 = getelementptr inbounds i8, ptr %.val4.i.i, i64 %9 %12 = getelementptr inbounds i8, ptr %.val.i.i, i64 %9 %.fca.0.extract.val = load i8, ptr %11, align 1, !range !132, !noundef !4 %.fca.1.extract.val = load i8, ptr %12, align 1, !range !132, !noundef !4 - %.not.not.not = icmp ne i8 %.fca.0.extract.val, %.fca.1.extract.val - br i1 %.not.not.not, label %.sink.split, label %7 + %.not = icmp ne i8 %.fca.0.extract.val, %.fca.1.extract.val + br i1 %.not, label %.sink.split, label %7 .sink.split: ; preds = %8, %7 %.lcssa20.sink = phi i64 [ %10, %8 ], [ %4, %7 ] @@ -755,7 +755,7 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fol br label %13 13: ; preds = %.sink.split, %1 - %.lcssa = phi i1 [ false, %1 ], [ %.not.not.not, %.sink.split ] + %.lcssa = phi i1 [ false, %1 ], [ %.not, %.sink.split ] ret i1 %.lcssa } @@ -1877,9 +1877,9 @@ define hidden void @"_ZN71_$LT$std..hash..random..DefaultHasher$u20$as$u20$core. ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: read) uwtable define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h2b3aa12c9f205c1eE"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 captures(none) %2, i64 noundef %3) unnamed_addr #12 personality ptr @rust_eh_personality { %.not = icmp eq i64 %1, %3 - br i1 %.not, label %5, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit + br i1 %.not, label %.preheader, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit -5: ; preds = %4 +.preheader: ; preds = %4 %.not8 = icmp eq i64 %1, 0 br i1 %.not8, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17h7edd114388089e2cE.llvm.11416644905663497080.exit, label %.lr.ph.i @@ -1888,8 +1888,8 @@ define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice. %7 = getelementptr inbounds i8, ptr %0, i64 %6 %8 = getelementptr inbounds i8, ptr %2, i64 %6 %.fca.0.extract.val.i = load i8, ptr %7, align 1, !range !132, !noalias !378, !noundef !4 - %.fca.1.extract.val.i = load i8, ptr %8, align 1, !range !132, !noalias !378, !noundef !4 - %.not.i.not = icmp eq i8 %.fca.0.extract.val.i, %.fca.1.extract.val.i + %.fca.0.extract.val.i = load i8, ptr %8, align 1, !range !132, !noalias !378, !noundef !4 + %.not.i.not = icmp eq i8 %.fca.0.extract.val.i, %.fca.0.extract.val.i %9 = add nuw i64 %6, 1 %exitcond.not.i = icmp ne i64 %9, %1 %or.cond.not = select i1 %.not.i.not, i1 %exitcond.not.i, i1 false diff --git a/bench/draco/optimized/mesh_are_equivalent.ll b/bench/draco/optimized/mesh_are_equivalent.ll index b4f5838d350..19d032d65db 100644 --- a/bench/draco/optimized/mesh_are_equivalent.ll +++ b/bench/draco/optimized/mesh_are_equivalent.ll @@ -1397,11 +1397,11 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %13 = icmp eq i64 %2, 0 br i1 %13, label %._crit_edge, label %.lr.ph24 -14: ; preds = %.lr.ph24 +13: ; preds = %.lr.ph24 %15 = icmp eq i64 %17, 0 - br i1 %15, label %._crit_edge, label %.lr.ph24, !llvm.loop !131 + br i1 %15, label %16, label %.lr.ph24, !llvm.loop !131 -._crit_edge: ; preds = %14, %.lr.ph +16: ; preds = %13, %.lr.ph %storemerge16.lcssa = phi ptr [ %1, %.lr.ph ], [ %21, %14 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %3, ptr %6, align 8 @@ -1413,7 +1413,7 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %.loopexit -.lr.ph24: ; preds = %.lr.ph, %14 +17: ; preds = %.lr.ph, %13 %storemerge1623 = phi ptr [ %21, %14 ], [ %1, %.lr.ph ] %.01722 = phi i64 [ %17, %14 ], [ %2, %.lr.ph ] %16 = phi i64 [ %24, %14 ], [ %10, %.lr.ph ] diff --git a/bench/eastl/optimized/eathread_pool.ll b/bench/eastl/optimized/eathread_pool.ll index dd674a247e4..58fda3ff9a4 100644 --- a/bench/eastl/optimized/eathread_pool.ll +++ b/bench/eastl/optimized/eathread_pool.ll @@ -2113,7 +2113,7 @@ invoke.cont: %cmp.i.not12 = icmp eq ptr %1, %it.sroa.0.011 br i1 %cmp.i.not12, label %cleanup, label %for.body.preheader -for.body.preheader: ; preds = %invoke.cont +invoke.cont5: ; preds = %invoke.cont %cmp18 = icmp eq i32 %index, 0 br i1 %cmp18, label %invoke.cont7, label %invoke.cont5 @@ -2130,7 +2130,7 @@ for.body: ; preds = %invoke.cont5 %cmp = icmp eq i32 %inc, %index br i1 %cmp, label %invoke.cont7, label %invoke.cont5 -invoke.cont7: ; preds = %for.body, %for.body.preheader +invoke.cont7: ; preds = %for.body, %invoke.cont5 %it.sroa.0.014.lcssa = phi ptr [ %it.sroa.0.011, %for.body.preheader ], [ %it.sroa.0.0, %for.body ] %2 = load ptr, ptr %it.sroa.0.014.lcssa, align 8 br label %cleanup diff --git a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll index a6a0a51af6f..62957f8b04c 100644 --- a/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll +++ b/bench/elfshaker-rs/optimized/3a1f053714hdbf2r1u9m19s6u.ll @@ -2416,23 +2416,23 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !129 call void @llvm.lifetime.end.p0(ptr nonnull %20), !noalias !129 %.pre.i = load ptr, ptr %22, align 8, !noalias !129 - %.pre52.i = load i64, ptr %51, align 8, !noalias !129 + %.pre50.i = load i64, ptr %51, align 8, !noalias !129 call void @llvm.lifetime.start.p0(ptr nonnull %12), !noalias !129 call void @llvm.lifetime.start.p0(ptr nonnull %13), !noalias !129 store ptr %48, ptr %13, align 8, !noalias !132 store ptr %49, ptr %12, align 8, !noalias !132 %58 = getelementptr inbounds nuw i8, ptr %12, i64 8 store i64 %50, ptr %58, align 8, !noalias !132 - %.idx.i.i = mul nuw nsw i64 %.pre52.i, 24 + %.idx.i.i = mul nuw nsw i64 %.pre50.i, 24 %59 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 %.idx.i.i call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !132 - %60 = icmp eq i64 %.pre52.i, 0 + %60 = icmp eq i64 %.pre50.i, 0 br i1 %60, label %76, label %61, !prof !137 61: ; preds = %.thread, %57 %62 = phi ptr [ %56, %.thread ], [ %59, %57 ] %63 = phi ptr [ %47, %.thread ], [ %.pre.i, %57 ] - %64 = phi i64 [ %43, %.thread ], [ %.pre52.i, %57 ] + %64 = phi i64 [ %43, %.thread ], [ %.pre50.i, %57 ] invoke fastcc void @"_ZN9elfshaker4repo10repository10Repository19are_snapshots_equal28_$u7b$$u7b$closure$u7d$$u7d$17hc40ef7222efdce78E"(ptr noalias noundef align 1 captures(none) dereferenceable(21) %11, ptr nonnull %13, ptr nonnull %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %63) to label %.noexc unwind label %.thread101.loopexit.split-lp.loopexit.split-lp @@ -2638,7 +2638,7 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot %127 = icmp eq i64 %124, 0 br i1 %127, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.thread.i", label %.lr.ph.i -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.thread.i": ; preds = %.loopexit47.i +127: ; preds = %.loopexit47.i call void @llvm.lifetime.start.p0(ptr nonnull %18), !noalias !129 br label %138 @@ -2647,16 +2647,16 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot %130 = icmp eq ptr %129, %126 br i1 %130, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", label %.lr.ph.i -.lr.ph.i: ; preds = %.loopexit47.i, %128 +130: ; preds = %.loopexit47.i, %128 %131 = phi ptr [ %129, %128 ], [ %125, %.loopexit47.i ] %132 = invoke noundef zeroext i1 @_ZN9elfshaker4repo10repository10Repository13is_pack_loose17he2b99a4b44c027cbE(ptr noundef nonnull align 8 %48, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %131) to label %.noexc49 unwind label %.thread101.loopexit -.noexc49: ; preds = %.lr.ph.i +.noexc49: ; preds = %130 br i1 %132, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", label %128 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i": ; preds = %.noexc49, %128 - %.sroa.0.0.i.ph.i = phi ptr [ %131, %.noexc49 ], [ null, %128 ] + %.sroa.0.0.i.i = phi ptr [ %131, %.noexc49 ], [ null, %128 ] %.pre53.i = load i64, ptr %51, align 8, !noalias !129 %133 = icmp eq i64 %.pre53.i, 0 call void @llvm.lifetime.start.p0(ptr nonnull %18), !noalias !129 @@ -2690,7 +2690,7 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !126 unreachable -138: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.thread.i" +138: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i", %127 invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef 0, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.7d7fa6b3a568edea7c5b2245a49c0080.237) #25 to label %.noexc50 unwind label %.thread101.loopexit.split-lp.loopexit.split-lp @@ -2705,8 +2705,8 @@ define void @_ZN9elfshaker4repo10repository10Repository23find_pack_with_snapshot 141: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17h9bfbfe7860ba3194E.exit.i" %142 = load ptr, ptr %22, align 8, !noalias !129, !nonnull !5, !align !18, !noundef !5 - %.not34.i = icmp eq ptr %.sroa.0.0.i.ph.i, null - %spec.select.i = select i1 %.not34.i, ptr %142, ptr %.sroa.0.0.i.ph.i + %.not34.i = icmp eq ptr %.sroa.0.0.i.i, null + %spec.select.i = select i1 %.not34.i, ptr %142, ptr %.sroa.0.0.i.i invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17h264d14c2948c37e0E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %spec.select.i) to label %.noexc51 unwind label %.thread101.loopexit.split-lp.loopexit.split-lp @@ -2789,7 +2789,7 @@ _ZN9elfshaker4repo10repository10Repository21disambiguate_snapshot17h1a11d1daadc1 %170 = load i64, ptr %168, align 8, !noalias !169 br label %.invoke -.thread101.loopexit: ; preds = %.lr.ph.i +.thread101.loopexit: ; preds = %130 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.thread96 diff --git a/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll b/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll index 549f2e364b5..8ec81bdf875 100644 --- a/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll +++ b/bench/elfshaker-rs/optimized/9wkk97gvpzd6xthejxapvo559.ll @@ -2221,10 +2221,10 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$co %6 = icmp ult i64 %.val2, 192153584101141163 tail call void @llvm.assume(i1 %6) %7 = icmp samesign ugt i64 %.val2, 1 - br i1 %7, label %.lr.ph.preheader.i, label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" + br i1 %7, label %8, label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" -.lr.ph.preheader.i: ; preds = %2 - %8 = icmp ne ptr %.val, null +8: ; preds = %2 + %9 = icmp ne ptr %.val, null tail call void @llvm.assume(i1 %8) %9 = icmp ne ptr %.val1, null tail call void @llvm.assume(i1 %9) @@ -2232,19 +2232,19 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$co %10 = getelementptr inbounds nuw i8, ptr %.val1, i64 %.idx.i %11 = load ptr, ptr %.val, align 8, !nonnull !3, !align !4, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !372) - %12 = load ptr, ptr %11, align 8, !alias.scope !372, !noalias !375, !nonnull !3, !align !4 - br label %.lr.ph.i + %13 = load ptr, ptr %11, align 8, !alias.scope !372, !noalias !375, !nonnull !3, !align !4 + br label %14 -.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i - %13 = phi ptr [ %.val1, %.lr.ph.preheader.i ], [ %16, %.lr.ph.i ] +14: ; preds = %14, %8 + %15 = phi ptr [ %.val1, %.lr.ph.preheader.i ], [ %16, %.lr.ph.i ] %14 = tail call noundef align 8 dereferenceable(24) ptr @_ZN9elfshaker4repo4pack10SnapshotId4pack17hdbb36c0228d6311cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %13), !noalias !377 %15 = tail call noundef zeroext i1 @_ZN9elfshaker4repo10repository10Repository13is_pack_loose17he2b99a4b44c027cbE(ptr noundef nonnull align 8 %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %14), !noalias !377 %16 = getelementptr inbounds nuw i8, ptr %13, i64 48 %.not.not.not.i.not.i = icmp ne ptr %16, %10 %or.cond.not.i = select i1 %15, i1 %.not.not.not.i.not.i, i1 false - br i1 %or.cond.not.i, label %.lr.ph.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i" + br i1 %or.cond.not.i, label %14, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i": ; preds = %.lr.ph.i +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h611233af7ee90654E.exit.loopexit.i":; preds = %14 %.sroa.0.0.ph.i = xor i1 %15, true br label %"_ZN9elfshaker4repo10repository10Repository26find_redundant_loose_packs28_$u7b$$u7b$closure$u7d$$u7d$17h8a839a0bf688e902E.exit" diff --git a/bench/faiss/optimized/colorprint.ll b/bench/faiss/optimized/colorprint.ll index 20ca8f9d207..aa189d3a0e4 100644 --- a/bench/faiss/optimized/colorprint.ll +++ b/bench/faiss/optimized/colorprint.ll @@ -373,9 +373,9 @@ define hidden noundef zeroext i1 @_ZN9benchmark15IsColorTerminalEv() local_unnam .split: ; preds = %0 %2 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(6) @.str.2) #17 %3 = icmp eq i32 %2, 0 - br i1 %3, label %.split21.us, label %.lr.ph.preheader + br i1 %3, label %.split21.us, label %4 -.lr.ph.preheader: ; preds = %.split, %.lr.ph.preheader +4: ; preds = %.split, %4 %.011.add26 = phi i64 [ %.011.add, %.lr.ph.preheader ], [ 8, %.split ] %.011.ptr = getelementptr inbounds nuw i8, ptr @__const._ZN9benchmark15IsColorTerminalEv.SUPPORTED_TERM_VALUES, i64 %.011.add26 %4 = load ptr, ptr %.011.ptr, align 8, !tbaa !19 @@ -384,9 +384,9 @@ define hidden noundef zeroext i1 @_ZN9benchmark15IsColorTerminalEv() local_unnam %.011.add = add nuw nsw i64 %.011.add26, 8 %.not.not.not = icmp eq i64 %.011.add, 128 %or.cond = select i1 %6, i1 true, i1 %.not.not.not - br i1 %or.cond, label %.split21.us, label %.lr.ph.preheader + br i1 %or.cond, label %.split21.us, label %4 -.split21.us: ; preds = %.lr.ph.preheader, %0, %.split +.split21.us:; preds = %4, %0, %.split %.us-phi = phi i1 [ true, %.split ], [ false, %0 ], [ %6, %.lr.ph.preheader ] %7 = load ptr, ptr @stdout, align 8, !tbaa !20 %8 = tail call i32 @fileno(ptr noundef %7) #14 diff --git a/bench/ffmpeg/optimized/ebur128.ll b/bench/ffmpeg/optimized/ebur128.ll index 666f5d9994e..8d41b5ab188 100644 --- a/bench/ffmpeg/optimized/ebur128.ll +++ b/bench/ffmpeg/optimized/ebur128.ll @@ -950,16 +950,16 @@ define range(i32 -22, 1) i32 @ff_ebur128_loudness_global(ptr noundef readonly ca %3 = load i32, ptr %0, align 8, !tbaa !25 %4 = and i32 %3, 5 %.not41.i = icmp eq i32 %4, 5 - br i1 %.not41.i, label %.split.i, label %ebur128_gated_loudness.exit, !llvm.loop !51 + br i1 %.not41.i, label %4, label %ebur128_gated_loudness.exit, !llvm.loop !51 -.split.i: ; preds = %2 +4: ; preds = %2 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load ptr, ptr %5, align 8, !tbaa !4 %7 = getelementptr inbounds nuw i8, ptr %6, i64 328 %8 = load ptr, ptr %7, align 8, !tbaa !31 br label %9 -9: ; preds = %9, %.split.i +9: ; preds = %9, %4 %.122.i.i = phi i32 [ 0, %.split.i ], [ %18, %9 ] %.02021.i.i = phi i64 [ 0, %.split.i ], [ %19, %9 ] %10 = phi double [ 0.000000e+00, %.split.i ], [ %16, %9 ] @@ -1027,20 +1027,20 @@ find_histogram_index.exit.i: ; preds = %.preheader2.i %43 = add i64 %38, %.1346.us.i %44 = add nuw i64 %.0317.us.i, 1 %exitcond.not.i = icmp eq i64 %44, 1000 - br i1 %exitcond.not.i, label %.split13.i, label %.preheader.us.i, !llvm.loop !52 + br i1 %exitcond.not.i, label %.split12.i, label %.preheader.us.i, !llvm.loop !52 -.split13.i: ; preds = %.preheader.us.i +.split12.i: ; preds = %.preheader.us.i %.not40.i = icmp eq i64 %43, 0 br i1 %.not40.i, label %.loopexit3.sink.split.i, label %45 -45: ; preds = %.split13.i +45: ; preds = %.split12.i %46 = uitofp i64 %43 to double %47 = fdiv nsz double %42, %46 %48 = tail call nsz double @llvm.log10.f64(double %47) %49 = tail call nsz noundef double @llvm.fmuladd.f64(double %48, double 1.000000e+01, double -6.910000e-01) br label %.loopexit3.sink.split.i -.loopexit3.sink.split.i: ; preds = %45, %.split13.i, %find_histogram_index.exit.i, %ebur128_calc_relative_threshold.exit.i +.loopexit3.sink.split.i: ; preds = %45, %.split12.i, %find_histogram_index.exit.i, %ebur128_calc_relative_threshold.exit.i %.sink.i = phi double [ %49, %45 ], [ 0xFFF0000000000000, %ebur128_calc_relative_threshold.exit.i ], [ 0xFFF0000000000000, %find_histogram_index.exit.i ], [ 0xFFF0000000000000, %.split13.i ] store double %.sink.i, ptr %1, align 8, !tbaa !29 br label %ebur128_gated_loudness.exit diff --git a/bench/ffmpeg/optimized/img2.ll b/bench/ffmpeg/optimized/img2.ll index 519c25538ab..0b15a2e8591 100644 --- a/bench/ffmpeg/optimized/img2.ll +++ b/bench/ffmpeg/optimized/img2.ll @@ -17,15 +17,15 @@ define i32 @ff_guess_image2_codec(ptr noundef %0) local_unnamed_addr #0 { %4 = getelementptr inbounds nuw i8, ptr %2, i64 1 %5 = tail call i32 @av_strcasecmp(ptr noundef nonnull %4, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @ff_img_tags, i64 4)) #4 %.not11.i1 = icmp eq i32 %5, 0 - br i1 %.not11.i1, label %str2id.exit, label %.lr.ph.preheader + br i1 %.not11.i1, label %str2id.exit, label %8 -.lr.ph: ; preds = %.lr.ph.preheader +.lr.ph: ; preds = %8 %6 = getelementptr inbounds nuw i8, ptr %9, i64 16 %7 = load i32, ptr %6, align 4, !tbaa !4 %.not10.i = icmp eq i32 %7, 0 - br i1 %.not10.i, label %.str2id.exit.loopexit_crit_edge3, label %.lr.ph.preheader, !llvm.loop !9 + br i1 %.not10.i, label %.str2id.exit.loopexit_crit_edge3, label %8, !llvm.loop !9 -.lr.ph.preheader: ; preds = %3, %.lr.ph +8: ; preds = %3, %.lr.ph %8 = phi i32 [ %7, %.lr.ph ], [ 7, %3 ] %9 = phi ptr [ %6, %.lr.ph ], [ getelementptr inbounds nuw (i8, ptr @ff_img_tags, i64 16), %3 ] %.01.i29 = phi ptr [ %9, %.lr.ph ], [ @ff_img_tags, %3 ] @@ -37,7 +37,7 @@ define i32 @ff_guess_image2_codec(ptr noundef %0) local_unnamed_addr #0 { .str2id.exit.loopexit_crit_edge3: ; preds = %.lr.ph br label %str2id.exit, !llvm.loop !9 -str2id.exit: ; preds = %.lr.ph.preheader, %3, %.str2id.exit.loopexit_crit_edge3, %1 +str2id.exit: ; preds = %8, %3, %.str2id.exit.loopexit_crit_edge3, %1 %.08.i = phi i32 [ 0, %1 ], [ 0, %.str2id.exit.loopexit_crit_edge3 ], [ 7, %3 ], [ %8, %.lr.ph.preheader ] ret i32 %.08.i } diff --git a/bench/folly/optimized/Dump.ll b/bench/folly/optimized/Dump.ll index 5738ba61245..b5c6b097bb6 100644 --- a/bench/folly/optimized/Dump.ll +++ b/bench/folly/optimized/Dump.ll @@ -2140,11 +2140,11 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %11 = icmp eq i64 %2, 0 br i1 %11, label %._crit_edge, label %.lr.ph21 -12: ; preds = %.lr.ph21 +11: ; preds = %.lr.ph21 %13 = icmp eq i64 %19, 0 - br i1 %13, label %._crit_edge, label %.lr.ph21, !llvm.loop !121 + br i1 %13, label %14, label %.lr.ph21, !llvm.loop !121 -._crit_edge: ; preds = %12, %.lr.ph +14: ; preds = %11, %.lr.ph %storemerge13.lcssa = phi ptr [ %1, %.lr.ph ], [ %23, %12 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -2152,20 +2152,20 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.lr.ph.i8.i -.lr.ph.i8.i: ; preds = %._crit_edge, %.lr.ph.i8.i - %.sroa.0.05.i.i = phi ptr [ %14, %.lr.ph.i8.i ], [ %storemerge13.lcssa, %._crit_edge ] - %14 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -80 - call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_RT0_(ptr %0, ptr nonnull %14, ptr nonnull %14, ptr noundef nonnull align 1 dereferenceable(1) %5) - %15 = ptrtoint ptr %14 to i64 - %16 = sub i64 %15, %6 - %17 = icmp sgt i64 %16, 80 - br i1 %17, label %.lr.ph.i8.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit, !llvm.loop !122 +.lr.ph.i8.i: ; preds = %14, %.lr.ph.i8.i + %.sroa.0.05.i.i = phi ptr [ %15, %.lr.ph.i8.i ], [ %storemerge13.lcssa, %._crit_edge ] + %15 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -80 + call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_RT0_(ptr %0, ptr nonnull %15, ptr nonnull %15, ptr noundef nonnull align 1 dereferenceable(1) %5) + %16 = ptrtoint ptr %15 to i64 + %17 = sub i64 %16, %6 + %18 = icmp sgt i64 %17, 80 + br i1 %18, label %.lr.ph.i8.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit, !llvm.loop !122 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN5folly7dynamicES4_ESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_T0_.exit: ; preds = %.lr.ph.i8.i call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.lr.ph21: ; preds = %.lr.ph, %12 +19: ; preds = %.lr.ph, %11 %storemerge1320 = phi ptr [ %23, %12 ], [ %1, %.lr.ph ] %.01419 = phi i64 [ %19, %12 ], [ %2, %.lr.ph ] %18 = phi i64 [ %25, %12 ], [ %8, %.lr.ph ] diff --git a/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll b/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll index d0a00028f86..9e9593763ca 100644 --- a/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll +++ b/bench/foundations-rs/optimized/0uhtkdzva2a9kciz5ikpsa8ze.ll @@ -11741,12 +11741,12 @@ define internal { i64, ptr } @_ZN5tokio2io11async_write10AsyncWrite19poll_write_ %6 = icmp eq i64 %3, 0 br i1 %6, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit", label %.lr.ph -7: ; preds = %.lr.ph +7:; preds = %.lr.ph %8 = getelementptr inbounds nuw i8, ptr %10, i64 16 %9 = icmp eq ptr %8, %5 br i1 %9, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h9720b8cc9e07f1e6E.exit", label %.lr.ph -.lr.ph: ; preds = %4, %7 +.lr.ph:; preds = %4, %7 %10 = phi ptr [ %8, %7 ], [ %2, %4 ] %11 = getelementptr i8, ptr %10, i64 8 %12 = load i64, ptr %11, align 8, !noalias !714, !noundef !4 diff --git a/bench/freetype/optimized/sfnt.ll b/bench/freetype/optimized/sfnt.ll index 528c2f194c7..3c703869d6d 100644 --- a/bench/freetype/optimized/sfnt.ll +++ b/bench/freetype/optimized/sfnt.ll @@ -144,7 +144,7 @@ define internal range(i32 0, 256) i32 @tt_cmap0_char_next(ptr noundef readonly c %8 = icmp ult i32 %7, 256 br i1 %8, label %.lr.ph.preheader, label %.loopexit -.lr.ph.preheader: ; preds = %2 +7: ; preds = %2 %9 = zext nneg i32 %7 to i64 br label %.lr.ph diff --git a/bench/git/optimized/delta-islands.ll b/bench/git/optimized/delta-islands.ll index e5b7ba76e3c..d1c09702bf0 100644 --- a/bench/git/optimized/delta-islands.ll +++ b/bench/git/optimized/delta-islands.ll @@ -1983,18 +1983,18 @@ define internal noundef i32 @find_island_for_ref(ptr noundef %0, ptr readnone ca %13 = zext nneg i32 %.01945 to i64 br label %16 -14: ; preds = %16 +12: ; preds = %16 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %15 = icmp sgt i64 %indvars.iv, 0 br i1 %15, label %16, label %.thread, !llvm.loop !94 16: ; preds = %.lr.ph, %14 %indvars.iv = phi i64 [ %13, %.lr.ph ], [ %indvars.iv.next, %14 ] - %17 = load ptr, ptr %12, align 8, !tbaa !60 + %16 = load ptr, ptr %12, align 8, !tbaa !60 %18 = getelementptr inbounds nuw %struct.re_pattern_buffer, ptr %17, i64 %indvars.iv %19 = call i32 @regexec(ptr noundef %18, ptr noundef %0, i64 noundef 16, ptr noundef nonnull %6, i32 noundef 0) #17 %.not = icmp eq i32 %19, 0 - br i1 %.not, label %20, label %14, !llvm.loop !94 + br i1 %.not, label %20, label %12, !llvm.loop !94 20: ; preds = %16 %21 = getelementptr inbounds nuw i8, ptr %6, i64 120 @@ -2022,8 +2022,8 @@ _.exit: ; preds = %23, %25 br label %30 30: ; preds = %27, %52 - %indvars.iv69 = phi i64 [ 1, %27 ], [ %indvars.iv.next70, %52 ] - %31 = getelementptr inbounds nuw %struct.regmatch_t, ptr %6, i64 %indvars.iv69 + %indvars.iv67 = phi i64 [ 1, %27 ], [ %indvars.iv.next68, %52 ] + %31 = getelementptr inbounds nuw %struct.regmatch_t, ptr %6, i64 %indvars.iv67 %32 = load i32, ptr %31, align 8, !tbaa !95 %33 = icmp eq i32 %32, -1 br i1 %33, label %52, label %34 @@ -2073,8 +2073,8 @@ strbuf_addch.exit: ; preds = %36, %strbuf_avail.e br label %52 52: ; preds = %30, %44 - %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next70, 16 + %indvars.iv.next68 = add nuw nsw i64 %indvars.iv67, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next68, 16 br i1 %exitcond.not, label %53, label %30, !llvm.loop !99 53: ; preds = %52 @@ -2512,7 +2512,7 @@ add_ref_to_island.exit: ; preds = %.kh_put_str.exit_cr call void @strbuf_release(ptr noundef nonnull %7) #17 br label %.thread -.thread: ; preds = %14, %5, %add_ref_to_island.exit +.thread: ; preds = %12, %5, %add_ref_to_island.exit call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 0 diff --git a/bench/git/optimized/reftable-backend.ll b/bench/git/optimized/reftable-backend.ll index d3c6328670e..2cede09ed3d 100644 --- a/bench/git/optimized/reftable-backend.ll +++ b/bench/git/optimized/reftable-backend.ll @@ -3019,21 +3019,21 @@ select.unfold.preheader76: ; preds = %select.unfold.prehe %.not5773 = icmp eq ptr %13, null br label %select.unfold -14: ; preds = %select.unfold +13: ; preds = %select.unfold %15 = add i64 %.0466675, 1 %exitcond.not = icmp eq i64 %15, %11 br i1 %exitcond.not, label %.critedge, label %select.unfold -select.unfold: ; preds = %select.unfold.preheader76, %14 +select.unfold: ; preds = %select.unfold.preheader76, %13 %.0466675 = phi i64 [ %15, %14 ], [ 0, %select.unfold.preheader76 ] - %16 = getelementptr inbounds nuw %struct.write_transaction_table_arg, ptr %13, i64 %.0466675 - %17 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %18 = load ptr, ptr %17, align 8, !tbaa !158 - %19 = icmp ne ptr %18, %12 + %15 = getelementptr inbounds nuw %struct.write_transaction_table_arg, ptr %13, i64 %.0466675 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %17 = load ptr, ptr %16, align 8, !tbaa !158 + %18 = icmp ne ptr %17, %12 %.not57 = or i1 %19, %.not5773 br i1 %.not57, label %14, label %.critedge61 -.critedge: ; preds = %14, %select.unfold.preheader +.critedge:; preds = %14, %select.unfold.preheader call void @llvm.lifetime.start.p0(ptr nonnull %7) %20 = load ptr, ptr %12, align 8, !tbaa !65 %21 = tail call i32 @reftable_stack_reload(ptr noundef %20) #20 @@ -3109,7 +3109,7 @@ st_mult.exit: ; preds = %32 br label %.critedge61 .critedge61: ; preds = %select.unfold, %40 - %.2 = phi ptr [ %43, %40 ], [ %16, %select.unfold ] + %.2 = phi ptr [ %43, %40 ], [ %15, %select.unfold ] %48 = getelementptr inbounds nuw i8, ptr %.2, i64 48 %49 = load i64, ptr %48, align 8, !tbaa !85 %50 = add i64 %49, 1 diff --git a/bench/git/optimized/shell.ll b/bench/git/optimized/shell.ll index cfaeaf4c4db..1fbabd089db 100644 --- a/bench/git/optimized/shell.ll +++ b/bench/git/optimized/shell.ll @@ -524,8 +524,8 @@ define internal i32 @do_generic_cmd(ptr noundef %0, ptr noundef %1) #0 { 10: ; preds = %.preheader %.065.add.i = add nuw nsw i64 %.065.idx.i, 1 %.ptr.i = getelementptr inbounds nuw i8, ptr @.str.29, i64 %.065.add.i - %11 = getelementptr inbounds nuw i8, ptr %.074.i, i64 1 - %12 = load i8, ptr %.ptr.i, align 1, !tbaa !9 + %12 = getelementptr inbounds nuw i8, ptr %.074.i, i64 1 + %13 = load i8, ptr %.ptr.i, align 1, !tbaa !9 %exitcond.i = icmp eq i64 %.065.add.i, 4 br i1 %exitcond.i, label %16, label %.preheader, !llvm.loop !22 @@ -541,16 +541,16 @@ skip_prefix.exit: ; preds = %.preheader tail call void (ptr, ...) @die(ptr noundef nonnull @.str.30) #15 unreachable -16: ; preds = %10 +15: ; preds = %10 %scevgep.i = getelementptr i8, ptr %0, i64 4 store ptr %scevgep.i, ptr %3, align 16, !tbaa !4 - %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %5, ptr %17, align 8, !tbaa !4 - %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr null, ptr %18, align 16, !tbaa !4 - %19 = call i32 @execv_git_cmd(ptr noundef nonnull %3) #14 + %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %5, ptr %16, align 8, !tbaa !4 + %17 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr null, ptr %17, align 16, !tbaa !4 + %18 = call i32 @execv_git_cmd(ptr noundef nonnull %3) #14 call void @llvm.lifetime.end.p0(ptr nonnull %3) - ret i32 %19 + ret i32 %18 } declare void @setup_path() local_unnamed_addr #5 diff --git a/bench/graphviz/optimized/actions.ll b/bench/graphviz/optimized/actions.ll index fecdc50b1c3..616b45c26be 100644 --- a/bench/graphviz/optimized/actions.ll +++ b/bench/graphviz/optimized/actions.ll @@ -2661,29 +2661,29 @@ define i64 @rindexOf(ptr noundef %0, ptr noundef readonly captures(none) %1) loc %13 = icmp eq i32 %12, 0 br i1 %13, label %._crit_edge, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %9 +._crit_edge: ; preds = %9 %14 = icmp eq i64 %4, %5 br i1 %14, label %.loopexit, label %.lr.ph26 -._crit_edge: ; preds = %.lr.ph26, %9 +._crit_edge:; preds = %18, %9 %.018.lcssa = phi ptr [ %11, %9 ], [ %19, %.lr.ph26 ] %15 = ptrtoint ptr %.018.lcssa to i64 %16 = ptrtoint ptr %0 to i64 %17 = sub i64 %15, %16 br label %.loopexit -.lr.ph: ; preds = %.lr.ph26 +.lr.ph: ; preds = %18 %18 = icmp eq ptr %19, %0 - br i1 %18, label %.loopexit, label %.lr.ph26 + br i1 %18, label %.loopexit, label %18 -.lr.ph26: ; preds = %.lr.ph.preheader, %.lr.ph +18: ; preds = %._crit_edge, %.lr.ph %.0182225 = phi ptr [ %19, %.lr.ph ], [ %11, %.lr.ph.preheader ] %19 = getelementptr inbounds i8, ptr %.0182225, i64 -1 %20 = tail call i32 @strncmp(ptr noundef nonnull %19, ptr noundef nonnull %1, i64 noundef %5) #25 %21 = icmp eq i32 %20, 0 br i1 %21, label %._crit_edge, label %.lr.ph -.loopexit: ; preds = %.lr.ph, %.lr.ph.preheader, %7, %2, %._crit_edge +.loopexit: ; preds = %.lr.ph, %._crit_edge, %7, %2, %._crit_edge %.0 = phi i64 [ %17, %._crit_edge ], [ %4, %2 ], [ -1, %7 ], [ -1, %.lr.ph.preheader ], [ -1, %.lr.ph ] ret i64 %.0 } diff --git a/bench/gromacs/optimized/atomsbuilder.ll b/bench/gromacs/optimized/atomsbuilder.ll index dae1ddb7590..7cea89eab43 100644 --- a/bench/gromacs/optimized/atomsbuilder.ll +++ b/bench/gromacs/optimized/atomsbuilder.ll @@ -371,14 +371,14 @@ define void @_ZN3gmx12AtomsBuilder21discardCurrentResidueEv(ptr noundef nonnull %3 = load i32, ptr %2, align 8, !tbaa !13 %.04 = add i32 %3, -1 %4 = icmp sgt i32 %3, 1 - br i1 %4, label %.lr.ph, label %..critedge_crit_edge + br i1 %4, label %.lr.ph, label %8 -..critedge_crit_edge: ; preds = %1 +8: ; preds = %1 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 24 %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !25 br label %.critedge -.lr.ph: ; preds = %1 +.critedge: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 %6 = load ptr, ptr %5, align 8, !tbaa !38 %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -414,8 +414,8 @@ define void @_ZN3gmx12AtomsBuilder21discardCurrentResidueEv(ptr noundef nonnull %21 = phi i32 [ %8, %..critedge_crit_edge7 ], [ %.pre, %..critedge_crit_edge ], [ %8, %.critedge.loopexit ] %.0.lcssa = phi i32 [ %19, %..critedge_crit_edge7 ], [ %.04, %..critedge_crit_edge ], [ %20, %.critedge.loopexit ] store i32 %.0.lcssa, ptr %2, align 8, !tbaa !13 - %22 = getelementptr inbounds nuw i8, ptr %2, i64 40 - store i32 %21, ptr %22, align 8, !tbaa !23 + %17 = getelementptr inbounds nuw i8, ptr %2, i64 40 + store i32 %21, ptr %17, align 8, !tbaa !23 ret void } diff --git a/bench/gromacs/optimized/colvarcomp_protein.ll b/bench/gromacs/optimized/colvarcomp_protein.ll index 6ae64480505..fe27c84c48d 100644 --- a/bench/gromacs/optimized/colvarcomp_protein.ll +++ b/bench/gromacs/optimized/colvarcomp_protein.ll @@ -359,11 +359,11 @@ define noundef i32 @_ZN6colvar12alpha_angles4initERKNSt7__cxx1112basic_stringIcS %.not.i242 = icmp ne i32 %111, 0 %112 = load i32, ptr %19, align 4 %113 = icmp slt i32 %112, 1 - %or.cond6.not1072 = select i1 %.not.i242, i1 true, i1 %113 + %or.cond6.not1065 = select i1 %.not.i242, i1 true, i1 %113 %114 = load i32, ptr %18, align 4 %.not178792 = icmp sgt i32 %114, %112 - %or.cond1070 = select i1 %or.cond6.not1072, i1 true, i1 %.not178792 - br i1 %or.cond1070, label %.loopexit712, label %.lr.ph + %or.cond1063 = select i1 %or.cond6.not1065, i1 true, i1 %.not178792 + br i1 %or.cond1063, label %.loopexit712, label %.lr.ph .thread652: ; preds = %64 %115 = landingpad { ptr, i32 } @@ -400,7 +400,7 @@ define noundef i32 @_ZN6colvar12alpha_angles4initERKNSt7__cxx1112basic_stringIcS br label %171 .lr.ph: ; preds = %104, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit - %.pre836 = phi i32 [ %.pre837, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %112, %104 ] + %.pre832 = phi i32 [ %.pre833, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %112, %104 ] %125 = phi i32 [ %145, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %112, %104 ] %storemerge796 = phi i32 [ %146, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ %114, %104 ] %.sroa.0621.1795 = phi ptr [ %.sroa.0621.11, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ], [ null, %104 ] @@ -460,12 +460,12 @@ _ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i: ; preds = %142, %.noe br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i: ; preds = %143, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i - %.pre = phi i32 [ %.pre.pre, %143 ], [ %.pre836, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i ] + %.pre = phi i32 [ %.pre.pre, %143 ], [ %.pre832, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i ] %144 = getelementptr inbounds nuw i32, ptr %139, i64 %137 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i, %126 - %.pre837 = phi i32 [ %.pre, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.pre836, %126 ] + %.pre833 = phi i32 [ %.pre, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.pre832, %126 ] %145 = phi i32 [ %.pre, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %125, %126 ] %.sroa.22.11 = phi ptr [ %144, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.sroa.22.1793, %126 ] %.pn690 = phi ptr [ %140, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %.sroa.16.1794, %126 ] @@ -2602,10 +2602,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit502: ; preds = %91 %933 = sub i64 %.sroa.16.2, %932 %934 = ashr exact i64 %933, 2 %935 = add nsw i64 %934, -4 - %.not807 = icmp eq i64 %935, 0 - br i1 %.not807, label %.thread, label %.lr.ph804 + %.not804 = icmp eq i64 %935, 0 + br i1 %.not804, label %.thread, label %.lr.ph802 -.lr.ph804: ; preds = %.preheader +.lr.ph802: ; preds = %.preheader %936 = getelementptr inbounds nuw i8, ptr %0, i64 1648 %937 = getelementptr inbounds nuw i8, ptr %59, i64 16 %938 = getelementptr inbounds nuw i8, ptr %59, i64 8 @@ -2630,10 +2630,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit502: ; preds = %91 br i1 %954, label %959, label %.preheader691 .preheader691: ; preds = %945 - %.not806 = icmp eq i64 %952, 480 - br i1 %.not806, label %.thread, label %.lr.ph802 + %.not803 = icmp eq i64 %952, 480 + br i1 %.not803, label %.thread, label %.lr.ph800 -.lr.ph802: ; preds = %.preheader691 +.lr.ph800: ; preds = %.preheader691 %955 = getelementptr inbounds nuw i8, ptr %0, i64 1648 %956 = getelementptr inbounds nuw i8, ptr %14, i64 504 %957 = getelementptr inbounds nuw i8, ptr %0, i64 1656 @@ -2846,22 +2846,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit532: ; preds = %_Z cleanup br label %1196 -1031: ; preds = %.lr.ph802, %1075 - %.072801 = phi i64 [ 0, %.lr.ph802 ], [ %1076, %1075 ] +1031: ; preds = %.lr.ph800, %1075 + %.072799 = phi i64 [ 0, %.lr.ph802 ], [ %1076, %1075 ] %1032 = invoke noalias noundef nonnull dereferenceable(1624) ptr @_Znwm(i64 noundef 1624) #25 to label %1033 unwind label %1085 1033: ; preds = %1031 call void @llvm.lifetime.start.p0(ptr nonnull %56) %1034 = load ptr, ptr %956, align 8, !tbaa !45 - %1035 = getelementptr inbounds nuw %"class.colvarmodule::atom", ptr %1034, i64 %.072801 + %1035 = getelementptr inbounds nuw %"class.colvarmodule::atom", ptr %1034, i64 %.072799 invoke void @_ZN12colvarmodule4atomC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %56, ptr noundef nonnull align 8 dereferenceable(120) %1035) to label %1036 unwind label %.thread642 1036: ; preds = %1033 call void @llvm.lifetime.start.p0(ptr nonnull %57) %1037 = load ptr, ptr %946, align 8, !tbaa !45 - %1038 = getelementptr %"class.colvarmodule::atom", ptr %1037, i64 %.072801 + %1038 = getelementptr %"class.colvarmodule::atom", ptr %1037, i64 %.072799 %1039 = getelementptr i8, ptr %1038, i64 480 invoke void @_ZN12colvarmodule4atomC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %57, ptr noundef nonnull align 8 dereferenceable(120) %1039) to label %1040 unwind label %.thread646 @@ -2954,7 +2954,7 @@ _ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vec to label %1075 unwind label %1029 1075: ; preds = %_ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit - %1076 = add nuw i64 %.072801, 1 + %1076 = add nuw i64 %.072799, 1 %1077 = load ptr, ptr %947, align 8, !tbaa !42 %1078 = load ptr, ptr %946, align 8, !tbaa !45 %1079 = ptrtoint ptr %1077 to i64 @@ -2973,14 +2973,14 @@ _ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vec .thread642: ; preds = %1033 %1087 = landingpad { ptr, i32 } cleanup - br label %.sink.split1068 + br label %.sink.split1061 .thread646: ; preds = %1036 %1088 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %57) call void @_ZN12colvarmodule4atomD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #22 - br label %.sink.split1068 + br label %.sink.split1061 .loopexit693: ; preds = %_ZNKSt6vectorIPN6colvar6h_bondESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i, %1040 %.069.ph = phi i1 [ false, %_ZNKSt6vectorIPN6colvar6h_bondESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ], [ true, %1040 ] @@ -3002,24 +3002,24 @@ _ZNSt6vectorIPN6colvar6h_bondESaIS2_EE9push_backEOS2_.exit: ; preds = %_ZNSt6vec call void @llvm.lifetime.end.p0(ptr nonnull %56) br i1 %.069, label %1090, label %1196 -.sink.split1068: ; preds = %.thread642, %.thread646 +.sink.split1061: ; preds = %.thread642, %.thread646 %.pn203.pn645.ph = phi { ptr, i32 } [ %1088, %.thread646 ], [ %1087, %.thread642 ] call void @llvm.lifetime.end.p0(ptr nonnull %56) br label %1090 -1090: ; preds = %.sink.split1068, %1089 +1090: ; preds = %.sink.split1061, %1089 %.pn203.pn645 = phi { ptr, i32 } [ %lpad.phi697, %1089 ], [ %.pn203.pn645.ph, %.sink.split1068 ] call void @_ZdlPvm(ptr noundef nonnull %1032, i64 noundef 1624) #23 br label %1196 -1091: ; preds = %.lr.ph804, %1138 - %.068803 = phi i64 [ 0, %.lr.ph804 ], [ %1139, %1138 ] +1091: ; preds = %.lr.ph802, %1138 + %.068801 = phi i64 [ 0, %.lr.ph804 ], [ %1139, %1138 ] %1092 = invoke noalias noundef nonnull dereferenceable(1624) ptr @_Znwm(i64 noundef 1624) #25 to label %._crit_edge.i.i539 unwind label %1140 ._crit_edge.i.i539: ; preds = %1091 call void @llvm.lifetime.start.p0(ptr nonnull %58) - %1093 = getelementptr i32, ptr %.sroa.0621.10, i64 %.068803 + %1093 = getelementptr i32, ptr %.sroa.0621.10, i64 %.068801 call void @llvm.lifetime.start.p0(ptr nonnull %59) store ptr %937, ptr %59, align 8, !tbaa !4 store i8 79, ptr %937, align 8, !tbaa !13 @@ -3151,9 +3151,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit562: ; preds = %_Z to label %1138 unwind label %1160 1138: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit562 - %1139 = add nuw i64 %.068803, 1 - %exitcond835.not = icmp eq i64 %1139, %935 - br i1 %exitcond835.not, label %.thread, label %1091, !llvm.loop !167 + %1139 = add nuw i64 %.068801, 1 + %exitcond831.not = icmp eq i64 %1139, %935 + br i1 %exitcond831.not, label %.thread, label %1091, !llvm.loop !167 1140: ; preds = %1091 %1141 = landingpad { ptr, i32 } @@ -3208,13 +3208,13 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa cleanup %1153 = load ptr, ptr %59, align 8, !tbaa !29 %1154 = icmp eq ptr %1153, %937 - br i1 %1154, label %.sink.split1069, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 + br i1 %1154, label %.sink.split1062, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684: ; preds = %.thread675 %1155 = load i64, ptr %937, align 8, !tbaa !13 %1156 = add i64 %1155, 1 call void @_ZdlPvm(ptr noundef %1153, i64 noundef %1156) #23 - br label %.sink.split1069 + br label %.sink.split1062 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i564 call void @llvm.lifetime.end.p0(ptr nonnull %59) @@ -3229,12 +3229,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568: ; preds = %_Z call void @llvm.lifetime.end.p0(ptr nonnull %58) br i1 %.4, label %1159, label %1196 -.sink.split1069: ; preds = %.thread675, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 +.sink.split1062: ; preds = %.thread675, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568.thread684 call void @llvm.lifetime.end.p0(ptr nonnull %59) call void @llvm.lifetime.end.p0(ptr nonnull %58) br label %1159 -1159: ; preds = %.sink.split1069, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 +1159: ; preds = %.sink.split1062, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 %.pn195.pn.pn.pn651 = phi { ptr, i32 } [ %.pn195, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit568 ], [ %.pn195, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i567 ], [ %1152, %.sink.split1069 ] call void @_ZdlPvm(ptr noundef nonnull %1092, i64 noundef 1624) #23 br label %1196 diff --git a/bench/grpc/optimized/compression_internal.ll b/bench/grpc/optimized/compression_internal.ll index 791077372c4..5cae67185ca 100644 --- a/bench/grpc/optimized/compression_internal.ll +++ b/bench/grpc/optimized/compression_internal.ll @@ -1353,15 +1353,15 @@ switch.lookup: ; preds = %16, %_ZZN9grpc_core %switch.load = load ptr, ptr %switch.gep, align 8 %29 = load i8, ptr %switch.load, align 1, !tbaa !6 %.not2018.i.i = icmp eq i8 %29, 0 - br i1 %.not2018.i.i, label %.loopexit.i.i, label %.lr.ph.i.preheader.i + br i1 %.not2018.i.i, label %.loopexit.i.i, label %.lr.ph.i.i -.lr.ph.i.preheader.i: ; preds = %switch.lookup +.lr.ph.i.i: ; preds = %switch.lookup %30 = ptrtoint ptr %.2.i.i to i64 %31 = sub i64 %30, ptrtoint (ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core12_GLOBAL__N_120kCommaSeparatedListsE, i64 128) to i64) %32 = icmp eq i64 %31, 86 br i1 %32, label %.lr.ph.i.preheader._crit_edge.i, label %_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i -_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i: ; preds = %.lr.ph.i.preheader.i +_ZZN9grpc_core12_GLOBAL__N_119CommaSeparatedListsC1EvENKUlcE_clEc.exit27.i.preheader.i:; preds = %.lr.ph.i.i %scevgep.i = getelementptr i8, ptr %.2.i.i, i64 add (i64 ptrtoint (ptr @_ZN9grpc_core12_GLOBAL__N_120kCommaSeparatedListsE to i64), i64 213) %33 = sub i64 0, %30 %scevgep7.i = getelementptr i8, ptr %scevgep.i, i64 %33 diff --git a/bench/harfbuzz/optimized/hb-subset-cff-common.ll b/bench/harfbuzz/optimized/hb-subset-cff-common.ll index 57dd5fa77af..5889f581e9f 100644 --- a/bench/harfbuzz/optimized/hb-subset-cff-common.ll +++ b/bench/harfbuzz/optimized/hb-subset-cff-common.ll @@ -2461,7 +2461,7 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIjLb1ETnPN12hb_enable_i %.not20.not.not.i.not57 = icmp eq i64 %60, 0 br i1 %.not20.not.not.i.not57, label %.lr.ph.preheader, label %._crit_edge -.lr.ph.preheader: ; preds = %46 +thread-pre-split.i: ; preds = %46 %indvars.iv.next.i96 = add nuw nsw i64 %56, 1 %exitcond.not.i97 = icmp eq i64 %indvars.iv.next.i96, 8 br i1 %exitcond.not.i97, label %.loopexit, label %thread-pre-split.i.lr.ph, !llvm.loop !178 @@ -2479,7 +2479,7 @@ thread-pre-split.i: ; preds = %thread-pre-split.i. .lr.ph: ; preds = %thread-pre-split.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.next.i98, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 8 - br i1 %exitcond.not.i, label %.lr.ph..loopexit.loopexit_crit_edge, label %thread-pre-split.i, !llvm.loop !178 + br i1 %exitcond.not.i, label %.loopexit, label %thread-pre-split.i, !llvm.loop !178 ._crit_edge.loopexit: ; preds = %thread-pre-split.i %62 = trunc nuw nsw i64 %indvars.iv.next.i98 to i32 @@ -2499,7 +2499,7 @@ thread-pre-split.i: ; preds = %thread-pre-split.i. store i32 %69, ptr %1, align 4, !tbaa !4 br label %95 -.lr.ph..loopexit.loopexit_crit_edge: ; preds = %.lr.ph +.loopexit: ; preds = %.lr.ph br label %.loopexit, !llvm.loop !178 .loopexit: ; preds = %.lr.ph.preheader, %.lr.ph..loopexit.loopexit_crit_edge, %41 diff --git a/bench/hdf5/optimized/H5FDonion_index.ll b/bench/hdf5/optimized/H5FDonion_index.ll index 90d6e442fd5..a1b833d83ba 100644 --- a/bench/hdf5/optimized/H5FDonion_index.ll +++ b/bench/hdf5/optimized/H5FDonion_index.ll @@ -1712,16 +1712,16 @@ define noundef zeroext i1 @H5FD__onion_archival_index_is_valid(ptr noundef reado %19 = icmp ugt i64 %18, 1 br i1 %19, label %.lr.ph.preheader, label %.loopexit -.lr.ph.preheader: ; preds = %.preheader +.lr.ph.preheader: ; preds = %.preheader %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %12, i64 16 %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !47 br label %.lr.ph -20: ; preds = %.lr.ph +20:; preds = %.lr.ph %exitcond.not = icmp eq i64 %22, %18 br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !56 -.lr.ph: ; preds = %.lr.ph.preheader, %20 +.lr.ph:; preds = %.lr.ph.preheader, %20 %21 = phi i64 [ %24, %20 ], [ %.pre, %.lr.ph.preheader ] %.01216 = phi i64 [ %22, %20 ], [ 1, %.lr.ph.preheader ] %22 = add nuw i64 %.01216, 1 diff --git a/bench/hdf5/optimized/H5Sall.ll b/bench/hdf5/optimized/H5Sall.ll index 01bc81a2ec1..c44f39e884b 100644 --- a/bench/hdf5/optimized/H5Sall.ll +++ b/bench/hdf5/optimized/H5Sall.ll @@ -390,9 +390,9 @@ define internal range(i32 0, 2) i32 @H5S__all_shape_same(ptr noundef readonly ca %13 = load i32, ptr %12, align 8, !tbaa !30 %.01418 = add i32 %11, -1 %14 = icmp sgt i32 %13, 0 - br i1 %14, label %.lr.ph, label %.preheader + br i1 %14, label %.lr.ph, label %.lr.ph -.lr.ph: ; preds = %9 +.lr.ph:; preds = %9 %15 = getelementptr inbounds nuw i8, ptr %0, i64 64 %16 = load ptr, ptr %15, align 8, !tbaa !31 %17 = getelementptr inbounds nuw i8, ptr %1, i64 64 @@ -404,13 +404,13 @@ define internal range(i32 0, 2) i32 @H5S__all_shape_same(ptr noundef readonly ca 21: ; preds = %27 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %22 = icmp samesign ugt i64 %indvars.iv28, 1 - br i1 %22, label %27, label %.preheader.loopexit, !llvm.loop !34 + br i1 %22, label %27, label %.lr.ph, !llvm.loop !34 -.preheader.loopexit: ; preds = %21 +.preheader: ; preds = %21 %23 = trunc nsw i64 %indvars.iv.next to i32 - br label %.preheader + br label %.lr.ph -.preheader: ; preds = %.preheader.loopexit, %9 +.lr.ph: ; preds = %.preheader, %9 %.014.lcssa = phi i32 [ %.01418, %9 ], [ %23, %.preheader.loopexit ] %24 = icmp sgt i32 %.014.lcssa, -1 br i1 %24, label %.lr.ph22, label %.loopexit @@ -420,7 +420,7 @@ define internal range(i32 0, 2) i32 @H5S__all_shape_same(ptr noundef readonly ca %26 = load ptr, ptr %25, align 8, !tbaa !31 br label %35 -27: ; preds = %.lr.ph, %21 +24: ; preds = %.lr.ph, %21 %indvars.iv28 = phi i64 [ %20, %.lr.ph ], [ %indvars.iv.next29, %21 ] %indvars.iv = phi i64 [ %19, %.lr.ph ], [ %indvars.iv.next, %21 ] %indvars.iv.next29 = add nsw i64 %indvars.iv28, -1 @@ -432,19 +432,19 @@ define internal range(i32 0, 2) i32 @H5S__all_shape_same(ptr noundef readonly ca br i1 %.not15, label %21, label %.loopexit, !llvm.loop !34 32: ; preds = %35 - %33 = add nsw i32 %.121, -1 - %34 = icmp sgt i32 %.121, 0 + %33 = add nsw i32 %.118, -1 + %34 = icmp sgt i32 %.118, 0 br i1 %34, label %35, label %.loopexit, !llvm.loop !35 35: ; preds = %.lr.ph22, %32 - %.121 = phi i32 [ %.014.lcssa, %.lr.ph22 ], [ %33, %32 ] - %36 = zext nneg i32 %.121 to i64 + %.118 = phi i32 [ %.014.lcssa, %.lr.ph22 ], [ %33, %32 ] + %36 = zext nneg i32 %.118 to i64 %37 = getelementptr inbounds nuw i64, ptr %26, i64 %36 %38 = load i64, ptr %37, align 8, !tbaa !29 %.not = icmp eq i64 %38, 1 br i1 %.not, label %32, label %.loopexit -.loopexit: ; preds = %27, %32, %35, %.preheader, %2 +.loopexit: ; preds = %24, %32, %35, %.preheader, %2 %.0 = phi i32 [ 1, %2 ], [ 1, %.preheader ], [ 1, %32 ], [ 0, %35 ], [ 0, %27 ] ret i32 %.0 } diff --git a/bench/hermes/optimized/DebugInfo.ll b/bench/hermes/optimized/DebugInfo.ll index bbe3bfe986d..e38c88f3fb7 100644 --- a/bench/hermes/optimized/DebugInfo.ll +++ b/bench/hermes/optimized/DebugInfo.ll @@ -415,7 +415,7 @@ for.body.lr.ph.i: ; preds = %while.end %cmp5.not.i24 = icmp ugt i32 %9, %lastLocationOffset.0.lcssa br i1 %cmp5.not.i24, label %if.end13, label %if.then.i.preheader -if.then.i.preheader: ; preds = %for.body.lr.ph.i +for.body.i: ; preds = %for.body.lr.ph.i %exitcond.not.i41 = icmp eq i32 %7, 1 br i1 %exitcond.not.i41, label %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge, label %for.body.i.lr.ph, !llvm.loop !9 @@ -438,7 +438,7 @@ if.then.i: ; preds = %for.body.i if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge: ; preds = %if.then.i br label %if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge, !llvm.loop !9 -if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge: ; preds = %if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge, %if.then.i.preheader +if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge: ; preds = %if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge, %for.body.i %indvars.iv.i25.lcssa = phi i64 [ %indvars.iv.next.i43, %if.then.i.if.then.i._ZNK6hermes3hbc9DebugInfo21getFilenameForAddressEj.exit_crit_edge_crit_edge ], [ 0, %if.then.i.preheader ] br label %if.then10, !llvm.loop !9 diff --git a/bench/hermes/optimized/Sorting.ll b/bench/hermes/optimized/Sorting.ll index 327f380ed8a..69714d26a4e 100644 --- a/bench/hermes/optimized/Sorting.ll +++ b/bench/hermes/optimized/Sorting.ll @@ -194,9 +194,9 @@ do.body.i: ; preds = %do.cond.i, %if.end. do.cond.i: ; preds = %do.body.i %dec.i = add i32 %start.0.i, -1 %cmp6.not.i = icmp eq i32 %start.0.i, %l.addr.0.lcssa - br i1 %cmp6.not.i, label %while.body.preheader.i, label %do.body.i, !llvm.loop !8 + br i1 %cmp6.not.i, label %while.cond.preheader.i, label %do.body.i, !llvm.loop !8 -while.body.preheader.i: ; preds = %do.cond.i +while.cond.preheader.i: ; preds = %do.cond.i %conv.i.i = zext i32 %l.addr.0.lcssa to i64 br label %while.body.i diff --git a/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll b/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll index ca7969d51e6..4e5c37e9484 100644 --- a/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll +++ b/bench/html5ever-rs/optimized/1wenjtbhc61q6deg.ll @@ -1013,7 +1013,7 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde %7 = load ptr, ptr %6, align 8, !noundef !4 store ptr null, ptr %6, align 8 %.not = icmp eq ptr %7, null - br i1 %.not, label %56, label %8 + br i1 %.not, label %57, label %8 8: ; preds = %0 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -1039,7 +1039,7 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde "_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread": ; preds = %10, %8 invoke void @_ZN4core6option13expect_failed17hc85eb6037a3050f7E(ptr noalias noundef nonnull readonly align 1 @anon.ca33c84f5f46cddb79da9f4933f043aa.54, i64 noundef 21, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ca33c84f5f46cddb79da9f4933f043aa.55) #24 - to label %20 unwind label %54 + to label %20 unwind label %55 "_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit": ; preds = %13 store ptr %7, ptr %3, align 8 @@ -1054,13 +1054,13 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde invoke void @"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h61d184428ed25fc1E.llvm.10022686776672290337"(ptr noalias noundef nonnull align 8 dereferenceable(8) %1) to label %"_ZN4core3ptr95drop_in_place$LT$core..option..Option$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$$GT$17he56a477076105f75E.exit" unwind label %22 -20: ; preds = %._crit_edge, %42, %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" +20: ; preds = %47, %42, %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" unreachable 21: ; preds = %43, %22 %.pn = phi { ptr, i32 } [ %23, %22 ], [ %44, %43 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..rc..Rc$LT$markup5ever_rcdom..Node$GT$$GT$17h38e6e968ed04c345E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %3) #22 - to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %52 + to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %53 22: ; preds = %19, %42 %23 = landingpad { ptr, i32 } @@ -1084,15 +1084,15 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde %.idx = shl nsw i64 %32, 3 %33 = getelementptr inbounds i8, ptr %30, i64 %.idx %34 = icmp eq i64 %32, 0 - br i1 %34, label %._crit_edge, label %.lr.ph + br i1 %34, label %47, label %.lr.ph -35: ; preds = %.lr.ph +35:; preds = %.lr.ph %36 = getelementptr inbounds nuw i8, ptr %39, i64 8 %37 = add nuw nsw i64 %40, 1 %38 = icmp eq ptr %36, %33 - br i1 %38, label %._crit_edge, label %.lr.ph + br i1 %38, label %47, label %.lr.ph -.lr.ph: ; preds = %27, %35 +.lr.ph:; preds = %27, %35 %39 = phi ptr [ %36, %35 ], [ %30, %27 ] %40 = phi i64 [ %37, %35 ], [ 0, %27 ] %41 = load ptr, ptr %39, align 8, !alias.scope !150, !noalias !155, !nonnull !4, !noundef !4 @@ -1103,7 +1103,7 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde invoke void @_ZN4core4cell30panic_already_mutably_borrowed17hbc333334528bd302E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ca33c84f5f46cddb79da9f4933f043aa.59) #24 to label %20 unwind label %22 -43: ; preds = %._crit_edge +43: ; preds = %47 %44 = landingpad { ptr, i32 } cleanup %45 = load i64, ptr %24, align 8, !noalias !162, !noundef !4 @@ -1111,47 +1111,47 @@ define internal fastcc { ptr, i64 } @_ZN17markup5ever_rcdom20get_parent_and_inde store i64 %46, ptr %24, align 8, !noalias !162 br label %21 -._crit_edge: ; preds = %35, %27 +47: ; preds = %35, %27 call void @llvm.lifetime.start.p0(ptr nonnull %2) store ptr @anon.ca33c84f5f46cddb79da9f4933f043aa.57, ptr %2, align 8 - %47 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 1, ptr %47, align 8 - %48 = getelementptr inbounds nuw i8, ptr %2, i64 32 - store ptr null, ptr %48, align 8 - %49 = getelementptr inbounds nuw i8, ptr %2, i64 16 - store ptr @anon.ca33c84f5f46cddb79da9f4933f043aa.4, ptr %49, align 8 - %50 = getelementptr inbounds nuw i8, ptr %2, i64 24 - store i64 0, ptr %50, align 8 + %48 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 1, ptr %48, align 8 + %49 = getelementptr inbounds nuw i8, ptr %2, i64 32 + store ptr null, ptr %49, align 8 + %50 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store ptr @anon.ca33c84f5f46cddb79da9f4933f043aa.4, ptr %50, align 8 + %51 = getelementptr inbounds nuw i8, ptr %2, i64 24 + store i64 0, ptr %51, align 8 invoke void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ca33c84f5f46cddb79da9f4933f043aa.58) #24 to label %20 unwind label %43 -51: ; preds = %.lr.ph +52: ; preds = %.lr.ph store i64 %25, ptr %24, align 8, !noalias !169 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %56 + br label %57 -52: ; preds = %54, %21 - %53 = landingpad { ptr, i32 } +53: ; preds = %55, %21 + %54 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23 unreachable -"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit": ; preds = %54, %21 - %.pn295 = phi { ptr, i32 } [ %.pn, %21 ], [ %55, %54 ] +"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit": ; preds = %55, %21 + %.pn295 = phi { ptr, i32 } [ %.pn, %21 ], [ %56, %54 ] resume { ptr, i32 } %.pn295 -54: ; preds = %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" - %55 = landingpad { ptr, i32 } +55: ; preds = %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17ha63475f8fee48089E.exit.thread" + %56 = landingpad { ptr, i32 } cleanup invoke void @"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h61d184428ed25fc1E.llvm.10022686776672290337"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %52 + to label %"_ZN4core3ptr67drop_in_place$LT$alloc..rc..Weak$LT$markup5ever_rcdom..Node$GT$$GT$17h614a7f44b369244bE.exit" unwind label %53 -56: ; preds = %51, %0 +57: ; preds = %52, %0 %.sroa.3.0 = phi i64 [ %40, %51 ], [ undef, %0 ] - %57 = insertvalue { ptr, i64 } poison, ptr %7, 0 - %58 = insertvalue { ptr, i64 } %57, i64 %.sroa.3.0, 1 - ret { ptr, i64 } %58 + %58 = insertvalue { ptr, i64 } poison, ptr %7, 0 + %59 = insertvalue { ptr, i64 } %58, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %59 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/hwloc/optimized/topology.ll b/bench/hwloc/optimized/topology.ll index fcd75f6d10b..b1138d7f6b6 100644 --- a/bench/hwloc/optimized/topology.ll +++ b/bench/hwloc/optimized/topology.ll @@ -9419,28 +9419,28 @@ define internal fastcc void @propagate_total_memory(ptr noundef captures(none) i %35 = zext i32 %32 to i64 br label %37 -36: ; preds = %37 +35: ; preds = %36 %.not29.wide = icmp eq i64 %38, 0 br i1 %.not29.wide, label %._crit_edge45, label %37, !llvm.loop !221 -37: ; preds = %.lr.ph43, %36 +36: ; preds = %.lr.ph43, %35 %indvars.iv = phi i64 [ %35, %.lr.ph43 ], [ %38, %36 ] %38 = add nsw i64 %indvars.iv, -1 %39 = getelementptr inbounds nuw %struct.hwloc_memory_page_type_s, ptr %34, i64 %38 %40 = load i64, ptr %39, align 8, !tbaa !222 %.not30 = icmp eq i64 %40, 0 - br i1 %.not30, label %36, label %._crit_edge44, !llvm.loop !221 + br i1 %.not30, label %35, label %.split.loop.exit, !llvm.loop !221 -._crit_edge44: ; preds = %37 +.split.loop.exit: ; preds = %36 %41 = trunc nuw i64 %indvars.iv to i32 - br label %._crit_edge45, !llvm.loop !221 + br label %.split.loop.exit42, !llvm.loop !221 -._crit_edge45: ; preds = %36, %._crit_edge44, %26 +.split.loop.exit42: ; preds = %35, %.split.loop.exit, %26 %.0.lcssa = phi i32 [ %41, %._crit_edge44 ], [ 0, %26 ], [ 0, %36 ] store i32 %.0.lcssa, ptr %31, align 8, !tbaa !53 br label %42 -42: ; preds = %19, %._crit_edge45, %._crit_edge39 +42: ; preds = %19, %.split.loop.exit42, %._crit_edge39 ret void } diff --git a/bench/hyperscan/optimized/bad_patterns.ll b/bench/hyperscan/optimized/bad_patterns.ll index 320371c37d7..97a68bb26cc 100644 --- a/bench/hyperscan/optimized/bad_patterns.ll +++ b/bench/hyperscan/optimized/bad_patterns.ll @@ -10777,10 +10777,10 @@ define linkonce_odr hidden void @_ZN5boost9algorithm13trim_right_ifINSt7__cxx111 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #24 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %11 = load i16, ptr %4, align 8 - store i16 %11, ptr %3, align 8 - %12 = getelementptr inbounds nuw i8, ptr %3, i64 8 - call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %9) #24 + %12 = load i16, ptr %4, align 8 + store i16 %12, ptr %3, align 8 + %13 = getelementptr inbounds nuw i8, ptr %3, i64 8 + call void @_ZNSt6localeC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %9) #24 %.not10.i.i = icmp samesign eq i64 %7, 0 br i1 %.not10.i.i, label %.loopexit, label %.lr.ph.i.i.preheader @@ -10799,7 +10799,7 @@ define linkonce_odr hidden void @_ZN5boost9algorithm13trim_right_ifINSt7__cxx111 %17 = invoke noundef nonnull align 8 dereferenceable(570) ptr @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale(ptr noundef nonnull align 8 dereferenceable(8) %12) to label %.noexc.i unwind label %.body -.noexc.i: ; preds = %.lr.ph.i.i +14: ; preds = %.lr.ph.i.i %18 = load i16, ptr %3, align 8 %19 = getelementptr inbounds nuw i8, ptr %17, i64 48 %20 = load ptr, ptr %19, align 8 @@ -10810,27 +10810,27 @@ define linkonce_odr hidden void @_ZN5boost9algorithm13trim_right_ifINSt7__cxx111 %.not9.i.i = icmp eq i16 %24, 0 br i1 %.not9.i.i, label %._crit_edge.i.i, label %14, !llvm.loop !73 -._crit_edge.i.i: ; preds = %.noexc.i +15: ; preds = %14 br label %.loopexit, !llvm.loop !73 -.body: ; preds = %.lr.ph.i.i +.noexc.i: ; preds = %.lr.ph.i.i %25 = landingpad { ptr, i32 } cleanup - call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #24 + call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #24 call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #24 resume { ptr, i32 } %25 -.loopexit: ; preds = %14, %._crit_edge.i.i, %2 - %26 = phi ptr [ %.sroa.0.011.i.i, %._crit_edge.i.i ], [ %5, %2 ], [ %5, %14 ] - call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #24 +27: ; preds = %14, %15, %2 + %28 = phi ptr [ %.sroa.0.011.i.i, %._crit_edge.i.i ], [ %5, %2 ], [ %5, %14 ] + call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #24 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %27 = load ptr, ptr %0, align 8 - %28 = ptrtoint ptr %26 to i64 - %29 = ptrtoint ptr %27 to i64 - %30 = sub i64 %28, %29 - store i64 %30, ptr %6, align 8 - %31 = getelementptr inbounds nuw i8, ptr %27, i64 %30 - store i8 0, ptr %31, align 1 + %29 = load ptr, ptr %0, align 8 + %30 = ptrtoint ptr %28 to i64 + %31 = ptrtoint ptr %29 to i64 + %32 = sub i64 %30, %31 + store i64 %32, ptr %6, align 8 + %33 = getelementptr inbounds nuw i8, ptr %29, i64 %32 + store i8 0, ptr %33, align 1 call void @_ZNSt6localeD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #24 ret void } diff --git a/bench/icu/optimized/dtfmtsym.ll b/bench/icu/optimized/dtfmtsym.ll index 42f33853e59..16e35af9d12 100644 --- a/bench/icu/optimized/dtfmtsym.ll +++ b/bench/icu/optimized/dtfmtsym.ll @@ -11523,35 +11523,35 @@ define noundef signext range(i8 0, 2) i8 @_ZN6icu_7717DateFormatSymbols12arrayCo %4 = icmp ne ptr %0, %1 %5 = icmp sgt i32 %2, 0 %or.cond = and i1 %4, %5 - br i1 %or.cond, label %.lr.ph.preheader, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread + br i1 %or.cond, label %.lr.ph, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread -.lr.ph.preheader: ; preds = %3 +.lr.ph: ; preds = %3 %6 = zext nneg i32 %2 to i64 - br label %.lr.ph + br label %7 7: ; preds = %14, %_ZNK6icu_7713UnicodeStringneERKS0_.exit %8 = icmp samesign ugt i64 %indvars.iv, 1 br i1 %8, label %.lr.ph, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, !llvm.loop !156 -.lr.ph: ; preds = %.lr.ph.preheader, %7 - %indvars.iv = phi i64 [ %6, %.lr.ph.preheader ], [ %indvars.iv.next, %7 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %9 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %0, i64 %indvars.iv.next - %10 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %1, i64 %indvars.iv.next +7: ; preds = %.lr.ph.preheader, %7 + %indvars.iv14 = phi i64 [ %6, %.lr.ph.preheader ], [ %8, %7 ] + %8 = add nsw i64 %indvars.iv14, -1 + %9 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %0, i64 %8 + %10 = getelementptr inbounds nuw %"class.icu_77::UnicodeString", ptr %1, i64 %8 %11 = getelementptr inbounds nuw i8, ptr %9, i64 8 %12 = load i16, ptr %11, align 8, !tbaa !23 %13 = and i16 %12, 1 %.not.i.i = icmp eq i16 %13, 0 br i1 %.not.i.i, label %18, label %14 -14: ; preds = %.lr.ph +14: ; preds = %7 %15 = getelementptr inbounds nuw i8, ptr %10, i64 8 %16 = load i16, ptr %15, align 8, !tbaa !23 %17 = and i16 %16, 1 %.not = icmp eq i16 %17, 0 br i1 %.not, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, label %7, !llvm.loop !156 -18: ; preds = %.lr.ph +18: ; preds = %7 %19 = icmp slt i16 %12, 0 %20 = ashr i16 %12, 5 %21 = sext i16 %20 to i32 @@ -11580,13 +11580,13 @@ _ZNK6icu_7713UnicodeStringneERKS0_.exit: ; preds = %18 %38 = load ptr, ptr %37, align 8 %39 = select i1 %.not.i.i.i.i, ptr %38, ptr %36 %40 = tail call noundef signext i8 @_ZNK6icu_7713UnicodeString8doEqualsEPKDsi(ptr noundef nonnull align 8 dereferenceable(64) %9, ptr noundef %39, i32 noundef %24) - %.not18 = icmp eq i8 %40, 0 - br i1 %.not18, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, label %7, !llvm.loop !156 + %.not13 = icmp eq i8 %40, 0 + br i1 %.not13, label %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, label %7, !llvm.loop !156 -_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge: ; preds = %14, %_ZNK6icu_7713UnicodeStringneERKS0_.exit +.preheader.backedge: ; preds = %14, %_ZNK6icu_7713UnicodeStringneERKS0_.exit br label %_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread, !llvm.loop !156 -_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread: ; preds = %7, %18, %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge, %3 +_ZNK6icu_7713UnicodeStringneERKS0_.exit.thread: ; preds = %7, %18, %.preheader.backedge, %3 %.08 = phi i8 [ 1, %3 ], [ 0, %_ZNK6icu_7713UnicodeStringneERKS0_.exit._ZNK6icu_7713UnicodeStringneERKS0_.exit.thread.loopexit_crit_edge ], [ 1, %7 ], [ 0, %18 ] ret i8 %.08 } diff --git a/bench/icu/optimized/strrepl.ll b/bench/icu/optimized/strrepl.ll index 635b2e430e9..9a226089fb1 100644 --- a/bench/icu/optimized/strrepl.ll +++ b/bench/icu/optimized/strrepl.ll @@ -1192,7 +1192,7 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 64, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) to label %28 unwind label %.loopexit.split-lp.loopexit, !llvm.loop !33 -.loopexit: ; preds = %.lr.ph69 +.loopexit: ; preds = %103 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -1202,7 +1202,7 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %105, %._crit_edge70 +.loopexit.split-lp.loopexit.split-lp: ; preds = %106, %105 %lpad.loopexit.split-lp59 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -1234,7 +1234,7 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 %.not = icmp ne i8 %44, 0 %45 = icmp sgt i32 %.0, %.lcssa %or.cond54 = select i1 %.not, i1 %45, i1 false - br i1 %or.cond54, label %99, label %105 + br i1 %or.cond54, label %99, label %106 46: ; preds = %53 %47 = landingpad { ptr, i32 } @@ -1255,13 +1255,13 @@ _ZN6icu_7713UnicodeString8truncateEi.exit: ; preds = %11, %12, %19 invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 124, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) to label %._crit_edge74 unwind label %46 -._crit_edge74: ; preds = %53 +._crit_edge71: ; preds = %53 %.pre = load i16, ptr %30, align 8, !tbaa !17 - %.pre75 = load i32, ptr %31, align 4 + %.pre72 = load i32, ptr %31, align 4 br label %54 -54: ; preds = %._crit_edge74, %48 - %55 = phi i32 [ %.pre75, %._crit_edge74 ], [ %49, %48 ] +54: ; preds = %._crit_edge71, %48 + %55 = phi i32 [ %.pre72, %._crit_edge74 ], [ %49, %48 ] %56 = phi i16 [ %.pre, %._crit_edge74 ], [ %50, %48 ] %57 = icmp slt i16 %56, 0 %58 = ashr i16 %56, 5 @@ -1357,25 +1357,25 @@ _ZNK6icu_7713UnicodeString6charAtEi.exit: ; preds = %63, %54 %101 = icmp sgt i32 %100, 0 br i1 %101, label %.lr.ph69, label %._crit_edge70 -102: ; preds = %.lr.ph69 +101: ; preds = %103 %103 = add nsw i32 %.267, -1 - %104 = icmp sgt i32 %.267, 1 - br i1 %104, label %.lr.ph69, label %._crit_edge70, !llvm.loop !37 + %102 = icmp sgt i32 %.267, 1 + br i1 %102, label %103, label %105, !llvm.loop !37 -.lr.ph69: ; preds = %99, %102 +103: ; preds = %99, %101 %.267 = phi i32 [ %103, %102 ], [ %100, %99 ] invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 64, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) to label %102 unwind label %.loopexit, !llvm.loop !37 -._crit_edge70: ; preds = %102, %99 +105: ; preds = %101, %99 invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef 124, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) to label %105 unwind label %.loopexit.split-lp.loopexit.split-lp -105: ; preds = %._crit_edge70, %._crit_edge +106: ; preds = %105, %._crit_edge invoke void @_ZN6icu_7711ICU_Utility12appendToRuleERNS_13UnicodeStringEiaaS2_(ptr noundef nonnull align 8 dereferenceable(64) %1, i32 noundef -1, i8 noundef signext 1, i8 noundef signext %2, ptr noundef nonnull align 8 dereferenceable(64) %6) to label %106 unwind label %.loopexit.split-lp.loopexit.split-lp -106: ; preds = %105 +107: ; preds = %106 call void @_ZN6icu_7713UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #17 call void @llvm.lifetime.end.p0(ptr nonnull %6) ret ptr %1 diff --git a/bench/icu/optimized/ucnvlat1.ll b/bench/icu/optimized/ucnvlat1.ll index 4e36823892a..c6ad149bc9b 100644 --- a/bench/icu/optimized/ucnvlat1.ll +++ b/bench/icu/optimized/ucnvlat1.ll @@ -688,18 +688,18 @@ define internal void @_ZL19ucnv_Latin1FromUTF8P25UConverterFromUnicodeArgsP23UCo 46: ; preds = %41, %.thread %.073 = phi ptr [ %9, %.thread ], [ %spec.select, %41 ] %47 = icmp ult ptr %.074, %.073 - br i1 %47, label %.lr.ph.preheader, label %.loopexit + br i1 %47, label %.lr.ph, label %.loopexit -.lr.ph.preheader: ; preds = %46 +.lr.ph: ; preds = %46 %48 = icmp sgt i32 %.069, 0 br i1 %48, label %.lr.ph126, label %.loopexit.thread -.lr.ph: ; preds = %63 +.lr.ph:; preds = %63 %.2 = add nsw i32 %.198123, -1 %49 = icmp sgt i32 %.198123, 1 br i1 %49, label %.lr.ph126, label %.loopexit.thread, !llvm.loop !52 -.lr.ph126: ; preds = %.lr.ph.preheader, %.lr.ph +.lr.ph126:; preds = %.lr.ph.preheader, %.lr.ph %.17596125 = phi ptr [ %.276, %.lr.ph ], [ %.074, %.lr.ph.preheader ] %.17197124 = phi ptr [ %.272, %.lr.ph ], [ %.070, %.lr.ph.preheader ] %.198123 = phi i32 [ %.2, %.lr.ph ], [ %.069, %.lr.ph.preheader ] @@ -730,7 +730,7 @@ define internal void @_ZL19ucnv_Latin1FromUTF8P25UConverterFromUnicodeArgsP23UCo store i32 -127, ptr %2, align 4, !tbaa !17 br label %89 -.loopexit.thread: ; preds = %.lr.ph, %.lr.ph.preheader +.loopexit.thread: ; preds = %.lr.ph, %.lr.ph %.17197.lcssa = phi ptr [ %.070, %.lr.ph.preheader ], [ %.272, %.lr.ph ] %.17596.lcssa = phi ptr [ %.074, %.lr.ph.preheader ], [ %.276, %.lr.ph ] store i32 15, ptr %2, align 4, !tbaa !17 diff --git a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll index 81c915cc4ab..b102bb2e2d0 100644 --- a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll +++ b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll @@ -8318,7 +8318,7 @@ define internal fastcc void @"_ZN4core3ptr209drop_in_place$LT$alloc..vec..in_pla 16: ; preds = %11 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !2646 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(1696) %12) - to label %.noexc.i.i unwind label %27, !noalias !2636 + to label %.noexc.i.i unwind label %26, !noalias !2636 .noexc.i.i: ; preds = %16 %17 = load i64, ptr %9, align 8, !range !195, !noalias !2646, !noundef !24 @@ -8343,24 +8343,24 @@ define internal fastcc void @"_ZN4core3ptr209drop_in_place$LT$alloc..vec..in_pla %23 = icmp eq i64 %13, %7 br i1 %23, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$u5d$$GT$17h974a40a44948b633E.exit.i", label %11 -24: ; preds = %.lr.ph10.i.i +24: ; preds = %28 %25 = add i64 %.18.i.i, 1 - %26 = icmp eq i64 %25, %7 - br i1 %26, label %.body.i, label %.lr.ph10.i.i + %25 = icmp eq i64 %25, %7 + br i1 %25, label %.body.i, label %28 -27: ; preds = %16 - %28 = landingpad { ptr, i32 } +26: ; preds = %16 + %27 = landingpad { ptr, i32 } cleanup %29 = icmp eq i64 %13, %7 br i1 %29, label %.body.i, label %.lr.ph10.i.i -.lr.ph10.i.i: ; preds = %27, %24 +28: ; preds = %27, %24 %.18.i.i = phi i64 [ %25, %24 ], [ %13, %27 ] %30 = getelementptr inbounds { i64, [211 x i64] }, ptr %3, i64 %.18.i.i - invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %30) #36 + invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %29) #36 to label %24 unwind label %31, !noalias !2636 -31: ; preds = %.lr.ph10.i.i +31: ; preds = %28 %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38, !noalias !2636 @@ -8385,7 +8385,7 @@ define internal fastcc void @"_ZN4core3ptr209drop_in_place$LT$alloc..vec..in_pla br label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3792507d0b422f15E.exit" "_ZN4core3ptr114drop_in_place$LT$alloc..raw_vec..RawVec$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$$GT$17hf7eb6ff8abf4c226E.exit.i": ; preds = %34, %.body.i - resume { ptr, i32 } %28 + resume { ptr, i32 } %27 "_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3792507d0b422f15E.exit": ; preds = %"_ZN4core3ptr94drop_in_place$LT$$u5b$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$u5d$$GT$17h974a40a44948b633E.exit.i", %37 ret void @@ -17021,7 +17021,7 @@ define internal fastcc void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32fo 19: ; preds = %14 call void @llvm.lifetime.start.p0(ptr nonnull %1), !noalias !4633 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(1696) %15) - to label %.noexc.i unwind label %30 + to label %.noexc.i unwind label %29 .noexc.i: ; preds = %19 %20 = load i64, ptr %12, align 8, !range !195, !noalias !4633, !noundef !24 @@ -17046,28 +17046,28 @@ define internal fastcc void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32fo %26 = icmp eq i64 %16, %9 br i1 %26, label %"_ZN4core3ptr94drop_in_place$LT$$u5b$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$u5d$$GT$17h974a40a44948b633E.exit", label %14 -27: ; preds = %.lr.ph10.i +27: ; preds = %31 %28 = add i64 %.18.i, 1 - %29 = icmp eq i64 %28, %9 - br i1 %29, label %._crit_edge11.i, label %.lr.ph10.i + %28 = icmp eq i64 %28, %9 + br i1 %28, label %34, label %31 -30: ; preds = %19 - %31 = landingpad { ptr, i32 } +29: ; preds = %19 + %30 = landingpad { ptr, i32 } cleanup %32 = icmp eq i64 %16, %9 br i1 %32, label %._crit_edge11.i, label %.lr.ph10.i -.lr.ph10.i: ; preds = %30, %27 +31: ; preds = %30, %27 %.18.i = phi i64 [ %28, %27 ], [ %16, %30 ] %33 = getelementptr inbounds { i64, [211 x i64] }, ptr %3, i64 %.18.i invoke fastcc void @"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$jpeg_decoder..huffman..HuffmanTable$GT$$GT$17h101ce017190f621aE"(ptr noalias noundef align 8 dereferenceable(1696) %33) #36 - to label %27 unwind label %34 + to label %27 unwind label %35 -._crit_edge11.i: ; preds = %27, %30 - resume { ptr, i32 } %31 +34: ; preds = %27, %30 + resume { ptr, i32 } %30 -34: ; preds = %.lr.ph10.i - %35 = landingpad { ptr, i32 } +35: ; preds = %31 + %36 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38 unreachable diff --git a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll index 583c8b61597..e0d53d01332 100644 --- a/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll +++ b/bench/jiff-rs/optimized/cmx6hhjrcd3p6b6iy0x7tpo76.ll @@ -1405,35 +1405,35 @@ define internal fastcc void @"_ZN4core3ptr130drop_in_place$LT$alloc..vec..in_pla %9 = icmp eq i64 %8, 0 br i1 %9, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit", label %.lr.ph.i.i -10: ; preds = %.lr.ph.i.i +9: ; preds = %11 %11 = icmp eq i64 %13, %8 br i1 %11, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit", label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %1, %10 +11: ; preds = %1, %9 %.sroa.0.07.i.i = phi i64 [ %13, %10 ], [ 0, %1 ] %12 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, {} }, ptr %3, i64 %.sroa.0.07.i.i %13 = add nuw i64 %.sroa.0.07.i.i, 1 invoke void @"_ZN4core3ptr47drop_in_place$LT$jiff..tz..db..TimeZoneName$GT$17ha2a7616aec938893E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12) - to label %10 unwind label %17, !noalias !204 + to label %10 unwind label %16, !noalias !204 -14: ; preds = %.lr.ph10.i.i +14: ; preds = %18 %15 = add i64 %.sroa.0.18.i.i, 1 - %16 = icmp eq i64 %15, %8 - br i1 %16, label %.body.i, label %.lr.ph10.i.i + %15 = icmp eq i64 %15, %8 + br i1 %15, label %.body.i, label %18 -17: ; preds = %.lr.ph.i.i - %18 = landingpad { ptr, i32 } +16: ; preds = %11 + %17 = landingpad { ptr, i32 } cleanup %19 = icmp eq i64 %13, %8 br i1 %19, label %.body.i, label %.lr.ph10.i.i -.lr.ph10.i.i: ; preds = %17, %14 +18: ; preds = %17, %14 %.sroa.0.18.i.i = phi i64 [ %15, %14 ], [ %13, %17 ] %20 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } }, {} }, ptr %3, i64 %.sroa.0.18.i.i invoke void @"_ZN4core3ptr47drop_in_place$LT$jiff..tz..db..TimeZoneName$GT$17ha2a7616aec938893E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %20) #23 to label %14 unwind label %21, !noalias !204 -21: ; preds = %.lr.ph10.i.i +21: ; preds = %18 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !204 @@ -1450,9 +1450,9 @@ define internal fastcc void @"_ZN4core3ptr130drop_in_place$LT$alloc..vec..in_pla unreachable 25: ; preds = %.body.i - resume { ptr, i32 } %18 + resume { ptr, i32 } %17 -"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit": ; preds = %10, %1 +"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd9d259a45acd4de1E.exit": ; preds = %9, %1 call void @"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17h0ef43960d3ec0807E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2), !noalias !204 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !204 ret void @@ -1504,7 +1504,7 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla store i64 %22, ptr %11, align 8, !noalias !224 store ptr %23, ptr %12, align 8, !noalias !224 invoke void @"_ZN4core3ptr76drop_in_place$LT$alloc..sync..Weak$LT$str$C$$RF$alloc..alloc..Global$GT$$GT$17ha1778cbf2f495b48E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) - to label %.noexc.i.i unwind label %28, !noalias !207 + to label %.noexc.i.i unwind label %27, !noalias !207 .noexc.i.i: ; preds = %19 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !224 @@ -1514,24 +1514,24 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla %24 = icmp eq i64 %15, %9 br i1 %24, label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef5ffd2c8cbe3f09E.exit", label %13 -25: ; preds = %.lr.ph10.i.i +25: ; preds = %29 %26 = add i64 %.sroa.0.18.i.i, 1 - %27 = icmp eq i64 %26, %9 - br i1 %27, label %.body.i, label %.lr.ph10.i.i + %26 = icmp eq i64 %26, %9 + br i1 %26, label %.body.i, label %29 -28: ; preds = %19 - %29 = landingpad { ptr, i32 } +27: ; preds = %19 + %28 = landingpad { ptr, i32 } cleanup %30 = icmp eq i64 %15, %9 br i1 %30, label %.body.i, label %.lr.ph10.i.i -.lr.ph10.i.i: ; preds = %28, %25 +29: ; preds = %28, %25 %.sroa.0.18.i.i = phi i64 [ %26, %25 ], [ %15, %28 ] %31 = getelementptr inbounds nuw { { { ptr, i64 } }, {}, {} }, ptr %4, i64 %.sroa.0.18.i.i invoke fastcc void @"_ZN4core3ptr48drop_in_place$LT$alloc..sync..Arc$LT$str$GT$$GT$17h814064097ab838ceE"(ptr noalias noundef align 8 dereferenceable(16) %31) #23 to label %25 unwind label %32, !noalias !207 -32: ; preds = %.lr.ph10.i.i +32: ; preds = %29 %33 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !207 @@ -1548,7 +1548,7 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla unreachable 36: ; preds = %.body.i - resume { ptr, i32 } %29 + resume { ptr, i32 } %28 "_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef5ffd2c8cbe3f09E.exit": ; preds = %"_ZN4core3ptr48drop_in_place$LT$alloc..sync..Arc$LT$str$GT$$GT$17h814064097ab838ceE.exit.i.i", %1 call void @"_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17h0ef43960d3ec0807E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3), !noalias !207 diff --git a/bench/jq/optimized/big5.ll b/bench/jq/optimized/big5.ll index 343bc51e46e..155305def3d 100644 --- a/bench/jq/optimized/big5.ll +++ b/bench/jq/optimized/big5.ll @@ -84,46 +84,46 @@ define internal ptr @big5_left_adjust_char_head(ptr noundef readnone captures(ad %3 = ptrtoint ptr %1 to i64 %4 = ptrtoint ptr %0 to i64 %.not = icmp ugt ptr %1, %0 - br i1 %.not, label %5, label %27 + br i1 %.not, label %3, label %27 -5: ; preds = %2 - %6 = load i8, ptr %1, align 1, !tbaa !4 - %7 = zext i8 %6 to i64 - %8 = getelementptr inbounds nuw i8, ptr @BIG5_CAN_BE_TRAIL_TABLE, i64 %7 - %9 = load i8, ptr %8, align 1, !tbaa !4 - %.not24.not = icmp eq i8 %9, 0 - br i1 %.not24.not, label %.loopexit, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %5 +3: ; preds = %2 + %4 = load i8, ptr %1, align 1, !tbaa !4 + %5 = zext i8 %4 to i64 + %6 = getelementptr inbounds nuw i8, ptr @BIG5_CAN_BE_TRAIL_TABLE, i64 %5 + %7 = load i8, ptr %6, align 1, !tbaa !4 + %.not24 = icmp eq i8 %7, 0 + br i1 %.not24, label %.loopexit, label %.preheader + +.preheader: ; preds = %3 %10 = sub i64 %4, %3 %scevgep = getelementptr i8, ptr %1, i64 %10 br label %.lr.ph -11: ; preds = %.lr.ph +9: ; preds = %.lr.ph %12 = icmp ugt ptr %13, %0 br i1 %12, label %.lr.ph, label %.loopexit, !llvm.loop !9 -.lr.ph: ; preds = %.lr.ph.preheader, %11 +.lr.ph:; preds = %.preheader, %9 %.125 = phi ptr [ %13, %11 ], [ %1, %.lr.ph.preheader ] %13 = getelementptr inbounds i8, ptr %.125, i64 -1 %14 = load i8, ptr %13, align 1, !tbaa !4 %15 = add i8 %14, 95 %16 = icmp ult i8 %15, 94 - br i1 %16, label %11, label %..loopexit_crit_edge26, !llvm.loop !9 + br i1 %16, label %9, label %..loopexit_crit_edge26, !llvm.loop !9 -..loopexit_crit_edge26: ; preds = %.lr.ph +..loopexit_crit_edge26:; preds = %.lr.ph br label %.loopexit, !llvm.loop !9 .loopexit: ; preds = %11, %..loopexit_crit_edge26, %5 %.019 = phi ptr [ %1, %5 ], [ %.125, %..loopexit_crit_edge26 ], [ %scevgep, %11 ] - %17 = load ptr, ptr @OnigEncodingBIG5, align 8, !tbaa !11 + %17 = load ptr, ptr @OnigEncodingBIG5, align 8, !tbaa !9 %18 = tail call i32 %17(ptr noundef nonnull %.019) #5 %19 = sext i32 %18 to i64 %20 = getelementptr inbounds i8, ptr %.019, i64 %19 %21 = icmp ugt ptr %20, %1 - br i1 %21, label %27, label %22 + br i1 %21, label %27, label %25 -22: ; preds = %.loopexit +25: ; preds = %.loopexit %23 = ptrtoint ptr %20 to i64 %24 = sub i64 %3, %23 %25 = and i64 %24, -2 diff --git a/bench/jq/optimized/regenc.ll b/bench/jq/optimized/regenc.ll index e7dd65c1e9b..6a9ddf61bed 100644 --- a/bench/jq/optimized/regenc.ll +++ b/bench/jq/optimized/regenc.ll @@ -397,7 +397,7 @@ define dso_local ptr @onigenc_step_back(ptr noundef readonly captures(none) %0, %6 = icmp sgt i32 %3, 0 br i1 %6, label %.lr.ph22, label %.critedge -7: ; preds = %10 +7: ; preds = %10 %8 = add nsw i32 %.in, -1 %9 = icmp sgt i32 %.in, 1 br i1 %9, label %.lr.ph22, label %.critedge, !llvm.loop !28 diff --git a/bench/libcxx/optimized/valarray.ll b/bench/libcxx/optimized/valarray.ll index e81c830e4cb..f9d36b1d30c 100644 --- a/bench/libcxx/optimized/valarray.ll +++ b/bench/libcxx/optimized/valarray.ll @@ -271,63 +271,63 @@ _ZNSt3__18valarrayImE6resizeEmm.exit: ; preds = %.noexc32, %_ZNSt3__ br label %.split, !llvm.loop !16 .split: ; preds = %.split.loopexit, %42 - %.1 = phi i64 [ 0, %42 ], [ %60, %.split.loopexit ] - %56 = load i64, ptr %51, align 8, !tbaa !10 - %57 = add i64 %56, 1 - store i64 %57, ptr %51, align 8, !tbaa !10 - %58 = load i64, ptr %phi.call3037, align 8, !tbaa !10 - %59 = icmp ult i64 %57, %58 - br i1 %59, label %._crit_edge40, label %.lr.ph39.preheader + %.1 = phi i64 [ 0, %42 ], [ %59, %.split.loopexit ] + %55 = load i64, ptr %51, align 8, !tbaa !10 + %56 = add i64 %55, 1 + store i64 %56, ptr %51, align 8, !tbaa !10 + %57 = load i64, ptr %phi.call3037, align 8, !tbaa !10 + %58 = icmp ult i64 %56, %57 + br i1 %58, label %._crit_edge40, label %.lr.ph39.preheader .lr.ph39.preheader: ; preds = %.split br i1 %55, label %.thread, label %.split29 ._crit_edge40: ; preds = %.split29, %.split - %.025.lcssa = phi i64 [ %50, %.split ], [ %75, %.split29 ] - %60 = add i64 %.1, 1 - %61 = getelementptr inbounds nuw i64, ptr %40, i64 %.1 - %62 = load i64, ptr %61, align 8, !tbaa !10 - %63 = getelementptr inbounds nuw i64, ptr %54, i64 %.025.lcssa - %64 = load i64, ptr %63, align 8, !tbaa !10 - %65 = add i64 %64, %62 - %66 = getelementptr inbounds nuw i64, ptr %40, i64 %60 - store i64 %65, ptr %66, align 8, !tbaa !10 + %.025.lcssa = phi i64 [ %50, %.split ], [ %74, %.split29 ] + %59 = add i64 %.1, 1 + %60 = getelementptr inbounds nuw i64, ptr %40, i64 %.1 + %61 = load i64, ptr %60, align 8, !tbaa !10 + %62 = getelementptr inbounds nuw i64, ptr %54, i64 %.025.lcssa + %63 = load i64, ptr %62, align 8, !tbaa !10 + %64 = add i64 %63, %61 + %65 = getelementptr inbounds nuw i64, ptr %40, i64 %59 + store i64 %64, ptr %65, align 8, !tbaa !10 %.02442 = add i64 %.025.lcssa, 1 %.not3143 = icmp eq i64 %.02442, %49 br i1 %.not3143, label %.split.loopexit, label %.lr.ph47 .lr.ph47: ; preds = %._crit_edge40, %.lr.ph47 %.02445 = phi i64 [ %.024, %.lr.ph47 ], [ %.02442, %._crit_edge40 ] - %storemerge44 = phi i64 [ %73, %.lr.ph47 ], [ %65, %._crit_edge40 ] - %67 = getelementptr inbounds nuw i64, ptr %54, i64 %.02445 - %68 = load i64, ptr %67, align 8, !tbaa !10 - %69 = getelementptr inbounds nuw i64, ptr %52, i64 %.02445 - %70 = load i64, ptr %69, align 8, !tbaa !10 - %71 = add i64 %70, -1 - %72 = mul i64 %71, %68 - %73 = sub i64 %storemerge44, %72 - store i64 %73, ptr %66, align 8, !tbaa !10 + %storemerge44 = phi i64 [ %72, %.lr.ph47 ], [ %64, %._crit_edge40 ] + %66 = getelementptr inbounds nuw i64, ptr %54, i64 %.02445 + %67 = load i64, ptr %66, align 8, !tbaa !10 + %68 = getelementptr inbounds nuw i64, ptr %52, i64 %.02445 + %69 = load i64, ptr %68, align 8, !tbaa !10 + %70 = add i64 %69, -1 + %71 = mul i64 %70, %67 + %72 = sub i64 %storemerge44, %71 + store i64 %72, ptr %65, align 8, !tbaa !10 %.024 = add i64 %.02445, 1 %.not31 = icmp eq i64 %.024, %49 br i1 %.not31, label %.split.loopexit, label %.lr.ph47, !llvm.loop !17 .lr.ph39: ; preds = %.split29 - %74 = icmp eq i64 %75, 0 + %74 = icmp eq i64 %74, 0 br i1 %74, label %.thread, label %.split29, !llvm.loop !18 .split29: ; preds = %.lr.ph39.preheader, %.lr.ph39 %.0253857 = phi i64 [ %75, %.lr.ph39 ], [ %50, %.lr.ph39.preheader ] - %75 = add i64 %.0253857, -1 - %76 = getelementptr inbounds nuw i64, ptr %45, i64 %.0253857 - store i64 0, ptr %76, align 8, !tbaa !10 - %77 = getelementptr inbounds nuw i64, ptr %45, i64 %75 - %78 = load i64, ptr %77, align 8, !tbaa !10 - %79 = add i64 %78, 1 - store i64 %79, ptr %77, align 8, !tbaa !10 - %phi.call30 = getelementptr inbounds nuw i64, ptr %52, i64 %75 - %80 = load i64, ptr %phi.call30, align 8, !tbaa !10 - %81 = icmp ult i64 %79, %80 - br i1 %81, label %._crit_edge40, label %.lr.ph39, !llvm.loop !18 + %74 = add i64 %.0253857, -1 + %75 = getelementptr inbounds nuw i64, ptr %45, i64 %.0253857 + store i64 0, ptr %75, align 8, !tbaa !10 + %76 = getelementptr inbounds nuw i64, ptr %45, i64 %74 + %77 = load i64, ptr %76, align 8, !tbaa !10 + %78 = add i64 %77, 1 + store i64 %78, ptr %76, align 8, !tbaa !10 + %phi.call30 = getelementptr inbounds nuw i64, ptr %52, i64 %74 + %79 = load i64, ptr %phi.call30, align 8, !tbaa !10 + %80 = icmp ult i64 %78, %79 + br i1 %80, label %._crit_edge40, label %.lr.ph39, !llvm.loop !18 .thread: ; preds = %.lr.ph39.preheader, %.lr.ph39, %_ZNSt3__18valarrayImE6resizeEmm.exit call void @_ZNSt3__18valarrayImED1Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #13 diff --git a/bench/libevent/optimized/event.ll b/bench/libevent/optimized/event.ll index d2bee6fe759..2ede725869e 100644 --- a/bench/libevent/optimized/event.ll +++ b/bench/libevent/optimized/event.ll @@ -1561,16 +1561,16 @@ define hidden void @event_disable_debug_mode() local_unnamed_addr #0 { br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %event_mm_free_.exit - %.017 = phi ptr [ %.015.i, %event_mm_free_.exit ], [ %12, %.lr.ph.preheader ] - %13 = load ptr, ptr %.017, align 8 + %.016 = phi ptr [ %.015.i, %event_mm_free_.exit ], [ %12, %.lr.ph.preheader ] + %13 = load ptr, ptr %.016, align 8 %14 = getelementptr i8, ptr %13, i64 8 %.val.i = load ptr, ptr %14, align 8 %15 = load ptr, ptr %13, align 8 - store ptr %15, ptr %.017, align 8 + store ptr %15, ptr %.016, align 8 %16 = load i32, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 12), align 4 %17 = add i32 %16, -1 store i32 %17, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 12), align 4 - %18 = load ptr, ptr %.017, align 8 + %18 = load ptr, ptr %.016, align 8 %.not.i8 = icmp eq ptr %18, null br i1 %.not.i8, label %19, label %event_debug_map_HT_NEXT_RMV.exit @@ -1590,71 +1590,71 @@ define hidden void @event_disable_debug_mode() local_unnamed_addr #0 { %28 = zext i32 %23 to i64 br label %31 -29: ; preds = %31 +26: ; preds = %28 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %30 = icmp samesign ult i64 %indvars.iv.next, %28 br i1 %30, label %31, label %event_debug_map_HT_NEXT_RMV.exit, !llvm.loop !16 -31: ; preds = %29, %.lr.ph.i9 +28: ; preds = %26, %.lr.ph.i9 %indvars.iv = phi i64 [ %indvars.iv.next, %29 ], [ %27, %.lr.ph.i9 ] - %32 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv - %33 = load ptr, ptr %32, align 8 - %.not16.i = icmp eq ptr %33, null - br i1 %.not16.i, label %29, label %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, !llvm.loop !16 + %30 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv + %31 = load ptr, ptr %30, align 8 + %.not16.i = icmp eq ptr %31, null + br i1 %.not16.i, label %26, label %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, !llvm.loop !16 -event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit: ; preds = %31 - %34 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv +event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit: ; preds = %28 + %32 = getelementptr inbounds nuw ptr, ptr %26, i64 %indvars.iv br label %event_debug_map_HT_NEXT_RMV.exit -event_debug_map_HT_NEXT_RMV.exit: ; preds = %29, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, %.lr.ph, %19 - %.015.i = phi ptr [ %.017, %.lr.ph ], [ null, %19 ], [ %34, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit ], [ null, %29 ] - %35 = load ptr, ptr @mm_free_fn_, align 8 - %.not.i10 = icmp eq ptr %35, null - br i1 %.not.i10, label %37, label %36 +event_debug_map_HT_NEXT_RMV.exit: ; preds = %26, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit, %.lr.ph, %19 + %.015.i = phi ptr [ %.016, %.lr.ph ], [ null, %19 ], [ %32, %event_debug_map_HT_NEXT_RMV.exit.loopexit.split.loop.exit ], [ null, %29 ] + %33 = load ptr, ptr @mm_free_fn_, align 8 + %.not.i9 = icmp eq ptr %33, null + br i1 %.not.i9, label %35, label %34 -36: ; preds = %event_debug_map_HT_NEXT_RMV.exit +34: ; preds = %event_debug_map_HT_NEXT_RMV.exit tail call void %35(ptr noundef nonnull %13) #26 br label %event_mm_free_.exit -37: ; preds = %event_debug_map_HT_NEXT_RMV.exit +35: ; preds = %event_debug_map_HT_NEXT_RMV.exit tail call void @free(ptr noundef %13) #26 br label %event_mm_free_.exit -event_mm_free_.exit: ; preds = %36, %37 +event_mm_free_.exit: ; preds = %34, %35 %.not6 = icmp eq ptr %.015.i, null br i1 %.not6, label %._crit_edge, label %.lr.ph, !llvm.loop !17 ._crit_edge: ; preds = %8, %event_mm_free_.exit, %5 - %38 = load ptr, ptr @global_debug_map, align 8 - %.not.i11 = icmp eq ptr %38, null - br i1 %.not.i11, label %event_debug_map_HT_CLEAR.exit, label %39 + %36 = load ptr, ptr @global_debug_map, align 8 + %.not.i10 = icmp eq ptr %36, null + br i1 %.not.i10, label %event_debug_map_HT_CLEAR.exit, label %37 -39: ; preds = %._crit_edge - %40 = load ptr, ptr @mm_free_fn_, align 8 - %.not.i.i = icmp eq ptr %40, null - br i1 %.not.i.i, label %42, label %41 +37: ; preds = %._crit_edge + %38 = load ptr, ptr @mm_free_fn_, align 8 + %.not.i.i = icmp eq ptr %38, null + br i1 %.not.i.i, label %40, label %39 -41: ; preds = %39 - tail call void %40(ptr noundef nonnull %38) #26 +39: ; preds = %37 + tail call void %40(ptr noundef nonnull %36) #26 br label %event_debug_map_HT_CLEAR.exit -42: ; preds = %39 - tail call void @free(ptr noundef nonnull %38) #26 +40: ; preds = %37 + tail call void @free(ptr noundef nonnull %36) #26 br label %event_debug_map_HT_CLEAR.exit -event_debug_map_HT_CLEAR.exit: ; preds = %._crit_edge, %41, %42 +event_debug_map_HT_CLEAR.exit: ; preds = %._crit_edge, %39, %40 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) @global_debug_map, i8 0, i64 20, i1 false) store i32 -1, ptr getelementptr inbounds nuw (i8, ptr @global_debug_map, i64 20), align 4 - %43 = load ptr, ptr @event_debug_map_lock_, align 8 - %.not7 = icmp eq ptr %43, null - br i1 %.not7, label %47, label %44 + %41 = load ptr, ptr @event_debug_map_lock_, align 8 + %.not7 = icmp eq ptr %41, null + br i1 %.not7, label %45, label %42 -44: ; preds = %event_debug_map_HT_CLEAR.exit - %45 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %46 = tail call i32 %45(i32 noundef 0, ptr noundef nonnull %43) #26 - br label %47 +42: ; preds = %event_debug_map_HT_CLEAR.exit + %43 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 + %44 = tail call i32 %45(i32 noundef 0, ptr noundef nonnull %41) #26 + br label %45 -47: ; preds = %44, %event_debug_map_HT_CLEAR.exit +45: ; preds = %42, %event_debug_map_HT_CLEAR.exit store i32 0, ptr @event_debug_mode_on_, align 4 ret void } diff --git a/bench/libevent/optimized/http.ll b/bench/libevent/optimized/http.ll index 4b2d431eff9..9171d765682 100644 --- a/bench/libevent/optimized/http.ll +++ b/bench/libevent/optimized/http.ll @@ -7775,19 +7775,19 @@ evhttp_find_header.exit: ; preds = %12 %.03054 = getelementptr i8, ptr %22, i64 -1 br label %.lr.ph -23: ; preds = %.lr.ph +22: ; preds = %24 %.030 = getelementptr inbounds i8, ptr %.03055, i64 -1 %24 = icmp ugt ptr %.030, %18 br i1 %24, label %.lr.ph, label %.critedge45, !llvm.loop !32 -.lr.ph: ; preds = %.lr.ph.preheader, %23 +24: ; preds = %.lr.ph.preheader, %22 %.03055 = phi ptr [ %.030, %23 ], [ %.03054, %.lr.ph.preheader ] %25 = load i8, ptr %.03055, align 1 %26 = tail call i32 @EVUTIL_ISDIGIT_(i8 noundef signext %25) #18 %.not43 = icmp eq i32 %26, 0 - br i1 %.not43, label %.critedge, label %23, !llvm.loop !32 + br i1 %.not43, label %.critedge, label %22, !llvm.loop !32 -.critedge: ; preds = %.lr.ph +.critedge: ; preds = %24 %27 = load i8, ptr %.03055, align 1 %28 = icmp eq i8 %27, 58 br i1 %28, label %29, label %.critedge45 @@ -7814,7 +7814,7 @@ evhttp_find_header.exit: ; preds = %12 %38 = load ptr, ptr %2, align 8 br label %.critedge45 -.critedge45: ; preds = %.preheader, %23, %19, %7, %.thread, %evhttp_find_header.exit, %35, %.critedge, %.critedge46, %1 +.critedge45: ; preds = %.preheader, %22, %19, %7, %.thread, %evhttp_find_header.exit, %35, %.critedge, %.critedge46, %1 %.0 = phi ptr [ %3, %1 ], [ null, %.critedge46 ], [ %9, %7 ], [ null, %.thread ], [ %38, %35 ], [ %18, %.critedge ], [ null, %evhttp_find_header.exit ], [ %18, %19 ], [ %18, %23 ], [ null, %.preheader ] ret ptr %.0 } diff --git a/bench/libigl/optimized/exact_geodesic.ll b/bench/libigl/optimized/exact_geodesic.ll index f6a965d3d56..4b4f7819a74 100644 --- a/bench/libigl/optimized/exact_geodesic.ll +++ b/bench/libigl/optimized/exact_geodesic.ll @@ -15162,13 +15162,13 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %7 = ptrtoint ptr %1 to i64 %8 = sub i64 %7, %6 %9 = icmp sgt i64 %8, 192 - br i1 %9, label %.lr.ph.preheader, label %.loopexit + br i1 %9, label %.lr.ph, label %.loopexit -.lr.ph.preheader: ; preds = %3 +.lr.ph: ; preds = %3 %10 = icmp eq i64 %2, 0 br i1 %10, label %.lr.ph._crit_edge, label %.lr.ph19 -.lr.ph: ; preds = %.lr.ph19 +11: ; preds = %.lr.ph19 %11 = icmp eq i64 %12, 0 br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph19, !llvm.loop !472 @@ -15182,7 +15182,7 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.lr.ph19: ; preds = %.lr.ph.preheader, %.lr.ph +12: ; preds = %11, %.lr.ph %storemerge1218 = phi ptr [ %13, %.lr.ph ], [ %1, %.lr.ph.preheader ] %.01317 = phi i64 [ %12, %.lr.ph ], [ %2, %.lr.ph.preheader ] %12 = add nsw i64 %.01317, -1 @@ -15191,7 +15191,7 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %14 = ptrtoint ptr %13 to i64 %15 = sub i64 %14, %6 %16 = icmp sgt i64 %15, 192 - br i1 %16, label %.lr.ph, label %.loopexit, !llvm.loop !472 + br i1 %16, label %11, label %.loopexit, !llvm.loop !472 .loopexit: ; preds = %.lr.ph19, %3, %.lr.ph._crit_edge ret void diff --git a/bench/libigl/optimized/sort_angles.ll b/bench/libigl/optimized/sort_angles.ll index 781066292a8..844c74ca78b 100644 --- a/bench/libigl/optimized/sort_angles.ll +++ b/bench/libigl/optimized/sort_angles.ll @@ -689,27 +689,27 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIPilN9__gnu_cxx5__ops1 %13 = icmp eq i64 %2, 0 br i1 %13, label %._crit_edge, label %.lr.ph27 -14: ; preds = %.lr.ph27 +13: ; preds = %.lr.ph27 %15 = icmp eq i64 %19, 0 - br i1 %15, label %._crit_edge, label %.lr.ph27, !llvm.loop !67 + br i1 %15, label %16, label %19, !llvm.loop !67 -._crit_edge: ; preds = %14, %.lr.ph +16: ; preds = %13, %.lr.ph %.020.lcssa = phi ptr [ %1, %.lr.ph ], [ %23, %14 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) store ptr %3, ptr %7, align 8 - %16 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr %4, ptr %16, align 8 + %17 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store ptr %4, ptr %17, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %3, ptr %6, align 8 - %17 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store ptr %4, ptr %17, align 8 + %18 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store ptr %4, ptr %18, align 8 call void @_ZSt11__make_heapIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_RSG_(ptr noundef %0, ptr noundef %.020.lcssa, ptr noundef nonnull align 8 dereferenceable(16) %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @_ZSt11__sort_heapIPiN9__gnu_cxx5__ops15_Iter_comp_iterIZN3igl11sort_anglesIN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS7_IiLin1ELi1ELi0ELin1ELi1EEEEEvRKNS6_10MatrixBaseIT_EERNS6_15PlainObjectBaseIT0_EEEUlmmE_EEEvSB_SB_RSG_(ptr noundef %0, ptr noundef %.020.lcssa, ptr noundef nonnull align 8 dereferenceable(16) %7) call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.loopexit -.lr.ph27: ; preds = %.lr.ph, %14 +19: ; preds = %.lr.ph, %13 %.0171926 = phi i64 [ %19, %14 ], [ %2, %.lr.ph ] %.02025 = phi ptr [ %23, %14 ], [ %1, %.lr.ph ] %18 = phi i64 [ %25, %14 ], [ %10, %.lr.ph ] diff --git a/bench/libquic/optimized/prime.ll b/bench/libquic/optimized/prime.ll index 01afd867e0f..067b79ea18b 100644 --- a/bench/libquic/optimized/prime.ll +++ b/bench/libquic/optimized/prime.ll @@ -900,15 +900,15 @@ define internal fastcc range(i32 -1, 2) i32 @witness(ptr noundef nonnull %0, ptr %.not23 = icmp eq i32 %20, 0 br i1 %.not23, label %21, label %.loopexit -21: ; preds = %19 - %22 = tail call i32 @BN_cmp(ptr noundef nonnull %0, ptr noundef %2) #5 - %23 = icmp eq i32 %22, 0 - br i1 %23, label %..loopexit_crit_edge27, label %15, !llvm.loop !33 +15: ; preds = %19 + %16 = tail call i32 @BN_cmp(ptr noundef nonnull %0, ptr noundef %2) #5 + %.not22 = icmp eq i32 %16, 0 + br i1 %.not22, label %..loopexit_crit_edge27, label %15, !llvm.loop !33 -..loopexit_crit_edge27: ; preds = %21 +19: ; preds = %21 br label %.loopexit, !llvm.loop !33 -.loopexit: ; preds = %.lr.ph, %19, %15, %.preheader, %..loopexit_crit_edge27, %11, %9, %7 +.loopexit: ; preds = %.lr.ph, %19, %15, %.preheader, %19, %11, %9, %7 %.0 = phi i32 [ -1, %7 ], [ 0, %9 ], [ 0, %11 ], [ 0, %..loopexit_crit_edge27 ], [ 1, %.preheader ], [ -1, %.lr.ph ], [ 1, %19 ], [ 1, %15 ] ret i32 %.0 } diff --git a/bench/libquic/optimized/quic_connection.ll b/bench/libquic/optimized/quic_connection.ll index e980dff9498..855fba0943c 100644 --- a/bench/libquic/optimized/quic_connection.ll +++ b/bench/libquic/optimized/quic_connection.ll @@ -3184,7 +3184,7 @@ _ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exi %exitcond.not156 = icmp eq i64 %80, 0 br i1 %exitcond.not156, label %.critedge16, label %._crit_edge.i.i.i.i.us72.lr.ph, !llvm.loop !303 -._crit_edge.i.i.i.i.us72.lr.ph: ; preds = %.critedge.us83.preheader +._crit_edge.i.i.i.i.us72: ; preds = %.critedge.us83.preheader br label %._crit_edge.i.i.i.i.us72, !llvm.loop !303 ._crit_edge.i.i.i.i.us72: ; preds = %._crit_edge.i.i.i.i.us72.lr.ph, %.critedge.us83 @@ -3198,14 +3198,14 @@ _ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exi .critedge.us83: ; preds = %._crit_edge.i.i.i.i.us72 %exitcond.not = icmp eq i64 %81, %80 - br i1 %exitcond.not, label %.critedge.us83..critedge16.loopexit146_crit_edge, label %._crit_edge.i.i.i.i.us72, !llvm.loop !303 + br i1 %exitcond.not, label %.critedge16, label %._crit_edge.i.i.i.i.us72, !llvm.loop !303 .split.us: ; preds = %._crit_edge.i.i.i.i.us72, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us60, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us40, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us, %.lr.ph.split.split.us71 %84 = phi i32 [ %78, %.lr.ph.split.split.us71 ], [ %24, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us ], [ %62, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us40 ], [ %.pre.i.i.i.i.us56, %_ZN4base13ContainsValueISt6vectorIN3net11QuicVersionESaIS3_EES3_EEbRKT_RKT0_.exit.us60 ], [ %78, %._crit_edge.i.i.i.i.us72 ] tail call void @_ZN3net10QuicFramer11set_versionENS_11QuicVersionE(ptr noundef nonnull align 8 dereferenceable(408) %3, i32 noundef %84) br label %.critedge16 -.critedge.us83..critedge16.loopexit146_crit_edge: ; preds = %.critedge.us83 +.critedge16: ; preds = %.critedge.us83 br label %.critedge16, !llvm.loop !303 .critedge16: ; preds = %.critedge.us63, %.critedge.us43, %.critedge.us, %.critedge.us83.preheader, %.critedge.us83..critedge16.loopexit146_crit_edge, %.lr.ph.split, %2, %.split.us diff --git a/bench/libwebp/optimized/alpha_processing.ll b/bench/libwebp/optimized/alpha_processing.ll index e905b9e608a..b49643d3b1e 100644 --- a/bench/libwebp/optimized/alpha_processing.ll +++ b/bench/libwebp/optimized/alpha_processing.ll @@ -676,13 +676,13 @@ define internal range(i32 0, 2) i32 @HasAlpha8b_C(ptr noundef readonly captures( %3 = icmp sgt i32 %1, 0 br i1 %3, label %.lr.ph, label %._crit_edge -4: ; preds = %.lr.ph +4:; preds = %.lr.ph %5 = add nsw i32 %.05, -1 %6 = getelementptr inbounds nuw i8, ptr %.024, i64 1 %7 = icmp sgt i32 %.05, 1 br i1 %7, label %.lr.ph, label %._crit_edge, !llvm.loop !27 -.lr.ph: ; preds = %2, %4 +.lr.ph:; preds = %2, %4 %.05 = phi i32 [ %5, %4 ], [ %1, %2 ] %.024 = phi ptr [ %6, %4 ], [ %0, %2 ] %8 = load i8, ptr %.024, align 1, !tbaa !9 @@ -692,7 +692,7 @@ define internal range(i32 0, 2) i32 @HasAlpha8b_C(ptr noundef readonly captures( ._crit_edge6: ; preds = %.lr.ph br label %._crit_edge, !llvm.loop !27 -._crit_edge: ; preds = %4, %._crit_edge6, %2 +9: ; preds = %4, %._crit_edge6, %2 %.03 = phi i32 [ 1, %._crit_edge6 ], [ 0, %2 ], [ 0, %4 ] ret i32 %.03 } diff --git a/bench/lief/optimized/asn1write.ll b/bench/lief/optimized/asn1write.ll index 5922e2f3a5f..4fc66355573 100644 --- a/bench/lief/optimized/asn1write.ll +++ b/bench/lief/optimized/asn1write.ll @@ -1172,14 +1172,14 @@ define hidden i32 @mbedtls_asn1_write_named_bitstring(ptr noundef captures(none) %16 = trunc nuw i32 %15 to i8 %17 = and i8 %16, 1 %.not2627 = icmp eq i8 %17, 0 - br i1 %.not2627, label %.lr.ph.preheader, label %.loopexit + br i1 %.not2627, label %.lr.ph, label %.loopexit -.lr.ph.preheader: ; preds = %5 +.lr.ph: ; preds = %5 %18 = add i64 %3, -1 %19 = icmp eq i64 %18, 0 br i1 %19, label %.loopexit, label %.lr.ph36 -.lr.ph: ; preds = %29 +20: ; preds = %29 %20 = add i64 %22, -1 %21 = icmp eq i64 %20, 0 br i1 %21, label %.loopexit, label %.lr.ph36 @@ -1193,7 +1193,7 @@ define hidden i32 @mbedtls_asn1_write_named_bitstring(ptr noundef captures(none) %25 = icmp eq i64 %24, 0 br i1 %25, label %26, label %29 -26: ; preds = %.lr.ph36 +26:; preds = %.lr.ph36 %27 = getelementptr inbounds i8, ptr %.0202835, i64 -1 %28 = load i8, ptr %27, align 1, !tbaa !10 br label %29 @@ -1205,10 +1205,10 @@ define hidden i32 @mbedtls_asn1_write_named_bitstring(ptr noundef captures(none) %.not26 = icmp eq i8 %30, 0 br i1 %.not26, label %.lr.ph, label %.loopexit -.loopexit: ; preds = %29, %.lr.ph, %.lr.ph.preheader, %5, %4 +.loopexit: ; preds = %29, %.lr.ph, %20, %5, %4 %.0 = phi i64 [ 0, %4 ], [ %3, %5 ], [ 0, %.lr.ph.preheader ], [ 0, %.lr.ph ], [ %22, %29 ] - %31 = tail call i32 @mbedtls_asn1_write_bitstring(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %.0) - ret i32 %31 + %29 = tail call i32 @mbedtls_asn1_write_bitstring(ptr noundef %0, ptr noundef %1, ptr noundef %2, i64 noundef %.0) + ret i32 %29 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable diff --git a/bench/lief/optimized/x509.ll b/bench/lief/optimized/x509.ll index 7d5b769b442..ec542e3b8f5 100644 --- a/bench/lief/optimized/x509.ll +++ b/bench/lief/optimized/x509.ll @@ -1163,8 +1163,8 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %.not201 = icmp eq i32 %narrow, 0 br i1 %.not201, label %.preheader165, label %.lr.ph185 -.preheader165: ; preds = %75, %70 - %.0133.lcssa = phi i64 [ 1, %70 ], [ %90, %75 ] +.preheader165: ; preds = %74, %70 + %.0133.lcssa = phi i64 [ 1, %70 ], [ %89, %75 ] %72 = load i64, ptr %61, align 8, !tbaa !33 %.not202 = icmp eq i64 %72, 0 br i1 %.not202, label %.loopexit, label %.lr.ph189 @@ -1174,41 +1174,41 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %74 = icmp samesign ugt i64 %.0133.lcssa, 253 br i1 %74, label %.loopexit164, label %.lr.ph273 -.lr.ph185: ; preds = %70, %75 - %.0127183 = phi i64 [ %92, %75 ], [ 0, %70 ] - %.0133182 = phi i64 [ %90, %75 ], [ 1, %70 ] +.lr.ph185: ; preds = %70, %74 + %.0127183 = phi i64 [ %91, %75 ], [ 0, %70 ] + %.0133182 = phi i64 [ %89, %75 ], [ 1, %70 ] %exitcond = icmp eq i64 %.0127183, 127 - br i1 %exitcond, label %.loopexit164, label %75 + br i1 %exitcond, label %.loopexit164, label %74 -75: ; preds = %.lr.ph185 +74: ; preds = %.lr.ph185 %reass.sub = sub nsw i64 %.0127183, %71 - %76 = getelementptr i8, ptr %4, i64 %reass.sub - %77 = getelementptr i8, ptr %76, i64 6 - %78 = load i8, ptr %77, align 1, !tbaa !8 - %79 = and i8 %78, 15 - %80 = lshr i8 %78, 4 - %81 = icmp ult i8 %78, -96 - %82 = or disjoint i8 %80, 48 - %83 = add nuw nsw i8 %80, 55 - %84 = select i1 %81, i8 %82, i8 %83 - %85 = getelementptr inbounds nuw i8, ptr %7, i64 %.0133182 - store i8 %84, ptr %85, align 1, !tbaa !8 - %86 = icmp samesign ult i8 %79, 10 - %87 = or disjoint i8 %79, 48 - %88 = add nuw nsw i8 %79, 55 - %89 = select i1 %86, i8 %87, i8 %88 - %90 = add nuw nsw i64 %.0133182, 2 - %91 = getelementptr inbounds nuw i8, ptr %85, i64 1 - store i8 %89, ptr %91, align 1, !tbaa !8 - %92 = add nuw nsw i64 %.0127183, 1 - %exitcond219.not = icmp eq i64 %92, %71 + %75 = getelementptr i8, ptr %4, i64 %reass.sub + %76 = getelementptr i8, ptr %75, i64 6 + %77 = load i8, ptr %76, align 1, !tbaa !8 + %78 = and i8 %77, 15 + %79 = lshr i8 %77, 4 + %80 = icmp ult i8 %77, -96 + %81 = or disjoint i8 %79, 48 + %82 = add nuw nsw i8 %79, 55 + %83 = select i1 %80, i8 %81, i8 %82 + %84 = getelementptr inbounds nuw i8, ptr %7, i64 %.0133182 + store i8 %83, ptr %84, align 1, !tbaa !8 + %85 = icmp samesign ult i8 %78, 10 + %86 = or disjoint i8 %78, 48 + %87 = add nuw nsw i8 %78, 55 + %88 = select i1 %85, i8 %86, i8 %87 + %89 = add nuw nsw i64 %.0133182, 2 + %90 = getelementptr inbounds nuw i8, ptr %84, i64 1 + store i8 %88, ptr %90, align 1, !tbaa !8 + %91 = add nuw nsw i64 %.0127183, 1 + %exitcond219.not = icmp eq i64 %91, %71 br i1 %exitcond219.not, label %.preheader165, label %.lr.ph185, !llvm.loop !34 -93: ; preds = %.lr.ph273 +92: ; preds = %.lr.ph273 %94 = icmp ugt i64 %.1134187272, 251 br i1 %94, label %.loopexit164, label %.lr.ph273, !llvm.loop !35 -.lr.ph273: ; preds = %.lr.ph189, %93 +94: ; preds = %.lr.ph189, %92 %.1134187272 = phi i64 [ %109, %93 ], [ %.0133.lcssa, %.lr.ph189 ] %.1128188271 = phi i64 [ %111, %93 ], [ 0, %.lr.ph189 ] %95 = load ptr, ptr %73, align 8, !tbaa !36 @@ -1232,7 +1232,7 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %111 = add nuw nsw i64 %.1128188271, 1 %112 = load i64, ptr %61, align 8, !tbaa !33 %113 = icmp ult i64 %111, %112 - br i1 %113, label %93, label %.loopexit, !llvm.loop !35 + br i1 %113, label %92, label %.loopexit, !llvm.loop !35 114: ; preds = %.lr.ph193, %158 %115 = phi i64 [ %58, %.lr.ph193 ], [ %162, %158 ] @@ -1324,7 +1324,7 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %163 = icmp ult i64 %160, %162 br i1 %163, label %114, label %.loopexit, !llvm.loop !37 -.loopexit: ; preds = %.lr.ph273, %158, %.preheader165, %.preheader +.loopexit: ; preds = %94, %158, %.preheader165, %.preheader %.2135 = phi i64 [ 0, %.preheader ], [ %.0133.lcssa, %.preheader165 ], [ %161, %158 ], [ %109, %.lr.ph273 ] %164 = getelementptr inbounds nuw i8, ptr %7, i64 %.2135 store i8 0, ptr %164, align 1, !tbaa !8 @@ -1353,7 +1353,7 @@ define hidden i32 @mbedtls_x509_dn_gets(ptr noundef %0, i64 noundef %1, ptr noun %176 = trunc i64 %175 to i32 br label %.loopexit164 -.loopexit164: ; preds = %.loopexit, %167, %65, %60, %50, %52, %46, %16, %20, %.lr.ph189, %.lr.ph185, %93, %141, %134, %117, %114, %.outer._crit_edge +.loopexit164: ; preds = %.loopexit, %167, %65, %60, %50, %52, %46, %16, %20, %.lr.ph189, %.lr.ph185, %92, %141, %134, %117, %114, %.outer._crit_edge %.0125 = phi i32 [ %176, %.outer._crit_edge ], [ -10624, %141 ], [ -10624, %134 ], [ -9088, %117 ], [ -10624, %114 ], [ -10624, %93 ], [ -10624, %.lr.ph185 ], [ -10624, %.loopexit ], [ -10624, %167 ], [ -110, %65 ], [ -110, %60 ], [ -10624, %50 ], [ -10624, %52 ], [ -10624, %46 ], [ -10624, %16 ], [ -10624, %20 ], [ -10624, %.lr.ph189 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) diff --git a/bench/linux/optimized/dmaengine.ll b/bench/linux/optimized/dmaengine.ll index a5da3446ef3..e90d495eac1 100644 --- a/bench/linux/optimized/dmaengine.ll +++ b/bench/linux/optimized/dmaengine.ll @@ -3023,9 +3023,9 @@ define internal fastcc noundef range(i32 -12, 1) i32 @dmaengine_init_unmap_pool( %4 = tail call ptr @mempool_create(i32 noundef 1, ptr noundef nonnull @mempool_alloc_slab, ptr noundef nonnull @mempool_free_slab, ptr noundef nonnull %1) #12 store ptr %4, ptr @unmap_pool.2, align 16 %.not = icmp eq ptr %4, null - br i1 %.not, label %.critedge2, label %.loopexit, !llvm.loop !75 + br i1 %.not, label %.critedge, label %.loopexit, !llvm.loop !75 -.critedge2: ; preds = %..critedge2_crit_edge, %3 +.critedge: ; preds = %..critedge2_crit_edge, %3 %5 = phi ptr [ %.pre, %..critedge2_crit_edge ], [ null, %3 ] tail call void @mempool_destroy(ptr noundef %5) #12 store ptr null, ptr @unmap_pool.2, align 16 @@ -3034,7 +3034,7 @@ define internal fastcc noundef range(i32 -12, 1) i32 @dmaengine_init_unmap_pool( store ptr null, ptr @unmap_pool.0, align 16 br label %.loopexit -.loopexit: ; preds = %3, %.critedge2 +.loopexit: ; preds = %3, %.critedge %7 = phi i32 [ -12, %.critedge2 ], [ 0, %3 ] ret i32 %7 } diff --git a/bench/llama.cpp/optimized/llama-chat.ll b/bench/llama.cpp/optimized/llama-chat.ll index 8fc71bfca5e..6ce76e08653 100644 --- a/bench/llama.cpp/optimized/llama-chat.ll +++ b/bench/llama.cpp/optimized/llama-chat.ll @@ -6408,8 +6408,8 @@ define linkonce_odr void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC ; Function Attrs: mustprogress uwtable define internal fastcc void @_ZL4trimRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias nonnull writable align 8 %0, ptr readonly captures(none) %.0.val, i64 %.8.val) unnamed_addr #2 personality ptr @__gxx_personality_v0 { %2 = alloca i64, align 8 - %.not9 = icmp eq i64 %.8.val, 0 - br i1 %.not9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i, label %.lr.ph + %.not4 = icmp eq i64 %.8.val, 0 + br i1 %.not4, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i.i, label %.lr.ph .lr.ph: ; preds = %1, %7 %.0161 = phi i64 [ %8, %7 ], [ 0, %1 ] @@ -6429,11 +6429,11 @@ define internal fastcc void @_ZL4trimRKNSt7__cxx1112basic_stringIcSt11char_trait %9 = icmp ugt i64 %.8.val, %.0161 br i1 %9, label %.lr.ph5, label %.critedge2 -10: ; preds = %.lr.ph5 +9: ; preds = %11 %11 = icmp ugt i64 %12, %.0161 br i1 %11, label %.lr.ph5, label %.critedge2, !llvm.loop !63 -.lr.ph5: ; preds = %.critedge, %10 +11: ; preds = %.critedge, %9 %.04 = phi i64 [ %12, %10 ], [ %.8.val, %.critedge ] %12 = add i64 %.04, -1 %13 = getelementptr inbounds nuw i8, ptr %.0.val, i64 %12 @@ -6441,12 +6441,12 @@ define internal fastcc void @_ZL4trimRKNSt7__cxx1112basic_stringIcSt11char_trait %15 = sext i8 %14 to i32 %16 = tail call i32 @isspace(i32 noundef %15) #26 %.not17 = icmp eq i32 %16, 0 - br i1 %.not17, label %..critedge2_crit_edge7, label %10, !llvm.loop !63 + br i1 %.not17, label %..critedge2_crit_edge7, label %9, !llvm.loop !63 ..critedge2_crit_edge7: ; preds = %.lr.ph5 br label %.critedge2, !llvm.loop !63 -.critedge2: ; preds = %10, %..critedge2_crit_edge7, %.critedge +.critedge2: ; preds = %9, %..critedge2_crit_edge7, %.critedge %.0.lcssa = phi i64 [ %.04, %..critedge2_crit_edge7 ], [ %.8.val, %.critedge ], [ %.0161, %10 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !64) %17 = icmp ugt i64 %.0161, %.8.val diff --git a/bench/llvm/optimized/LangOptions.ll b/bench/llvm/optimized/LangOptions.ll index b82cc7ffb0f..36d903c7226 100644 --- a/bench/llvm/optimized/LangOptions.ll +++ b/bench/llvm/optimized/LangOptions.ll @@ -450,7 +450,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader: ; preds = %.lr.ph.split %.not.us.not.not35 = icmp eq i64 %17, 1 br i1 %.not.us.not.not35, label %.thread, label %.lr.ph37, !llvm.loop !65 -.lr.ph37: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader +18: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader br label %18, !llvm.loop !65 18: ; preds = %.lr.ph37, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us @@ -459,12 +459,12 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.preheader: ; preds = %.lr.ph.split %20 = getelementptr inbounds nuw i8, ptr %19, i64 8 %21 = load i64, ptr %20, align 8, !tbaa !48 %.not.i.us = icmp eq i64 %21, 0 - br i1 %.not.i.us, label %..thread.loopexit_crit_edge, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us, !llvm.loop !65 + br i1 %.not.i.us, label %.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us, !llvm.loop !65 _ZN4llvmeqENS_9StringRefES0_.exit.thread11.us: ; preds = %18 %indvars.iv.next29 = add nuw nsw i64 %indvars.iv.next2936, 1 %.not.us.not.not = icmp eq i64 %indvars.iv.next29, %17 - br i1 %.not.us.not.not, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us..thread.loopexit_crit_edge, label %18, !llvm.loop !65 + br i1 %.not.us.not.not, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us.thread, label %18, !llvm.loop !65 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11 %indvars.iv = phi i64 [ 0, %.lr.ph.split.preheader ], [ %indvars.iv.next, %_ZN4llvmeqENS_9StringRefES0_.exit.thread11 ] @@ -485,7 +485,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit.thread11: ; preds = %.lr.ph.split, %_ZN4 %.not.not = icmp eq i64 %indvars.iv.next, %14 br i1 %.not.not, label %.thread, label %.lr.ph.split, !llvm.loop !65 -..thread.loopexit_crit_edge: ; preds = %18 +.thread: ; preds = %18 br label %.thread, !llvm.loop !65 _ZN4llvmeqENS_9StringRefES0_.exit.thread11.us..thread.loopexit_crit_edge: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit.thread11.us diff --git a/bench/llvm/optimized/OptimizedStructLayout.ll b/bench/llvm/optimized/OptimizedStructLayout.ll index 888a3fc1b42..299998008e3 100644 --- a/bench/llvm/optimized/OptimizedStructLayout.ll +++ b/bench/llvm/optimized/OptimizedStructLayout.ll @@ -515,7 +515,7 @@ define internal fastcc noundef zeroext i1 @"_ZZN4llvm28performOptimizedStructLay %.not37.us107191 = icmp eq i32 %.val41, 1 br i1 %.not37.us107191, label %.thread.i, label %.lr.ph194 -.lr.ph194: ; preds = %.preheader.us112.lr.ph +44: ; preds = %.preheader.us112.lr.ph %.230.us106190 = getelementptr inbounds i8, ptr %7, i64 -24 br label %45 @@ -524,7 +524,7 @@ define internal fastcc noundef zeroext i1 @"_ZZN4llvm28performOptimizedStructLay %.not37.us107 = icmp eq ptr %.230.us106, %.val br i1 %.not37.us107, label %.thread.i, label %45, !llvm.loop !46 -45: ; preds = %.lr.ph194, %44 +45: ; preds = %44, %44 %.230.us106193 = phi ptr [ %.230.us106190, %.lr.ph194 ], [ %.230.us106, %44 ] %.129.pn.us105192 = phi ptr [ %7, %.lr.ph194 ], [ %.230.us106193, %44 ] %46 = getelementptr inbounds i8, ptr %.129.pn.us105192, i64 -32 diff --git a/bench/luajit/optimized/lj_debug.ll b/bench/luajit/optimized/lj_debug.ll index 3dcc4fc1132..f2daf079c5e 100644 --- a/bench/luajit/optimized/lj_debug.ll +++ b/bench/luajit/optimized/lj_debug.ll @@ -1208,12 +1208,12 @@ lj_debug_line.exit: ; preds = %3, %21, %25, %32, % 51: ; preds = %lj_debug_line.exit %52 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.14, ptr noundef nonnull %7) #11 - br label %79 + br label %78 53: ; preds = %lj_debug_line.exit %54 = load i8, ptr %7, align 1, !tbaa !15 %55 = icmp eq i8 %54, 64 - br i1 %55, label %56, label %68 + br i1 %55, label %56, label %67 56: ; preds = %53 %57 = getelementptr inbounds nuw i8, ptr %6, i64 25 @@ -1221,7 +1221,7 @@ lj_debug_line.exit: ; preds = %3, %21, %25, %32, % %.not38 = icmp eq i32 %.03337, 0 br i1 %.not38, label %.loopexit, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %56 +.lr.ph.preheader:; preds = %56 %58 = zext i32 %.03337 to i64 br label %.lr.ph @@ -1242,38 +1242,38 @@ lj_debug_line.exit: ; preds = %3, %21, %25, %32, % i8 92, label %64 ], !llvm.loop !55 -64: ; preds = %.lr.ph, %.lr.ph - %65 = zext i32 %.033.in39 to i64 - %66 = getelementptr inbounds nuw i8, ptr %57, i64 %65 +63: ; preds = %.lr.ph, %.lr.ph + %64 = zext i32 %.033.in39 to i64 + %65 = getelementptr inbounds nuw i8, ptr %57, i64 %64 br label %.loopexit -.loopexit: ; preds = %59, %56, %64 - %.0 = phi ptr [ %66, %64 ], [ %57, %56 ], [ %57, %59 ] - %67 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %.0, i32 noundef %.1.i) #11 - br label %79 +.loopexit: ; preds = %59, %56, %63 + %.0 = phi ptr [ %65, %64 ], [ %57, %56 ], [ %57, %59 ] + %66 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %.0, i32 noundef %.1.i) #11 + br label %78 -68: ; preds = %53 - %69 = icmp ugt i32 %9, 40 - br i1 %69, label %70, label %72 +67: ; preds = %53 + %68 = icmp ugt i32 %9, 40 + br i1 %68, label %69, label %71 -70: ; preds = %68 - %71 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.16, ptr noundef nonnull %1, i32 noundef %.1.i) #11 - br label %79 +69: ; preds = %67 + %70 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.16, ptr noundef nonnull %1, i32 noundef %.1.i) #11 + br label %78 -72: ; preds = %68 - %73 = icmp eq i8 %54, 61 - br i1 %73, label %74, label %77 +71: ; preds = %67 + %72 = icmp eq i8 %54, 61 + br i1 %72, label %73, label %76 -74: ; preds = %72 - %75 = getelementptr inbounds nuw i8, ptr %6, i64 25 - %76 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %75, i32 noundef %.1.i) #11 - br label %79 +73: ; preds = %71 + %74 = getelementptr inbounds nuw i8, ptr %6, i64 25 + %75 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.15, ptr noundef nonnull %74, i32 noundef %.1.i) #11 + br label %78 -77: ; preds = %72 - %78 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %7, i32 noundef %.1.i) #11 - br label %79 +76: ; preds = %71 + %77 = tail call ptr (ptr, ptr, ...) @lj_strfmt_pushf(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %7, i32 noundef %.1.i) #11 + br label %78 -79: ; preds = %.loopexit, %74, %77, %70, %51 +78: ; preds = %.loopexit, %73, %76, %69, %51 ret void } diff --git a/bench/lvgl/optimized/lv_group.ll b/bench/lvgl/optimized/lv_group.ll index 39e00e429eb..36eaf2e5b92 100644 --- a/bench/lvgl/optimized/lv_group.ll +++ b/bench/lvgl/optimized/lv_group.ll @@ -1203,13 +1203,13 @@ declare i32 @lv_ll_get_len(ptr noundef) local_unnamed_addr #1 define ptr @lv_group_get_obj_by_index(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 { %3 = tail call ptr @lv_ll_get_head(ptr noundef %0) #10 %.not11 = icmp eq ptr %3, null - br i1 %.not11, label %.loopexit, label %.lr.ph.preheader + br i1 %.not11, label %.loopexit, label %.lr.ph -.lr.ph.preheader: ; preds = %2 +.lr.ph: ; preds = %2 %4 = icmp eq i32 %1, 0 br i1 %4, label %.lr.ph._crit_edge, label %.lr.ph20 -.lr.ph: ; preds = %.lr.ph20 +5: ; preds = %.lr.ph20 %5 = add i32 %.081219, 1 %6 = icmp eq i32 %5, %1 br i1 %6, label %.lr.ph._crit_edge, label %.lr.ph20, !llvm.loop !61 @@ -1219,14 +1219,14 @@ define ptr @lv_group_get_obj_by_index(ptr noundef %0, i32 noundef %1) local_unna %7 = load ptr, ptr %.013.lcssa, align 8, !tbaa !13 br label %.loopexit -.lr.ph20: ; preds = %.lr.ph.preheader, %.lr.ph +7: ; preds = %5, %.lr.ph %.081219 = phi i32 [ %5, %.lr.ph ], [ 0, %.lr.ph.preheader ] %.01318 = phi ptr [ %8, %.lr.ph ], [ %3, %.lr.ph.preheader ] %8 = tail call ptr @lv_ll_get_next(ptr noundef %0, ptr noundef nonnull %.01318) #10 %.not = icmp eq ptr %8, null br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !61 -.loopexit: ; preds = %.lr.ph20, %2, %.lr.ph._crit_edge +.loopexit: ; preds = %7, %2, %.lr.ph._crit_edge %.09 = phi ptr [ %7, %.lr.ph._crit_edge ], [ null, %2 ], [ null, %.lr.ph20 ] ret ptr %.09 } diff --git a/bench/lvgl/optimized/lv_span.ll b/bench/lvgl/optimized/lv_span.ll index 9785af31347..9f52b3b70e2 100644 --- a/bench/lvgl/optimized/lv_span.ll +++ b/bench/lvgl/optimized/lv_span.ll @@ -1748,19 +1748,19 @@ define ptr @lv_spangroup_get_child(ptr noundef %0, i32 noundef %1) local_unnamed .lr.ph.split.us: ; preds = %.lr.ph br i1 %7, label %.loopexit, label %.lr.ph38 -8: ; preds = %.lr.ph38 +8:; preds = %.lr.ph38 %9 = add nsw i32 %.12027.us37, -1 %10 = icmp eq i32 %9, %1 br i1 %10, label %.loopexit, label %.lr.ph38, !llvm.loop !85 -.lr.ph38: ; preds = %.lr.ph.split.us, %8 +.lr.ph38:; preds = %.lr.ph.split.us, %8 %.12027.us37 = phi i32 [ %9, %8 ], [ %.lobit, %.lr.ph.split.us ] %.128.us36 = phi ptr [ %11, %8 ], [ %.0, %.lr.ph.split.us ] %11 = tail call ptr @lv_ll_get_prev(ptr noundef nonnull %5, ptr noundef nonnull %.128.us36) #9 %.not.us = icmp eq ptr %11, null br i1 %.not.us, label %.loopexit, label %8, !llvm.loop !85 -.lr.ph.split: ; preds = %.lr.ph +.lr.ph.split:; preds = %.lr.ph br i1 %7, label %.loopexit, label %.lr.ph34 12: ; preds = %.lr.ph34 @@ -1770,7 +1770,7 @@ define ptr @lv_spangroup_get_child(ptr noundef %0, i32 noundef %1) local_unnamed .lr.ph34: ; preds = %.lr.ph.split, %12 %.1202733 = phi i32 [ %13, %12 ], [ %.lobit, %.lr.ph.split ] - %.12832 = phi ptr [ %15, %12 ], [ %.0, %.lr.ph.split ] + %.022 = phi ptr [ %15, %12 ], [ %.0, %.lr.ph.split ] %15 = tail call ptr @lv_ll_get_next(ptr noundef nonnull %5, ptr noundef nonnull %.12832) #9 %.not = icmp eq ptr %15, null br i1 %.not, label %.loopexit, label %12, !llvm.loop !85 diff --git a/bench/lvgl/optimized/lv_table.ll b/bench/lvgl/optimized/lv_table.ll index 33103358d87..50bb17adcae 100644 --- a/bench/lvgl/optimized/lv_table.ll +++ b/bench/lvgl/optimized/lv_table.ll @@ -286,10 +286,10 @@ define internal void @lv_table_event(ptr readnone captures(none) %0, ptr noundef %exitcond188.not208 = icmp eq i64 %63, 0 br i1 %exitcond188.not208, label %.._crit_edge.i.loopexit_crit_edge, label %.lr.ph210, !llvm.loop !38 -.lr.ph210: ; preds = %.lr.ph162 +64: ; preds = %.lr.ph162 br label %65, !llvm.loop !38 -64: ; preds = %65 +66: ; preds = %65 %exitcond188.not = icmp eq i64 %indvars.iv.next.i, %63 br i1 %exitcond188.not, label %..._crit_edge.i.loopexit_crit_edge_crit_edge, label %65, !llvm.loop !38 @@ -303,7 +303,7 @@ define internal void @lv_table_event(ptr readnone captures(none) %0, ptr noundef %70 = icmp slt i32 %55, %69 br i1 %70, label %._crit_edge.i.loopexit, label %64, !llvm.loop !38 -..._crit_edge.i.loopexit_crit_edge_crit_edge: ; preds = %64 +.._crit_edge.i.loopexit_crit_edge: ; preds = %64 br label %.._crit_edge.i.loopexit_crit_edge, !llvm.loop !38 .._crit_edge.i.loopexit_crit_edge: ; preds = %..._crit_edge.i.loopexit_crit_edge_crit_edge, %.lr.ph162 @@ -345,10 +345,10 @@ define internal void @lv_table_event(ptr readnone captures(none) %0, ptr noundef %exitcond189.not211 = icmp eq i64 %88, 0 br i1 %exitcond189.not211, label %.get_pressed_cell.exit.loopexit_crit_edge172, label %.lr.ph213, !llvm.loop !40 -.lr.ph213: ; preds = %.lr.ph169 +89: ; preds = %.lr.ph169 br label %90, !llvm.loop !40 -89: ; preds = %90 +91: ; preds = %90 %exitcond189.not = icmp eq i64 %indvars.iv.next88.i, %88 br i1 %exitcond189.not, label %..get_pressed_cell.exit.loopexit_crit_edge172_crit_edge, label %90, !llvm.loop !40 @@ -362,7 +362,7 @@ define internal void @lv_table_event(ptr readnone captures(none) %0, ptr noundef %95 = icmp slt i32 %80, %94 br i1 %95, label %get_pressed_cell.exit.loopexit, label %89, !llvm.loop !40 -..get_pressed_cell.exit.loopexit_crit_edge172_crit_edge: ; preds = %89 +.get_pressed_cell.exit.loopexit_crit_edge172: ; preds = %89 br label %.get_pressed_cell.exit.loopexit_crit_edge172, !llvm.loop !40 .get_pressed_cell.exit.loopexit_crit_edge172: ; preds = %..get_pressed_cell.exit.loopexit_crit_edge172_crit_edge, %.lr.ph169 diff --git a/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll b/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll index 1d31618a071..5371aecf3d2 100644 --- a/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll +++ b/bench/meilisearch-rs/optimized/54ajasddlqavlxt2.ll @@ -2275,7 +2275,7 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_pla %13 = add nuw i64 %.sroa.0.07.i.i, 1 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !253 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hdccf034b0721b487E.llvm.7557364402226394005"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) - to label %.noexc.i.i unwind label %25, !noalias !250 + to label %.noexc.i.i unwind label %24, !noalias !250 .noexc.i.i: ; preds = %11 %14 = load i64, ptr %9, align 8, !range !98, !noalias !253, !noundef !4 @@ -2297,24 +2297,24 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_pla %21 = icmp eq i64 %13, %7 br i1 %21, label %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17h23ec8b681ee2b602E.exit.i", label %11 -22: ; preds = %.lr.ph10.i.i +22: ; preds = %26 %23 = add i64 %.sroa.0.18.i.i, 1 - %24 = icmp eq i64 %23, %7 - br i1 %24, label %.body.i, label %.lr.ph10.i.i + %23 = icmp eq i64 %23, %7 + br i1 %23, label %.body.i, label %26 -25: ; preds = %11 - %26 = landingpad { ptr, i32 } +24: ; preds = %11 + %25 = landingpad { ptr, i32 } cleanup %27 = icmp eq i64 %13, %7 br i1 %27, label %.body.i, label %.lr.ph10.i.i -.lr.ph10.i.i: ; preds = %25, %22 +26: ; preds = %25, %22 %.sroa.0.18.i.i = phi i64 [ %23, %22 ], [ %13, %25 ] %28 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %3, i64 %.sroa.0.18.i.i invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h31db3b6058ec61a7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %28) #24 to label %22 unwind label %29, !noalias !250 -29: ; preds = %.lr.ph10.i.i +29: ; preds = %26 %30 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #25, !noalias !250 @@ -2339,7 +2339,7 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_pla br label %"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h29e10dfd413a4181E.exit" "_ZN4core3ptr72drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..string..String$GT$$GT$17hc86612f60ea115c0E.exit.i": ; preds = %32, %.body.i - resume { ptr, i32 } %26 + resume { ptr, i32 } %25 "_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h29e10dfd413a4181E.exit": ; preds = %"_ZN4core3ptr52drop_in_place$LT$$u5b$alloc..string..String$u5d$$GT$17h23ec8b681ee2b602E.exit.i", %35 ret void diff --git a/bench/meshlab/optimized/TexturePainter.ll b/bench/meshlab/optimized/TexturePainter.ll index abfa41fa632..5b1b276dd02 100644 --- a/bench/meshlab/optimized/TexturePainter.ll +++ b/bench/meshlab/optimized/TexturePainter.ll @@ -13946,12 +13946,12 @@ define linkonce_odr void @_ZN7QVectorI5PatchE7reallocEi6QFlagsIN10QArrayData16Al .preheader: ; preds = %12 br i1 %.not2737, label %.loopexit, label %.lr.ph40 -28: ; preds = %.lr.ph40 +28:; preds = %.lr.ph40 %29 = getelementptr inbounds nuw i8, ptr %.02338, i64 168 %.not27 = icmp eq ptr %29, %24 br i1 %.not27, label %.loopexit, label %.lr.ph40, !llvm.loop !104 -.lr.ph40: ; preds = %.preheader, %28 +.lr.ph40:; preds = %.preheader, %28 %.039 = phi ptr [ %30, %28 ], [ %27, %.preheader ] %.02338 = phi ptr [ %29, %28 ], [ %20, %.preheader ] %30 = getelementptr inbounds nuw i8, ptr %.039, i64 168 diff --git a/bench/meshlab/optimized/packing.ll b/bench/meshlab/optimized/packing.ll index 2a29730429d..dab96e803ff 100644 --- a/bench/meshlab/optimized/packing.ll +++ b/bench/meshlab/optimized/packing.ll @@ -6530,11 +6530,11 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %11 = icmp eq i64 %2, 0 br i1 %11, label %.split.i.i, label %.lr.ph34 -12: ; preds = %.lr.ph34 +11: ; preds = %.lr.ph34 %13 = icmp eq i64 %27, 0 - br i1 %13, label %.split.i.i, label %.lr.ph34, !llvm.loop !83 + br i1 %13, label %.split.i.i, label %26, !llvm.loop !83 -.split.i.i: ; preds = %12, %.lr.ph +.split.i.i: ; preds = %11, %.lr.ph %.lcssa = phi i64 [ %8, %.lr.ph ], [ %34, %12 ] %storemerge20.lcssa = phi ptr [ %1, %.lr.ph ], [ %31, %12 ] %14 = add nsw i64 %.lcssa, -2 @@ -6563,7 +6563,7 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %25 = icmp sgt i64 %23, 4 br i1 %25, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !85 -.lr.ph34: ; preds = %.lr.ph, %12 +26: ; preds = %.lr.ph, %11 %storemerge2033 = phi ptr [ %31, %12 ], [ %1, %.lr.ph ] %.02132 = phi i64 [ %27, %12 ], [ %2, %.lr.ph ] %26 = phi i64 [ %34, %12 ], [ %8, %.lr.ph ] @@ -6578,9 +6578,9 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %33 = sub i64 %32, %5 %34 = ashr exact i64 %33, 2 %35 = icmp sgt i64 %34, 16 - br i1 %35, label %12, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !83 + br i1 %35, label %11, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit, !llvm.loop !83 -_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit: ; preds = %.lr.ph34, %.lr.ph.i.i, %4 +_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_comp_iterIN3vcg17ComparisonFunctorIfEEEEEvT_SD_SD_T0_.exit: ; preds = %26, %.lr.ph.i.i, %4 ret void } diff --git a/bench/meshoptimizer/optimized/vcacheoptimizer.ll b/bench/meshoptimizer/optimized/vcacheoptimizer.ll index 217bbfc0eff..05d0bc255f2 100644 --- a/bench/meshoptimizer/optimized/vcacheoptimizer.ll +++ b/bench/meshoptimizer/optimized/vcacheoptimizer.ll @@ -720,14 +720,14 @@ define dso_local void @meshopt_optimizeVertexCacheFifo(ptr noundef writeonly cap br label %59 59: ; preds = %51, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit - %.0106165 = phi i32 [ 0, %51 ], [ %.1107, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0109164 = phi i32 [ %54, %51 ], [ %.1110.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0114163 = phi i32 [ 0, %51 ], [ %.1115.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0144162 = phi i32 [ 1, %51 ], [ %.1, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %.0145161 = phi i32 [ 0, %51 ], [ %.3148, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] - %60 = zext i32 %.0145161 to i64 + %.0106168 = phi i32 [ 0, %51 ], [ %.1107, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0109167 = phi i32 [ %54, %51 ], [ %.1110.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0114166 = phi i32 [ 0, %51 ], [ %.1115.lcssa, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0144165 = phi i32 [ 1, %51 ], [ %.1, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %.0145164 = phi i32 [ 0, %51 ], [ %.3148, %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit ] + %60 = zext i32 %.0145164 to i64 %61 = getelementptr inbounds nuw i32, ptr %45, i64 %60 - %62 = zext i32 %.0106165 to i64 + %62 = zext i32 %.0106168 to i64 %63 = getelementptr inbounds nuw i32, ptr %58, i64 %62 %64 = load i32, ptr %63, align 4, !tbaa !14 %65 = zext i32 %64 to i64 @@ -737,8 +737,8 @@ define dso_local void @meshopt_optimizeVertexCacheFifo(ptr noundef writeonly cap %69 = zext i32 %68 to i64 %.idx = shl nuw nsw i64 %69, 2 %70 = getelementptr inbounds nuw i8, ptr %66, i64 %.idx - %.not127154 = icmp eq i32 %68, 0 - br i1 %.not127154, label %._crit_edge, label %.lr.ph + %.not127153 = icmp eq i32 %68, 0 + br i1 %.not127153, label %._crit_edge, label %.lr.ph ._crit_edge.loopexit: ; preds = %166 %.pre = zext i32 %.2147 to i64 @@ -746,11 +746,11 @@ define dso_local void @meshopt_optimizeVertexCacheFifo(ptr noundef writeonly cap ._crit_edge: ; preds = %._crit_edge.loopexit, %59 %.pre-phi = phi i64 [ %.pre, %._crit_edge.loopexit ], [ %60, %59 ] - %.1146.lcssa = phi i32 [ %.2147, %._crit_edge.loopexit ], [ %.0145161, %59 ] - %.1115.lcssa = phi i32 [ %.2116, %._crit_edge.loopexit ], [ %.0114163, %59 ] - %.1110.lcssa = phi i32 [ %.2111, %._crit_edge.loopexit ], [ %.0109164, %59 ] + %.1146.lcssa = phi i32 [ %.2147, %._crit_edge.loopexit ], [ %.0145164, %59 ] + %.1115.lcssa = phi i32 [ %.2116, %._crit_edge.loopexit ], [ %.0114166, %59 ] + %.1110.lcssa = phi i32 [ %.2111, %._crit_edge.loopexit ], [ %.0109167, %59 ] %71 = getelementptr inbounds nuw i32, ptr %45, i64 %.pre-phi - %.not28.i = icmp eq i32 %.0145161, %.1146.lcssa + %.not28.i = icmp eq i32 %.0145164, %.1146.lcssa br i1 %.not28.i, label %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread, label %.lr.ph.i .lr.ph.i: ; preds = %._crit_edge, %84 @@ -815,11 +815,11 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 br label %193 .lr.ph: ; preds = %59, %166 - %.0108158 = phi ptr [ %167, %166 ], [ %66, %59 ] - %.1110157 = phi i32 [ %.2111, %166 ], [ %.0109164, %59 ] - %.1115156 = phi i32 [ %.2116, %166 ], [ %.0114163, %59 ] - %.1146155 = phi i32 [ %.2147, %166 ], [ %.0145161, %59 ] - %97 = load i32, ptr %.0108158, align 4, !tbaa !14 + %.0108157 = phi ptr [ %167, %166 ], [ %66, %59 ] + %.1110156 = phi i32 [ %.2111, %166 ], [ %.0109167, %59 ] + %.1115155 = phi i32 [ %.2116, %166 ], [ %.0114166, %59 ] + %.1146154 = phi i32 [ %.2147, %166 ], [ %.0145164, %59 ] + %97 = load i32, ptr %.0108157, align 4, !tbaa !14 %98 = zext i32 %97 to i64 %99 = getelementptr inbounds nuw i8, ptr %50, i64 %98 %100 = load i8, ptr %99, align 1, !tbaa !23 @@ -839,7 +839,7 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 %111 = zext i32 %110 to i64 %112 = getelementptr inbounds nuw i32, ptr %.0, i64 %111 %113 = load i32, ptr %112, align 4, !tbaa !14 - %114 = mul i32 %.1115156, 3 + %114 = mul i32 %.1115155, 3 %115 = zext i32 %114 to i64 %116 = getelementptr inbounds nuw i32, ptr %0, i64 %115 store i32 %105, ptr %116, align 4, !tbaa !14 @@ -851,19 +851,19 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 %121 = zext i32 %120 to i64 %122 = getelementptr inbounds nuw i32, ptr %0, i64 %121 store i32 %113, ptr %122, align 4, !tbaa !14 - %123 = add i32 %.1115156, 1 - %124 = zext i32 %.1146155 to i64 + %123 = add i32 %.1115155, 1 + %124 = zext i32 %.1146154 to i64 %125 = getelementptr inbounds nuw i32, ptr %45, i64 %124 store i32 %105, ptr %125, align 4, !tbaa !14 - %126 = add i32 %.1146155, 1 + %126 = add i32 %.1146154, 1 %127 = zext i32 %126 to i64 %128 = getelementptr inbounds nuw i32, ptr %45, i64 %127 store i32 %109, ptr %128, align 4, !tbaa !14 - %129 = add i32 %.1146155, 2 + %129 = add i32 %.1146154, 2 %130 = zext i32 %129 to i64 %131 = getelementptr inbounds nuw i32, ptr %45, i64 %130 store i32 %113, ptr %131, align 4, !tbaa !14 - %132 = add i32 %.1146155, 3 + %132 = add i32 %.1146154, 3 %133 = zext i32 %105 to i64 %134 = getelementptr inbounds nuw i32, ptr %29, i64 %133 %135 = load i32, ptr %134, align 4, !tbaa !14 @@ -881,17 +881,17 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 store i32 %144, ptr %142, align 4, !tbaa !14 %145 = getelementptr inbounds nuw i32, ptr %37, i64 %133 %146 = load i32, ptr %145, align 4, !tbaa !14 - %147 = sub i32 %.1110157, %146 + %147 = sub i32 %.1110156, %146 %148 = icmp ugt i32 %147, %4 br i1 %148, label %149, label %151 149: ; preds = %101 - %150 = add i32 %.1110157, 1 - store i32 %.1110157, ptr %145, align 4, !tbaa !14 + %150 = add i32 %.1110156, 1 + store i32 %.1110156, ptr %145, align 4, !tbaa !14 br label %151 151: ; preds = %149, %101 - %.3112 = phi i32 [ %150, %149 ], [ %.1110157, %101 ] + %.3112 = phi i32 [ %150, %149 ], [ %.1110156, %101 ] %152 = getelementptr inbounds nuw i32, ptr %37, i64 %137 %153 = load i32, ptr %152, align 4, !tbaa !14 %154 = sub i32 %.3112, %153 @@ -922,29 +922,29 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit: ; preds = %84 br label %166 166: ; preds = %165, %.lr.ph - %.2147 = phi i32 [ %132, %165 ], [ %.1146155, %.lr.ph ] - %.2116 = phi i32 [ %123, %165 ], [ %.1115156, %.lr.ph ] - %.2111 = phi i32 [ %.5, %165 ], [ %.1110157, %.lr.ph ] - %167 = getelementptr inbounds nuw i8, ptr %.0108158, i64 4 + %.2147 = phi i32 [ %132, %165 ], [ %.1146154, %.lr.ph ] + %.2116 = phi i32 [ %123, %165 ], [ %.1115155, %.lr.ph ] + %.2111 = phi i32 [ %.5, %165 ], [ %.1110156, %.lr.ph ] + %167 = getelementptr inbounds nuw i8, ptr %.0108157, i64 4 %.not127 = icmp eq ptr %167, %70 br i1 %.not127, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !37 _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread: ; preds = %._crit_edge, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit - %.not19.i = icmp eq i32 %.1146.lcssa, 0 - br i1 %.not19.i, label %.preheader.i, label %.lr.ph.i132 + %.not.i132160 = icmp eq i32 %.1146.lcssa, 0 + br i1 %.not.i132160, label %.preheader.i, label %.lr.ph162 -168: ; preds = %.lr.ph.i132 - %.not.i134 = icmp eq i32 %indvars.i, 0 - br i1 %.not.i134, label %.preheader.i, label %.lr.ph.i132 +168: ; preds = %.lr.ph162 + %.not.i132 = icmp eq i32 %indvars.i, 0 + br i1 %.not.i132, label %.preheader.i, label %.lr.ph162 .preheader.i: ; preds = %168, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread - %169 = zext i32 %.0144162 to i64 + %169 = zext i32 %.0144165 to i64 %170 = icmp ugt i64 %3, %169 - br i1 %170, label %.lr.ph21.i, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread + br i1 %170, label %.lr.ph.i134, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread -.lr.ph.i132: ; preds = %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread, %168 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %168 ], [ %.pre-phi, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread ] - %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 +.lr.ph162: ; preds = %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread, %168 + %indvars.iv.i161 = phi i64 [ %indvars.iv.next.i, %168 ], [ %.pre-phi, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread ] + %indvars.iv.next.i = add nsw i64 %indvars.iv.i161, -1 %indvars.i = trunc i64 %indvars.iv.next.i to i32 %171 = and i64 %indvars.iv.next.i, 4294967295 %172 = getelementptr inbounds nuw i32, ptr %45, i64 %171 @@ -953,23 +953,23 @@ _ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit.thread: ; preds = %._cri %175 = getelementptr inbounds nuw i32, ptr %29, i64 %174 %176 = load i32, ptr %175, align 4, !tbaa !14 %.not17.not.i = icmp eq i32 %176, 0 - br i1 %.not17.not.i, label %168, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit + br i1 %.not17.not.i, label %168, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169 -.lr.ph21.i: ; preds = %.preheader.i, %180 - %.2 = phi i32 [ %181, %180 ], [ %.0144162, %.preheader.i ] +.lr.ph.i134: ; preds = %.preheader.i, %180 + %.2 = phi i32 [ %181, %180 ], [ %.0144165, %.preheader.i ] %177 = phi i64 [ %182, %180 ], [ %169, %.preheader.i ] %178 = getelementptr inbounds nuw i32, ptr %29, i64 %177 %179 = load i32, ptr %178, align 4, !tbaa !14 %.not16.i = icmp eq i32 %179, 0 br i1 %.not16.i, label %180, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit -180: ; preds = %.lr.ph21.i +180: ; preds = %.lr.ph.i134 %181 = add i32 %.2, 1 %182 = zext i32 %181 to i64 %183 = icmp ugt i64 %3, %182 - br i1 %183, label %.lr.ph21.i, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread, !llvm.loop !38 + br i1 %183, label %.lr.ph.i134, label %_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.thread, !llvm.loop !38 -_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit: ; preds = %.lr.ph.i132, %.lr.ph21.i, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit +_ZN7meshoptL20getNextVertexDeadEndEPKjRjS2_S1_m.exit.loopexit169: ; preds = %.lr.ph162, %.lr.ph21.i, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit %.3148 = phi i32 [ %.1146.lcssa, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ 0, %.lr.ph21.i ], [ %indvars.i, %.lr.ph.i132 ] %.1 = phi i32 [ %.0144162, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %.2, %.lr.ph21.i ], [ %.0144162, %.lr.ph.i132 ] %.1107 = phi i32 [ %.1.i, %_ZN7meshoptL21getNextVertexNeighborEPKjS1_S1_S1_jj.exit ], [ %.2, %.lr.ph21.i ], [ %173, %.lr.ph.i132 ] diff --git a/bench/mimalloc/optimized/prim.ll b/bench/mimalloc/optimized/prim.ll index 44cbd1658b3..0129b9d12be 100644 --- a/bench/mimalloc/optimized/prim.ll +++ b/bench/mimalloc/optimized/prim.ll @@ -470,7 +470,7 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn %exitcond.not = icmp eq i32 %4, 256 br i1 %exitcond.not, label %._crit_edge, label %3, !llvm.loop !23 -._crit_edge: ; preds = %2 +2: ; preds = %2 br label %10, !llvm.loop !23 3: ; preds = %0, %2 @@ -485,9 +485,9 @@ define hidden range(i64 1, 4294967296) i64 @_mi_prim_numa_node_count() local_unn split: ; preds = %3 %8 = add nuw nsw i32 %.04, 1 %9 = zext nneg i32 %8 to i64 - br label %10 + br label %._crit_edge -10: ; preds = %split, %._crit_edge +._crit_edge: ; preds = %split, %2 %.0.lcssa = phi i64 [ 257, %._crit_edge ], [ %9, %split ] call void @llvm.lifetime.end.p0(ptr nonnull %1) ret i64 %.0.lcssa diff --git a/bench/minetest/optimized/CFileSystem.ll b/bench/minetest/optimized/CFileSystem.ll index 7bc6d50cb7a..00e8c690d21 100644 --- a/bench/minetest/optimized/CFileSystem.ll +++ b/bench/minetest/optimized/CFileSystem.ll @@ -1687,9 +1687,9 @@ for.body.preheader: ; preds = %entry %3 = and i64 %sub.ptr.div.i.i, 4294967295 %4 = load ptr, ptr %1, align 8, !tbaa !27 %cmp422 = icmp eq ptr %4, %archive - br i1 %cmp422, label %if.then, label %for.inc.preheader + br i1 %cmp422, label %if.then, label %for.body -for.inc.preheader: ; preds = %for.body.preheader +for.body: ; preds = %for.body.preheader %exitcond.not2 = icmp eq i64 %3, 1 br i1 %exitcond.not2, label %cleanup, label %for.body.lr.ph, !llvm.loop !56 @@ -1720,9 +1720,9 @@ if.then: ; preds = %for.body.if.then_cr for.inc: ; preds = %for.body %indvars.iv.next = add nuw nsw i64 %indvars.iv.next3, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %3 - br i1 %exitcond.not, label %for.inc.cleanup.loopexit_crit_edge, label %for.body, !llvm.loop !56 + br i1 %exitcond.not, label %cleanup, label %for.body, !llvm.loop !56 -for.inc.cleanup.loopexit_crit_edge: ; preds = %for.inc +cleanup: ; preds = %for.inc br label %cleanup, !llvm.loop !56 cleanup: ; preds = %for.inc.preheader, %for.inc.cleanup.loopexit_crit_edge, %if.then, %entry diff --git a/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll b/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll index 3b8b2f13cc6..dd53b73fa7e 100644 --- a/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll +++ b/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll @@ -12535,7 +12535,7 @@ define hidden void @"_ZN4moka9sync_base11invalidator28Invalidator$LT$K$C$V$C$S$G br i1 %.not, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %48 .body: ; preds = %37, %.thread, %68, %40, %27, %127, %122 - %.pn13.pn = phi { ptr, i32 } [ %.pn, %127 ], [ %.pn, %122 ], [ %28, %27 ], [ %41, %40 ], [ %eh.lpad-body.i, %68 ], [ %123, %.thread ], [ %41, %37 ] + %.pn13.pn = phi { ptr, i32 } [ %.pn, %127 ], [ %.pn, %122 ], [ %28, %27 ], [ %41, %40 ], [ %eh.lpad-body.i, %68 ], [ %123, %.thread ], [ %40, %37 ] %25 = cmpxchg ptr %1, i8 1, i8 0 release monotonic, align 1, !noalias !1750 %.sroa.18.0.in.i.i.i.i = extractvalue { i8, i1 } %25, 1 br i1 %.sroa.18.0.in.i.i.i.i, label %"_ZN4core3ptr236drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$$GT$$GT$17h4b85d64a2a20c00fE.llvm.3998950267652723875.exit", label %26 @@ -12556,41 +12556,41 @@ define hidden void @"_ZN4moka9sync_base11invalidator28Invalidator$LT$K$C$V$C$S$G %32 = icmp eq i64 %31, 0 br i1 %32, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %.lr.ph.i -33: ; preds = %.lr.ph.i +32: ; preds = %34 %34 = icmp eq i64 %36, %31 - br i1 %34, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %.lr.ph.i + br i1 %34, label %"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit", label %34 -.lr.ph.i: ; preds = %29, %33 +34: ; preds = %29, %32 %.07.i = phi i64 [ %36, %33 ], [ 0, %29 ] %35 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 }, ptr %30, i64 %.07.i %36 = add nuw i64 %.07.i, 1 invoke void @"_ZN4core3ptr143drop_in_place$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$17h117a180a4e25ab7cE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %35) - to label %33 unwind label %40 + to label %33 unwind label %39 -37: ; preds = %.lr.ph10.i +37: ; preds = %41 %38 = add i64 %.18.i, 1 - %39 = icmp eq i64 %38, %31 - br i1 %39, label %.body, label %.lr.ph10.i + %38 = icmp eq i64 %38, %31 + br i1 %38, label %.body, label %41 -40: ; preds = %.lr.ph.i - %41 = landingpad { ptr, i32 } +39: ; preds = %34 + %40 = landingpad { ptr, i32 } cleanup %42 = icmp eq i64 %36, %31 br i1 %42, label %.body, label %.lr.ph10.i -.lr.ph10.i: ; preds = %40, %37 +41: ; preds = %40, %37 %.18.i = phi i64 [ %38, %37 ], [ %36, %40 ] %43 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 }, ptr %30, i64 %.18.i invoke void @"_ZN4core3ptr143drop_in_place$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$17h117a180a4e25ab7cE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %43) #36 to label %37 unwind label %44 -44: ; preds = %.lr.ph10.i +44: ; preds = %41 %45 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #37 unreachable -"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit": ; preds = %33, %29, %124, %23 +"_ZN4core3ptr153drop_in_place$LT$$u5b$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$u5d$$GT$17ha04f10e8941795b9E.exit": ; preds = %32, %29, %124, %23 %46 = cmpxchg ptr %1, i8 1, i8 0 release monotonic, align 1, !noalias !1755 %.sroa.18.0.in.i.i.i.i16 = extractvalue { i8, i1 } %46, 1 br i1 %.sroa.18.0.in.i.i.i.i16, label %"_ZN4core3ptr236drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$alloc..vec..Vec$LT$moka..sync_base..invalidator..Predicate$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_mvcc..block..Block$GT$$GT$$GT$$GT$$GT$17h4b85d64a2a20c00fE.llvm.3998950267652723875.exit17", label %47 diff --git a/bench/mitsuba3/optimized/filesystem.ll b/bench/mitsuba3/optimized/filesystem.ll index 05ed197ec01..1bd8539b68b 100644 --- a/bench/mitsuba3/optimized/filesystem.ll +++ b/bench/mitsuba3/optimized/filesystem.ll @@ -998,21 +998,21 @@ _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stri _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit %.pre = load ptr, ptr %10, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 -24 - %.pre24 = load i8, ptr %.phi.trans.insert, align 8 - %.phi.trans.insert25 = getelementptr inbounds i8, ptr %.pre, i64 -16 - %.pre26 = load i64, ptr %.phi.trans.insert25, align 8 - %.pre27 = and i8 %.pre24, 1 - %.pre28 = lshr i8 %.pre24, 1 - %.pre30 = zext nneg i8 %.pre28 to i64 + %.pre22 = load i8, ptr %.phi.trans.insert, align 8 + %.phi.trans.insert23 = getelementptr inbounds i8, ptr %.pre, i64 -16 + %.pre24 = load i64, ptr %.phi.trans.insert23, align 8 + %.pre25 = and i8 %.pre22, 1 + %.pre26 = lshr i8 %.pre22, 1 + %.pre28 = zext nneg i8 %.pre26 to i64 br label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge, %13 - %.pre-phi31 = phi i64 [ %.pre30, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %20, %13 ] - %.pre-phi = phi i8 [ %.pre27, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %16, %13 ] - %28 = phi i64 [ %.pre26, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %18, %13 ] + %.pre-phi29 = phi i64 [ %.pre28, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %20, %13 ] + %.pre-phi = phi i8 [ %.pre25, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %16, %13 ] + %28 = phi i64 [ %.pre24, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %18, %13 ] %29 = phi ptr [ %.pre, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %11, %13 ] %.not.i.i9 = icmp eq i8 %.pre-phi, 0 - %30 = select i1 %.not.i.i9, i64 %.pre-phi31, i64 %28 + %30 = select i1 %.not.i.i9, i64 %.pre-phi29, i64 %28 %.not.i10 = icmp eq i64 %30, 2 br i1 %.not.i10, label %31, label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit12.thread @@ -1355,21 +1355,21 @@ _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stri _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit %.pre = load ptr, ptr %11, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 -24 - %.pre37 = load i8, ptr %.phi.trans.insert, align 8 - %.phi.trans.insert38 = getelementptr inbounds i8, ptr %.pre, i64 -16 - %.pre39 = load i64, ptr %.phi.trans.insert38, align 8 - %.pre40 = and i8 %.pre37, 1 - %.pre41 = lshr i8 %.pre37, 1 - %.pre43 = zext nneg i8 %.pre41 to i64 + %.pre35 = load i8, ptr %.phi.trans.insert, align 8 + %.phi.trans.insert36 = getelementptr inbounds i8, ptr %.pre, i64 -16 + %.pre37 = load i64, ptr %.phi.trans.insert36, align 8 + %.pre38 = and i8 %.pre35, 1 + %.pre39 = lshr i8 %.pre35, 1 + %.pre41 = zext nneg i8 %.pre39 to i64 br label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread _ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread: ; preds = %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge, %14 - %.pre-phi44 = phi i64 [ %.pre43, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %21, %14 ] - %.pre-phi = phi i8 [ %.pre40, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %17, %14 ] - %29 = phi i64 [ %.pre39, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %19, %14 ] + %.pre-phi42 = phi i64 [ %.pre41, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %21, %14 ] + %.pre-phi = phi i8 [ %.pre38, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %17, %14 ] + %29 = phi i64 [ %.pre37, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %19, %14 ] %30 = phi ptr [ %.pre, %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit._ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit.thread_crit_edge ], [ %12, %14 ] %.not.i.i16 = icmp eq i8 %.pre-phi, 0 - %31 = select i1 %.not.i.i16, i64 %.pre-phi44, i64 %29 + %31 = select i1 %.not.i.i16, i64 %.pre-phi42, i64 %29 %.not.i17 = icmp eq i64 %31, 2 br i1 %.not.i17, label %32, label %_ZNSt3__1eqB8ne190000IcNS_11char_traitsIcEENS_9allocatorIcEEEEbRKNS_12basic_stringIT_T0_T1_EEPKS6_.exit19.thread diff --git a/bench/ncnn/optimized/imreadwrite.ll b/bench/ncnn/optimized/imreadwrite.ll index 57547eacda1..58f46721087 100644 --- a/bench/ncnn/optimized/imreadwrite.ll +++ b/bench/ncnn/optimized/imreadwrite.ll @@ -13458,13 +13458,13 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL19stbi__build_huffmanP13s %exitcond114 = icmp sgt i32 %.06073, 255 br i1 %exitcond114, label %.loopexit65.sink.split, label %.lr.ph117 -12: ; preds = %.lr.ph117 +12: ; preds = %.lr.ph117 %13 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv.next store i8 %8, ptr %13, align 1, !tbaa !23 %exitcond = icmp eq i32 %14, %10 br i1 %exitcond, label %.loopexit65.sink.split, label %.lr.ph117, !llvm.loop !269 -.lr.ph117: ; preds = %.lr.ph, %12 +.lr.ph117:; preds = %.lr.ph, %12 %.05572116 = phi i32 [ %14, %12 ], [ 0, %.lr.ph ] %indvars.iv115 = phi i64 [ %indvars.iv.next, %12 ], [ %9, %.lr.ph ] %indvars.iv.next = add nsw i64 %indvars.iv115, 1 diff --git a/bench/nghttp2/optimized/sfparse.ll b/bench/nghttp2/optimized/sfparse.ll index ebea5f37ab7..34ba071774b 100644 --- a/bench/nghttp2/optimized/sfparse.ll +++ b/bench/nghttp2/optimized/sfparse.ll @@ -506,7 +506,7 @@ define hidden range(i32 -2, 1) i32 @sfparse_parser_inner_list(ptr noundef captur i32 0, label %6 i32 1, label %.preheader i32 3, label %parser_skip_params.exit.thread - i32 2, label %20 + i32 2, label %18 ] 6: ; preds = %2 @@ -555,7 +555,7 @@ parser_skip_params.exit.thread: ; preds = %.preheader, %2 i8 41, label %parser_discard_sp.exit36.thread50 ] -.lr.ph.i33.preheader.preheader: ; preds = %14 +.lr.ph.i33thread-pre-split: ; preds = %14 %16 = getelementptr inbounds nuw i8, ptr %.val26, i64 1 store ptr %16, ptr %0, align 8, !tbaa !10 %.not.i3557 = icmp eq ptr %16, %.val27 @@ -567,19 +567,19 @@ parser_skip_params.exit.thread: ; preds = %.preheader, %2 .lr.ph.i33thread-pre-split: ; preds = %.lr.ph.i33thread-pre-split.lr.ph, %.lr.ph.i33.preheader %17 = phi ptr [ %16, %.lr.ph.i33thread-pre-split.lr.ph ], [ %19, %.lr.ph.i33.preheader ] %.pr = load i8, ptr %17, align 1, !tbaa !12 - %18 = icmp eq i8 %.pr, 32 - br i1 %18, label %.lr.ph.i33.preheader, label %parser_discard_sp.exit36 + %16 = icmp eq i8 %.pr, 32 + br i1 %16, label %.lr.ph.i33.preheader, label %parser_discard_sp.exit36 .lr.ph.i33.preheader: ; preds = %.lr.ph.i33thread-pre-split %19 = getelementptr inbounds nuw i8, ptr %17, i64 1 store ptr %19, ptr %0, align 8, !tbaa !10 %.not.i35 = icmp eq ptr %19, %.val27 - br i1 %.not.i35, label %.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge, label %.lr.ph.i33thread-pre-split, !llvm.loop !13 + br i1 %.not.i35, label %parser_skip_params.exit, label %.lr.ph.i33thread-pre-split, !llvm.loop !13 default.unreachable48: ; preds = %.preheader, %2 unreachable -20: ; preds = %2 +18: ; preds = %2 tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 1329, ptr noundef nonnull @__PRETTY_FUNCTION__.sfparse_parser_inner_list) #8 unreachable @@ -588,32 +588,32 @@ parser_discard_sp.exit36thread-pre-split: ; preds = %parser_discard_sp.e br label %parser_discard_sp.exit36 parser_discard_sp.exit36: ; preds = %.lr.ph.i33thread-pre-split, %parser_discard_sp.exit36thread-pre-split - %21 = phi i8 [ %.pr49, %parser_discard_sp.exit36thread-pre-split ], [ %.pr, %.lr.ph.i33thread-pre-split ] - %22 = phi ptr [ %.val28, %parser_discard_sp.exit36thread-pre-split ], [ %17, %.lr.ph.i33thread-pre-split ] - %23 = icmp eq i8 %21, 41 - br i1 %23, label %parser_discard_sp.exit36.thread50, label %26 + %19 = phi i8 [ %.pr49, %parser_discard_sp.exit36thread-pre-split ], [ %.pr, %.lr.ph.i33thread-pre-split ] + %20 = phi ptr [ %.val28, %parser_discard_sp.exit36thread-pre-split ], [ %17, %.lr.ph.i33thread-pre-split ] + %21 = icmp eq i8 %19, 41 + br i1 %21, label %parser_discard_sp.exit36.thread50, label %24 parser_discard_sp.exit36.thread50: ; preds = %14, %parser_discard_sp.exit36 - %24 = phi ptr [ %22, %parser_discard_sp.exit36 ], [ %.val26, %14 ] - %25 = getelementptr inbounds nuw i8, ptr %24, i64 1 - store ptr %25, ptr %0, align 8, !tbaa !10 + %22 = phi ptr [ %20, %parser_discard_sp.exit36 ], [ %.val26, %14 ] + %23 = getelementptr inbounds nuw i8, ptr %22, i64 1 + store ptr %23, ptr %0, align 8, !tbaa !10 br label %parser_skip_params.exit.sink.split -26: ; preds = %parser_discard_sp.exit36 - %27 = tail call fastcc i32 @parser_bare_item(ptr noundef nonnull %0, ptr noundef %1) - %.not24 = icmp eq i32 %27, 0 +24: ; preds = %parser_discard_sp.exit36 + %25 = tail call fastcc i32 @parser_bare_item(ptr noundef nonnull %0, ptr noundef %1) + %.not24 = icmp eq i32 %25, 0 br i1 %.not24, label %parser_skip_params.exit.sink.split, label %parser_skip_params.exit -parser_skip_params.exit.sink.split: ; preds = %26, %parser_discard_sp.exit36.thread50 +parser_skip_params.exit.sink.split: ; preds = %24, %parser_discard_sp.exit36.thread50 %.sink54 = phi i32 [ -8, %parser_discard_sp.exit36.thread50 ], [ -4, %26 ] %.0.ph = phi i32 [ -2, %parser_discard_sp.exit36.thread50 ], [ 0, %26 ] - %28 = load i32, ptr %3, align 8, !tbaa !3 - %29 = and i32 %28, %.sink54 - %30 = or disjoint i32 %29, 1 - store i32 %30, ptr %3, align 8, !tbaa !3 + %26 = load i32, ptr %3, align 8, !tbaa !3 + %27 = and i32 %26, %.sink54 + %28 = or disjoint i32 %27, 1 + store i32 %28, ptr %3, align 8, !tbaa !3 br label %parser_skip_params.exit -.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge: ; preds = %.lr.ph.i33.preheader +parser_skip_params.exit: ; preds = %.lr.ph.i33.preheader br label %parser_skip_params.exit, !llvm.loop !13 parser_skip_params.exit: ; preds = %.preheader, %.lr.ph.i33.preheader.preheader, %.lr.ph.i33.preheader.parser_skip_params.exit.loopexit_crit_edge, %parser_skip_params.exit.sink.split, %26, %14, %parser_skip_params.exit.thread, %parser_discard_sp.exit diff --git a/bench/nix/optimized/eval-settings.ll b/bench/nix/optimized/eval-settings.ll index 2325be27586..fe0f054357b 100644 --- a/bench/nix/optimized/eval-settings.ll +++ b/bench/nix/optimized/eval-settings.ll @@ -1886,23 +1886,23 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i34.i %511 = icmp eq ptr %.sroa.068.4.i403, %510 br i1 %511, label %.critedge2.i, label %.lr.ph -512: ; preds = %.lr.ph +512: ; preds = %.lr.ph %.sroa.068.4.i = getelementptr inbounds nuw i8, ptr %.sroa.068.4.i404, i64 1 %513 = icmp eq ptr %.sroa.068.4.i, %510 br i1 %513, label %.critedge2.i, label %.lr.ph, !llvm.loop !10 -.lr.ph: ; preds = %507, %512 +.lr.ph:; preds = %507, %512 %.sroa.068.4.i404 = phi ptr [ %.sroa.068.4.i, %512 ], [ %.sroa.068.4.i403, %507 ] %514 = load i8, ptr %.sroa.068.4.i404, align 1 %.not27.i = icmp eq i8 %514, 58 - br i1 %.not27.i, label %..critedge2.i.loopexit_crit_edge405, label %512, !llvm.loop !10 + br i1 %.not27.i, label %.critedge2.i, label %512, !llvm.loop !10 515: ; preds = %502, %496 %516 = landingpad { ptr, i32 } cleanup br label %560 -..critedge2.i.loopexit_crit_edge405: ; preds = %.lr.ph +.critedge2.i: ; preds = %.lr.ph br label %.critedge2.i, !llvm.loop !10 .critedge2.i: ; preds = %512, %507, %..critedge2.i.loopexit_crit_edge405, %506 diff --git a/bench/node/optimized/libnode.string_decoder.ll b/bench/node/optimized/libnode.string_decoder.ll index f570dbb7307..dfff022c45e 100644 --- a/bench/node/optimized/libnode.string_decoder.ll +++ b/bench/node/optimized/libnode.string_decoder.ll @@ -246,7 +246,7 @@ for.cond107.preheader: ; preds = %land.lhs.true %cmp114139 = icmp eq i32 %and113138, 128 br i1 %cmp114139, label %if.then115.preheader, label %if.else126 -if.then115.preheader: ; preds = %for.cond107.preheader +for.cond107: ; preds = %for.cond107.preheader %cmp119156 = icmp ugt i8 %inc110135, 3 %cmp121157 = icmp eq i64 %sub100, 0 %or.cond158 = or i1 %cmp121157, %cmp119156 @@ -271,7 +271,7 @@ if.then115: ; preds = %for.cond107 %or.cond = or i1 %cmp121, %cmp119 br i1 %or.cond, label %if.then122, label %for.cond107, !llvm.loop !7 -if.then122: ; preds = %if.then115, %if.then115.preheader +if.then122: ; preds = %if.then115, %for.cond107 store i8 0, ptr %arrayidx109, align 1 br label %if.end223 diff --git a/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll b/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll index 3a6edaa70eb..c0415253473 100644 --- a/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll +++ b/bench/nom-rs/optimized/5c7a2c3z1ziid79c.ll @@ -265,7 +265,7 @@ define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$alloc..vec..in_pla %11 = add nuw i64 %.07.i.i, 1 call void @llvm.lifetime.start.p0(ptr nonnull %1), !noalias !51 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h607f29a7f26bd4e3E.llvm.3482039573647521366"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10) - to label %.noexc.i.i unwind label %22 + to label %.noexc.i.i unwind label %21 .noexc.i.i: ; preds = %9 %12 = load i64, ptr %7, align 8, !range !64, !noalias !51, !noundef !12 @@ -287,28 +287,28 @@ define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$alloc..vec..in_pla %18 = icmp eq i64 %11, %5 br i1 %18, label %"_ZN89_$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he140a7f4ae4dbf72E.exit", label %9 -19: ; preds = %.lr.ph10.i.i +19: ; preds = %23 %20 = add i64 %.18.i.i, 1 - %21 = icmp eq i64 %20, %5 - br i1 %21, label %._crit_edge11.i.i, label %.lr.ph10.i.i + %20 = icmp eq i64 %20, %5 + br i1 %20, label %26, label %23 -22: ; preds = %9 - %23 = landingpad { ptr, i32 } +21: ; preds = %9 + %22 = landingpad { ptr, i32 } cleanup %24 = icmp eq i64 %11, %5 br i1 %24, label %._crit_edge11.i.i, label %.lr.ph10.i.i -.lr.ph10.i.i: ; preds = %22, %19 +23: ; preds = %22, %19 %.18.i.i = phi i64 [ %20, %19 ], [ %11, %22 ] %25 = getelementptr inbounds { { { { i64, ptr, {} }, i64 } }, { i8, [23 x i8] } }, ptr %.0.val, i64 %.18.i.i invoke fastcc void @"_ZN4core3ptr81drop_in_place$LT$$LP$alloc..string..String$C$nom..error..VerboseErrorKind$RP$$GT$17hc42087fc2d90126bE"(ptr noalias noundef align 8 dereferenceable(48) %25) #12 - to label %19 unwind label %26 + to label %19 unwind label %27 -._crit_edge11.i.i: ; preds = %19, %22 - resume { ptr, i32 } %23 +26: ; preds = %19, %22 + resume { ptr, i32 } %22 -26: ; preds = %.lr.ph10.i.i - %27 = landingpad { ptr, i32 } +27: ; preds = %23 + %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #13 unreachable @@ -338,7 +338,7 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla %11 = add nuw i64 %.07.i.i, 1 call void @llvm.lifetime.start.p0(ptr nonnull %1), !noalias !65 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h607f29a7f26bd4e3E.llvm.3482039573647521366"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10) - to label %.noexc.i.i unwind label %22 + to label %.noexc.i.i unwind label %21 .noexc.i.i: ; preds = %9 %12 = load i64, ptr %7, align 8, !range !64, !noalias !65, !noundef !12 @@ -360,28 +360,28 @@ define internal fastcc void @"_ZN4core3ptr131drop_in_place$LT$alloc..vec..in_pla %18 = icmp eq i64 %11, %5 br i1 %18, label %"_ZN89_$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7125aef01a03bcecE.exit", label %9 -19: ; preds = %.lr.ph10.i.i +19: ; preds = %23 %20 = add i64 %.18.i.i, 1 - %21 = icmp eq i64 %20, %5 - br i1 %21, label %._crit_edge11.i.i, label %.lr.ph10.i.i + %20 = icmp eq i64 %20, %5 + br i1 %20, label %26, label %23 -22: ; preds = %9 - %23 = landingpad { ptr, i32 } +21: ; preds = %9 + %22 = landingpad { ptr, i32 } cleanup %24 = icmp eq i64 %11, %5 br i1 %24, label %._crit_edge11.i.i, label %.lr.ph10.i.i -.lr.ph10.i.i: ; preds = %22, %19 +23: ; preds = %22, %19 %.18.i.i = phi i64 [ %20, %19 ], [ %11, %22 ] %25 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { i8, [23 x i8] } }, ptr %.0.val, i64 %.18.i.i invoke fastcc void @"_ZN4core3ptr85drop_in_place$LT$$LP$alloc..vec..Vec$LT$u8$GT$$C$nom..error..VerboseErrorKind$RP$$GT$17h095cc7a8d2e1b564E"(ptr noalias noundef align 8 dereferenceable(48) %25) #12 - to label %19 unwind label %26 + to label %19 unwind label %27 -._crit_edge11.i.i: ; preds = %19, %22 - resume { ptr, i32 } %23 +26: ; preds = %19, %22 + resume { ptr, i32 } %22 -26: ; preds = %.lr.ph10.i.i - %27 = landingpad { ptr, i32 } +27: ; preds = %23 + %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #13 unreachable diff --git a/bench/nori/optimized/common.ll b/bench/nori/optimized/common.ll index 8a7f68cccf8..c8dc4fb116e 100644 --- a/bench/nori/optimized/common.ll +++ b/bench/nori/optimized/common.ll @@ -2049,22 +2049,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr 28: ; preds = %9 %29 = landingpad { ptr, i32 } cleanup - br label %59 + br label %60 30: ; preds = %12 %31 = landingpad { ptr, i32 } cleanup - br label %58 + br label %59 32: ; preds = %14 %33 = landingpad { ptr, i32 } cleanup - br label %57 + br label %58 34: ; preds = %16 %35 = landingpad { ptr, i32 } cleanup - br label %56 + br label %57 36: ; preds = %.noexc, %18 %37 = landingpad { ptr, i32 } @@ -2074,12 +2074,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr .body: ; preds = %21, %36 %eh.lpad-body = phi { ptr, i32 } [ %37, %36 ], [ %22, %21 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #31 - br label %55 + br label %56 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit %39 = landingpad { ptr, i32 } cleanup - br label %54 + br label %55 40: ; preds = %24 %41 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #31 @@ -2087,26 +2087,26 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr %43 = icmp sgt i32 %42, 0 br i1 %43, label %.lr.ph.preheader, label %.critedge -.lr.ph.preheader: ; preds = %40 +43: ; preds = %40 %44 = and i64 %41, 2147483647 br label %.lr.ph -45: ; preds = %50 +47: ; preds = %53 %46 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %46, label %.lr.ph, label %.critedge, !llvm.loop !29 + br i1 %46, label %49, label %.critedge, !llvm.loop !29 -.lr.ph: ; preds = %.lr.ph.preheader, %45 +49: ; preds = %43, %47 %indvars.iv = phi i64 [ %44, %.lr.ph.preheader ], [ %indvars.iv.next, %45 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 %47 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %11, i64 noundef %indvars.iv.next) to label %48 unwind label %52 -48: ; preds = %.lr.ph +51: ; preds = %49 %49 = load i8, ptr %47, align 1 %.not20 = icmp eq i8 %49, 10 br i1 %.not20, label %.critedge, label %50 -50: ; preds = %48 +53: ; preds = %51 %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 noundef signext 32) to label %45 unwind label %52, !llvm.loop !29 @@ -2114,37 +2114,37 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr %53 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #31 - br label %54 + br label %55 .critedge: ; preds = %48, %45, %40, %24 ret void -54: ; preds = %52, %38 +55: ; preds = %52, %38 %.pn = phi { ptr, i32 } [ %53, %52 ], [ %39, %38 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #31 - br label %55 + br label %56 -55: ; preds = %54, %.body +56: ; preds = %55, %.body %.pn.pn = phi { ptr, i32 } [ %.pn, %54 ], [ %eh.lpad-body, %.body ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #31 - br label %56 + br label %57 -56: ; preds = %55, %34 +57: ; preds = %56, %34 %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %55 ], [ %35, %34 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #31 - br label %57 + br label %58 -57: ; preds = %56, %32 +58: ; preds = %57, %32 %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %56 ], [ %33, %32 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #31 - br label %58 + br label %59 -58: ; preds = %57, %30 +59: ; preds = %58, %30 %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %57 ], [ %31, %30 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #31 - br label %59 + br label %60 -59: ; preds = %58, %28 +60: ; preds = %59, %28 %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %58 ], [ %29, %28 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #31 resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn diff --git a/bench/open3d/optimized/contrib.ll b/bench/open3d/optimized/contrib.ll index ecf357bcec5..159c2114a3e 100644 --- a/bench/open3d/optimized/contrib.ll +++ b/bench/open3d/optimized/contrib.ll @@ -21171,9 +21171,9 @@ _ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_po %7 = load i32, ptr %5, align 8, !tbaa !111 %8 = add i32 %7, 1 %9 = icmp eq i32 %8, 0 - br i1 %9, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit + br i1 %9, label %10, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit -_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46: ; preds = %6 +10: ; preds = %6 store ptr %5, ptr %3, align 8, !alias.scope !785 br label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split @@ -21184,25 +21184,25 @@ _ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_po %.not32 = icmp eq ptr %.sroa.01.0.copyload.pre.i, null br i1 %.not32, label %.split.us, label %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split, !llvm.loop !788 -.noexc: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split +_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split.preheader: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split store ptr %15, ptr %0, align 8 %.not.i = icmp eq ptr %15, null br i1 %.not.i, label %10, label %_ZNSt5arrayIN8pybind116objectELm1EED2Ev.exit -10: ; preds = %.noexc +12: ; preds = %.noexc invoke void @_ZN8pybind1113pybind11_failEPKc(ptr noundef nonnull @.str.90) #30 - to label %11 unwind label %12 + to label %11 unwind label %14 -11: ; preds = %10 +13: ; preds = %12 unreachable -12: ; preds = %10 - %13 = landingpad { ptr, i32 } +14: ; preds = %12 + %15 = landingpad { ptr, i32 } cleanup tail call void @_ZN8pybind116objectD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #29 br label %.body -_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.split: ; preds = %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit +.split35.us: ; preds = %10, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit %14 = phi ptr [ %5, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit.thread46 ], [ %.sroa.01.0.copyload.pre.i, %_ZN8pybind116detail15pyobject_casterINS_6handleEE4castERKS2_NS_19return_value_policyES2_.exit ] %15 = invoke ptr @PyTuple_New(i64 noundef 1) to label %.noexc unwind label %28 @@ -21263,8 +21263,8 @@ _ZNSt5arrayIN8pybind116objectELm1EED2Ev.exit: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void -.body: ; preds = %28, %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %27 - %.pn.pn = phi { ptr, i32 } [ %.pn31, %27 ], [ %21, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %29, %28 ], [ %13, %12 ] +.body: ; preds = %28, %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %27 + %.pn.pn = phi { ptr, i32 } [ %.pn31, %27 ], [ %21, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %29, %28 ], [ %15, %12 ] call void @_ZNSt5arrayIN8pybind116objectELm1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #29 call void @llvm.lifetime.end.p0(ptr nonnull %3) resume { ptr, i32 } %.pn.pn diff --git a/bench/opencv/optimized/jp2.ll b/bench/opencv/optimized/jp2.ll index f7a2b30a8ac..3e23f1854aa 100644 --- a/bench/opencv/optimized/jp2.ll +++ b/bench/opencv/optimized/jp2.ll @@ -518,10 +518,10 @@ opj_jp2_free_pclr.exit: ; preds = %131, %142 %exitcond.not150 = icmp eq i8 %151, 1 br i1 %exitcond.not150, label %._crit_edge.i27, label %.lr.ph152, !llvm.loop !58 -.lr.ph152: ; preds = %.lr.ph.preheader +.lr.ph: ; preds = %.lr.ph.preheader br label %161, !llvm.loop !58 -.lr.ph: ; preds = %161 +161: ; preds = %161 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.lr.ph.._crit_edge.i27_crit_edge, label %161, !llvm.loop !58 @@ -546,7 +546,7 @@ opj_jp2_free_pclr.exit: ; preds = %131, %142 %170 = tail call i32 (ptr, i32, ptr, ...) @opj_event_msg(ptr noundef %2, i32 noundef 1, ptr noundef nonnull @.str.21, i32 noundef %.lcssa) #6 br label %opj_jp2_check_color.exit.thread -.lr.ph.._crit_edge.i27_crit_edge: ; preds = %.lr.ph +._crit_edge.i27: ; preds = %.lr.ph br label %._crit_edge.i27, !llvm.loop !58 ._crit_edge.i27: ; preds = %.lr.ph.._crit_edge.i27_crit_edge, %.lr.ph.preheader diff --git a/bench/openjdk/optimized/elfFile.ll b/bench/openjdk/optimized/elfFile.ll index 25bdd249745..b75c00d7cd2 100644 --- a/bench/openjdk/optimized/elfFile.ll +++ b/bench/openjdk/optimized/elfFile.ll @@ -4230,16 +4230,16 @@ _ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit: ; preds = %4, %13 %25 = icmp eq i32 %1, 1 br i1 %25, label %._crit_edge, label %.lr.ph42 -26: ; preds = %85 +25: ; preds = %85 %27 = add i32 %.02841, 1 %28 = icmp eq i32 %27, %1 - br i1 %28, label %._crit_edge, label %.lr.ph42, !llvm.loop !22 + br i1 %28, label %28, label %30, !llvm.loop !22 -._crit_edge: ; preds = %26, %.lr.ph +28: ; preds = %25, %.lr.ph %29 = tail call noundef zeroext i1 @_ZN9DwarfFile17LineNumberProgram13read_filenameEPcm(ptr noundef nonnull align 8 dereferenceable(113) %0, ptr noundef %2, i64 noundef %3) br label %.loopexit -.lr.ph42: ; preds = %.lr.ph, %26 +30: ; preds = %.lr.ph, %25 %.02841 = phi i32 [ %27, %26 ], [ 1, %.lr.ph ] %30 = phi i64 [ %88, %26 ], [ %22, %.lr.ph ] call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -4254,7 +4254,7 @@ _ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit: ; preds = %4, %13 %or.cond.i = select i1 %34, i1 %36, i1 false br i1 %or.cond.i, label %.split.us.i, label %_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread -.split.us.i: ; preds = %.lr.ph42, %46 +.split.us.i: ; preds = %30, %46 %37 = load i64, ptr %18, align 8 %38 = icmp ne i64 %37, -1 %39 = load i64, ptr %19, align 8 @@ -4275,7 +4275,7 @@ _ZN9DwarfFile21MarkedDwarfFileReader12set_positionEl.exit: ; preds = %4, %13 %48 = icmp eq i8 %47, 0 br i1 %48, label %49, label %.split.us.i, !llvm.loop !18 -_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread: ; preds = %.lr.ph42, %.split.us.i, %41 +_ZN9DwarfFile21MarkedDwarfFileReader11read_stringEPcm.exit.thread: ; preds = %30, %.split.us.i, %41 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %.loopexit diff --git a/bench/openjdk/optimized/type.ll b/bench/openjdk/optimized/type.ll index c903f73ea62..b48664b5150 100644 --- a/bench/openjdk/optimized/type.ll +++ b/bench/openjdk/optimized/type.ll @@ -15334,7 +15334,7 @@ define hidden noundef nonnull ptr @_ZNK14TypeInterfaces17intersection_withEPKS_( %exitcond.not.not94 = icmp eq i64 %29, %24 br i1 %exitcond.not.not94, label %.critedge2, label %.lr.ph96, !llvm.loop !28 -.lr.ph96: ; preds = %.critedge4.us.preheader +30: ; preds = %.critedge4.us.preheader br label %30, !llvm.loop !28 30: ; preds = %.lr.ph96, %.critedge4.us @@ -15347,13 +15347,13 @@ define hidden noundef nonnull ptr @_ZNK14TypeInterfaces17intersection_withEPKS_( .critedge4.us: ; preds = %30 %exitcond.not.not = icmp eq i64 %indvars.iv.next, %29 - br i1 %exitcond.not.not, label %.critedge4.us..critedge2.loopexit_crit_edge, label %30, !llvm.loop !28 + br i1 %exitcond.not.not, label %.critedge2, label %30, !llvm.loop !28 .critedge2.loopexit.split.loop.exit: ; preds = %30 %34 = trunc nsw i64 %indvars.iv.next to i32 br label %.critedge2 -.critedge4.us..critedge2.loopexit_crit_edge: ; preds = %.critedge4.us +.critedge2: ; preds = %.critedge4.us br label %.critedge2, !llvm.loop !28 .critedge2: ; preds = %.critedge4.us.preheader, %.critedge4.us..critedge2.loopexit_crit_edge, %.critedge2.loopexit.split.loop.exit, %.lr.ph, %18 diff --git a/bench/openspiel/optimized/infostate_tree.ll b/bench/openspiel/optimized/infostate_tree.ll index b58a66287d4..833d5746db0 100644 --- a/bench/openspiel/optimized/infostate_tree.ll +++ b/bench/openspiel/optimized/infostate_tree.ll @@ -10513,13 +10513,13 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %7 = ptrtoint ptr %1 to i64 %8 = sub i64 %7, %6 %9 = icmp sgt i64 %8, 512 - br i1 %9, label %.lr.ph.preheader, label %.loopexit + br i1 %9, label %.lr.ph, label %.loopexit -.lr.ph.preheader: ; preds = %3 +.lr.ph: ; preds = %3 %10 = icmp eq i64 %2, 0 br i1 %10, label %.lr.ph._crit_edge, label %.lr.ph20 -.lr.ph: ; preds = %.lr.ph20 +11: ; preds = %.lr.ph20 %11 = icmp eq i64 %16, 0 br i1 %11, label %.lr.ph._crit_edge, label %.lr.ph20, !llvm.loop !87 @@ -10544,7 +10544,7 @@ _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIc call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.lr.ph20: ; preds = %.lr.ph.preheader, %.lr.ph +16: ; preds = %11, %.lr.ph %storemerge1319 = phi ptr [ %17, %.lr.ph ], [ %1, %.lr.ph.preheader ] %.01418 = phi i64 [ %16, %.lr.ph ], [ %2, %.lr.ph.preheader ] %16 = add nsw i64 %.01418, -1 @@ -10555,7 +10555,7 @@ _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIc %20 = icmp sgt i64 %19, 512 br i1 %20, label %.lr.ph, label %.loopexit, !llvm.loop !87 -.loopexit: ; preds = %.lr.ph20, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit +.loopexit: ; preds = %16, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_SF_T0_.exit ret void } diff --git a/bench/openssl/optimized/rsa_kem.ll b/bench/openssl/optimized/rsa_kem.ll index f6bab9938a0..d7cac860992 100644 --- a/bench/openssl/optimized/rsa_kem.ll +++ b/bench/openssl/optimized/rsa_kem.ll @@ -354,14 +354,14 @@ ossl_param_is_empty.exit: ; preds = %4 %13 = getelementptr inbounds nuw i8, ptr %8, i64 16 %14 = load ptr, ptr %13, align 8, !tbaa !23 %15 = icmp eq ptr %14, null - br i1 %15, label %ossl_param_is_empty.exit.thread, label %rsakem_opname2id.exit + br i1 %15, label %ossl_param_is_empty.exit.thread, label %.preheader.i.i -rsakem_opname2id.exit: ; preds = %12 +.preheader.i.i: ; preds = %12 %16 = tail call i32 @OPENSSL_strcasecmp(ptr noundef nonnull @.str.4, ptr noundef nonnull %14) #5 - %.not17 = icmp eq i32 %16, 0 - br i1 %.not17, label %17, label %ossl_param_is_empty.exit.thread + %17 = icmp eq i32 %16, 0 + br i1 %17, label %rsakem_opname2id.exit, label %ossl_param_is_empty.exit.thread -17: ; preds = %rsakem_opname2id.exit +rsakem_opname2id.exit: ; preds = %.preheader.i.i %18 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 0, ptr %18, align 8, !tbaa !11 br label %ossl_param_is_empty.exit.thread @@ -435,19 +435,19 @@ ossl_param_is_empty.exit.i: ; preds = %14 %25 = getelementptr inbounds nuw i8, ptr %20, i64 16 %26 = load ptr, ptr %25, align 8, !tbaa !23 %27 = icmp eq ptr %26, null - br i1 %27, label %rsakem_set_ctx_params.exit, label %rsakem_opname2id.exit.i + br i1 %27, label %rsakem_set_ctx_params.exit, label %.preheader.i.i.i -rsakem_opname2id.exit.i: ; preds = %24 +.preheader.i.i.i: ; preds = %24 %28 = call i32 @OPENSSL_strcasecmp(ptr noundef nonnull @.str.4, ptr noundef nonnull %26) #5 - %.not17.i = icmp eq i32 %28, 0 - br i1 %.not17.i, label %29, label %rsakem_set_ctx_params.exit + %29 = icmp eq i32 %28, 0 + br i1 %29, label %rsakem_opname2id.exit.i, label %rsakem_set_ctx_params.exit -29: ; preds = %rsakem_opname2id.exit.i +rsakem_opname2id.exit.i: ; preds = %.preheader.i.i.i %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 0, ptr %30, align 8, !tbaa !11 br label %rsakem_set_ctx_params.exit -rsakem_set_ctx_params.exit: ; preds = %14, %19, %29, %ossl_param_is_empty.exit.i, %rsakem_opname2id.exit.i, %24, %21, %12, %10, %7, %4 +rsakem_set_ctx_params.exit: ; preds = %14, %19, %rsakem_opname2id.exit.i, %ossl_param_is_empty.exit.i, %.preheader.i.i.i, %24, %21, %12, %10, %7, %4 %.0 = phi i32 [ 0, %4 ], [ 0, %7 ], [ 0, %10 ], [ 0, %12 ], [ 0, %rsakem_opname2id.exit.i ], [ 0, %24 ], [ 0, %21 ], [ 1, %ossl_param_is_empty.exit.i ], [ 1, %29 ], [ 1, %19 ], [ 1, %14 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i32 %.0 diff --git a/bench/openusd/optimized/avif.ll b/bench/openusd/optimized/avif.ll index f184ef2c848..78f5c7f6594 100644 --- a/bench/openusd/optimized/avif.ll +++ b/bench/openusd/optimized/avif.ll @@ -2658,7 +2658,7 @@ attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memor attributes #9 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { 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" } attributes #11 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { mustprogress nofree norecurse nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #12 = { nofree norecurse nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #14 = { nounwind } attributes #15 = { nounwind willreturn memory(read) } diff --git a/bench/pbrt-v4/optimized/stbimage.ll b/bench/pbrt-v4/optimized/stbimage.ll index fea1912803e..07ceb3049d1 100644 --- a/bench/pbrt-v4/optimized/stbimage.ll +++ b/bench/pbrt-v4/optimized/stbimage.ll @@ -17302,7 +17302,7 @@ define internal fastcc void @_ZL18stbi__out_gif_codeP9stbi__gift(ptr noundef non %.not43 = icmp slt i32 %71, %60 br i1 %.not43, label %..critedge.loopexit_crit_edge, label %66, !llvm.loop !310 -..critedge.loopexit_crit_edge: ; preds = %.lr.ph50 +63: ; preds = %.lr.ph50 store i32 %69, ptr %55, align 4, !tbaa !291 store i32 %71, ptr %10, align 8, !tbaa !309 store i32 %72, ptr %59, align 8, !tbaa !292 @@ -17314,7 +17314,7 @@ define internal fastcc void @_ZL18stbi__out_gif_codeP9stbi__gift(ptr noundef non store i32 %72, ptr %59, align 8, !tbaa !292 br label %.critedge -.critedge: ; preds = %.critedge.loopexit, %.lr.ph, %..critedge.loopexit_crit_edge, %52, %47, %9 +.critedge: ; preds = %.critedge.loopexit, %.lr.ph, %63, %52, %47, %9 ret void } diff --git a/bench/php/optimized/parse_tz.ll b/bench/php/optimized/parse_tz.ll index 9f02e313ca2..ce3473aa24c 100644 --- a/bench/php/optimized/parse_tz.ll +++ b/bench/php/optimized/parse_tz.ll @@ -2280,12 +2280,12 @@ define hidden ptr @timelib_get_time_zone_info(i64 noundef %0, ptr noundef %1) lo br label %20 20: ; preds = %17, %6 - %.sink31 = phi i32 [ 0, %17 ], [ %15, %6 ] + %.sink29 = phi i32 [ 0, %17 ], [ %15, %6 ] %.sink = phi i64 [ 0, %17 ], [ %16, %6 ] %.021 = phi ptr [ %19, %17 ], [ %13, %6 ] %.0 = phi i32 [ 0, %17 ], [ %7, %6 ] %21 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i32 %.sink31, ptr %21, align 8, !tbaa !84 + store i32 %.sink29, ptr %21, align 8, !tbaa !84 %22 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 %.sink, ptr %22, align 8, !tbaa !86 %23 = getelementptr inbounds nuw i8, ptr %1, i64 48 @@ -2303,12 +2303,12 @@ define hidden ptr @timelib_get_time_zone_info(i64 noundef %0, ptr noundef %1) lo %or.cond.i = and i1 %29, %.not12.i br i1 %or.cond.i, label %.lr.ph.i, label %fetch_leaptime_offset.exit.thread -30: ; preds = %.lr.ph.i +30:; preds = %.lr.ph.i %.0.i = add nsw i32 %.014.i, -1 %31 = icmp sgt i32 %.014.i, 1 br i1 %31, label %.lr.ph.i, label %fetch_leaptime_offset.exit.thread -.lr.ph.i: ; preds = %25, %30 +.lr.ph.i:; preds = %25, %30 %.014.i = phi i32 [ %.0.i, %30 ], [ %.013.i, %25 ] %32 = zext nneg i32 %.014.i to i64 %33 = getelementptr inbounds nuw %struct._tlinfo, ptr %27, i64 %32 @@ -2316,7 +2316,7 @@ define hidden ptr @timelib_get_time_zone_info(i64 noundef %0, ptr noundef %1) lo %35 = icmp sgt i64 %0, %34 br i1 %35, label %fetch_leaptime_offset.exit, label %30 -fetch_leaptime_offset.exit: ; preds = %.lr.ph.i +fetch_leaptime_offset.exit:; preds = %.lr.ph.i %36 = getelementptr inbounds nuw i8, ptr %33, i64 8 %37 = load i32, ptr %36, align 8, !tbaa !61 %38 = sub i32 0, %37 @@ -2325,13 +2325,13 @@ fetch_leaptime_offset.exit: ; preds = %.lr.ph.i fetch_leaptime_offset.exit.thread: ; preds = %30, %20, %25, %fetch_leaptime_offset.exit %.022 = phi i32 [ %38, %fetch_leaptime_offset.exit ], [ 0, %25 ], [ 0, %20 ], [ 0, %30 ] store i32 %.0, ptr %4, align 8, !tbaa !87 - %39 = getelementptr inbounds nuw i8, ptr %4, i64 4 - store i32 %.022, ptr %39, align 4, !tbaa !88 + %37 = getelementptr inbounds nuw i8, ptr %4, i64 4 + store i32 %.022, ptr %37, align 4, !tbaa !88 %.not26 = icmp eq ptr %.021, null %.str.493..021 = select i1 %.not26, ptr @.str.493, ptr %.021 - %40 = call noalias ptr @_estrdup(ptr noundef nonnull %.str.493..021) #17 - %41 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr %40, ptr %41, align 8, !tbaa !89 + %38 = call noalias ptr @_estrdup(ptr noundef nonnull %.str.493..021) #17 + %39 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr %38, ptr %39, align 8, !tbaa !89 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret ptr %4 } diff --git a/bench/php/optimized/plain_wrapper.ll b/bench/php/optimized/plain_wrapper.ll index 2bd66af690b..a97de18d378 100644 --- a/bench/php/optimized/plain_wrapper.ll +++ b/bench/php/optimized/plain_wrapper.ll @@ -1675,15 +1675,15 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 %.not165182 = icmp eq i64 %43, 0 br i1 %.not165182, label %.critedge.thread, label %.lr.ph -44: ; preds = %.lr.ph +44:; preds = %.lr.ph br i1 %48, label %.critedge.thread, label %.lr.ph -.lr.ph: ; preds = %40, %44 +.lr.ph:; preds = %40, %44 %.0144183 = phi i64 [ %45, %44 ], [ %43, %40 ] %45 = add i64 %.0144183, -1 - %46 = getelementptr inbounds nuw i8, ptr %41, i64 %45 - %47 = load i8, ptr %46, align 1, !tbaa !4 - %.not166 = icmp eq i8 %47, 47 + %47 = getelementptr inbounds nuw i8, ptr %41, i64 %45 + %48 = load i8, ptr %47, align 1, !tbaa !4 + %.not166 = icmp eq i8 %48, 47 %48 = icmp eq i64 %45, 0 br i1 %.not166, label %.critedge, label %44 @@ -1704,45 +1704,45 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 1 dereferenceable(1) %41, i64 %49, i1 false) %56 = getelementptr inbounds nuw i8, ptr %53, i64 %51 store i8 0, ptr %56, align 1, !tbaa !4 - br label %.lr.ph187 + br label %.lr.ph 57: ; preds = %36, %38, %.critedge %58 = tail call noalias ptr @_estrdup(ptr noundef nonnull %2) #17 - %.not167185 = icmp eq ptr %58, null - br i1 %.not167185, label %.critedge2, label %.lr.ph187 + %.not167182 = icmp eq ptr %58, null + br i1 %.not167182, label %.critedge2, label %.lr.ph -.lr.ph187: ; preds = %.critedge.thread, %57 - %.1211 = phi ptr [ %53, %.critedge.thread ], [ %58, %57 ] +.lr.ph: ; preds = %.critedge.thread, %57 + %.1205 = phi ptr [ %53, %.critedge.thread ], [ %58, %57 ] %59 = and i32 %4, 1024 %60 = icmp eq i32 %59, 0 - br i1 %60, label %.lr.ph187.split.us, label %.lr.ph187.split + br i1 %60, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph187.split.us: ; preds = %.lr.ph187, %74 - %.1148186.us = phi ptr [ %.0146177.us, %74 ], [ %.1211, %.lr.ph187 ] - %61 = load i8, ptr %.1148186.us, align 1, !tbaa !4 +.lr.ph.split.us: ; preds = %.lr.ph, %74 + %.1148183.us = phi ptr [ %.0146177.us, %74 ], [ %.1205, %.lr.ph187 ] + %61 = load i8, ptr %.1148183.us, align 1, !tbaa !4 %.not168.us = icmp eq i8 %61, 0 br i1 %.not168.us, label %.critedge2, label %62 -62: ; preds = %.lr.ph187.split.us - %63 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148186.us, i32 noundef 58) #16 +62: ; preds = %.lr.ph.split.us + %63 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148183.us, i32 noundef 58) #16 %.not169.us = icmp eq ptr %63, null br i1 %.not169.us, label %.thread174.us, label %64 64: ; preds = %62 store i8 0, ptr %63, align 1, !tbaa !4 %65 = getelementptr inbounds nuw i8, ptr %63, i64 1 - %.pr.us = load i8, ptr %.1148186.us, align 1, !tbaa !4 + %.pr.us = load i8, ptr %.1148183.us, align 1, !tbaa !4 %66 = icmp eq i8 %.pr.us, 0 br i1 %66, label %74, label %.thread174.us .thread174.us: ; preds = %64, %62 %.0146176.us = phi ptr [ %65, %64 ], [ null, %62 ] - %67 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148186.us, ptr noundef nonnull %0) #17 + %67 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148183.us, ptr noundef nonnull %0) #17 %68 = icmp sgt i32 %67, 4095 br i1 %68, label %69, label %70 69: ; preds = %.thread174.us - call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148186.us, ptr noundef nonnull %0, i32 noundef 4096) #17 + call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148183.us, ptr noundef nonnull %0, i32 noundef 4096) #17 br label %70 70: ; preds = %69, %.thread174.us @@ -1758,34 +1758,34 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 74: ; preds = %72, %70, %64 %.0146177.us = phi ptr [ %.0146176.us, %72 ], [ %.0146176.us, %70 ], [ %65, %64 ] %.not167.us = icmp eq ptr %.0146177.us, null - br i1 %.not167.us, label %.critedge2, label %.lr.ph187.split.us + br i1 %.not167.us, label %.critedge2, label %.lr.ph.split.us -.lr.ph187.split: ; preds = %.lr.ph187, %86 - %.1148186 = phi ptr [ %.0146177, %86 ], [ %.1211, %.lr.ph187 ] - %75 = load i8, ptr %.1148186, align 1, !tbaa !4 +.lr.ph.split: ; preds = %.lr.ph, %86 + %.1148183 = phi ptr [ %.0146177, %86 ], [ %.1205, %.lr.ph187 ] + %75 = load i8, ptr %.1148183, align 1, !tbaa !4 %.not168 = icmp eq i8 %75, 0 br i1 %.not168, label %.critedge2, label %76 -76: ; preds = %.lr.ph187.split - %77 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148186, i32 noundef 58) #16 +76: ; preds = %.lr.ph.split + %77 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %.1148183, i32 noundef 58) #16 %.not169 = icmp eq ptr %77, null br i1 %.not169, label %.thread174, label %78 78: ; preds = %76 store i8 0, ptr %77, align 1, !tbaa !4 %79 = getelementptr inbounds nuw i8, ptr %77, i64 1 - %.pr = load i8, ptr %.1148186, align 1, !tbaa !4 + %.pr = load i8, ptr %.1148183, align 1, !tbaa !4 %80 = icmp eq i8 %.pr, 0 br i1 %80, label %86, label %.thread174 .thread174: ; preds = %76, %78 %.0146176 = phi ptr [ %79, %78 ], [ null, %76 ] - %81 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148186, ptr noundef nonnull %0) #17 + %81 = call i32 (ptr, i64, ptr, ...) @ap_php_snprintf(ptr noundef nonnull %6, i64 noundef 4096, ptr noundef nonnull @.str.7, ptr noundef nonnull %.1148183, ptr noundef nonnull %0) #17 %82 = icmp sgt i32 %81, 4095 br i1 %82, label %83, label %84 83: ; preds = %.thread174 - call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148186, ptr noundef nonnull %0, i32 noundef 4096) #17 + call void (ptr, i32, ptr, ...) @php_error_docref(ptr noundef null, i32 noundef 8, ptr noundef nonnull @.str.8, ptr noundef nonnull %.1148183, ptr noundef nonnull %0, i32 noundef 4096) #17 br label %84 84: ; preds = %83, %.thread174 @@ -1795,17 +1795,17 @@ define dso_local ptr @_php_stream_fopen_with_path(ptr noundef %0, ptr noundef %1 .split.us: ; preds = %84, %72 %.us-phi = phi ptr [ %73, %72 ], [ %85, %84 ] - call void @_efree(ptr noundef nonnull %.1211) #17 + call void @_efree(ptr noundef nonnull %.1205) #17 br label %87 86: ; preds = %84, %78 %.0146177 = phi ptr [ %.0146176, %84 ], [ %79, %78 ] %.not167 = icmp eq ptr %.0146177, null - br i1 %.not167, label %.critedge2, label %.lr.ph187.split + br i1 %.not167, label %.critedge2, label %.lr.ph.split -.critedge2: ; preds = %.lr.ph187.split, %86, %.lr.ph187.split.us, %74, %57 - %.1212 = phi ptr [ null, %57 ], [ %.1211, %74 ], [ %.1211, %.lr.ph187.split.us ], [ %.1211, %86 ], [ %.1211, %.lr.ph187.split ] - call void @_efree(ptr noundef %.1212) #17 +.critedge2: ; preds = %.lr.ph.split, %86, %.lr.ph.split.us, %74, %57 + %.1206 = phi ptr [ null, %57 ], [ %.1205, %74 ], [ %.1205, %.lr.ph187.split.us ], [ %.1205, %86 ], [ %.1205, %.lr.ph187.split ] + call void @_efree(ptr noundef %.1206) #17 br label %87 87: ; preds = %28, %21, %8, %.critedge2, %.split.us, %34, %30, %23 diff --git a/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll b/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll index f8d528aa1e5..1eed8f2f5c4 100644 --- a/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll +++ b/bench/pingora-rs/optimized/4hq7qqfz57g4ftqe0u539725f.ll @@ -6802,12 +6802,12 @@ define hidden { i64, ptr } @_ZN5tokio2io11async_write10AsyncWrite19poll_write_ve %6 = icmp eq i64 %3, 0 br i1 %6, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit", label %.lr.ph -7: ; preds = %.lr.ph +7:; preds = %.lr.ph %8 = getelementptr inbounds nuw i8, ptr %10, i64 16 %9 = icmp eq ptr %8, %5 br i1 %9, label %"_ZN4core6option15Option$LT$T$GT$6map_or17h8cf7ae636100ae5dE.exit", label %.lr.ph -.lr.ph: ; preds = %4, %7 +.lr.ph:; preds = %4, %7 %10 = phi ptr [ %8, %7 ], [ %2, %4 ] %11 = getelementptr i8, ptr %10, i64 8 %12 = load i64, ptr %11, align 8, !noalias !448, !noundef !8 diff --git a/bench/pocketpy/optimized/expr.ll b/bench/pocketpy/optimized/expr.ll index a8f52309afa..06c2c77cb6d 100644 --- a/bench/pocketpy/optimized/expr.ll +++ b/bench/pocketpy/optimized/expr.ll @@ -3997,8 +3997,8 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE br i1 %34, label %._crit_edge.thread, label %68 ._crit_edge.thread: ; preds = %2, %._crit_edge - %.lcssa57 = phi i32 [ %33, %._crit_edge ], [ %11, %2 ] - %.lcssa2756 = phi i64 [ %32, %._crit_edge ], [ %10, %2 ] + %.lcssa51 = phi i32 [ %33, %._crit_edge ], [ %11, %2 ] + %.lcssa2750 = phi i64 [ %32, %._crit_edge ], [ %10, %2 ] %35 = getelementptr inbounds nuw i8, ptr %1, i64 24 %36 = load ptr, ptr %35, align 8 %37 = getelementptr inbounds nuw i8, ptr %36, i64 56 @@ -4014,7 +4014,7 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE %42 = getelementptr inbounds i8, ptr %38, i64 -2 %43 = load i16, ptr %42, align 2 %44 = zext i16 %43 to i32 - %45 = icmp eq i32 %.lcssa57, %44 + %45 = icmp eq i32 %.lcssa51, %44 br i1 %45, label %46, label %.thread 46: ; preds = %41 @@ -4045,7 +4045,7 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE br label %77 .thread: ; preds = %._crit_edge.thread, %41 - %64 = trunc i64 %.lcssa2756 to i16 + %64 = trunc i64 %.lcssa2750 to i16 %65 = getelementptr inbounds nuw i8, ptr %0, i64 8 %66 = load i32, ptr %65, align 8 %67 = tail call noundef i32 @_ZN4pkpy15CodeEmitContext5emit_ENS_6OpcodeEtib(ptr noundef nonnull align 8 dereferenceable(232) %1, i8 noundef zeroext 100, i16 noundef zeroext %64, i32 noundef %66, i1 noundef zeroext false) @@ -4097,10 +4097,10 @@ define noundef zeroext i1 @_ZN4pkpy9TupleExpr10emit_storeEPNS_15CodeEmitContextE %95 = tail call noundef zeroext i1 %94(ptr noundef nonnull align 8 dereferenceable(12) %91, ptr noundef %1) br i1 %95, label %87, label %..loopexit_crit_edge, !llvm.loop !32 -..loopexit_crit_edge: ; preds = %.lr.ph40 - br label %.loopexit, !llvm.loop !32 +85: ; preds = %.lr.ph40 + br label %88, !llvm.loop !32 -.loopexit: ; preds = %21, %87, %77, %..loopexit_crit_edge, %68 +88: ; preds = %21, %87, %77, %85, %68 %.0 = phi i1 [ false, %68 ], [ false, %..loopexit_crit_edge ], [ true, %77 ], [ true, %87 ], [ false, %21 ] ret i1 %.0 } diff --git a/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll b/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll index dc467b203d9..a3bd816c204 100644 --- a/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll +++ b/bench/pola-rs/optimized/0qbeb52i2e81o7of4uqvbqn1y.ll @@ -75545,14 +75545,14 @@ define hidden void @"_ZN93_$LT$slotmap..basic..Drain$LT$K$C$V$GT$$u20$as$u20$cor %7 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.promoted = load i64, ptr %7, align 8 %8 = icmp ult i64 %.promoted, %5 - br i1 %8, label %.lr.ph, label %12 + br i1 %8, label %9, label %12 -.lr.ph: ; preds = %2 +9: ; preds = %2 %9 = getelementptr inbounds nuw i8, ptr %3, i64 8 %10 = load ptr, ptr %9, align 8, !nonnull !7, !noundef !7 br label %13 -11: ; preds = %13 +12: ; preds = %13 %exitcond.not = icmp eq i64 %15, %5 br i1 %exitcond.not, label %._crit_edge, label %13 @@ -75564,7 +75564,7 @@ define hidden void @"_ZN93_$LT$slotmap..basic..Drain$LT$K$C$V$GT$$u20$as$u20$cor store i32 0, ptr %0, align 8 br label %20 -13: ; preds = %.lr.ph, %11 +13: ; preds = %9, %11 %14 = phi i64 [ %.promoted, %.lr.ph ], [ %15, %11 ] %15 = add i64 %14, 1 %16 = getelementptr inbounds nuw { { [2 x i64] }, i32, [1 x i32] }, ptr %10, i64 %14 diff --git a/bench/postgres/optimized/execIndexing.ll b/bench/postgres/optimized/execIndexing.ll index 51549ef6883..3953e14c480 100644 --- a/bench/postgres/optimized/execIndexing.ll +++ b/bench/postgres/optimized/execIndexing.ll @@ -372,7 +372,7 @@ ExecQual.exit: ; preds = %54, %.thread %104 = icmp slt i16 %103, 1 br i1 %104, label %.thread.i.preheader, label %._crit_edge -.thread.i.preheader: ; preds = %.outer.i +105: ; preds = %.outer.i %indvars.iv.next60.i142 = add nuw nsw i64 %indvars.iv.ph.i, 1 %.not61.i143 = icmp slt i64 %indvars.iv.next60.i142, %101 br i1 %.not61.i143, label %.lr.ph145, label %.thread.i.preheader.._crit_edge.thread.i.loopexit_crit_edge, !llvm.loop !9 @@ -425,7 +425,7 @@ ExecQual.exit: ; preds = %54, %.thread store i8 1, ptr %116, align 4 br label %index_unchanged_by_update.exit -.thread.i.preheader.._crit_edge.thread.i.loopexit_crit_edge: ; preds = %.thread.i.preheader +._crit_edge.thread.i: ; preds = %.thread.i.preheader br label %._crit_edge.thread.i, !llvm.loop !9 .thread.i.._crit_edge.thread.i.loopexit_crit_edge: ; preds = %.thread.i diff --git a/bench/postgres/optimized/proc.ll b/bench/postgres/optimized/proc.ll index da6ff832eba..cec82956110 100644 --- a/bench/postgres/optimized/proc.ll +++ b/bench/postgres/optimized/proc.ll @@ -1203,20 +1203,20 @@ define dso_local zeroext i1 @HaveNFreeProcs(i32 noundef %0, ptr noundef captures %.not9 = icmp eq ptr %12, null %.not101114 = icmp eq ptr %12, %10 %.not1011 = select i1 %.not9, i1 true, i1 %.not101114 - br i1 %.not1011, label %._crit_edge, label %.lr.ph.preheader + br i1 %.not1011, label %._crit_edge, label %.lr.ph -.lr.ph.preheader: ; preds = %8 +.lr.ph: ; preds = %8 store i32 1, ptr %1, align 4 %13 = icmp eq i32 %0, 1 - br i1 %13, label %._crit_edge, label %.lr.ph19 + br i1 %13, label %._crit_edge, label %16 .lr.ph: ; preds = %.lr.ph19 %14 = add i32 %16, 1 store i32 %14, ptr %1, align 4 %15 = icmp eq i32 %14, %0 - br i1 %15, label %._crit_edge, label %.lr.ph19, !llvm.loop !19 + br i1 %15, label %._crit_edge, label %16, !llvm.loop !19 -.lr.ph19: ; preds = %.lr.ph.preheader, %.lr.ph +16: ; preds = %.lr.ph, %.lr.ph %16 = phi i32 [ %14, %.lr.ph ], [ 1, %.lr.ph.preheader ] %.sroa.0.01218 = phi ptr [ %18, %.lr.ph ], [ %12, %.lr.ph.preheader ] %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.01218, i64 8 @@ -1227,7 +1227,7 @@ define dso_local zeroext i1 @HaveNFreeProcs(i32 noundef %0, ptr noundef captures .._crit_edge.loopexit_crit_edge: ; preds = %.lr.ph19 br label %._crit_edge, !llvm.loop !19 -._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader, %.._crit_edge.loopexit_crit_edge, %8 +._crit_edge: ; preds = %.lr.ph, %.lr.ph, %.._crit_edge.loopexit_crit_edge, %8 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !20 %19 = load ptr, ptr @ProcStructLock, align 8 store i8 0, ptr %19, align 1 diff --git a/bench/proj/optimized/proj_strtod.ll b/bench/proj/optimized/proj_strtod.ll index ff7823882c4..1efd677a0af 100644 --- a/bench/proj/optimized/proj_strtod.ll +++ b/bench/proj/optimized/proj_strtod.ll @@ -344,21 +344,21 @@ thread-pre-split: ; preds = %77 %exitcond = icmp eq i32 %104, %90 br i1 %exitcond, label %.critedge6.lr.ph.split.us, label %.critedge6.lr.ph.split, !llvm.loop !21 -.critedge6.lr.ph.split.us: ; preds = %.critedge6.lr.ph, %.critedge6.lr.ph.preheader - %.7.ph341.lcssa = phi ptr [ %.5, %.critedge6.lr.ph.preheader ], [ %102, %.critedge6.lr.ph ] - %.0170.ph340.lcssa = phi i32 [ 0, %.critedge6.lr.ph.preheader ], [ %spec.select238, %.critedge6.lr.ph ] - %.2176.ph339.lcssa = phi double [ %.0174.ph.lcssa, %.critedge6.lr.ph.preheader ], [ %101, %.critedge6.lr.ph ] +.critedge6.lr.ph.split.us:; preds = %.critedge6.lr.ph, %.critedge6.lr.ph.preheader + %.2162.ph342 = phi ptr [ %.5, %.critedge6.lr.ph.preheader ], [ %102, %.critedge6.lr.ph ] + %.7.ph341 = phi i32 [ 0, %.critedge6.lr.ph.preheader ], [ %spec.select238, %.critedge6.lr.ph ] + %.0170.ph340 = phi double [ %.0174.ph.lcssa, %.critedge6.lr.ph.preheader ], [ %101, %.critedge6.lr.ph ] br label %.critedge6.us -.critedge6.us: ; preds = %.critedge6.us, %.critedge6.lr.ph.split.us +.critedge6.us:; preds = %.critedge6.us, %.critedge6.lr.ph.split.us %.7295.us = phi ptr [ %.7.ph341.lcssa, %.critedge6.lr.ph.split.us ], [ %108, %.critedge6.us ] %108 = getelementptr inbounds nuw i8, ptr %.7295.us, i64 1 %109 = load i8, ptr %108, align 1, !tbaa !13 %110 = sext i8 %109 to i32 %isdigittmp212.us = add nsw i32 %110, -48 %isdigit213.us = icmp ult i32 %isdigittmp212.us, 10 - %111 = icmp eq i8 %109, 95 - %or.cond237.us = or i1 %111, %isdigit213.us + %113 = icmp eq i8 %109, 95 + %or.cond237.us = or i1 %113, %isdigit213.us br i1 %or.cond237.us, label %.critedge6.us, label %.outer245._crit_edge, !llvm.loop !21 .critedge6.lr.ph.split: ; preds = %.critedge6.lr.ph.preheader, %.critedge6.lr.ph @@ -375,7 +375,7 @@ thread-pre-split: ; preds = %77 .outer245._crit_edge: ; preds = %.outer245, %.lr.ph, %.critedge6.us %114 = phi i8 [ %109, %.critedge6.us ], [ %97, %.lr.ph ], [ %105, %.outer245 ] %.2176.ph.lcssa = phi double [ %.2176.ph339.lcssa, %.critedge6.us ], [ %.2176.ph339557, %.lr.ph ], [ %101, %.outer245 ] - %.0170.ph.lcssa = phi i32 [ %.0170.ph340.lcssa, %.critedge6.us ], [ %.0170.ph340556, %.lr.ph ], [ %spec.select238, %.outer245 ] + %.0170.ph.lcssa = phi i32 [ %.7.ph341, %.critedge6.us ], [ %.0170.ph340556, %.lr.ph ], [ %spec.select238, %.outer245 ] %.2162.ph.lcssa = phi i32 [ %smax, %.critedge6.us ], [ %.2162.ph342554, %.lr.ph ], [ %103, %.outer245 ] %.0159.ph.lcssa = phi i32 [ %90, %.critedge6.us ], [ %.0159.ph343553, %.lr.ph ], [ %104, %.outer245 ] %.7.lcssa = phi ptr [ %108, %.critedge6.us ], [ %96, %.lr.ph ], [ %102, %.outer245 ] @@ -469,14 +469,14 @@ thread-pre-split: ; preds = %77 %isdigittmp219351366 = phi i32 [ %isdigittmp219351, %.outer ], [ %isdigittmp219351361, %140 ] %.0163.ph365 = phi i32 [ %150, %.outer ], [ 0, %140 ] %.11.ph364 = phi ptr [ %151, %.outer ], [ %.10, %140 ] - br i1 %144, label %.lr.ph562, label %.outer + br i1 %144, label %.lr.ph552, label %.outer -.critedge11: ; preds = %.lr.ph562 - br i1 %148, label %.lr.ph562, label %.outer, !llvm.loop !23 +.critedge11: ; preds = %.lr.ph552 + br i1 %148, label %.lr.ph552, label %.outer, !llvm.loop !23 -.lr.ph562: ; preds = %.critedge11.lr.ph, %.critedge11 - %.11354561 = phi ptr [ %145, %.critedge11 ], [ %.11.ph364, %.critedge11.lr.ph ] - %145 = getelementptr inbounds nuw i8, ptr %.11354561, i64 1 +.lr.ph552: ; preds = %.critedge11.lr.ph, %.critedge11 + %.11354551 = phi ptr [ %145, %.critedge11 ], [ %.11.ph364, %.critedge11.lr.ph ] + %145 = getelementptr inbounds nuw i8, ptr %.11354551, i64 1 %146 = load i8, ptr %145, align 1, !tbaa !13 %147 = sext i8 %146 to i32 %isdigittmp219 = add nsw i32 %147, -48 @@ -499,7 +499,7 @@ thread-pre-split: ; preds = %77 %or.cond239353 = or i1 %154, %isdigit220352 br i1 %or.cond239353, label %.critedge11.lr.ph, label %.outer._crit_edge, !llvm.loop !23 -.outer._crit_edge: ; preds = %.outer, %.lr.ph562, %140 +.outer._crit_edge: ; preds = %.outer, %.lr.ph552, %140 %.0163.ph.lcssa = phi i32 [ 0, %140 ], [ %.0163.ph365, %.lr.ph562 ], [ %150, %.outer ] %.11.lcssa = phi ptr [ %.10, %140 ], [ %145, %.lr.ph562 ], [ %151, %.outer ] %155 = sub nsw i32 0, %.0163.ph.lcssa diff --git a/bench/protobuf/optimized/csharp_message.ll b/bench/protobuf/optimized/csharp_message.ll index 019e1ceb8be..03fd6c26f25 100644 --- a/bench/protobuf/optimized/csharp_message.ll +++ b/bench/protobuf/optimized/csharp_message.ll @@ -10661,13 +10661,13 @@ entry: %sub.ptr.lhs.cast.i4 = ptrtoint ptr %__last.coerce to i64 %sub.ptr.sub.i5 = sub i64 %sub.ptr.lhs.cast.i4, %sub.ptr.rhs.cast.i %cmp6 = icmp sgt i64 %sub.ptr.sub.i5, 128 - br i1 %cmp6, label %while.body.preheader, label %while.end + br i1 %cmp6, label %while.body, label %while.end -while.body.preheader: ; preds = %entry +while.body: ; preds = %entry %cmp312 = icmp eq i64 %__depth_limit, 0 br i1 %cmp312, label %if.then, label %if.end -while.body: ; preds = %if.end +if.then: ; preds = %if.end %cmp3 = icmp eq i64 %dec, 0 br i1 %cmp3, label %if.then, label %if.end, !llvm.loop !328 @@ -10676,7 +10676,7 @@ if.then: ; preds = %while.body, %while. tail call void @_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf15FieldDescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_SH_T0_(ptr %__first.coerce, ptr %storemerge7.lcssa, ptr %storemerge7.lcssa, ptr %__comp.coerce) br label %while.end -if.end: ; preds = %while.body.preheader, %while.body +if.end: ; preds = %if.then, %while.body %storemerge714 = phi ptr [ %call17, %while.body ], [ %__last.coerce, %while.body.preheader ] %__depth_limit.addr.0813 = phi i64 [ %dec, %while.body ], [ %__depth_limit, %while.body.preheader ] %dec = add nsw i64 %__depth_limit.addr.0813, -1 diff --git a/bench/proxygen/optimized/ParseURL.ll b/bench/proxygen/optimized/ParseURL.ll index 79f6563e524..13b57f575c0 100644 --- a/bench/proxygen/optimized/ParseURL.ll +++ b/bench/proxygen/optimized/ParseURL.ll @@ -582,7 +582,7 @@ for.body.lr.ph.split.us.i: ; preds = %for.body.lr.ph.i %or.cond.us15.i = or i1 %cmp2.us13.i, %cmp4.us14.i br i1 %or.cond.us15.i, label %if.then6, label %lor.lhs.false5.us.i.preheader -lor.lhs.false5.us.i.preheader: ; preds = %for.body.lr.ph.split.us.i +for.body.us.i: ; preds = %for.body.lr.ph.split.us.i %incdec.ptr.us.i105 = getelementptr inbounds nuw i8, ptr %0, i64 1 %cmp.not.us.i106 = icmp eq ptr %incdec.ptr.us.i105, %1 br i1 %cmp.not.us.i106, label %if.end.i.i, label %for.body.us.i @@ -617,7 +617,7 @@ if.then6: ; preds = %for.body.us.i, %for store i8 0, ptr %valid_7, align 2 br label %return -if.end.i.i: ; preds = %lor.lhs.false5.us.i, %for.cond.i, %lor.lhs.false5.us.i.preheader +if.end.i.i: ; preds = %lor.lhs.false5.us.i, %for.cond.i, %for.body.us.i %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %1 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %0 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i @@ -678,10 +678,10 @@ invoke.cont33: ; preds = %if.then30 br label %if.end38 if.end38: ; preds = %invoke.cont28, %invoke.cont33 - %.str.1.sink113 = phi ptr [ %add.ptr.i, %invoke.cont33 ], [ @.str.1, %invoke.cont28 ] + %.str.1.sink110 = phi ptr [ %add.ptr.i, %invoke.cont33 ], [ @.str.1, %invoke.cont28 ] %.str.1.sink = phi ptr [ %add.ptr.i.i51, %invoke.cont33 ], [ @.str.1, %invoke.cont28 ] %path_37 = getelementptr inbounds nuw i8, ptr %this, i64 96 - store ptr %.str.1.sink113, ptr %path_37, align 8 + store ptr %.str.1.sink110, ptr %path_37, align 8 %ref.tmp35.sroa.2.0.path_37.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 104 store ptr %.str.1.sink, ptr %ref.tmp35.sroa.2.0.path_37.sroa_idx, align 8 %cmp39 = icmp ult i64 %retval.0.i.i20, %retval.0.i.i35 diff --git a/bench/qemu/optimized/libvhost-user.ll b/bench/qemu/optimized/libvhost-user.ll index faead15056b..43cce47c70c 100644 --- a/bench/qemu/optimized/libvhost-user.ll +++ b/bench/qemu/optimized/libvhost-user.ll @@ -5833,7 +5833,7 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt 9: ; preds = %6 %.not35 = icmp eq i64 %5, 0 - br i1 %.not35, label %13, label %.preheader + br i1 %.not35, label %12, label %.preheader .preheader: ; preds = %9 %10 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -5841,20 +5841,20 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt %12 = icmp eq i32 %7, %3 br i1 %12, label %._crit_edge, label %.lr.ph -13: ; preds = %9 +12: ; preds = %9 tail call void (ptr, ptr, ...) @vu_panic(ptr noundef %0, ptr noundef nonnull @.str.106) br label %.critedge -14: ; preds = %49 +13: ; preds = %49 %15 = add i64 %spec.select, %.0285013 %16 = icmp eq i32 %54, %3 - br i1 %16, label %._crit_edge, label %.lr.ph + br i1 %16, label %15, label %16 -._crit_edge: ; preds = %14, %.preheader +15: ; preds = %13, %.preheader tail call void (ptr, ptr, ...) @vu_panic(ptr noundef %0, ptr noundef nonnull @.str.107) br label %.critedge -.lr.ph: ; preds = %.preheader, %14 +16: ; preds = %.preheader, %13 %.0285013 = phi i64 [ %15, %14 ], [ %4, %.preheader ] %.0265112 = phi i64 [ %55, %14 ], [ %5, %.preheader ] %.0255211 = phi i32 [ %54, %14 ], [ %7, %.preheader ] @@ -5863,7 +5863,7 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt %.not37.i.i = icmp slt i32 %18, 0 br i1 %.not37.i.i, label %vu_gpa_to_va.exit.thread, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %.lr.ph +.lr.ph.i.i: ; preds = %16 %19 = load ptr, ptr %11, align 8 br label %20 @@ -5920,7 +5920,7 @@ vu_gpa_to_mem_region.exit.i: ; preds = %28 %46 = icmp eq i64 %.0285013, 0 br i1 %46, label %.loopexit, label %49 -vu_gpa_to_va.exit.thread: ; preds = %.lr.ph, %32 +vu_gpa_to_va.exit.thread: ; preds = %16, %32 %47 = zext i32 %.0255211 to i64 %48 = getelementptr inbounds nuw %struct.iovec, ptr %2, i64 %47 store ptr null, ptr %48, align 8 @@ -5940,13 +5940,13 @@ vu_gpa_to_va.exit.thread: ; preds = %.lr.ph, %32 %54 = add i32 %.0255211, 1 %55 = sub i64 %.0265112, %spec.select %.not36 = icmp eq i64 %55, 0 - br i1 %.not36, label %56, label %14 + br i1 %.not36, label %57, label %13 -56: ; preds = %49 +57: ; preds = %49 store i32 %54, ptr %1, align 4 br label %.critedge -.critedge: ; preds = %._crit_edge, %.loopexit, %56, %13 +.critedge: ; preds = %15, %.loopexit, %57, %12 %.030 = phi i1 [ true, %56 ], [ false, %13 ], [ false, %.loopexit ], [ false, %._crit_edge ] ret i1 %.030 } diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index 6341db2d05c..c8ab8b6c10e 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10054,27 +10054,27 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt 12: ; preds = %8 %.not46 = icmp eq i64 %7, 0 - br i1 %.not46, label %15, label %.preheader + br i1 %.not46, label %14, label %.preheader .preheader: ; preds = %12 %13 = getelementptr inbounds nuw i8, ptr %0, i64 464 %14 = icmp eq i32 %10, %4 br i1 %14, label %._crit_edge, label %.lr.ph -15: ; preds = %12 +14: ; preds = %12 tail call void (ptr, ptr, ...) @virtio_error(ptr noundef %0, ptr noundef nonnull @.str.85) br label %.thread -16: ; preds = %25 +15: ; preds = %25 %17 = add i64 %21, %.0375969 %18 = icmp eq i32 %29, %4 - br i1 %18, label %._crit_edge, label %.lr.ph + br i1 %18, label %._crit_edge, label %18 -._crit_edge: ; preds = %16, %.preheader +17: ; preds = %15, %.preheader call void (ptr, ptr, ...) @virtio_error(ptr noundef %0, ptr noundef nonnull @.str.86) br label %.thread -.lr.ph: ; preds = %.preheader, %16 +18: ; preds = %.preheader, %15 %.1425771 = phi i32 [ %29, %16 ], [ %10, %.preheader ] %.0385870 = phi i64 [ %28, %16 ], [ %7, %.preheader ] %.0375969 = phi i64 [ %17, %16 ], [ %6, %.preheader ] @@ -10090,11 +10090,11 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt %.not48 = icmp eq ptr %20, null br i1 %.not48, label %24, label %25 -24: ; preds = %.lr.ph +24: ; preds = %18 call void (ptr, ptr, ...) @virtio_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.87) br label %.thread -25: ; preds = %.lr.ph +25: ; preds = %18 %26 = getelementptr inbounds nuw i8, ptr %23, i64 8 store i64 %21, ptr %26, align 8 %27 = getelementptr inbounds nuw i64, ptr %2, i64 %22 @@ -10102,9 +10102,9 @@ define internal fastcc noundef zeroext i1 @virtqueue_map_desc(ptr noundef %0, pt %28 = sub i64 %.0385870, %21 %29 = add i32 %.1425771, 1 %.not47 = icmp eq i64 %28, 0 - br i1 %.not47, label %.thread, label %16 + br i1 %.not47, label %.thread, label %15 -.thread: ; preds = %25, %24, %._crit_edge, %15 +.thread: ; preds = %25, %24, %17, %14 %.041 = phi i32 [ %10, %15 ], [ %4, %._crit_edge ], [ %.1425771, %24 ], [ %29, %25 ] %.040 = phi i1 [ false, %15 ], [ false, %._crit_edge ], [ false, %24 ], [ true, %25 ] store i32 %.041, ptr %1, align 4 diff --git a/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll b/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll index eda2ef2293e..e05e15ef94e 100644 --- a/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll +++ b/bench/quiche-rs/optimized/43xnog1a87dssj1hwthynpevl.ll @@ -1036,8 +1036,8 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ .lr.ph.i.i: ; preds = %.preheader.split.i.i, %.lr.ph.i.i %.sroa.01.09.i.i = phi i64 [ %14, %.lr.ph.i.i ], [ 0, %.preheader.split.i.i ] %7 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val, i64 %.sroa.01.09.i.i - %8 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val3, i64 %.sroa.01.09.i.i - %9 = getelementptr i8, ptr %7, i64 8 + %9 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 } }, ptr %.val3, i64 %.sroa.01.09.i.i + %10 = getelementptr i8, ptr %7, i64 8 %.val.i.i = load ptr, ptr %9, align 8, !alias.scope !119, !noalias !122, !nonnull !6, !noundef !6 %10 = getelementptr i8, ptr %7, i64 16 %.val5.i.i = load i64, ptr %10, align 8, !alias.scope !119, !noalias !122, !noundef !6 diff --git a/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll b/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll index 53db4d75aac..74086444ffb 100644 --- a/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll +++ b/bench/quinn-rs/optimized/ddriv7i4doqny17a487136o1r.ll @@ -7560,15 +7560,15 @@ _ZN11quinn_proto8endpoint8Endpoint14cids_exhausted17hc771a0d18a2ee089E.exit.thre 109: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i" %110 = add i64 %.sroa.5.09.i, -16 %111 = getelementptr inbounds nuw i8, ptr %.sroa.0.0310.i, i64 64 - %112 = icmp eq i64 %110, 0 - br i1 %112, label %._crit_edge.i, label %.lr.ph.i + %110 = icmp eq i64 %110, 0 + br i1 %110, label %._crit_edge.i, label %.preheader -.lr.ph.i: ; preds = %98, %109 - %.sroa.0.0310.i = phi ptr [ %111, %109 ], [ %102, %98 ] - %.sroa.5.09.i = phi i64 [ %110, %109 ], [ %106, %98 ] +.preheader: ; preds = %98, %109 + %.sroa.07.0.i.i = phi ptr [ %111, %109 ], [ %102, %98 ] + %.sroa.09.0.i.i131 = phi i64 [ %110, %109 ], [ %106, %98 ] br label %113 -113: ; preds = %113, %.lr.ph.i +113:; preds = %113, %.lr.ph.i %.sroa.07.0.i.i = phi i1 [ false, %.lr.ph.i ], [ %116, %113 ] %.sroa.09.0.i.i131 = phi i64 [ 0, %.lr.ph.i ], [ %117, %113 ] %114 = getelementptr inbounds nuw i32, ptr %.sroa.0.0310.i, i64 %.sroa.09.0.i.i131 @@ -7577,9 +7577,9 @@ _ZN11quinn_proto8endpoint8Endpoint14cids_exhausted17hc771a0d18a2ee089E.exit.thre %116 = or i1 %.sroa.07.0.i.i, %115 %117 = add nuw nsw i64 %.sroa.09.0.i.i131, 1 %118 = icmp eq i64 %117, 16 - br i1 %118, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i", label %113 + br i1 %118, label %118, label %113 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h970d4ccf472c87deE.exit.i": ; preds = %113 +118: ; preds = %113 br i1 %116, label %.loopexit, label %109 ._crit_edge.i: ; preds = %109, %98 @@ -7589,7 +7589,7 @@ _ZN11quinn_proto8endpoint8Endpoint14cids_exhausted17hc771a0d18a2ee089E.exit.thre %.not.not.not.i.not11.i = icmp samesign eq i64 %.idx.i, 0 br i1 %.not.not.not.i.not11.i, label %"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit", label %.lr.ph13.i -121: ; preds = %.lr.ph13.i +121:; preds = %.lr.ph13.i %122 = getelementptr inbounds nuw i8, ptr %123, i64 4 %.not.not.not.i.not.i = icmp eq ptr %122, %120 br i1 %.not.not.not.i.not.i, label %"_ZN55_$LT$u32$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains17h2b164750a5293d29E.exit", label %.lr.ph13.i diff --git a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll index 3346ab0a1d7..4a547ad7ffd 100644 --- a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll +++ b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll @@ -712,14 +712,14 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT %6 = icmp ult i64 %5, 164703072086692426 tail call void @llvm.assume(i1 %6) %7 = icmp samesign ugt i64 %5, 1 - br i1 %7, label %.lr.ph, label %._crit_edge + br i1 %7, label %8, label %27 -.lr.ph: ; preds = %2 +8: ; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre = load ptr, ptr %8, align 8 br label %13 -9: ; preds = %13 +10: ; preds = %13 %10 = icmp ugt i64 %14, 1 br i1 %10, label %13, label %._crit_edge @@ -731,27 +731,27 @@ define hidden void @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT %12 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr114drop_in_place$LT$alloc..collections..binary_heap..BinaryHeap$LT$quinn_proto..connection..assembler..Buffer$GT$$GT$17h72159f4f219c81d3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1) #24 - to label %19 unwind label %17 + to label %19 unwind label %18 -13: ; preds = %.lr.ph, %9 +13: ; preds = %8, %9 %.sroa.0.06 = phi i64 [ %5, %.lr.ph ], [ %14, %9 ] %14 = add nsw i64 %.sroa.0.06, -1 - %15 = getelementptr inbounds nuw { { ptr, ptr, i64, { ptr } }, i64, i64, i8, [7 x i8] }, ptr %.pre, i64 %14 + %16 = getelementptr inbounds nuw { { ptr, ptr, i64, { ptr } }, i64, i64, i8, [7 x i8] }, ptr %.pre, i64 %14 call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(56) %.pre, i64 56, i1 false) - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %.pre, ptr noundef nonnull align 8 dereferenceable(56) %15, i64 56, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull align 8 dereferenceable(56) %3, i64 56, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %.pre, ptr noundef nonnull align 8 dereferenceable(56) %16, i64 56, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(56) %3, i64 56, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %16 = invoke noundef i64 @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$15sift_down_range17hd69b9ecf8446d082E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0, i64 noundef %14) + %17 = invoke noundef i64 @"_ZN5alloc11collections11binary_heap23BinaryHeap$LT$T$C$A$GT$15sift_down_range17hd69b9ecf8446d082E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 0, i64 noundef %14) to label %9 unwind label %11 -17: ; preds = %11 - %18 = landingpad { ptr, i32 } +18: ; preds = %11 + %19 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #23 unreachable -19: ; preds = %11 +110: ; preds = %11 resume { ptr, i32 } %12 } @@ -3980,24 +3980,24 @@ define noundef zeroext i1 @_ZN11quinn_proto9range_set15array_range_set13ArrayRan %18 = icmp eq i64 %.pn4, 0 br i1 %18, label %._crit_edge, label %.lr.ph -19: ; preds = %23 +18: ; preds = %23 %20 = getelementptr inbounds nuw i8, ptr %.sroa.02.07, i64 16 - %21 = icmp eq ptr %20, %17 - br i1 %21, label %._crit_edge, label %.lr.ph + %19 = icmp eq ptr %20, %17 + br i1 %19, label %27, label %20 -.lr.ph: ; preds = %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit", %19 +20: ; preds = %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit", %19 %.sroa.02.07 = phi ptr [ %20, %19 ], [ %.pn6, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" ] %22 = load i64, ptr %.sroa.02.07, align 8, !noundef !3 %.not = icmp ugt i64 %22, %1 br i1 %.not, label %._crit_edge, label %23 -23: ; preds = %.lr.ph - %24 = getelementptr inbounds nuw i8, ptr %.sroa.02.07, i64 8 +22: ; preds = %20 + %23 = getelementptr inbounds nuw i8, ptr %.sroa.02.07, i64 8 %25 = load i64, ptr %24, align 8, !alias.scope !498 %26 = icmp ult i64 %1, %25 - br i1 %26, label %._crit_edge, label %19 + br i1 %26, label %27, label %18 -._crit_edge: ; preds = %19, %23, %.lr.ph, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" +27: ; preds = %110, %22, %8, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" %.sroa.0.0 = phi i1 [ false, %"_ZN78_$LT$tinyvec..tinyvec..TinyVec$LT$A$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h487095e03518ec32E.exit" ], [ false, %.lr.ph ], [ true, %23 ], [ false, %19 ] ret i1 %.sroa.0.0 } diff --git a/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll b/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll index ba7fa775854..74e6935ba95 100644 --- a/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll +++ b/bench/raft-rs/optimized/6l7kltspw5elnc95wd7ksy4mp.ll @@ -1318,14 +1318,14 @@ define hidden noundef ptr @"_ZN66_$LT$slog_envlogger..EnvLogger$LT$T$GT$$u20$as$ %21 = getelementptr i8, ptr %0, i64 16 %.val7 = load i64, ptr %21, align 8, !noundef !12 %22 = icmp eq i64 %.val7, 0 - br i1 %22, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread", label %.lr.ph.preheader.i + br i1 %22, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread", label %23 -.lr.ph.preheader.i: ; preds = %3 +23: ; preds = %3 %.idx.i = shl nuw nsw i64 %.val7, 5 %23 = getelementptr inbounds nuw i8, ptr %.val, i64 %.idx.i br label %.lr.ph.i -24: ; preds = %28 +25: ; preds = %28 %25 = icmp eq ptr %.val, %26 br i1 %25, label %"_ZN14slog_envlogger18EnvLogger$LT$T$GT$7enabled17hc73eb40641b77befE.exit.thread", label %.lr.ph.i diff --git a/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll b/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll index 039dc19ecb8..f5f1aeee657 100644 --- a/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll +++ b/bench/raft-rs/optimized/6u02ixh93hrjm23fysoy5xrjw.ll @@ -718,12 +718,12 @@ define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice. %exitcond.not = icmp eq i64 %6, %1 br i1 %exitcond.not, label %"_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2ne17h637d1ed1356d7c12E.exit.thread", label %.lr.ph -.lr.ph: ; preds = %.preheader.split, %5 +.lr.ph:; preds = %.preheader.split, %5 %.sroa.01.011 = phi i64 [ %6, %5 ], [ 0, %.preheader.split ] %7 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %0, i64 %.sroa.01.011 %8 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %2, i64 %.sroa.01.011 %9 = getelementptr i8, ptr %7, i64 16 - %.val5 = load i64, ptr %9, align 8, !noundef !12 + %.val7 = load i64, ptr %9, align 8, !noundef !12 %10 = getelementptr i8, ptr %8, i64 16 %.val7 = load i64, ptr %10, align 8, !noundef !12 %.not.i.i = icmp eq i64 %.val5, %.val7 diff --git a/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll b/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll index e4052d50b01..d7378a8241a 100644 --- a/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll +++ b/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll @@ -29,12 +29,12 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core br i1 %.not.i44, label %15, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split": ; preds = %9, %26 - %.sink77 = phi i64 [ 3, %26 ], [ 2, %9 ] + %.sink73 = phi i64 [ 3, %26 ], [ 2, %9 ] %11 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.val39 = load ptr, ptr %11, align 8, !nonnull !5, !noundef !5 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val41 = load ptr, ptr %12, align 8, !nonnull !5, !noundef !5 - %13 = shl nsw i64 %.val42, %.sink77 + %13 = shl nsw i64 %.val42, %.sink73 %bcmp.i46 = tail call i32 @bcmp(ptr nonnull readonly align 4 %.val41, ptr nonnull readonly align 4 %.val39, i64 %13) %14 = icmp eq i32 %bcmp.i46, 0 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" @@ -51,7 +51,7 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core %.not67 = icmp eq i64 %.val42, 0 br i1 %.not67, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit", label %.lr.ph.i -.lr.ph.i: ; preds = %15, %.lr.ph.i +.lr.ph.i: ; preds = %15, %.lr.ph.i %20 = phi i64 [ %24, %.lr.ph.i ], [ 0, %15 ] %21 = getelementptr inbounds i32, ptr %17, i64 %20 %22 = getelementptr inbounds i64, ptr %19, i64 %20 @@ -70,8 +70,8 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core 26: ; preds = %8 br i1 %.not.i44, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit.sink.split", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf12281debeded355E.exit" -27: ; preds = %25 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 +29: ; preds = %25 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 %29 = load ptr, ptr %28, align 8, !nonnull !5, !noundef !5 %30 = getelementptr inbounds nuw i8, ptr %1, i64 16 %31 = load ptr, ptr %30, align 8, !nonnull !5, !noundef !5 diff --git a/bench/raylib/optimized/rtextures.ll b/bench/raylib/optimized/rtextures.ll index 87009ad4215..84e6fa45c7b 100644 --- a/bench/raylib/optimized/rtextures.ll +++ b/bench/raylib/optimized/rtextures.ll @@ -38898,7 +38898,7 @@ define internal fastcc void @stbi__out_gif_code(ptr noundef nonnull captures(non %63 = icmp sgt i32 %.promoted46, 0 br i1 %63, label %.lr.ph50.preheader, label %.critedge -.lr.ph50.preheader: ; preds = %.lr.ph +.lr.ph50.preheader:; preds = %.lr.ph %64 = load i32, ptr %61, align 4 %65 = load i32, ptr %62, align 8 br label %.lr.ph50 @@ -38920,7 +38920,7 @@ define internal fastcc void @stbi__out_gif_code(ptr noundef nonnull captures(non store i32 %70, ptr %59, align 8 br label %.critedge -.critedge: ; preds = %.critedge.loopexit, %.lr.ph, %52, %47, %9 +66: ; preds = %.critedge.loopexit, %.lr.ph, %52, %47, %9 ret void } @@ -41363,13 +41363,13 @@ define internal fastcc range(i32 0, 2) i32 @stbi__build_huffman(ptr noundef nonn %exitcond114 = icmp sgt i32 %.06073, 255 br i1 %exitcond114, label %.loopexit65.sink.split, label %.lr.ph117 -12: ; preds = %.lr.ph117 +12: ; preds = %.lr.ph117 %13 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv.next store i8 %8, ptr %13, align 1 %exitcond = icmp eq i32 %14, %10 br i1 %exitcond, label %.loopexit65.sink.split, label %.lr.ph117 -.lr.ph117: ; preds = %.lr.ph, %12 +.lr.ph117:; preds = %.lr.ph, %12 %.05572116 = phi i32 [ %14, %12 ], [ 0, %.lr.ph ] %indvars.iv115 = phi i64 [ %indvars.iv.next, %12 ], [ %9, %.lr.ph ] %indvars.iv.next = add nsw i64 %indvars.iv115, 1 diff --git a/bench/re2/optimized/re2.ll b/bench/re2/optimized/re2.ll index df692425efd..9ab3314e75d 100644 --- a/bench/re2/optimized/re2.ll +++ b/bench/re2/optimized/re2.ll @@ -1951,11 +1951,11 @@ invoke.cont7.i: ; preds = %if.end12 br i1 %cmp.not3.i.i, label %invoke.cont19, label %invoke.cont7.i.for.body.preheader.i.i_crit_edge invoke.cont7.i.for.body.preheader.i.i_crit_edge: ; preds = %invoke.cont7.i - %.pre35 = shl nuw nsw i64 %conv, 4 + %.pre31 = shl nuw nsw i64 %conv, 4 br label %for.body.preheader.i.i for.body.preheader.i.i: ; preds = %invoke.cont7.i.for.body.preheader.i.i_crit_edge, %invoke.cont7.thread.i - %add.ptr.i.idx.i.pre-phi = phi i64 [ %.pre35, %invoke.cont7.i.for.body.preheader.i.i_crit_edge ], [ %mul.i.i.i.i.i, %invoke.cont7.thread.i ] + %add.ptr.i.idx.i.pre-phi = phi i64 [ %.pre31, %invoke.cont7.i.for.body.preheader.i.i_crit_edge ], [ %mul.i.i.i.i.i, %invoke.cont7.thread.i ] %retval.0.i.i8.i = phi ptr [ %vec_storage, %invoke.cont7.i.for.body.preheader.i.i_crit_edge ], [ %call5.i.i.i2.i.i18, %invoke.cont7.thread.i ] call void @llvm.memset.p0.i64(ptr nonnull align 8 %retval.0.i.i8.i, i8 0, i64 %add.ptr.i.idx.i.pre-phi, i1 false) %data_.i.i19.phi.trans.insert = getelementptr inbounds nuw i8, ptr %vec_storage, i64 280 @@ -2012,7 +2012,7 @@ if.end36: ; preds = %if.then29, %if.end2 %or.cond33.not = or i1 %cmp38, %cmp4130 br i1 %or.cond33.not, label %cleanup, label %for.body.preheader -for.body.preheader: ; preds = %if.end36 +for.cond.preheader: ; preds = %if.end36 %wide.trip.count = zext nneg i32 %n to i64 br label %for.body diff --git a/bench/redis/optimized/networking.ll b/bench/redis/optimized/networking.ll index 5be9a40da30..0875664fd4e 100644 --- a/bench/redis/optimized/networking.ll +++ b/bench/redis/optimized/networking.ll @@ -14709,7 +14709,7 @@ define dso_local void @processEventsWhileBlocked() local_unnamed_addr #0 { br label %5 5: ; preds = %5, %0 - %6 = phi i64 [ %.pre, %0 ], [ %11, %5 ] + %.06 = phi i64 [ %.pre, %0 ], [ %11, %5 ] %.068 = phi i32 [ 4, %0 ], [ %12, %5 ] %7 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @server, i64 88), align 8, !tbaa !277 %8 = tail call i32 @aeProcessEvents(ptr noundef %7, i32 noundef 29) #26 @@ -14721,22 +14721,22 @@ define dso_local void @processEventsWhileBlocked() local_unnamed_addr #0 { %12 = add nsw i32 %.068, -1 %.not = icmp eq i32 %12, 0 %or.cond = select i1 %.not7, i1 true, i1 %.not - br i1 %or.cond, label %13, label %5 + br i1 %or.cond, label %14, label %5 -13: ; preds = %5 +14: ; preds = %5 tail call void @whileBlockedCron() #26 - %14 = load i32, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 - %15 = add nsw i32 %14, -1 - store i32 %15, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 - %16 = icmp sgt i32 %14, 0 - br i1 %16, label %18, label %17, !prof !5 + %15 = load i32, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 + %16 = add nsw i32 %15, -1 + store i32 %16, ptr @ProcessingEventsWhileBlocked, align 4, !tbaa !15 + %17 = icmp sgt i32 %15, 0 + br i1 %17, label %19, label %18, !prof !5 -17: ; preds = %13 +18: ; preds = %14 tail call void @_serverAssert(ptr noundef nonnull @.str.243, ptr noundef nonnull @.str.1, i32 noundef 4492) #26 tail call void @abort() #27 unreachable -18: ; preds = %13 +19: ; preds = %14 store i64 %1, ptr getelementptr inbounds nuw (i8, ptr @server, i64 7824), align 8, !tbaa !275 ret void } diff --git a/bench/redis/optimized/tracking.ll b/bench/redis/optimized/tracking.ll index cee74ae0e2c..7069fc27486 100644 --- a/bench/redis/optimized/tracking.ll +++ b/bench/redis/optimized/tracking.ll @@ -1567,7 +1567,7 @@ define dso_local void @trackingLimitUsedSlots() local_unnamed_addr #0 { %13 = load ptr, ptr @TrackingTable, align 8, !tbaa !31 call void @raxStart(ptr noundef nonnull %1, ptr noundef %13) #9 %14 = icmp sgt i32 %12, 0 - br i1 %14, label %.lr.ph, label %._crit_edge + br i1 %14, label %.lr.ph, label %29 .lr.ph: ; preds = %9 %15 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -1577,21 +1577,21 @@ define dso_local void @trackingLimitUsedSlots() local_unnamed_addr #0 { .critedge: ; preds = %23 %17 = add nsw i32 %.0712, -1 %18 = icmp sgt i32 %.0712, 1 - br i1 %18, label %19, label %._crit_edge + br i1 %18, label %19, label %29 -19: ; preds = %.lr.ph, %.critedge +19:; preds = %.lr.ph, %.critedge %.0712 = phi i32 [ %12, %.lr.ph ], [ %17, %.critedge ] %20 = call i32 @raxSeek(ptr noundef nonnull %1, ptr noundef nonnull @.str, ptr noundef null, i64 noundef 0) #9 %21 = call i32 @raxRandomWalk(ptr noundef nonnull %1, i64 noundef 0) #9 %22 = call i32 @raxEOF(ptr noundef nonnull %1) #9 %.not10 = icmp eq i32 %22, 0 - br i1 %.not10, label %23, label %._crit_edge + br i1 %.not10, label %23, label %29 -23: ; preds = %19 +23: ; preds = %19 %24 = load ptr, ptr %15, align 8, !tbaa !32 - %25 = load i64, ptr %16, align 8, !tbaa !36 - %26 = call ptr @createStringObject(ptr noundef %24, i64 noundef %25) #9 - call void @trackingInvalidateKey(ptr noundef null, ptr noundef %26, i32 noundef 0) + %26 = load i64, ptr %16, align 8, !tbaa !36 + %27 = call ptr @createStringObject(ptr noundef %24, i64 noundef %25) #9 + call void @trackingInvalidateKey(ptr noundef null, ptr noundef %27, i32 noundef 0) call void @decrRefCount(ptr noundef %26) #9 %27 = load ptr, ptr @TrackingTable, align 8, !tbaa !31 %28 = call i64 @raxSize(ptr noundef %27) #9 @@ -1603,14 +1603,14 @@ define dso_local void @trackingLimitUsedSlots() local_unnamed_addr #0 { call void @raxStop(ptr noundef nonnull %1) #9 br label %32, !llvm.loop !111 -._crit_edge: ; preds = %.critedge, %19, %9 +29: ; preds = %.critedge, %19, %9 call void @raxStop(ptr noundef nonnull %1) #9 %30 = load i32, ptr @trackingLimitUsedSlots.timeout_counter, align 4, !tbaa !70 %31 = add i32 %30, 1 store i32 %31, ptr @trackingLimitUsedSlots.timeout_counter, align 4, !tbaa !70 br label %32 -32: ; preds = %29, %._crit_edge +32: ; preds = %29, %29 call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %33 diff --git a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll index d4196e36a96..860701c4cb5 100644 --- a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll +++ b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll @@ -1742,7 +1742,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %20 = lshr i64 %13, 3 %21 = add nuw nsw i64 %20, %19 %.not = icmp eq i64 %2, %21 - br i1 %.not, label %22, label %63 + br i1 %.not, label %22, label %64 22: ; preds = %4 call void @llvm.lifetime.start.p0(ptr nonnull %6) @@ -1762,7 +1762,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 .body: ; preds = %34, %44, %28 %.pn = phi { ptr, i32 } [ %29, %28 ], [ %35, %34 ], [ %45, %44 ] invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) - to label %"_ZN4core3ptr71drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..N$GT$$GT$17hca841a5ba4c97177E.exit" unwind label %66 + to label %"_ZN4core3ptr71drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..N$GT$$GT$17hca841a5ba4c97177E.exit" unwind label %67 28: ; preds = %32, %25 %29 = landingpad { ptr, i32 } @@ -1777,7 +1777,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %33 = invoke { ptr, i64 } @_ZN4ring3rsa10public_key5Inner17exponentiate_elem17h311edcef4128318fE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %6) to label %36 unwind label %28 -34: ; preds = %.loopexit.i +34: ; preds = %60 %35 = landingpad { ptr, i32 } cleanup br label %.body @@ -1806,7 +1806,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %45 = landingpad { ptr, i32 } cleanup invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) - to label %.body unwind label %60 + to label %.body unwind label %61 46: ; preds = %36 invoke void @_ZN4ring4limb21big_endian_from_limbs17h8493c2949eb38239E(ptr noalias noundef nonnull readonly align 8 %37, i64 noundef %38, ptr noalias noundef nonnull align 1 dereferenceable(1024) %3, i64 noundef %41) @@ -1822,18 +1822,18 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 %51 = icmp eq i64 %41, %2 br i1 %51, label %.loopexit.i, label %.lr.ph.i.i -52: ; preds = %.lr.ph.i.i +51: ; preds = %54 %53 = getelementptr inbounds nuw i8, ptr %55, i64 1 - %54 = icmp eq ptr %53, %50 - br i1 %54, label %.loopexit.i, label %.lr.ph.i.i + %53 = icmp eq ptr %53, %50 + br i1 %53, label %60, label %54 -.lr.ph.i.i: ; preds = %48, %52 +54: ; preds = %48, %51 %55 = phi ptr [ %53, %52 ], [ %3, %48 ] %.val.i.i = load i8, ptr %55, align 1, !alias.scope !440, !noalias !445, !noundef !7 %56 = icmp eq i8 %.val.i.i, 0 - br i1 %56, label %52, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i" + br i1 %56, label %51, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i": ; preds = %.lr.ph.i.i, %47 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i": ; preds = %54, %47 %57 = phi ptr [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.31, %47 ], [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.33, %.lr.ph.i.i ] %58 = phi i64 [ 35, %47 ], [ 49, %.lr.ph.i.i ] %59 = phi ptr [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.32, %47 ], [ @anon.3beb75dc861d66d2d938a1ec4e9d58e9.34, %.lr.ph.i.i ] @@ -1843,21 +1843,21 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.cont.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17h2303a783267c09e5E.exit.invoke.i" unreachable -.loopexit.i: ; preds = %52, %48 +60: ; preds = %51, %48 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) to label %62 unwind label %34 -60: ; preds = %44 - %61 = landingpad { ptr, i32 } +61: ; preds = %44 + %62 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #20 unreachable -62: ; preds = %.loopexit.i +63: ; preds = %60 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.sink.split.sink.split -.sink.split.sink.split: ; preds = %30, %62 +.sink.split.sink.split: ; preds = %30, %63 %.sroa.02.2.ph.ph = phi ptr [ %50, %62 ], [ null, %30 ] call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) br label %.sink.split @@ -1865,17 +1865,17 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 .sink.split: ; preds = %.sink.split.sink.split, %22 %.sroa.02.2.ph = phi ptr [ null, %22 ], [ %.sroa.02.2.ph.ph, %.sink.split.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %63 + br label %64 -63: ; preds = %.sink.split, %4 +64: ; preds = %.sink.split, %4 %.sroa.02.2 = phi ptr [ null, %4 ], [ %.sroa.02.2.ph, %.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %7) - %64 = insertvalue { ptr, i64 } poison, ptr %.sroa.02.2, 0 - %65 = insertvalue { ptr, i64 } %64, i64 %2, 1 - ret { ptr, i64 } %65 + %65 = insertvalue { ptr, i64 } poison, ptr %.sroa.02.2, 0 + %66 = insertvalue { ptr, i64 } %65, i64 %2, 1 + ret { ptr, i64 } %66 -66: ; preds = %.body - %67 = landingpad { ptr, i32 } +67: ; preds = %.body + %68 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #20 unreachable diff --git a/bench/rocksdb/optimized/plain_table_reader.ll b/bench/rocksdb/optimized/plain_table_reader.ll index 074f926bd95..f552cb84807 100644 --- a/bench/rocksdb/optimized/plain_table_reader.ll +++ b/bench/rocksdb/optimized/plain_table_reader.ll @@ -8463,8 +8463,8 @@ define linkonce_odr void @_ZN7rocksdb11TableReader8MultiGetERKNS_11ReadOptionsEP _ZNK7rocksdb15MultiGetContext5Range5beginEv.exit: ; preds = %21, %5 %storemerge.lcssa.i.i = phi i64 [ %8, %5 ], [ %storemerge3.i.i, %21 ] - %.not18 = icmp eq i64 %storemerge.lcssa.i.i, %11 - br i1 %.not18, label %._crit_edge, label %.lr.ph + %.not17 = icmp eq i64 %storemerge.lcssa.i.i, %11 + br i1 %.not17, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %_ZNK7rocksdb15MultiGetContext5Range5beginEv.exit %26 = getelementptr inbounds nuw i8, ptr %9, i64 3584 @@ -8482,9 +8482,9 @@ _ZNK7rocksdb15MultiGetContext5Range5beginEv.exit: ; preds = %21, %5 ret void 35: ; preds = %.lr.ph, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit - %.sroa.8.019 = phi i64 [ %storemerge.lcssa.i.i, %.lr.ph ], [ %.lcssa.i, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit ] + %.sroa.8.018 = phi i64 [ %storemerge.lcssa.i.i, %.lr.ph ], [ %.lcssa.i, %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit ] call void @llvm.lifetime.start.p0(ptr nonnull %6) - %36 = getelementptr inbounds nuw ptr, ptr %26, i64 %.sroa.8.019 + %36 = getelementptr inbounds nuw ptr, ptr %26, i64 %.sroa.8.018 %37 = load ptr, ptr %36, align 8, !tbaa !476 %38 = getelementptr inbounds nuw i8, ptr %37, i64 48 %39 = getelementptr inbounds nuw i8, ptr %37, i64 160 @@ -8547,7 +8547,7 @@ _ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_E _ZN7rocksdb6StatusD2Ev.exit: ; preds = %_ZN7rocksdb6StatusaSEOS0_.exit, %_ZNKSt14default_deleteIA_KcEclIS0_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS1_EE5valueEvE4typeEPS5_.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %6) %63 = load i64, ptr %10, align 8, !tbaa !463 - %64 = add i64 %.sroa.8.019, 1 + %64 = add i64 %.sroa.8.018, 1 %65 = icmp ult i64 %64, %63 br i1 %65, label %.lr.ph.i, label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit @@ -8561,19 +8561,19 @@ _ZN7rocksdb6StatusD2Ev.exit: ; preds = %_ZN7rocksdb6Statusa %72 = or i64 %70, %71 br label %75 -73: ; preds = %75 +73: ; preds = %75 %74 = add nuw i64 %76, 1 %exitcond.not.i = icmp eq i64 %74, %63 br i1 %exitcond.not.i, label %._crit_edge, label %75, !llvm.loop !502 -75: ; preds = %73, %.lr.ph.i +75:; preds = %73, %.lr.ph.i %76 = phi i64 [ %64, %.lr.ph.i ], [ %74, %73 ] %77 = shl nuw i64 1, %76 %78 = and i64 %77, %72 %.not.i6 = icmp eq i64 %78, 0 - br i1 %.not.i6, label %..critedge_crit_edge1.i, label %73, !llvm.loop !502 + br i1 %.not.i6, label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, label %73, !llvm.loop !502 -..critedge_crit_edge1.i: ; preds = %75 +_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit: ; preds = %75 br label %_ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit, !llvm.loop !502 _ZN7rocksdb15MultiGetContext5Range8IteratorppEv.exit: ; preds = %_ZN7rocksdb6StatusD2Ev.exit, %..critedge_crit_edge1.i diff --git a/bench/ruby/optimized/date_core.ll b/bench/ruby/optimized/date_core.ll index 91a316ac107..e445662da84 100644 --- a/bench/ruby/optimized/date_core.ll +++ b/bench/ruby/optimized/date_core.ll @@ -9393,13 +9393,13 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(ptr nonnull %10) %134 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %.0.i38, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) %.not54 = icmp eq i32 %134, 0 - br i1 %.not54, label %.lr.ph.preheader, label %._crit_edge + br i1 %.not54, label %.lr.ph, label %._crit_edge -.lr.ph.preheader: ; preds = %m_sg.exit +.lr.ph: ; preds = %m_sg.exit %135 = icmp samesign ult i32 %.0.i38, 2 br i1 %135, label %.lr.ph._crit_edge, label %.lr.ph62 -.lr.ph: ; preds = %.lr.ph62 +136: ; preds = %.lr.ph62 %136 = icmp slt i32 %.0285561, 3 br i1 %136, label %.lr.ph._crit_edge, label %.lr.ph62 @@ -9408,7 +9408,7 @@ m_sg.exit: ; preds = %m_mday.exit, %133 tail call void (i64, ptr, ...) @rb_raise(i64 noundef %137, ptr noundef nonnull @.str.168) #22 unreachable -.lr.ph62: ; preds = %.lr.ph.preheader, %.lr.ph +138: ; preds = %136, %.lr.ph %.0285561 = phi i32 [ %138, %.lr.ph ], [ %.0.i38, %.lr.ph.preheader ] %138 = add nsw i32 %.0285561, -1 call void @llvm.lifetime.end.p0(ptr nonnull %10) @@ -9419,42 +9419,42 @@ m_sg.exit: ; preds = %m_mday.exit, %133 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.lifetime.start.p0(ptr nonnull %10) - %139 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %138, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) - %.not = icmp eq i32 %139, 0 + %140 = call fastcc i32 @valid_civil_p(i64 noundef %.026, i32 noundef %.027, i32 noundef %138, double noundef %.0.i49, ptr noundef %4, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %6, ptr noundef %10) + %.not = icmp eq i32 %140, 0 br i1 %.not, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %.lr.ph62, %m_sg.exit +._crit_edge: ; preds = %138, %m_sg.exit call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) - %140 = load i64, ptr %4, align 8, !tbaa !6 - %141 = load i32, ptr %6, align 4, !tbaa !33 - call fastcc void @encode_jd(i64 noundef %140, i32 noundef %141, ptr noundef %5) - %142 = load i64, ptr %5, align 8, !tbaa !6 + %141 = load i64, ptr %4, align 8, !tbaa !6 + %142 = load i32, ptr %6, align 4, !tbaa !33 + call fastcc void @encode_jd(i64 noundef %141, i32 noundef %142, ptr noundef %5) + %143 = load i64, ptr %5, align 8, !tbaa !6 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %143 = load i32, ptr %11, align 8, !tbaa !47 - %144 = and i32 %143, 128 - %.not.i.i50 = icmp eq i32 %144, 0 - br i1 %.not.i.i50, label %m_real_local_jd.exit, label %145 + %144 = load i32, ptr %11, align 8, !tbaa !47 + %145 = and i32 %144, 128 + %.not.i.i50 = icmp eq i32 %145, 0 + br i1 %.not.i.i50, label %m_real_local_jd.exit, label %146 -145: ; preds = %._crit_edge +146: ; preds = %._crit_edge tail call fastcc void @get_c_civil(ptr noundef nonnull %11) br label %m_real_local_jd.exit -m_real_local_jd.exit: ; preds = %._crit_edge, %145 +m_real_local_jd.exit: ; preds = %._crit_edge, %146 %.0.in.i.i = getelementptr inbounds nuw i8, ptr %11, i64 8 %.0.i.i = load i64, ptr %.0.in.i.i, align 8, !tbaa !47 - %146 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) - call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %146, ptr noundef %3) - %147 = load i64, ptr %3, align 8, !tbaa !6 + %147 = tail call fastcc i32 @m_local_jd(ptr noundef nonnull %11) + call fastcc void @encode_jd(i64 noundef %.0.i.i, i32 noundef %147, ptr noundef %3) + %148 = load i64, ptr %3, align 8, !tbaa !6 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %148 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %142, i64 noundef 45, i32 noundef 1, i64 noundef %147) #21 - %149 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %148) + %149 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %143, i64 noundef 45, i32 noundef 1, i64 noundef %148) #21 + %150 = tail call i64 @d_lite_plus(i64 noundef %0, i64 noundef %149) call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) - ret i64 %149 + ret i64 %150 } ; Function Attrs: nounwind sspstrong uwtable diff --git a/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll b/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll index b4feed8ef94..9a55c7967e4 100644 --- a/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll +++ b/bench/ruff-rs/optimized/7qxi6ixqvlegea1o7y7fo6yub.ll @@ -4710,9 +4710,9 @@ define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice. .lr.ph: ; preds = %.preheader.split, %.lr.ph %.sroa.01.08 = phi i64 [ %7, %.lr.ph ], [ 0, %.preheader.split ] %5 = getelementptr inbounds nuw i32, ptr %0, i64 %.sroa.01.08 - %6 = getelementptr inbounds nuw i32, ptr %2, i64 %.sroa.01.08 + %7 = getelementptr inbounds nuw i32, ptr %2, i64 %.sroa.01.08 %.val = load i32, ptr %5, align 4, !noundef !3 - %.val5 = load i32, ptr %6, align 4, !noundef !3 + %.val = load i32, ptr %7, align 4, !noundef !3 %.not6 = icmp eq i32 %.val, %.val5 %7 = add nuw i64 %.sroa.01.08, 1 %exitcond.not = icmp ne i64 %7, %1 diff --git a/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll b/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll index c76fb8deb9c..1ca03eb8e83 100644 --- a/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll +++ b/bench/ruff-rs/optimized/9dt8mtshsu2ct8ugypwqwozwg.ll @@ -352,19 +352,19 @@ _ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread: ; pr %.sroa.4.1.i.ph.i.i.i = phi i32 [ %26, %25 ], [ %37, %33 ] %53 = icmp samesign ult i32 %.sroa.4.1.i.ph.i.i.i, 1114112 tail call void @llvm.assume(i1 %53) - br label %54 + br label %.preheader.i.i.i.i -54: ; preds = %54, %52 - %.idx12.i.i.i.i = phi i64 [ 0, %52 ], [ %.add.i.i.i.i, %54 ] - %.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %6, i64 %.idx12.i.i.i.i +.preheader.i.i.i.i: ; preds = %54, %52 + %.idx.i.i.i.i = phi i64 [ 0, %52 ], [ %.add.i.i.i.i, %54 ] + %.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %6, i64 %.idx.i.i.i.i %.val4.i.i.i.i.i = load i32, ptr %.ptr.i.i.i.i, align 4, !range !73, !alias.scope !74, !noalias !79, !noundef !25 %55 = icmp eq i32 %.val4.i.i.i.i.i, %.sroa.4.1.i.ph.i.i.i - %.add.i.i.i.i = add nuw nsw i64 %.idx12.i.i.i.i, 4 + %.add.i.i.i.i = add nuw nsw i64 %.idx.i.i.i.i, 4 %.not.not.not.i.not.i.i.i.i = icmp eq i64 %.add.i.i.i.i, 8 %or.cond.i.i.i.i = select i1 %55, i1 true, i1 %.not.not.not.i.not.i.i.i.i br i1 %or.cond.i.i.i.i, label %_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit, label %54 -_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit: ; preds = %54 +_ZN4core3str7pattern7Pattern12is_suffix_of17hd637d13abc11f369E.exit.thread: ; preds = %.preheader.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !41 br i1 %55, label %.split12, label %56 diff --git a/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll b/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll index 7255b536ad9..3f78294fa15 100644 --- a/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll +++ b/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll @@ -457,44 +457,44 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11resize_with17h9ec1ef132d96 %26 = icmp eq i64 %5, %1 br i1 %26, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit", label %.lr.ph.i -27: ; preds = %.lr.ph.i +26: ; preds = %28 %28 = icmp eq i64 %30, %22 - br i1 %28, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit", label %.lr.ph.i + br i1 %28, label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit", label %28 -.lr.ph.i: ; preds = %21, %27 +28: ; preds = %21, %26 %.sroa.0.07.i = phi i64 [ %30, %27 ], [ 0, %21 ] %29 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %25, i64 %.sroa.0.07.i %30 = add nuw i64 %.sroa.0.07.i, 1 invoke void @"_ZN4core3ptr73drop_in_place$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$17h4366da475814f7b0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %29) - to label %27 unwind label %34 + to label %27 unwind label %33 -31: ; preds = %.lr.ph10.i +31: ; preds = %35 %32 = add i64 %.sroa.0.18.i, 1 - %33 = icmp eq i64 %32, %22 - br i1 %33, label %._crit_edge11.i, label %.lr.ph10.i + %32 = icmp eq i64 %32, %22 + br i1 %32, label %38, label %35 -34: ; preds = %.lr.ph.i - %35 = landingpad { ptr, i32 } +33: ; preds = %28 + %34 = landingpad { ptr, i32 } cleanup %36 = icmp eq i64 %30, %22 br i1 %36, label %._crit_edge11.i, label %.lr.ph10.i -.lr.ph10.i: ; preds = %34, %31 +35: ; preds = %34, %31 %.sroa.0.18.i = phi i64 [ %32, %31 ], [ %30, %34 ] %37 = getelementptr inbounds nuw { { { i64, ptr, {} }, {} }, i64 }, ptr %25, i64 %.sroa.0.18.i invoke void @"_ZN4core3ptr73drop_in_place$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$17h4366da475814f7b0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %37) #14 - to label %31 unwind label %38 + to label %31 unwind label %39 -._crit_edge11.i: ; preds = %31, %34 - resume { ptr, i32 } %35 +38: ; preds = %31, %34 + resume { ptr, i32 } %34 -38: ; preds = %.lr.ph10.i - %39 = landingpad { ptr, i32 } +39: ; preds = %35 + %40 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #15 unreachable -"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit": ; preds = %27, %21, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17ha90d52c797e78adcE.exit" +"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit": ; preds = %26, %21, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17ha90d52c797e78adcE.exit" ret void } diff --git a/bench/sdl/optimized/SDL_string.ll b/bench/sdl/optimized/SDL_string.ll index 05831a02e6e..c09aada6e69 100644 --- a/bench/sdl/optimized/SDL_string.ll +++ b/bench/sdl/optimized/SDL_string.ll @@ -759,25 +759,25 @@ define hidden range(i32 0, 1966080) i32 @SDL_StepBackUTF8_REAL(ptr noundef readn %3 = ptrtoint ptr %0 to i64 %4 = alloca ptr, align 8 %.not = icmp eq ptr %1, null - br i1 %.not, label %19, label %5 + br i1 %.not, label %22, label %5 5: ; preds = %2 %6 = load ptr, ptr %1, align 8 %7 = ptrtoint ptr %6 to i64 %.not11 = icmp ugt ptr %6, %0 - br i1 %.not11, label %.lr.ph.preheader, label %19 + br i1 %.not11, label %8, label %22 -.lr.ph.preheader: ; preds = %5 +8: ; preds = %5 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %8 = sub i64 %3, %7 - %scevgep = getelementptr i8, ptr %6, i64 %8 + %9 = sub i64 %3, %7 + %scevgep = getelementptr i8, ptr %6, i64 %9 br label %.lr.ph -9: ; preds = %.lr.ph +17: ; preds = %.lr.ph %10 = icmp eq ptr %12, %0 br i1 %10, label %._crit_edge, label %.lr.ph, !llvm.loop !8 -.lr.ph: ; preds = %.lr.ph.preheader, %9 +.lr.ph:; preds = %8, %9 %11 = phi ptr [ %12, %9 ], [ %6, %.lr.ph.preheader ] %12 = getelementptr inbounds i8, ptr %11, i64 -1 %13 = load i8, ptr %12, align 1 @@ -795,9 +795,9 @@ define hidden range(i32 0, 1966080) i32 @SDL_StepBackUTF8_REAL(ptr noundef readn store ptr %15, ptr %1, align 8 %18 = call fastcc i32 @StepUTF8(ptr noundef nonnull %4, i64 noundef %17) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %19 + br label %22 -19: ; preds = %2, %5, %._crit_edge +22: ; preds = %2, %5, %._crit_edge %.0 = phi i32 [ %18, %._crit_edge ], [ 0, %5 ], [ 0, %2 ] ret i32 %.0 } diff --git a/bench/sentencepiece/optimized/builder.ll b/bench/sentencepiece/optimized/builder.ll index db468f5ba05..7866e832841 100644 --- a/bench/sentencepiece/optimized/builder.ll +++ b/bench/sentencepiece/optimized/builder.ll @@ -19162,11 +19162,11 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %11 = icmp eq i64 %2, 0 br i1 %11, label %._crit_edge, label %.lr.ph21 -12: ; preds = %.lr.ph21 +11: ; preds = %.lr.ph21 %13 = icmp eq i64 %19, 0 - br i1 %13, label %._crit_edge, label %.lr.ph21, !llvm.loop !416 + br i1 %13, label %14, label %.lr.ph21, !llvm.loop !416 -._crit_edge: ; preds = %12, %.lr.ph +14: ; preds = %11, %.lr.ph %storemerge13.lcssa = phi ptr [ %1, %.lr.ph ], [ %23, %12 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -19174,20 +19174,20 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.05.i.i = phi ptr [ %14, %.lr.ph.i.i ], [ %storemerge13.lcssa, %._crit_edge ] - %14 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -40 - call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_RT0_(ptr %0, ptr nonnull %14, ptr nonnull %14, ptr noundef nonnull align 1 dereferenceable(1) %5) - %15 = ptrtoint ptr %14 to i64 - %16 = sub i64 %15, %6 - %17 = icmp sgt i64 %16, 40 - br i1 %17, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit, !llvm.loop !417 +.lr.ph.i.i: ; preds = %14, %.lr.ph.i.i + %.sroa.0.05.i.i = phi ptr [ %15, %.lr.ph.i.i ], [ %storemerge13.lcssa, %._crit_edge ] + %15 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -40 + call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_RT0_(ptr %0, ptr nonnull %15, ptr nonnull %15, ptr noundef nonnull align 1 dereferenceable(1) %5) + %16 = ptrtoint ptr %15 to i64 + %17 = sub i64 %16, %6 + %18 = icmp sgt i64 %17, 40 + br i1 %18, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit, !llvm.loop !417 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit: ; preds = %.lr.ph.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.lr.ph21: ; preds = %.lr.ph, %12 +19: ; preds = %.lr.ph, %11 %storemerge1320 = phi ptr [ %23, %12 ], [ %1, %.lr.ph ] %.01419 = phi i64 [ %19, %12 ], [ %2, %.lr.ph ] %18 = phi i64 [ %25, %12 ], [ %8, %.lr.ph ] @@ -19203,7 +19203,7 @@ _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_ %26 = icmp sgt i64 %25, 640 br i1 %26, label %12, label %.loopexit, !llvm.loop !416 -.loopexit: ; preds = %.lr.ph21, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit +.loopexit: ; preds = %19, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_less_iterEEvT_SH_SH_T0_.exit ret void } diff --git a/bench/slurm/optimized/cbuf.ll b/bench/slurm/optimized/cbuf.ll index b4a6d517be8..9b46639722a 100644 --- a/bench/slurm/optimized/cbuf.ll +++ b/bench/slurm/optimized/cbuf.ll @@ -322,7 +322,7 @@ define dso_local i32 @cbuf_lines_used(ptr noundef %0) local_unnamed_addr #0 { %26 = icmp eq i32 %spec.select43.i19, 0 br i1 %26, label %cbuf_find_unread_line.exit, label %.lr.ph -27: ; preds = %.lr.ph +27:; preds = %.lr.ph %spec.select43.i = add nsw i32 %spec.select43.i21, -1 %28 = sext i32 %35 to i64 %29 = getelementptr inbounds i8, ptr %19, i64 %28 @@ -333,16 +333,16 @@ define dso_local i32 @cbuf_lines_used(ptr noundef %0) local_unnamed_addr #0 { %33 = icmp eq i32 %spec.select43.i, 0 br i1 %33, label %cbuf_find_unread_line.exit, label %.lr.ph, !llvm.loop !8 -.lr.ph: ; preds = %.lr.ph.i, %27 +.lr.ph:; preds = %.lr.ph.i, %27 %.232.i22 = phi i32 [ %.232.i, %27 ], [ %25, %.lr.ph.i ] %spec.select43.i21 = phi i32 [ %spec.select43.i, %27 ], [ %spec.select43.i19, %.lr.ph.i ] - %.03747.i20 = phi i32 [ %35, %27 ], [ %15, %.lr.ph.i ] - %34 = add nsw i32 %.03747.i20, 1 + %.0 = phi i32 [ %35, %27 ], [ %15, %.lr.ph.i ] + %34 = add nsw i32 %.0, 1 %35 = srem i32 %34, %20 %.not.i = icmp eq i32 %35, %17 br i1 %.not.i, label %.cbuf_find_unread_line.exit.loopexit_crit_edge, label %27, !llvm.loop !8 -.cbuf_find_unread_line.exit.loopexit_crit_edge: ; preds = %.lr.ph +.cbuf_find_unread_line.exit.loopexit_crit_edge:; preds = %.lr.ph br label %cbuf_find_unread_line.exit, !llvm.loop !8 cbuf_find_unread_line.exit: ; preds = %27, %.lr.ph.i, %.cbuf_find_unread_line.exit.loopexit_crit_edge, %13, %5, %9 @@ -357,7 +357,7 @@ cbuf_find_unread_line.exit: ; preds = %27, %.lr.ph.i, %.cb tail call void (ptr, ...) @fatal_abort(ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.cbuf_lines_used) #16 unreachable -39: ; preds = %cbuf_find_unread_line.exit +34: ; preds = %cbuf_find_unread_line.exit ret i32 %.0 } diff --git a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll index 601805a3029..203f2c6590e 100644 --- a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll +++ b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll @@ -684,13 +684,13 @@ define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__icoP %3 = load i64, ptr %2, align 8 %4 = and i64 %3, 1 %.not.i5.not = icmp eq i64 %4, 0 - br i1 %.not.i5.not, label %_Z31Vmycpu_top___024root___eval_icoP20Vmycpu_top___024root.exit, label %5 + br i1 %.not.i5.not, label %_ZNK12VlTriggerVecILm1EE3anyEv.exit, label %5 -5: ; preds = %1 +5:; preds = %1 tail call void @_Z42Vmycpu_top___024root___ico_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef nonnull %0) - br label %_Z31Vmycpu_top___024root___eval_icoP20Vmycpu_top___024root.exit + br label %_ZNK12VlTriggerVecILm1EE3anyEv.exit -_Z31Vmycpu_top___024root___eval_icoP20Vmycpu_top___024root.exit: ; preds = %5, %1 +_ZNK12VlTriggerVecILm1EE3anyEv.exit: ; preds = %5, %1 %.not.i = icmp ne i64 %3, 0 ret i1 %.not.i } diff --git a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll index a9ec638749c..d624938a603 100644 --- a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll +++ b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0__Slow.ll @@ -222,13 +222,13 @@ define dso_local noundef zeroext i1 @_Z38Vmycpu_top___024root___eval_phase__stlP %2 = getelementptr inbounds nuw i8, ptr %0, i64 19200 %3 = load i64, ptr %2, align 8 %.not.i = icmp ne i64 %3, 0 - br i1 %.not.i, label %4, label %5 + br i1 %.not.i, label %4, label %_ZNK12VlTriggerVecILm2EE3anyEv.exit -4: ; preds = %1 +8: ; preds = %1 tail call void @_Z31Vmycpu_top___024root___eval_stlP20Vmycpu_top___024root(ptr noundef nonnull %0) #12 - br label %5 + br label %_ZNK12VlTriggerVecILm2EE3anyEv.exit -5: ; preds = %4, %1 +_ZNK12VlTriggerVecILm2EE3anyEv.exit: ; preds = %4, %1 ret i1 %.not.i } diff --git a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll index 8fcdcecf41d..ddfd955924a 100644 --- a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll +++ b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll @@ -2127,9 +2127,9 @@ define hidden void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc.. %.val = load double, ptr %3, align 8 br label %5 -5: ; preds = %23, %4 - %.sroa.3.0 = phi i64 [ %2, %4 ], [ %28, %23 ] - %.sroa.0.0 = phi ptr [ %1, %4 ], [ %27, %23 ] +5: ; preds = %24, %4 + %.sroa.3.0 = phi i64 [ %2, %4 ], [ %29, %23 ] + %.sroa.0.0 = phi ptr [ %1, %4 ], [ %28, %23 ] %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 %7 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 186 %8 = load i16, ptr %7, align 2, !noalias !431, !noundef !4 @@ -2139,50 +2139,50 @@ define hidden void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc.. %11 = icmp eq i16 %8, 0 br i1 %11, label %.loopexit.i, label %.lr.ph.i.i -12: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" +11: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" %13 = add nuw nsw i64 %.sroa.8.012.i.i, 1 %14 = getelementptr inbounds nuw i8, ptr %.sroa.03.011.i.i, i64 8 - %15 = icmp eq ptr %14, %10 - br i1 %15, label %.loopexit.i, label %.lr.ph.i.i + %12 = icmp eq ptr %14, %10 + br i1 %12, label %21, label %13 default.unreachable.i.i: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" unreachable -.lr.ph.i.i: ; preds = %5, %12 +13: ; preds = %5, %11 %.sroa.8.012.i.i = phi i64 [ %13, %12 ], [ 0, %5 ] %.sroa.03.011.i.i = phi ptr [ %14, %12 ], [ %6, %5 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !434) - %16 = load double, ptr %.sroa.03.011.i.i, align 8, !alias.scope !437, !noalias !440, !noundef !4 - %17 = fcmp uno double %.val, %16 - br i1 %17, label %18, label %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" + %14 = load double, ptr %.sroa.03.011.i.i, align 8, !alias.scope !437, !noalias !440, !noundef !4 + %15 = fcmp uno double %.val, %14 + br i1 %15, label %16, label %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" -18: ; preds = %.lr.ph.i.i +16: ; preds = %13 tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.2e0ec6afcc8886635c093ddcdbf46286.10.llvm.9554138872291501309) #20, !noalias !443 unreachable -"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i": ; preds = %.lr.ph.i.i +"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i": ; preds = %13 %19 = fcmp ult double %.val, %16 %20 = fcmp ugt double %.val, %16 %..i.i.i.i = select i1 %19, i8 2, i8 1 %.1.i.i.i.i = sext i1 %19 to i8 %.sroa.0.0.i.i.i.i = select i1 %20, i8 %..i.i.i.i, i8 %.1.i.i.i.i switch i8 %.sroa.0.0.i.i.i.i, label %default.unreachable.i.i [ - i8 -1, label %.loopexit.i + i8 -1, label %21 i8 0, label %.loopexit - i8 1, label %12 + i8 1, label %11 ] -.loopexit.i: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i", %12, %5 +21: ; preds = %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i", %11, %5 %.sroa.4.0.i.ph.sink.i.ph = phi i64 [ 0, %5 ], [ %.sroa.8.012.i.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ %9, %12 ] - %21 = icmp eq i64 %.sroa.3.0, 0 - br i1 %21, label %.loopexit, label %23 + %22 = icmp eq i64 %.sroa.3.0, 0 + br i1 %22, label %.loopexit, label %24 -.loopexit: ; preds = %.loopexit.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" +.loopexit: ; preds = %21, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" %.sink = phi i64 [ %.sroa.3.0, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ 0, %.loopexit.i ] %.sroa.4.0.i.ph.sink.i.ph.lcssa.sink = phi i64 [ %.sroa.8.012.i.i, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ %.sroa.4.0.i.ph.sink.i.ph, %.loopexit.i ] %storemerge = phi i64 [ 0, %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" ], [ 1, %.loopexit.i ] - %22 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.0.0, ptr %22, align 8 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %.sroa.0.0, ptr %23, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sink, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.319.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2190,13 +2190,13 @@ default.unreachable.i.i: ; preds = %"_ZN83_$LT$statrs.. store i64 %storemerge, ptr %0, align 8 ret void -23: ; preds = %.loopexit.i - %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 192 - %25 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph, 12 - tail call void @llvm.assume(i1 %25) - %26 = getelementptr inbounds nuw ptr, ptr %24, i64 %.sroa.4.0.i.ph.sink.i.ph - %27 = load ptr, ptr %26, align 8, !noalias !444, !nonnull !4, !noundef !4 - %28 = add i64 %.sroa.3.0, -1 +24: ; preds = %21 + %25 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 192 + %26 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph, 12 + tail call void @llvm.assume(i1 %26) + %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %.sroa.4.0.i.ph.sink.i.ph + %28 = load ptr, ptr %27, align 8, !noalias !444, !nonnull !4, !noundef !4 + %29 = add i64 %.sroa.3.0, -1 br label %5 } diff --git a/bench/stockfish/optimized/search.ll b/bench/stockfish/optimized/search.ll index e0fa753c11a..4d4cd2c56f4 100644 --- a/bench/stockfish/optimized/search.ll +++ b/bench/stockfish/optimized/search.ll @@ -840,13 +840,13 @@ define dso_local void @_ZN9Stockfish6Search6Worker19iterative_deepeningEv(ptr no br i1 %37, label %32, label %.preheader365, !llvm.loop !9 .preheader365: ; preds = %32, %.preheader365 - %indvars.iv464 = phi i64 [ %indvars.iv.next465, %.preheader365 ], [ 0, %32 ] - %38 = getelementptr inbounds nuw %"struct.Stockfish::Search::Stack", ptr %30, i64 %indvars.iv464 + %indvars.iv460 = phi i64 [ %indvars.iv.next461, %.preheader365 ], [ 0, %32 ] + %38 = getelementptr inbounds nuw %"struct.Stockfish::Search::Stack", ptr %30, i64 %indvars.iv460 %39 = getelementptr inbounds nuw i8, ptr %38, i64 16 - %40 = trunc nuw nsw i64 %indvars.iv464 to i32 + %40 = trunc nuw nsw i64 %indvars.iv460 to i32 store i32 %40, ptr %39, align 8 - %indvars.iv.next465 = add nuw nsw i64 %indvars.iv464, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next465, 249 + %indvars.iv.next461 = add nuw nsw i64 %indvars.iv460, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next461, 249 br i1 %exitcond.not, label %41, label %.preheader365, !llvm.loop !10 41: ; preds = %.preheader365 @@ -1036,7 +1036,7 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio %120 = getelementptr inbounds nuw i8, ptr %0, i64 9570388 %121 = getelementptr inbounds nuw i8, ptr %0, i64 9570424 %122 = getelementptr inbounds nuw i8, ptr %0, i64 9570416 - %.not428 = icmp eq i64 %.sroa.speculated333, 0 + %.not424 = icmp eq i64 %.sroa.speculated333, 0 %123 = getelementptr inbounds nuw i8, ptr %0, i64 9570456 %124 = getelementptr inbounds nuw i8, ptr %0, i64 9570464 %125 = zext i32 %29 to i64 @@ -1124,32 +1124,32 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio %169 = zext nneg i8 %168 to i32 %spec.select = add nsw i32 %.0145, %169 store i64 0, ptr %122, align 16 - br i1 %.not428, label %.critedge3, label %.lr.ph418 + br i1 %.not424, label %.critedge3, label %.lr.ph414 -.lr.ph418: ; preds = %._crit_edge +.lr.ph414: ; preds = %._crit_edge %170 = mul i32 %spec.select, 3 %171 = add i32 %170, 3 %.neg = sdiv i32 %171, -4 %172 = load ptr, ptr %119, align 16 %173 = load atomic i8, ptr %172 seq_cst, align 1 %174 = trunc i8 %173 to i1 - br i1 %174, label %.critedge3, label %.lr.ph587 + br i1 %174, label %.critedge3, label %.lr.ph581 175: ; preds = %383 %176 = load ptr, ptr %119, align 16 %177 = load atomic i8, ptr %176 seq_cst, align 1 %178 = trunc i8 %177 to i1 - br i1 %178, label %.critedge3, label %.lr.ph587, !llvm.loop !12 + br i1 %178, label %.critedge3, label %.lr.ph581, !llvm.loop !12 -.lr.ph587: ; preds = %.lr.ph418, %175 - %.0147415586 = phi i64 [ %.1148, %175 ], [ 0, %.lr.ph418 ] +.lr.ph581: ; preds = %.lr.ph414, %175 + %.0147411580 = phi i64 [ %.1148, %175 ], [ 0, %.lr.ph418 ] %179 = load i64, ptr %122, align 16 %180 = load i64, ptr %121, align 8 %181 = icmp eq i64 %179, %180 %.pre = load ptr, ptr %110, align 64 br i1 %181, label %.preheader, label %.loopexit -.preheader: ; preds = %.lr.ph587 +.preheader: ; preds = %.lr.ph581 %182 = load ptr, ptr %111, align 8 %183 = ptrtoint ptr %182 to i64 %184 = ptrtoint ptr %.pre to i64 @@ -1160,7 +1160,7 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio %187 = icmp ult i64 %storemerge159411, %186 br i1 %187, label %.lr.ph413, label %.loopexit -.lr.ph413: ; preds = %.preheader +.lr.ph413: ; preds = %.preheader %188 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %179 %189 = getelementptr inbounds nuw i8, ptr %188, i64 24 br label %191 @@ -1168,8 +1168,8 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio 190: ; preds = %191 %storemerge159 = add nuw i64 %storemerge159412, 1 store i64 %storemerge159, ptr %121, align 8 - %exitcond467.not = icmp eq i64 %storemerge159, %186 - br i1 %exitcond467.not, label %.loopexit, label %191, !llvm.loop !13 + %190 = icmp eq i64 %storemerge159, %186 + br i1 %190, label %.loopexit, label %191, !llvm.loop !13 191: ; preds = %.lr.ph413, %190 %storemerge159412 = phi i64 [ %storemerge159411, %.lr.ph413 ], [ %storemerge159, %190 ] @@ -1183,8 +1183,8 @@ _ZN9Stockfish6OptionD2Ev.exit194: ; preds = %_ZN9Stockfish6Optio ..loopexit_crit_edge: ; preds = %191 br label %.loopexit, !llvm.loop !13 -.loopexit: ; preds = %190, %.preheader, %..loopexit_crit_edge, %.lr.ph587 - %.1148 = phi i64 [ %.0147415586, %.lr.ph587 ], [ %179, %..loopexit_crit_edge ], [ %179, %.preheader ], [ %179, %190 ] +.loopexit: ; preds = %190, %.preheader, %..loopexit_crit_edge, %.lr.ph581 + %.1148 = phi i64 [ %.0147411580, %.lr.ph587 ], [ %179, %..loopexit_crit_edge ], [ %179, %.preheader ], [ %179, %190 ] store i32 0, ptr %123, align 8 %196 = getelementptr inbounds %"struct.Stockfish::Search::RootMove", ptr %.pre, i64 %179 %197 = getelementptr inbounds nuw i8, ptr %196, i64 8 @@ -1623,7 +1623,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, ..critedge3.loopexit_crit_edge: ; preds = %383 br label %.critedge3, !llvm.loop !12 -.critedge3: ; preds = %175, %.lr.ph418, %..critedge3.loopexit_crit_edge, %._crit_edge +.critedge3: ; preds = %175, %.lr.ph414, %..critedge3.loopexit_crit_edge, %._crit_edge %.1131.lcssa = phi i32 [ %.0130, %._crit_edge ], [ %213, %..critedge3.loopexit_crit_edge ], [ %.0130, %.lr.ph418 ], [ %213, %175 ] %387 = load ptr, ptr %119, align 16 %388 = load atomic i8, ptr %387 seq_cst, align 1 @@ -1640,11 +1640,11 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, %394 = getelementptr inbounds nuw i8, ptr %393, i64 1 %395 = load atomic i8, ptr %394 seq_cst, align 1 %396 = trunc i8 %395 to i1 - %.pre469 = load ptr, ptr %110, align 64 + %.pre464 = load ptr, ptr %110, align 64 br i1 %396, label %397, label %450 397: ; preds = %392 - %398 = load i32, ptr %.pre469, align 8 + %398 = load i32, ptr %.pre464, align 8 %.not = icmp ne i32 %398, -32001 %399 = icmp slt i32 %398, -31506 %or.cond354 = and i1 %.not, %399 @@ -1654,7 +1654,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, %.val179 = load ptr, ptr %111, align 8 %.val180 = load ptr, ptr %3, align 8 %401 = ptrtoint ptr %.val179 to i64 - %402 = ptrtoint ptr %.pre469 to i64 + %402 = ptrtoint ptr %.pre464 to i64 %403 = sub i64 %401, %402 %404 = sdiv exact i64 %403, 56 %405 = ashr i64 %404, 2 @@ -1664,12 +1664,12 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, .lr.ph.i.i.i.i: ; preds = %400 %.val.val.val.i.i.i.i = load i16, ptr %.val180, align 2 %407 = mul nuw nsw i64 %405, 224 - %scevgep.i.i.i.i = getelementptr i8, ptr %.pre469, i64 %407 + %scevgep.i.i.i.i = getelementptr i8, ptr %.pre464, i64 %407 br label %408 408: ; preds = %420, %.lr.ph.i.i.i.i %.064.i.i.i.i = phi i64 [ %405, %.lr.ph.i.i.i.i ], [ %422, %420 ] - %.sroa.044.063.i.i.i.i = phi ptr [ %.pre469, %.lr.ph.i.i.i.i ], [ %421, %420 ] + %.sroa.044.063.i.i.i.i = phi ptr [ %.pre464, %.lr.ph.i.i.i.i ], [ %421, %420 ] %409 = getelementptr i8, ptr %.sroa.044.063.i.i.i.i, i64 32 %.val1.i.i.i.i.i = load ptr, ptr %409, align 8 %.val1.val.i.i.i.i.i = load i16, ptr %.val1.i.i.i.i.i, align 2 @@ -1710,7 +1710,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, ._crit_edge.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i, %400 %.pre-phi75.i.i.i.i = phi i64 [ %.pre74.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %403, %400 ] - %.sroa.044.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %.pre469, %400 ] + %.sroa.044.0.lcssa.i.i.i.i = phi ptr [ %scevgep.i.i.i.i, %._crit_edge.loopexit.i.i.i.i ], [ %.pre464, %400 ] %424 = sdiv exact i64 %.pre-phi75.i.i.i.i, 56 switch i64 %424, label %"_ZN9Stockfish7Utility13move_to_frontINS_6Search8RootMoveEZNS2_6Worker19iterative_deepeningEvE3$_0EEvRSt6vectorIT_SaIS7_EET0_.exit" [ i64 3, label %425 @@ -1780,12 +1780,12 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, 441: ; preds = %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i" %442 = getelementptr inbounds nuw i8, ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, i64 56 - %443 = call ptr @_ZNSt3_V28__rotateIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_St26random_access_iterator_tag(ptr nonnull %.pre469, ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, ptr nonnull %442) - %.pre471 = load ptr, ptr %110, align 64 + %443 = call ptr @_ZNSt3_V28__rotateIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_St26random_access_iterator_tag(ptr nonnull %.pre464, ptr %.sroa.08.0.in.sroa.speculated.i.i.i.i, ptr nonnull %442) + %.pre466 = load ptr, ptr %110, align 64 br label %"_ZN9Stockfish7Utility13move_to_frontINS_6Search8RootMoveEZNS2_6Worker19iterative_deepeningEvE3$_0EEvRSt6vectorIT_SaIS7_EET0_.exit" "_ZN9Stockfish7Utility13move_to_frontINS_6Search8RootMoveEZNS2_6Worker19iterative_deepeningEvE3$_0EEvRSt6vectorIT_SaIS7_EET0_.exit": ; preds = %._crit_edge.i.i.i.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i", %441 - %444 = phi ptr [ %.pre469, %._crit_edge.i.i.i.i ], [ %.pre469, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i" ], [ %.pre471, %441 ] + %444 = phi ptr [ %.pre464, %._crit_edge.i.i.i.i ], [ %.pre464, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN9Stockfish6Search8RootMoveESt6vectorIS4_SaIS4_EEEEZNS3_6Worker19iterative_deepeningEvE3$_0ET_SC_SC_T0_.exit.i" ], [ %.pre466, %441 ] %445 = getelementptr inbounds nuw i8, ptr %444, i64 32 %446 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %445, ptr noundef nonnull align 8 dereferenceable(24) %3) %447 = load ptr, ptr %110, align 64 @@ -1796,7 +1796,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, br label %495 450: ; preds = %397, %392 - %451 = getelementptr inbounds nuw i8, ptr %.pre469, i64 32 + %451 = getelementptr inbounds nuw i8, ptr %.pre464, i64 32 %452 = load ptr, ptr %451, align 8 %453 = load ptr, ptr %3, align 8 %454 = load i16, ptr %452, align 2 @@ -1809,7 +1809,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit207: ; preds = %.lr.ph.i.i202, br i1 %.not.i209, label %_ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit, label %457 457: ; preds = %456 - %458 = getelementptr inbounds nuw i8, ptr %.pre469, i64 40 + %458 = getelementptr inbounds nuw i8, ptr %.pre464, i64 40 %459 = load ptr, ptr %458, align 8 %460 = ptrtoint ptr %459 to i64 %461 = ptrtoint ptr %452 to i64 @@ -1895,11 +1895,11 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_E %490 = load ptr, ptr %3, align 8 %491 = getelementptr inbounds i8, ptr %490, i64 %462 store ptr %491, ptr %27, align 8 - %.pre470 = load ptr, ptr %110, align 64 + %.pre465 = load ptr, ptr %110, align 64 br label %_ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit _ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit: ; preds = %456, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i - %492 = phi ptr [ %.pre469, %456 ], [ %.pre470, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] + %492 = phi ptr [ %.pre464, %456 ], [ %.pre465, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKN9Stockfish4MoveESt6vectorIS3_SaIS3_EEEENS1_IPS3_S8_EEET0_T_SD_SC_.exit.i ] %493 = load i32, ptr %492, align 8 %494 = load i32, ptr %118, align 8 br label %495 @@ -1950,27 +1950,27 @@ _ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit: ; preds = %456, %_ZSt4copyI %518 = load ptr, ptr %517, align 8 %519 = getelementptr inbounds nuw i8, ptr %516, i64 24 %520 = load ptr, ptr %519, align 8 - %.not362421 = icmp eq ptr %518, %520 - br i1 %.not362421, label %._crit_edge426, label %.lr.ph425 + %.not362417 = icmp eq ptr %518, %520 + br i1 %.not362417, label %._crit_edge422, label %.lr.ph421 -.lr.ph425: ; preds = %515, %.lr.ph425 - %.2423 = phi double [ %527, %.lr.ph425 ], [ %506, %515 ] - %.sroa.0289.0422 = phi ptr [ %530, %.lr.ph425 ], [ %518, %515 ] - %521 = load ptr, ptr %.sroa.0289.0422, align 8 +.lr.ph421: ; preds = %515, %.lr.ph421 + %.2419 = phi double [ %527, %.lr.ph425 ], [ %506, %515 ] + %.sroa.0289.0418 = phi ptr [ %530, %.lr.ph425 ], [ %518, %515 ] + %521 = load ptr, ptr %.sroa.0289.0418, align 8 %522 = getelementptr inbounds nuw i8, ptr %521, i64 8 %523 = load ptr, ptr %522, align 8 %524 = getelementptr inbounds nuw i8, ptr %523, i64 9570448 %525 = load atomic i64, ptr %524 seq_cst, align 8 %526 = uitofp i64 %525 to double - %527 = fadd double %.2423, %526 + %527 = fadd double %.2419, %526 %528 = load ptr, ptr %522, align 8 %529 = getelementptr inbounds nuw i8, ptr %528, i64 9570448 store atomic i64 0, ptr %529 seq_cst, align 8 - %530 = getelementptr inbounds nuw i8, ptr %.sroa.0289.0422, i64 8 + %530 = getelementptr inbounds nuw i8, ptr %.sroa.0289.0418, i64 8 %.not362 = icmp eq ptr %530, %520 - br i1 %.not362, label %._crit_edge426, label %.lr.ph425 + br i1 %.not362, label %._crit_edge422, label %.lr.ph421 -._crit_edge426: ; preds = %.lr.ph425, %515 +._crit_edge422: ; preds = %.lr.ph421, %515 %.2.lcssa = phi double [ %506, %515 ], [ %527, %.lr.ph425 ] %531 = load i64, ptr %136, align 8 %.not.i211 = icmp ne i64 %531, 0 @@ -1979,7 +1979,7 @@ _ZNSt6vectorIN9Stockfish4MoveESaIS1_EEaSERKS3_.exit: ; preds = %456, %_ZSt4copyI %534 = select i1 %.not.i211, i1 true, i1 %533 br i1 %534, label %535, label %679 -535: ; preds = %._crit_edge426 +535: ; preds = %._crit_edge422 %536 = load ptr, ptr %119, align 16 %537 = load atomic i8, ptr %536 seq_cst, align 1 %538 = trunc i8 %537 to i1 @@ -2194,7 +2194,7 @@ _ZNK9Stockfish10ThreadPool14nodes_searchedEv.exit234: ; preds = %.lr.ph.i.i229, store atomic i8 1, ptr %678 seq_cst, align 1 br label %679 -679: ; preds = %653, %652, %676, %673, %539, %535, %._crit_edge426 +679: ; preds = %653, %652, %676, %673, %539, %535, %._crit_edge422 %.1133 = phi double [ %.0132.ph, %535 ], [ %.0132.ph, %539 ], [ %577, %652 ], [ %577, %653 ], [ %577, %676 ], [ %577, %673 ], [ %.0132.ph, %._crit_edge426 ] %680 = zext nneg i32 %.0137.ph to i64 %681 = getelementptr inbounds nuw i32, ptr %142, i64 %680 diff --git a/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll b/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll index 05a80804444..65dd5efd3f7 100644 --- a/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll +++ b/bench/tikv-rs/optimized/07d18yovueuilo4ucwbczrjk9.ll @@ -53,35 +53,35 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTra %6 = icmp eq i64 %5, 0 br i1 %6, label %"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit", label %.lr.ph -7: ; preds = %.lr.ph +6: ; preds = %8 %8 = icmp eq i64 %10, %5 br i1 %8, label %"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit", label %.lr.ph -.lr.ph: ; preds = %1, %7 +8: ; preds = %1, %6 %.sroa.0.0.i.i1 = phi i64 [ %10, %7 ], [ 0, %1 ] %9 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %3, i64 %.sroa.0.0.i.i1 %10 = add nuw i64 %.sroa.0.0.i.i1, 1 invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %9) - to label %7 unwind label %14, !noalias !4 + to label %7 unwind label %13, !noalias !4 -11: ; preds = %.lr.ph3 +11: ; preds = %15 %12 = add i64 %.sroa.0.1.i.i2, 1 - %13 = icmp eq i64 %12, %5 - br i1 %13, label %.body, label %.lr.ph3 + %12 = icmp eq i64 %12, %5 + br i1 %12, label %.body, label %15 -14: ; preds = %.lr.ph - %15 = landingpad { ptr, i32 } +13: ; preds = %8 + %14 = landingpad { ptr, i32 } cleanup %16 = icmp eq i64 %10, %5 br i1 %16, label %.body, label %.lr.ph3 -.lr.ph3: ; preds = %14, %11 +15: ; preds = %14, %11 %.sroa.0.1.i.i2 = phi i64 [ %12, %11 ], [ %10, %14 ] %17 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %3, i64 %.sroa.0.1.i.i2 - invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %17) #6 + invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %16) #6 to label %11 unwind label %18, !noalias !4 -18: ; preds = %.lr.ph3 +18: ; preds = %15 %19 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #7, !noalias !4 @@ -98,9 +98,9 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTra unreachable "_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit": ; preds = %.body - resume { ptr, i32 } %15 + resume { ptr, i32 } %14 -"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit": ; preds = %7, %1 +"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17h82718d181f70e6e6E.exit": ; preds = %6, %1 tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef 8, i64 noundef 48) ret void } @@ -120,35 +120,35 @@ define hidden void @"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_allo %4 = icmp eq i64 %.val1, 0 br i1 %4, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit", label %.lr.ph.i -5: ; preds = %.lr.ph.i +4: ; preds = %6 %6 = icmp eq i64 %8, %.val1 br i1 %6, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit", label %.lr.ph.i -.lr.ph.i: ; preds = %1, %5 +6: ; preds = %1, %4 %.sroa.0.0.i1.i = phi i64 [ %8, %5 ], [ 0, %1 ] %7 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %.val, i64 %.sroa.0.0.i1.i %8 = add nuw i64 %.sroa.0.0.i1.i, 1 invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %7) - to label %5 unwind label %12 + to label %5 unwind label %11 -9: ; preds = %.lr.ph3.i +9: ; preds = %13 %10 = add i64 %.sroa.0.1.i2.i, 1 - %11 = icmp eq i64 %10, %.val1 - br i1 %11, label %.body, label %.lr.ph3.i + %10 = icmp eq i64 %10, %.val1 + br i1 %10, label %.body, label %13 -12: ; preds = %.lr.ph.i - %13 = landingpad { ptr, i32 } +11: ; preds = %6 + %12 = landingpad { ptr, i32 } cleanup %14 = icmp eq i64 %8, %.val1 br i1 %14, label %.body, label %.lr.ph3.i -.lr.ph3.i: ; preds = %12, %9 +13: ; preds = %12, %9 %.sroa.0.1.i2.i = phi i64 [ %10, %9 ], [ %8, %12 ] %15 = getelementptr inbounds nuw { { { { i64, ptr, {} }, {} }, i64 }, { ptr, [1 x i64] }, i64 }, ptr %.val, i64 %.sroa.0.1.i2.i - invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) #6 + invoke void @"_ZN4core3ptr59drop_in_place$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$17ha97129df953dc57eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %14) #6 to label %9 unwind label %16 -16: ; preds = %.lr.ph3.i +16: ; preds = %13 %17 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #7 @@ -158,7 +158,7 @@ define hidden void @"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_allo invoke void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef 8, i64 noundef 48) to label %"_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit" unwind label %18 -"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit": ; preds = %5, %1 +"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbbc0a0e049761306E.exit": ; preds = %4, %1 tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h572c970f650adbb3E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef 8, i64 noundef 48) ret void @@ -169,7 +169,7 @@ define hidden void @"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$tikv_allo unreachable "_ZN4core3ptr89drop_in_place$LT$alloc..raw_vec..RawVec$LT$tikv_alloc..trace..MemoryTraceSnapshot$GT$$GT$17hf5b73234a85c64b7E.exit": ; preds = %.body - resume { ptr, i32 } %13 + resume { ptr, i32 } %12 } ; Function Attrs: nounwind nonlazybind uwtable diff --git a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll index 600f0e71381..f5f22d88934 100644 --- a/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll +++ b/bench/tokenizers-rs/optimized/10h1ju7dwsvagf79.ll @@ -30235,12 +30235,12 @@ define { ptr, ptr } @"_ZN103_$LT$tokenizers..pre_tokenizers..PreTokenizerWrapper %44 = icmp eq i64 %42, 0 br i1 %44, label %"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit", label %.lr.ph -45: ; preds = %.lr.ph +45:; preds = %.lr.ph %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.07, i64 48 %47 = icmp eq ptr %46, %43 br i1 %47, label %"_ZN102_$LT$tokenizers..pre_tokenizers..sequence..Sequence$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h947de2a0f23ac281E.exit", label %.lr.ph -.lr.ph: ; preds = %38, %45 +.lr.ph:; preds = %38, %45 %.sroa.0.07 = phi ptr [ %46, %45 ], [ %40, %38 ] %48 = tail call { ptr, ptr } @"_ZN103_$LT$tokenizers..pre_tokenizers..PreTokenizerWrapper$u20$as$u20$tokenizers..tokenizer..PreTokenizer$GT$12pre_tokenize17h3dc2169f03a01c15E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.07, ptr noalias noundef nonnull align 8 dereferenceable(48) %1) %49 = extractvalue { ptr, ptr } %48, 0 diff --git a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll index 63c14dfc9a0..0717aca86c1 100644 --- a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll +++ b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll @@ -2657,32 +2657,32 @@ define hidden void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$ %15 = icmp eq i16 %12, 0 br i1 %15, label %.loopexit.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" -16: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" - %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.0312.i.i.i, i64 16 +15: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" + %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.0312.i.i.i, i64 15 %18 = add nuw nsw i64 %.sroa.8.011.i.i.i, 1 - %19 = icmp eq ptr %17, %14 - br i1 %19, label %.loopexit.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" + %16 = icmp eq ptr %17, %14 + br i1 %16, label %19, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" default.unreachable.i.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" unreachable -"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i": ; preds = %10, %16 +"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i": ; preds = %10, %15 %.sroa.0.0312.i.i.i = phi ptr [ %17, %16 ], [ %.sroa.0.0.i, %10 ] %.sroa.8.011.i.i.i = phi i64 [ %18, %16 ], [ 0, %10 ] %.val20.i.i.i = load i128, ptr %.sroa.0.0312.i.i.i, align 8, !noalias !708, !noundef !53 %.0.i.i.i.i = tail call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i128(i128 %2, i128 %.val20.i.i.i) switch i8 %.0.i.i.i.i, label %default.unreachable.i.i.i [ - i8 -1, label %.loopexit.i.i + i8 -1, label %19 i8 0, label %26 - i8 1, label %16 + i8 1, label %15 ] -.loopexit.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i", %16, %10 +19: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i", %15, %10 %.sroa.4.0.i.ph.sink.i.ph.i = phi i64 [ 0, %10 ], [ %13, %16 ], [ %.sroa.8.011.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i" ] %.not.i.not.i = icmp eq i64 %.sroa.3.0.i, 0 br i1 %.not.i.not.i, label %28, label %20 -20: ; preds = %.loopexit.i.i +20: ; preds = %19 %21 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 368 %22 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph.i, 12 tail call void @llvm.assume(i1 %22) @@ -2703,7 +2703,7 @@ default.unreachable.i.i.i: ; preds = %"_ZN110_$LT$core..i store ptr null, ptr %0, align 8 br label %29 -28: ; preds = %.loopexit.i.i +28: ; preds = %19 store ptr %1, ptr %0, align 8 %.sroa.410.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i128 %2, ptr %.sroa.410.0..sroa_idx, align 8 @@ -2741,32 +2741,32 @@ define hidden { ptr, ptr } @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V %16 = icmp eq i16 %13, 0 br i1 %16, label %.loopexit.i.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" -17: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" - %18 = getelementptr inbounds nuw i8, ptr %.sroa.0.0312.i.i.i.i, i64 16 +16: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" + %18 = getelementptr inbounds nuw i8, ptr %.sroa.0.0312.i.i.i.i, i64 15 %19 = add nuw nsw i64 %.sroa.8.011.i.i.i.i, 1 - %20 = icmp eq ptr %18, %15 - br i1 %20, label %.loopexit.i.i.i, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" + %17 = icmp eq ptr %18, %15 + br i1 %17, label %20, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" default.unreachable.i.i.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" unreachable -"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i": ; preds = %11, %17 +"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i": ; preds = %11, %16 %.sroa.0.0312.i.i.i.i = phi ptr [ %18, %17 ], [ %.sroa.0.0.i.i, %11 ] - %.sroa.8.011.i.i.i.i = phi i64 [ %19, %17 ], [ 0, %11 ] + %.sroa.8.011.i.i.i.i = phi i64 [ %16, %17 ], [ 0, %11 ] %.val20.i.i.i.i = load i128, ptr %.sroa.0.0312.i.i.i.i, align 8, !noalias !719, !noundef !53 %.0.i.i.i.i.i = tail call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i128(i128 %1, i128 %.val20.i.i.i.i) switch i8 %.0.i.i.i.i.i, label %default.unreachable.i.i.i.i [ - i8 -1, label %.loopexit.i.i.i + i8 -1, label %20 i8 0, label %31 - i8 1, label %17 + i8 1, label %16 ] -.loopexit.i.i.i: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i", %17, %11 +20: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i", %16, %11 %.sroa.4.0.i.ph.sink.i.ph.i.i = phi i64 [ 0, %11 ], [ %.sroa.8.011.i.i.i.i, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3b207d57d43c85e8E.exit.i.i.i.i" ], [ %14, %17 ] %.not.i.not.i.i = icmp eq i64 %.sroa.3.0.i.i, 0 br i1 %.not.i.not.i.i, label %.loopexit, label %21 -21: ; preds = %.loopexit.i.i.i +21: ; preds = %20 %22 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 368 %23 = icmp samesign ult i64 %.sroa.4.0.i.ph.sink.i.ph.i.i, 12 tail call void @llvm.assume(i1 %23) @@ -2775,7 +2775,7 @@ default.unreachable.i.i.i.i: ; preds = %"_ZN110_$LT$core..i %26 = add i64 %.sroa.3.0.i.i, -1 br label %11 -.loopexit: ; preds = %.loopexit.i.i.i, %4 +.loopexit: ; preds = %20, %4 %.sroa.13.0.ph = phi ptr [ null, %4 ], [ %.sroa.0.0.i.i, %.loopexit.i.i.i ] store ptr %0, ptr %5, align 8 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 diff --git a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll index a711dfdb356..8b763cdf8b5 100644 --- a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll +++ b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll @@ -3344,53 +3344,53 @@ define void @_RNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtB5_8IntoIterTNtNtN %9 = icmp eq ptr %.val2, %3 br i1 %9, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit, label %.lr.ph.i -.body: ; preds = %20, %23 +.body:; preds = %20, %23 %10 = getelementptr inbounds nuw i8, ptr %0, i64 16 %11 = load i64, ptr %10, align 8, !noalias !447, !noundef !8 %12 = icmp eq i64 %11, 0 br i1 %12, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit, label %13 -13: ; preds = %.body +13:; preds = %.body %14 = load ptr, ptr %0, align 8, !noalias !447, !nonnull !8, !noundef !8 %15 = mul nuw i64 %11, 48 tail call void @__rust_dealloc(ptr noundef nonnull %14, i64 noundef %15, i64 noundef range(i64 1, -9223372036854775807) 8) #20, !noalias !452 br label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit -16: ; preds = %.lr.ph.i +15: ; preds = %17 %17 = icmp eq i64 %19, %8 br i1 %17, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %1, %16 +17: ; preds = %1, %15 %.sroa.0.07.i = phi i64 [ %19, %16 ], [ 0, %1 ] %18 = getelementptr inbounds { { { { { i64, ptr, {} }, i64 } } }, { { { { i64, ptr, {} }, i64 } } } }, ptr %3, i64 %.sroa.0.07.i %19 = add nuw i64 %.sroa.0.07.i, 1 invoke fastcc void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBH_EECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef align 8 dereferenceable(48) %18) - to label %16 unwind label %23 + to label %16 unwind label %22 -20: ; preds = %.lr.ph10.i +20: ; preds = %24 %21 = add i64 %.sroa.0.18.i, 1 - %22 = icmp eq i64 %21, %8 - br i1 %22, label %.body, label %.lr.ph10.i + %21 = icmp eq i64 %21, %8 + br i1 %21, label %.body, label %24 -23: ; preds = %.lr.ph.i - %24 = landingpad { ptr, i32 } +22: ; preds = %17 + %23 = landingpad { ptr, i32 } cleanup %25 = icmp eq i64 %19, %8 br i1 %25, label %.body, label %.lr.ph10.i -.lr.ph10.i: ; preds = %23, %20 +24: ; preds = %23, %20 %.sroa.0.18.i = phi i64 [ %21, %20 ], [ %19, %23 ] %26 = getelementptr inbounds { { { { { i64, ptr, {} }, i64 } } }, { { { { i64, ptr, {} }, i64 } } } }, ptr %3, i64 %.sroa.0.18.i invoke fastcc void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBH_EECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef align 8 dereferenceable(48) %26) #19 to label %20 unwind label %27 -27: ; preds = %.lr.ph10.i +27: ; preds = %24 %28 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #18 unreachable -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %16, %1 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeSTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringBI_EECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %15, %1 %29 = getelementptr inbounds nuw i8, ptr %0, i64 16 %30 = load i64, ptr %29, align 8, !noalias !457, !noundef !8 %31 = icmp eq i64 %30, 0 @@ -3406,7 +3406,7 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3v ret void _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNvXsd_NtNtCs68wO5nsWeTG_5alloc3vec9into_iterINtBP_8IntoIterppENtNtNtB4_3ops4drop4Drop4drop9DropGuardTNtNtNtCsapf13pIxsjn_3std3ffi6os_str8OsStringB2m_ENtNtBT_5alloc6GlobalEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %13, %.body - resume { ptr, i32 } %24 + resume { ptr, i32 } %23 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll index 364cebb0cfd..8290dd28b36 100644 --- a/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll +++ b/bench/turborepo-rs/optimized/7fw9xnh6zcxu0x094jeq6b04v.ll @@ -724,50 +724,50 @@ define void @_RNvMs_NtCs8mTrBI1stz4_15turborepo_vt1004cellNtB4_4Cell8contents(pt %14 = icmp eq i8 %13, 0 br i1 %14, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %9 +15: ; preds = %9 %15 = zext nneg i8 %13 to i64 - br label %.lr.ph + br label %22 16: ; preds = %2 %17 = load i64, ptr %8, align 8 tail call void @_ZN5alloc7raw_vec12handle_error17had94eb94ada9491aE(i64 noundef %7, i64 %17) #19 unreachable -18: ; preds = %.lr.ph +17: ; preds = %22 %.sroa.0.0.add = add nuw nsw i64 %.sroa.0.0.idx9, 4 %19 = add nsw i64 %.sroa.7.08, -1 - %20 = icmp eq i64 %19, 0 - %21 = icmp eq i64 %.sroa.0.0.add, 24 - %or.cond = select i1 %20, i1 true, i1 %21 - br i1 %or.cond, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread, label %.lr.ph + %18 = icmp eq i64 %19, 0 + %19 = icmp eq i64 %.sroa.0.0.add, 24 + %or.cond = select i1 %18, i1 true, i1 %19 + br i1 %or.cond, label %_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread, label %22 -_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread: ; preds = %18, %9 +_RNvXs2U_NtNtCs1LoaDTb72WA_4core5slice4iterINtB6_4ItercENtNtNtNtBa_4iter6traits8iterator8Iterator4nextCs8mTrBI1stz4_15turborepo_vt100.llvm.6172016698289805888.exit.thread: ; preds = %17, %9 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 -22: ; preds = %.lr.ph - %23 = landingpad { ptr, i32 } +20: ; preds = %22 + %21 = landingpad { ptr, i32 } cleanup invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtCs68wO5nsWeTG_5alloc6string6StringECs8mTrBI1stz4_15turborepo_vt100(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #20 to label %27 unwind label %25 -.lr.ph: ; preds = %.lr.ph.preheader, %18 +22: ; preds = %15, %17 %.sroa.0.0.idx9 = phi i64 [ %.sroa.0.0.add, %18 ], [ 0, %.lr.ph.preheader ] %.sroa.7.08 = phi i64 [ %19, %18 ], [ %15, %.lr.ph.preheader ] %.sroa.0.0.ptr10 = getelementptr inbounds nuw i8, ptr %1, i64 %.sroa.0.0.idx9 %24 = load i32, ptr %.sroa.0.0.ptr10, align 4, !range !37, !noundef !4 invoke void @_ZN5alloc6string6String4push17h2eefef5338b5c74cE.llvm.6172016698289805888(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %24) - to label %18 unwind label %22 + to label %18 unwind label %20 -25: ; preds = %22 +25: ; preds = %20 %26 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #21 unreachable -27: ; preds = %22 - resume { ptr, i32 } %23 +27: ; preds = %20 + resume { ptr, i32 } %21 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable diff --git a/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll b/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll index 54bdc117ab8..a746608a692 100644 --- a/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll +++ b/bench/typst-rs/optimized/1ojadsqfk0rsifsx.ll @@ -2248,20 +2248,20 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17hf95cca0234f68c8fE.exit: ; preds %.val = load ptr, ptr %12, align 8, !nonnull !37, !noundef !37 %.val28 = load i64, ptr %13, align 8, !noundef !37 %.idx39 = mul nsw i64 %.val28, 96 - %32 = getelementptr inbounds i8, ptr %.val, i64 %.idx39 + %33 = getelementptr inbounds i8, ptr %.val, i64 %.idx39 %33 = icmp eq i64 %.val28, 0 - br i1 %33, label %._crit_edge, label %.lr.ph + br i1 %33, label %37, label %.lr.ph .lr.ph: ; preds = %30 %34 = getelementptr inbounds nuw i8, ptr %6, i64 48 %35 = getelementptr inbounds nuw i8, ptr %6, i64 56 br label %38 -36: ; preds = %52 +35: ; preds = %52 %37 = icmp eq ptr %39, %32 - br i1 %37, label %._crit_edge, label %38 + br i1 %37, label %37, label %38 -._crit_edge: ; preds = %36, %30 +37: ; preds = %35, %30 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(616) %4, ptr noundef nonnull align 8 dereferenceable(616) %9, i64 616, i1 false) call fastcc void @_ZN9typst_svg11SVGRenderer8finalize17hef11d202670dcc6bE(ptr noalias noundef align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef align 8 captures(none) dereferenceable(616) %4) @@ -2270,7 +2270,7 @@ _ZN4core4iter6traits8iterator8Iterator6reduce17hf95cca0234f68c8fE.exit: ; preds call void @llvm.lifetime.end.p0(ptr nonnull %9) ret void -38: ; preds = %.lr.ph, %36 +38: ; preds = %.lr.ph, %35 %.sroa.0.038 = phi ptr [ %.val, %.lr.ph ], [ %39, %36 ] %39 = getelementptr inbounds nuw i8, ptr %.sroa.0.038, i64 96 %40 = load double, ptr %8, align 8, !noundef !37 diff --git a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll index b8c2fda8056..be406bcd95b 100644 --- a/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll +++ b/bench/typst-rs/optimized/2hy987uth4sp8yoc.ll @@ -15976,7 +15976,7 @@ define hidden void @_ZN12typst_syntax6parser6Parser11trim_errors17h9325fdc1dcc1b switch i8 %trunc.i.i, label %default.unreachable [ i8 0, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i i8 1, label %21 - i8 2, label %.lr.ph + i8 2, label %._crit_edge ] default.unreachable: ; preds = %16, %42 @@ -16003,19 +16003,19 @@ _ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i: ; preds _ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit: ; preds = %1, %7 %.not26 = icmp eq i64 %4, 0 - br i1 %.not26, label %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge, label %.lr.ph + br i1 %.not26, label %26, label %.lr.ph -_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge: ; preds = %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit +26: ; preds = %_ZN12typst_syntax4kind10SyntaxKind9is_trivia17h600c2baf858395b5E.exit.i, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 88 %.pre = load ptr, ptr %.phi.trans.insert, align 8, !alias.scope !3745, !noalias !3748 - br label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge + br label %split -.lr.ph: ; preds = %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %16, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit +._crit_edge: ; preds = %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i, %16, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit %.0.i40 = phi i64 [ %4, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit ], [ %.1.i, %16 ], [ %.1.i, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit.i ] %25 = getelementptr inbounds nuw i8, ptr %0, i64 88 br label %27 -26: ; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit +27: ; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit %.not = icmp eq i64 %28, 0 br i1 %.not, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge, label %27 @@ -16025,15 +16025,15 @@ _ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941 %29 = icmp ult i64 %28, %4 br i1 %29, label %42, label %55, !prof !1710 -_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge: ; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit, %26, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge - %.0.i39 = phi i64 [ 0, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %.0.i40, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ], [ %.0.i40, %26 ], [ %.0.i40, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ] +_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge:; preds = %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit, %26, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit, %26 + %30 = phi i64 [ 0, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %.0.i40, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ], [ %.0.i40, %26 ], [ %.0.i40, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ] %30 = phi ptr [ %.pre, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %43, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ], [ %43, %26 ], [ %43, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ] %.0.lcssa = phi i64 [ 0, %_ZN12typst_syntax6parser6Parser13before_trivia17hc426f4850ceea975E.llvm.17794941744620341598.exit._ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge_crit_edge ], [ %.027, %_ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit ], [ 0, %26 ], [ %.027, %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit ] call void @llvm.lifetime.start.p0(ptr nonnull %2) %31 = getelementptr inbounds nuw i8, ptr %0, i64 80 tail call void @llvm.experimental.noalias.scope.decl(metadata !3748) tail call void @llvm.experimental.noalias.scope.decl(metadata !3745) - %32 = tail call { i64, i64 } @_ZN4core5slice5index5range17hcd550d7dfb1dd288E(i64 noundef %.0.lcssa, i64 noundef %.0.i39, i64 noundef %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.5ab2de7f43314cdaa70b1332ba871678.29.llvm.13506474886552808233), !noalias !3750 + %32 = tail call { i64, i64 } @_ZN4core5slice5index5range17hcd550d7dfb1dd288E(i64 noundef %.0.lcssa, i64 noundef %30, i64 noundef %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.5ab2de7f43314cdaa70b1332ba871678.29.llvm.13506474886552808233), !noalias !3750 %33 = extractvalue { i64, i64 } %32, 0 %34 = extractvalue { i64, i64 } %32, 1 store i64 %33, ptr %3, align 8, !alias.scope !3745, !noalias !3748 @@ -16081,7 +16081,7 @@ _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge: ; p _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit: ; preds = %42, %47 %.0.i16 = phi i8 [ %50, %47 ], [ %46, %42 ] %54 = icmp eq i8 %.0.i16, -128 - br i1 %54, label %56, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge + br i1 %54, label %56, label %split 55: ; preds = %27 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %28, i64 noundef %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.cbbb257abe6dee889b44eb762842009f.160) #23 @@ -16107,7 +16107,7 @@ _ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit: ; preds = %42, _ZN12typst_syntax4node10SyntaxNode8is_empty17h2c4fc259a00ac0c0E.exit: ; preds = %58, %61, %.thread %.0.i.i18 = phi i64 [ %60, %58 ], [ %64, %61 ], [ %53, %.thread ] %65 = icmp eq i64 %.0.i.i18, 0 - br i1 %65, label %26, label %_ZN12typst_syntax4node10SyntaxNode4kind17h402b8a7b2cea31b3E.exit._crit_edge + br i1 %65, label %26, label %split } ; Function Attrs: nonlazybind uwtable diff --git a/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll b/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll index 1be4befe68a..c739c7040a7 100644 --- a/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll +++ b/bench/uv-rs/optimized/1v5vjcevp56t5ndlvgh9f608z.ll @@ -555,13 +555,13 @@ define hidden noundef align 2 dereferenceable_or_null(98) ptr @_ZN12clap_builder %9 = icmp eq i64 %7, 0 br i1 %9, label %"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread", label %.lr.ph.i -10: ; preds = %.lr.ph.i +10:; preds = %.lr.ph.i %11 = getelementptr inbounds nuw i8, ptr %.sroa.0.0613.i, i64 16 %12 = add nuw nsw i64 %.sroa.8.012.i, 1 %13 = icmp eq ptr %11, %8 br i1 %13, label %"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h504d0dbc23efe221E.exit.thread", label %.lr.ph.i -.lr.ph.i: ; preds = %1, %10 +.lr.ph.i:; preds = %1, %10 %.sroa.0.0613.i = phi ptr [ %11, %10 ], [ %5, %1 ] %.sroa.8.012.i = phi i64 [ %12, %10 ], [ 0, %1 ] %14 = call noundef zeroext i1 @"_ZN82_$LT$clap_builder..util..any_value..AnyValueId$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd07ecf55208d1f1dE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.0613.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2), !noalias !37 diff --git a/bench/verilator/optimized/V3Number.ll b/bench/verilator/optimized/V3Number.ll index aef0b8c6cf9..205e58b9038 100644 --- a/bench/verilator/optimized/V3Number.ll +++ b/bench/verilator/optimized/V3Number.ll @@ -12277,7 +12277,7 @@ define dso_local noundef zeroext i1 @_ZNK8V3Number6isAllXEv(ptr noundef nonnull %8 = icmp slt i32 %7, 1 br i1 %8, label %.critedge, label %.lr.ph -.lr.ph: ; preds = %5 +.lr.ph:; preds = %5 %9 = add i8 %3, -1 %spec.select.i.i = icmp ult i8 %9, 2 %10 = icmp samesign ult i32 %7, 129 @@ -12285,7 +12285,7 @@ define dso_local noundef zeroext i1 @_ZNK8V3Number6isAllXEv(ptr noundef nonnull %spec.select.i = select i1 %10, ptr %0, ptr %11 br i1 %spec.select.i.i, label %_ZNK12V3NumberData3numEv.exit.preheader, label %22, !prof !41 -_ZNK12V3NumberData3numEv.exit.preheader: ; preds = %.lr.ph +_ZNK12V3NumberData3numEv.exit.preheader:; preds = %.lr.ph %12 = and i32 %7, 31 %.not.i = icmp eq i32 %12, 0 %notmask.i = shl nsw i32 -1, %12 @@ -12296,11 +12296,11 @@ _ZNK12V3NumberData3numEv.exit.preheader: ; preds = %.lr.ph %17 = zext nneg i32 %16 to i64 br label %_ZNK12V3NumberData3numEv.exit -18: ; preds = %_ZNK12V3NumberData3numEv.exit +18:; preds = %_ZNK12V3NumberData3numEv.exit %19 = icmp samesign ult i64 %indvars.iv, 2 br i1 %19, label %.critedge, label %_ZNK12V3NumberData3numEv.exit, !llvm.loop !245 -_ZNK12V3NumberData3numEv.exit: ; preds = %_ZNK12V3NumberData3numEv.exit.preheader, %18 +_ZNK12V3NumberData3numEv.exit:; preds = %_ZNK12V3NumberData3numEv.exit.preheader, %18 %indvars.iv = phi i64 [ %17, %_ZNK12V3NumberData3numEv.exit.preheader ], [ %indvars.iv.next, %18 ] %.0814 = phi i32 [ %14, %_ZNK12V3NumberData3numEv.exit.preheader ], [ -1, %18 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 @@ -12310,7 +12310,7 @@ _ZNK12V3NumberData3numEv.exit: ; preds = %_ZNK12V3NumberData3 %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !62 %21 = and i32 %.sroa.4.0.copyload, %.sroa.0.0.copyload %.not = icmp eq i32 %21, %.0814 - br i1 %.not, label %18, label %_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge, !llvm.loop !245 + br i1 %.not, label %18, label %.critedge, !llvm.loop !245 22: ; preds = %.lr.ph %23 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKci(i8 4, ptr noundef nonnull @.str.95, i32 noundef 198) @@ -12320,7 +12320,7 @@ _ZNK12V3NumberData3numEv.exit: ; preds = %_ZNK12V3NumberData3 tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %26) #35 unreachable -_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge: ; preds = %_ZNK12V3NumberData3numEv.exit +.critedge: ; preds = %_ZNK12V3NumberData3numEv.exit br label %.critedge, !llvm.loop !245 .critedge: ; preds = %18, %5, %_ZNK12V3NumberData3numEv.exit..critedge.loopexit_crit_edge, %1 diff --git a/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll b/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll index f6d720382e1..3e9fde0333d 100644 --- a/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll +++ b/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll @@ -1881,41 +1881,41 @@ define internal void @"_ZN4core3ptr85drop_in_place$LT$alloc..boxed..Box$LT$$u5b$ %5 = icmp eq i64 %4, 0 br i1 %5, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4", label %.lr.ph.i -6: ; preds = %.lr.ph.i +5: ; preds = %7 %7 = icmp eq i64 %9, %4 - br i1 %7, label %"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit", label %.lr.ph.i + br i1 %7, label %.body, label %7 -.lr.ph.i: ; preds = %1, %6 +7: ; preds = %1, %5 %.sroa.0.07.i = phi i64 [ %9, %6 ], [ 0, %1 ] %8 = getelementptr inbounds nuw { i64, [10 x i64] }, ptr %2, i64 %.sroa.0.07.i %9 = add nuw i64 %.sroa.0.07.i, 1 invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$wast..core..expr..Instruction$GT$17h1922c3517e072e36E"(ptr noalias noundef align 8 dereferenceable(88) %8) - to label %6 unwind label %13 + to label %6 unwind label %12 -10: ; preds = %.lr.ph10.i +10: ; preds = %14 %11 = add i64 %.sroa.0.18.i, 1 - %12 = icmp eq i64 %11, %4 - br i1 %12, label %.loopexit, label %.lr.ph10.i + %11 = icmp eq i64 %11, %4 + br i1 %11, label %.loopexit, label %14 -13: ; preds = %.lr.ph.i - %14 = landingpad { ptr, i32 } +12: ; preds = %7 + %13 = landingpad { ptr, i32 } cleanup %15 = icmp eq i64 %9, %4 br i1 %15, label %.loopexit, label %.lr.ph10.i -.lr.ph10.i: ; preds = %13, %10 +14: ; preds = %13, %10 %.sroa.0.18.i = phi i64 [ %11, %10 ], [ %9, %13 ] %16 = getelementptr inbounds nuw { i64, [10 x i64] }, ptr %2, i64 %.sroa.0.18.i - invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$wast..core..expr..Instruction$GT$17h1922c3517e072e36E"(ptr noalias noundef align 8 dereferenceable(88) %16) #10 + invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$wast..core..expr..Instruction$GT$17h1922c3517e072e36E"(ptr noalias noundef align 8 dereferenceable(88) %15) #10 to label %10 unwind label %17 -17: ; preds = %.lr.ph10.i +17: ; preds = %14 %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #11 unreachable -"_ZN4core3ptr60drop_in_place$LT$$u5b$wast..core..expr..Instruction$u5d$$GT$17h7ed812e5665874ceE.exit": ; preds = %6 +.body: ; preds = %6 %19 = mul nuw nsw i64 %4, 88 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef range(i64 1, -9223372036854775808) %19, i64 noundef 8) #9 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h916b0a2b8369331fE.exit4" diff --git a/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll b/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll index ecce7550c56..713cb72cb9f 100644 --- a/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll +++ b/bench/wasmi-rs/optimized/5o0hleoi639h6rlkufrksw131.ll @@ -230,21 +230,21 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator5eq_by17 %6 = icmp eq ptr %0, %1 br i1 %6, label %.loopexit.i, label %.lr.ph.i.i.i.i -.lr.ph.i.i.i.i: ; preds = %4 +.lr.ph.i.i.i.i:; preds = %4 %7 = icmp ne ptr %3, null tail call void @llvm.assume(i1 %7) br label %10 -"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i": ; preds = %14 +"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i":; preds = %14 %8 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.i, i64 24 %9 = icmp eq ptr %12, %1 br i1 %9, label %.loopexit.i, label %10 -10: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", %.lr.ph.i.i.i.i +10:; preds = %8, %.lr.ph.i.i.i.i %.sroa.06.0.i = phi ptr [ %2, %.lr.ph.i.i.i.i ], [ %8, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" ] %11 = phi ptr [ %0, %.lr.ph.i.i.i.i ], [ %12, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" ] %12 = getelementptr inbounds nuw i8, ptr %11, i64 1 - %13 = icmp eq ptr %.sroa.06.0.i, %3 + %.not.i.i.i.i.i.i.i = icmp eq ptr %.sroa.06.0.i, %3 br i1 %13, label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit, label %14 14: ; preds = %10 @@ -253,20 +253,20 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator5eq_by17 %.not.i.i.i.i.i.i.i = icmp eq i8 %.val8.i.i.i.i, %15 br i1 %.not.i.i.i.i.i.i.i, label %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit -.loopexit.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", %4 +_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i: ; preds = %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i", %4 %.sroa.06.1.ph.i = phi ptr [ %2, %4 ], [ %8, %"_ZN4core4iter8adapters6copied13copy_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h76e21895ae3b2a48E.exit.i.i.i.i" ] %16 = icmp ne ptr %3, null tail call void @llvm.assume(i1 %16) %17 = icmp eq ptr %.sroa.06.1.ph.i, %3 br i1 %17, label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i": ; preds = %.loopexit.i - %18 = tail call noundef range(i8 0, 7) i8 @"_ZN71_$LT$wasmi..value..Val$u20$as$u20$wasmi..func..ty..DynamicallyTyped$GT$2ty17h41fa0523649a52cbE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.06.1.ph.i), !noalias !45 +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i": ; preds = %_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i + %16 = tail call noundef range(i8 0, 7) i8 @"_ZN71_$LT$wasmi..value..Val$u20$as$u20$wasmi..func..ty..DynamicallyTyped$GT$2ty17h41fa0523649a52cbE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.06.1.ph.i), !noalias !45 br label %_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit -_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit: ; preds = %10, %14, %.loopexit.i, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" - %19 = phi i1 [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" ], [ true, %.loopexit.i ], [ false, %14 ], [ false, %10 ] - ret i1 %19 +_ZN4core4iter6traits8iterator12iter_compare17h73d26c46702cb7bbE.exit: ; preds = %10, %14, %_ZN4core4iter6traits8iterator8Iterator12try_for_each17hb65e72d48d4af297E.exit.i, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" + %17 = phi i1 [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6c49aa998df10ceE.exit.i" ], [ true, %.loopexit.i ], [ false, %14 ], [ false, %10 ] + ret i1 %17 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll b/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll index 37ac409ccee..aecb76dd070 100644 --- a/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll +++ b/bench/wasmtime-rs/optimized/1r2x5absurxbrq18.ll @@ -18438,18 +18438,18 @@ define hidden void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAd %8 = icmp eq i32 %5, 0 br i1 %8, label %._crit_edge, label %.lr.ph8 -.lr.ph8: ; preds = %.lr.ph.preheader, %.lr.ph +8: ; preds = %.lr.ph.preheader, %.lr.ph %.057 = phi i32 [ %9, %.lr.ph ], [ %5, %.lr.ph.preheader ] %9 = add i32 %.057, -1 %10 = tail call noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h21f601848d5677f6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6, i32 noundef 1, i32 noundef %9) br i1 %10, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.lr.ph8 +.lr.ph: ; preds = %8 tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %9) %11 = icmp eq i32 %9, 0 - br i1 %11, label %._crit_edge, label %.lr.ph8 + br i1 %11, label %._crit_edge, label %8 -._crit_edge: ; preds = %.lr.ph8, %.lr.ph, %.lr.ph.preheader, %3 +._crit_edge: ; preds = %8, %.lr.ph, %.lr.ph.preheader, %3 ret void } @@ -18466,18 +18466,18 @@ define hidden void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAd %8 = icmp eq i32 %5, 0 br i1 %8, label %._crit_edge, label %.lr.ph8 -.lr.ph8: ; preds = %.lr.ph.preheader, %.lr.ph +8: ; preds = %.lr.ph.preheader, %.lr.ph %.057 = phi i32 [ %9, %.lr.ph ], [ %5, %.lr.ph.preheader ] %9 = add i32 %.057, -1 %10 = tail call noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h21f601848d5677f6E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %6, i32 noundef 1, i32 noundef %9) br i1 %10, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.lr.ph8 +.lr.ph: ; preds = %8 tail call void @_ZN16wasmtime_environ9component9translate5adapt23PartitionAdapterModules8instance17h10c84ff7c2cb4e5cE(ptr noalias noundef nonnull align 8 dereferenceable(96) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(640) %1, i32 noundef %9) %11 = icmp eq i32 %9, 0 - br i1 %11, label %._crit_edge, label %.lr.ph8 + br i1 %11, label %._crit_edge, label %8 -._crit_edge: ; preds = %.lr.ph8, %.lr.ph, %.lr.ph.preheader, %3 +._crit_edge: ; preds = %8, %.lr.ph, %.lr.ph.preheader, %3 ret void } diff --git a/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll b/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll index b8ebffc3843..67f9d6a8c79 100644 --- a/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll +++ b/bench/wasmtime-rs/optimized/2lz954crgst412nx.ll @@ -6127,8 +6127,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %25 invoke fastcc void @"_ZN16wasmtime_runtime8instance9allocator7pooling24PoolingInstanceAllocator27validate_core_instance_size28_$u7b$$u7b$closure$u7d$$u7d$17h5760d9aba60b8834E"(ptr noalias noundef align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 1 @anon.48a310daf047e914c00cc15599afb284.131, i64 noundef 25, i64 noundef 160) to label %42 unwind label %40, !noalias !817 -39: ; preds = %48, %40 - %.pn.i = phi { ptr, i32 } [ %41, %40 ], [ %49, %48 ] +39: ; preds = %49, %40 + %.pn.i = phi { ptr, i32 } [ %41, %40 ], [ %50, %48 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h2295fe8ca205893fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) #32 to label %75 unwind label %73 @@ -6158,8 +6158,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %25 %.not.not.i.i = icmp eq i64 %45, %51 br i1 %.not.not.i.i, label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i", label %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i" -48: ; preds = %55 - %49 = landingpad { ptr, i32 } +49: ; preds = %55 + %50 = landingpad { ptr, i32 } cleanup br label %39 @@ -6181,7 +6181,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit.i: ; preds = %25 %.sroa.6.0.copyload.i = load i64, ptr %.sroa.6.0..sroa_idx.i, align 8, !alias.scope !841, !noalias !817 %56 = zext i32 %.sroa.72.0.copyload.i to i64 invoke fastcc void @"_ZN16wasmtime_runtime8instance9allocator7pooling24PoolingInstanceAllocator27validate_core_instance_size28_$u7b$$u7b$closure$u7d$$u7d$17h5760d9aba60b8834E"(ptr noalias noundef align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 1 %.sroa.01.0.copyload.i, i64 noundef %.sroa.6.0.copyload.i, i64 noundef %56) - to label %47 unwind label %48 + to label %47 unwind label %49 "_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.thread.i": ; preds = %"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93ea38ef5ad8421eE.exit.i", %47, %43 call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !817 diff --git a/bench/wireshark/optimized/proto.ll b/bench/wireshark/optimized/proto.ll index 02b593d4f5a..cac4f1f446e 100644 --- a/bench/wireshark/optimized/proto.ll +++ b/bench/wireshark/optimized/proto.ll @@ -24695,7 +24695,7 @@ define ptr @proto_item_get_parent_nth(ptr noundef readonly captures(address_is_n %.not911 = icmp eq i32 %1, 0 br i1 %.not911, label %.loopexit, label %.lr.ph -3: ; preds = %.lr.ph +3: ; preds = %.lr.ph %4 = add i32 %.013, -1 %.not9 = icmp eq i32 %4, 0 br i1 %.not9, label %.loopexit, label %.lr.ph, !llvm.loop !40 @@ -24706,9 +24706,9 @@ define ptr @proto_item_get_parent_nth(ptr noundef readonly captures(address_is_n %5 = getelementptr inbounds nuw i8, ptr %.0512, i64 24 %6 = load ptr, ptr %5, align 8 %.not10 = icmp eq ptr %6, null - br i1 %.not10, label %..loopexit_crit_edge, label %3, !llvm.loop !40 + br i1 %.not10, label %.loopexit, label %3, !llvm.loop !40 -..loopexit_crit_edge: ; preds = %.lr.ph +.loopexit: ; preds = %.lr.ph br label %.loopexit, !llvm.loop !40 .loopexit: ; preds = %3, %.preheader, %..loopexit_crit_edge, %2 diff --git a/bench/wireshark/optimized/ws_mempbrk.ll b/bench/wireshark/optimized/ws_mempbrk.ll index 05171cda2f1..32a62c80cbe 100644 --- a/bench/wireshark/optimized/ws_mempbrk.ll +++ b/bench/wireshark/optimized/ws_mempbrk.ll @@ -118,11 +118,11 @@ define noundef ptr @ws_memrpbrk_exec(ptr noundef readonly captures(address, ret: %6 = icmp ugt ptr %5, %0 br i1 %6, label %.lr.ph, label %.loopexit -7: ; preds = %.lr.ph +6: ; preds = %8 %8 = icmp ugt ptr %9, %0 br i1 %8, label %.lr.ph, label %.loopexit, !llvm.loop !11 -.lr.ph: ; preds = %4, %7 +8: ; preds = %4, %6 %.014 = phi ptr [ %9, %7 ], [ %5, %4 ] %9 = getelementptr i8, ptr %.014, i64 -1 %10 = load i8, ptr %9, align 1 @@ -130,9 +130,9 @@ define noundef ptr @ws_memrpbrk_exec(ptr noundef readonly captures(address, ret: %12 = getelementptr i8, ptr %2, i64 %11 %13 = load i8, ptr %12, align 1 %.not = icmp eq i8 %13, 0 - br i1 %.not, label %7, label %14, !llvm.loop !11 + br i1 %.not, label %6, label %14, !llvm.loop !11 -14: ; preds = %.lr.ph +14: ; preds = %8 %.not12 = icmp eq ptr %3, null br i1 %.not12, label %.loopexit, label %15 @@ -140,7 +140,7 @@ define noundef ptr @ws_memrpbrk_exec(ptr noundef readonly captures(address, ret: store i8 %10, ptr %3, align 1 br label %.loopexit -.loopexit: ; preds = %7, %4, %14, %15 +.loopexit: ; preds = %6, %4, %14, %15 %.010 = phi ptr [ %9, %15 ], [ %9, %14 ], [ null, %4 ], [ null, %7 ] ret ptr %.010 } diff --git a/bench/xgboost/optimized/coll.ll b/bench/xgboost/optimized/coll.ll index 86c711dda5b..3eed680cfdd 100644 --- a/bench/xgboost/optimized/coll.ll +++ b/bench/xgboost/optimized/coll.ll @@ -18456,15 +18456,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNSt ; Function Attrs: mustprogress uwtable define linkonce_odr { ptr, i64 } @_ZSt11partial_sumIN7xgboost6common6detail12SpanIteratorINS1_4SpanIKlLm18446744073709551615EEELb1EEENS3_INS4_IlLm18446744073709551615EEELb0EEEET0_T_SB_SA_(ptr %0, i64 %1, ptr %2, i64 %3, ptr %4, i64 %5) local_unnamed_addr #3 comdat { - %.fr50 = freeze ptr %2 - %.fr49 = freeze ptr %0 - %7 = icmp eq ptr %.fr49, %.fr50 + %.fr48 = freeze ptr %2 + %.fr47 = freeze ptr %0 + %7 = icmp eq ptr %.fr47, %.fr48 %8 = icmp eq i64 %1, %3 %9 = select i1 %7, i1 %8, i1 false br i1 %9, label %52, label %10 10: ; preds = %6 - %11 = load i64, ptr %.fr49, align 8, !tbaa !552 + %11 = load i64, ptr %.fr47, align 8, !tbaa !552 %12 = icmp ult i64 %1, %11 br i1 %12, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit, label %13, !prof !441 @@ -18473,7 +18473,7 @@ define linkonce_odr { ptr, i64 } @_ZSt11partial_sumIN7xgboost6common6detail12Spa unreachable _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit: ; preds = %10 - %14 = getelementptr inbounds nuw i8, ptr %.fr49, i64 8 + %14 = getelementptr inbounds nuw i8, ptr %.fr47, i64 8 %15 = load ptr, ptr %14, align 8, !tbaa !554 %16 = load i64, ptr %4, align 8, !tbaa !465 %17 = icmp ult i64 %5, %16 @@ -18490,7 +18490,7 @@ _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0 %22 = load ptr, ptr %21, align 8, !tbaa !467 %23 = getelementptr inbounds nuw i64, ptr %22, i64 %5 store i64 %20, ptr %23, align 8, !tbaa !18 - %24 = load i64, ptr %.fr49, align 8, !tbaa !552 + %24 = load i64, ptr %.fr47, align 8, !tbaa !552 %.not.i39 = icmp eq i64 %1, %24 br i1 %.not.i39, label %._crit_edge, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph, !prof !555 @@ -18522,7 +18522,7 @@ _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0E _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit.us %34 = getelementptr inbounds nuw i64, ptr %22, i64 %32 store i64 %30, ptr %34, align 8, !tbaa !18 - %35 = load i64, ptr %.fr49, align 8, !tbaa !552 + %35 = load i64, ptr %.fr47, align 8, !tbaa !552 %.not.i.us = icmp eq i64 %26, %35 br i1 %.not.i.us, label %._crit_edge, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us, !prof !556, !llvm.loop !557 @@ -18540,7 +18540,7 @@ _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1 %.not52 = icmp eq i64 %37, %3 br i1 %.not52, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge, label %.lr.ph, !llvm.loop !557 -.lr.ph: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit +38: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit %38 = phi i64 [ %37, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %36, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] %.sroa.6.04048 = phi i64 [ %45, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %5, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] %.04247 = phi i64 [ %43, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ], [ %20, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ] @@ -18548,16 +18548,16 @@ _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1 %40 = icmp ult i64 %38, %39 br i1 %40, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16, label %.split.us, !prof !441 -.split.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us, %.lr.ph +.split.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.us, %38 tail call void @_ZSt9terminatev() #31 unreachable -_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16: ; preds = %.lr.ph - %41 = getelementptr inbounds nuw i64, ptr %15, i64 %38 - %42 = load i64, ptr %41, align 8, !tbaa !18 - %43 = add nsw i64 %42, %.04247 - %44 = load i64, ptr %4, align 8, !tbaa !465 - %.not.i17 = icmp eq i64 %.sroa.6.04048, %44 +_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16: ; preds = %38 + %40 = getelementptr inbounds nuw i64, ptr %15, i64 %38 + %41 = load i64, ptr %40, align 8, !tbaa !18 + %42 = add nsw i64 %41, %.04247 + %43 = load i64, ptr %4, align 8, !tbaa !465 + %.not.i17 = icmp eq i64 %.sroa.6.04048, %43 br i1 %.not.i17, label %.split44.us, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit, !prof !451 .split44.us: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16.us, %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16 @@ -18565,32 +18565,32 @@ _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb unreachable _ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit: ; preds = %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEdeEv.exit16 - %45 = add nuw i64 %.sroa.6.04048, 1 - %46 = icmp ult i64 %45, %44 - br i1 %46, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18, label %.split46.us, !prof !441 + %44 = add nuw i64 %.sroa.6.04048, 1 + %45 = icmp ult i64 %44, %43 + br i1 %45, label %_ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18, label %.split46.us, !prof !441 .split46.us: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit.us, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit tail call void @_ZSt9terminatev() #31 unreachable _ZNK7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEdeEv.exit18: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit - %47 = getelementptr inbounds nuw i64, ptr %22, i64 %45 - store i64 %43, ptr %47, align 8, !tbaa !18 - %48 = load i64, ptr %.fr49, align 8, !tbaa !552 - %.not.i = icmp eq i64 %38, %48 + %46 = getelementptr inbounds nuw i64, ptr %22, i64 %44 + store i64 %42, ptr %46, align 8, !tbaa !18 + %47 = load i64, ptr %.fr47, align 8, !tbaa !552 + %.not.i = icmp eq i64 %38, %47 br i1 %.not.i, label %._crit_edge, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit, !prof !556, !llvm.loop !557 -_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split +48: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split %.sroa.6.0.lcssa35 = phi i64 [ %5, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit.lr.ph.split ], [ %45, %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit ] %49 = load i64, ptr %4, align 8, !tbaa !465 %.not.i19 = icmp eq i64 %.sroa.6.0.lcssa35, %49 br i1 %.not.i19, label %50, label %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20, !prof !451 -50: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge +50: ; preds = %48 tail call void @_ZSt9terminatev() #31 unreachable -_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20: ; preds = %_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIKlLm18446744073709551615EEELb1EEppEv.exit._crit_edge +_ZN7xgboost6common6detail12SpanIteratorINS0_4SpanIlLm18446744073709551615EEELb0EEppEv.exit20: ; preds = %48 %51 = add nuw i64 %.sroa.6.0.lcssa35, 1 br label %52 diff --git a/bench/yosys/optimized/json11.ll b/bench/yosys/optimized/json11.ll index 89e280cdd4a..c635f6f18ec 100644 --- a/bench/yosys/optimized/json11.ll +++ b/bench/yosys/optimized/json11.ll @@ -3616,15 +3616,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %_ZN 83: ; preds = %.lr.ph.i %storemerge.i = add nuw i64 %storemerge71.i, 1 store i64 %storemerge.i, ptr %11, align 8, !tbaa !95 - %exitcond.not.i = icmp eq i64 %storemerge.i, %40 - br i1 %exitcond.not.i, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, label %.lr.ph.i, !llvm.loop !138 + %82 = icmp eq i64 %storemerge.i, %40 + br i1 %82, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, label %83, !llvm.loop !138 -.lr.ph.i: ; preds = %.preheader.i, %83 +83: ; preds = %.preheader.i, %83 %storemerge71.i = phi i64 [ %storemerge.i, %83 ], [ %storemerge70.i, %.preheader.i ] %84 = getelementptr inbounds nuw i8, ptr %33, i64 %storemerge71.i %85 = load i8, ptr %84, align 1, !tbaa !18 %.not.i = icmp eq i8 %85, 10 - br i1 %.not.i, label %..critedge.loopexit_crit_edge.i, label %83, !llvm.loop !138 + br i1 %.not.i, label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, label %83, !llvm.loop !138 86: ; preds = %79 %87 = add i64 %34, 2 @@ -4006,7 +4006,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i: ; preds = %_ call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit -..critedge.loopexit_crit_edge.i: ; preds = %.lr.ph.i +_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit: ; preds = %83 br label %_ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit, !llvm.loop !138 _ZN6json1112_GLOBAL__N_110JsonParser15consume_commentEv.exit: ; preds = %83, %31, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %.preheader.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit44.i, %173, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit61.i, %..critedge.loopexit_crit_edge.i diff --git a/bench/zfp/optimized/decode4d.ll b/bench/zfp/optimized/decode4d.ll index 338341b19b4..9c6660a4ef9 100644 --- a/bench/zfp/optimized/decode4d.ll +++ b/bench/zfp/optimized/decode4d.ll @@ -945,12 +945,12 @@ define internal fastcc i32 @decode_ints_uint64(ptr noalias noundef captures(none %10 = icmp samesign ult i32 %8, 64 br i1 %10, label %.lr.ph, label %decode_many_ints_uint64.exit -.lr.ph126.i: ; preds = %stream_read_bit.exit58._crit_edge.i +.lr.ph126.i:; preds = %stream_read_bit.exit58._crit_edge.i %indvars.iv.next144.i = add nsw i64 %indvars.iv.next144.i66, -1 %11 = icmp ugt i64 %indvars.iv.next144.i66, %9 br i1 %11, label %.lr.ph, label %decode_many_ints_uint64.exit -.lr.ph: ; preds = %.lr.ph126.preheader.i, %.lr.ph126.i +.lr.ph: ; preds = %.lr.ph126.preheader.i, %.lr.ph126.i %indvars.iv.next144.i66 = phi i64 [ %indvars.iv.next144.i, %.lr.ph126.i ], [ 63, %.lr.ph126.preheader.i ] %.sroa.10.0120.i65 = phi i64 [ %.sroa.10.3.i, %.lr.ph126.i ], [ %.sroa.10.0.copyload.i, %.lr.ph126.preheader.i ] %.sroa.16.0121.i64 = phi ptr [ %.sroa.16.3.i, %.lr.ph126.i ], [ %.sroa.16.0.copyload.i, %.lr.ph126.preheader.i ] diff --git a/bench/zstd/optimized/cover.ll b/bench/zstd/optimized/cover.ll index 9f972ad6354..c8927ab8174 100644 --- a/bench/zstd/optimized/cover.ll +++ b/bench/zstd/optimized/cover.ll @@ -580,11 +580,11 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %102 = tail call i64 @fwrite(ptr nonnull @.str.21, i64 35, i64 1, ptr %101) #22 %103 = load ptr, ptr @stderr, align 8, !tbaa !9 %104 = tail call i32 @fflush(ptr noundef %103) - %.pre141 = load ptr, ptr %88, align 8, !tbaa !31 + %.pre128 = load ptr, ptr %88, align 8, !tbaa !31 br label %105 105: ; preds = %100, %97 - %106 = phi ptr [ %.pre141, %100 ], [ %87, %97 ] + %106 = phi ptr [ %.pre128, %100 ], [ %87, %97 ] %.not.i115 = icmp eq ptr %106, null br i1 %.not.i115, label %108, label %107 @@ -658,21 +658,21 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %134 = load ptr, ptr @stderr, align 8, !tbaa !9 %135 = tail call i32 @fflush(ptr noundef %134) %.pre = load i64, ptr %85, align 8, !tbaa !20 - %.pre140.pre = load ptr, ptr %88, align 8, !tbaa !31 + %.pre127.pre = load ptr, ptr %88, align 8, !tbaa !31 br label %136 136: ; preds = %131, %128 - %.pre140 = phi ptr [ %.pre140.pre, %131 ], [ %87, %128 ] + %.pre127 = phi ptr [ %.pre127.pre, %131 ], [ %87, %128 ] %137 = phi i64 [ %.pre, %131 ], [ %84, %128 ] - %.not133 = icmp eq i64 %137, 0 - br i1 %.not133, label %._crit_edge, label %.lr.ph + %.not123 = icmp eq i64 %137, 0 + br i1 %.not123, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %136, %.lr.ph %138 = phi i64 [ %141, %.lr.ph ], [ 0, %136 ] - %.0126 = phi i32 [ %140, %.lr.ph ], [ 0, %136 ] - %139 = getelementptr inbounds nuw i32, ptr %.pre140, i64 %138 - store i32 %.0126, ptr %139, align 4, !tbaa !18 - %140 = add i32 %.0126, 1 + %.0122 = phi i32 [ %140, %.lr.ph ], [ 0, %136 ] + %139 = getelementptr inbounds nuw i32, ptr %.pre127, i64 %138 + store i32 %.0122, ptr %139, align 4, !tbaa !18 + %140 = add i32 %.0122, 1 %141 = zext i32 %140 to i64 %142 = icmp ugt i64 %137, %141 br i1 %142, label %.lr.ph, label %._crit_edge, !llvm.loop !42 @@ -681,7 +681,7 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %143 = load i32, ptr %120, align 8, !tbaa !40 %144 = icmp ult i32 %143, 9 %145 = select i1 %144, ptr @COVER_strict_cmp8, ptr @COVER_strict_cmp - tail call void @qsort_r(ptr noundef %.pre140, i64 noundef %137, i64 noundef 4, ptr noundef nonnull %145, ptr noundef nonnull %0) #24 + tail call void @qsort_r(ptr noundef %.pre127, i64 noundef %137, i64 noundef 4, ptr noundef nonnull %145, ptr noundef nonnull %0) #24 %146 = load i32, ptr @g_displayLevel, align 4, !tbaa !18 %147 = icmp sgt i32 %146, 1 br i1 %147, label %148, label %153 @@ -703,21 +703,21 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop br i1 %.not.i116, label %COVER_groupBy.exit, label %.preheader.i .preheader.i: ; preds = %153, %COVER_group.exit.i - %.01913.i = phi i64 [ %.1.lcssa.i, %COVER_group.exit.i ], [ 0, %153 ] - %.02012.i = phi ptr [ %.0.lcssa.i, %COVER_group.exit.i ], [ %154, %153 ] + %.0192.i = phi i64 [ %.1.lcssa.i, %COVER_group.exit.i ], [ 0, %153 ] + %.0201.i = phi ptr [ %.0.lcssa.i, %COVER_group.exit.i ], [ %154, %153 ] %.01.i = getelementptr inbounds nuw i8, ptr %.02012.i, i64 4 - %.12.i = add nuw i64 %.01913.i, 1 + %.12.i = add nuw i64 %.0192.i, 1 %159 = icmp ult i64 %.12.i, %155 - br i1 %159, label %.lr.ph.i117.preheader, label %.critedge.i + br i1 %159, label %161, label %.critedge.i -.lr.ph.i117.preheader: ; preds = %.preheader.i - %160 = tail call i32 %158(ptr noundef nonnull %0, ptr noundef %.02012.i, ptr noundef nonnull %.01.i) #24, !callees !43 +161: ; preds = %.preheader.i + %160 = tail call i32 %158(ptr noundef nonnull %0, ptr noundef %.0201.i, ptr noundef nonnull %.01.i) #24, !callees !43 %161 = icmp eq i32 %160, 0 br i1 %161, label %.lr.ph129, label %..critedge_crit_edge8.i, !llvm.loop !44 -.lr.ph129: ; preds = %.lr.ph.i117.preheader +.lr.ph129:; preds = %.lr.ph.i117.preheader %.0.i170 = getelementptr inbounds nuw i8, ptr %.02012.i, i64 8 - %.1.i171 = add nuw i64 %.01913.i, 2 + %.1.i171 = add nuw i64 %.0192.i, 2 %exitcond.not.i118172 = icmp eq i64 %.1.i171, %155 br i1 %exitcond.not.i118172, label %.critedge.i, label %.lr.ph.i117.lr.ph, !llvm.loop !44 @@ -736,9 +736,9 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %.04.i128173 = phi ptr [ %.01.i, %.lr.ph.i117.lr.ph ], [ %.0.i174, %162 ] %163 = tail call i32 %158(ptr noundef nonnull %0, ptr noundef %.02012.i, ptr noundef nonnull %.0.i174) #24, !callees !43 %164 = icmp eq i32 %163, 0 - br i1 %164, label %162, label %.lr.ph.i117...critedge_crit_edge8.i_crit_edge, !llvm.loop !44 + br i1 %164, label %162, label %.critedge.i, !llvm.loop !44 -.lr.ph.i117...critedge_crit_edge8.i_crit_edge: ; preds = %.lr.ph.i117 +.critedge.i: ; preds = %.lr.ph.i117 br label %..critedge_crit_edge8.i, !llvm.loop !44 ..critedge_crit_edge8.i: ; preds = %.lr.ph.i117...critedge_crit_edge8.i_crit_edge, %.lr.ph.i117.preheader @@ -755,7 +755,7 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop %.0.lcssa.i = phi ptr [ %.04.i.lcssa, %..critedge_crit_edge8.i ], [ %.01.i, %.preheader.i ], [ %.0.i, %..critedge.i.loopexit_crit_edge ], [ %.0.i170, %.lr.ph129 ] %.1.lcssa.i = phi i64 [ %.15.i.lcssa, %..critedge_crit_edge8.i ], [ %.12.i, %.preheader.i ], [ %155, %..critedge.i.loopexit_crit_edge ], [ %155, %.lr.ph129 ] %165 = load ptr, ptr %88, align 8, !tbaa !31 - %166 = ptrtoint ptr %.02012.i to i64 + %166 = ptrtoint ptr %.0201.i to i64 %167 = ptrtoint ptr %165 to i64 %168 = sub i64 %166, %167 %169 = lshr exact i64 %168, 2 @@ -769,7 +769,7 @@ COVER_sum.exit104: ; preds = %.lr.ph.i108, %.loop br label %177 177: ; preds = %198, %.critedge.i - %.038.i.i = phi ptr [ %.02012.i, %.critedge.i ], [ %199, %198 ] + %.038.i.i = phi ptr [ %.0201.i, %.critedge.i ], [ %199, %198 ] %.02637.i.i = phi i64 [ %174, %.critedge.i ], [ %.1.i.i, %198 ] %.02736.i.i = phi i32 [ 0, %.critedge.i ], [ %.128.i.i, %198 ] %.02935.i.i = phi ptr [ %171, %.critedge.i ], [ %.130.i.i, %198 ] diff --git a/bench/zxing/optimized/Utf.ll b/bench/zxing/optimized/Utf.ll index bf3e97687b9..b4b77aea068 100644 --- a/bench/zxing/optimized/Utf.ll +++ b/bench/zxing/optimized/Utf.ll @@ -113,37 +113,37 @@ define internal fastcc void @_ZN5ZXingL14AppendFromUtf8ESt17basic_string_viewIDu %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 %5 = load i64, ptr %4, align 8, !tbaa !9 %.not.i = icmp eq i64 %0, 0 - br i1 %.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread, label %.lr.ph23.i + br i1 %.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread, label %.lr.ph.i _ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread: ; preds = %3 tail call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %5) br label %._crit_edge -.lr.ph23.i: ; preds = %3, %.critedge.i - %.022.i = phi i64 [ %.1.i, %.critedge.i ], [ 0, %3 ] - %.01321.i = phi i64 [ %27, %.critedge.i ], [ 0, %3 ] - %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.022.i +.lr.ph.i: ; preds = %3, %.critedge.i + %.018.i = phi i64 [ %.1.i, %.critedge.i ], [ 0, %3 ] + %.01317.i = phi i64 [ %27, %.critedge.i ], [ 0, %3 ] + %6 = getelementptr inbounds nuw i8, ptr %1, i64 %.018.i %7 = load i8, ptr %6, align 1, !tbaa !16 %8 = icmp sgt i8 %7, -1 br i1 %8, label %9, label %11 -9: ; preds = %.lr.ph23.i - %10 = add nuw i64 %.022.i, 1 +9: ; preds = %.lr.ph.i + %10 = add nuw i64 %.018.i, 1 br label %.critedge.i -11: ; preds = %.lr.ph23.i +11: ; preds = %.lr.ph.i %12 = zext i8 %7 to i32 %13 = add nsw i32 %12, -192 %14 = lshr i32 %13, 4 switch i32 %14, label %.preheader.i [ i32 0, label %16 i32 1, label %16 - i32 2, label %18 - i32 3, label %20 + i32 2, label %17 + i32 3, label %19 ] -.preheader.i: ; preds = %11 - %.217.i = add nuw i64 %.022.i, 1 +15: ; preds = %11 + %16 = add nuw i64 %.018.i, 1 %15 = icmp ult i64 %.217.i, %0 br i1 %15, label %.lr.ph.i, label %.critedge.i @@ -151,25 +151,25 @@ _ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exi %17 = add i64 %.022.i, 2 br label %.critedge.i -18: ; preds = %11 - %19 = add i64 %.022.i, 3 +17: ; preds = %11 + %18 = add i64 %.018.i, 3 br label %.critedge.i -20: ; preds = %11 - %21 = add i64 %.022.i, 4 +19: ; preds = %11 + %20 = add i64 %.018.i, 4 br label %.critedge.i -22: ; preds = %.lr.ph.i +.preheader.i: ; preds = %.lr.ph %.2.i = add nuw i64 %.218.i, 1 %exitcond.not.i = icmp eq i64 %.2.i, %0 - br i1 %exitcond.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29, label %.lr.ph.i, !llvm.loop !18 + br i1 %exitcond.not.i, label %_ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29, label %.lr.ph, !llvm.loop !18 _ZN5ZXingL19Utf8CountCodePointsESt17basic_string_viewIDuSt11char_traitsIDuEE.exit.thread29: ; preds = %22 %23 = add i64 %.01321.i, 1 br label %.lr.ph -.lr.ph.i: ; preds = %.preheader.i, %22 - %.218.i = phi i64 [ %.2.i, %22 ], [ %.217.i, %.preheader.i ] +.lr.ph: ; preds = %.preheader.i, %.preheader.i + %.sink35 = phi i64 [ %.2.i, %22 ], [ %16, %.preheader.i ] %24 = getelementptr inbounds nuw i8, ptr %1, i64 %.218.i %25 = load i8, ptr %24, align 1, !tbaa !16 %26 = icmp slt i8 %25, -64