From fda26ef3f31cd8533d201764767af26343e00f69 Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Sat, 28 Feb 2026 01:35:13 +0800 Subject: [PATCH 1/3] pre-commit: PR183688 --- 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..cc057ffe892 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/183688 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From ec02917a5a4db5aa71eb6327428be3d292b5646c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:58:29 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/cnfPost.ll | 24 ++- bench/abc/optimized/llb1Hint.ll | 88 ++++---- bench/abseil-cpp/optimized/cord_test.ll | 86 ++++---- bench/actix-rs/optimized/190uhijawk1lki5o.ll | 30 ++- bench/actix-rs/optimized/305jwhumkt6l000n.ll | 10 +- bench/arrow/optimized/value_parsing.ll | 129 ++++++------ bench/boost/optimized/cmd_test.ll | 144 +++++++------ bench/clap-rs/optimized/1zp92zvstj9lufi9.ll | 48 +++-- .../optimized/335iccg14rff9vbo.ll | 8 +- bench/darktable/optimized/Cr2Decoder.ll | 58 ++--- bench/darktable/optimized/NakedDecoder.ll | 29 +-- .../darktable/optimized/RawImageDataFloat.ll | 28 +-- bench/delta-rs/optimized/145iz0hplas008bu.ll | 52 ++--- bench/delta-rs/optimized/2die4ejnk5ryh9i0.ll | 6 +- bench/diesel-rs/optimized/462o5qgxgzqa9ugn.ll | 2 + bench/duckdb/optimized/arena.ll | 94 +++++---- bench/faiss/optimized/gtest-all.ll | 189 +++++++++-------- .../optimized/7ggr7vxi3lrn28dd77bkw6see.ll | 21 +- .../optimized/czs708r0zvy58e2j6rsq7a88i.ll | 62 +++--- .../optimized/3mkcuilt3qj76iejlx2uremig.ll | 66 +++--- .../optimized/dn9au2q3g3wlvvn47oahet6lo.ll | 132 ++++++------ bench/glslang/optimized/ParseHelper.ll | 68 +++--- bench/hermes/optimized/MicrosoftDemangle.ll | 4 +- bench/hermes/optimized/SemanticValidator.ll | 50 +++-- bench/hermes/optimized/Utils.ll | 8 + .../html5ever-rs/optimized/6qwbbyxelav3qgo.ll | 108 +++++----- bench/image-rs/optimized/2ndzmzcdt55acj4k.ll | 92 ++++---- bench/image-rs/optimized/5ez7udly19o3uj1p.ll | 54 ++--- bench/image-rs/optimized/ptscn4jakoj4p9m.ll | 148 ++++++------- .../influxdb-rs/optimized/34vmrh0qyn6415sj.ll | 164 ++++++++------- bench/just-rs/optimized/2sotx4bdu006z307.ll | 30 +-- bench/libquic/optimized/string16.ll | 140 +++++++------ bench/lief/optimized/AArch64PAuth.ll | 106 +++++----- .../optimized/564p8f6yhi59w8h9.ll | 94 +++++---- .../mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll | 14 +- .../mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll | 34 +-- .../mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll | 58 +++-- .../mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll | 86 ++++---- bench/mitsuba3/optimized/codeholder.ll | 198 +++++++++--------- bench/mold/optimized/cmdline.cc.X86_64.ll | 72 ++++--- .../optimized/msgpack_variant_mapbased.ll | 162 +++++++------- bench/nix/optimized/archive.ll | 36 ++-- bench/nix/optimized/git.ll | 122 +++++------ bench/nix/optimized/json-to-value.ll | 140 +++++++------ bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll | 18 +- bench/opencv/optimized/darknet_io.ll | 100 ++++----- bench/opencv/optimized/ts_gtest.ll | 165 ++++++++------- bench/php/optimized/attr.ll | 58 ++--- bench/php/optimized/node.ll | 106 +++++----- bench/php/optimized/pdo_stmt.ll | 106 +++++----- .../optimized/24oggy68gf6cx0i1vzuuyyts4.ll | 74 +++---- .../optimized/9kpxegslu0j3pb3oe28vzbz0s.ll | 22 +- .../optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll | 88 ++++---- .../optimized/cr8e12xes7vcplgf99utxzbos.ll | 69 +++--- .../optimized/1zfqpoyga76fsrjdmdh7m2utw.ll | 3 + .../optimized/4i1zi5w77kchanzzu8mmseop2.ll | 5 + .../optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll | 16 +- .../optimized/cil91sqjm14i40hvtn93g3igf.ll | 22 +- bench/qdrant-rs/optimized/14hho85eanhsaepf.ll | 92 ++++---- bench/qdrant-rs/optimized/4iacc535829shmz2.ll | 100 ++++----- bench/qemu/optimized/tcg-op.ll | 66 +++--- .../optimized/2i59h3d4lts0esz5vi8utqlqr.ll | 14 +- .../optimized/a2fxvubrv6xxh830kesi8vt5v.ll | 156 +++++++------- .../optimized/97m639ujt231tug2it6j1j2tc.ll | 42 ++-- .../optimized/f3p3h61s9nwe4ta3vnloaej97.ll | 112 +++++----- bench/rayon-rs/optimized/1ospp3uz7h49thev.ll | 52 ++--- bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll | 98 +++++---- bench/rayon-rs/optimized/aeba4nd7ialzggy.ll | 117 ++++++----- bench/redis/optimized/arena.ll | 64 +++--- bench/regex-rs/optimized/4dth5ncaqumdqgby.ll | 38 ++-- bench/regex-rs/optimized/4ilpqr23cw58vyva.ll | 88 ++++---- .../ripgrep-rs/optimized/24qzgyq9sz17vf3i.ll | 18 +- bench/rocksdb/optimized/xxhash.ll | 8 +- .../optimized/42urr4wi9o4ym10wn20vge60c.ll | 56 ++--- .../optimized/7wwgo2qmgv5jda16jk82i54eo.ll | 62 +++--- .../optimized/55szrkbrq7kolv5z.ll | 16 +- .../rustfmt-rs/optimized/4gk399kploc9gcsb.ll | 50 ++--- .../optimized/mlftjs9t2bz2jrv.ll | 102 ++++----- bench/spike/optimized/socketif.ll | 68 +++--- bench/syn/optimized/4dl8yvgrwkkcv6u.ll | 120 ++++++----- bench/syn/optimized/4llvvcm7ykus6q9g.ll | 38 +++- .../optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll | 144 +++++++------ bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll | 46 ++-- bench/tls-rs/optimized/526n7g8rwc65lc9b.ll | 100 ++++----- .../optimized/1w676x6x6lprwvn5.ll | 146 ++++++------- .../optimized/3yaq830kuxi6xpg5.ll | 82 ++++---- .../optimized/2czk4owdq0ube9pw.ll | 24 ++- .../optimized/2xun21ofbsn7p9xn.ll | 60 ++++-- .../optimized/42mwgpotg9phq80h.ll | 87 ++++---- .../optimized/073xkjbb0bs34qvdns32a3q3u.ll | 116 +++++----- .../optimized/667fw7b0fgqo2a1672jmft41u.ll | 42 ++-- .../optimized/68uz0ms18epwru7402hblucwm.ll | 82 ++++---- bench/velox/optimized/SIMDJsonExtractor.ll | 14 +- .../optimized/47i5oou8fwwq0e6h8s2c2rc64.ll | 46 ++-- .../optimized/ah35cui21ubzfcdfw75m5m10r.ll | 23 +- .../wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll | 12 +- .../wasmtime-rs/optimized/4oustitdsdvnhdau.ll | 40 ++-- .../wasmtime-rs/optimized/enal6epyb0tyurl.ll | 38 ++-- bench/wireshark/optimized/packet-agentx.ll | 102 ++++----- bench/wireshark/optimized/packet-tls-utils.ll | 70 ++++--- bench/wireshark/optimized/proto.ll | 62 +++--- .../optimized/8prs9ypeqrggu5mcc8i3onesd.ll | 178 ++++++++-------- .../optimized/0pbj35jdb0n0bb6blyk493qkr.ll | 20 +- .../optimized/160h40gmjuq6w4py8cgz7ceyb.ll | 20 +- .../optimized/9zapxybzyqo7as5l1oow5wvsl.ll | 18 +- bench/zxing/optimized/ODDataBarReader.ll | 38 ++-- 106 files changed, 3908 insertions(+), 3425 deletions(-) diff --git a/bench/abc/optimized/cnfPost.ll b/bench/abc/optimized/cnfPost.ll index 137f306ae6a..119b00836af 100644 --- a/bench/abc/optimized/cnfPost.ll +++ b/bench/abc/optimized/cnfPost.ll @@ -18,6 +18,7 @@ define void @Cnf_ManPostprocess_old(ptr noundef readonly captures(none) %0) loca .lr.ph: ; preds = %1 %7 = getelementptr i8, ptr %4, i64 8 %.val38 = load ptr, ptr %7, align 8, !tbaa !27 + %.not.i = icmp ne ptr %4, null %wide.trip.count61 = zext nneg i32 %.val to i64 br label %8 @@ -50,6 +51,7 @@ define void @Cnf_ManPostprocess_old(ptr noundef readonly captures(none) %0) loca br i1 %.not, label %.critedge2, label %Aig_ManObj.exit.lr.ph Aig_ManObj.exit.lr.ph: ; preds = %.preheader + tail call void @llvm.assume(i1 %.not.i) %21 = lshr i32 %.fr, 15 %22 = and i32 %21, 4094 %.not37 = icmp eq i32 %22, 0 @@ -106,7 +108,7 @@ declare noundef i32 @printf(ptr noundef readonly captures(none), ...) local_unna define void @Cnf_ManTransferCuts(ptr noundef %0) local_unnamed_addr #2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 %3 = load ptr, ptr %2, align 8, !tbaa !33 - tail call void @Aig_MmFlexRestart(ptr noundef %3) #5 + tail call void @Aig_MmFlexRestart(ptr noundef %3) #6 %4 = load ptr, ptr %0, align 8, !tbaa !3 %5 = getelementptr inbounds nuw i8, ptr %4, i64 32 %6 = load ptr, ptr %5, align 8, !tbaa !15 @@ -138,7 +140,7 @@ define void @Cnf_ManTransferCuts(ptr noundef %0) local_unnamed_addr #2 { br i1 %or.cond, label %.sink.split, label %20 20: ; preds = %14 - %21 = tail call ptr @Cnf_CutCreate(ptr noundef nonnull %0, ptr noundef nonnull %12) #5 + %21 = tail call ptr @Cnf_CutCreate(ptr noundef nonnull %0, ptr noundef nonnull %12) #6 br label %.sink.split .sink.split: ; preds = %14, %20 @@ -194,7 +196,7 @@ define void @Cnf_ManFreeCuts(ptr noundef readonly captures(none) %0) local_unnam br i1 %.not, label %17, label %16 16: ; preds = %13 - tail call void @Cnf_CutFree(ptr noundef nonnull %15) #5 + tail call void @Cnf_CutFree(ptr noundef nonnull %15) #6 store ptr null, ptr %14, align 8, !tbaa !34 %.pre = load ptr, ptr %0, align 8, !tbaa !3 br label %17 @@ -391,7 +393,7 @@ Aig_ManObj.exit93: ; preds = %63 %.val89 = load ptr, ptr %81, align 8, !tbaa !34 %82 = getelementptr inbounds nuw i8, ptr %74, i64 36 %83 = load i32, ptr %82, align 4, !tbaa !44 - %84 = tail call ptr @Cnf_CutCompose(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef %.val89, i32 noundef %83) #5 + %84 = tail call ptr @Cnf_CutCompose(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef %.val89, i32 noundef %83) #6 %cond = icmp eq ptr %84, null br i1 %cond, label %101, label %85 @@ -413,16 +415,16 @@ Aig_ManObj.exit93: ; preds = %63 br i1 %97, label %98, label %99 98: ; preds = %85, %89 - tail call void @Cnf_CutFree(ptr noundef nonnull %84) #5 + tail call void @Cnf_CutFree(ptr noundef nonnull %84) #6 br label %101 99: ; preds = %89 %100 = getelementptr i8, ptr %74, i64 40 store ptr %84, ptr %22, align 8, !tbaa !34 store ptr null, ptr %100, align 8, !tbaa !34 - tail call void @Cnf_CutUpdateRefs(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef nonnull %.val89, ptr noundef nonnull %84) #5 - tail call void @Cnf_CutFree(ptr noundef nonnull %.val87) #5 - tail call void @Cnf_CutFree(ptr noundef nonnull %.val89) #5 + tail call void @Cnf_CutUpdateRefs(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef nonnull %.val89, ptr noundef nonnull %84) #6 + tail call void @Cnf_CutFree(ptr noundef nonnull %.val87) #6 + tail call void @Cnf_CutFree(ptr noundef nonnull %.val89) #6 br label %.critedge4 101: ; preds = %80, %98, %75 @@ -459,12 +461,16 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + attributes #0 = { nofree 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 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { 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 #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #5 = { nounwind } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/abc/optimized/llb1Hint.ll b/bench/abc/optimized/llb1Hint.ll index 9de44665b42..18832c0916f 100644 --- a/bench/abc/optimized/llb1Hint.ll +++ b/bench/abc/optimized/llb1Hint.ll @@ -53,7 +53,7 @@ define i32 @Llb_ManMaxFanoutCi(ptr noundef readonly captures(none) %0) local_unn ; Function Attrs: nounwind uwtable define ptr @Llb_ManPerformHints(ptr noundef %0, i32 noundef %1) local_unnamed_addr #1 { - %3 = tail call ptr @Aig_ManDupDfs(ptr noundef %0) #16 + %3 = tail call ptr @Aig_ManDupDfs(ptr noundef %0) #17 %4 = icmp sgt i32 %1, 0 br i1 %4, label %.lr.ph, label %._crit_edge @@ -94,8 +94,8 @@ define ptr @Llb_ManPerformHints(ptr noundef %0, i32 noundef %1) local_unnamed_ad Llb_ManMaxFanoutCi.exit: ; preds = %10, %.lr.ph %.0.lcssa.i = phi i32 [ -1, %.lr.ph ], [ %spec.select15.i, %10 ] tail call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str, i32 noundef %.01011, i32 noundef %.0.lcssa.i) - %18 = tail call ptr @Aig_ManDupCof(ptr noundef nonnull %.012, i32 noundef %.0.lcssa.i, i32 noundef 1) #16 - tail call void @Aig_ManStop(ptr noundef nonnull %.012) #16 + %18 = tail call ptr @Aig_ManDupCof(ptr noundef nonnull %.012, i32 noundef %.0.lcssa.i, i32 noundef 1) #17 + tail call void @Aig_ManStop(ptr noundef nonnull %.012) #17 %19 = add nuw nsw i32 %.01011, 1 %exitcond.not = icmp eq i32 %19, %1 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !27 @@ -116,24 +116,24 @@ define internal void @Abc_Print(i32 %0, ptr noundef %1, ...) unnamed_addr #3 { br i1 %.not, label %18, label %5 5: ; preds = %2 - %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #16 + %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #17 call void @llvm.va_start.p0(ptr nonnull %3) - %7 = call i32 (...) @Abc_FrameIsBridgeMode() #16 + %7 = call i32 (...) @Abc_FrameIsBridgeMode() #17 %.not9 = icmp eq i32 %7, 0 br i1 %.not9, label %14, label %8 8: ; preds = %5 - %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #16 + %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #17 %10 = load ptr, ptr @stdout, align 8, !tbaa !29 - %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #17 + %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #18 %12 = trunc i64 %11 to i32 - %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef nonnull %9) #16 - call void @free(ptr noundef %9) #16 + %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef nonnull %9) #17 + call void @free(ptr noundef %9) #17 br label %17 14: ; preds = %5 %15 = load ptr, ptr @stdout, align 8, !tbaa !29, !noalias !31 - %16 = call i32 @vfprintf(ptr noundef %15, ptr noundef %1, ptr noundef nonnull %3) #16 + %16 = call i32 @vfprintf(ptr noundef %15, ptr noundef %1, ptr noundef nonnull %3) #17 br label %17 17: ; preds = %14, %8 @@ -151,11 +151,11 @@ declare void @Aig_ManStop(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define noalias noundef ptr @Llb_ManCollectHighFanoutObjects(ptr noundef readonly captures(none) %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #1 { - %4 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #18 + %4 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 0, ptr %5, align 4, !tbaa !34 store i32 100, ptr %4, align 8, !tbaa !36 - %6 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #18 + %6 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #19 %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %6, ptr %7, align 8, !tbaa !37 %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -225,11 +225,11 @@ Saig_ObjIsLo.exit.thread: ; preds = %20, %Saig_ObjIsLo.e br i1 %.not9.i.i, label %37, label %35 35: ; preds = %34 - %36 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %15, i64 noundef 64) #19 + %36 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %15, i64 noundef 64) #20 br label %Vec_IntPush.exit.sink.split 37: ; preds = %34 - %38 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #18 + %38 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #19 br label %Vec_IntPush.exit.sink.split 39: ; preds = %32 @@ -240,11 +240,11 @@ Saig_ObjIsLo.exit.thread: ; preds = %20, %Saig_ObjIsLo.e br i1 %.not9.i9.i, label %45, label %43 43: ; preds = %39 - %44 = tail call ptr @realloc(ptr noundef nonnull %15, i64 noundef %42) #19 + %44 = tail call ptr @realloc(ptr noundef nonnull %15, i64 noundef %42) #20 br label %Vec_IntPush.exit.sink.split 45: ; preds = %39 - %46 = tail call noalias ptr @malloc(i64 noundef %42) #18 + %46 = tail call noalias ptr @malloc(i64 noundef %42) #19 br label %Vec_IntPush.exit.sink.split Vec_IntPush.exit.sink.split: ; preds = %43, %45, %35, %37 @@ -282,19 +282,19 @@ Vec_IntFree.exit: ; preds = %Vec_IntFree.exit.lo %.val73 = phi ptr [ %.pre.i130, %Vec_IntFree.exit.loopexit ], [ %6, %3 ] %.val72 = phi i32 [ %.val72.pre, %Vec_IntFree.exit.loopexit ], [ 0, %3 ] %55 = sext i32 %.val72 to i64 - tail call void @qsort(ptr noundef %.val73, i64 noundef %55, i64 noundef 4, ptr noundef nonnull @Vec_IntSortCompare2) #16 + tail call void @qsort(ptr noundef %.val73, i64 noundef %55, i64 noundef 4, ptr noundef nonnull @Vec_IntSortCompare2) #17 %56 = add nsw i32 %.val72, -1 %57 = tail call range(i32 -2147483648, 2147483647) i32 @llvm.smin.i32(i32 %1, i32 range(i32 -2147483648, 2147483647) %56) %58 = sext i32 %57 to i64 %59 = getelementptr inbounds i32, ptr %.val73, i64 %58 %60 = load i32, ptr %59, align 4, !tbaa !28 - tail call void @free(ptr noundef nonnull %.val73) #16 - tail call void @free(ptr noundef nonnull %4) #16 - %61 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #18 + tail call void @free(ptr noundef nonnull %.val73) #17 + tail call void @free(ptr noundef nonnull %4) #17 + %61 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 %62 = getelementptr inbounds nuw i8, ptr %61, i64 4 store i32 0, ptr %62, align 4, !tbaa !34 store i32 100, ptr %61, align 8, !tbaa !36 - %63 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #18 + %63 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #19 %64 = getelementptr inbounds nuw i8, ptr %61, i64 8 store ptr %63, ptr %64, align 8, !tbaa !37 %65 = load ptr, ptr %8, align 8, !tbaa !38 @@ -311,11 +311,13 @@ Vec_IntFree.exit: ; preds = %Vec_IntFree.exit.lo .critedge2.preheader: ; preds = %132 %.val75.pre = load i32, ptr %62, align 4, !tbaa !34 %69 = icmp sgt i32 %.val75.pre, 1 + %.not.i100 = icmp ne ptr %133, null br i1 %69, label %.critedge2.preheader.split.us, label %.split.us .critedge2.preheader.split.us: ; preds = %.critedge2.preheader %70 = add nsw i32 %.val75.pre, -1 %71 = getelementptr i8, ptr %133, i64 8 + tail call void @llvm.assume(i1 %.not.i100) %.val.i101.us = load ptr, ptr %71, align 8, !tbaa !23 %wide.trip.count = zext i32 %70 to i64 br label %.critedge2.us @@ -424,11 +426,11 @@ Saig_ObjIsLo.exit91.thread: ; preds = %99, %Saig_ObjIsLo.e br i1 %.not9.i.i97, label %119, label %117 117: ; preds = %116 - %118 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %94, i64 noundef 64) #19 + %118 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %94, i64 noundef 64) #20 br label %Vec_IntPush.exit99.sink.split 119: ; preds = %116 - %120 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #18 + %120 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #19 br label %Vec_IntPush.exit99.sink.split 121: ; preds = %114 @@ -439,11 +441,11 @@ Saig_ObjIsLo.exit91.thread: ; preds = %99, %Saig_ObjIsLo.e br i1 %.not9.i9.i96, label %127, label %125 125: ; preds = %121 - %126 = tail call ptr @realloc(ptr noundef nonnull %94, i64 noundef %124) #19 + %126 = tail call ptr @realloc(ptr noundef nonnull %94, i64 noundef %124) #20 br label %Vec_IntPush.exit99.sink.split 127: ; preds = %121 - %128 = tail call noalias ptr @malloc(i64 noundef %124) #18 + %128 = tail call noalias ptr @malloc(i64 noundef %124) #19 br label %Vec_IntPush.exit99.sink.split Vec_IntPush.exit99.sink.split: ; preds = %125, %127, %117, %119 @@ -485,7 +487,7 @@ define i32 @Llb_ManModelCheckAigWithHints(ptr noundef %0, ptr noundef %1) local_ call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr null, ptr %5, align 8, !tbaa !46 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %6 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #16 + %6 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #17 %7 = icmp slt i32 %6, 0 br i1 %7, label %Abc_Clock.exit, label %8 @@ -511,7 +513,7 @@ Abc_Clock.exit: ; preds = %2, %8 %.val41 = load ptr, ptr %18, align 8, !tbaa !38 %19 = getelementptr i8, ptr %.val41, i64 4 %.val41.val = load i32, ptr %19, align 4, !tbaa !21 - %20 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #18 + %20 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 %21 = add i32 %.val41.val, -1 %or.cond.i.i = icmp ult i32 %21, 15 %spec.store.select.i.i = select i1 %or.cond.i.i, i32 16, i32 %.val41.val @@ -529,7 +531,7 @@ Vec_IntAlloc.exit.thread.i: ; preds = %Abc_Clock.exit Vec_IntAlloc.exit.i: ; preds = %Abc_Clock.exit %24 = sext i32 %spec.store.select.i.i to i64 %25 = shl nsw i64 %24, 2 - %26 = call noalias ptr @malloc(i64 noundef %25) #18 + %26 = call noalias ptr @malloc(i64 noundef %25) #19 %27 = getelementptr inbounds nuw i8, ptr %20, i64 8 store ptr %26, ptr %27, align 8, !tbaa !37 store i32 %.val41.val, ptr %22, align 4, !tbaa !34 @@ -564,7 +566,7 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t %40 = sext i32 %39 to i64 %41 = getelementptr inbounds i32, ptr %.val40, i64 %40 store i32 1, ptr %41, align 4, !tbaa !28 - %42 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #16 + %42 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #17 switch i32 %42, label %43 [ i32 0, label %.loopexit i32 1, label %.preheader.loopexit @@ -612,7 +614,7 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t %56 = sext i32 %55 to i64 %57 = getelementptr inbounds i32, ptr %.val39, i64 %56 store i32 -1, ptr %57, align 4, !tbaa !28 - %58 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #16 + %58 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #17 %59 = icmp eq i32 %58, 1 br i1 %59, label %50, label %.loopexit @@ -629,13 +631,13 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t br i1 %.not35, label %65, label %64 64: ; preds = %61 - call void @Cudd_RecursiveDeref(ptr noundef nonnull %60, ptr noundef nonnull %63) #16 + call void @Cudd_RecursiveDeref(ptr noundef nonnull %60, ptr noundef nonnull %63) #17 %.pre = load ptr, ptr %5, align 8, !tbaa !46 br label %65 65: ; preds = %64, %61 %66 = phi ptr [ %.pre, %64 ], [ %60, %61 ] - call void @Extra_StopManager(ptr noundef %66) #16 + call void @Extra_StopManager(ptr noundef %66) #17 br label %67 67: ; preds = %.loopexit, %65 @@ -645,22 +647,22 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t br i1 %.not.i42, label %70, label %.thread.i .thread.i: ; preds = %67 - call void @free(ptr noundef nonnull %69) #16 + call void @free(ptr noundef nonnull %69) #17 br label %70 70: ; preds = %.thread.i, %67 - call void @free(ptr noundef nonnull %17) #16 + call void @free(ptr noundef nonnull %17) #17 %71 = getelementptr inbounds nuw i8, ptr %20, i64 8 %72 = load ptr, ptr %71, align 8, !tbaa !37 %.not.i43 = icmp eq ptr %72, null br i1 %.not.i43, label %Vec_IntFreeP.exit45, label %.thread.i44 .thread.i44: ; preds = %70 - call void @free(ptr noundef nonnull %72) #16 + call void @free(ptr noundef nonnull %72) #17 br label %Vec_IntFreeP.exit45 Vec_IntFreeP.exit45: ; preds = %70, %.thread.i44 - call void @free(ptr noundef nonnull %20) #16 + call void @free(ptr noundef nonnull %20) #17 %73 = getelementptr inbounds nuw i8, ptr %1, i64 64 %74 = load i32, ptr %73, align 8, !tbaa !69 %.not36 = icmp eq i32 %74, 0 @@ -668,7 +670,7 @@ Vec_IntFreeP.exit45: ; preds = %70, %.thread.i44 75: ; preds = %Vec_IntFreeP.exit45 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %76 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #16 + %76 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #17 %77 = icmp slt i32 %76, 0 br i1 %77, label %Abc_Clock.exit47, label %78 @@ -761,6 +763,9 @@ declare i32 @llvm.smax.i32(i32, i32) #15 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare range(i32 -1, 2) i32 @llvm.scmp.i32.i32(i32, i32) #15 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #16 + attributes #0 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -777,10 +782,11 @@ attributes #12 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-si attributes #13 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #14 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #15 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { nounwind } -attributes #17 = { nounwind willreturn memory(read) } -attributes #18 = { nounwind allocsize(0) } -attributes #19 = { nounwind allocsize(1) } +attributes #16 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #17 = { nounwind } +attributes #18 = { nounwind willreturn memory(read) } +attributes #19 = { nounwind allocsize(0) } +attributes #20 = { nounwind allocsize(1) } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/abseil-cpp/optimized/cord_test.ll b/bench/abseil-cpp/optimized/cord_test.ll index 57775beae45..5e3af665faa 100644 --- a/bench/abseil-cpp/optimized/cord_test.ll +++ b/bench/abseil-cpp/optimized/cord_test.ll @@ -59415,65 +59415,67 @@ _ZN4absl12log_internal10LogMessagelsILi20EEERS1_RAT__Kc.exit: ; preds = %14 26: ; preds = %17, %23 %27 = phi i8 [ %.pre, %23 ], [ %21, %17 ] %.0.i23 = phi ptr [ %25, %23 ], [ %19, %17 ] - %28 = getelementptr inbounds nuw i8, ptr %.0.i23, i64 8 - %29 = atomicrmw add ptr %28, i32 2 monotonic, align 4 + %28 = icmp ne ptr %.0.i23, null + tail call void @llvm.assume(i1 %28) + %29 = getelementptr inbounds nuw i8, ptr %.0.i23, i64 8 + %30 = atomicrmw add ptr %29, i32 2 monotonic, align 4 %or.cond.i = icmp ult i8 %27, 5 - br i1 %or.cond.i, label %30, label %31, !prof !858 + br i1 %or.cond.i, label %31, label %32, !prof !858 -30: ; preds = %26 +31: ; preds = %26 invoke void @_ZN4absl13cord_internal16LogFatalNodeTypeEPNS0_7CordRepE(ptr noundef nonnull %.0.i23) #40 - to label %.noexc unwind label %46 + to label %.noexc unwind label %47 -.noexc: ; preds = %30 +.noexc: ; preds = %31 unreachable -31: ; preds = %26 - %32 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #42 - to label %33 unwind label %46 +32: ; preds = %26 + %33 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #42 + to label %34 unwind label %47 -33: ; preds = %31 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %32, i8 0, i64 16, i1 false) - %34 = getelementptr inbounds nuw i8, ptr %32, i64 8 - store i32 2, ptr %34, align 4, !tbaa !94 - store i64 %3, ptr %32, align 8, !tbaa !119 - %35 = getelementptr inbounds nuw i8, ptr %32, i64 12 - store i8 1, ptr %35, align 4, !tbaa !96 - %36 = getelementptr inbounds nuw i8, ptr %32, i64 16 - store i64 %2, ptr %36, align 8, !tbaa !859 - %37 = getelementptr inbounds nuw i8, ptr %32, i64 24 - store ptr %.0.i23, ptr %37, align 8, !tbaa !861 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %32, ptr %38, align 8, !tbaa !24 +34: ; preds = %32 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %33, i8 0, i64 16, i1 false) + %35 = getelementptr inbounds nuw i8, ptr %33, i64 8 + store i32 2, ptr %35, align 4, !tbaa !94 + store i64 %3, ptr %33, align 8, !tbaa !119 + %36 = getelementptr inbounds nuw i8, ptr %33, i64 12 + store i8 1, ptr %36, align 4, !tbaa !96 + %37 = getelementptr inbounds nuw i8, ptr %33, i64 16 + store i64 %2, ptr %37, align 8, !tbaa !859 + %38 = getelementptr inbounds nuw i8, ptr %33, i64 24 + store ptr %.0.i23, ptr %38, align 8, !tbaa !861 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %33, ptr %39, align 8, !tbaa !24 store i64 1, ptr %0, align 8, !tbaa !24 - %39 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN4absl13cord_internal17cordz_next_sampleE) - %40 = load i64, ptr %39, align 8, !tbaa !115 - %41 = icmp sgt i64 %40, 1 - br i1 %41, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, !prof !117 - -_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i: ; preds = %33 - %42 = add nsw i64 %40, -1 - store i64 %42, ptr %39, align 8, !tbaa !115 + %40 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN4absl13cord_internal17cordz_next_sampleE) + %41 = load i64, ptr %40, align 8, !tbaa !115 + %42 = icmp sgt i64 %41, 1 + br i1 %42, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, !prof !117 + +_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i: ; preds = %34 + %43 = add nsw i64 %41, -1 + store i64 %43, ptr %40, align 8, !tbaa !115 br label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit -_ZN4absl13cord_internal20cordz_should_profileEv.exit.i: ; preds = %33 - %43 = invoke noundef i64 @_ZN4absl13cord_internal25cordz_should_profile_slowERNS0_13SamplingStateE(ptr noundef nonnull align 8 dereferenceable(16) %39) - to label %.noexc25 unwind label %46 +_ZN4absl13cord_internal20cordz_should_profileEv.exit.i: ; preds = %34 + %44 = invoke noundef i64 @_ZN4absl13cord_internal25cordz_should_profile_slowERNS0_13SamplingStateE(ptr noundef nonnull align 8 dereferenceable(16) %40) + to label %.noexc25 unwind label %47 .noexc25: ; preds = %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i - %44 = icmp sgt i64 %43, 0 - br i1 %44, label %45, label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit, !prof !118 + %45 = icmp sgt i64 %44, 0 + br i1 %45, label %46, label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit, !prof !118 -45: ; preds = %.noexc25 - invoke void @_ZN4absl13cord_internal9CordzInfo9TrackCordERNS0_10InlineDataENS0_18CordzUpdateTracker16MethodIdentifierEl(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 24, i64 noundef %43) - to label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit unwind label %46 +46: ; preds = %.noexc25 + invoke void @_ZN4absl13cord_internal9CordzInfo9TrackCordERNS0_10InlineDataENS0_18CordzUpdateTracker16MethodIdentifierEl(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 24, i64 noundef %44) + to label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit unwind label %47 -46: ; preds = %45, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, %31, %30 - %47 = landingpad { ptr, i32 } +47: ; preds = %46, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, %32, %31 + %48 = landingpad { ptr, i32 } cleanup tail call void @_ZN4absl4CordD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #41 - resume { ptr, i32 } %47 + resume { ptr, i32 } %48 -_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit: ; preds = %.noexc25, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, %45 +_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit: ; preds = %.noexc25, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, %46 ret void } diff --git a/bench/actix-rs/optimized/190uhijawk1lki5o.ll b/bench/actix-rs/optimized/190uhijawk1lki5o.ll index 0dd2d6ec59e..72fb7922c33 100644 --- a/bench/actix-rs/optimized/190uhijawk1lki5o.ll +++ b/bench/actix-rs/optimized/190uhijawk1lki5o.ll @@ -1602,6 +1602,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h6c9846cae15a80ebE.llvm.17 %20 = load ptr, ptr %0, align 8, !nonnull !14, !noundef !14 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #23 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.17787265185908177030.exit" @@ -2266,7 +2268,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h28bdf7db60e2dbbfE.llvm.1778726 %49 = add i64 %6, 1 %50 = mul nuw i64 %49, %2 %51 = add i64 %3, -1 - %52 = add nuw i64 %51, %50 + %52 = add nuw i64 %50, %51 %53 = sub i64 0, %3 %54 = and i64 %52, %53 %55 = add i64 %6, 17 @@ -2285,6 +2287,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h28bdf7db60e2dbbfE.llvm.1778726 %63 = load ptr, ptr %0, align 8, !alias.scope !441, !nonnull !14, !noundef !14 %64 = sub nsw i64 0, %54 %65 = getelementptr inbounds i8, ptr %63, i64 %64 + %66 = icmp sgt i64 %51, -1 + tail call void @llvm.assume(i1 %66) tail call void @__rust_dealloc(ptr noundef nonnull %65, i64 noundef %56, i64 noundef %3) #23, !noalias !441 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit @@ -2396,7 +2400,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hd42dc9b01a6d586cE.llvm.1778726 %52 = add i64 %6, 1 %53 = mul nuw i64 %52, %2 %54 = add i64 %3, -1 - %55 = add nuw i64 %54, %53 + %55 = add nuw i64 %53, %54 %56 = sub i64 0, %3 %57 = and i64 %55, %56 %58 = add i64 %6, 17 @@ -2415,6 +2419,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hd42dc9b01a6d586cE.llvm.1778726 %66 = load ptr, ptr %0, align 8, !alias.scope !470, !nonnull !14, !noundef !14 %67 = sub nsw i64 0, %57 %68 = getelementptr inbounds i8, ptr %66, i64 %67 + %69 = icmp sgt i64 %54, -1 + tail call void @llvm.assume(i1 %69) tail call void @__rust_dealloc(ptr noundef nonnull %68, i64 noundef %59, i64 noundef %3) #23, !noalias !470 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit @@ -2484,7 +2490,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h8632b1dad9c32722E.llvm.1778726 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -2503,6 +2509,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h8632b1dad9c32722E.llvm.1778726 %47 = load ptr, ptr %0, align 8, !alias.scope !491, !nonnull !14, !noundef !14 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #23, !noalias !491 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit @@ -2599,7 +2607,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hcf312f8ec9543d39E.llvm.1778726 %44 = add i64 %7, 1 %45 = mul nuw i64 %44, %2 %46 = add i64 %3, -1 - %47 = add nuw i64 %46, %45 + %47 = add nuw i64 %45, %46 %48 = sub i64 0, %3 %49 = and i64 %47, %48 %50 = add i64 %7, 17 @@ -2618,6 +2626,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hcf312f8ec9543d39E.llvm.1778726 %58 = load ptr, ptr %0, align 8, !alias.scope !531, !nonnull !14, !noundef !14 %59 = sub nsw i64 0, %49 %60 = getelementptr inbounds i8, ptr %58, i64 %59 + %61 = icmp sgt i64 %46, -1 + call void @llvm.assume(i1 %61) call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef %51, i64 noundef %3) #23, !noalias !531 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit @@ -2713,7 +2723,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h96563eb21b961c20E.llvm.1778726 %44 = add i64 %7, 1 %45 = mul nuw i64 %44, %2 %46 = add i64 %3, -1 - %47 = add nuw i64 %46, %45 + %47 = add nuw i64 %45, %46 %48 = sub i64 0, %3 %49 = and i64 %47, %48 %50 = add i64 %7, 17 @@ -2732,6 +2742,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h96563eb21b961c20E.llvm.1778726 %58 = load ptr, ptr %0, align 8, !alias.scope !568, !nonnull !14, !noundef !14 %59 = sub nsw i64 0, %49 %60 = getelementptr inbounds i8, ptr %58, i64 %59 + %61 = icmp sgt i64 %46, -1 + call void @llvm.assume(i1 %61) call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef %51, i64 noundef %3) #23, !noalias !568 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit @@ -2801,7 +2813,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h5a05490bc649612eE.llvm.1778726 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -2820,6 +2832,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h5a05490bc649612eE.llvm.1778726 %47 = load ptr, ptr %0, align 8, !alias.scope !589, !nonnull !14, !noundef !14 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #23, !noalias !589 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit @@ -2931,7 +2945,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h07e67f333cef6d3dE.llvm.1778726 %52 = add i64 %6, 1 %53 = mul nuw i64 %52, %2 %54 = add i64 %3, -1 - %55 = add nuw i64 %54, %53 + %55 = add nuw i64 %53, %54 %56 = sub i64 0, %3 %57 = and i64 %55, %56 %58 = add i64 %6, 17 @@ -2950,6 +2964,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h07e67f333cef6d3dE.llvm.1778726 %66 = load ptr, ptr %0, align 8, !alias.scope !618, !nonnull !14, !noundef !14 %67 = sub nsw i64 0, %57 %68 = getelementptr inbounds i8, ptr %66, i64 %67 + %69 = icmp sgt i64 %54, -1 + tail call void @llvm.assume(i1 %69) tail call void @__rust_dealloc(ptr noundef nonnull %68, i64 noundef %59, i64 noundef %3) #23, !noalias !618 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h9beddac38499f491E.llvm.17787265185908177030.exit diff --git a/bench/actix-rs/optimized/305jwhumkt6l000n.ll b/bench/actix-rs/optimized/305jwhumkt6l000n.ll index bb2cdd2b53d..14d1d7e47d2 100644 --- a/bench/actix-rs/optimized/305jwhumkt6l000n.ll +++ b/bench/actix-rs/optimized/305jwhumkt6l000n.ll @@ -646,6 +646,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h6c9846cae15a80ebE.llvm.84 %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #24 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.8426763234977947650.exit" @@ -947,7 +949,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hf602183498fe76d3E.llvm.8426763 %52 = add i64 %6, 1 %53 = mul nuw i64 %52, %2 %54 = add i64 %3, -1 - %55 = add nuw i64 %54, %53 + %55 = add nuw i64 %53, %54 %56 = sub i64 0, %3 %57 = and i64 %55, %56 %58 = add i64 %6, 17 @@ -966,6 +968,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hf602183498fe76d3E.llvm.8426763 %66 = load ptr, ptr %0, align 8, !alias.scope !209, !nonnull !4, !noundef !4 %67 = sub nsw i64 0, %57 %68 = getelementptr inbounds i8, ptr %66, i64 %67 + %69 = icmp sgt i64 %54, -1 + tail call void @llvm.assume(i1 %69) tail call void @__rust_dealloc(ptr noundef nonnull %68, i64 noundef %59, i64 noundef %3) #24, !noalias !209 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h45aa5389e0a32161E.llvm.8426763234977947650.exit @@ -1075,7 +1079,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h47f5b8b1a4d1a893E.llvm.8426763 %49 = add i64 %6, 1 %50 = mul nuw i64 %49, %2 %51 = add i64 %3, -1 - %52 = add nuw i64 %51, %50 + %52 = add nuw i64 %50, %51 %53 = sub i64 0, %3 %54 = and i64 %52, %53 %55 = add i64 %6, 17 @@ -1094,6 +1098,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h47f5b8b1a4d1a893E.llvm.8426763 %63 = load ptr, ptr %0, align 8, !alias.scope !254, !nonnull !4, !noundef !4 %64 = sub nsw i64 0, %54 %65 = getelementptr inbounds i8, ptr %63, i64 %64 + %66 = icmp sgt i64 %51, -1 + tail call void @llvm.assume(i1 %66) tail call void @__rust_dealloc(ptr noundef nonnull %65, i64 noundef %56, i64 noundef %3) #24, !noalias !254 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h45aa5389e0a32161E.llvm.8426763234977947650.exit diff --git a/bench/arrow/optimized/value_parsing.ll b/bench/arrow/optimized/value_parsing.ll index dffa32ae556..2491fecd6f7 100644 --- a/bench/arrow/optimized/value_parsing.ll +++ b/bench/arrow/optimized/value_parsing.ll @@ -1806,101 +1806,106 @@ define void @_ZN5arrow15TimestampParser12MakeStrptimeENSt7__cxx1112basic_stringI %9 = load ptr, ptr %1, align 8, !tbaa !53, !noalias !44 %10 = getelementptr inbounds nuw i8, ptr %1, i64 16 %11 = icmp eq ptr %9, %10 - %12 = getelementptr inbounds nuw i8, ptr %3, i64 8 br i1 %11, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i: ; preds = %2 - %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %14 = load i64, ptr %13, align 8, !tbaa !56, !noalias !44 - %15 = add nuw nsw i64 %14, 1 + %12 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %13 = load i64, ptr %12, align 8, !tbaa !56, !noalias !44 + %14 = icmp ult i64 %13, 16 + tail call void @llvm.assume(i1 %14) + %15 = add nuw nsw i64 %13, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %8, ptr noundef nonnull align 8 dereferenceable(1) %10, i64 %15, i1 false), !noalias !44 - store i64 0, ptr %13, align 8, !tbaa !56, !noalias !44 + %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 0, ptr %12, align 8, !tbaa !56, !noalias !44 store i8 0, ptr %10, align 8, !tbaa !6, !noalias !44 store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserE, i64 16), ptr %7, align 8, !tbaa !51, !noalias !44 - %16 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %17 = getelementptr inbounds nuw i8, ptr %4, i64 40 - store ptr %17, ptr %16, align 8, !tbaa !57, !noalias !44 - br label %22 + %17 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %18 = getelementptr inbounds nuw i8, ptr %4, i64 40 + store ptr %18, ptr %17, align 8, !tbaa !57, !noalias !44 + br label %24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i: ; preds = %2 - %18 = load i64, ptr %10, align 8, !tbaa !6, !noalias !44 - store i64 %18, ptr %8, align 8, !tbaa !6, !noalias !44 + %19 = load i64, ptr %10, align 8, !tbaa !6, !noalias !44 + store i64 %19, ptr %8, align 8, !tbaa !6, !noalias !44 %.phi.trans.insert.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre.i.i.i.i.i.i.i = load i64, ptr %.phi.trans.insert.i.i.i.i.i.i.i, align 8, !tbaa !56, !noalias !44 + %20 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr %10, ptr %1, align 8, !tbaa !53, !noalias !44 store i64 0, ptr %.phi.trans.insert.i.i.i.i.i.i.i, align 8, !tbaa !56, !noalias !44 store i8 0, ptr %10, align 8, !tbaa !6, !noalias !44 store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserE, i64 16), ptr %7, align 8, !tbaa !51, !noalias !44 - %19 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %20 = getelementptr inbounds nuw i8, ptr %4, i64 40 - store ptr %20, ptr %19, align 8, !tbaa !57, !noalias !44 - %21 = icmp eq ptr %9, %8 - br i1 %21, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i + %21 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %22 = getelementptr inbounds nuw i8, ptr %4, i64 40 + store ptr %22, ptr %21, align 8, !tbaa !57, !noalias !44 + %23 = icmp eq ptr %9, %8 + br i1 %23, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i %.pre.i.i.i.i.i.i = add nuw nsw i64 %.pre.i.i.i.i.i.i.i, 1 - br label %22 + br label %24 -22: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i +24: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i %.pre-phi.i.i.i.i.i.i = phi i64 [ %.pre.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] - %23 = phi ptr [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %17, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] - %24 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %14, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] - %25 = icmp ult i64 %24, 16 - call void @llvm.assume(i1 %25) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %23, ptr noundef nonnull align 8 dereferenceable(1) %8, i64 %.pre-phi.i.i.i.i.i.i, i1 false), !noalias !44 + %25 = phi ptr [ %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %18, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] + %26 = phi ptr [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %16, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] + %27 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] + %28 = icmp ult i64 %27, 16 + call void @llvm.assume(i1 %28) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %25, ptr noundef nonnull align 8 dereferenceable(1) %8, i64 %.pre-phi.i.i.i.i.i.i, i1 false), !noalias !44 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i - store ptr %9, ptr %19, align 8, !tbaa !53, !noalias !44 - store i64 %18, ptr %20, align 8, !tbaa !6, !noalias !44 + store ptr %9, ptr %21, align 8, !tbaa !53, !noalias !44 + store i64 %19, ptr %22, align 8, !tbaa !6, !noalias !44 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i, %22 - %26 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %24, %22 ] - %27 = phi ptr [ %9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %23, %22 ] - %28 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store i64 %26, ptr %28, align 8, !tbaa !56, !noalias !44 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i, %24 + %29 = phi ptr [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %26, %24 ] + %30 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %27, %24 ] + %31 = phi ptr [ %9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %25, %24 ] + %32 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store i64 %30, ptr %32, align 8, !tbaa !56, !noalias !44 store ptr %8, ptr %3, align 8, !tbaa !53, !noalias !44 - store i64 0, ptr %12, align 8, !tbaa !56, !noalias !44 + store i64 0, ptr %29, align 8, !tbaa !56, !noalias !44 store i8 0, ptr %8, align 8, !tbaa !6, !noalias !44 - %29 = getelementptr inbounds nuw i8, ptr %4, i64 56 - store i8 0, ptr %29, align 8, !tbaa !58, !noalias !44 - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %26, 0 + %33 = getelementptr inbounds nuw i8, ptr %4, i64 56 + store i8 0, ptr %33, align 8, !tbaa !58, !noalias !44 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %30, 0 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, label %.lr.ph.i.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i, %41 - %.07.i.i.i.i.i.i.i.i = phi i64 [ %42, %41 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i ] - %30 = getelementptr inbounds nuw i8, ptr %27, i64 %.07.i.i.i.i.i.i.i.i - %31 = load i8, ptr %30, align 1, !tbaa !6, !noalias !44 - %32 = icmp eq i8 %31, 37 - br i1 %32, label %33, label %41 - -33: ; preds = %.lr.ph.i.i.i.i.i.i.i.i - %34 = add nuw i64 %.07.i.i.i.i.i.i.i.i, 1 - %35 = icmp ult i64 %34, %26 - br i1 %35, label %36, label %41 - -36: ; preds = %33 - %37 = getelementptr inbounds nuw i8, ptr %27, i64 %34 - %38 = load i8, ptr %37, align 1, !tbaa !6, !noalias !44 - %39 = icmp eq i8 %38, 122 - br i1 %39, label %40, label %41 - -40: ; preds = %36 - store i8 1, ptr %29, align 8, !tbaa !58, !noalias !44 +.lr.ph.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i, %45 + %.07.i.i.i.i.i.i.i.i = phi i64 [ %46, %45 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i ] + %34 = getelementptr inbounds nuw i8, ptr %31, i64 %.07.i.i.i.i.i.i.i.i + %35 = load i8, ptr %34, align 1, !tbaa !6, !noalias !44 + %36 = icmp eq i8 %35, 37 + br i1 %36, label %37, label %45 + +37: ; preds = %.lr.ph.i.i.i.i.i.i.i.i + %38 = add nuw i64 %.07.i.i.i.i.i.i.i.i, 1 + %39 = icmp ult i64 %38, %30 + br i1 %39, label %40, label %45 + +40: ; preds = %37 + %41 = getelementptr inbounds nuw i8, ptr %31, i64 %38 + %42 = load i8, ptr %41, align 1, !tbaa !6, !noalias !44 + %43 = icmp eq i8 %42, 122 + br i1 %43, label %44, label %45 + +44: ; preds = %40 + store i8 1, ptr %33, align 8, !tbaa !58, !noalias !44 br label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit -41: ; preds = %36, %33, %.lr.ph.i.i.i.i.i.i.i.i - %.1.i.i.i.i.i.i.i.i = phi i64 [ %.07.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %34, %36 ], [ %34, %33 ] - %42 = add i64 %.1.i.i.i.i.i.i.i.i, 1 - %43 = icmp ult i64 %42, %26 - br i1 %43, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, !llvm.loop !61 +45: ; preds = %40, %37, %.lr.ph.i.i.i.i.i.i.i.i + %.1.i.i.i.i.i.i.i.i = phi i64 [ %.07.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %38, %40 ], [ %38, %37 ] + %46 = add i64 %.1.i.i.i.i.i.i.i.i, 1 + %47 = icmp ult i64 %46, %30 + br i1 %47, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, !llvm.loop !61 -_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; preds = %41, %40, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i +_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; preds = %45, %44, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !44 store ptr %7, ptr %0, align 8, !tbaa !62 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %4, ptr %44, align 8, !tbaa !67 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %4, ptr %48, align 8, !tbaa !67 ret void } diff --git a/bench/boost/optimized/cmd_test.ll b/bench/boost/optimized/cmd_test.ll index 46ac7a3e5bf..7a1541cf0d8 100644 --- a/bench/boost/optimized/cmd_test.ll +++ b/bench/boost/optimized/cmd_test.ll @@ -137391,111 +137391,119 @@ define linkonce_odr hidden void @_ZNK5boost9iterators6detail20iterator_facade_ba store ptr %31, ptr %6, align 8, !tbaa !92, !alias.scope !2567 %32 = load ptr, ptr %5, align 8, !tbaa !4, !noalias !2567 %33 = icmp eq ptr %32, %14 - %34 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i, i64 1 - %35 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %36 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %37 = getelementptr inbounds nuw i8, ptr %6, i64 40 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 16 br i1 %33, label %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread, label %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit _ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread: ; preds = %26 - %39 = load i64, ptr %15, align 8, !tbaa !11, !noalias !2567 - %40 = add nuw nsw i64 %39, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %14, i64 %40, i1 false) - store i64 %39, ptr %35, align 8, !tbaa !11, !alias.scope !2567 - store ptr %34, ptr %36, align 8, !tbaa !1492, !alias.scope !2567 - store ptr %30, ptr %37, align 8, !tbaa !1494, !alias.scope !2567 + %34 = load i64, ptr %15, align 8, !tbaa !11, !noalias !2567 + %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) %31, ptr noundef nonnull align 8 dereferenceable(1) %14, i64 %36, i1 false) + %37 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i, i64 1 + %38 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %34, ptr %38, align 8, !tbaa !11, !alias.scope !2567 + %39 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store ptr %37, ptr %39, align 8, !tbaa !1492, !alias.scope !2567 + %40 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store ptr %30, ptr %40, align 8, !tbaa !1494, !alias.scope !2567 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !2567 call void @llvm.experimental.noalias.scope.decl(metadata !2570) - store ptr %38, ptr %0, align 8, !tbaa !92, !alias.scope !2570 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %41, ptr %0, align 8, !tbaa !92, !alias.scope !2570 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !2570 - store i64 %39, ptr %3, align 8, !tbaa !93, !noalias !2570 + store i64 %34, ptr %3, align 8, !tbaa !93, !noalias !2570 br label %._crit_edge.i.i.i.i.i.i2 _ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit: ; preds = %26 store ptr %32, ptr %6, align 8, !tbaa !4, !alias.scope !2567 - %41 = load i64, ptr %14, align 8, !tbaa !24, !noalias !2567 - store i64 %41, ptr %31, align 8, !tbaa !24, !alias.scope !2567 + %42 = load i64, ptr %14, align 8, !tbaa !24, !noalias !2567 + store i64 %42, ptr %31, align 8, !tbaa !24, !alias.scope !2567 %.pre.i.i.i.i = load i64, ptr %15, align 8, !tbaa !11, !noalias !2567 - store i64 %.pre.i.i.i.i, ptr %35, align 8, !tbaa !11, !alias.scope !2567 - store ptr %34, ptr %36, align 8, !tbaa !1492, !alias.scope !2567 - store ptr %30, ptr %37, align 8, !tbaa !1494, !alias.scope !2567 + %43 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i, i64 1 + %44 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %.pre.i.i.i.i, ptr %44, align 8, !tbaa !11, !alias.scope !2567 + %45 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store ptr %43, ptr %45, align 8, !tbaa !1492, !alias.scope !2567 + %46 = getelementptr inbounds nuw i8, ptr %6, i64 40 + store ptr %30, ptr %46, align 8, !tbaa !1494, !alias.scope !2567 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !2567 call void @llvm.experimental.noalias.scope.decl(metadata !2573) - store ptr %38, ptr %0, align 8, !tbaa !92, !alias.scope !2573 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %47, ptr %0, align 8, !tbaa !92, !alias.scope !2573 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !2573 store i64 %.pre.i.i.i.i, ptr %3, align 8, !tbaa !93, !noalias !2573 - %42 = icmp ugt i64 %.pre.i.i.i.i, 15 - br i1 %42, label %.noexc.i.i.i.i.i3, label %._crit_edge.i.i.i.i.i.i2 + %48 = icmp ugt i64 %.pre.i.i.i.i, 15 + br i1 %48, label %.noexc.i.i.i.i.i3, label %._crit_edge.i.i.i.i.i.i2 .noexc.i.i.i.i.i3: ; preds = %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit - %43 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - to label %.noexc unwind label %61 + %49 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + to label %.noexc unwind label %68 .noexc: ; preds = %.noexc.i.i.i.i.i3 - store ptr %43, ptr %0, align 8, !tbaa !4, !alias.scope !2573 - %44 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 - store i64 %44, ptr %38, align 8, !tbaa !24, !alias.scope !2573 + store ptr %49, ptr %0, align 8, !tbaa !4, !alias.scope !2573 + %50 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 + store i64 %50, ptr %47, align 8, !tbaa !24, !alias.scope !2573 br label %._crit_edge.i.i.i.i.i.i2 ._crit_edge.i.i.i.i.i.i2: ; preds = %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread, %.noexc, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit - %45 = phi i64 [ %.pre.i.i.i.i, %.noexc ], [ %.pre.i.i.i.i, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %39, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] - %46 = phi ptr [ %32, %.noexc ], [ %32, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %31, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] - %47 = phi ptr [ %43, %.noexc ], [ %38, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %38, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] - switch i64 %45, label %50 [ - i64 1, label %48 - i64 0, label %51 + %51 = phi ptr [ %45, %.noexc ], [ %45, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %39, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + %52 = phi i64 [ %.pre.i.i.i.i, %.noexc ], [ %.pre.i.i.i.i, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %34, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + %53 = phi ptr [ %32, %.noexc ], [ %32, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %31, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + %54 = phi ptr [ %49, %.noexc ], [ %47, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %41, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + switch i64 %52, label %57 [ + i64 1, label %55 + i64 0, label %58 ] -48: ; preds = %._crit_edge.i.i.i.i.i.i2 - %49 = load i8, ptr %46, align 1, !tbaa !24 - store i8 %49, ptr %47, align 1, !tbaa !24 - br label %51 +55: ; preds = %._crit_edge.i.i.i.i.i.i2 + %56 = load i8, ptr %53, align 1, !tbaa !24 + store i8 %56, ptr %54, align 1, !tbaa !24 + br label %58 -50: ; preds = %._crit_edge.i.i.i.i.i.i2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %47, ptr align 1 %46, i64 %45, i1 false) - br label %51 +57: ; preds = %._crit_edge.i.i.i.i.i.i2 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %54, ptr align 1 %53, i64 %52, i1 false) + br label %58 -51: ; preds = %50, %48, %._crit_edge.i.i.i.i.i.i2 - %52 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %52, ptr %53, align 8, !tbaa !11, !alias.scope !2573 - %54 = load ptr, ptr %0, align 8, !tbaa !4, !alias.scope !2573 - %55 = getelementptr inbounds nuw i8, ptr %54, i64 %52 - store i8 0, ptr %55, align 1, !tbaa !24 +58: ; preds = %57, %55, %._crit_edge.i.i.i.i.i.i2 + %59 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %59, ptr %60, align 8, !tbaa !11, !alias.scope !2573 + %61 = load ptr, ptr %0, align 8, !tbaa !4, !alias.scope !2573 + %62 = getelementptr inbounds nuw i8, ptr %61, i64 %59 + store i8 0, ptr %62, align 1, !tbaa !24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !2573 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 8 dereferenceable(16) %36, i64 16, i1 false) - %57 = load ptr, ptr %6, align 8, !tbaa !4 - %58 = icmp eq ptr %57, %31 - br i1 %58, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %51 - %59 = load i64, ptr %31, align 8, !tbaa !24 - %60 = add i64 %59, 1 - call void @_ZdlPvm(ptr noundef %57, i64 noundef %60) #61 + %63 = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %51, i64 16, i1 false) + %64 = load ptr, ptr %6, align 8, !tbaa !4 + %65 = icmp eq ptr %64, %31 + br i1 %65, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %58 + %66 = load i64, ptr %31, align 8, !tbaa !24 + %67 = add i64 %66, 1 + call void @_ZdlPvm(ptr noundef %64, i64 noundef %67) #61 br label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit -_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit: ; preds = %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i +_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit: ; preds = %58, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %6) ret void -61: ; preds = %.noexc.i.i.i.i.i3 - %62 = landingpad { ptr, i32 } +68: ; preds = %.noexc.i.i.i.i.i3 + %69 = landingpad { ptr, i32 } cleanup - %63 = load ptr, ptr %6, align 8, !tbaa !4 - %64 = icmp eq ptr %63, %31 - br i1 %64, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 + %70 = load ptr, ptr %6, align 8, !tbaa !4 + %71 = icmp eq ptr %70, %31 + br i1 %71, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4: ; preds = %61 - %65 = load i64, ptr %31, align 8, !tbaa !24 - %66 = add i64 %65, 1 - call void @_ZdlPvm(ptr noundef %63, i64 noundef %66) #61 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4: ; preds = %68 + %72 = load i64, ptr %31, align 8, !tbaa !24 + %73 = add i64 %72, 1 + call void @_ZdlPvm(ptr noundef %70, i64 noundef %73) #61 br label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6 -_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6: ; preds = %61, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 +_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6: ; preds = %68, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 call void @llvm.lifetime.end.p0(ptr nonnull %6) - resume { ptr, i32 } %62 + resume { ptr, i32 } %69 } ; Function Attrs: inlinehint mustprogress uwtable diff --git a/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll b/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll index 60bede4fe40..cc542540317 100644 --- a/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll +++ b/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll @@ -6977,39 +6977,41 @@ define internal fastcc void @"_ZN4core3ptr168drop_in_place$LT$alloc..boxed..Box$ tail call void @llvm.assume(i1 %1) %2 = load ptr, ptr %.8.val, align 8, !invariant.load !28, !nonnull !28 invoke void %2(ptr noundef nonnull align 1 %.0.val) - to label %11 unwind label %3 + to label %12 unwind label %3 3: ; preds = %0 %4 = landingpad { ptr, i32 } cleanup - %5 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %6 = load i64, ptr %5, align 8, !range !923, !invariant.load !28 - %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %8 = load i64, ptr %7, align 8, !range !924, !invariant.load !28 - %9 = icmp ult i64 %8, -9223372036854775807 - tail call void @llvm.assume(i1 %9) - %10 = icmp eq i64 %6, 0 - br i1 %10, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i" + %5 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %5) + %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %7 = load i64, ptr %6, align 8, !range !923, !invariant.load !28 + %8 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %9 = load i64, ptr %8, align 8, !range !924, !invariant.load !28 + %10 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %10) + %11 = icmp eq i64 %7, 0 + br i1 %11, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i": ; preds = %3 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %6, i64 noundef range(i64 0, -9223372036854775807) %8) #24 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %7, i64 noundef range(i64 0, -9223372036854775807) %9) #24 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit" -11: ; preds = %0 - %12 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %13 = load i64, ptr %12, align 8, !range !923, !invariant.load !28 - %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %15 = load i64, ptr %14, align 8, !range !924, !invariant.load !28 - %16 = icmp ult i64 %15, -9223372036854775807 - tail call void @llvm.assume(i1 %16) - %17 = icmp eq i64 %13, 0 - br i1 %17, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4": ; preds = %11 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %13, i64 noundef range(i64 0, -9223372036854775807) %15) #24 +12: ; preds = %0 + %13 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %14 = load i64, ptr %13, align 8, !range !923, !invariant.load !28 + %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %16 = load i64, ptr %15, align 8, !range !924, !invariant.load !28 + %17 = icmp ult i64 %16, -9223372036854775807 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %14, 0 + br i1 %18, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4": ; preds = %12 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) %16) #24 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5": ; preds = %11, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5": ; preds = %12, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" ret void "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i", %3 diff --git a/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll b/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll index 8c0ee016eda..92a2c100e6c 100644 --- a/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll +++ b/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll @@ -32,7 +32,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr42drop_in_place$LT$uu_nl..NumberingStyle$GT$17hd8c2d2a9d41db602E"(i64 %.0.val, ptr %.8.val) unnamed_addr #0 personality ptr @rust_eh_personality { %1 = icmp eq i64 %.0.val, 3 - br i1 %1, label %2, label %17 + br i1 %1, label %2, label %18 2: ; preds = %0 invoke void @"_ZN4core3ptr55drop_in_place$LT$regex_automata..meta..regex..Regex$GT$17he4df1cc7465925b6E.llvm.11599604617220858543"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.8.val) @@ -75,14 +75,16 @@ define internal fastcc void @"_ZN4core3ptr42drop_in_place$LT$uu_nl..NumberingSty 16: ; preds = %14, %3 %eh.lpad-body.i = phi { ptr, i32 } [ %15, %14 ], [ %4, %3 ] + %17 = icmp ne ptr %.8.val, null + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %.8.val, i64 noundef 32, i64 noundef 8) #12 resume { ptr, i32 } %eh.lpad-body.i "_ZN4core3ptr73drop_in_place$LT$alloc..boxed..Box$LT$regex..regex..string..Regex$GT$$GT$17h649688b096eaab77E.exit": ; preds = %6, %.noexc.i tail call void @__rust_dealloc(ptr noundef nonnull %.8.val, i64 noundef 32, i64 noundef 8) #12 - br label %17 + br label %18 -17: ; preds = %0, %"_ZN4core3ptr73drop_in_place$LT$alloc..boxed..Box$LT$regex..regex..string..Regex$GT$$GT$17h649688b096eaab77E.exit" +18: ; preds = %0, %"_ZN4core3ptr73drop_in_place$LT$alloc..boxed..Box$LT$regex..regex..string..Regex$GT$$GT$17h649688b096eaab77E.exit" ret void } diff --git a/bench/darktable/optimized/Cr2Decoder.ll b/bench/darktable/optimized/Cr2Decoder.ll index 0e166e68ebe..b7cc9a1a572 100644 --- a/bench/darktable/optimized/Cr2Decoder.ll +++ b/bench/darktable/optimized/Cr2Decoder.ll @@ -2231,7 +2231,7 @@ define hidden noundef zeroext i1 @_ZNK8rawspeed10Cr2Decoder20decodeCanonColorDat %3 = load ptr, ptr %2, align 8, !tbaa !16 %4 = tail call noundef ptr @_ZNK8rawspeed7TiffIFD17getEntryRecursiveENS_7TiffTagE(ptr noundef nonnull align 8 dereferenceable(104) %3, i16 noundef zeroext 16385) #30 %.not = icmp eq ptr %4, null - br i1 %.not, label %88, label %5 + br i1 %.not, label %90, label %5 5: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.083) @@ -2458,54 +2458,58 @@ _ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_O %67 = getelementptr inbounds nuw i8, ptr %0, i64 104 %68 = load i32, ptr %67, align 8, !tbaa !64 %69 = icmp slt i32 %68, 14 - br i1 %69, label %76, label %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 + br i1 %69, label %77, label %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 70: ; preds = %_ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_OS6_.exit, %70 %indvars.iv = phi i64 [ 0, %_ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_OS6_.exit ], [ %indvars.iv.next, %70 ] - %71 = add nuw i64 %indvars.iv, %.sroa.046.0.i.ph + %71 = add nuw nsw i64 %indvars.iv, %.sroa.046.0.i.ph %72 = trunc i64 %71 to i32 %73 = tail call noundef zeroext i16 @_ZNK8rawspeed9TiffEntry6getU16Ej(ptr noundef nonnull align 8 dereferenceable(48) %4, i32 noundef %72) %74 = zext i16 %73 to i32 - %75 = getelementptr inbounds nuw i32, ptr %56, i64 %indvars.iv - store i32 %74, ptr %75, align 4, !tbaa !113 + %75 = icmp samesign ult i64 %indvars.iv, 4 + tail call void @llvm.assume(i1 %75) + %76 = getelementptr inbounds nuw i32, ptr %56, i64 %indvars.iv + store i32 %74, ptr %76, align 4, !tbaa !113 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %.not32 = icmp eq i64 %indvars.iv.next, 4 br i1 %.not32, label %66, label %70, !llvm.loop !232 -76: ; preds = %66 - %77 = sub nsw i32 14, %68 +77: ; preds = %66 + %78 = sub nsw i32 14, %68 %.not.i = icmp ne i8 %23, 4 - %78 = and i64 %.sroa.083.4..sroa.083.4..sroa.083.4..sroa.083.4..sroa.681.0.copyload, 8589934591 - %79 = icmp ne i64 %78, 8589934589 - %80 = select i1 %.not.i, i1 true, i1 %79 - br i1 %80, label %.preheader, label %.loopexit - -.preheader: ; preds = %76, %.preheader - %indvars.iv116 = phi i64 [ %indvars.iv.next117, %.preheader ], [ 0, %76 ] - %81 = getelementptr inbounds nuw i32, ptr %56, i64 %indvars.iv116 - %82 = load i32, ptr %81, align 4, !tbaa !113 - %83 = ashr i32 %82, %77 - store i32 %83, ptr %81, align 4, !tbaa !113 + %79 = and i64 %.sroa.083.4..sroa.083.4..sroa.083.4..sroa.083.4..sroa.681.0.copyload, 8589934591 + %80 = icmp ne i64 %79, 8589934589 + %81 = select i1 %.not.i, i1 true, i1 %80 + br i1 %81, label %.preheader, label %.loopexit + +.preheader: ; preds = %77, %.preheader + %indvars.iv116 = phi i64 [ %indvars.iv.next117, %.preheader ], [ 0, %77 ] + %82 = icmp samesign ult i64 %indvars.iv116, 4 + tail call void @llvm.assume(i1 %82) + %83 = getelementptr inbounds nuw i32, ptr %56, i64 %indvars.iv116 + %84 = load i32, ptr %83, align 4, !tbaa !113 + %85 = ashr i32 %84, %78 + store i32 %85, ptr %83, align 4, !tbaa !113 %indvars.iv.next117 = add nuw nsw i64 %indvars.iv116, 1 %.not33 = icmp eq i64 %indvars.iv.next117, 4 br i1 %.not33, label %.loopexit, label %.preheader, !llvm.loop !233 -.loopexit: ; preds = %.preheader, %76 - %84 = load ptr, ptr %27, align 8, !tbaa !33 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 160 - %86 = load i32, ptr %85, align 4, !tbaa !113 - %87 = ashr i32 %86, %77 - %.sroa.0.0.insert.ext.i = zext i32 %87 to i64 +.loopexit: ; preds = %.preheader, %77 + %86 = load ptr, ptr %27, align 8, !tbaa !33 + %87 = getelementptr inbounds nuw i8, ptr %86, i64 160 + %88 = load i32, ptr %87, align 4, !tbaa !113 + %89 = ashr i32 %88, %78 + %.sroa.0.0.insert.ext.i = zext i32 %89 to i64 %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.0.insert.ext.i, 4294967296 - store i64 %.sroa.0.0.insert.insert.i, ptr %85, align 4 + store i64 %.sroa.0.0.insert.insert.i, ptr %87, align 4 br label %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 _ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107: ; preds = %.loopexit, %66, %40, %40, %switch.lookup, %switch.lookup, %switch.lookup, %_ZN8rawspeed12_GLOBAL__N_121deduceColorDataFormatEPKNS_9TiffEntryE.exit %.1 = phi i1 [ false, %_ZN8rawspeed12_GLOBAL__N_121deduceColorDataFormatEPKNS_9TiffEntryE.exit ], [ true, %66 ], [ true, %.loopexit ], [ false, %40 ], [ false, %40 ], [ false, %switch.lookup ], [ false, %switch.lookup ], [ false, %switch.lookup ] call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.083) - br label %88 + br label %90 -88: ; preds = %1, %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 +90: ; preds = %1, %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 %.028 = phi i1 [ %.1, %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 ], [ false, %1 ] ret i1 %.028 } diff --git a/bench/darktable/optimized/NakedDecoder.ll b/bench/darktable/optimized/NakedDecoder.ll index 7713aa42d1e..f26cd053b3c 100644 --- a/bench/darktable/optimized/NakedDecoder.ll +++ b/bench/darktable/optimized/NakedDecoder.ll @@ -235,7 +235,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i55 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57: ; preds = %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i55 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %172 + br label %173 53: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %54 = landingpad { ptr, i32 } @@ -252,7 +252,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %172 + br label %173 ._crit_edge.i.i61: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit54 call void @llvm.lifetime.start.p0(ptr nonnull %6) @@ -336,7 +336,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i83 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85: ; preds = %85, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i83 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %172 + br label %173 91: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 %92 = landingpad { ptr, i32 } @@ -353,7 +353,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i86 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88: ; preds = %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i86 call void @llvm.lifetime.end.p0(ptr nonnull %7) - br label %172 + br label %173 ._crit_edge.i.i89: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit82 call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -414,7 +414,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i10 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102: ; preds = %118, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i100 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %172 + br label %173 ._crit_edge.i.i103: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit99 call void @llvm.lifetime.start.p0(ptr nonnull %9) @@ -548,15 +548,20 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i12 167: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit116, %165 %168 = getelementptr inbounds nuw i8, ptr %9, i64 16 %169 = icmp eq ptr %.pre143, %168 - br i1 %169, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126 + br i1 %169, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i127, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i127: ; preds = %167 + %170 = icmp ult i64 %139, 16 + call void @llvm.assume(i1 %170) + br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126: ; preds = %167 - %170 = load i64, ptr %168, align 8, !tbaa !49 - %171 = add i64 %170, 1 - call void @_ZdlPvm(ptr noundef %.pre143, i64 noundef %171) #23 + %171 = load i64, ptr %168, align 8, !tbaa !49 + %172 = add i64 %171, 1 + call void @_ZdlPvm(ptr noundef %.pre143, i64 noundef %172) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128: ; preds = %167, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i127, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) @@ -566,9 +571,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128: ; preds = %16 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125: ; preds = %158, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i123, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit122 %.pn37 = phi { ptr, i32 } [ %149, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit122 ], [ %159, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i123 ], [ %159, %158 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) - br label %172 + br label %173 -172: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 +173: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 %.pn37.pn = phi { ptr, i32 } [ %.pn37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125 ], [ %119, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102 ], [ %92, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88 ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85 ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 ], [ %48, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/darktable/optimized/RawImageDataFloat.ll b/bench/darktable/optimized/RawImageDataFloat.ll index 75b9ab68dc7..09b3311a6ef 100644 --- a/bench/darktable/optimized/RawImageDataFloat.ll +++ b/bench/darktable/optimized/RawImageDataFloat.ll @@ -392,36 +392,38 @@ _ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_O %111 = fmul float %110, 6.553500e+04 %112 = fdiv float %111, %103 %113 = fptosi float %112 to i32 - %114 = getelementptr inbounds nuw i32, ptr %.ptr238.ptr.ptr, i64 %indvars.iv227 - store i32 %113, ptr %114, align 4, !tbaa !106 + %114 = icmp samesign ult i64 %indvars.iv227, 4 + tail call void @llvm.assume(i1 %114) + %115 = getelementptr inbounds nuw i32, ptr %.ptr238.ptr.ptr, i64 %indvars.iv227 + store i32 %113, ptr %115, align 4, !tbaa !106 %indvars.iv.next228 = add nuw nsw i64 %indvars.iv227, 1 %exitcond230.not = icmp eq i64 %indvars.iv.next228, 4 br i1 %exitcond230.not, label %104, label %108, !llvm.loop !113 .lr.ph205: ; preds = %.lr.ph201 - %115 = add nsw i32 %118, 2 - %116 = ashr i32 %115, 2 - br label %119 + %116 = add nsw i32 %119, 2 + %117 = ashr i32 %116, 2 + br label %120 .lr.ph201: ; preds = %104, %.lr.ph201 %.066199.idx = phi i64 [ %.066199.add, %.lr.ph201 ], [ 100, %104 ] - %.068198 = phi i32 [ %118, %.lr.ph201 ], [ 0, %104 ] + %.068198 = phi i32 [ %119, %.lr.ph201 ], [ 0, %104 ] %.066199.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %.066199.idx - %117 = load i32, ptr %.066199.ptr, align 4, !tbaa !106 - %118 = add nsw i32 %117, %.068198 + %118 = load i32, ptr %.066199.ptr, align 4, !tbaa !106 + %119 = add nsw i32 %118, %.068198 %.066199.add = add nuw nsw i64 %.066199.idx, 4 %.not75 = icmp eq i64 %.066199.add, 116 br i1 %.not75, label %.lr.ph205, label %.lr.ph201 -119: ; preds = %.lr.ph205, %119 - %.063204.idx = phi i64 [ 100, %.lr.ph205 ], [ %.063204.add, %119 ] +120: ; preds = %.lr.ph205, %120 + %.063204.idx = phi i64 [ 100, %.lr.ph205 ], [ %.063204.add, %120 ] %.063204.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %.063204.idx - store i32 %116, ptr %.063204.ptr, align 4, !tbaa !106 + store i32 %117, ptr %.063204.ptr, align 4, !tbaa !106 %.063204.add = add nuw nsw i64 %.063204.idx, 4 %.not76 = icmp eq i64 %.063204.add, 116 - br i1 %.not76, label %.loopexit, label %119 + br i1 %.not76, label %.loopexit, label %120 -.loopexit: ; preds = %119, %100, %104 +.loopexit: ; preds = %120, %100, %104 call void @llvm.lifetime.end.p0(ptr nonnull %1) ret void } diff --git a/bench/delta-rs/optimized/145iz0hplas008bu.ll b/bench/delta-rs/optimized/145iz0hplas008bu.ll index aa1638b4fce..37933a5e333 100644 --- a/bench/delta-rs/optimized/145iz0hplas008bu.ll +++ b/bench/delta-rs/optimized/145iz0hplas008bu.ll @@ -1054,38 +1054,40 @@ _ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.4766490671745005879. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.4766490671745005879(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #4 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 - -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 - -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #18 - br label %11 - -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #18 - br label %11 +11: ; preds = %4 + br i1 %3, label %20, label %15 + +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 + +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #18 + br label %12 + +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #18 + br label %12 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/delta-rs/optimized/2die4ejnk5ryh9i0.ll b/bench/delta-rs/optimized/2die4ejnk5ryh9i0.ll index 31375d64233..f352984aae8 100644 --- a/bench/delta-rs/optimized/2die4ejnk5ryh9i0.ll +++ b/bench/delta-rs/optimized/2die4ejnk5ryh9i0.ll @@ -254,6 +254,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h6c9846cae15a80ebE.llvm.48 %20 = load ptr, ptr %0, align 8, !nonnull !14, !noundef !14 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #22 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.4830332605056220995.exit" @@ -377,7 +379,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h743ec043996bee99E.llvm.4830332 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -396,6 +398,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h743ec043996bee99E.llvm.4830332 %47 = load ptr, ptr %0, align 8, !alias.scope !66, !nonnull !14, !noundef !14 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #22, !noalias !66 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h38d6e14cbbeac660E.llvm.4830332605056220995.exit diff --git a/bench/diesel-rs/optimized/462o5qgxgzqa9ugn.ll b/bench/diesel-rs/optimized/462o5qgxgzqa9ugn.ll index edd0ee6dc02..ccbd748c1d6 100644 --- a/bench/diesel-rs/optimized/462o5qgxgzqa9ugn.ll +++ b/bench/diesel-rs/optimized/462o5qgxgzqa9ugn.ll @@ -561,6 +561,8 @@ define internal fastcc void @"_ZN4core3ptr62drop_in_place$LT$alloc..boxed..Box$L 21: ; preds = %18, %6 %eh.lpad-body = phi { ptr, i32 } [ %19, %18 ], [ %7, %6 ] + %22 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %22) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef 40, i64 noundef 8) #15 resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/duckdb/optimized/arena.ll b/bench/duckdb/optimized/arena.ll index 8c9b99fe58b..a3dc891f8bf 100644 --- a/bench/duckdb/optimized/arena.ll +++ b/bench/duckdb/optimized/arena.ll @@ -883,7 +883,7 @@ san_large_extent_decide_guard.exit: ; preds = %sz_size2index.exit, %58 = getelementptr inbounds nuw i8, ptr %1, i64 10664 %59 = call ptr @duckdb_je_pa_alloc(ptr noundef %0, ptr noundef nonnull %58, i64 noundef %32, i64 noundef %3, i1 noundef zeroext false, i32 noundef %.0.i, i1 noundef zeroext %57, i1 noundef zeroext %.0.i37, ptr noundef nonnull %7) #18 %60 = icmp eq ptr %59, null - br i1 %60, label %94, label %61 + br i1 %60, label %95, label %61 61: ; preds = %san_large_extent_decide_guard.exit call fastcc void @arena_large_malloc_stats_update(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %2) @@ -896,60 +896,62 @@ san_large_extent_decide_guard.exit: ; preds = %sz_size2index.exit, 64: ; preds = %61 %65 = add nuw nsw i64 %3, 63 %66 = and i64 %65, 8128 - %67 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 range(i64 1, -2305843009213693952) %66, i1 true) - %68 = xor i64 %67, 63 + %67 = icmp ne i64 %66, 0 + call void @llvm.assume(i1 %67) + %68 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 range(i64 1, -2305843009213693952) %66, i1 true) + %69 = xor i64 %68, 63 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %69 = icmp eq ptr %0, null - br i1 %69, label %75, label %70 - -70: ; preds = %64 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %72 = load i64, ptr %71, align 8, !tbaa !10 - %73 = mul i64 %72, 6364136223846793005 - %74 = add i64 %73, 1442695040888963407 - store i64 %74, ptr %71, align 8, !tbaa !10 - br label %79 - -75: ; preds = %64 - %76 = ptrtoint ptr %6 to i64 - %77 = mul i64 %76, 6364136223846793005 - %78 = add i64 %77, 1442695040888963407 - br label %79 - -79: ; preds = %75, %70 - %.sink.i38 = phi i64 [ %78, %75 ], [ %74, %70 ] - %80 = sub nuw nsw i64 115, %67 - %81 = lshr i64 %.sink.i38, %80 - %82 = shl nuw nsw i64 %81, %68 - %83 = getelementptr inbounds nuw i8, ptr %59, i64 8 - %84 = load ptr, ptr %83, align 8, !tbaa !145 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 %82 - store ptr %85, ptr %83, align 8, !tbaa !145 + %70 = icmp eq ptr %0, null + br i1 %70, label %76, label %71 + +71: ; preds = %64 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %73 = load i64, ptr %72, align 8, !tbaa !10 + %74 = mul i64 %73, 6364136223846793005 + %75 = add i64 %74, 1442695040888963407 + store i64 %75, ptr %72, align 8, !tbaa !10 + br label %80 + +76: ; preds = %64 + %77 = ptrtoint ptr %6 to i64 + %78 = mul i64 %77, 6364136223846793005 + %79 = add i64 %78, 1442695040888963407 + br label %80 + +80: ; preds = %76, %71 + %.sink.i38 = phi i64 [ %79, %76 ], [ %75, %71 ] + %81 = sub nuw nsw i64 115, %68 + %82 = lshr i64 %.sink.i38, %81 + %83 = shl nuw nsw i64 %82, %69 + %84 = getelementptr inbounds nuw i8, ptr %59, i64 8 + %85 = load ptr, ptr %84, align 8, !tbaa !145 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 %83 + store ptr %86, ptr %84, align 8, !tbaa !145 call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %arena_cache_oblivious_randomize.exit -arena_cache_oblivious_randomize.exit: ; preds = %79, %61 +arena_cache_oblivious_randomize.exit: ; preds = %80, %61 %.not = xor i1 %4, true %or.cond = or i1 %57, %.not - br i1 %or.cond, label %94, label %86 + br i1 %or.cond, label %95, label %87 -86: ; preds = %arena_cache_oblivious_randomize.exit +87: ; preds = %arena_cache_oblivious_randomize.exit %.val = load i64, ptr %59, align 8, !tbaa !147 - %87 = and i64 %.val, 32768 - %.not40 = icmp eq i64 %87, 0 - br i1 %.not40, label %88, label %94 - -88: ; preds = %86 - %89 = getelementptr i8, ptr %59, i64 8 - %.val34 = load ptr, ptr %89, align 8, !tbaa !145 - %90 = lshr i64 %.val, 20 - %91 = and i64 %90, 255 - %92 = getelementptr inbounds nuw i64, ptr @duckdb_je_sz_index2size_tab, i64 %91 - %93 = load i64, ptr %92, align 8, !tbaa !10 - call void @llvm.memset.p0.i64(ptr align 1 %.val34, i8 0, i64 %93, i1 false) - br label %94 + %88 = and i64 %.val, 32768 + %.not40 = icmp eq i64 %88, 0 + br i1 %.not40, label %89, label %95 + +89: ; preds = %87 + %90 = getelementptr i8, ptr %59, i64 8 + %.val34 = load ptr, ptr %90, align 8, !tbaa !145 + %91 = lshr i64 %.val, 20 + %92 = and i64 %91, 255 + %93 = getelementptr inbounds nuw i64, ptr @duckdb_je_sz_index2size_tab, i64 %92 + %94 = load i64, ptr %93, align 8, !tbaa !10 + call void @llvm.memset.p0.i64(ptr align 1 %.val34, i8 0, i64 %94, i1 false) + br label %95 -94: ; preds = %arena_cache_oblivious_randomize.exit, %86, %88, %san_large_extent_decide_guard.exit +95: ; preds = %arena_cache_oblivious_randomize.exit, %87, %89, %san_large_extent_decide_guard.exit call void @llvm.lifetime.end.p0(ptr nonnull %7) ret ptr %59 } diff --git a/bench/faiss/optimized/gtest-all.ll b/bench/faiss/optimized/gtest-all.ll index f3add2e5760..3142ce798ea 100644 --- a/bench/faiss/optimized/gtest-all.ll +++ b/bench/faiss/optimized/gtest-all.ll @@ -57112,160 +57112,165 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i %24 = load ptr, ptr %8, align 8, !tbaa !22, !noalias !1393 %25 = icmp eq ptr %24, %9 %26 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %28 = getelementptr inbounds nuw i8, ptr %5, i64 16 - br i1 %25, label %.thread, label %31 + br i1 %25, label %.thread, label %32 .thread: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %29 = load i64, ptr %21, align 8, !tbaa !25, !noalias !1393 - %30 = add nuw nsw i64 %29, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %30, i1 false), !noalias !1393 + %27 = load i64, ptr %21, align 8, !tbaa !25, !noalias !1393 + %28 = add nuw nsw i64 %27, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %28, i1 false), !noalias !1393 store i64 0, ptr %21, align 8, !tbaa !25, !noalias !1393 store i8 0, ptr %9, align 8, !tbaa !27, !noalias !1393 store ptr %26, ptr %7, align 8, !tbaa !19, !alias.scope !1393 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %26, ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, i64 %30, i1 false) - store i64 %29, ptr %27, align 8, !tbaa !25, !alias.scope !1393 + %29 = icmp ult i64 %27, 16 + call void @llvm.assume(i1 %29) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %26, ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, i64 %28, i1 false) + %30 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i64 %27, ptr %30, align 8, !tbaa !25, !alias.scope !1393 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - store ptr %28, ptr %5, align 8, !tbaa !19 + %31 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr %31, ptr %5, align 8, !tbaa !19 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %29, ptr %4, align 8, !tbaa !26 + store i64 %27, ptr %4, align 8, !tbaa !26 br label %._crit_edge.i.i.i.i.i -31: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %32 = load i64, ptr %9, align 8, !tbaa !27, !noalias !1393 +32: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit + %33 = load i64, ptr %9, align 8, !tbaa !27, !noalias !1393 %.pre.i = load i64, ptr %21, align 8, !tbaa !25, !noalias !1393 store ptr %9, ptr %8, align 8, !tbaa !22, !noalias !1393 store i64 0, ptr %21, align 8, !tbaa !25, !noalias !1393 store i8 0, ptr %9, align 8, !tbaa !27, !noalias !1393 store ptr %24, ptr %7, align 8, !tbaa !22, !alias.scope !1393 - store i64 %32, ptr %26, align 8, !tbaa !27, !alias.scope !1393 - store i64 %.pre.i, ptr %27, align 8, !tbaa !25, !alias.scope !1393 + store i64 %33, ptr %26, align 8, !tbaa !27, !alias.scope !1393 + %34 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i64 %.pre.i, ptr %34, align 8, !tbaa !25, !alias.scope !1393 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - store ptr %28, ptr %5, align 8, !tbaa !19 + %35 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr %35, ptr %5, align 8, !tbaa !19 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 %.pre.i, ptr %4, align 8, !tbaa !26 - %33 = icmp ugt i64 %.pre.i, 15 - br i1 %33, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i + %36 = icmp ugt i64 %.pre.i, 15 + br i1 %36, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i -.noexc.i.i.i.i: ; preds = %31 - %34 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - to label %.noexc unwind label %67 +.noexc.i.i.i.i: ; preds = %32 + %37 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + to label %.noexc unwind label %71 .noexc: ; preds = %.noexc.i.i.i.i - store ptr %34, ptr %5, align 8, !tbaa !22 - %35 = load i64, ptr %4, align 8, !tbaa !26 - store i64 %35, ptr %28, align 8, !tbaa !27 + store ptr %37, ptr %5, align 8, !tbaa !22 + %38 = load i64, ptr %4, align 8, !tbaa !26 + store i64 %38, ptr %35, align 8, !tbaa !27 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %31 - %36 = phi ptr [ %24, %.noexc ], [ %24, %31 ], [ %26, %.thread ] - %37 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %31 ], [ %29, %.thread ] - %38 = phi ptr [ %34, %.noexc ], [ %28, %31 ], [ %28, %.thread ] - switch i64 %37, label %41 [ - i64 1, label %39 +._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %32 + %39 = phi ptr [ %24, %.noexc ], [ %24, %32 ], [ %26, %.thread ] + %40 = phi ptr [ %35, %.noexc ], [ %35, %32 ], [ %31, %.thread ] + %41 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %32 ], [ %27, %.thread ] + %42 = phi ptr [ %37, %.noexc ], [ %35, %32 ], [ %31, %.thread ] + switch i64 %41, label %45 [ + i64 1, label %43 i64 0, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i ] -39: ; preds = %._crit_edge.i.i.i.i.i - %40 = load i8, ptr %36, align 1, !tbaa !27 - store i8 %40, ptr %38, align 1, !tbaa !27 +43: ; preds = %._crit_edge.i.i.i.i.i + %44 = load i8, ptr %39, align 1, !tbaa !27 + store i8 %44, ptr %42, align 1, !tbaa !27 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -41: ; preds = %._crit_edge.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %38, ptr align 1 %36, i64 %37, i1 false) +45: ; preds = %._crit_edge.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %39, i64 %41, i1 false) br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %41, %39, %._crit_edge.i.i.i.i.i - %42 = load i64, ptr %4, align 8, !tbaa !26 - %43 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %42, ptr %43, align 8, !tbaa !25 - %44 = load ptr, ptr %5, align 8, !tbaa !22 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 %42 - store i8 0, ptr %45, align 1, !tbaa !27 +_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %45, %43, %._crit_edge.i.i.i.i.i + %46 = load i64, ptr %4, align 8, !tbaa !26 + %47 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %46, ptr %47, align 8, !tbaa !25 + %48 = load ptr, ptr %5, align 8, !tbaa !22 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 %46 + store i8 0, ptr %49, align 1, !tbaa !27 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %46 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) - to label %47 unwind label %52 + %50 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) + to label %51 unwind label %56 -47: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %48 = load ptr, ptr %5, align 8, !tbaa !22 - %49 = icmp eq ptr %48, %28 - br i1 %49, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +51: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %52 = load ptr, ptr %5, align 8, !tbaa !22 + %53 = icmp eq ptr %52, %40 + br i1 %53, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %47 - %50 = load i64, ptr %28, align 8, !tbaa !27 - %51 = add i64 %50, 1 - call void @_ZdlPvm(ptr noundef %48, i64 noundef %51) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %51 + %54 = load i64, ptr %40, align 8, !tbaa !27 + %55 = add i64 %54, 1 + call void @_ZdlPvm(ptr noundef %52, i64 noundef %55) #60 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i -52: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %53 = landingpad { ptr, i32 } +56: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %57 = landingpad { ptr, i32 } cleanup - %54 = load ptr, ptr %5, align 8, !tbaa !22 - %55 = icmp eq ptr %54, %28 - br i1 %55, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i + %58 = load ptr, ptr %5, align 8, !tbaa !22 + %59 = icmp eq ptr %58, %40 + br i1 %59, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %52 - %56 = load i64, ptr %28, align 8, !tbaa !27 - %57 = add i64 %56, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %57) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %56 + %60 = load i64, ptr %40, align 8, !tbaa !27 + %61 = add i64 %60, 1 + call void @_ZdlPvm(ptr noundef %58, i64 noundef %61) #60 br label %.body -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %58 = load ptr, ptr %7, align 8, !tbaa !22 - %59 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %60 = icmp eq ptr %58, %59 - br i1 %60, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %62 = load ptr, ptr %7, align 8, !tbaa !22 + %63 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %64 = icmp eq ptr %62, %63 + br i1 %64, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i - %61 = load i64, ptr %59, align 8, !tbaa !27 - %62 = add i64 %61, 1 - call void @_ZdlPvm(ptr noundef %58, i64 noundef %62) #60 + %65 = load i64, ptr %63, align 8, !tbaa !27 + %66 = add i64 %65, 1 + call void @_ZdlPvm(ptr noundef %62, i64 noundef %66) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %63 = load ptr, ptr %8, align 8, !tbaa !22 - %64 = icmp eq ptr %63, %9 - br i1 %64, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %67 = load ptr, ptr %8, align 8, !tbaa !22 + %68 = icmp eq ptr %67, %9 + br i1 %68, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit - %65 = load i64, ptr %9, align 8, !tbaa !27 - %66 = add i64 %65, 1 - call void @_ZdlPvm(ptr noundef %63, i64 noundef %66) #60 + %69 = load i64, ptr %9, align 8, !tbaa !27 + %70 = add i64 %69, 1 + call void @_ZdlPvm(ptr noundef %67, i64 noundef %70) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - ret ptr %46 + ret ptr %50 -67: ; preds = %.noexc.i.i.i.i - %68 = landingpad { ptr, i32 } +71: ; preds = %.noexc.i.i.i.i + %72 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %67 - %eh.lpad-body = phi { ptr, i32 } [ %68, %67 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %53, %52 ] - %69 = load ptr, ptr %7, align 8, !tbaa !22 - %70 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %71 = icmp eq ptr %69, %70 - br i1 %71, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 +.body: ; preds = %56, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %71 + %eh.lpad-body = phi { ptr, i32 } [ %72, %71 ], [ %57, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %57, %56 ] + %73 = load ptr, ptr %7, align 8, !tbaa !22 + %74 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %75 = icmp eq ptr %73, %74 + br i1 %75, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7: ; preds = %.body - %72 = load i64, ptr %70, align 8, !tbaa !27 - %73 = add i64 %72, 1 - call void @_ZdlPvm(ptr noundef %69, i64 noundef %73) #60 + %76 = load i64, ptr %74, align 8, !tbaa !27 + %77 = add i64 %76, 1 + call void @_ZdlPvm(ptr noundef %73, i64 noundef %77) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9: ; preds = %.body, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 - %74 = load ptr, ptr %8, align 8, !tbaa !22 - %75 = icmp eq ptr %74, %9 - br i1 %75, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 + %78 = load ptr, ptr %8, align 8, !tbaa !22 + %79 = icmp eq ptr %78, %9 + br i1 %79, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 - %76 = load i64, ptr %9, align 8, !tbaa !27 - %77 = add i64 %76, 1 - call void @_ZdlPvm(ptr noundef %74, i64 noundef %77) #60 + %80 = load i64, ptr %9, align 8, !tbaa !27 + %81 = add i64 %80, 1 + call void @_ZdlPvm(ptr noundef %78, i64 noundef %81) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12 _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 diff --git a/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll b/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll index a44ea744d1f..e5ed646481e 100644 --- a/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll +++ b/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll @@ -37210,18 +37210,21 @@ define hidden void @"_ZN4core3ptr97drop_in_place$LT$alloc..sync..Weak$LT$dyn$u20 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !729, !invariant.load !3 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit", label %20 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit", label %22 -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #34 +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #34 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit": ; preds = %1, %4, %8, %22 ret void } diff --git a/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll b/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll index bf8328910b8..1699e88f87e 100644 --- a/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll +++ b/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll @@ -31325,11 +31325,11 @@ define { i32, i32 } @_ZN4fish3fds13wopen_cloexec17hce368140301abc68E(ptr noalias %11 = extractvalue { i32, i32 } %10, 0 %12 = extractvalue { i32, i32 } %10, 1 %13 = trunc i32 %11 to i1 - br i1 %13, label %14, label %22 + br i1 %13, label %14, label %23 14: ; preds = %.noexc %.not.i = icmp eq i32 %12, 4 - br i1 %.not.i, label %15, label %22 + br i1 %.not.i, label %15, label %23 15: ; preds = %14 %16 = invoke noundef i32 @_ZN4fish6signal19signal_check_cancel17h11924faa90d83cb1E() @@ -31337,36 +31337,38 @@ define { i32, i32 } @_ZN4fish3fds13wopen_cloexec17hce368140301abc68E(ptr noalias .noexc4: ; preds = %15 %17 = icmp eq i32 %16, 0 - br i1 %17, label %9, label %22 + br i1 %17, label %9, label %23 18: ; preds = %15, %9 %19 = landingpad { ptr, i32 } cleanup + %20 = icmp ne ptr %6, null + tail call void @llvm.assume(i1 %20) store i8 0, ptr %6, align 1 - %20 = icmp eq i64 %7, 0 - br i1 %20, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %21 + %21 = icmp eq i64 %7, 0 + br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %22 -21: ; preds = %18 +22: ; preds = %18 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %6, i64 noundef range(i64 1, 0) %7, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit" -22: ; preds = %.noexc4, %14, %.noexc +23: ; preds = %.noexc4, %14, %.noexc %.lcssa.i = phi i32 [ %12, %.noexc ], [ 4, %.noexc4 ], [ %12, %14 ] %.sroa.0.0.i = phi i32 [ 0, %.noexc ], [ 1, %.noexc4 ], [ 1, %14 ] store i8 0, ptr %6, align 1 - %23 = icmp eq i64 %7, 0 - br i1 %23, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %24 + %24 = icmp eq i64 %7, 0 + br i1 %24, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %25 -24: ; preds = %22 +25: ; preds = %23 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %6, i64 noundef range(i64 1, 0) %7, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5" -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %22, %24 - %25 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0.i, 0 - %26 = insertvalue { i32, i32 } %25, i32 %.lcssa.i, 1 - ret { i32, i32 } %26 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %23, %25 + %26 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0.i, 0 + %27 = insertvalue { i32, i32 } %26, i32 %.lcssa.i, 1 + ret { i32, i32 } %27 -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %21, %18 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %22, %18 resume { ptr, i32 } %19 } @@ -31417,7 +31419,7 @@ define { i32, i32 } @_ZN4fish3fds9wopen_dir17hde3f8548a82b06b7E(ptr noalias noun %12 = trunc i32 %10 to i1 %.not.i.i = icmp eq i32 %11, 4 %or.cond.i = select i1 %12, i1 %.not.i.i, i1 false - br i1 %or.cond.i, label %13, label %20 + br i1 %or.cond.i, label %13, label %21 13: ; preds = %.noexc %14 = invoke noundef i32 @_ZN4fish6signal19signal_check_cancel17h11924faa90d83cb1E() @@ -31425,36 +31427,38 @@ define { i32, i32 } @_ZN4fish3fds9wopen_dir17hde3f8548a82b06b7E(ptr noalias noun .noexc4: ; preds = %13 %15 = icmp eq i32 %14, 0 - br i1 %15, label %8, label %20 + br i1 %15, label %8, label %21 16: ; preds = %13, %8 %17 = landingpad { ptr, i32 } cleanup + %18 = icmp ne ptr %5, null + tail call void @llvm.assume(i1 %18) store i8 0, ptr %5, align 1 - %18 = icmp eq i64 %6, 0 - br i1 %18, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %19 + %19 = icmp eq i64 %6, 0 + br i1 %19, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %20 -19: ; preds = %16 +20: ; preds = %16 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %5, i64 noundef range(i64 1, 0) %6, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit" -20: ; preds = %.noexc4, %.noexc +21: ; preds = %.noexc4, %.noexc %.lcssa.i.i = phi i32 [ %11, %.noexc ], [ 4, %.noexc4 ] store i8 0, ptr %5, align 1 - %21 = icmp eq i64 %6, 0 - br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %22 + %22 = icmp eq i64 %6, 0 + br i1 %22, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %23 -22: ; preds = %20 +23: ; preds = %21 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %5, i64 noundef range(i64 1, 0) %6, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5" -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %20, %22 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %21, %23 %..i = and i32 %10, 1 - %23 = insertvalue { i32, i32 } poison, i32 %..i, 0 - %24 = insertvalue { i32, i32 } %23, i32 %.lcssa.i.i, 1 - ret { i32, i32 } %24 + %24 = insertvalue { i32, i32 } poison, i32 %..i, 0 + %25 = insertvalue { i32, i32 } %24, i32 %.lcssa.i.i, 1 + ret { i32, i32 } %25 -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %19, %16 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %20, %16 resume { ptr, i32 } %17 } diff --git a/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll b/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll index 378d1992c81..4f18abb4056 100644 --- a/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll +++ b/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll @@ -11865,7 +11865,7 @@ default.unreachable: ; preds = %570 "_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread": ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$7is_done17hd188279779f3efd4E.exit.i", %609, %626 store i64 3, ptr %0, align 8 - br label %678 + br label %679 "_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7": ; preds = %639 call void @llvm.lifetime.end.p0(ptr nonnull %76), !noalias !277 @@ -11874,73 +11874,75 @@ default.unreachable: ; preds = %570 .thread: ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread184", %610, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$hyper..upgrade..Pending$GT$$GT$17h7ac20e489142b26cE.exit.i", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread23" %.sroa.14.31017 = phi ptr [ %641, %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread23" ], [ %661, %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread184" ], [ %.sroa.6.0.i.ph.ph.i, %610 ], [ %652, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$hyper..upgrade..Pending$GT$$GT$17h7ac20e489142b26cE.exit.i" ] + %664 = icmp ne ptr %.sroa.14.31017, null + call void @llvm.assume(i1 %664) call void @llvm.lifetime.start.p0(ptr nonnull %7) store ptr %.sroa.14.31017, ptr %7, align 8, !noalias !430 %.sroa.4.0..sroa_idx.i1 = getelementptr inbounds nuw i8, ptr %1, i64 528 %.sroa.4.0.copyload.i = load i8, ptr %.sroa.4.0..sroa_idx.i1, align 8, !noalias !430 store i8 3, ptr %.sroa.4.0..sroa_idx.i1, align 8, !noalias !430 %.not.i = icmp eq i8 %.sroa.4.0.copyload.i, 3 - br i1 %.not.i, label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit", label %664 + br i1 %.not.i, label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit", label %665 -664: ; preds = %.thread +665: ; preds = %.thread %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 529 - %665 = getelementptr inbounds nuw i8, ptr %1, i64 496 + %666 = getelementptr inbounds nuw i8, ptr %1, i64 496 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !430 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %665, i64 32, i1 false), !noalias !430 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %666, i64 32, i1 false), !noalias !430 %.sroa.4.0..sroa_idx1.i = getelementptr inbounds nuw i8, ptr %6, i64 32 store i8 %.sroa.4.0.copyload.i, ptr %.sroa.4.0..sroa_idx1.i, align 8, !noalias !430 %.sroa.5.0..sroa_idx3.i = getelementptr inbounds nuw i8, ptr %6, i64 33 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.5.0..sroa_idx3.i, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.5.0..sroa_idx.i, i64 7, i1 false), !noalias !430 - %666 = invoke noundef nonnull align 8 ptr @_ZN5hyper5error5Error8new_body17he651352ae74bd830E(ptr noalias noundef nonnull readonly align 1 @anon.b34713dfcbdcf2a8bb4377ca3df15ef5.124, i64 noundef 16) - to label %669 unwind label %667, !noalias !434 + %667 = invoke noundef nonnull align 8 ptr @_ZN5hyper5error5Error8new_body17he651352ae74bd830E(ptr noalias noundef nonnull readonly align 1 @anon.b34713dfcbdcf2a8bb4377ca3df15ef5.124, i64 noundef 16) + to label %670 unwind label %668, !noalias !434 -667: ; preds = %669, %664 - %668 = landingpad { ptr, i32 } +668: ; preds = %670, %665 + %669 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$hyper..body..body..Sender$GT$17h2676c14a10e89bb8E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %6) #23 - to label %.thread.i unwind label %676, !noalias !434 + to label %.thread.i unwind label %677, !noalias !434 -669: ; preds = %664 - invoke void @_ZN5hyper4body4body6Sender10send_error17h453918a8a746d91dE(ptr noalias noundef nonnull align 8 dereferenceable(40) %6, ptr noalias noundef nonnull align 8 %666) - to label %670 unwind label %667, !noalias !434 +670: ; preds = %665 + invoke void @_ZN5hyper4body4body6Sender10send_error17h453918a8a746d91dE(ptr noalias noundef nonnull align 8 dereferenceable(40) %6, ptr noalias noundef nonnull align 8 %667) + to label %671 unwind label %668, !noalias !434 -670: ; preds = %669 +671: ; preds = %670 invoke void @"_ZN4core3ptr46drop_in_place$LT$hyper..body..body..Sender$GT$17h2676c14a10e89bb8E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %6) - to label %672 unwind label %.thread8.i, !noalias !434 + to label %673 unwind label %.thread8.i, !noalias !434 -.thread8.i: ; preds = %670 - %671 = landingpad { ptr, i32 } +.thread8.i: ; preds = %671 + %672 = landingpad { ptr, i32 } cleanup br label %.thread.i -672: ; preds = %670 +673: ; preds = %671 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !430 br label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit" -"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit": ; preds = %672, %.thread - %673 = getelementptr inbounds nuw i8, ptr %1, i64 536 +"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit": ; preds = %673, %.thread + %674 = getelementptr inbounds nuw i8, ptr %1, i64 536 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !430 - %674 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr %.sroa.14.31017, ptr %674, align 8, !noalias !430 + %675 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr %.sroa.14.31017, ptr %675, align 8, !noalias !430 store i64 3, ptr %5, align 8, !noalias !430 - %675 = call fastcc noundef align 8 ptr @"_ZN126_$LT$hyper..proto..h1..dispatch..Server$LT$S$C$hyper..body..body..Body$GT$$u20$as$u20$hyper..proto..h1..dispatch..Dispatch$GT$8recv_msg17hc2155c49930f6d03E"(ptr noalias noundef align 8 dereferenceable(24) %673, ptr noalias noundef align 8 captures(none) dereferenceable(272) %5), !noalias !434 + %676 = call fastcc noundef align 8 ptr @"_ZN126_$LT$hyper..proto..h1..dispatch..Server$LT$S$C$hyper..body..body..Body$GT$$u20$as$u20$hyper..proto..h1..dispatch..Dispatch$GT$8recv_msg17hc2155c49930f6d03E"(ptr noalias noundef align 8 dereferenceable(24) %674, ptr noalias noundef align 8 captures(none) dereferenceable(272) %5), !noalias !434 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !430 - %.not10.i = icmp eq ptr %675, null - %spec.select = select i1 %.not10.i, ptr %.sroa.14.31017, ptr %675 + %.not10.i = icmp eq ptr %676, null + %spec.select = select i1 %.not10.i, ptr %.sroa.14.31017, ptr %676 %spec.select26 = select i1 %.not10.i, i64 0, i64 2 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20" -676: ; preds = %.thread.i, %667 - %677 = landingpad { ptr, i32 } +677: ; preds = %.thread.i, %668 + %678 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !434 unreachable -.thread.i: ; preds = %.thread8.i, %667 - %.pn7.i = phi { ptr, i32 } [ %671, %.thread8.i ], [ %668, %667 ] +.thread.i: ; preds = %.thread8.i, %668 + %.pn7.i = phi { ptr, i32 } [ %672, %.thread8.i ], [ %669, %668 ] invoke void @"_ZN4core3ptr40drop_in_place$LT$hyper..error..Error$GT$17hbeade3f06316e71fE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %7) #23 - to label %common.resume unwind label %676, !noalias !434 + to label %common.resume unwind label %677, !noalias !434 "_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$hyper..upgrade..Pending$GT$$GT$17h7ac20e489142b26cE.exit.i", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit" %.sroa.03.0 = phi i64 [ %spec.select26, %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit" ], [ 1, %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7" ], [ 0, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$hyper..upgrade..Pending$GT$$GT$17h7ac20e489142b26cE.exit.i" ] @@ -11948,9 +11950,9 @@ default.unreachable: ; preds = %570 store i64 %.sroa.03.0, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 - br label %678 + br label %679 -678: ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread" +679: ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread" ret void } diff --git a/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll b/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll index 5f85f10c1a1..d0ad1d46e42 100644 --- a/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll +++ b/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll @@ -2972,101 +2972,103 @@ define hidden noundef ptr @_ZN17tikv_jemalloc_ctl11stats_print11stats_print17he4 } ; Function Attrs: nounwind nonlazybind uwtable -define internal void @_ZN17tikv_jemalloc_ctl11stats_print8callback17h839c6a6807fe774aE(ptr noundef captures(none) %0, ptr noundef %1) unnamed_addr #2 personality ptr @rust_eh_personality { +define internal void @_ZN17tikv_jemalloc_ctl11stats_print8callback17h839c6a6807fe774aE(ptr noundef captures(address_is_null) %0, ptr noundef %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8, !noundef !4 %.not = icmp eq ptr %4, null - br i1 %.not, label %5, label %44 + br i1 %.not, label %5, label %45 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %7 = load ptr, ptr %6, align 8, !align !49, !noundef !4 %.not11 = icmp eq ptr %7, null - br i1 %.not11, label %8, label %44 + br i1 %.not11, label %8, label %45 8: ; preds = %5 %9 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #29 + %10 = icmp ne ptr %0, null + tail call void @llvm.assume(i1 %10) %.val.i.i.i.i = load ptr, ptr %0, align 8, !noalias !197, !nonnull !4, !align !6, !noundef !4 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17he55b90e851844799E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.val.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %9, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ce0e6684e58da1538182cd2ee1a0154e.80) - to label %44 unwind label %10 + to label %45 unwind label %11 -10: ; preds = %8 - %11 = landingpad { ptr, i32 } +11: ; preds = %8 + %12 = landingpad { ptr, i32 } catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - %13 = invoke { ptr, ptr } @_ZN3std9panicking3try7cleanup17h6438e71f073086c0E(ptr noundef %12) - to label %16 unwind label %14 + %13 = extractvalue { ptr, i32 } %12, 0 + %14 = invoke { ptr, ptr } @_ZN3std9panicking3try7cleanup17h6438e71f073086c0E(ptr noundef %13) + to label %17 unwind label %15 -14: ; preds = %10 - %15 = landingpad { ptr, i32 } +15: ; preds = %11 + %16 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking19panic_cannot_unwind17h82fcc9c695da0defE() #28 unreachable -16: ; preds = %10 - %17 = extractvalue { ptr, ptr } %13, 0 - %18 = extractvalue { ptr, ptr } %13, 1 - %19 = icmp ne ptr %17, null - tail call void @llvm.assume(i1 %19) +17: ; preds = %11 + %18 = extractvalue { ptr, ptr } %14, 0 + %19 = extractvalue { ptr, ptr } %14, 1 + %20 = icmp ne ptr %18, null + tail call void @llvm.assume(i1 %20) %.val = load ptr, ptr %6, align 8, !align !49, !noundef !4 - %20 = getelementptr i8, ptr %0, i64 24 - %.val13 = load ptr, ptr %20, align 8 - %21 = icmp eq ptr %.val, null - br i1 %21, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %22 - -22: ; preds = %16 - %23 = icmp ne ptr %.val13, null - tail call void @llvm.assume(i1 %23) - %24 = load ptr, ptr %.val13, align 8, !invariant.load !4 - %.not.i.i = icmp eq ptr %24, null - br i1 %.not.i.i, label %26, label %25 + %21 = getelementptr i8, ptr %0, i64 24 + %.val13 = load ptr, ptr %21, align 8 + %22 = icmp eq ptr %.val, null + br i1 %22, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %23 + +23: ; preds = %17 + %24 = icmp ne ptr %.val13, null + tail call void @llvm.assume(i1 %24) + %25 = load ptr, ptr %.val13, align 8, !invariant.load !4 + %.not.i.i = icmp eq ptr %25, null + br i1 %.not.i.i, label %27, label %26 + +26: ; preds = %23 + invoke void %25(ptr noundef nonnull %.val) + to label %27 unwind label %35 + +27: ; preds = %26, %23 + %28 = getelementptr inbounds nuw i8, ptr %.val13, i64 8 + %29 = load i64, ptr %28, align 8, !range !201, !invariant.load !4 + %30 = getelementptr inbounds nuw i8, ptr %.val13, i64 16 + %31 = load i64, ptr %30, align 8, !range !61, !invariant.load !4 + %32 = icmp ult i64 %31, -9223372036854775807 + tail call void @llvm.assume(i1 %32) + %33 = icmp eq i64 %29, 0 + br i1 %33, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %34 -25: ; preds = %22 - invoke void %24(ptr noundef nonnull %.val) - to label %26 unwind label %34 - -26: ; preds = %25, %22 - %27 = getelementptr inbounds nuw i8, ptr %.val13, i64 8 - %28 = load i64, ptr %27, align 8, !range !201, !invariant.load !4 - %29 = getelementptr inbounds nuw i8, ptr %.val13, i64 16 - %30 = load i64, ptr %29, align 8, !range !61, !invariant.load !4 - %31 = icmp ult i64 %30, -9223372036854775807 - tail call void @llvm.assume(i1 %31) - %32 = icmp eq i64 %28, 0 - br i1 %32, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %33 - -33: ; preds = %26 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %28, i64 noundef range(i64 1, -9223372036854775807) %30) #29 +34: ; preds = %27 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %29, i64 noundef range(i64 1, -9223372036854775807) %31) #29 br label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit" -34: ; preds = %25 - %35 = landingpad { ptr, i32 } +35: ; preds = %26 + %36 = landingpad { ptr, i32 } cleanup - %36 = getelementptr inbounds nuw i8, ptr %.val13, i64 8 - %37 = load i64, ptr %36, align 8, !range !201, !invariant.load !4 - %38 = getelementptr inbounds nuw i8, ptr %.val13, i64 16 - %39 = load i64, ptr %38, align 8, !range !61, !invariant.load !4 - %40 = icmp ult i64 %39, -9223372036854775807 - tail call void @llvm.assume(i1 %40) - %41 = icmp eq i64 %37, 0 - br i1 %41, label %43, label %42 - -42: ; preds = %34 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %37, i64 noundef range(i64 1, -9223372036854775807) %39) #29 - br label %43 + %37 = getelementptr inbounds nuw i8, ptr %.val13, i64 8 + %38 = load i64, ptr %37, align 8, !range !201, !invariant.load !4 + %39 = getelementptr inbounds nuw i8, ptr %.val13, i64 16 + %40 = load i64, ptr %39, align 8, !range !61, !invariant.load !4 + %41 = icmp ult i64 %40, -9223372036854775807 + tail call void @llvm.assume(i1 %41) + %42 = icmp eq i64 %38, 0 + br i1 %42, label %44, label %43 + +43: ; preds = %35 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %38, i64 noundef range(i64 1, -9223372036854775807) %40) #29 + br label %44 -43: ; preds = %42, %34 - store ptr %17, ptr %6, align 8 - store ptr %18, ptr %20, align 8 +44: ; preds = %43, %35 + store ptr %18, ptr %6, align 8 + store ptr %19, ptr %21, align 8 tail call void @_ZN4core9panicking19panic_cannot_unwind17h82fcc9c695da0defE() #28 unreachable -"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit": ; preds = %33, %26, %16 - store ptr %17, ptr %6, align 8 - store ptr %18, ptr %20, align 8 - br label %44 +"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit": ; preds = %34, %27, %17 + store ptr %18, ptr %6, align 8 + store ptr %19, ptr %21, align 8 + br label %45 -44: ; preds = %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", %8, %2, %5 +45: ; preds = %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", %8, %2, %5 ret void } diff --git a/bench/glslang/optimized/ParseHelper.ll b/bench/glslang/optimized/ParseHelper.ll index 3f20e91b903..8279067ff58 100644 --- a/bench/glslang/optimized/ParseHelper.ll +++ b/bench/glslang/optimized/ParseHelper.ll @@ -69747,61 +69747,63 @@ define linkonce_odr void @_ZNK7glslang5TType17appendMangledNameERNSt7__cxx1112ba br i1 %9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i: ; preds = %2 - %10 = icmp ugt i64 %5, 15 - br i1 %10, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit + %10 = icmp ult i64 %4, 16 + tail call void @llvm.assume(i1 %10) + %11 = icmp samesign ugt i64 %5, 15 + br i1 %11, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i: ; preds = %2 - %11 = load i64, ptr %8, align 8 - %12 = icmp ugt i64 %5, %11 - br i1 %12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit + %12 = load i64, ptr %8, align 8 + %13 = icmp ugt i64 %5, %12 + br i1 %13, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i - %13 = phi i64 [ %11, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] - %14 = icmp slt i64 %5, 0 - br i1 %14, label %15, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i + %14 = phi i64 [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] + %15 = icmp slt i64 %5, 0 + br i1 %15, label %16, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i -15: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i +16: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1003) #24 unreachable _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i - %16 = shl nuw i64 %13, 1 - %17 = icmp ult i64 %5, %16 - %spec.store.select.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %16, i64 9223372036854775807) - %.0.i.i.i = select i1 %17, i64 %spec.store.select.i.i.i.i, i64 %5 - %18 = add nuw i64 %.0.i.i.i, 1 - %19 = load ptr, ptr %1, align 8 - %20 = tail call noundef ptr @_ZN7glslang14TPoolAllocator8allocateEm(ptr noundef nonnull align 8 dereferenceable(96) %19, i64 noundef %18) #23 + %17 = shl nuw i64 %14, 1 + %18 = icmp ult i64 %5, %17 + %spec.store.select.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %17, i64 9223372036854775807) + %.0.i.i.i = select i1 %18, i64 %spec.store.select.i.i.i.i, i64 %5 + %19 = add nuw i64 %.0.i.i.i, 1 + %20 = load ptr, ptr %1, align 8 + %21 = tail call noundef ptr @_ZN7glslang14TPoolAllocator8allocateEm(ptr noundef nonnull align 8 dereferenceable(96) %20, i64 noundef %19) #23 %.not.i.i.i = icmp eq i64 %4, 0 - br i1 %.not.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i, label %21 + br i1 %.not.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i, label %22 -21: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i - %22 = load ptr, ptr %6, align 8 +22: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i + %23 = load ptr, ptr %6, align 8 %cond30.i.i.i = icmp eq i64 %4, 1 - br i1 %cond30.i.i.i, label %23, label %25 + br i1 %cond30.i.i.i, label %24, label %26 -23: ; preds = %21 - %24 = load i8, ptr %22, align 1 - store i8 %24, ptr %20, align 1 +24: ; preds = %22 + %25 = load i8, ptr %23, align 1 + store i8 %25, ptr %21, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i -25: ; preds = %21 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %20, ptr align 1 %22, i64 %4, i1 false) +26: ; preds = %22 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %21, ptr align 1 %23, i64 %4, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i: ; preds = %25, %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i - store ptr %20, ptr %6, align 8 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i: ; preds = %26, %24, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i + store ptr %21, ptr %6, align 8 store i64 %.0.i.i.i, ptr %8, align 8 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i - %26 = phi ptr [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i ], [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] - %27 = getelementptr inbounds i8, ptr %26, i64 %4 - store i8 59, ptr %27, align 1 + %27 = phi ptr [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ %21, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i ], [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] + %28 = getelementptr inbounds i8, ptr %27, i64 %4 + store i8 59, ptr %28, align 1 store i64 %5, ptr %3, align 8 - %28 = load ptr, ptr %6, align 8 - %29 = getelementptr inbounds i8, ptr %28, i64 %5 - store i8 0, ptr %29, align 1 + %29 = load ptr, ptr %6, align 8 + %30 = getelementptr inbounds i8, ptr %29, i64 %5 + store i8 0, ptr %30, align 1 ret void } diff --git a/bench/hermes/optimized/MicrosoftDemangle.ll b/bench/hermes/optimized/MicrosoftDemangle.ll index dfc4b556f96..4ec52950c44 100644 --- a/bench/hermes/optimized/MicrosoftDemangle.ll +++ b/bench/hermes/optimized/MicrosoftDemangle.ll @@ -3477,9 +3477,11 @@ if.end15.i527: ; preds = %for.body.preheader. %Ret6.034.i524684 = phi i64 [ %add24.i538, %if.end15.i527 ], [ 0, %for.body.preheader.i518 ] %i.035.i523683 = phi i64 [ %inc.i539, %if.end15.i527 ], [ 0, %for.body.preheader.i518 ] %110 = add nsw i8 %109, -65 + %or.cond.i528 = icmp ult i8 %110, 16 + tail call void @llvm.assume(i1 %or.cond.i528) %shl.i536 = shl i64 %Ret6.034.i524684, 4 %sub22.i537 = zext nneg i8 %110 to i64 - %add24.i538 = add nuw nsw i64 %shl.i536, %sub22.i537 + %add24.i538 = or disjoint i64 %shl.i536, %sub22.i537 %inc.i539 = add nuw i64 %i.035.i523683, 1 %exitcond.not.i540 = icmp ne i64 %inc.i539, %sub.ptr.sub.i.i521 tail call void @llvm.assume(i1 %exitcond.not.i540) diff --git a/bench/hermes/optimized/SemanticValidator.ll b/bench/hermes/optimized/SemanticValidator.ll index 6e7c247afed..372ae421a6a 100644 --- a/bench/hermes/optimized/SemanticValidator.ll +++ b/bench/hermes/optimized/SemanticValidator.ll @@ -5368,7 +5368,9 @@ if.then8: ; preds = %_ZN4llvh12DenseMapB if.end24.i: ; preds = %if.then8 %cmp.i.i.i.i.i.i.i23.i = icmp eq i32 %10, 26 + %tobool2629.i = icmp ne ptr %9, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i23.i) + tail call void @llvm.assume(i1 %tobool2629.i) br label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit _ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit: ; preds = %if.then8, %if.end24.i @@ -5412,22 +5414,22 @@ if.then23: ; preds = %if.else20 %kind_.i.i.i.i.i.i.i.i.i51 = getelementptr inbounds nuw i8, ptr %17, i64 16 %18 = load i32, ptr %kind_.i.i.i.i.i.i.i.i.i51, align 8 switch i32 %18, label %if.end24.i58 [ - i32 25, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 21, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 20, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 15, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 14, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 13, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 12, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 - i32 11, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 25, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 21, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 20, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 15, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 14, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 13, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 12, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 11, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 ] if.end24.i58: ; preds = %if.then23 %cmp.i.i.i.i.i.i.i23.i59 = icmp eq i32 %18, 26 tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i23.i59) - br label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + br label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 -_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60: ; preds = %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.end24.i58 +_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61: ; preds = %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.end24.i58 %retval.0.i57 = getelementptr inbounds nuw i8, ptr %17, i64 48 %19 = load i32, ptr %retval.0.i57, align 4 %add.ptr29 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 48 @@ -5437,19 +5439,19 @@ _ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13Statement if.else30: ; preds = %if.else20 %sm_31 = getelementptr inbounds nuw i8, ptr %this, i64 8 %20 = load ptr, ptr %sm_31, align 8 - %sourceRange_.i61 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 24 - %retval.sroa.0.0.copyload.i62 = load ptr, ptr %sourceRange_.i61, align 8 - %retval.sroa.2.0.sourceRange_.sroa_idx.i63 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 32 - %retval.sroa.2.0.copyload.i64 = load ptr, ptr %retval.sroa.2.0.sourceRange_.sroa_idx.i63, align 8 - %LHSKind.i67 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 16 - %RHSKind.i68 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 17 - store i8 1, ptr %RHSKind.i68, align 1 + %sourceRange_.i62 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 24 + %retval.sroa.0.0.copyload.i63 = load ptr, ptr %sourceRange_.i62, align 8 + %retval.sroa.2.0.sourceRange_.sroa_idx.i64 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 32 + %retval.sroa.2.0.copyload.i65 = load ptr, ptr %retval.sroa.2.0.sourceRange_.sroa_idx.i64, align 8 + %LHSKind.i68 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 16 + %RHSKind.i69 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 17 + store i8 1, ptr %RHSKind.i69, align 1 store ptr @.str.34, ptr %ref.tmp34, align 8 - store i8 3, ptr %LHSKind.i67, align 8 - call void @_ZN6hermes18SourceErrorManager7messageENS0_8DiagKindEN4llvh7SMRangeERKNS2_5TwineENS_9SubsystemE(ptr noundef nonnull align 8 dereferenceable(464) %20, i32 noundef 0, ptr %retval.sroa.0.0.copyload.i62, ptr %retval.sroa.2.0.copyload.i64, ptr noundef nonnull align 8 dereferenceable(18) %ref.tmp34, i32 noundef 0) #21 + store i8 3, ptr %LHSKind.i68, align 8 + call void @_ZN6hermes18SourceErrorManager7messageENS0_8DiagKindEN4llvh7SMRangeERKNS2_5TwineENS_9SubsystemE(ptr noundef nonnull align 8 dereferenceable(464) %20, i32 noundef 0, ptr %retval.sroa.0.0.copyload.i63, ptr %retval.sroa.2.0.copyload.i65, ptr noundef nonnull align 8 dereferenceable(18) %ref.tmp34, i32 noundef 0) #21 br label %if.end36 -if.end36: ; preds = %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60, %if.else30, %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit, %_ZN4llvhplERKNS_5TwineES2_.exit48 +if.end36: ; preds = %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61, %if.else30, %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit, %_ZN4llvhplERKNS_5TwineES2_.exit48 %21 = load ptr, ptr %_label, align 8 %call.i = call { ptr, i8 } @_ZN6hermes6ESTree24RecursiveVisitorDispatchINS_3sem17SemanticValidatorELb1EE5visitERS3_PNS0_4NodeES7_(ptr noundef nonnull align 8 dereferenceable(168) %this, ptr noundef %21, ptr noundef %breakStmt) ret void @@ -5473,7 +5475,9 @@ entry: if.end24: ; preds = %entry %cmp.i.i.i.i.i.i.i23 = icmp eq i32 %0, 26 + %tobool2629 = icmp ne ptr %node, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i23) + tail call void @llvm.assume(i1 %tobool2629) br label %return return: ; preds = %entry, %if.end24 @@ -5557,9 +5561,9 @@ if.then8: ; preds = %_ZN4llvh12DenseMapB %10 = load i32, ptr %kind_.i.i.i.i.i.i.i, align 8 %11 = add i32 %10, -11 %12 = icmp ult i32 %11, 5 - br i1 %12, label %if.then11, label %_ZN4llvhplERKNS_5TwineES2_.exit50 + br i1 %12, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit, label %_ZN4llvhplERKNS_5TwineES2_.exit50 -if.then11: ; preds = %if.then8 +_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit: ; preds = %if.then8 %retval.0.i = getelementptr inbounds nuw i8, ptr %9, i64 48 %13 = load i32, ptr %retval.0.i, align 4 %add.ptr = getelementptr inbounds nuw i8, ptr %continueStmt, i64 48 @@ -5655,7 +5659,7 @@ if.else53: ; preds = %if.else43 call void @_ZN6hermes18SourceErrorManager7messageENS0_8DiagKindEN4llvh7SMRangeERKNS2_5TwineENS_9SubsystemE(ptr noundef nonnull align 8 dereferenceable(464) %20, i32 noundef 0, ptr %retval.sroa.0.0.copyload.i138, ptr %retval.sroa.2.0.copyload.i140, ptr noundef nonnull align 8 dereferenceable(18) %ref.tmp57, i32 noundef 0) #21 br label %if.end59 -if.end59: ; preds = %if.then46, %if.else53, %_ZN4llvhplERKNS_5TwineES2_.exit134, %_ZN4llvhplERKNS_5TwineES2_.exit50, %if.then11 +if.end59: ; preds = %if.then46, %if.else53, %_ZN4llvhplERKNS_5TwineES2_.exit134, %_ZN4llvhplERKNS_5TwineES2_.exit50, %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit %21 = load ptr, ptr %_label, align 8 %call.i = call { ptr, i8 } @_ZN6hermes6ESTree24RecursiveVisitorDispatchINS_3sem17SemanticValidatorELb1EE5visitERS3_PNS0_4NodeES7_(ptr noundef nonnull align 8 dereferenceable(168) %this, ptr noundef %21, ptr noundef %continueStmt) ret void diff --git a/bench/hermes/optimized/Utils.ll b/bench/hermes/optimized/Utils.ll index d27177fc42e..b84d8ce31ec 100644 --- a/bench/hermes/optimized/Utils.ll +++ b/bench/hermes/optimized/Utils.ll @@ -27,7 +27,9 @@ for.body: ; preds = %entry, %for.inc if.end: ; preds = %for.body %cmp.i.i.i.i.i.i.i.i = icmp eq i8 %3, 51 + %tobool9 = icmp ne ptr %2, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i) + tail call void @llvm.assume(i1 %tobool9) %call.i = tail call noundef ptr @_ZNK6hermes11Instruction10getOperandEj(ptr noundef nonnull align 8 dereferenceable(132) %2, i32 noundef 0) #3 %tobool7.not = icmp eq ptr %res.012, null %cmp8.not = icmp eq ptr %call.i, %res.012 @@ -72,7 +74,9 @@ for.body: ; preds = %entry, %for.inc if.end: ; preds = %for.body %cmp.i.i.i.i.i.i.i.i = icmp eq i8 %3, 50 + %tobool12 = icmp ne ptr %2, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i) + tail call void @llvm.assume(i1 %tobool12) %call.i = tail call noundef ptr @_ZNK6hermes11Instruction10getOperandEj(ptr noundef nonnull align 8 dereferenceable(132) %2, i32 noundef 1) #3 %4 = icmp eq ptr %call.i, null %sub.ptr.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 -16 @@ -150,7 +154,9 @@ for.body.i: ; preds = %if.then8, %for.inc. if.end.i: ; preds = %for.body.i %cmp.i.i.i.i.i.i.i.i.i = icmp eq i8 %10, 51 + %tobool9.i = icmp ne ptr %9, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i.i) + tail call void @llvm.assume(i1 %tobool9.i) %call.i.i = tail call noundef ptr @_ZNK6hermes11Instruction10getOperandEj(ptr noundef nonnull align 8 dereferenceable(132) %9, i32 noundef 0) #3 %tobool7.not.i = icmp eq ptr %res.012.i, null %cmp8.not.i = icmp eq ptr %call.i.i, %res.012.i @@ -330,7 +336,9 @@ for.body.i29: ; preds = %if.end17, %for.inc. if.end.i32: ; preds = %for.body.i29 %cmp.i.i.i.i.i.i.i.i.i = icmp eq i8 %19, 51 + %tobool9.i = icmp ne ptr %18, null tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i.i.i) + tail call void @llvm.assume(i1 %tobool9.i) %call.i.i33 = tail call noundef ptr @_ZNK6hermes11Instruction10getOperandEj(ptr noundef nonnull align 8 dereferenceable(132) %18, i32 noundef 0) #3 %tobool7.not.i = icmp eq ptr %res.012.i, null %cmp8.not.i34 = icmp eq ptr %call.i.i33, %res.012.i diff --git a/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll b/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll index 2c0ab5ff636..66a04d55203 100644 --- a/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll +++ b/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll @@ -606,7 +606,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !72 invoke void @"_ZN5alloc11collections5btree8navigate227_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$7next_kv17hdae230a576726a15E"(ptr noalias noundef nonnull sret({ ptr, [2 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %7) - to label %.noexc unwind label %29 + to label %.noexc unwind label %30 .noexc: ; preds = %1 %9 = load ptr, ptr %6, align 8, !noalias !72, !noundef !4 @@ -616,7 +616,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 11: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !72 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.6aab054ba3997061577097a5e0729914.0.llvm.3526042320029563352, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6aab054ba3997061577097a5e0729914.4.llvm.3526042320029563352) #10 - to label %.noexc1 unwind label %29 + to label %.noexc1 unwind label %30 .noexc1: ; preds = %11 unreachable @@ -637,7 +637,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 tail call void @llvm.experimental.noalias.scope.decl(metadata !76) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !79 invoke void @"_ZN5alloc11collections5btree4node145Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$Type$GT$5force17h8165ff6cd9c0fa88E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %.noexc2 unwind label %29 + to label %.noexc2 unwind label %30 .noexc2: ; preds = %12 %13 = load i64, ptr %3, align 8, !range !8, !noalias !79, !noundef !4 @@ -648,56 +648,58 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 %17 = load i64, ptr %16, align 8, !noalias !79, !noundef !4 %18 = getelementptr inbounds nuw i8, ptr %3, i64 24 %19 = load i64, ptr %18, align 8, !noalias !79, !noundef !4 - br i1 %trunc.i.i, label %24, label %20 + %20 = add i64 %19, 1 + br i1 %trunc.i.i, label %24, label %21 -20: ; preds = %.noexc2 - %21 = add i64 %19, 1 +21: ; preds = %.noexc2 store ptr %15, ptr %5, align 8, !alias.scope !76, !noalias !81 %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %17, ptr %22, align 8, !alias.scope !76, !noalias !81 %23 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %21, ptr %23, align 8, !alias.scope !76, !noalias !81 - br label %31 + store i64 %20, ptr %23, align 8, !alias.scope !76, !noalias !81 + br label %32 24: ; preds = %.noexc2 - %25 = getelementptr i8, ptr %15, i64 200 - %26 = getelementptr ptr, ptr %25, i64 %19 - %27 = load ptr, ptr %26, align 8, !noalias !79, !nonnull !4, !noundef !4 - %28 = add i64 %17, -1 - invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6aa67acece877a1E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %27, i64 noundef %28) - to label %31 unwind label %29 - -29: ; preds = %24, %12, %11, %1 - %30 = landingpad { ptr, i32 } + %25 = getelementptr inbounds nuw i8, ptr %15, i64 192 + %26 = icmp ult i64 %20, 12 + tail call void @llvm.assume(i1 %26) + %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %20 + %28 = load ptr, ptr %27, align 8, !noalias !79, !nonnull !4, !noundef !4 + %29 = add i64 %17, -1 + invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6aa67acece877a1E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %28, i64 noundef %29) + to label %32 unwind label %30 + +30: ; preds = %24, %12, %11, %1 + %31 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit" unwind label %39 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit" unwind label %40 -31: ; preds = %20, %24 +32: ; preds = %21, %24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !79 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !72 - %32 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %33 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 - tail call void @llvm.assume(i1 %33) - %34 = getelementptr inbounds nuw i64, ptr %32, i64 %.sroa.4.sroa.4.0.copyload.i - %35 = getelementptr inbounds nuw i8, ptr %9, i64 96 - %36 = getelementptr inbounds nuw i64, ptr %35, i64 %.sroa.4.sroa.4.0.copyload.i + %33 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %34 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 + tail call void @llvm.assume(i1 %34) + %35 = getelementptr inbounds nuw i64, ptr %33, i64 %.sroa.4.sroa.4.0.copyload.i + %36 = getelementptr inbounds nuw i8, ptr %9, i64 96 + %37 = getelementptr inbounds nuw i64, ptr %36, i64 %.sroa.4.sroa.4.0.copyload.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !72 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %37 = insertvalue { ptr, ptr } poison, ptr %34, 0 - %38 = insertvalue { ptr, ptr } %37, ptr %36, 1 - ret { ptr, ptr } %38 + %38 = insertvalue { ptr, ptr } poison, ptr %35, 0 + %39 = insertvalue { ptr, ptr } %38, ptr %37, 1 + ret { ptr, ptr } %39 -39: ; preds = %29 - %40 = landingpad { ptr, i32 } +40: ; preds = %30 + %41 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #11 unreachable -"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit": ; preds = %29 - resume { ptr, i32 } %30 +"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit": ; preds = %30 + resume { ptr, i32 } %31 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -760,39 +762,41 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %15 = load i64, ptr %14, align 8, !noalias !85, !noundef !4 %16 = getelementptr inbounds nuw i8, ptr %3, i64 24 %17 = load i64, ptr %16, align 8, !noalias !85, !noundef !4 - br i1 %trunc.i, label %22, label %18 + %18 = add i64 %17, 1 + br i1 %trunc.i, label %22, label %19 -18: ; preds = %10 - %19 = add i64 %17, 1 +19: ; preds = %10 store ptr %13, ptr %5, align 8, !alias.scope !82, !noalias !87 %20 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %15, ptr %20, align 8, !alias.scope !82, !noalias !87 %21 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %19, ptr %21, align 8, !alias.scope !82, !noalias !87 + store i64 %18, ptr %21, align 8, !alias.scope !82, !noalias !87 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit" 22: ; preds = %10 - %23 = getelementptr i8, ptr %13, i64 200 - %24 = getelementptr ptr, ptr %23, i64 %17 - %25 = load ptr, ptr %24, align 8, !noalias !85, !nonnull !4, !noundef !4 - %26 = add i64 %15, -1 - call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6aa67acece877a1E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %25, i64 noundef %26), !noalias !87 + %23 = getelementptr inbounds nuw i8, ptr %13, i64 192 + %24 = icmp ult i64 %18, 12 + tail call void @llvm.assume(i1 %24) + %25 = getelementptr inbounds nuw ptr, ptr %23, i64 %18 + %26 = load ptr, ptr %25, align 8, !noalias !85, !nonnull !4, !noundef !4 + %27 = add i64 %15, -1 + call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6aa67acece877a1E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %26, i64 noundef %27), !noalias !87 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit" -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit": ; preds = %18, %22 +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit": ; preds = %19, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !85 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %28 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 - tail call void @llvm.assume(i1 %28) - %29 = getelementptr inbounds nuw i64, ptr %27, i64 %.sroa.4.sroa.4.0.copyload - %30 = getelementptr inbounds nuw i8, ptr %7, i64 96 - %31 = getelementptr inbounds nuw i64, ptr %30, i64 %.sroa.4.sroa.4.0.copyload + %28 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %29 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 + tail call void @llvm.assume(i1 %29) + %30 = getelementptr inbounds nuw i64, ptr %28, i64 %.sroa.4.sroa.4.0.copyload + %31 = getelementptr inbounds nuw i8, ptr %7, i64 96 + %32 = getelementptr inbounds nuw i64, ptr %31, i64 %.sroa.4.sroa.4.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %29, ptr %32, align 8 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store ptr %31, ptr %33, align 8 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %30, ptr %33, align 8 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr %32, ptr %34, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll index 8e4475e72fd..809d67da871 100644 --- a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll +++ b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll @@ -2927,38 +2927,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #10 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 +11: ; preds = %4 + br i1 %3, label %20, label %15 -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 - br label %11 +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 + br label %12 -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 - br label %11 +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 + br label %12 } ; Function Attrs: alwaysinline nonlazybind uwtable @@ -3168,28 +3170,30 @@ define internal noundef zeroext i1 @"_ZN60_$LT$alloc..string..String$u20$as$u20$ ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #10 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %3 %6 = add i64 %1, -1 %7 = icmp sgt i64 %6, -1 tail call void @llvm.assume(i1 %7) %8 = inttoptr i64 %1 to ptr + %9 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %9) br label %_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit -9: ; preds = %3 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %11 = add i64 %1, -1 - %12 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %12) - %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +10: ; preds = %3 + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %12 = add i64 %1, -1 + %13 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %13) + %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit -_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit: ; preds = %5, %9 - %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %13, %9 ] - %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 - %15 = insertvalue { ptr, i64 } %14, i64 %2, 1 - ret { ptr, i64 } %15 +_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit: ; preds = %5, %10 + %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] + %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 + %16 = insertvalue { ptr, i64 } %15, i64 %2, 1 + ret { ptr, i64 } %16 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -3360,25 +3364,27 @@ define hidden { ptr, i64 } @"_ZN74_$LT$core..num..dec2flt..ParseFloatError$u20$a ; Function Attrs: nounwind nonlazybind uwtable define hidden noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17h75dec4d235bf20d7E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #13 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %3 %6 = add i64 %1, -1 %7 = icmp sgt i64 %6, -1 tail call void @llvm.assume(i1 %7) %8 = inttoptr i64 %1 to ptr + %9 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %9) br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit" -9: ; preds = %3 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %11 = add i64 %1, -1 - %12 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %12) - %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +10: ; preds = %3 + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %12 = add i64 %1, -1 + %13 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %13) + %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit": ; preds = %5, %9 - %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %13, %9 ] +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit": ; preds = %5, %10 + %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %14, %10 ] ret ptr %.sroa.05.0.i.i } diff --git a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll index 9d0749aeec7..8868b593c3d 100644 --- a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll +++ b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll @@ -18382,42 +18382,44 @@ define internal fastcc void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$L tail call void @llvm.assume(i1 %1) %2 = load ptr, ptr %.8.val, align 8, !invariant.load !19, !nonnull !19 invoke void %2(ptr noundef nonnull align 1 %.0.val) - to label %12 unwind label %3 + to label %13 unwind label %3 3: ; preds = %0 %4 = landingpad { ptr, i32 } cleanup - %5 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %6 = load i64, ptr %5, align 8, !range !2429, !invariant.load !19 - %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %8 = load i64, ptr %7, align 8, !range !2430, !invariant.load !19 - %9 = icmp ult i64 %8, -9223372036854775807 - tail call void @llvm.assume(i1 %9) - %10 = icmp eq i64 %6, 0 - br i1 %10, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit", label %11 - -11: ; preds = %3 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %6, i64 noundef range(i64 1, -9223372036854775807) %8) #25 + %5 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %5) + %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %7 = load i64, ptr %6, align 8, !range !2429, !invariant.load !19 + %8 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %9 = load i64, ptr %8, align 8, !range !2430, !invariant.load !19 + %10 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %10) + %11 = icmp eq i64 %7, 0 + br i1 %11, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit", label %12 + +12: ; preds = %3 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %7, i64 noundef range(i64 1, -9223372036854775807) %9) #25 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit" -12: ; preds = %0 - %13 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %14 = load i64, ptr %13, align 8, !range !2429, !invariant.load !19 - %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %16 = load i64, ptr %15, align 8, !range !2430, !invariant.load !19 - %17 = icmp ult i64 %16, -9223372036854775807 - tail call void @llvm.assume(i1 %17) - %18 = icmp eq i64 %14, 0 - br i1 %18, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4", label %19 - -19: ; preds = %12 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %14, i64 noundef range(i64 1, -9223372036854775807) %16) #25 +13: ; preds = %0 + %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %15 = load i64, ptr %14, align 8, !range !2429, !invariant.load !19 + %16 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %17 = load i64, ptr %16, align 8, !range !2430, !invariant.load !19 + %18 = icmp ult i64 %17, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp eq i64 %15, 0 + br i1 %19, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4", label %20 + +20: ; preds = %13 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %15, i64 noundef range(i64 1, -9223372036854775807) %17) #25 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4": ; preds = %12, %19 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4": ; preds = %13, %20 ret void -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit": ; preds = %11, %3 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit": ; preds = %12, %3 resume { ptr, i32 } %4 } diff --git a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll index 23f6da7faf4..178395f1d84 100644 --- a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll +++ b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll @@ -12192,7 +12192,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !3480 invoke void @"_ZN5alloc11collections5btree8navigate227_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$7next_kv17hc3de3f800ddf11a7E"(ptr noalias noundef nonnull sret({ ptr, [2 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %7) - to label %.noexc unwind label %29 + to label %.noexc unwind label %30 .noexc: ; preds = %1 %9 = load ptr, ptr %6, align 8, !noalias !3480, !noundef !24 @@ -12202,7 +12202,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 11: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !3480 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.b16754a467d3cf51c98f9660b4d015ba.5.llvm.17224713629878502917, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b16754a467d3cf51c98f9660b4d015ba.111.llvm.17224713629878502917) #35 - to label %.noexc1 unwind label %29 + to label %.noexc1 unwind label %30 .noexc1: ; preds = %11 unreachable @@ -12223,7 +12223,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 tail call void @llvm.experimental.noalias.scope.decl(metadata !3484) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !3487 invoke void @"_ZN5alloc11collections5btree4node145Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$Type$GT$5force17hfcac10e75fe77bebE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %.noexc2 unwind label %29 + to label %.noexc2 unwind label %30 .noexc2: ; preds = %12 %13 = load i64, ptr %3, align 8, !range !666, !noalias !3487, !noundef !24 @@ -12234,55 +12234,57 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 %17 = load i64, ptr %16, align 8, !noalias !3487, !noundef !24 %18 = getelementptr inbounds nuw i8, ptr %3, i64 24 %19 = load i64, ptr %18, align 8, !noalias !3487, !noundef !24 - br i1 %trunc.i.i, label %24, label %20 + %20 = add i64 %19, 1 + br i1 %trunc.i.i, label %24, label %21 -20: ; preds = %.noexc2 - %21 = add i64 %19, 1 +21: ; preds = %.noexc2 store ptr %15, ptr %5, align 8, !alias.scope !3484, !noalias !3489 %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %17, ptr %22, align 8, !alias.scope !3484, !noalias !3489 %23 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %21, ptr %23, align 8, !alias.scope !3484, !noalias !3489 - br label %31 + store i64 %20, ptr %23, align 8, !alias.scope !3484, !noalias !3489 + br label %32 24: ; preds = %.noexc2 - %25 = getelementptr i8, ptr %15, i64 400 - %26 = getelementptr ptr, ptr %25, i64 %19 - %27 = load ptr, ptr %26, align 8, !noalias !3487, !nonnull !24, !noundef !24 - %28 = add i64 %17, -1 - invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hca7860a19e83631cE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %27, i64 noundef %28) - to label %31 unwind label %29 - -29: ; preds = %24, %12, %11, %1 - %30 = landingpad { ptr, i32 } + %25 = getelementptr inbounds nuw i8, ptr %15, i64 392 + %26 = icmp ult i64 %20, 12 + tail call void @llvm.assume(i1 %26) + %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %20 + %28 = load ptr, ptr %27, align 8, !noalias !3487, !nonnull !24, !noundef !24 + %29 = add i64 %17, -1 + invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hca7860a19e83631cE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %28, i64 noundef %29) + to label %32 unwind label %30 + +30: ; preds = %24, %12, %11, %1 + %31 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit" unwind label %38 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit" unwind label %39 -31: ; preds = %20, %24 +32: ; preds = %21, %24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !3487 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !3480 - %32 = getelementptr inbounds nuw i8, ptr %9, i64 364 - %33 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 - tail call void @llvm.assume(i1 %33) - %34 = getelementptr inbounds nuw i16, ptr %32, i64 %.sroa.4.sroa.4.0.copyload.i - %35 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i + %33 = getelementptr inbounds nuw i8, ptr %9, i64 364 + %34 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 + tail call void @llvm.assume(i1 %34) + %35 = getelementptr inbounds nuw i16, ptr %33, i64 %.sroa.4.sroa.4.0.copyload.i + %36 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !3480 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %36 = insertvalue { ptr, ptr } poison, ptr %34, 0 - %37 = insertvalue { ptr, ptr } %36, ptr %35, 1 - ret { ptr, ptr } %37 + %37 = insertvalue { ptr, ptr } poison, ptr %35, 0 + %38 = insertvalue { ptr, ptr } %37, ptr %36, 1 + ret { ptr, ptr } %38 -38: ; preds = %29 - %39 = landingpad { ptr, i32 } +39: ; preds = %30 + %40 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38 unreachable -"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit": ; preds = %29 - resume { ptr, i32 } %30 +"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit": ; preds = %30 + resume { ptr, i32 } %31 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -12462,38 +12464,40 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %15 = load i64, ptr %14, align 8, !noalias !3501, !noundef !24 %16 = getelementptr inbounds nuw i8, ptr %3, i64 24 %17 = load i64, ptr %16, align 8, !noalias !3501, !noundef !24 - br i1 %trunc.i, label %22, label %18 + %18 = add i64 %17, 1 + br i1 %trunc.i, label %22, label %19 -18: ; preds = %10 - %19 = add i64 %17, 1 +19: ; preds = %10 store ptr %13, ptr %5, align 8, !alias.scope !3498, !noalias !3503 %20 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %15, ptr %20, align 8, !alias.scope !3498, !noalias !3503 %21 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %19, ptr %21, align 8, !alias.scope !3498, !noalias !3503 + store i64 %18, ptr %21, align 8, !alias.scope !3498, !noalias !3503 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit" 22: ; preds = %10 - %23 = getelementptr i8, ptr %13, i64 400 - %24 = getelementptr ptr, ptr %23, i64 %17 - %25 = load ptr, ptr %24, align 8, !noalias !3501, !nonnull !24, !noundef !24 - %26 = add i64 %15, -1 - call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hca7860a19e83631cE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %25, i64 noundef %26), !noalias !3503 + %23 = getelementptr inbounds nuw i8, ptr %13, i64 392 + %24 = icmp ult i64 %18, 12 + tail call void @llvm.assume(i1 %24) + %25 = getelementptr inbounds nuw ptr, ptr %23, i64 %18 + %26 = load ptr, ptr %25, align 8, !noalias !3501, !nonnull !24, !noundef !24 + %27 = add i64 %15, -1 + call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hca7860a19e83631cE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %26, i64 noundef %27), !noalias !3503 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit" -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit": ; preds = %18, %22 +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit": ; preds = %19, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !3501 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %27 = getelementptr inbounds nuw i8, ptr %7, i64 364 - %28 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 - tail call void @llvm.assume(i1 %28) - %29 = getelementptr inbounds nuw i16, ptr %27, i64 %.sroa.4.sroa.4.0.copyload - %30 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload + %28 = getelementptr inbounds nuw i8, ptr %7, i64 364 + %29 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 + tail call void @llvm.assume(i1 %29) + %30 = getelementptr inbounds nuw i16, ptr %28, i64 %.sroa.4.sroa.4.0.copyload + %31 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %31 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %29, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 store ptr %30, ptr %32, align 8 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr %31, ptr %33, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } @@ -17084,38 +17088,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17224713629878502917 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17224713629878502917(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #19 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 +11: ; preds = %4 + br i1 %3, label %20, label %15 -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #37 - br label %11 +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #37 + br label %12 -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #37 - br label %11 +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #37 + br label %12 } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll b/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll index bd269283f18..a900ce787d0 100644 --- a/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll +++ b/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll @@ -1091,98 +1091,100 @@ define hidden noundef nonnull ptr @"_ZN5tokio4sync4mpsc4list11Tx$LT$T$GT$10find_ %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %13 -13: ; preds = %.lr.ph, %47 - %14 = phi ptr [ %5, %.lr.ph ], [ %48, %47 ] - %.01116 = phi i1 [ %11, %.lr.ph ], [ %.1, %47 ] - %.01215 = phi ptr [ %.0.i, %.lr.ph ], [ %.0, %47 ] +13: ; preds = %.lr.ph, %48 + %14 = phi ptr [ %5, %.lr.ph ], [ %49, %48 ] + %.01116 = phi i1 [ %11, %.lr.ph ], [ %.1, %48 ] + %.01215 = phi ptr [ %.0.i, %.lr.ph ], [ %.0, %48 ] %15 = getelementptr inbounds nuw i8, ptr %.01215, i64 6920 %16 = load atomic i64, ptr %15 acquire, align 8 %.0.i.i = inttoptr i64 %16 to ptr %17 = icmp eq i64 %16, 0 - br i1 %17, label %18, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" + br i1 %17, label %19, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" -._crit_edge: ; preds = %47, %2 - %.012.lcssa = phi ptr [ %.0.i, %2 ], [ %.0, %47 ] +._crit_edge: ; preds = %48, %2 + %.012.lcssa = phi ptr [ %.0.i, %2 ], [ %.0, %48 ] + %18 = icmp ne ptr %.012.lcssa, null + tail call void @llvm.assume(i1 %18) ret ptr %.012.lcssa -18: ; preds = %13 - %19 = load i64, ptr %14, align 8, !noundef !10 - %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %21 = tail call noundef align 8 dereferenceable_or_null(6944) ptr @__rust_alloc(i64 noundef 6944, i64 noundef 8) #20 - %22 = icmp eq ptr %21, null - br i1 %22, label %23, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" +19: ; preds = %13 + %20 = load i64, ptr %14, align 8, !noundef !10 + %21 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %22 = tail call noundef align 8 dereferenceable_or_null(6944) ptr @__rust_alloc(i64 noundef 6944, i64 noundef 8) #20 + %23 = icmp eq ptr %22, null + br i1 %23, label %24, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" -23: ; preds = %18 +24: ; preds = %19 tail call void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 8, i64 noundef 6944) #32 unreachable -"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i": ; preds = %18 - %24 = add i64 %19, 32 - %25 = getelementptr inbounds nuw i8, ptr %21, i64 6912 - store i64 %24, ptr %25, align 8 - %.sroa.46.0..0.4.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %21, i64 6920 +"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i": ; preds = %19 + %25 = add i64 %20, 32 + %26 = getelementptr inbounds nuw i8, ptr %22, i64 6912 + store i64 %25, ptr %26, align 8 + %.sroa.46.0..0.4.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %22, i64 6920 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.46.0..0.4.sroa_idx.i.i, i8 0, i64 24, i1 false) - %26 = ptrtoint ptr %21 to i64 - %27 = cmpxchg ptr %15, i64 0, i64 %26 acq_rel acquire, align 8 - %.sroa.07.0.in.i.i = extractvalue { i64, i1 } %27, 0 + %27 = ptrtoint ptr %22 to i64 + %28 = cmpxchg ptr %15, i64 0, i64 %27 acq_rel acquire, align 8 + %.sroa.07.0.in.i.i = extractvalue { i64, i1 } %28, 0 %.sroa.07.0.i.i = inttoptr i64 %.sroa.07.0.in.i.i to ptr - %28 = extractvalue { i64, i1 } %27, 1 - br i1 %28, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.preheader.i + %29 = extractvalue { i64, i1 } %28, 1 + br i1 %29, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.preheader.i .preheader.i: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" - %29 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6912 - %30 = load i64, ptr %29, align 8, !noundef !10 - %31 = add i64 %30, 32 - store i64 %31, ptr %25, align 8 - %32 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6920 - %33 = cmpxchg ptr %32, i64 0, i64 %26 acq_rel acquire, align 8 - %34 = extractvalue { i64, i1 } %33, 1 - br i1 %34, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i + %30 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6912 + %31 = load i64, ptr %30, align 8, !noundef !10 + %32 = add i64 %31, 32 + store i64 %32, ptr %26, align 8 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6920 + %34 = cmpxchg ptr %33, i64 0, i64 %27 acq_rel acquire, align 8 + %35 = extractvalue { i64, i1 } %34, 1 + br i1 %35, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i .lr.ph.i: ; preds = %.preheader.i, %.lr.ph.i - %35 = phi { i64, i1 } [ %40, %.lr.ph.i ], [ %33, %.preheader.i ] - %.sroa.07.0.in.i.i.i = extractvalue { i64, i1 } %35, 0 + %36 = phi { i64, i1 } [ %41, %.lr.ph.i ], [ %34, %.preheader.i ] + %.sroa.07.0.in.i.i.i = extractvalue { i64, i1 } %36, 0 %.sroa.07.0.i.i.i = inttoptr i64 %.sroa.07.0.in.i.i.i to ptr tail call void @llvm.x86.sse2.pause() #20 - %36 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6912 - %37 = load i64, ptr %36, align 8, !noundef !10 - %38 = add i64 %37, 32 - store i64 %38, ptr %25, align 8 - %39 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6920 - %40 = cmpxchg ptr %39, i64 0, i64 %26 acq_rel acquire, align 8 - %41 = extractvalue { i64, i1 } %40, 1 - br i1 %41, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i + %37 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6912 + %38 = load i64, ptr %37, align 8, !noundef !10 + %39 = add i64 %38, 32 + store i64 %39, ptr %26, align 8 + %40 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6920 + %41 = cmpxchg ptr %40, i64 0, i64 %27 acq_rel acquire, align 8 + %42 = extractvalue { i64, i1 } %41, 1 + br i1 %42, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i "_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit": ; preds = %.lr.ph.i, %.preheader.i, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i", %13 - %.0 = phi ptr [ %.0.i.i, %13 ], [ %21, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" ], [ %.sroa.07.0.i.i, %.preheader.i ], [ %.sroa.07.0.i.i, %.lr.ph.i ] - %42 = getelementptr inbounds nuw i8, ptr %.01215, i64 6928 - %43 = load atomic i64, ptr %42 acquire, align 8 - %44 = and i64 %43, 4294967295 - %45 = icmp eq i64 %44, 4294967295 - %46 = and i1 %.01116, %45 - br i1 %46, label %51, label %47 - -47: ; preds = %51, %55, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" - %.1 = phi i1 [ true, %55 ], [ false, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" ], [ false, %51 ] + %.0 = phi ptr [ %.0.i.i, %13 ], [ %22, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" ], [ %.sroa.07.0.i.i, %.preheader.i ], [ %.sroa.07.0.i.i, %.lr.ph.i ] + %43 = getelementptr inbounds nuw i8, ptr %.01215, i64 6928 + %44 = load atomic i64, ptr %43 acquire, align 8 + %45 = and i64 %44, 4294967295 + %46 = icmp eq i64 %45, 4294967295 + %47 = and i1 %.01116, %46 + br i1 %47, label %52, label %48 + +48: ; preds = %52, %56, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" + %.1 = phi i1 [ true, %56 ], [ false, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" ], [ false, %52 ] tail call void @llvm.x86.sse2.pause() #20 - %48 = getelementptr inbounds nuw i8, ptr %.0, i64 6912 - %49 = load i64, ptr %48, align 8, !noundef !10 - %50 = icmp eq i64 %49, %3 - br i1 %50, label %._crit_edge, label %13 - -51: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" - %52 = ptrtoint ptr %.01215 to i64 - %53 = ptrtoint ptr %.0 to i64 - %54 = cmpxchg ptr %0, i64 %52, i64 %53 release monotonic, align 8 - %.sroa.18.0.in.i = extractvalue { i64, i1 } %54, 1 - br i1 %.sroa.18.0.in.i, label %55, label %47 - -55: ; preds = %51 - %56 = atomicrmw or ptr %12, i64 0 release, align 8 - %57 = getelementptr inbounds nuw i8, ptr %.01215, i64 6936 - store i64 %56, ptr %57, align 8 - %58 = atomicrmw or ptr %42, i64 4294967296 release, align 8 - br label %47 + %49 = getelementptr inbounds nuw i8, ptr %.0, i64 6912 + %50 = load i64, ptr %49, align 8, !noundef !10 + %51 = icmp eq i64 %50, %3 + br i1 %51, label %._crit_edge, label %13 + +52: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" + %53 = ptrtoint ptr %.01215 to i64 + %54 = ptrtoint ptr %.0 to i64 + %55 = cmpxchg ptr %0, i64 %53, i64 %54 release monotonic, align 8 + %.sroa.18.0.in.i = extractvalue { i64, i1 } %55, 1 + br i1 %.sroa.18.0.in.i, label %56, label %48 + +56: ; preds = %52 + %57 = atomicrmw or ptr %12, i64 0 release, align 8 + %58 = getelementptr inbounds nuw i8, ptr %.01215, i64 6936 + store i64 %57, ptr %58, align 8 + %59 = atomicrmw or ptr %43, i64 4294967296 release, align 8 + br label %48 } ; Function Attrs: nounwind nonlazybind uwtable @@ -1781,6 +1783,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.54 %20 = load ptr, ptr %0, align 8, !nonnull !10, !noundef !10 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #20 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.5441949568091396765.exit" @@ -2154,7 +2158,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -2173,6 +2177,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949 %47 = load ptr, ptr %0, align 8, !alias.scope !288, !nonnull !10, !noundef !10 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #20, !noalias !288 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit @@ -2242,7 +2248,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -2261,6 +2267,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949 %47 = load ptr, ptr %0, align 8, !alias.scope !309, !nonnull !10, !noundef !10 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #20, !noalias !309 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit @@ -2280,7 +2288,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h676ef78 %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -2299,6 +2307,8 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h676ef78 %23 = load ptr, ptr %0, align 8, !alias.scope !312, !nonnull !10, !noundef !10 %24 = sub nsw i64 0, %14 %25 = getelementptr inbounds i8, ptr %23, i64 %24 + %26 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #20, !noalias !312 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit @@ -2319,7 +2329,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hd40e112 %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -2338,6 +2348,8 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hd40e112 %23 = load ptr, ptr %0, align 8, !alias.scope !315, !nonnull !10, !noundef !10 %24 = sub nsw i64 0, %14 %25 = getelementptr inbounds i8, ptr %23, i64 %24 + %26 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #20, !noalias !315 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit @@ -2449,7 +2461,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949 %52 = add i64 %6, 1 %53 = mul nuw i64 %52, %2 %54 = add i64 %3, -1 - %55 = add nuw i64 %54, %53 + %55 = add nuw i64 %53, %54 %56 = sub i64 0, %3 %57 = and i64 %55, %56 %58 = add i64 %6, 17 @@ -2468,6 +2480,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949 %66 = load ptr, ptr %0, align 8, !alias.scope !344, !nonnull !10, !noundef !10 %67 = sub nsw i64 0, %57 %68 = getelementptr inbounds i8, ptr %66, i64 %67 + %69 = icmp sgt i64 %54, -1 + tail call void @llvm.assume(i1 %69) tail call void @__rust_dealloc(ptr noundef nonnull %68, i64 noundef %59, i64 noundef %3) #20, !noalias !344 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit diff --git a/bench/just-rs/optimized/2sotx4bdu006z307.ll b/bench/just-rs/optimized/2sotx4bdu006z307.ll index f9c871d28e2..32f3aca60e8 100644 --- a/bench/just-rs/optimized/2sotx4bdu006z307.ll +++ b/bench/just-rs/optimized/2sotx4bdu006z307.ll @@ -9573,7 +9573,7 @@ _ZN14regex_automata4util4pool5inner9THREAD_ID7__getit17he141448109b075e5E.exit.i %59 = getelementptr inbounds nuw i8, ptr %46, i64 112 %60 = load ptr, ptr %59, align 8, !invariant.load !4, !noalias !2085, !nonnull !4 invoke void %60(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %7, ptr noundef align 1 %58, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.0.i7.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %8) - to label %61 unwind label %153 + to label %61 unwind label %154 61: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h8779890000955411E.exit.i" %.sroa.0.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -9823,6 +9823,8 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit. 148: ; preds = %147 %149 = landingpad { ptr, i32 } cleanup + %150 = icmp ne i64 %.sroa.0.sroa.4.0.copyload.i, 0 + call void @llvm.assume(i1 %150) br label %.body.thread.sink.split.i .noexc3.i: ; preds = %147 @@ -9836,17 +9838,17 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit. unreachable .noexc5.i: ; preds = %66 - %150 = icmp ne ptr %.sroa.0.sroa.5.0.copyload.i, null - call void @llvm.assume(i1 %150) - %151 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload.i, i64 40 - store atomic i64 %.sroa.0.sroa.4.0.copyload.i, ptr %151 release, align 8, !noalias !2085 + %151 = icmp ne ptr %.sroa.0.sroa.5.0.copyload.i, null + call void @llvm.assume(i1 %151) + %152 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload.i, i64 40 + store atomic i64 %.sroa.0.sroa.4.0.copyload.i, ptr %152 release, align 8, !noalias !2085 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !2101 br label %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" "_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i": ; preds = %.noexc5.i, %.noexc3.i, %134, %_ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.11107275065492906757.exit.i.i.i.i, %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17h296dfeae8992f9c8E.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !2086 %.pre = load i64, ptr %7, align 8, !range !578 - %152 = icmp ne i64 %.pre, 0 + %153 = icmp ne i64 %.pre, 0 br label %_ZN14regex_automata4meta5regex5Regex11search_half17hf6e7bbd4f4e39a06E.exit .body.thread.sink.split.i: ; preds = %148, %84 @@ -9854,27 +9856,27 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit. call void @__rust_dealloc(ptr noundef nonnull %64, i64 noundef 1400, i64 noundef 8) #42, !noalias !2085 br label %.body.thread.i -.body.thread.i: ; preds = %153, %.body.thread.sink.split.i, %.body.i.i, %.thread.i.i - %eh.lpad-body15.i = phi { ptr, i32 } [ %115, %.body.i.i ], [ %lpad.thr_comm.split-lp.i, %153 ], [ %lpad.phi.i.i, %.thread.i.i ], [ %eh.lpad-body15.ph.i, %.body.thread.sink.split.i ] +.body.thread.i: ; preds = %154, %.body.thread.sink.split.i, %.body.i.i, %.thread.i.i + %eh.lpad-body15.i = phi { ptr, i32 } [ %115, %.body.i.i ], [ %lpad.thr_comm.split-lp.i, %154 ], [ %lpad.phi.i.i, %.thread.i.i ], [ %eh.lpad-body15.ph.i, %.body.thread.sink.split.i ] resume { ptr, i32 } %eh.lpad-body15.i -153: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h8779890000955411E.exit.i" +154: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h8779890000955411E.exit.i" %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr366drop_in_place$LT$regex_automata..util..pool..PoolGuard$LT$regex_automata..meta..regex..Cache$C$alloc..boxed..Box$LT$dyn$u20$core..ops..function..Fn$LT$$LP$$RP$$GT$$u2b$Output$u20$$u3d$$u20$regex_automata..meta..regex..Cache$u2b$core..panic..unwind_safe..UnwindSafe$u2b$core..marker..Send$u2b$core..marker..Sync$u2b$core..panic..unwind_safe..RefUnwindSafe$GT$$GT$$GT$17he3690092f493643eE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) #41 - to label %.body.thread.i unwind label %154, !noalias !2085 + to label %.body.thread.i unwind label %155, !noalias !2085 -154: ; preds = %153 - %155 = landingpad { ptr, i32 } +155: ; preds = %154 + %156 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #40, !noalias !2085 unreachable _ZN14regex_automata4meta5regex5Regex11search_half17hf6e7bbd4f4e39a06E.exit: ; preds = %14, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98b7df9da17870f0E.exit.i, %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" - %156 = phi i1 [ %152, %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" ], [ false, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98b7df9da17870f0E.exit.i ], [ false, %14 ] + %157 = phi i1 [ %153, %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" ], [ false, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98b7df9da17870f0E.exit.i ], [ false, %14 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) - ret i1 %156 + ret i1 %157 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/libquic/optimized/string16.ll b/bench/libquic/optimized/string16.ll index 5cf13678e45..36b6ea82cd6 100644 --- a/bench/libquic/optimized/string16.ll +++ b/bench/libquic/optimized/string16.ll @@ -3232,52 +3232,54 @@ define weak_odr noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112 br i1 %8, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i: ; preds = %2 - %9 = icmp ugt i64 %5, 7 - br i1 %9, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit + %9 = icmp ult i64 %4, 8 + tail call void @llvm.assume(i1 %9) + %10 = icmp samesign ugt i64 %5, 7 + br i1 %10, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i: ; preds = %2 - %10 = load i64, ptr %7, align 8 - %11 = icmp ugt i64 %5, %10 - br i1 %11, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit + %11 = load i64, ptr %7, align 8 + %12 = icmp ugt i64 %5, %11 + br i1 %12, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i - %12 = phi i64 [ %10, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] - %13 = icmp ugt i64 %5, 2305843009213693951 - br i1 %13, label %14, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i + %13 = phi i64 [ %11, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] + %14 = icmp ugt i64 %5, 2305843009213693951 + br i1 %14, label %15, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i -14: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i +15: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str) #18 unreachable _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i - %15 = shl nuw nsw i64 %12, 1 - %16 = icmp samesign ult i64 %5, %15 - %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %15, i64 2305843009213693951) - %.0.i.i = select i1 %16, i64 %spec.store.select.i.i.i, i64 %5 - %17 = shl nuw nsw i64 %.0.i.i, 1 - %18 = add nuw nsw i64 %17, 2 - %19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %18) #19 - switch i64 %4, label %22 [ + %16 = shl nuw nsw i64 %13, 1 + %17 = icmp samesign ult i64 %5, %16 + %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %16, i64 2305843009213693951) + %.0.i.i = select i1 %17, i64 %spec.store.select.i.i.i, i64 %5 + %18 = shl nuw nsw i64 %.0.i.i, 1 + %19 = add nuw nsw i64 %18, 2 + %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #19 + switch i64 %4, label %23 [ i64 0, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i - i64 1, label %20 + i64 1, label %21 ] -20: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i - %21 = load i16, ptr %6, align 2, !tbaa !3 - store i16 %21, ptr %19, align 2, !tbaa !3 +21: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i + %22 = load i16, ptr %6, align 2, !tbaa !3 + store i16 %22, ptr %20, align 2, !tbaa !3 br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i -22: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i - %23 = shl nuw nsw i64 %4, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %19, ptr readonly align 2 %6, i64 %23, i1 false) +23: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i + %24 = shl nuw nsw i64 %4, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %20, ptr readonly align 2 %6, i64 %24, i1 false) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i -_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i: ; preds = %22, %20, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i +_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i: ; preds = %23, %21, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i br i1 %8, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i.i, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i - %24 = icmp samesign ult i64 %4, 8 - tail call void @llvm.assume(i1 %24) + %25 = icmp samesign ult i64 %4, 8 + tail call void @llvm.assume(i1 %25) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i @@ -3285,17 +3287,17 @@ _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i.i - store ptr %19, ptr %0, align 8, !tbaa !12 + store ptr %20, ptr %0, align 8, !tbaa !12 store i64 %.0.i.i, ptr %7, align 8, !tbaa !25 br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i - %25 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ %19, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] - %26 = getelementptr inbounds nuw i16, ptr %25, i64 %4 - store i16 %1, ptr %26, align 2, !tbaa !3 + %26 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ %20, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] + %27 = getelementptr inbounds nuw i16, ptr %26, i64 %4 + store i16 %1, ptr %27, align 2, !tbaa !3 store i64 %5, ptr %3, align 8, !tbaa !18 - %27 = getelementptr inbounds nuw i16, ptr %25, i64 %5 - store i16 0, ptr %27, align 2, !tbaa !3 + %28 = getelementptr inbounds nuw i16, ptr %26, i64 %5 + store i16 0, ptr %28, align 2, !tbaa !3 ret ptr %0 } @@ -3310,52 +3312,54 @@ define weak_odr void @_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsE br i1 %8, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit: ; preds = %2 - %9 = icmp ugt i64 %5, 7 - br i1 %9, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %25 + %9 = icmp ult i64 %4, 8 + tail call void @llvm.assume(i1 %9) + %10 = icmp samesign ugt i64 %5, 7 + br i1 %10, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %26 _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread: ; preds = %2 - %10 = load i64, ptr %7, align 8 - %11 = icmp ugt i64 %5, %10 - br i1 %11, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %25 + %11 = load i64, ptr %7, align 8 + %12 = icmp ugt i64 %5, %11 + br i1 %12, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %26 _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread - %12 = phi i64 [ %10, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] - %13 = icmp ugt i64 %5, 2305843009213693951 - br i1 %13, label %14, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i + %13 = phi i64 [ %11, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] + %14 = icmp ugt i64 %5, 2305843009213693951 + br i1 %14, label %15, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i -14: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i +15: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str) #18 unreachable _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i - %15 = shl nuw nsw i64 %12, 1 - %16 = icmp samesign ult i64 %5, %15 - %spec.store.select.i.i = tail call i64 @llvm.umin.i64(i64 %15, i64 2305843009213693951) - %.0.i = select i1 %16, i64 %spec.store.select.i.i, i64 %5 - %17 = shl nuw nsw i64 %.0.i, 1 - %18 = add nuw nsw i64 %17, 2 - %19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %18) #19 - switch i64 %4, label %22 [ + %16 = shl nuw nsw i64 %13, 1 + %17 = icmp samesign ult i64 %5, %16 + %spec.store.select.i.i = tail call i64 @llvm.umin.i64(i64 %16, i64 2305843009213693951) + %.0.i = select i1 %17, i64 %spec.store.select.i.i, i64 %5 + %18 = shl nuw nsw i64 %.0.i, 1 + %19 = add nuw nsw i64 %18, 2 + %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #19 + switch i64 %4, label %23 [ i64 0, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i - i64 1, label %20 + i64 1, label %21 ] -20: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i - %21 = load i16, ptr %6, align 2, !tbaa !3 - store i16 %21, ptr %19, align 2, !tbaa !3 +21: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i + %22 = load i16, ptr %6, align 2, !tbaa !3 + store i16 %22, ptr %20, align 2, !tbaa !3 br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i -22: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i - %23 = shl nuw nsw i64 %4, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %19, ptr readonly align 2 %6, i64 %23, i1 false) +23: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i + %24 = shl nuw nsw i64 %4, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %20, ptr readonly align 2 %6, i64 %24, i1 false) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i -_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i, %20, %22 +_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i, %21, %23 br i1 %8, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i - %24 = icmp samesign ult i64 %4, 8 - tail call void @llvm.assume(i1 %24) + %25 = icmp samesign ult i64 %4, 8 + tail call void @llvm.assume(i1 %25) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i @@ -3363,17 +3367,17 @@ _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i - store ptr %19, ptr %0, align 8, !tbaa !12 + store ptr %20, ptr %0, align 8, !tbaa !12 store i64 %.0.i, ptr %7, align 8, !tbaa !25 - br label %25 + br label %26 -25: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit - %26 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ %19, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] - %27 = getelementptr inbounds nuw i16, ptr %26, i64 %4 - store i16 %1, ptr %27, align 2, !tbaa !3 +26: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit + %27 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ %20, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] + %28 = getelementptr inbounds nuw i16, ptr %27, i64 %4 + store i16 %1, ptr %28, align 2, !tbaa !3 store i64 %5, ptr %3, align 8, !tbaa !18 - %28 = getelementptr inbounds nuw i16, ptr %26, i64 %5 - store i16 0, ptr %28, align 2, !tbaa !3 + %29 = getelementptr inbounds nuw i16, ptr %27, i64 %5 + store i16 0, ptr %29, align 2, !tbaa !3 ret void } diff --git a/bench/lief/optimized/AArch64PAuth.ll b/bench/lief/optimized/AArch64PAuth.ll index 9460162d436..b865b065815 100644 --- a/bench/lief/optimized/AArch64PAuth.ll +++ b/bench/lief/optimized/AArch64PAuth.ll @@ -10056,81 +10056,83 @@ _ZNK3fmt3v106detail10locale_ref3getISt6localeEET_v.exit.i: ; preds = %8, %7 _ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread: ; preds = %21 %27 = load i64, ptr %13, align 8, !tbaa !48, !noalias !227 - %28 = add nuw nsw i64 %27, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %23, ptr noundef nonnull align 8 dereferenceable(1) %25, i64 %28, i1 false) - %29 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 %27, ptr %29, align 8, !tbaa !48, !alias.scope !227 - %30 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i8 %22, ptr %30, align 8, !tbaa !217, !alias.scope !227 + %28 = icmp ult i64 %27, 16 + call void @llvm.assume(i1 %28) + %29 = add nuw nsw i64 %27, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %23, ptr noundef nonnull align 8 dereferenceable(1) %25, i64 %29, i1 false) + %30 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %27, ptr %30, align 8, !tbaa !48, !alias.scope !227 + %31 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i8 %22, ptr %31, align 8, !tbaa !217, !alias.scope !227 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !227 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %31, ptr %0, align 8, !tbaa !43 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %32, ptr %0, align 8, !tbaa !43 call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 %27, ptr %3, align 8, !tbaa !10 br label %._crit_edge.i.i _ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit: ; preds = %21 store ptr %24, ptr %6, align 8, !tbaa !45, !alias.scope !227 - %32 = load i64, ptr %25, align 8, !tbaa !47, !noalias !227 - store i64 %32, ptr %23, align 8, !tbaa !47, !alias.scope !227 + %33 = load i64, ptr %25, align 8, !tbaa !47, !noalias !227 + store i64 %33, ptr %23, align 8, !tbaa !47, !alias.scope !227 %.pre.i = load i64, ptr %13, align 8, !tbaa !48, !noalias !227 - %33 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 %.pre.i, ptr %33, align 8, !tbaa !48, !alias.scope !227 - %34 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i8 %22, ptr %34, align 8, !tbaa !217, !alias.scope !227 + %34 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %.pre.i, ptr %34, align 8, !tbaa !48, !alias.scope !227 + %35 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i8 %22, ptr %35, align 8, !tbaa !217, !alias.scope !227 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !227 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %35, ptr %0, align 8, !tbaa !43 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %36, ptr %0, align 8, !tbaa !43 call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 %.pre.i, ptr %3, align 8, !tbaa !10 - %36 = icmp ugt i64 %.pre.i, 15 - br i1 %36, label %37, label %._crit_edge.i.i - -37: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit - %38 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) #23 - store ptr %38, ptr %0, align 8, !tbaa !45 - %39 = load i64, ptr %3, align 8, !tbaa !10 - store i64 %39, ptr %35, align 8, !tbaa !47 + %37 = icmp ugt i64 %.pre.i, 15 + br i1 %37, label %38, label %._crit_edge.i.i + +38: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit + %39 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) #23 + store ptr %39, ptr %0, align 8, !tbaa !45 + %40 = load i64, ptr %3, align 8, !tbaa !10 + store i64 %40, ptr %36, align 8, !tbaa !47 br label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread, %37, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit - %40 = phi ptr [ %24, %37 ], [ %24, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %23, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - %41 = phi ptr [ %34, %37 ], [ %34, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %30, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - %42 = phi i64 [ %.pre.i, %37 ], [ %.pre.i, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %27, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - %43 = phi ptr [ %38, %37 ], [ %35, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %31, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - switch i64 %42, label %46 [ - i64 1, label %44 +._crit_edge.i.i: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread, %38, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit + %41 = phi ptr [ %24, %38 ], [ %24, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %23, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + %42 = phi ptr [ %35, %38 ], [ %35, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %31, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + %43 = phi i64 [ %.pre.i, %38 ], [ %.pre.i, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %27, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + %44 = phi ptr [ %39, %38 ], [ %36, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %32, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + switch i64 %43, label %47 [ + i64 1, label %45 i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit ] -44: ; preds = %._crit_edge.i.i - %45 = load i8, ptr %40, align 1, !tbaa !47 - store i8 %45, ptr %43, align 1, !tbaa !47 +45: ; preds = %._crit_edge.i.i + %46 = load i8, ptr %41, align 1, !tbaa !47 + store i8 %46, ptr %44, align 1, !tbaa !47 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit -46: ; preds = %._crit_edge.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %43, ptr align 1 %40, i64 %42, i1 false) +47: ; preds = %._crit_edge.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %44, ptr align 1 %41, i64 %43, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %._crit_edge.i.i, %44, %46 - %47 = load i64, ptr %3, align 8, !tbaa !10 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %47, ptr %48, align 8, !tbaa !48 - %49 = load ptr, ptr %0, align 8, !tbaa !45 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 %47 - store i8 0, ptr %50, align 1, !tbaa !47 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %._crit_edge.i.i, %45, %47 + %48 = load i64, ptr %3, align 8, !tbaa !10 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %48, ptr %49, align 8, !tbaa !48 + %50 = load ptr, ptr %0, align 8, !tbaa !45 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 %48 + store i8 0, ptr %51, align 1, !tbaa !47 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %51 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %52 = load i8, ptr %41, align 8, !tbaa !217 - store i8 %52, ptr %51, align 8, !tbaa !217 - %53 = load ptr, ptr %6, align 8, !tbaa !45 - %54 = icmp eq ptr %53, %23 - br i1 %54, label %_ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %52 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %53 = load i8, ptr %42, align 8, !tbaa !217 + store i8 %53, ptr %52, align 8, !tbaa !217 + %54 = load ptr, ptr %6, align 8, !tbaa !45 + %55 = icmp eq ptr %54, %23 + br i1 %55, label %_ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit - %55 = load i64, ptr %23, align 8, !tbaa !47 - %56 = add i64 %55, 1 - call void @_ZdlPvm(ptr noundef %53, i64 noundef %56) #26 + %56 = load i64, ptr %23, align 8, !tbaa !47 + %57 = add i64 %56, 1 + call void @_ZdlPvm(ptr noundef %54, i64 noundef %57) #26 br label %_ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit _ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i diff --git a/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll b/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll index c199a6c2980..a109ba84511 100644 --- a/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll +++ b/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll @@ -516,28 +516,30 @@ define hidden void @"_ZN104_$LT$core..iter..adapters..cloned..Cloned$LT$I$GT$$u2 ; Function Attrs: alwaysinline nounwind nonlazybind uwtable define hidden { ptr, i64 } @"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$8allocate17ha3da7a35c6397d0dE.llvm.10588664184252717122"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #3 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %3 %6 = add i64 %1, -1 %7 = icmp sgt i64 %6, -1 tail call void @llvm.assume(i1 %7) %8 = getelementptr i8, ptr null, i64 %1 + %9 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %9) br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -9: ; preds = %3 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %11 = add i64 %1, -1 - %12 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %12) - %13 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +10: ; preds = %3 + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %12 = add i64 %1, -1 + %13 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %13) + %14 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %9 - %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %13, %9 ] - %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 - %15 = insertvalue { ptr, i64 } %14, i64 %2, 1 - ret { ptr, i64 } %15 +_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %10 + %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] + %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 + %16 = insertvalue { ptr, i64 } %15, i64 %2, 1 + ret { ptr, i64 } %16 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -551,38 +553,40 @@ define internal { i64, i64 } @"_ZN126_$LT$actix_http..body..message_body..Messag ; Function Attrs: alwaysinline nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #3 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = getelementptr i8, ptr null, i64 %1 - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 +11: ; preds = %4 + br i1 %3, label %20, label %15 -11: ; preds = %14, %19, %6 - %.sroa.0.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 +12: ; preds = %15, %20, %6 + %.sroa.0.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 - br label %11 - -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 - br label %11 +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 + br label %12 + +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 + br label %12 } ; Function Attrs: nonlazybind uwtable @@ -2459,25 +2463,27 @@ define hidden noalias noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17h60a7 ; Function Attrs: nounwind nonlazybind uwtable define hidden noalias noundef ptr @_ZN9hashbrown3raw5inner5alloc5inner8do_alloc17h8c3552d9c26b3df3E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #17 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %3 %6 = add i64 %1, -1 %7 = icmp sgt i64 %6, -1 tail call void @llvm.assume(i1 %7) %8 = getelementptr i8, ptr null, i64 %1 + %9 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %9) br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -9: ; preds = %3 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %11 = add i64 %1, -1 - %12 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %12) - %13 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +10: ; preds = %3 + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %12 = add i64 %1, -1 + %13 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %13) + %14 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %9 - %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %13, %9 ] +_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %10 + %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] ret ptr %.sroa.0.0.i } diff --git a/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll b/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll index d1a6b21bed2..57c14b63d0e 100644 --- a/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll +++ b/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll @@ -832,6 +832,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13 %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #26 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13249522725285578715.exit" @@ -1015,7 +1017,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h12516f0 %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -1034,6 +1036,8 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h12516f0 %23 = load ptr, ptr %0, align 8, !alias.scope !203, !nonnull !5, !noundef !5 %24 = sub nsw i64 0, %14 %25 = getelementptr inbounds i8, ptr %23, i64 %24 + %26 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #26, !noalias !203 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hc8e28002ae10e7a5E.llvm.13249522725285578715.exit @@ -1054,7 +1058,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h73e963f %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -1073,6 +1077,8 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h73e963f %23 = load ptr, ptr %0, align 8, !alias.scope !206, !nonnull !5, !noundef !5 %24 = sub nsw i64 0, %14 %25 = getelementptr inbounds i8, ptr %23, i64 %24 + %26 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #26, !noalias !206 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hc8e28002ae10e7a5E.llvm.13249522725285578715.exit @@ -1155,7 +1161,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h1960b0817b1e99faE.llvm.1324952 %37 = add i64 %6, 1 %38 = mul nuw i64 %37, %2 %39 = add i64 %3, -1 - %40 = add nuw i64 %39, %38 + %40 = add nuw i64 %38, %39 %41 = sub i64 0, %3 %42 = and i64 %40, %41 %43 = add i64 %6, 17 @@ -1174,6 +1180,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h1960b0817b1e99faE.llvm.1324952 %51 = load ptr, ptr %0, align 8, !alias.scope !238, !nonnull !5, !noundef !5 %52 = sub nsw i64 0, %42 %53 = getelementptr inbounds i8, ptr %51, i64 %52 + %54 = icmp sgt i64 %39, -1 + tail call void @llvm.assume(i1 %54) tail call void @__rust_dealloc(ptr noundef nonnull %53, i64 noundef %44, i64 noundef %3) #26, !noalias !238 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hc8e28002ae10e7a5E.llvm.13249522725285578715.exit diff --git a/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll b/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll index 3c0af477225..a50ada4fac4 100644 --- a/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll +++ b/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll @@ -6482,25 +6482,27 @@ _ZN10serde_json3ser9Formatter10end_object17h16ac9c73c8dffd40E.exit: ; preds = %3 16: ; preds = %._crit_edge, %_ZN10serde_json3ser9Formatter10end_object17h16ac9c73c8dffd40E.exit %17 = phi i64 [ %.pre, %._crit_edge ], [ %15, %_ZN10serde_json3ser9Formatter10end_object17h16ac9c73c8dffd40E.exit ] - %18 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 - %19 = load i64, ptr %.0.val, align 8, !alias.scope !1674, !noalias !1683, !noundef !9 - %20 = icmp eq i64 %19, %17 - br i1 %20, label %21, label %22 + %18 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %18) + %19 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 + %20 = load i64, ptr %.0.val, align 8, !alias.scope !1674, !noalias !1683, !noundef !9 + %21 = icmp eq i64 %20, %17 + br i1 %21, label %22, label %23 -21: ; preds = %16 +22: ; preds = %16 tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h05fddb391e635b6fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %17, i64 noundef 1), !noalias !1683 - %.pre.i.i.i.i.i6 = load i64, ptr %18, align 8, !alias.scope !1700, !noalias !1683 - br label %22 + %.pre.i.i.i.i.i6 = load i64, ptr %19, align 8, !alias.scope !1700, !noalias !1683 + br label %23 -22: ; preds = %21, %16 - %23 = phi i64 [ %17, %16 ], [ %.pre.i.i.i.i.i6, %21 ] - %24 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %25 = load ptr, ptr %24, align 8, !alias.scope !1700, !noalias !1683, !nonnull !9, !noundef !9 - %26 = getelementptr inbounds i8, ptr %25, i64 %23 - store i8 125, ptr %26, align 1, !noalias !1701 - %27 = load i64, ptr %18, align 8, !alias.scope !1700, !noalias !1683, !noundef !9 - %28 = add i64 %27, 1 - store i64 %28, ptr %18, align 8, !alias.scope !1700, !noalias !1683 +23: ; preds = %22, %16 + %24 = phi i64 [ %17, %16 ], [ %.pre.i.i.i.i.i6, %22 ] + %25 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %26 = load ptr, ptr %25, align 8, !alias.scope !1700, !noalias !1683, !nonnull !9, !noundef !9 + %27 = getelementptr inbounds i8, ptr %26, i64 %24 + store i8 125, ptr %27, align 1, !noalias !1701 + %28 = load i64, ptr %19, align 8, !alias.scope !1700, !noalias !1683, !noundef !9 + %29 = add i64 %28, 1 + store i64 %29, ptr %19, align 8, !alias.scope !1700, !noalias !1683 ret ptr null } diff --git a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll index 14cb2abf456..8a6776567c1 100644 --- a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll +++ b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll @@ -1206,32 +1206,31 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %.sroa.5.0.lcssa = phi i64 [ %4, %2 ], [ %28, %._crit_edge.loopexit ] %.sroa.0.0.lcssa = phi ptr [ %5, %2 ], [ %23, %._crit_edge.loopexit ] %.not.i.not.i = icmp eq i64 %.sroa.5.0.lcssa, 0 - br i1 %.not.i.not.i, label %12, label %14 - -12: ; preds = %._crit_edge - %13 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 - br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit" - -14: ; preds = %._crit_edge - %15 = getelementptr i8, ptr %.sroa.0.0.lcssa, i64 816 - %16 = getelementptr ptr, ptr %15, i64 %.sroa.6.0.lcssa + %12 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 + br i1 %.not.i.not.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit", label %13 + +13: ; preds = %._crit_edge + %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 808 + %15 = icmp samesign ult i64 %.sroa.6.0.lcssa, 11 + tail call void @llvm.assume(i1 %15) + %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !208, !nonnull !11, !noundef !11 %18 = add i64 %.sroa.5.0.lcssa, -1 %.not11.i.i = icmp eq i64 %18, 0 br i1 %.not11.i.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit", label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %14, %.lr.ph.i.i - %.013.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %17, %14 ] - %.01012.i.i = phi i64 [ %21, %.lr.ph.i.i ], [ %18, %14 ] +.lr.ph.i.i: ; preds = %13, %.lr.ph.i.i + %.013.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %17, %13 ] + %.01012.i.i = phi i64 [ %21, %.lr.ph.i.i ], [ %18, %13 ] %19 = getelementptr inbounds nuw i8, ptr %.013.i.i, i64 808 %20 = load ptr, ptr %19, align 8, !noalias !212, !nonnull !11, !noundef !11 %21 = add i64 %.01012.i.i, -1 %.not.i6.i = icmp eq i64 %21, 0 br i1 %.not.i6.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit", label %.lr.ph.i.i -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit": ; preds = %.lr.ph.i.i, %14, %12 - %.sroa.7.0 = phi i64 [ %13, %12 ], [ 0, %14 ], [ 0, %.lr.ph.i.i ] - %.sroa.0.055 = phi ptr [ %.sroa.0.0.lcssa, %12 ], [ %17, %14 ], [ %20, %.lr.ph.i.i ] +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit": ; preds = %.lr.ph.i.i, %13, %._crit_edge + %.sroa.7.0 = phi i64 [ %12, %._crit_edge ], [ 0, %13 ], [ 0, %.lr.ph.i.i ] + %.sroa.0.055 = phi ptr [ %.sroa.0.0.lcssa, %._crit_edge ], [ %17, %13 ], [ %20, %.lr.ph.i.i ] store ptr %.sroa.0.055, ptr %0, align 8 %.sroa.034.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %.sroa.034.sroa.4.0..sroa_idx, align 8 @@ -1298,32 +1297,31 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %.sroa.5.0.lcssa = phi i64 [ %4, %2 ], [ %27, %._crit_edge.loopexit ] %.sroa.0.0.lcssa = phi ptr [ %5, %2 ], [ %22, %._crit_edge.loopexit ] %.not.i.not.i = icmp eq i64 %.sroa.5.0.lcssa, 0 - br i1 %.not.i.not.i, label %12, label %14 - -12: ; preds = %._crit_edge - %13 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 - br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit" - -14: ; preds = %._crit_edge - %15 = getelementptr i8, ptr %.sroa.0.0.lcssa, i64 200 - %16 = getelementptr ptr, ptr %15, i64 %.sroa.6.0.lcssa + %12 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 + br i1 %.not.i.not.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit", label %13 + +13: ; preds = %._crit_edge + %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 192 + %15 = icmp samesign ult i64 %.sroa.6.0.lcssa, 11 + tail call void @llvm.assume(i1 %15) + %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !221, !nonnull !11, !noundef !11 %18 = add i64 %.sroa.5.0.lcssa, -1 %.not11.i.i = icmp eq i64 %18, 0 br i1 %.not11.i.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit", label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %14, %.lr.ph.i.i - %.013.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %17, %14 ] - %.01012.i.i = phi i64 [ %21, %.lr.ph.i.i ], [ %18, %14 ] +.lr.ph.i.i: ; preds = %13, %.lr.ph.i.i + %.013.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %17, %13 ] + %.01012.i.i = phi i64 [ %21, %.lr.ph.i.i ], [ %18, %13 ] %19 = getelementptr inbounds nuw i8, ptr %.013.i.i, i64 192 %20 = load ptr, ptr %19, align 8, !noalias !225, !nonnull !11, !noundef !11 %21 = add i64 %.01012.i.i, -1 %.not.i6.i = icmp eq i64 %21, 0 br i1 %.not.i6.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit", label %.lr.ph.i.i -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit": ; preds = %.lr.ph.i.i, %14, %12 - %.sroa.7.0 = phi i64 [ %13, %12 ], [ 0, %14 ], [ 0, %.lr.ph.i.i ] - %.sroa.0.055 = phi ptr [ %.sroa.0.0.lcssa, %12 ], [ %17, %14 ], [ %20, %.lr.ph.i.i ] +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit": ; preds = %.lr.ph.i.i, %13, %._crit_edge + %.sroa.7.0 = phi i64 [ %12, %._crit_edge ], [ 0, %13 ], [ 0, %.lr.ph.i.i ] + %.sroa.0.055 = phi ptr [ %.sroa.0.0.lcssa, %._crit_edge ], [ %17, %13 ], [ %20, %.lr.ph.i.i ] store ptr %.sroa.0.055, ptr %0, align 8 %.sroa.034.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %.sroa.034.sroa.4.0..sroa_idx, align 8 diff --git a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll index ef7c1f47ff4..ec324e76bda 100644 --- a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll +++ b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll @@ -61,7 +61,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern 13: ; preds = %3 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - br label %29 + br label %30 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit": ; preds = %3 %14 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %1, i64 noundef %5, i64 noundef %9, i8 noundef 1, i8 noundef 0), !noalias !4 @@ -92,32 +92,34 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern store i64 %5, ptr %25, align 8, !alias.scope !23, !noalias !22 call void @_ZN15crossbeam_epoch8internal5Local5defer17h63f66b08c2fc0a6aE(ptr noundef nonnull align 8 %22, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2), !noalias !7 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !22 - br label %27 + br label %28 26: ; preds = %21 + %27 = icmp ne i64 %6, 0 + tail call void @llvm.assume(i1 %27) tail call void @__rust_dealloc(ptr noundef nonnull %7, i64 noundef 2072, i64 noundef 8) #22, !noalias !26 - br label %27 + br label %28 -27: ; preds = %26, %24 +28: ; preds = %26, %24 %.sroa.4.8.copyload = load i64, ptr %11, align 8, !noalias !35 %.sroa.7.8..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 %.sroa.7.8.copyload = load i64, ptr %.sroa.7.8..sroa_idx, align 8, !noalias !35 %.sroa.8.8..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !36) - %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.4.8.copyload, ptr %28, align 8, !alias.scope !39 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.4.8.copyload, ptr %29, align 8, !alias.scope !39 %.sroa.7.8..sroa_idx5 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.7.8.copyload, ptr %.sroa.7.8..sroa_idx5, align 8, !alias.scope !39 %.sroa.8.8..sroa_idx7 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2048) %.sroa.8.8..sroa_idx7, ptr noundef nonnull align 8 dereferenceable(2048) %.sroa.8.8..sroa_idx, i64 2048, i1 false) br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit": ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit", %27 - %storemerge.i3 = phi i64 [ 0, %27 ], [ 1, %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit" ] +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit": ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit", %28 + %storemerge.i3 = phi i64 [ 0, %28 ], [ 1, %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit" ] store i64 %storemerge.i3, ptr %0, align 8, !alias.scope !41, !noalias !36 - br label %29 + br label %30 -29: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit", %13 +30: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit", %13 ret void } @@ -166,14 +168,16 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern 28: ; preds = %21 %29 = and i64 %22, -8 %30 = inttoptr i64 %29 to ptr + %31 = icmp ne i64 %29, 0 + tail call void @llvm.assume(i1 %31) tail call void @__rust_dealloc(ptr noundef nonnull %30, i64 noundef 2072, i64 noundef 8) #22, !noalias !53 br label %_ZN15crossbeam_epoch5guard5Guard15defer_unchecked17hef6a54156fe241f4E.exit _ZN15crossbeam_epoch5guard5Guard15defer_unchecked17hef6a54156fe241f4E.exit: ; preds = %26, %28 - %31 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %32 = load ptr, ptr %31, align 8, !nonnull !21, !align !42, !noundef !21 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 32 %33 = load ptr, ptr %32, align 8, !nonnull !21, !align !42, !noundef !21 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %0, ptr noundef nonnull align 8 dereferenceable(2064) %33, i64 2064, i1 false) + %34 = load ptr, ptr %33, align 8, !nonnull !21, !align !42, !noundef !21 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %0, ptr noundef nonnull align 8 dereferenceable(2064) %34, i64 2064, i1 false) ret void } @@ -209,18 +213,18 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc br i1 %17, label %.lr.ph._crit_edge, label %"_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit" .lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader - %.lcssa63 = phi i64 [ %10, %.lr.ph.preheader ], [ %34, %.lr.ph ] - %.lcssa61 = phi i64 [ %9, %.lr.ph.preheader ], [ %33, %.lr.ph ] - %.lcssa59 = phi ptr [ %7, %.lr.ph.preheader ], [ %31, %.lr.ph ] + %.lcssa69 = phi i64 [ %10, %.lr.ph.preheader ], [ %34, %.lr.ph ] + %.lcssa67 = phi i64 [ %9, %.lr.ph.preheader ], [ %33, %.lr.ph ] + %.lcssa65 = phi ptr [ %7, %.lr.ph.preheader ], [ %31, %.lr.ph ] %.lcssa = phi i64 [ %5, %.lr.ph.preheader ], [ %29, %.lr.ph ] - %18 = inttoptr i64 %.lcssa63 to ptr + %18 = inttoptr i64 %.lcssa69 to ptr %19 = getelementptr inbounds nuw i8, ptr %1, i64 128 %20 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %19, i8 noundef 0), !noalias !69 %21 = icmp eq i64 %.lcssa, %20 br i1 %21, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i", label %23 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i": ; preds = %.lr.ph._crit_edge - %22 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %19, i64 noundef %.lcssa, i64 noundef %.lcssa61, i8 noundef 1, i8 noundef 0), !noalias !77 + %22 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %19, i64 noundef %.lcssa, i64 noundef %.lcssa67, i8 noundef 1, i8 noundef 0), !noalias !77 br label %23 23: ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i", %.lr.ph._crit_edge @@ -239,7 +243,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread30" 28: ; preds = %23 - tail call void @__rust_dealloc(ptr noundef nonnull %.lcssa59, i64 noundef 2072, i64 noundef 8) #22, !noalias !88 + tail call void @__rust_dealloc(ptr noundef nonnull %.lcssa65, i64 noundef 2072, i64 noundef 8) #22, !noalias !88 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread30" "_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread30": ; preds = %26, %28 @@ -2711,7 +2715,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 %4 = alloca { ptr, { [3 x i64] }, {} }, align 8 %5 = load i64, ptr %1, align 8, !range !132, !noundef !21 %trunc = trunc nuw i64 %5 to i1 - br i1 %trunc, label %31, label %6 + br i1 %trunc, label %32, label %6 6: ; preds = %3 %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !21, !noundef !21 @@ -2762,30 +2766,32 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 25: ; preds = %18 %26 = and i64 %19, -8 %27 = inttoptr i64 %26 to ptr + %28 = icmp ne i64 %26, 0 + tail call void @llvm.assume(i1 %28) tail call void @__rust_dealloc(ptr noundef nonnull %27, i64 noundef 2072, i64 noundef 8) #22, !noalias !693 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" "_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit": ; preds = %23, %25 - %28 = icmp ne ptr %.sroa.7.0.copyload, null - tail call void @llvm.assume(i1 %28) - %29 = load ptr, ptr %.sroa.7.0.copyload, align 8, !noalias !679, !nonnull !21, !align !42, !noundef !21 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %30, ptr noundef nonnull align 8 dereferenceable(2064) %29, i64 2064, i1 false) - br label %38 - -31: ; preds = %3 - %32 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %33 = load i64, ptr %32, align 8, !noundef !21 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %35 = load i64, ptr %34, align 8, !noundef !21 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %33, ptr %36, align 8 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %35, ptr %37, align 8 - br label %38 - -38: ; preds = %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit", %31 - %storemerge = phi i64 [ 0, %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" ], [ 1, %31 ] + %29 = icmp ne ptr %.sroa.7.0.copyload, null + tail call void @llvm.assume(i1 %29) + %30 = load ptr, ptr %.sroa.7.0.copyload, align 8, !noalias !679, !nonnull !21, !align !42, !noundef !21 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %31, ptr noundef nonnull align 8 dereferenceable(2064) %30, i64 2064, i1 false) + br label %39 + +32: ; preds = %3 + %33 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %34 = load i64, ptr %33, align 8, !noundef !21 + %35 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %36 = load i64, ptr %35, align 8, !noundef !21 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %34, ptr %37, align 8 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %36, ptr %38, align 8 + br label %39 + +39: ; preds = %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit", %32 + %storemerge = phi i64 [ 0, %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" ], [ 1, %32 ] store i64 %storemerge, ptr %0, align 8 ret void } diff --git a/bench/mitsuba3/optimized/codeholder.ll b/bench/mitsuba3/optimized/codeholder.ll index 8d91ae8b853..7690c55a7a3 100644 --- a/bench/mitsuba3/optimized/codeholder.ll +++ b/bench/mitsuba3/optimized/codeholder.ll @@ -1217,7 +1217,7 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl 7: ; preds = %3 store ptr %1, ptr %0, align 8, !tbaa !99 - br label %147 + br label %148 8: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -1232,13 +1232,13 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 br label %15 -15: ; preds = %130, %8 - %16 = phi ptr [ null, %8 ], [ %17, %130 ] - %17 = phi ptr [ null, %8 ], [ %55, %130 ] - %18 = phi ptr [ %4, %8 ], [ %137, %130 ] - %19 = phi ptr [ %5, %8 ], [ %141, %130 ] - %20 = phi i64 [ 0, %8 ], [ %135, %130 ] - %21 = phi i64 [ 0, %8 ], [ %20, %130 ] +15: ; preds = %131, %8 + %16 = phi ptr [ null, %8 ], [ %17, %131 ] + %17 = phi ptr [ null, %8 ], [ %55, %131 ] + %18 = phi ptr [ %4, %8 ], [ %138, %131 ] + %19 = phi ptr [ %5, %8 ], [ %142, %131 ] + %20 = phi i64 [ 0, %8 ], [ %136, %131 ] + %21 = phi i64 [ 0, %8 ], [ %20, %131 ] %22 = icmp eq ptr %19, null br i1 %22, label %23, label %28 @@ -1296,13 +1296,13 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %58 = icmp eq i64 %57, 0 %59 = icmp eq ptr %17, null %60 = or i1 %59, %58 - br i1 %60, label %128, label %61 + br i1 %60, label %129, label %61 61: ; preds = %54 %62 = load i64, ptr %17, align 8, !tbaa !104 %63 = and i64 %62, 1 %64 = icmp eq i64 %63, 0 - br i1 %64, label %128, label %65 + br i1 %64, label %129, label %65 65: ; preds = %61 %66 = icmp ne ptr %16, null @@ -1324,99 +1324,101 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %81 = load i64, ptr %80, align 8, !tbaa !104 %82 = and i64 %81, -2 %83 = inttoptr i64 %82 to ptr - %84 = getelementptr inbounds nuw i64, ptr %83, i64 %77 - %85 = load i64, ptr %84, align 8, !tbaa !104 - %86 = and i64 %85, -2 - br i1 %75, label %87, label %90 - -87: ; preds = %65 - %88 = and i64 %81, 1 - %89 = or disjoint i64 %86, %88 - br label %112 - -90: ; preds = %65 - %91 = inttoptr i64 %86 to ptr - %92 = icmp ne i64 %86, 0 - tail call void @llvm.assume(i1 %92) - %93 = getelementptr inbounds nuw i64, ptr %91, i64 %79 - %94 = load i64, ptr %93, align 8, !tbaa !104 - %95 = and i64 %94, -2 - %96 = and i64 %85, 1 - %97 = or disjoint i64 %95, %96 - store i64 %97, ptr %84, align 8, !tbaa !104 - %98 = load i64, ptr %93, align 8, !tbaa !104 - %99 = and i64 %98, 1 - %100 = or disjoint i64 %99, %82 - store i64 %100, ptr %93, align 8, !tbaa !104 - %101 = load i64, ptr %83, align 8, !tbaa !104 - %102 = or i64 %101, 1 - store i64 %102, ptr %83, align 8, !tbaa !104 - %103 = load i64, ptr %91, align 8, !tbaa !104 - %104 = and i64 %103, -2 - store i64 %104, ptr %91, align 8, !tbaa !104 - %105 = load i64, ptr %80, align 8, !tbaa !104 - %106 = and i64 %105, 1 - %107 = or disjoint i64 %106, %86 - store i64 %107, ptr %80, align 8, !tbaa !104 - %108 = getelementptr inbounds nuw i64, ptr %91, i64 %77 - %109 = load i64, ptr %108, align 8, !tbaa !104 - %110 = and i64 %109, -2 - %111 = or disjoint i64 %110, %106 - br label %112 - -112: ; preds = %90, %87 - %113 = phi i64 [ %111, %90 ], [ %89, %87 ] - %114 = phi ptr [ %108, %90 ], [ %84, %87 ] - %115 = phi ptr [ %91, %90 ], [ %83, %87 ] - %116 = phi i64 [ %86, %90 ], [ %82, %87 ] - store i64 %113, ptr %80, align 8, !tbaa !104 - %117 = load i64, ptr %114, align 8, !tbaa !104 - %118 = and i64 %117, 1 - %119 = ptrtoint ptr %16 to i64 - %120 = or i64 %118, %119 - store i64 %120, ptr %114, align 8, !tbaa !104 - %121 = load i64, ptr %16, align 8, !tbaa !104 - %122 = or i64 %121, 1 - store i64 %122, ptr %16, align 8, !tbaa !104 - %123 = load i64, ptr %115, align 8, !tbaa !104 - %124 = and i64 %123, -2 - store i64 %124, ptr %115, align 8, !tbaa !104 + %84 = icmp ne i64 %82, 0 + tail call void @llvm.assume(i1 %84) + %85 = getelementptr inbounds nuw i64, ptr %83, i64 %77 + %86 = load i64, ptr %85, align 8, !tbaa !104 + %87 = and i64 %86, -2 + br i1 %75, label %88, label %91 + +88: ; preds = %65 + %89 = and i64 %81, 1 + %90 = or disjoint i64 %87, %89 + br label %113 + +91: ; preds = %65 + %92 = inttoptr i64 %87 to ptr + %93 = icmp ne i64 %87, 0 + tail call void @llvm.assume(i1 %93) + %94 = getelementptr inbounds nuw i64, ptr %92, i64 %79 + %95 = load i64, ptr %94, align 8, !tbaa !104 + %96 = and i64 %95, -2 + %97 = and i64 %86, 1 + %98 = or disjoint i64 %96, %97 + store i64 %98, ptr %85, align 8, !tbaa !104 + %99 = load i64, ptr %94, align 8, !tbaa !104 + %100 = and i64 %99, 1 + %101 = or disjoint i64 %100, %82 + store i64 %101, ptr %94, align 8, !tbaa !104 + %102 = load i64, ptr %83, align 8, !tbaa !104 + %103 = or i64 %102, 1 + store i64 %103, ptr %83, align 8, !tbaa !104 + %104 = load i64, ptr %92, align 8, !tbaa !104 + %105 = and i64 %104, -2 + store i64 %105, ptr %92, align 8, !tbaa !104 + %106 = load i64, ptr %80, align 8, !tbaa !104 + %107 = and i64 %106, 1 + %108 = or disjoint i64 %107, %87 + store i64 %108, ptr %80, align 8, !tbaa !104 + %109 = getelementptr inbounds nuw i64, ptr %92, i64 %77 + %110 = load i64, ptr %109, align 8, !tbaa !104 + %111 = and i64 %110, -2 + %112 = or disjoint i64 %111, %107 + br label %113 + +113: ; preds = %91, %88 + %114 = phi i64 [ %112, %91 ], [ %90, %88 ] + %115 = phi ptr [ %109, %91 ], [ %85, %88 ] + %116 = phi ptr [ %92, %91 ], [ %83, %88 ] + %117 = phi i64 [ %87, %91 ], [ %82, %88 ] + store i64 %114, ptr %80, align 8, !tbaa !104 + %118 = load i64, ptr %115, align 8, !tbaa !104 + %119 = and i64 %118, 1 + %120 = ptrtoint ptr %16 to i64 + %121 = or i64 %119, %120 + store i64 %121, ptr %115, align 8, !tbaa !104 + %122 = load i64, ptr %16, align 8, !tbaa !104 + %123 = or i64 %122, 1 + store i64 %123, ptr %16, align 8, !tbaa !104 + %124 = load i64, ptr %116, align 8, !tbaa !104 + %125 = and i64 %124, -2 + store i64 %125, ptr %116, align 8, !tbaa !104 %.sroa.sel = select i1 %70, ptr %67, ptr %18 - %125 = load i64, ptr %.sroa.sel, align 8, !tbaa !104 - %126 = and i64 %125, 1 - %127 = or disjoint i64 %126, %116 - store i64 %127, ptr %.sroa.sel, align 8, !tbaa !104 - br label %128 - -128: ; preds = %112, %61, %54 - %129 = icmp eq ptr %55, %1 - br i1 %129, label %142, label %130 - -130: ; preds = %128 - %131 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %132 = load i64, ptr %131, align 8, !tbaa !100 - %133 = load i64, ptr %14, align 8, !tbaa !100 - %134 = icmp ult i64 %132, %133 - %135 = zext i1 %134 to i64 - %136 = icmp eq ptr %16, null - %137 = select i1 %136, ptr %18, ptr %16 - %138 = getelementptr inbounds nuw i64, ptr %55, i64 %135 - %139 = load i64, ptr %138, align 8, !tbaa !104 - %140 = and i64 %139, -2 - %141 = inttoptr i64 %140 to ptr + %126 = load i64, ptr %.sroa.sel, align 8, !tbaa !104 + %127 = and i64 %126, 1 + %128 = or disjoint i64 %127, %117 + store i64 %128, ptr %.sroa.sel, align 8, !tbaa !104 + br label %129 + +129: ; preds = %113, %61, %54 + %130 = icmp eq ptr %55, %1 + br i1 %130, label %143, label %131 + +131: ; preds = %129 + %132 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %133 = load i64, ptr %132, align 8, !tbaa !100 + %134 = load i64, ptr %14, align 8, !tbaa !100 + %135 = icmp ult i64 %133, %134 + %136 = zext i1 %135 to i64 + %137 = icmp eq ptr %16, null + %138 = select i1 %137, ptr %18, ptr %16 + %139 = getelementptr inbounds nuw i64, ptr %55, i64 %136 + %140 = load i64, ptr %139, align 8, !tbaa !104 + %141 = and i64 %140, -2 + %142 = inttoptr i64 %141 to ptr br label %15, !llvm.loop !110 -142: ; preds = %128 - %143 = load i64, ptr %10, align 8, !tbaa !104 - %144 = inttoptr i64 %143 to ptr - store ptr %144, ptr %0, align 8, !tbaa !99 - %145 = load i64, ptr %144, align 8, !tbaa !104 - %146 = and i64 %145, -2 - store i64 %146, ptr %144, align 8, !tbaa !104 +143: ; preds = %129 + %144 = load i64, ptr %10, align 8, !tbaa !104 + %145 = inttoptr i64 %144 to ptr + store ptr %145, ptr %0, align 8, !tbaa !99 + %146 = load i64, ptr %145, align 8, !tbaa !104 + %147 = and i64 %146, -2 + store i64 %147, ptr %145, align 8, !tbaa !104 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %147 + br label %148 -147: ; preds = %142, %7 +148: ; preds = %143, %7 ret void } diff --git a/bench/mold/optimized/cmdline.cc.X86_64.ll b/bench/mold/optimized/cmdline.cc.X86_64.ll index 9370f9fd8af..bbbf8f10a11 100644 --- a/bench/mold/optimized/cmdline.cc.X86_64.ll +++ b/bench/mold/optimized/cmdline.cc.X86_64.ll @@ -2144,30 +2144,32 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %88, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %.not.i.i.i = icmp ugt i64 %86, 15 - br i1 %.not.i.i.i, label %90, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit.i + %89 = icmp ult i64 %83, 16 + call void @llvm.assume(i1 %89) + %.not.i.i.i = icmp eq i64 %83, 15 + br i1 %.not.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %89 = load i64, ptr %50, align 8 - %.not.i.i.i62 = icmp ugt i64 %86, %89 + %90 = load i64, ptr %50, align 8 + %.not.i.i.i62 = icmp ugt i64 %86, %90 br i1 %.not.i.i.i62, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit.i -90: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i %91 = load i64, ptr %50, align 8 - br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 + br label %94 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread, %90 - %92 = phi i64 [ %89, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ %91, %90 ] - %93 = phi i64 [ %89, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ 15, %90 ] - %94 = icmp slt i64 %83, -1 - br i1 %94, label %95, label %96 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread + %92 = icmp slt i64 %83, -1 + br i1 %92, label %93, label %94 -95: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 +93: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.428) #32 unreachable -96: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 - %97 = shl nuw i64 %93, 1 +94: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 + %95 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread ], [ %90, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 ] + %96 = phi i64 [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread ], [ %90, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 ] + %97 = shl nuw i64 %95, 1 %98 = icmp ult i64 %86, %97 %spec.store.select.i.i45 = call i64 @llvm.umin.i64(i64 %97, i64 9223372036854775807) %.0.i37 = select i1 %98, i64 %spec.store.select.i.i45, i64 %86 @@ -2175,11 +2177,11 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36: ; pr %100 = icmp slt i64 %99, 0 br i1 %100, label %101, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i38, !prof !32 -101: ; preds = %96 +101: ; preds = %94 call void @_ZSt17__throw_bad_allocv() #32 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i38: ; preds = %96 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i38: ; preds = %94 %102 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %99) #33 switch i64 %83, label %105 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i42 @@ -2204,7 +2206,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm.exit46 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i43: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i42 - %107 = add i64 %92, 1 + %107 = add i64 %96, 1 call void @_ZdlPvm(ptr noundef %87, i64 noundef %107) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm.exit46 @@ -2244,30 +2246,32 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %120, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i12.i - %.not.i.i14.i = icmp ugt i64 %118, 15 - br i1 %.not.i.i14.i, label %122, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit18.i + %121 = icmp ult i64 %115, 16 + call void @llvm.assume(i1 %121) + %.not.i.i14.i = icmp eq i64 %115, 15 + br i1 %.not.i.i14.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit18.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i12.i - %121 = load i64, ptr %50, align 8 - %.not.i.i14.i63 = icmp ugt i64 %118, %121 + %122 = load i64, ptr %50, align 8 + %.not.i.i14.i63 = icmp ugt i64 %118, %122 br i1 %.not.i.i14.i63, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit18.i -122: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i %123 = load i64, ptr %50, align 8 - br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + br label %126 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread, %122 - %124 = phi i64 [ %121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread ], [ %123, %122 ] - %125 = phi i64 [ %121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread ], [ 15, %122 ] - %126 = icmp slt i64 %115, -1 - br i1 %126, label %127, label %128 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread + %124 = icmp slt i64 %115, -1 + br i1 %124, label %125, label %126 -127: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +125: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.428) #32 unreachable -128: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - %129 = shl nuw i64 %125, 1 +126: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + %127 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %122, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %128 = phi i64 [ %123, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %122, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %129 = shl nuw i64 %127, 1 %130 = icmp ult i64 %118, %129 %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %129, i64 9223372036854775807) %.0.i = select i1 %130, i64 %spec.store.select.i.i, i64 %118 @@ -2275,11 +2279,11 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred %132 = icmp slt i64 %131, 0 br i1 %132, label %133, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i, !prof !32 -133: ; preds = %128 +133: ; preds = %126 call void @_ZSt17__throw_bad_allocv() #32 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %128 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %126 %134 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %131) #33 switch i64 %115, label %137 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i @@ -2304,7 +2308,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i34: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - %139 = add i64 %124, 1 + %139 = add i64 %128, 1 call void @_ZdlPvm(ptr noundef %119, i64 noundef %139) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm.exit diff --git a/bench/msgpack/optimized/msgpack_variant_mapbased.ll b/bench/msgpack/optimized/msgpack_variant_mapbased.ll index 659222538cd..00962005869 100644 --- a/bench/msgpack/optimized/msgpack_variant_mapbased.ll +++ b/bench/msgpack/optimized/msgpack_variant_mapbased.ll @@ -13540,117 +13540,119 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds store ptr %38, ptr %10, align 8, !tbaa !4, !alias.scope !331 %126 = load ptr, ptr %11, align 8, !tbaa !32, !noalias !331 %127 = icmp eq ptr %126, %36 - br i1 %127, label %.thread, label %130 + br i1 %127, label %.thread, label %131 .thread: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i %128 = load i64, ptr %37, align 8, !tbaa !10, !noalias !331 - %129 = add nuw nsw i64 %128, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %38, ptr noundef nonnull align 8 dereferenceable(1) %36, i64 %129, i1 false) + %129 = icmp ult i64 %128, 16 + call void @llvm.assume(i1 %129) + %130 = add nuw nsw i64 %128, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %38, ptr noundef nonnull align 8 dereferenceable(1) %36, i64 %130, i1 false) store i64 %128, ptr %39, align 8, !tbaa !10, !alias.scope !331 store i64 0, ptr %37, align 8, !tbaa !10, !noalias !331 store i8 0, ptr %36, align 8, !tbaa !13, !noalias !331 store ptr %41, ptr %40, align 8, !tbaa !4 br label %._crit_edge.i.i.i.i.i.i -130: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i +131: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i store ptr %126, ptr %10, align 8, !tbaa !32, !alias.scope !331 - %131 = load i64, ptr %36, align 8, !tbaa !13, !noalias !331 - store i64 %131, ptr %38, align 8, !tbaa !13, !alias.scope !331 + %132 = load i64, ptr %36, align 8, !tbaa !13, !noalias !331 + store i64 %132, ptr %38, align 8, !tbaa !13, !alias.scope !331 %.pre.i = load i64, ptr %37, align 8, !tbaa !10, !noalias !331 store i64 %.pre.i, ptr %39, align 8, !tbaa !10, !alias.scope !331 store ptr %36, ptr %11, align 8, !tbaa !32, !noalias !331 store i64 0, ptr %37, align 8, !tbaa !10, !noalias !331 store i8 0, ptr %36, align 8, !tbaa !13, !noalias !331 store ptr %41, ptr %40, align 8, !tbaa !4 - %132 = icmp ugt i64 %.pre.i, 15 - br i1 %132, label %133, label %._crit_edge.i.i.i.i.i.i + %133 = icmp ugt i64 %.pre.i, 15 + br i1 %133, label %134, label %._crit_edge.i.i.i.i.i.i -133: ; preds = %130 - %134 = icmp slt i64 %.pre.i, 0 - br i1 %134, label %.noexc.i.i.i.i.i, label %135 +134: ; preds = %131 + %135 = icmp slt i64 %.pre.i, 0 + br i1 %135, label %.noexc.i.i.i.i.i, label %136 -.noexc.i.i.i.i.i: ; preds = %133 +.noexc.i.i.i.i.i: ; preds = %134 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.9) #32 to label %.noexc64 unwind label %.loopexit.split-lp108 .noexc64: ; preds = %.noexc.i.i.i.i.i unreachable -135: ; preds = %133 - %136 = add nuw i64 %.pre.i, 1 - %137 = icmp slt i64 %136, 0 - br i1 %137, label %.noexc6.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i, !prof !114 +136: ; preds = %134 + %137 = add nuw i64 %.pre.i, 1 + %138 = icmp slt i64 %137, 0 + br i1 %138, label %.noexc6.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i, !prof !114 -.noexc6.i.i.i.i.i: ; preds = %135 +.noexc6.i.i.i.i.i: ; preds = %136 invoke void @_ZSt17__throw_bad_allocv() #32 to label %.noexc65 unwind label %.loopexit.split-lp108 .noexc65: ; preds = %.noexc6.i.i.i.i.i unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i: ; preds = %135 - %138 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %136) #35 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i: ; preds = %136 + %139 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %137) #35 to label %.noexc66 unwind label %.loopexit107 .noexc66: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i - store ptr %138, ptr %40, align 8, !tbaa !32 + store ptr %139, ptr %40, align 8, !tbaa !32 store i64 %.pre.i, ptr %41, align 8, !tbaa !13 br label %._crit_edge.i.i.i.i.i.i -._crit_edge.i.i.i.i.i.i: ; preds = %.thread, %.noexc66, %130 - %139 = phi i64 [ %.pre.i, %.noexc66 ], [ %.pre.i, %130 ], [ %128, %.thread ] - %140 = phi ptr [ %126, %.noexc66 ], [ %126, %130 ], [ %38, %.thread ] - %141 = phi ptr [ %138, %.noexc66 ], [ %41, %130 ], [ %41, %.thread ] - switch i64 %139, label %144 [ - i64 1, label %142 - i64 0, label %145 +._crit_edge.i.i.i.i.i.i: ; preds = %.thread, %.noexc66, %131 + %140 = phi i64 [ %.pre.i, %.noexc66 ], [ %.pre.i, %131 ], [ %128, %.thread ] + %141 = phi ptr [ %126, %.noexc66 ], [ %126, %131 ], [ %38, %.thread ] + %142 = phi ptr [ %139, %.noexc66 ], [ %41, %131 ], [ %41, %.thread ] + switch i64 %140, label %145 [ + i64 1, label %143 + i64 0, label %146 ] -142: ; preds = %._crit_edge.i.i.i.i.i.i - %143 = load i8, ptr %140, align 1, !tbaa !13 - store i8 %143, ptr %141, align 1, !tbaa !13 - br label %145 +143: ; preds = %._crit_edge.i.i.i.i.i.i + %144 = load i8, ptr %141, align 1, !tbaa !13 + store i8 %144, ptr %142, align 1, !tbaa !13 + br label %146 -144: ; preds = %._crit_edge.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %141, ptr align 1 %140, i64 %139, i1 false) - br label %145 +145: ; preds = %._crit_edge.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %142, ptr align 1 %141, i64 %140, i1 false) + br label %146 -145: ; preds = %144, %142, %._crit_edge.i.i.i.i.i.i - store i64 %139, ptr %42, align 8, !tbaa !10 - %146 = getelementptr inbounds nuw i8, ptr %141, i64 %139 - store i8 0, ptr %146, align 1, !tbaa !13 +146: ; preds = %145, %143, %._crit_edge.i.i.i.i.i.i + store i64 %140, ptr %42, align 8, !tbaa !10 + %147 = getelementptr inbounds nuw i8, ptr %142, i64 %140 + store i8 0, ptr %147, align 1, !tbaa !13 store i32 5, ptr %9, align 8, !tbaa !234 invoke void @_ZN5boost7variantIN7msgpack2v14type5nil_tEJblmdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16basic_string_refIcS8_EESt6vectorIcS9_ENS3_7raw_refENS3_3extENS3_7ext_refENS_17recursive_wrapperISD_INS3_13basic_variantISC_SF_SH_EESaISK_EEEENSI_ISt3mapISK_SK_St4lessISK_ESaISt4pairIKSK_SK_EEEEENSI_ISt8multimapISK_SK_SQ_SU_EEEEE14variant_assignEOS10_(ptr noundef nonnull align 8 dereferenceable(40) %84, ptr noundef nonnull align 8 dereferenceable(40) %9) - to label %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit unwind label %156 + to label %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit unwind label %157 -_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit: ; preds = %145 +_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit: ; preds = %146 call void @_ZN5boost7variantIN7msgpack2v14type5nil_tEJblmdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16basic_string_refIcS8_EESt6vectorIcS9_ENS3_7raw_refENS3_3extENS3_7ext_refENS_17recursive_wrapperISD_INS3_13basic_variantISC_SF_SH_EESaISK_EEEENSI_ISt3mapISK_SK_St4lessISK_ESaISt4pairIKSK_SK_EEEEENSI_ISt8multimapISK_SK_SQ_SU_EEEEE15destroy_contentEv(ptr noundef nonnull align 8 dereferenceable(40) %9) #30 - %147 = load ptr, ptr %10, align 8, !tbaa !32 - %148 = icmp eq ptr %147, %38 - br i1 %148, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 + %148 = load ptr, ptr %10, align 8, !tbaa !32 + %149 = icmp eq ptr %148, %38 + br i1 %149, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68: ; preds = %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit - %149 = load i64, ptr %38, align 8, !tbaa !13 - %150 = add i64 %149, 1 - call void @_ZdlPvm(ptr noundef %147, i64 noundef %150) #31 + %150 = load i64, ptr %38, align 8, !tbaa !13 + %151 = add i64 %150, 1 + call void @_ZdlPvm(ptr noundef %148, i64 noundef %151) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 - %151 = load ptr, ptr %11, align 8, !tbaa !32 - %152 = icmp eq ptr %151, %36 - br i1 %152, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 + %152 = load ptr, ptr %11, align 8, !tbaa !32 + %153 = icmp eq ptr %152, %36 + br i1 %153, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %153 = load i64, ptr %36, align 8, !tbaa !13 - %154 = add i64 %153, 1 - call void @_ZdlPvm(ptr noundef %151, i64 noundef %154) #31 + %154 = load i64, ptr %36, align 8, !tbaa !13 + %155 = add i64 %154, 1 + call void @_ZdlPvm(ptr noundef %152, i64 noundef %155) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) - %155 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.091.0137) #36 + %156 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.091.0137) #36 br label %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit53.thread .loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i @@ -13676,41 +13678,41 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZN .loopexit107: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i %lpad.loopexit109 = landingpad { ptr, i32 } cleanup - br label %158 + br label %159 .loopexit.split-lp108: ; preds = %.noexc.i.i.i.i.i, %.noexc6.i.i.i.i.i %lpad.loopexit.split-lp110 = landingpad { ptr, i32 } cleanup - br label %158 + br label %159 -156: ; preds = %145 - %157 = landingpad { ptr, i32 } +157: ; preds = %146 + %158 = landingpad { ptr, i32 } cleanup call void @_ZN5boost7variantIN7msgpack2v14type5nil_tEJblmdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16basic_string_refIcS8_EESt6vectorIcS9_ENS3_7raw_refENS3_3extENS3_7ext_refENS_17recursive_wrapperISD_INS3_13basic_variantISC_SF_SH_EESaISK_EEEENSI_ISt3mapISK_SK_St4lessISK_ESaISt4pairIKSK_SK_EEEEENSI_ISt8multimapISK_SK_SQ_SU_EEEEE15destroy_contentEv(ptr noundef nonnull align 8 dereferenceable(40) %9) #30 - br label %158 - -158: ; preds = %.loopexit107, %.loopexit.split-lp108, %156 - %.pn = phi { ptr, i32 } [ %157, %156 ], [ %lpad.loopexit109, %.loopexit107 ], [ %lpad.loopexit.split-lp110, %.loopexit.split-lp108 ] - %159 = load ptr, ptr %10, align 8, !tbaa !32 - %160 = icmp eq ptr %159, %38 - br i1 %160, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72: ; preds = %158 - %161 = load i64, ptr %38, align 8, !tbaa !13 - %162 = add i64 %161, 1 - call void @_ZdlPvm(ptr noundef %159, i64 noundef %162) #31 + br label %159 + +159: ; preds = %.loopexit107, %.loopexit.split-lp108, %157 + %.pn = phi { ptr, i32 } [ %158, %157 ], [ %lpad.loopexit109, %.loopexit107 ], [ %lpad.loopexit.split-lp110, %.loopexit.split-lp108 ] + %160 = load ptr, ptr %10, align 8, !tbaa !32 + %161 = icmp eq ptr %160, %38 + br i1 %161, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72: ; preds = %159 + %162 = load i64, ptr %38, align 8, !tbaa !13 + %163 = add i64 %162, 1 + call void @_ZdlPvm(ptr noundef %160, i64 noundef %163) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74: ; preds = %158, %.loopexit102, %.loopexit.split-lp103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 - %.pn.pn = phi { ptr, i32 } [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 ], [ %lpad.loopexit.split-lp105, %.loopexit.split-lp103 ], [ %lpad.loopexit104, %.loopexit102 ], [ %.pn, %158 ] - %163 = load ptr, ptr %11, align 8, !tbaa !32 - %164 = icmp eq ptr %163, %36 - br i1 %164, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74: ; preds = %159, %.loopexit102, %.loopexit.split-lp103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 + %.pn.pn = phi { ptr, i32 } [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 ], [ %lpad.loopexit.split-lp105, %.loopexit.split-lp103 ], [ %lpad.loopexit104, %.loopexit102 ], [ %.pn, %159 ] + %164 = load ptr, ptr %11, align 8, !tbaa !32 + %165 = icmp eq ptr %164, %36 + br i1 %165, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74 - %165 = load i64, ptr %36, align 8, !tbaa !13 - %166 = add i64 %165, 1 - call void @_ZdlPvm(ptr noundef %163, i64 noundef %166) #31 + %166 = load i64, ptr %36, align 8, !tbaa !13 + %167 = add i64 %166, 1 + call void @_ZdlPvm(ptr noundef %164, i64 noundef %167) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74, %.loopexit, %.loopexit.split-lp, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75 @@ -13721,9 +13723,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77: ; preds = %_ZN br label %common.resume _ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit53.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i42, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNK7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEE19as_boost_string_refEv.exit, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i49, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit46, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit39.thread - %.sroa.091.1 = phi ptr [ %77, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit39.thread ], [ %78, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit46 ], [ %155, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i49 ], [ %.sroa.091.0137, %_ZNK7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEE19as_boost_string_refEv.exit ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i42 ] - %167 = icmp eq ptr %.sroa.091.1, %34 - br i1 %167, label %._crit_edge, label %55, !llvm.loop !334 + %.sroa.091.1 = phi ptr [ %77, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit39.thread ], [ %78, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit46 ], [ %156, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i49 ], [ %.sroa.091.0137, %_ZNK7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEE19as_boost_string_refEv.exit ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i42 ] + %168 = icmp eq ptr %.sroa.091.1, %34 + br i1 %168, label %._crit_edge, label %55, !llvm.loop !334 ._crit_edge: ; preds = %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit53.thread, %_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit ret void diff --git a/bench/nix/optimized/archive.ll b/bench/nix/optimized/archive.ll index 3cdc0bca124..149d6fe478f 100644 --- a/bench/nix/optimized/archive.ll +++ b/bench/nix/optimized/archive.ll @@ -3892,24 +3892,25 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %713, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %.not.i.i.i.i = icmp ugt i64 %711, 15 - br i1 %.not.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, label %715 + %714 = icmp ult i64 %709, 16 + call void @llvm.assume(i1 %714) + %.not.i.i.i.i.not = icmp eq i64 %709, 0 + br i1 %.not.i.i.i.i.not, label %716, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %714 = load i64, ptr %158, align 8 - %.not.i.i.i.i631 = icmp ugt i64 %711, %714 - br i1 %.not.i.i.i.i631, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, label %715 + %715 = load i64, ptr %158, align 8 + %.not.i.i.i.i631 = icmp ugt i64 %711, %715 + br i1 %.not.i.i.i.i631, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, label %716 -715: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i - %716 = getelementptr inbounds i8, ptr %712, i64 %709 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %716, ptr noundef nonnull align 1 dereferenceable(15) @.str.54, i64 15, i1 false) +716: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i + %717 = getelementptr inbounds i8, ptr %712, i64 %709 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %717, ptr noundef nonnull align 1 dereferenceable(15) @.str.54, i64 15, i1 false) %.pre1034 = load ptr, ptr %26, align 8 br label %731 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread - %717 = phi i64 [ %714, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i ] +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread %718 = icmp slt i64 %709, -15 - br i1 %718, label %.invoke1212, label %720 + br i1 %718, label %.invoke1212, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread .invoke1212: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, %708, %445 %719 = phi ptr [ @.str.18, %708 ], [ @.str.17, %445 ], [ @.str.17, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 ] @@ -3919,8 +3920,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508: ; p .cont1213: ; preds = %.invoke1212 unreachable -720: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 - %721 = shl nuw i64 %717, 1 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 + %720 = phi i64 [ %715, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i ] + %721 = shl nuw i64 %720, 1 %722 = icmp ult i64 %711, %721 %spec.store.select.i.i514 = call i64 @llvm.umin.i64(i64 %721, i64 9223372036854775807) %.0.i509 = select i1 %722, i64 %spec.store.select.i.i514, i64 %711 @@ -3928,14 +3930,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508: ; p %724 = icmp slt i64 %723, 0 br i1 %724, label %.invoke1210, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i510 -.invoke1210: ; preds = %720, %447 +.invoke1210: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread, %447 invoke void @_ZSt17__throw_bad_allocv() #37 to label %.cont1211 unwind label %.loopexit.split-lp719.loopexit.split-lp .cont1211: ; preds = %.invoke1210 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i510: ; preds = %720 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i510: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread %725 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %723) #36 to label %.noexc517 unwind label %.loopexit718 @@ -3973,8 +3975,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i51 store i64 %.0.i509, ptr %158, align 8 br label %731 -731: ; preds = %.noexc330, %715 - %732 = phi ptr [ %725, %.noexc330 ], [ %.pre1034, %715 ] +731: ; preds = %.noexc330, %716 + %732 = phi ptr [ %725, %.noexc330 ], [ %.pre1034, %716 ] store i64 %711, ptr %159, align 8 %733 = getelementptr inbounds i8, ptr %732, i64 %711 store i8 0, ptr %733, align 1 diff --git a/bench/nix/optimized/git.ll b/bench/nix/optimized/git.ll index 2aa4131df38..715c09d4dd7 100644 --- a/bench/nix/optimized/git.ll +++ b/bench/nix/optimized/git.ll @@ -14034,7 +14034,7 @@ define internal void @"_ZNSt17_Function_handlerIFvRKNSt7__cxx1112basic_stringIcS call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) %6 = load i32, ptr %5, align 8 %7 = icmp eq i32 %6, 16384 - br i1 %7, label %8, label %38 + br i1 %7, label %8, label %39 8: ; preds = %3 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -14046,67 +14046,69 @@ define internal void @"_ZNSt17_Function_handlerIFvRKNSt7__cxx1112basic_stringIcS br i1 %14, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i: ; preds = %8 - %15 = icmp ugt i64 %11, 15 - br i1 %15, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i + %15 = icmp ult i64 %10, 16 + call void @llvm.assume(i1 %15) + %16 = icmp samesign ugt i64 %11, 15 + br i1 %16, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i: ; preds = %8 - %16 = load i64, ptr %13, align 8 - %17 = icmp ugt i64 %11, %16 - br i1 %17, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i + %17 = load i64, ptr %13, align 8 + %18 = icmp ugt i64 %11, %17 + br i1 %18, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i - %18 = phi i64 [ %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ] - %19 = icmp slt i64 %11, 0 - br i1 %19, label %20, label %21 + %19 = phi i64 [ %17, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ] + %20 = icmp slt i64 %11, 0 + br i1 %20, label %21, label %22 -20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i +21: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.73) #27 - to label %.noexc5.i.i.i unwind label %36 + to label %.noexc5.i.i.i unwind label %37 -.noexc5.i.i.i: ; preds = %20 +.noexc5.i.i.i: ; preds = %21 unreachable -21: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i - %22 = shl nuw i64 %18, 1 - %23 = icmp ult i64 %11, %22 - %spec.store.select.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %22, i64 9223372036854775807) - %.0.i.i.i.i = select i1 %23, i64 %spec.store.select.i.i.i.i.i, i64 %11 - %24 = add nuw i64 %.0.i.i.i.i, 1 - %25 = icmp slt i64 %24, 0 - br i1 %25, label %26, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i - -26: ; preds = %21 +22: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i + %23 = shl nuw i64 %19, 1 + %24 = icmp ult i64 %11, %23 + %spec.store.select.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %23, i64 9223372036854775807) + %.0.i.i.i.i = select i1 %24, i64 %spec.store.select.i.i.i.i.i, i64 %11 + %25 = add nuw i64 %.0.i.i.i.i, 1 + %26 = icmp slt i64 %25, 0 + br i1 %26, label %27, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i + +27: ; preds = %22 invoke void @_ZSt17__throw_bad_allocv() #27 - to label %.noexc6.i.i.i unwind label %36 + to label %.noexc6.i.i.i unwind label %37 -.noexc6.i.i.i: ; preds = %26 +.noexc6.i.i.i: ; preds = %27 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i: ; preds = %21 - %27 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %24) #28 - to label %.noexc7.i.i.i unwind label %36 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i: ; preds = %22 + %28 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %25) #28 + to label %.noexc7.i.i.i unwind label %37 .noexc7.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i - switch i64 %10, label %30 [ + switch i64 %10, label %31 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i - i64 1, label %28 + i64 1, label %29 ] -28: ; preds = %.noexc7.i.i.i - %29 = load i8, ptr %12, align 1 - store i8 %29, ptr %27, align 1 +29: ; preds = %.noexc7.i.i.i + %30 = load i8, ptr %12, align 1 + store i8 %30, ptr %28, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i -30: ; preds = %.noexc7.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %27, ptr align 1 %12, i64 %10, i1 false) +31: ; preds = %.noexc7.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %28, ptr align 1 %12, i64 %10, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i: ; preds = %30, %28, %.noexc7.i.i.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i: ; preds = %31, %29, %.noexc7.i.i.i br i1 %14, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i - %31 = icmp samesign ult i64 %10, 16 - call void @llvm.assume(i1 %31) + %32 = icmp samesign ult i64 %10, 16 + call void @llvm.assume(i1 %32) br label %.noexc.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i @@ -14114,42 +14116,42 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3. br label %.noexc.i.i.i .noexc.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i - store ptr %27, ptr %4, align 8 + store ptr %28, ptr %4, align 8 store i64 %.0.i.i.i.i, ptr %13, align 8 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i: ; preds = %.noexc.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i - %32 = phi ptr [ %27, %.noexc.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ] - %33 = getelementptr inbounds i8, ptr %32, i64 %10 - store i8 47, ptr %33, align 1 + %33 = phi ptr [ %28, %.noexc.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ] + %34 = getelementptr inbounds i8, ptr %33, i64 %10 + store i8 47, ptr %34, align 1 store i64 %11, ptr %9, align 8 - %34 = load ptr, ptr %4, align 8 - %35 = getelementptr inbounds i8, ptr %34, i64 %11 - store i8 0, ptr %35, align 1 - br label %38 + %35 = load ptr, ptr %4, align 8 + %36 = getelementptr inbounds i8, ptr %35, i64 %11 + store i8 0, ptr %36, align 1 + br label %39 -36: ; preds = %38, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i, %26, %20 - %37 = landingpad { ptr, i32 } +37: ; preds = %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i, %27, %21 + %38 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #26 - resume { ptr, i32 } %37 + resume { ptr, i32 } %38 -38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i, %3 - %39 = load ptr, ptr %0, align 8 - %40 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix3git9TreeEntryESt4lessIS5_ESaISt4pairIKS5_S8_EEE16insert_or_assignIS8_EESB_ISt17_Rb_tree_iteratorISD_EbERSC_OT_(ptr noundef nonnull align 8 dereferenceable(48) %39, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %5) - to label %41 unwind label %36 +39: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i, %3 + %40 = load ptr, ptr %0, align 8 + %41 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix3git9TreeEntryESt4lessIS5_ESaISt4pairIKS5_S8_EEE16insert_or_assignIS8_EESB_ISt17_Rb_tree_iteratorISD_EbERSC_OT_(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %5) + to label %42 unwind label %37 -41: ; preds = %38 - %42 = load ptr, ptr %4, align 8 - %43 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %44 = icmp eq ptr %42, %43 - br i1 %44, label %"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit", label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +42: ; preds = %39 + %43 = load ptr, ptr %4, align 8 + %44 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %45 = icmp eq ptr %43, %44 + br i1 %45, label %"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit", label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %41 - call void @_ZdlPv(ptr noundef %42) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %42 + call void @_ZdlPv(ptr noundef %43) #29 br label %"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit" -"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit": ; preds = %41, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit": ; preds = %42, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #26 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) diff --git a/bench/nix/optimized/json-to-value.ll b/bench/nix/optimized/json-to-value.ll index b49e5b56d4a..12603fd0e8f 100644 --- a/bench/nix/optimized/json-to-value.ll +++ b/bench/nix/optimized/json-to-value.ll @@ -24860,7 +24860,7 @@ define linkonce_odr noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10 %11 = getelementptr inbounds nuw i8, ptr %0, i64 40 br label %12 -12: ; preds = %77, %2 +12: ; preds = %78, %2 %13 = load i64, ptr %8, align 8 %14 = add i64 %13, 1 store i64 %14, ptr %8, align 8 @@ -24895,12 +24895,12 @@ define linkonce_odr noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %74, %67, %21 +.loopexit.split-lp.loopexit: ; preds = %75, %68, %21 %lpad.loopexit21 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %56, %50 +.loopexit.split-lp.loopexit.split-lp: ; preds = %57, %51 %lpad.loopexit.split-lp22 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -24942,7 +24942,7 @@ _ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112b 36: ; preds = %.noexc %37 = load i32, ptr %10, align 8 %38 = icmp eq i32 %37, 0 - br i1 %38, label %66, label %39 + br i1 %38, label %67, label %39 39: ; preds = %36 %40 = trunc i32 %37 to i8 @@ -24953,67 +24953,69 @@ _ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112b br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; preds = %39 - %45 = icmp ugt i64 %42, 15 - br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i + %45 = icmp ult i64 %41, 16 + call void @llvm.assume(i1 %45) + %46 = icmp samesign ugt i64 %42, 15 + br i1 %46, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread: ; preds = %39 - %46 = load i64, ptr %5, align 8 - %47 = icmp ugt i64 %42, %46 - br i1 %47, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i + %47 = load i64, ptr %5, align 8 + %48 = icmp ugt i64 %42, %47 + br i1 %48, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread - %48 = phi i64 [ %46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ] - %49 = icmp slt i64 %42, 0 - br i1 %49, label %50, label %51 + %49 = phi i64 [ %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ] + %50 = icmp slt i64 %42, 0 + br i1 %50, label %51, label %52 -50: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +51: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.9) #36 to label %.noexc11 unwind label %.loopexit.split-lp.loopexit.split-lp -.noexc11: ; preds = %50 +.noexc11: ; preds = %51 unreachable -51: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - %52 = shl nuw i64 %48, 1 - %53 = icmp ult i64 %42, %52 - %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %52, i64 9223372036854775807) - %.0.i = select i1 %53, i64 %spec.store.select.i.i, i64 %42 - %54 = add nuw i64 %.0.i, 1 - %55 = icmp slt i64 %54, 0 - br i1 %55, label %56, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i - -56: ; preds = %51 +52: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + %53 = shl nuw i64 %49, 1 + %54 = icmp ult i64 %42, %53 + %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %53, i64 9223372036854775807) + %.0.i = select i1 %54, i64 %spec.store.select.i.i, i64 %42 + %55 = add nuw i64 %.0.i, 1 + %56 = icmp slt i64 %55, 0 + br i1 %56, label %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i + +57: ; preds = %52 invoke void @_ZSt17__throw_bad_allocv() #36 to label %.noexc12 unwind label %.loopexit.split-lp.loopexit.split-lp -.noexc12: ; preds = %56 +.noexc12: ; preds = %57 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %51 - %57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %54) #34 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %52 + %58 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #34 to label %.noexc13 unwind label %.loopexit .noexc13: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i - switch i64 %41, label %60 [ + switch i64 %41, label %61 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - i64 1, label %58 + i64 1, label %59 ] -58: ; preds = %.noexc13 - %59 = load i8, ptr %43, align 1 - store i8 %59, ptr %57, align 1 +59: ; preds = %.noexc13 + %60 = load i8, ptr %43, align 1 + store i8 %60, ptr %58, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i -60: ; preds = %.noexc13 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %57, ptr align 1 %43, i64 %41, i1 false) +61: ; preds = %.noexc13 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %58, ptr align 1 %43, i64 %41, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i: ; preds = %.noexc13, %58, %60 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i: ; preds = %.noexc13, %59, %61 br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - %61 = icmp samesign ult i64 %41, 16 - call void @llvm.assume(i1 %61) + %62 = icmp samesign ult i64 %41, 16 + call void @llvm.assume(i1 %62) br label %.noexc8 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i @@ -25021,56 +25023,56 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9: br label %.noexc8 .noexc8: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10 - store ptr %57, ptr %4, align 8 + store ptr %58, ptr %4, align 8 store i64 %.0.i, ptr %5, align 8 br label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i _ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread, %.noexc8, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i - %62 = phi ptr [ %57, %.noexc8 ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ] - %63 = getelementptr inbounds i8, ptr %62, i64 %41 - store i8 %40, ptr %63, align 1 + %63 = phi ptr [ %58, %.noexc8 ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ] + %64 = getelementptr inbounds i8, ptr %63, i64 %41 + store i8 %40, ptr %64, align 1 store i64 %42, ptr %6, align 8 - %64 = load ptr, ptr %4, align 8 - %65 = getelementptr inbounds i8, ptr %64, i64 %42 - store i8 0, ptr %65, align 1 + %65 = load ptr, ptr %4, align 8 + %66 = getelementptr inbounds i8, ptr %65, i64 %42 + store i8 0, ptr %66, align 1 %.pre = load i64, ptr %8, align 8 br label %26, !llvm.loop !153 -66: ; preds = %36 - br i1 %1, label %74, label %67 +67: ; preds = %36 + br i1 %1, label %75, label %68 -67: ; preds = %66 - %68 = load ptr, ptr %11, align 8 - %69 = load ptr, ptr %68, align 8 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 64 - %71 = load ptr, ptr %70, align 8 - %72 = invoke noundef zeroext i1 %71(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 8 dereferenceable(32) %4) - to label %73 unwind label %.loopexit.split-lp.loopexit +68: ; preds = %67 + %69 = load ptr, ptr %11, align 8 + %70 = load ptr, ptr %69, align 8 + %71 = getelementptr inbounds nuw i8, ptr %70, i64 64 + %72 = load ptr, ptr %71, align 8 + %73 = invoke noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(32) %4) + to label %74 unwind label %.loopexit.split-lp.loopexit -73: ; preds = %67 - br i1 %72, label %74, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit +74: ; preds = %68 + br i1 %73, label %75, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit -74: ; preds = %73, %66 - %75 = invoke noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE27parse_bson_element_internalEim(ptr noundef nonnull align 8 dereferenceable(48) %0, i32 noundef %.0.i.i16, i64 noundef %25) - to label %76 unwind label %.loopexit.split-lp.loopexit +75: ; preds = %74, %67 + %76 = invoke noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE27parse_bson_element_internalEim(ptr noundef nonnull align 8 dereferenceable(48) %0, i32 noundef %.0.i.i16, i64 noundef %25) + to label %77 unwind label %.loopexit.split-lp.loopexit -76: ; preds = %74 - br i1 %75, label %77, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit +77: ; preds = %75 + br i1 %76, label %78, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit -77: ; preds = %76 +78: ; preds = %77 store i64 0, ptr %6, align 8 - %78 = load ptr, ptr %4, align 8 - store i8 0, ptr %78, align 1 + %79 = load ptr, ptr %4, align 8 + store i8 0, ptr %79, align 1 br label %12, !llvm.loop !154 -_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit: ; preds = %17, %76, %73, %23, %.noexc - %.not18 = phi i1 [ false, %.noexc ], [ false, %23 ], [ false, %73 ], [ false, %76 ], [ true, %17 ] - %79 = load ptr, ptr %4, align 8 - %80 = icmp eq ptr %79, %5 - br i1 %80, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i +_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit: ; preds = %17, %77, %74, %23, %.noexc + %.not18 = phi i1 [ false, %.noexc ], [ false, %23 ], [ false, %74 ], [ false, %77 ], [ true, %17 ] + %80 = load ptr, ptr %4, align 8 + %81 = icmp eq ptr %80, %5 + br i1 %81, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit - call void @_ZdlPv(ptr noundef %79) #35 + call void @_ZdlPv(ptr noundef %80) #35 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i diff --git a/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll b/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll index d46a0736c49..885396ea450 100644 --- a/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll +++ b/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll @@ -1260,18 +1260,20 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$12free_buckets17h28 %2 = load i64, ptr %1, align 8, !alias.scope !116, !noalias !119, !noundef !4 %3 = mul i64 %2, 49 %4 = add nsw i64 %3, 65 - %5 = icmp eq i64 %4, 0 - br i1 %5, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit", label %6 + %5 = icmp ult i64 %4, 9223372036854775793 + tail call void @llvm.assume(i1 %5) + %6 = icmp eq i64 %4, 0 + br i1 %6, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit", label %7 -6: ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit" - %7 = load ptr, ptr %0, align 8, !alias.scope !116, !noalias !119, !nonnull !4, !noundef !4 +7: ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit" + %8 = load ptr, ptr %0, align 8, !alias.scope !116, !noalias !119, !nonnull !4, !noundef !4 %.neg = mul i64 %2, -48 - %8 = getelementptr i8, ptr %7, i64 %.neg - %9 = getelementptr i8, ptr %8, i64 -48 - tail call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef %4, i64 noundef 16) #31 + %9 = getelementptr i8, ptr %8, i64 %.neg + %10 = getelementptr i8, ptr %9, i64 -48 + tail call void @__rust_dealloc(ptr noundef nonnull %10, i64 noundef %4, i64 noundef 16) #31 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit": ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit", %6 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit": ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit", %7 ret void } diff --git a/bench/opencv/optimized/darknet_io.ll b/bench/opencv/optimized/darknet_io.ll index 24b5ae072e9..4ed0cb8be26 100644 --- a/bench/opencv/optimized/darknet_io.ll +++ b/bench/opencv/optimized/darknet_io.ll @@ -17696,7 +17696,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %70, % %.pn150 = phi { ptr, i32 } [ %69, %68 ], [ %71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i ], [ %71, %70 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %508 + br label %509 75: ; preds = %59 %76 = call noalias noundef nonnull dereferenceable(12) ptr @_Znwm(i64 noundef 12) #26 @@ -17882,7 +17882,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %_ZNSt6vectorINSt7__ %.sroa.0360.0614 = phi ptr [ %76, %._crit_edge.i.i.lr.ph ], [ %.sroa.0360.2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] %.sroa.20.0613 = phi ptr [ %77, %._crit_edge.i.i.lr.ph ], [ %.sroa.20.1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] %.sroa.28.0612 = phi ptr [ %77, %._crit_edge.i.i.lr.ph ], [ %.sroa.28.1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] - %.sroa.0356.0611 = phi ptr [ %104, %._crit_edge.i.i.lr.ph ], [ %504, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] + %.sroa.0356.0611 = phi ptr [ %104, %._crit_edge.i.i.lr.ph ], [ %505, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] %indvars.iv.next = add nsw i64 %indvars.iv, 1 %162 = add nsw i32 %.097616, 1 %163 = getelementptr inbounds nuw i8, ptr %.sroa.0356.0611, i64 40 @@ -18867,7 +18867,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196: ; preds = %28 %.pn132.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn132.pn.pn.pn.pn.pn.pn, %448 ], [ %.pn130, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253 ], [ %227, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 ], [ %lpad.loopexit, %322 ], [ %213, %212 ], [ %.pn111, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit237 ], [ %286, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i229 ], [ %219, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i197 ], [ %215, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i194 ], [ %275, %274 ], [ %.pn125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit214 ], [ %.pn123, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit211 ], [ %.pn121, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit208 ], [ %223, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i200 ], [ %290, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i232 ], [ %227, %226 ], [ %286, %285 ], [ %215, %214 ], [ %223, %222 ], [ %219, %218 ], [ %290, %289 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %15) #25 call void @llvm.lifetime.end.p0(ptr nonnull %15) - br label %505 + br label %506 449: ; preds = %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit308, %184 %.198 = phi i32 [ %.299, %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit308 ], [ %162, %184 ] @@ -18953,76 +18953,78 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325: ; preds = %46 %478 = sub i64 %476, %477 %479 = ashr exact i64 %478, 2 %480 = icmp eq ptr %.sroa.20.0613, %.sroa.0360.0614 - br i1 %480, label %481, label %493 + br i1 %480, label %481, label %494 481: ; preds = %475 %482 = sub nuw nsw i64 1, %479 %483 = ptrtoint ptr %.sroa.28.0612 to i64 %484 = sub i64 %483, %476 %485 = ashr exact i64 %484, 2 - %486 = xor i64 %479, 2305843009213693951 - %487 = icmp ule i64 %485, %486 - call void @llvm.assume(i1 %487) + %486 = icmp ult i64 %479, 2305843009213693952 + call void @llvm.assume(i1 %486) + %487 = xor i64 %479, 2305843009213693951 + %488 = icmp ule i64 %485, %487 + call void @llvm.assume(i1 %488) %.not28.i = icmp ult i64 %485, %482 br i1 %.not28.i, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i, label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i: ; preds = %481 store i32 0, ptr %.sroa.20.0613, align 4, !tbaa !16 - %488 = getelementptr i8, ptr %.sroa.20.0613, i64 4 + %489 = getelementptr i8, ptr %.sroa.20.0613, i64 4 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %481 - %489 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znwm(i64 noundef 4) #26 + %490 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znwm(i64 noundef 4) #26 to label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i unwind label %471 _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i - %490 = getelementptr inbounds nuw i8, ptr %489, i64 %478 - store i32 0, ptr %490, align 4, !tbaa !16 + %491 = getelementptr inbounds nuw i8, ptr %490, i64 %478 + store i32 0, ptr %491, align 4, !tbaa !16 call void @_ZdlPv(ptr noundef nonnull %.sroa.0360.0614) #23 - %491 = getelementptr inbounds nuw i8, ptr %490, i64 4 - %492 = getelementptr inbounds nuw i8, ptr %489, i64 4 + %492 = getelementptr inbounds nuw i8, ptr %491, i64 4 + %493 = getelementptr inbounds nuw i8, ptr %490, i64 4 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -493: ; preds = %475 - %494 = icmp ugt i64 %479, 1 - br i1 %494, label %495, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit +494: ; preds = %475 + %495 = icmp ugt i64 %479, 1 + br i1 %495, label %496, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -495: ; preds = %493 - %496 = getelementptr inbounds nuw i8, ptr %.sroa.0360.0614, i64 4 - %.not.i.i = icmp eq ptr %.sroa.20.0613, %496 - %spec.select374 = select i1 %.not.i.i, ptr %.sroa.20.0613, ptr %496 +496: ; preds = %494 + %497 = getelementptr inbounds nuw i8, ptr %.sroa.0360.0614, i64 4 + %.not.i.i = icmp eq ptr %.sroa.20.0613, %497 + %spec.select374 = select i1 %.not.i.i, ptr %.sroa.20.0613, ptr %497 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %495, %493, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 - %.sroa.28.1 = phi ptr [ %.sroa.28.0612, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.28.0612, %493 ], [ %.sroa.28.0612, %495 ], [ %492, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.28.0612, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %.sroa.20.1 = phi ptr [ %.sroa.20.0613, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.20.0613, %493 ], [ %spec.select374, %495 ], [ %491, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %488, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %.sroa.0360.2 = phi ptr [ %.sroa.0360.0614, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.0360.0614, %493 ], [ %.sroa.0360.0614, %495 ], [ %489, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.0360.0614, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %497 = load ptr, ptr %141, align 8, !tbaa !99 - %498 = getelementptr inbounds nuw i32, ptr %497, i64 %indvars.iv.next - %499 = load i32, ptr %498, align 4, !tbaa !16 - store i32 %499, ptr %.sroa.0360.2, align 4, !tbaa !16 - %500 = load ptr, ptr %42, align 8, !tbaa !13 - %501 = icmp eq ptr %500, %142 - br i1 %501, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333 +_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %496, %494, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 + %.sroa.28.1 = phi ptr [ %.sroa.28.0612, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.28.0612, %494 ], [ %.sroa.28.0612, %496 ], [ %493, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.28.0612, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %.sroa.20.1 = phi ptr [ %.sroa.20.0613, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.20.0613, %494 ], [ %spec.select374, %496 ], [ %492, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %489, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %.sroa.0360.2 = phi ptr [ %.sroa.0360.0614, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.0360.0614, %494 ], [ %.sroa.0360.0614, %496 ], [ %490, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.0360.0614, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %498 = load ptr, ptr %141, align 8, !tbaa !99 + %499 = getelementptr inbounds nuw i32, ptr %498, i64 %indvars.iv.next + %500 = load i32, ptr %499, align 4, !tbaa !16 + store i32 %500, ptr %.sroa.0360.2, align 4, !tbaa !16 + %501 = load ptr, ptr %42, align 8, !tbaa !13 + %502 = icmp eq ptr %501, %142 + br i1 %502, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit - call void @_ZdlPv(ptr noundef %500) #23 + call void @_ZdlPv(ptr noundef %501) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333 call void @llvm.lifetime.end.p0(ptr nonnull %42) - %502 = load ptr, ptr %13, align 8, !tbaa !13 - %503 = icmp eq ptr %502, %108 - br i1 %503, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336 + %503 = load ptr, ptr %13, align 8, !tbaa !13 + %504 = icmp eq ptr %503, %108 + br i1 %504, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335 - call void @_ZdlPv(ptr noundef %502) #23 + call void @_ZdlPv(ptr noundef %503) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336 call void @llvm.lifetime.end.p0(ptr nonnull %13) - %504 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0356.0611) #27 - %.not375 = icmp eq ptr %504, %105 + %505 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0356.0611) #27 + %.not375 = icmp eq ptr %505, %105 br i1 %.not375, label %._crit_edge, label %._crit_edge.i.i, !llvm.loop !193 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split: ; preds = %471, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325 @@ -19034,20 +19036,20 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split: ; _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split, %471, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325 %.pn144 = phi { ptr, i32 } [ %466, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325 ], [ %472, %471 ], [ %.pn144.ph, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %42) - br label %505 + br label %506 -505: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196 +506: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196 %.pn144.pn = phi { ptr, i32 } [ %.pn144, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328 ], [ %.pn132.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196 ] - %506 = load ptr, ptr %13, align 8, !tbaa !13 - %507 = icmp eq ptr %506, %108 - br i1 %507, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 + %507 = load ptr, ptr %13, align 8, !tbaa !13 + %508 = icmp eq ptr %507, %108 + br i1 %508, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339: ; preds = %505 - call void @_ZdlPv(ptr noundef %506) #23 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339: ; preds = %506 + call void @_ZdlPv(ptr noundef %507) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341: ; preds = %505, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 - %.pn144.pn.pn = phi { ptr, i32 } [ %209, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 ], [ %.pn144.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 ], [ %.pn144.pn, %505 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341: ; preds = %506, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 + %.pn144.pn.pn = phi { ptr, i32 } [ %209, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 ], [ %.pn144.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 ], [ %.pn144.pn, %506 ] call void @llvm.lifetime.end.p0(ptr nonnull %13) call void @_ZN2cv3dnn7darknet15setLayersParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %12) #25 br label %_ZNSt6vectorIiSaIiEED2Ev.exit343 @@ -19057,9 +19059,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit343: ; preds = %_ZNSt7__cxx1112basi %.pn144.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341 ], [ %161, %160 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @_ZdlPv(ptr noundef nonnull %.sroa.0360.1) #23 - br label %508 + br label %509 -508: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit343, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit +509: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit343, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %.pn150.pn = phi { ptr, i32 } [ %.pn150, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pn144.pn.pn.pn, %_ZNSt6vectorIiSaIiEED2Ev.exit343 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/opencv/optimized/ts_gtest.ll b/bench/opencv/optimized/ts_gtest.ll index 2f6f79e7e55..4257df87d64 100644 --- a/bench/opencv/optimized/ts_gtest.ll +++ b/bench/opencv/optimized/ts_gtest.ll @@ -26547,148 +26547,153 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i %24 = load ptr, ptr %8, align 8, !tbaa !3, !noalias !586 %25 = icmp eq ptr %24, %9 %26 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %28 = getelementptr inbounds nuw i8, ptr %5, i64 16 - br i1 %25, label %.thread, label %31 + br i1 %25, label %.thread, label %32 .thread: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %29 = load i64, ptr %21, align 8, !tbaa !12, !noalias !586 - %30 = add nuw nsw i64 %29, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %30, i1 false), !noalias !586 + %27 = load i64, ptr %21, align 8, !tbaa !12, !noalias !586 + %28 = add nuw nsw i64 %27, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %28, i1 false), !noalias !586 store i64 0, ptr %21, align 8, !tbaa !12, !noalias !586 store i8 0, ptr %9, align 8, !tbaa !13, !noalias !586 store ptr %26, ptr %7, align 8, !tbaa !11, !alias.scope !586 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %26, ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, i64 %30, i1 false) - store i64 %29, ptr %27, align 8, !tbaa !12, !alias.scope !586 + %29 = icmp ult i64 %27, 16 + call void @llvm.assume(i1 %29) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %26, ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, i64 %28, i1 false) + %30 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i64 %27, ptr %30, align 8, !tbaa !12, !alias.scope !586 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - store ptr %28, ptr %5, align 8, !tbaa !11 + %31 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr %31, ptr %5, align 8, !tbaa !11 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %29, ptr %4, align 8, !tbaa !37 + store i64 %27, ptr %4, align 8, !tbaa !37 br label %._crit_edge.i.i.i.i.i -31: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %32 = load i64, ptr %9, align 8, !tbaa !13, !noalias !586 +32: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit + %33 = load i64, ptr %9, align 8, !tbaa !13, !noalias !586 %.pre.i = load i64, ptr %21, align 8, !tbaa !12, !noalias !586 store ptr %9, ptr %8, align 8, !tbaa !3, !noalias !586 store i64 0, ptr %21, align 8, !tbaa !12, !noalias !586 store i8 0, ptr %9, align 8, !tbaa !13, !noalias !586 store ptr %24, ptr %7, align 8, !tbaa !3, !alias.scope !586 - store i64 %32, ptr %26, align 8, !tbaa !13, !alias.scope !586 - store i64 %.pre.i, ptr %27, align 8, !tbaa !12, !alias.scope !586 + store i64 %33, ptr %26, align 8, !tbaa !13, !alias.scope !586 + %34 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i64 %.pre.i, ptr %34, align 8, !tbaa !12, !alias.scope !586 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - store ptr %28, ptr %5, align 8, !tbaa !11 + %35 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr %35, ptr %5, align 8, !tbaa !11 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 %.pre.i, ptr %4, align 8, !tbaa !37 - %33 = icmp ugt i64 %.pre.i, 15 - br i1 %33, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i + %36 = icmp ugt i64 %.pre.i, 15 + br i1 %36, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i -.noexc.i.i.i.i: ; preds = %31 - %34 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - to label %.noexc unwind label %59 +.noexc.i.i.i.i: ; preds = %32 + %37 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + to label %.noexc unwind label %63 .noexc: ; preds = %.noexc.i.i.i.i - store ptr %34, ptr %5, align 8, !tbaa !3 - %35 = load i64, ptr %4, align 8, !tbaa !37 - store i64 %35, ptr %28, align 8, !tbaa !13 + store ptr %37, ptr %5, align 8, !tbaa !3 + %38 = load i64, ptr %4, align 8, !tbaa !37 + store i64 %38, ptr %35, align 8, !tbaa !13 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %31 - %36 = phi ptr [ %24, %.noexc ], [ %24, %31 ], [ %26, %.thread ] - %37 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %31 ], [ %29, %.thread ] - %38 = phi ptr [ %34, %.noexc ], [ %28, %31 ], [ %28, %.thread ] - switch i64 %37, label %41 [ - i64 1, label %39 +._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %32 + %39 = phi ptr [ %24, %.noexc ], [ %24, %32 ], [ %26, %.thread ] + %40 = phi ptr [ %35, %.noexc ], [ %35, %32 ], [ %31, %.thread ] + %41 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %32 ], [ %27, %.thread ] + %42 = phi ptr [ %37, %.noexc ], [ %35, %32 ], [ %31, %.thread ] + switch i64 %41, label %45 [ + i64 1, label %43 i64 0, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i ] -39: ; preds = %._crit_edge.i.i.i.i.i - %40 = load i8, ptr %36, align 1, !tbaa !13 - store i8 %40, ptr %38, align 1, !tbaa !13 +43: ; preds = %._crit_edge.i.i.i.i.i + %44 = load i8, ptr %39, align 1, !tbaa !13 + store i8 %44, ptr %42, align 1, !tbaa !13 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -41: ; preds = %._crit_edge.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %38, ptr align 1 %36, i64 %37, i1 false) +45: ; preds = %._crit_edge.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %39, i64 %41, i1 false) br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %41, %39, %._crit_edge.i.i.i.i.i - %42 = load i64, ptr %4, align 8, !tbaa !37 - %43 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %42, ptr %43, align 8, !tbaa !12 - %44 = load ptr, ptr %5, align 8, !tbaa !3 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 %42 - store i8 0, ptr %45, align 1, !tbaa !13 +_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %45, %43, %._crit_edge.i.i.i.i.i + %46 = load i64, ptr %4, align 8, !tbaa !37 + %47 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %46, ptr %47, align 8, !tbaa !12 + %48 = load ptr, ptr %5, align 8, !tbaa !3 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 %46 + store i8 0, ptr %49, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %46 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) - to label %47 unwind label %50 + %50 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) + to label %51 unwind label %54 -47: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %48 = load ptr, ptr %5, align 8, !tbaa !3 - %49 = icmp eq ptr %48, %28 - br i1 %49, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +51: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %52 = load ptr, ptr %5, align 8, !tbaa !3 + %53 = icmp eq ptr %52, %40 + br i1 %53, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %47 - call void @_ZdlPv(ptr noundef %48) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %51 + call void @_ZdlPv(ptr noundef %52) #60 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i -50: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %51 = landingpad { ptr, i32 } +54: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %55 = landingpad { ptr, i32 } cleanup - %52 = load ptr, ptr %5, align 8, !tbaa !3 - %53 = icmp eq ptr %52, %28 - br i1 %53, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i + %56 = load ptr, ptr %5, align 8, !tbaa !3 + %57 = icmp eq ptr %56, %40 + br i1 %57, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %50 - call void @_ZdlPv(ptr noundef %52) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %54 + call void @_ZdlPv(ptr noundef %56) #60 br label %.body -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %54 = load ptr, ptr %7, align 8, !tbaa !3 - %55 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %56 = icmp eq ptr %54, %55 - br i1 %56, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %58 = load ptr, ptr %7, align 8, !tbaa !3 + %59 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %60 = icmp eq ptr %58, %59 + br i1 %60, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i - call void @_ZdlPv(ptr noundef %54) #60 + call void @_ZdlPv(ptr noundef %58) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %57 = load ptr, ptr %8, align 8, !tbaa !3 - %58 = icmp eq ptr %57, %9 - br i1 %58, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %61 = load ptr, ptr %8, align 8, !tbaa !3 + %62 = icmp eq ptr %61, %9 + br i1 %62, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit - call void @_ZdlPv(ptr noundef %57) #60 + call void @_ZdlPv(ptr noundef %61) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - ret ptr %46 + ret ptr %50 -59: ; preds = %.noexc.i.i.i.i - %60 = landingpad { ptr, i32 } +63: ; preds = %.noexc.i.i.i.i + %64 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %59 - %eh.lpad-body = phi { ptr, i32 } [ %60, %59 ], [ %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %51, %50 ] - %61 = load ptr, ptr %7, align 8, !tbaa !3 - %62 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %63 = icmp eq ptr %61, %62 - br i1 %63, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 +.body: ; preds = %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %63 + %eh.lpad-body = phi { ptr, i32 } [ %64, %63 ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %55, %54 ] + %65 = load ptr, ptr %7, align 8, !tbaa !3 + %66 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %67 = icmp eq ptr %65, %66 + br i1 %67, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7: ; preds = %.body - call void @_ZdlPv(ptr noundef %61) #60 + call void @_ZdlPv(ptr noundef %65) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9: ; preds = %.body, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 - %64 = load ptr, ptr %8, align 8, !tbaa !3 - %65 = icmp eq ptr %64, %9 - br i1 %65, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 + %68 = load ptr, ptr %8, align 8, !tbaa !3 + %69 = icmp eq ptr %68, %9 + br i1 %69, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 - call void @_ZdlPv(ptr noundef %64) #60 + call void @_ZdlPv(ptr noundef %68) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12 _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 diff --git a/bench/php/optimized/attr.ll b/bench/php/optimized/attr.ll index e444871dd50..7e25c897686 100644 --- a/bench/php/optimized/attr.ll +++ b/bench/php/optimized/attr.ll @@ -225,7 +225,7 @@ define hidden range(i32 -1, 1) i32 @dom_attr_value_write(ptr noundef %0, ptr nou 5: ; preds = %2 tail call void @php_dom_throw_error(i32 noundef 11, i1 noundef zeroext true) #9 - br label %44 + br label %45 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %3, i64 80 @@ -261,38 +261,40 @@ define hidden range(i32 -1, 1) i32 @dom_attr_value_write(ptr noundef %0, ptr nou dom_attr_value_will_change.exit: ; preds = %14, %17 %25 = load ptr, ptr %1, align 8, !tbaa !9 tail call void @dom_remove_all_children(ptr noundef nonnull %3) #9 - %26 = load ptr, ptr %15, align 8, !tbaa !11 - %.not.i = icmp eq ptr %26, null + %26 = icmp ne ptr %0, null + tail call void @llvm.assume(i1 %26) + %27 = load ptr, ptr %15, align 8, !tbaa !11 + %.not.i = icmp eq ptr %27, null br i1 %.not.i, label %php_dom_follow_spec_doc_ref.exit.thread, label %php_dom_follow_spec_doc_ref.exit php_dom_follow_spec_doc_ref.exit: ; preds = %dom_attr_value_will_change.exit - %27 = getelementptr inbounds nuw i8, ptr %26, i64 44 - %28 = load i16, ptr %27, align 4 - %29 = and i16 %28, 255 - %30 = icmp eq i16 %29, 2 - br i1 %30, label %31, label %php_dom_follow_spec_doc_ref.exit.thread - -31: ; preds = %php_dom_follow_spec_doc_ref.exit - %32 = getelementptr inbounds nuw i8, ptr %3, i64 64 - %33 = load ptr, ptr %32, align 8, !tbaa !32 - %34 = getelementptr inbounds nuw i8, ptr %25, i64 24 - %35 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %36 = load i64, ptr %35, align 8, !tbaa !30 - %37 = trunc i64 %36 to i32 - %38 = tail call ptr @xmlNewDocTextLen(ptr noundef %33, ptr noundef nonnull %34, i32 noundef %37) #9 - %39 = tail call ptr @xmlAddChild(ptr noundef nonnull %3, ptr noundef %38) #9 - br label %44 + %28 = getelementptr inbounds nuw i8, ptr %27, i64 44 + %29 = load i16, ptr %28, align 4 + %30 = and i16 %29, 255 + %31 = icmp eq i16 %30, 2 + br i1 %31, label %32, label %php_dom_follow_spec_doc_ref.exit.thread + +32: ; preds = %php_dom_follow_spec_doc_ref.exit + %33 = getelementptr inbounds nuw i8, ptr %3, i64 64 + %34 = load ptr, ptr %33, align 8, !tbaa !32 + %35 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %36 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %37 = load i64, ptr %36, align 8, !tbaa !30 + %38 = trunc i64 %37 to i32 + %39 = tail call ptr @xmlNewDocTextLen(ptr noundef %34, ptr noundef nonnull %35, i32 noundef %38) #9 + %40 = tail call ptr @xmlAddChild(ptr noundef nonnull %3, ptr noundef %39) #9 + br label %45 php_dom_follow_spec_doc_ref.exit.thread: ; preds = %dom_attr_value_will_change.exit, %php_dom_follow_spec_doc_ref.exit - %40 = getelementptr inbounds nuw i8, ptr %25, i64 24 - %41 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %42 = load i64, ptr %41, align 8, !tbaa !30 - %43 = trunc i64 %42 to i32 - tail call void @xmlNodeSetContentLen(ptr noundef nonnull %3, ptr noundef nonnull %40, i32 noundef %43) #9 - br label %44 - -44: ; preds = %31, %php_dom_follow_spec_doc_ref.exit.thread, %5 - %.0 = phi i32 [ -1, %5 ], [ 0, %php_dom_follow_spec_doc_ref.exit.thread ], [ 0, %31 ] + %41 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %42 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %43 = load i64, ptr %42, align 8, !tbaa !30 + %44 = trunc i64 %43 to i32 + tail call void @xmlNodeSetContentLen(ptr noundef nonnull %3, ptr noundef nonnull %41, i32 noundef %44) #9 + br label %45 + +45: ; preds = %32, %php_dom_follow_spec_doc_ref.exit.thread, %5 + %.0 = phi i32 [ -1, %5 ], [ 0, %php_dom_follow_spec_doc_ref.exit.thread ], [ 0, %32 ] ret i32 %.0 } diff --git a/bench/php/optimized/node.ll b/bench/php/optimized/node.ll index 5aa0433dcc0..10ffd310cc4 100644 --- a/bench/php/optimized/node.ll +++ b/bench/php/optimized/node.ll @@ -6367,7 +6367,7 @@ instanceof_function.exit: ; preds = %14 %.0168 = phi ptr [ null, %7 ], [ %9, %20 ], [ %9, %.thread ] %.0 = phi i32 [ 0, %7 ], [ 1, %20 ], [ 1, %.thread ] tail call void @zend_wrong_parameter_error(i32 noundef %.0171, i32 noundef %.0, ptr noundef %.0170, i32 noundef %.0169, ptr noundef %.0168) #11 - br label %151 + br label %153 .critedge: ; preds = %14, %instanceof_function.exit, %13 %25 = load ptr, ptr %4, align 8, !tbaa !9 @@ -6383,7 +6383,7 @@ instanceof_function.exit: ; preds = %14 %33 = load ptr, ptr %32, align 8, !tbaa !64 %34 = getelementptr inbounds nuw i8, ptr %33, i64 24 tail call void (ptr, ptr, ...) @zend_throw_error(ptr noundef null, ptr noundef nonnull @.str.11, ptr noundef nonnull %34) #11 - br label %151 + br label %153 35: ; preds = %.critedge %36 = load ptr, ptr %27, align 8, !tbaa !76 @@ -6400,7 +6400,7 @@ instanceof_function.exit: ; preds = %14 %45 = load ptr, ptr %44, align 8, !tbaa !64 %46 = getelementptr inbounds nuw i8, ptr %45, i64 24 tail call void (ptr, ptr, ...) @zend_throw_error(ptr noundef null, ptr noundef nonnull @.str.11, ptr noundef nonnull %46) #11 - br label %151 + br label %153 47: ; preds = %35 %48 = load ptr, ptr %39, align 8, !tbaa !76 @@ -6411,7 +6411,7 @@ instanceof_function.exit: ; preds = %14 store i64 0, ptr %1, align 8, !tbaa !9 %51 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %51, align 8, !tbaa !9 - br label %151 + br label %153 52: ; preds = %47 %53 = getelementptr inbounds nuw i8, ptr %48, i64 8 @@ -6463,7 +6463,7 @@ instanceof_function.exit: ; preds = %14 store i64 34, ptr %1, align 8, !tbaa !9 %75 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %75, align 8, !tbaa !9 - br label %151 + br label %153 76: ; preds = %.lr.ph %77 = tail call fastcc zeroext i1 @php_dom_is_equal_attr(ptr noundef %.0189228, ptr noundef %36) @@ -6473,7 +6473,7 @@ instanceof_function.exit: ; preds = %14 store i64 36, ptr %1, align 8, !tbaa !9 %79 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %79, align 8, !tbaa !9 - br label %151 + br label %153 .critedge215: ; preds = %71, %69, %63, %59 %.0190 = phi ptr [ %36, %63 ], [ null, %59 ], [ %36, %69 ], [ %36, %71 ] @@ -6481,7 +6481,7 @@ instanceof_function.exit: ; preds = %14 %80 = icmp eq ptr %.0183, null %81 = icmp eq ptr %.0185, null %or.cond4 = select i1 %80, i1 true, i1 %81 - br i1 %or.cond4, label %142, label %.preheader224 + br i1 %or.cond4, label %144, label %.preheader224 .preheader224: ; preds = %.critedge215 %82 = getelementptr inbounds nuw i8, ptr %.0183, i64 40 @@ -6527,7 +6527,7 @@ instanceof_function.exit: ; preds = %14 %.0174.lcssa = phi i64 [ 0, %.preheader223 ], [ %93, %.lr.ph238 ] %.0173.lcssa = phi ptr [ %.0185, %.preheader223 ], [ %91, %.lr.ph238 ] %.not210 = icmp eq ptr %.0178.lcssa, %.0173.lcssa - br i1 %.not210, label %96, label %142 + br i1 %.not210, label %96, label %144 96: ; preds = %._crit_edge %97 = icmp eq ptr %.0191, null @@ -6544,7 +6544,7 @@ instanceof_function.exit: ; preds = %14 store i64 10, ptr %1, align 8, !tbaa !9 %102 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %102, align 8, !tbaa !9 - br label %151 + br label %153 103: ; preds = %98 %104 = icmp eq ptr %.0190, null @@ -6560,7 +6560,7 @@ instanceof_function.exit: ; preds = %14 store i64 20, ptr %1, align 8, !tbaa !9 %108 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %108, align 8, !tbaa !9 - br label %151 + br label %153 109: ; preds = %105 br i1 %.0176.lcssa, label %110, label %112 @@ -6570,7 +6570,7 @@ instanceof_function.exit: ; preds = %14 store i64 2, ptr %1, align 8, !tbaa !9 %111 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %111, align 8, !tbaa !9 - br label %151 + br label %153 112: ; preds = %109 br i1 %.0181.lcssa, label %113, label %115 @@ -6580,7 +6580,7 @@ instanceof_function.exit: ; preds = %14 store i64 4, ptr %1, align 8, !tbaa !9 %114 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %114, align 8, !tbaa !9 - br label %151 + br label %153 115: ; preds = %112 %116 = icmp ugt i64 %.0179.lcssa, %.0174.lcssa @@ -6626,53 +6626,57 @@ instanceof_function.exit: ; preds = %14 131: ; preds = %.loopexit %132 = icmp ne ptr %.3, %.3188 tail call void @llvm.assume(i1 %132) - br label %133 - -133: ; preds = %139, %131 - %.4 = phi ptr [ %.3, %131 ], [ %135, %139 ] - %134 = getelementptr inbounds nuw i8, ptr %.4, i64 48 - %135 = load ptr, ptr %134, align 8, !tbaa !45 - %136 = icmp eq ptr %135, %.3188 - br i1 %136, label %137, label %139 - -137: ; preds = %133 + %133 = icmp ne ptr %.3, null + tail call void @llvm.assume(i1 %133) + %134 = icmp ne ptr %.3188, null + tail call void @llvm.assume(i1 %134) + br label %135 + +135: ; preds = %141, %131 + %.4 = phi ptr [ %.3, %131 ], [ %137, %141 ] + %136 = getelementptr inbounds nuw i8, ptr %.4, i64 48 + %137 = load ptr, ptr %136, align 8, !tbaa !45 + %138 = icmp eq ptr %137, %.3188 + br i1 %138, label %139, label %141 + +139: ; preds = %135 store i64 2, ptr %1, align 8, !tbaa !9 - %138 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i32 4, ptr %138, align 8, !tbaa !9 - br label %151 + %140 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i32 4, ptr %140, align 8, !tbaa !9 + br label %153 -139: ; preds = %133 - %.not212 = icmp eq ptr %135, null - br i1 %.not212, label %140, label %133 +141: ; preds = %135 + %.not212 = icmp eq ptr %137, null + br i1 %.not212, label %142, label %135 -140: ; preds = %139 +142: ; preds = %141 store i64 4, ptr %1, align 8, !tbaa !9 - %141 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i32 4, ptr %141, align 8, !tbaa !9 - br label %151 + %143 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i32 4, ptr %143, align 8, !tbaa !9 + br label %153 -142: ; preds = %._crit_edge, %.critedge215 - %143 = icmp eq ptr %.0183, %.0185 - br i1 %143, label %144, label %146 +144: ; preds = %._crit_edge, %.critedge215 + %145 = icmp eq ptr %.0183, %.0185 + br i1 %145, label %146, label %148 -144: ; preds = %142 +146: ; preds = %144 tail call void @llvm.assume(i1 %80) - %145 = icmp ult ptr %37, %25 - br label %148 + %147 = icmp ult ptr %37, %25 + br label %150 -146: ; preds = %142 - %147 = icmp ult ptr %.0183, %.0185 - br label %148 - -148: ; preds = %146, %144 - %.sink = phi i1 [ %147, %146 ], [ %145, %144 ] - %149 = select i1 %.sink, i64 35, i64 37 - store i64 %149, ptr %1, align 8, !tbaa !9 - %150 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i32 4, ptr %150, align 8, !tbaa !9 - br label %151 - -151: ; preds = %74, %78, %24, %101, %107, %110, %113, %137, %140, %148, %50, %41, %29 +148: ; preds = %144 + %149 = icmp ult ptr %.0183, %.0185 + br label %150 + +150: ; preds = %148, %146 + %.sink = phi i1 [ %149, %148 ], [ %147, %146 ] + %151 = select i1 %.sink, i64 35, i64 37 + store i64 %151, ptr %1, align 8, !tbaa !9 + %152 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i32 4, ptr %152, align 8, !tbaa !9 + br label %153 + +153: ; preds = %74, %78, %24, %101, %107, %110, %113, %139, %142, %150, %50, %41, %29 ret void } diff --git a/bench/php/optimized/pdo_stmt.ll b/bench/php/optimized/pdo_stmt.ll index 6e772754541..f1ac0dfa7e0 100644 --- a/bench/php/optimized/pdo_stmt.ll +++ b/bench/php/optimized/pdo_stmt.ll @@ -7441,35 +7441,40 @@ define internal ptr @row_dim_read(ptr noundef readonly captures(none) %0, ptr no store i32 %29, ptr %23, align 4, !tbaa !38 br label %zval_try_get_string.exit.thread +zval_try_get_string.exit.thread: ; preds = %22, %27 + %30 = icmp ne ptr %23, null + tail call void @llvm.assume(i1 %30) + br label %32 + zval_try_get_string.exit: ; preds = %6 - %30 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 - %.not23 = icmp eq ptr %30, null - br i1 %.not23, label %zend_string_release_ex.exit, label %zval_try_get_string.exit.thread - -zval_try_get_string.exit.thread: ; preds = %27, %22, %zval_try_get_string.exit - %.0.i26 = phi ptr [ %30, %zval_try_get_string.exit ], [ %23, %22 ], [ %23, %27 ] - %31 = tail call ptr @row_prop_read(ptr noundef %0, ptr noundef nonnull %.0.i26, i32 noundef %2, ptr noundef null, ptr noundef %3) - %32 = getelementptr inbounds nuw i8, ptr %.0.i26, i64 4 - %33 = load i32, ptr %32, align 4, !tbaa !37 - %34 = and i32 %33, 64 - %.not.i = icmp eq i32 %34, 0 - br i1 %.not.i, label %35, label %zend_string_release_ex.exit + %31 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 + %.not23 = icmp eq ptr %31, null + br i1 %.not23, label %zend_string_release_ex.exit, label %32 + +32: ; preds = %zval_try_get_string.exit.thread, %zval_try_get_string.exit + %.0.i26 = phi ptr [ %23, %zval_try_get_string.exit.thread ], [ %31, %zval_try_get_string.exit ] + %33 = tail call ptr @row_prop_read(ptr noundef %0, ptr noundef nonnull %.0.i26, i32 noundef %2, ptr noundef null, ptr noundef %3) + %34 = getelementptr inbounds nuw i8, ptr %.0.i26, i64 4 + %35 = load i32, ptr %34, align 4, !tbaa !37 + %36 = and i32 %35, 64 + %.not.i = icmp eq i32 %36, 0 + br i1 %.not.i, label %37, label %zend_string_release_ex.exit -35: ; preds = %zval_try_get_string.exit.thread - %36 = load i32, ptr %.0.i26, align 4, !tbaa !38 - %37 = icmp ne i32 %36, 0 - tail call void @llvm.assume(i1 %37) - %38 = add i32 %36, -1 - store i32 %38, ptr %.0.i26, align 4, !tbaa !38 - %39 = icmp eq i32 %38, 0 - br i1 %39, label %40, label %zend_string_release_ex.exit +37: ; preds = %32 + %38 = load i32, ptr %.0.i26, align 4, !tbaa !38 + %39 = icmp ne i32 %38, 0 + tail call void @llvm.assume(i1 %39) + %40 = add i32 %38, -1 + store i32 %40, ptr %.0.i26, align 4, !tbaa !38 + %41 = icmp eq i32 %40, 0 + br i1 %41, label %42, label %zend_string_release_ex.exit -40: ; preds = %35 +42: ; preds = %37 tail call void @_efree(ptr noundef nonnull %.0.i26) #17 br label %zend_string_release_ex.exit -zend_string_release_ex.exit: ; preds = %40, %35, %zval_try_get_string.exit.thread, %zval_try_get_string.exit, %9, %15, %20, %5 - %.0 = phi ptr [ null, %5 ], [ %3, %9 ], [ %3, %20 ], [ %3, %15 ], [ null, %zval_try_get_string.exit ], [ %31, %zval_try_get_string.exit.thread ], [ %31, %35 ], [ %31, %40 ] +zend_string_release_ex.exit: ; preds = %42, %37, %32, %zval_try_get_string.exit, %9, %15, %20, %5 + %.0 = phi ptr [ null, %5 ], [ %3, %9 ], [ %3, %20 ], [ %3, %15 ], [ null, %zval_try_get_string.exit ], [ %33, %32 ], [ %33, %37 ], [ %33, %42 ] ret ptr %.0 } @@ -7655,35 +7660,40 @@ row_read_column_number.exit.thread: ; preds = %19, %21, %zval_ptr_ store i32 %83, ptr %77, align 4, !tbaa !38 br label %zval_try_get_string.exit.thread +zval_try_get_string.exit.thread: ; preds = %76, %81 + %84 = icmp ne ptr %77, null + tail call void @llvm.assume(i1 %84) + br label %86 + zval_try_get_string.exit: ; preds = %3 - %84 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 - %.not = icmp eq ptr %84, null - br i1 %.not, label %zend_string_release_ex.exit, label %zval_try_get_string.exit.thread - -zval_try_get_string.exit.thread: ; preds = %81, %76, %zval_try_get_string.exit - %.0.i3040 = phi ptr [ %84, %zval_try_get_string.exit ], [ %77, %76 ], [ %77, %81 ] - %85 = tail call i32 @row_prop_exists(ptr noundef %0, ptr noundef nonnull %.0.i3040, i32 noundef %2, ptr poison) - %86 = getelementptr inbounds nuw i8, ptr %.0.i3040, i64 4 - %87 = load i32, ptr %86, align 4, !tbaa !37 - %88 = and i32 %87, 64 - %.not.i28 = icmp eq i32 %88, 0 - br i1 %.not.i28, label %89, label %zend_string_release_ex.exit - -89: ; preds = %zval_try_get_string.exit.thread - %90 = load i32, ptr %.0.i3040, align 4, !tbaa !38 - %91 = icmp ne i32 %90, 0 - tail call void @llvm.assume(i1 %91) - %92 = add i32 %90, -1 - store i32 %92, ptr %.0.i3040, align 4, !tbaa !38 - %93 = icmp eq i32 %92, 0 - br i1 %93, label %94, label %zend_string_release_ex.exit - -94: ; preds = %89 + %85 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 + %.not = icmp eq ptr %85, null + br i1 %.not, label %zend_string_release_ex.exit, label %86 + +86: ; preds = %zval_try_get_string.exit.thread, %zval_try_get_string.exit + %.0.i3040 = phi ptr [ %77, %zval_try_get_string.exit.thread ], [ %85, %zval_try_get_string.exit ] + %87 = tail call i32 @row_prop_exists(ptr noundef %0, ptr noundef nonnull %.0.i3040, i32 noundef %2, ptr poison) + %88 = getelementptr inbounds nuw i8, ptr %.0.i3040, i64 4 + %89 = load i32, ptr %88, align 4, !tbaa !37 + %90 = and i32 %89, 64 + %.not.i28 = icmp eq i32 %90, 0 + br i1 %.not.i28, label %91, label %zend_string_release_ex.exit + +91: ; preds = %86 + %92 = load i32, ptr %.0.i3040, align 4, !tbaa !38 + %93 = icmp ne i32 %92, 0 + tail call void @llvm.assume(i1 %93) + %94 = add i32 %92, -1 + store i32 %94, ptr %.0.i3040, align 4, !tbaa !38 + %95 = icmp eq i32 %94, 0 + br i1 %95, label %96, label %zend_string_release_ex.exit + +96: ; preds = %91 tail call void @_efree(ptr noundef nonnull %.0.i3040) #17 br label %zend_string_release_ex.exit -zend_string_release_ex.exit: ; preds = %94, %89, %zval_try_get_string.exit.thread, %zval_try_get_string.exit, %row_read_column_number.exit.thread, %13, %11 - %.2 = phi i32 [ %18, %13 ], [ %.1, %row_read_column_number.exit.thread ], [ 0, %11 ], [ 0, %zval_try_get_string.exit ], [ %85, %zval_try_get_string.exit.thread ], [ %85, %89 ], [ %85, %94 ] +zend_string_release_ex.exit: ; preds = %96, %91, %86, %zval_try_get_string.exit, %row_read_column_number.exit.thread, %13, %11 + %.2 = phi i32 [ %18, %13 ], [ %.1, %row_read_column_number.exit.thread ], [ 0, %11 ], [ 0, %zval_try_get_string.exit ], [ %87, %86 ], [ %87, %91 ], [ %87, %96 ] ret i32 %.2 } diff --git a/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll b/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll index fac7005d8c9..3bd7367e948 100644 --- a/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll +++ b/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll @@ -4029,8 +4029,8 @@ define hidden void @_ZN4http10extensions10Extensions6remove17h24a8d8827cd6aaabE( call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29, !noalias !337 unreachable -common.resume.i: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i", %38, %19 - %common.resume.op.i = phi { ptr, i32 } [ %20, %19 ], [ %39, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" ], [ %39, %38 ] +common.resume.i: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i", %39, %19 + %common.resume.op.i = phi { ptr, i32 } [ %20, %19 ], [ %40, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" ], [ %40, %39 ] resume { ptr, i32 } %common.resume.op.i "_ZN5alloc5boxed7convert69_$LT$impl$u20$alloc..boxed..Box$LT$dyn$u20$core..any..Any$C$A$GT$$GT$8downcast17hbc1b1c5b80f64518E.exit.i": ; preds = %10 @@ -4047,45 +4047,47 @@ common.resume.i: ; preds = %"_ZN63_$LT$alloc..a br label %"_ZN4http10extensions10Extensions6remove28_$u7b$$u7b$closure$u7d$$u7d$17h7e644c2b7cbbdc6fE.exit" 28: ; preds = %"_ZN5alloc5boxed7convert69_$LT$impl$u20$alloc..boxed..Box$LT$dyn$u20$core..any..Any$C$A$GT$$GT$8downcast17hbc1b1c5b80f64518E.exit.i" - %29 = load ptr, ptr %16, align 8, !invariant.load !7, !noalias !329 - %.not.i.i.i = icmp eq ptr %29, null - br i1 %.not.i.i.i, label %31, label %30 - -30: ; preds = %28 - invoke void %29(ptr noundef nonnull %15) - to label %31 unwind label %38, !noalias !329 - -31: ; preds = %30, %28 - %32 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %33 = load i64, ptr %32, align 8, !range !307, !invariant.load !7, !noalias !329 - %34 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %35 = load i64, ptr %34, align 8, !range !308, !invariant.load !7, !noalias !329 - %36 = icmp ult i64 %35, -9223372036854775807 - call void @llvm.assume(i1 %36) - %37 = icmp eq i64 %33, 0 - br i1 %37, label %"_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i": ; preds = %31 - call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %33, i64 noundef range(i64 1, -9223372036854775807) %35) #26, !noalias !329 + %29 = icmp ne ptr %16, null + call void @llvm.assume(i1 %29) + %30 = load ptr, ptr %16, align 8, !invariant.load !7, !noalias !329 + %.not.i.i.i = icmp eq ptr %30, null + br i1 %.not.i.i.i, label %32, label %31 + +31: ; preds = %28 + invoke void %30(ptr noundef nonnull %15) + to label %32 unwind label %39, !noalias !329 + +32: ; preds = %31, %28 + %33 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %34 = load i64, ptr %33, align 8, !range !307, !invariant.load !7, !noalias !329 + %35 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %36 = load i64, ptr %35, align 8, !range !308, !invariant.load !7, !noalias !329 + %37 = icmp ult i64 %36, -9223372036854775807 + call void @llvm.assume(i1 %37) + %38 = icmp eq i64 %34, 0 + br i1 %38, label %"_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i": ; preds = %32 + call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %34, i64 noundef range(i64 1, -9223372036854775807) %36) #26, !noalias !329 br label %"_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i" -38: ; preds = %30 - %39 = landingpad { ptr, i32 } +39: ; preds = %31 + %40 = landingpad { ptr, i32 } cleanup - %40 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %41 = load i64, ptr %40, align 8, !range !307, !invariant.load !7, !noalias !329 - %42 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %43 = load i64, ptr %42, align 8, !range !308, !invariant.load !7, !noalias !329 - %44 = icmp ult i64 %43, -9223372036854775807 - call void @llvm.assume(i1 %44) - %45 = icmp eq i64 %41, 0 - br i1 %45, label %common.resume.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i": ; preds = %38 - call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %41, i64 noundef range(i64 1, -9223372036854775807) %43) #26, !noalias !329 + %41 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %42 = load i64, ptr %41, align 8, !range !307, !invariant.load !7, !noalias !329 + %43 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %44 = load i64, ptr %43, align 8, !range !308, !invariant.load !7, !noalias !329 + %45 = icmp ult i64 %44, -9223372036854775807 + call void @llvm.assume(i1 %45) + %46 = icmp eq i64 %42, 0 + br i1 %46, label %common.resume.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i": ; preds = %39 + call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %42, i64 noundef range(i64 1, -9223372036854775807) %44) #26, !noalias !329 br label %common.resume.i -"_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i", %31 +"_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i", %32 store ptr null, ptr %0, align 8, !alias.scope !329 br label %"_ZN4http10extensions10Extensions6remove28_$u7b$$u7b$closure$u7d$$u7d$17h7e644c2b7cbbdc6fE.exit" diff --git a/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll b/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll index 0436a96bf85..15d3432f5cb 100644 --- a/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll +++ b/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll @@ -586,9 +586,9 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17hcdeca8dcb9fdacd7E call void @_ZN11parking_lot10raw_rwlock9RawRwLock18unlock_shared_slow17hd7b98226de795fccE(ptr noundef nonnull align 8 %34) br label %"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27" -"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27": ; preds = %85, %81, %132, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" - %.val19.pn = phi ptr [ %45, %132 ], [ %.val21, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" ], [ %.val23, %81 ], [ %.val23, %85 ] - %.val20.pn = phi ptr [ %46, %132 ], [ %.val22, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" ], [ %.val24, %81 ], [ %.val24, %85 ] +"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27": ; preds = %85, %81, %133, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" + %.val19.pn = phi ptr [ %45, %133 ], [ %.val21, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" ], [ %.val23, %81 ], [ %.val23, %85 ] + %.val20.pn = phi ptr [ %46, %133 ], [ %.val22, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" ], [ %.val24, %81 ], [ %.val24, %85 ] %.pn = insertvalue { ptr, ptr } poison, ptr %.val19.pn, 0 %.merged = insertvalue { ptr, ptr } %.pn, ptr %.val20.pn, 1 ret { ptr, ptr } %.merged @@ -705,22 +705,24 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17hcdeca8dcb9fdacd7E _ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit: ; preds = %43 %125 = atomicrmw add ptr %45, i64 1 monotonic, align 8 %126 = icmp slt i64 %125, 0 - br i1 %126, label %130, label %127 + br i1 %126, label %131, label %127 127: ; preds = %_ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit - %128 = atomicrmw add ptr %46, i64 1 monotonic, align 8 - %129 = icmp slt i64 %128, 0 - br i1 %129, label %131, label %132 + %128 = icmp ne ptr %46, null + tail call void @llvm.assume(i1 %128) + %129 = atomicrmw add ptr %46, i64 1 monotonic, align 8 + %130 = icmp slt i64 %129, 0 + br i1 %130, label %132, label %133 -130: ; preds = %_ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit +131: ; preds = %_ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit tail call void @llvm.trap() unreachable -131: ; preds = %127 +132: ; preds = %127 tail call void @llvm.trap() unreachable -132: ; preds = %127 +133: ; preds = %127 call void @"_ZN4core3ptr50drop_in_place$LT$pingora_timeout..timer..Timer$GT$17h4a17a76a217a0b3eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27" diff --git a/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll b/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll index a5ccdacb1d2..dbef8189a1d 100644 --- a/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll +++ b/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll @@ -150,7 +150,7 @@ define internal fastcc noundef i64 @_ZN11pingora_lru11linked_list10LinkedList8ne %3 = getelementptr inbounds nuw i8, ptr %0, i64 88 %4 = load i64, ptr %3, align 8, !noundef !3 %5 = icmp eq i64 %4, 0 - br i1 %5, label %6, label %28 + br i1 %5, label %6, label %29 6: ; preds = %2 %7 = load i64, ptr %0, align 8, !range !10, !alias.scope !11, !noundef !3 @@ -192,61 +192,63 @@ _ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit: ; preds = store i64 %1, ptr %.sroa.3.0..sroa_idx.i, align 8 %26 = add nsw i64 %18, 1 store i64 %26, ptr %17, align 8, !alias.scope !14, !noalias !17 - %27 = add i64 %18, 2 - br label %53 - -28: ; preds = %2 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %30 = add nsw i64 %4, -1 - store i64 %30, ptr %3, align 8 - %31 = load i64, ptr %29, align 8, !range !10, !noundef !3 - %32 = icmp samesign ult i64 %30, %31 - tail call void @llvm.assume(i1 %32) - %33 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %34 = load ptr, ptr %33, align 8, !nonnull !3, !noundef !3 - %35 = icmp ult i64 %4, 1152921504606846977 - tail call void @llvm.assume(i1 %35) - %36 = getelementptr inbounds nuw i64, ptr %34, i64 %30 - %37 = load i64, ptr %36, align 8, !noundef !3 + %27 = icmp ult i64 %26, 384307168202282326 + tail call void @llvm.assume(i1 %27) + %28 = add nsw i64 %18, 2 + br label %54 + +29: ; preds = %2 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %31 = add nsw i64 %4, -1 + store i64 %31, ptr %3, align 8 + %32 = load i64, ptr %30, align 8, !range !10, !noundef !3 + %33 = icmp samesign ult i64 %31, %32 + tail call void @llvm.assume(i1 %33) + %34 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %35 = load ptr, ptr %34, align 8, !nonnull !3, !noundef !3 + %36 = icmp ult i64 %4, 1152921504606846977 + tail call void @llvm.assume(i1 %36) + %37 = getelementptr inbounds nuw i64, ptr %35, i64 %31 + %38 = load i64, ptr %37, align 8, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !19) - switch i64 %37, label %38 [ - i64 0, label %43 - i64 1, label %45 + switch i64 %38, label %39 [ + i64 0, label %44 + i64 1, label %46 ] -38: ; preds = %28 - %39 = add i64 %37, -2 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %41 = load i64, ptr %40, align 8, !alias.scope !19, !noalias !22, !noundef !3 - %42 = icmp ult i64 %39, %41 - br i1 %42, label %47, label %51 +39: ; preds = %29 + %40 = add i64 %38, -2 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %42 = load i64, ptr %41, align 8, !alias.scope !19, !noalias !22, !noundef !3 + %43 = icmp ult i64 %40, %42 + br i1 %43, label %48, label %52 -43: ; preds = %28 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 +44: ; preds = %29 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 24 br label %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" -45: ; preds = %28 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 48 +46: ; preds = %29 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 48 br label %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" -47: ; preds = %38 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %49 = load ptr, ptr %48, align 8, !alias.scope !19, !noalias !22, !nonnull !3, !noundef !3 - %50 = getelementptr inbounds nuw { i64, i64, i64 }, ptr %49, i64 %39 +48: ; preds = %39 + %49 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %50 = load ptr, ptr %49, align 8, !alias.scope !19, !noalias !22, !nonnull !3, !noundef !3 + %51 = getelementptr inbounds nuw { i64, i64, i64 }, ptr %50, i64 %40 br label %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" -51: ; preds = %38 - tail call void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %39, i64 noundef %41, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ff2e992120c34a933ceff030207ecd38.4) #13, !noalias !19 +52: ; preds = %39 + tail call void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %40, i64 noundef %42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ff2e992120c34a933ceff030207ecd38.4) #13, !noalias !19 unreachable -"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit": ; preds = %43, %45, %47 - %.sroa.0.0.i = phi ptr [ %50, %47 ], [ %44, %43 ], [ %46, %45 ] - %52 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 16 - store i64 %1, ptr %52, align 8 - br label %53 +"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit": ; preds = %44, %46, %48 + %.sroa.0.0.i = phi ptr [ %51, %48 ], [ %45, %44 ], [ %47, %46 ] + %53 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 16 + store i64 %1, ptr %53, align 8 + br label %54 -53: ; preds = %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit", %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit - %.sroa.0.0 = phi i64 [ %27, %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit ], [ %37, %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" ] +54: ; preds = %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit", %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit + %.sroa.0.0 = phi i64 [ %28, %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit ], [ %38, %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" ] ret i64 %.sroa.0.0 } diff --git a/bench/pingora-rs/optimized/cr8e12xes7vcplgf99utxzbos.ll b/bench/pingora-rs/optimized/cr8e12xes7vcplgf99utxzbos.ll index e0e6ddb8ad4..f7c0d572166 100644 --- a/bench/pingora-rs/optimized/cr8e12xes7vcplgf99utxzbos.ll +++ b/bench/pingora-rs/optimized/cr8e12xes7vcplgf99utxzbos.ll @@ -4284,18 +4284,21 @@ define hidden void @"_ZN4core3ptr164drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !211, !invariant.load !10 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ec1b4a1b09555cE.exit", label %20 - -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #14 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ec1b4a1b09555cE.exit", label %22 + +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ec1b4a1b09555cE.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ec1b4a1b09555cE.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ec1b4a1b09555cE.exit": ; preds = %1, %4, %8, %22 ret void } @@ -5272,18 +5275,21 @@ define hidden void @"_ZN4core3ptr176drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !211, !invariant.load !10 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h27b08e95b1a1e917E.exit", label %20 - -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #14 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h27b08e95b1a1e917E.exit", label %22 + +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h27b08e95b1a1e917E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h27b08e95b1a1e917E.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h27b08e95b1a1e917E.exit": ; preds = %1, %4, %8, %22 ret void } @@ -9983,18 +9989,21 @@ define hidden void @"_ZN4core3ptr317drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !211, !invariant.load !10 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5462985a8865b9bbE.exit", label %20 - -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #14 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5462985a8865b9bbE.exit", label %22 + +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5462985a8865b9bbE.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5462985a8865b9bbE.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5462985a8865b9bbE.exit": ; preds = %1, %4, %8, %22 ret void } diff --git a/bench/pola-rs/optimized/1zfqpoyga76fsrjdmdh7m2utw.ll b/bench/pola-rs/optimized/1zfqpoyga76fsrjdmdh7m2utw.ll index 4a40ece94b5..1f27a89d574 100644 --- a/bench/pola-rs/optimized/1zfqpoyga76fsrjdmdh7m2utw.ll +++ b/bench/pola-rs/optimized/1zfqpoyga76fsrjdmdh7m2utw.ll @@ -62012,6 +62012,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit56.i", %204, %.loopexit.split-lp92.i, %.loopexit91.i %.pn18.i = phi { ptr, i32 } [ %.pn.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit56.i" ], [ %205, %204 ], [ %lpad.loopexit93.i, %.loopexit91.i ], [ %lpad.loopexit.split-lp94.i, %.loopexit.split-lp92.i ] %.sroa.06.8.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit56.i" ], [ true, %204 ], [ true, %.loopexit91.i ], [ %.sroa.06.7.ph.i, %.loopexit.split-lp92.i ] + call void @llvm.assume(i1 %192) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %189, ptr nonnull %190) #42 to label %.thread79.i unwind label %177, !noalias !7164 @@ -62727,6 +62728,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i", %193, %.loopexit.split-lp91.i, %.loopexit90.i %.pn18.i = phi { ptr, i32 } [ %.pn.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i" ], [ %194, %193 ], [ %lpad.loopexit92.i, %.loopexit90.i ], [ %lpad.loopexit.split-lp93.i, %.loopexit.split-lp91.i ] %.sroa.06.8.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i" ], [ true, %193 ], [ true, %.loopexit90.i ], [ %.sroa.06.7.ph.i, %.loopexit.split-lp91.i ] + call void @llvm.assume(i1 %181) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %178, ptr nonnull %179) #42 to label %.thread78.i unwind label %166, !noalias !7242 @@ -81004,6 +81006,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i.i", %521, %.loopexit.split-lp91.i.i, %.loopexit90.i.i %.pn18.i.i = phi { ptr, i32 } [ %.pn.i.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i.i" ], [ %522, %521 ], [ %lpad.loopexit92.i.i, %.loopexit90.i.i ], [ %lpad.loopexit.split-lp93.i.i, %.loopexit.split-lp91.i.i ] %.sroa.06.8.i.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i.i" ], [ true, %521 ], [ true, %.loopexit90.i.i ], [ %.sroa.06.7.ph.i.i, %.loopexit.split-lp91.i.i ] + call void @llvm.assume(i1 %509) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %506, ptr nonnull %507) #42 to label %.thread78.i.i unwind label %494, !noalias !9009 diff --git a/bench/pola-rs/optimized/4i1zi5w77kchanzzu8mmseop2.ll b/bench/pola-rs/optimized/4i1zi5w77kchanzzu8mmseop2.ll index 4441ed81247..f9f13c03aae 100644 --- a/bench/pola-rs/optimized/4i1zi5w77kchanzzu8mmseop2.ll +++ b/bench/pola-rs/optimized/4i1zi5w77kchanzzu8mmseop2.ll @@ -14035,6 +14035,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i.i.i.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i", %227, %.loopexit.split-lp83.i.i.i.i, %.loopexit82.i.i.i.i %.pn18.i.i.i.i = phi { ptr, i32 } [ %.pn.i.i.i.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i" ], [ %228, %227 ], [ %lpad.loopexit84.i.i.i.i, %.loopexit82.i.i.i.i ], [ %lpad.loopexit.split-lp85.i.i.i.i, %.loopexit.split-lp83.i.i.i.i ] %.sroa.06.8.i.i.i.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i" ], [ true, %227 ], [ true, %.loopexit82.i.i.i.i ], [ %.sroa.06.7.ph.i.i.i.i, %.loopexit.split-lp83.i.i.i.i ] + call void @llvm.assume(i1 %215) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %212, ptr nonnull %213) #35 to label %.thread73.i.i.i.i unwind label %200, !noalias !1018 @@ -20727,6 +20728,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i.i.i.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i.i.i.i", %346, %.loopexit.split-lp91.i.i.i.i, %.loopexit90.i.i.i.i %.pn18.i.i.i.i = phi { ptr, i32 } [ %.pn.i.i.i.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i.i.i.i" ], [ %347, %346 ], [ %lpad.loopexit92.i.i.i.i, %.loopexit90.i.i.i.i ], [ %lpad.loopexit.split-lp93.i.i.i.i, %.loopexit.split-lp91.i.i.i.i ] %.sroa.06.8.i.i.i.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit55.i.i.i.i" ], [ true, %346 ], [ true, %.loopexit90.i.i.i.i ], [ %.sroa.06.7.ph.i.i.i.i, %.loopexit.split-lp91.i.i.i.i ] + call void @llvm.assume(i1 %334) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %331, ptr nonnull %332) #35 to label %.thread78.i.i.i.i unwind label %319, !noalias !1721 @@ -21475,6 +21477,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i.i.i.i72: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i", %596, %.loopexit.split-lp83.i.i.i.i, %.loopexit82.i.i.i.i %.pn18.i.i.i.i73 = phi { ptr, i32 } [ %.pn.i.i.i.i78, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i" ], [ %597, %596 ], [ %lpad.loopexit84.i.i.i.i, %.loopexit82.i.i.i.i ], [ %lpad.loopexit.split-lp85.i.i.i.i, %.loopexit.split-lp83.i.i.i.i ] %.sroa.06.8.i.i.i.i74 = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i" ], [ true, %596 ], [ true, %.loopexit82.i.i.i.i ], [ %.sroa.06.7.ph.i.i.i.i75, %.loopexit.split-lp83.i.i.i.i ] + call void @llvm.assume(i1 %584) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %581, ptr nonnull %582) #35 to label %.thread73.i.i.i.i unwind label %569, !noalias !1821 @@ -22428,6 +22431,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i.i.i.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i", %232, %.loopexit.split-lp83.i.i.i.i, %.loopexit82.i.i.i.i %.pn18.i.i.i.i = phi { ptr, i32 } [ %.pn.i.i.i.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i" ], [ %233, %232 ], [ %lpad.loopexit84.i.i.i.i, %.loopexit82.i.i.i.i ], [ %lpad.loopexit.split-lp85.i.i.i.i, %.loopexit.split-lp83.i.i.i.i ] %.sroa.06.8.i.i.i.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i.i" ], [ true, %232 ], [ true, %.loopexit82.i.i.i.i ], [ %.sroa.06.7.ph.i.i.i.i, %.loopexit.split-lp83.i.i.i.i ] + call void @llvm.assume(i1 %220) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %217, ptr nonnull %218) #35 to label %.thread73.i.i.i.i unwind label %205, !noalias !1914 @@ -116552,6 +116556,7 @@ _ZN12polars_arrow6legacy5array4list16AnonymousBuilder9push_null17h2a72da1b1ab4e1 .body30.i.i.i: ; preds = %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i", %196, %.loopexit.split-lp83.i.i.i, %.loopexit82.i.i.i %.pn18.i.i.i = phi { ptr, i32 } [ %.pn.i.i.i, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i" ], [ %197, %196 ], [ %lpad.loopexit84.i.i.i, %.loopexit82.i.i.i ], [ %lpad.loopexit.split-lp85.i.i.i, %.loopexit.split-lp83.i.i.i ] %.sroa.06.8.i.i.i = phi i1 [ false, %"_ZN4core3ptr76drop_in_place$LT$core..option..Option$LT$polars_core..series..Series$GT$$GT$17h54c77db40a947d5bE.exit53.i.i.i" ], [ true, %196 ], [ true, %.loopexit82.i.i.i ], [ %.sroa.06.7.ph.i.i.i, %.loopexit.split-lp83.i.i.i ] + call void @llvm.assume(i1 %184) invoke fastcc void @"_ZN4core3ptr113drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$polars_core..chunked_array..builder..list..ListBuilderTrait$GT$$GT$17h08971461303eab85E"(ptr nonnull %181, ptr nonnull %182) #35 to label %.thread73.i.i.i unwind label %169, !noalias !19006 diff --git a/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll b/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll index 22a7fb470eb..10be075e547 100644 --- a/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll +++ b/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll @@ -1760,15 +1760,17 @@ define internal void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17hb83e8bd2 %2 = load i64, ptr %0, align 8, !noundef !3 %3 = and i64 %2, -8 %4 = inttoptr i64 %3 to ptr - %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %6 = load i64, ptr %5, align 8, !noundef !3 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i" + %5 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %5) + %6 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %7 = load i64, ptr %6, align 8, !noundef !3 + %8 = icmp eq i64 %7, 0 + br i1 %8, label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i": ; preds = %1 - %8 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 - %9 = shl nuw nsw i64 %6, 4 - tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %8, i64 noundef %9, i64 noundef 8) #23 + %9 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 + %10 = shl nuw nsw i64 %7, 4 + tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %9, i64 noundef %10, i64 noundef 8) #23 br label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit" "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i" diff --git a/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll b/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll index 9d91bf3ddfe..3c6bed07aec 100644 --- a/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll +++ b/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll @@ -4977,17 +4977,21 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit: ; %16 = sub nuw i64 -9223372036854775808, %3 %17 = icmp ule i64 %15, %16 tail call void @llvm.assume(i1 %17) - %18 = icmp eq i64 %15, 0 - br i1 %18, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17he5d5389288bbc6faE.exit", label %19 - -19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit - %20 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 - %21 = sub nsw i64 0, %13 - %22 = getelementptr inbounds i8, ptr %20, i64 %21 - tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %22, i64 noundef %15, i64 noundef range(i64 1, -9223372036854775807) %3) #26 + %18 = icmp sgt i64 %10, -1 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp eq i64 %15, 0 + br i1 %20, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17he5d5389288bbc6faE.exit", label %21 + +21: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit + %22 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %22, i64 %23 + tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef range(i64 1, -9223372036854775807) %3) #26 br label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17he5d5389288bbc6faE.exit" -"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17he5d5389288bbc6faE.exit": ; preds = %19, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit, %4 +"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17he5d5389288bbc6faE.exit": ; preds = %21, %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit, %4 ret void } diff --git a/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll b/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll index 062cd87aea9..cc1edd9d5e9 100644 --- a/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll +++ b/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll @@ -115,6 +115,8 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu tail call void @llvm.assume(i1 %24) %25 = sub nsw i64 0, %15 %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + %27 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %27) tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #24, !noalias !15 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h569e3361d8ce2458E.exit" @@ -222,12 +224,12 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 switch i64 %4, label %6 [ i64 0, label %7 - i64 1, label %47 + i64 1, label %48 ] 6: ; preds = %1 tail call void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$validator..types..ValidationError$GT$$GT$17he81271ec927c1bb6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) - br label %48 + br label %49 7: ; preds = %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !46) @@ -288,7 +290,7 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation %35 = and i16 %34, %.lcssa.i.i.i %36 = getelementptr inbounds i8, ptr %32, i64 -32 invoke void @"_ZN4core3ptr59drop_in_place$LT$validator..types..ValidationErrorsKind$GT$17h45e243adcc0b352eE.llvm.17854369902771195939"(ptr noalias noundef nonnull align 8 dereferenceable(32) %36) - to label %.noexc1 unwind label %45 + to label %.noexc1 unwind label %46 .noexc.loopexit: ; preds = %.noexc1 %.pre = load i64, ptr %9, align 8, !alias.scope !73 @@ -299,30 +301,32 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation tail call void @llvm.experimental.noalias.scope.decl(metadata !73) %38 = mul i64 %37, 49 %39 = add nsw i64 %38, 65 - %40 = icmp eq i64 %39, 0 - br i1 %40, label %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", label %41 + %40 = icmp ult i64 %39, 9223372036854775793 + tail call void @llvm.assume(i1 %40) + %41 = icmp eq i64 %39, 0 + br i1 %41, label %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", label %42 -41: ; preds = %.noexc +42: ; preds = %.noexc %.neg = mul i64 %37, -48 - %42 = load ptr, ptr %8, align 8, !alias.scope !73, !nonnull !7, !noundef !7 - %43 = getelementptr i8, ptr %42, i64 %.neg - %44 = getelementptr i8, ptr %43, i64 -48 - tail call void @__rust_dealloc(ptr noundef nonnull %44, i64 noundef %39, i64 noundef 16) #24, !noalias !73 + %43 = load ptr, ptr %8, align 8, !alias.scope !73, !nonnull !7, !noundef !7 + %44 = getelementptr i8, ptr %43, i64 %.neg + %45 = getelementptr i8, ptr %44, i64 -48 + tail call void @__rust_dealloc(ptr noundef nonnull %45, i64 noundef %39, i64 noundef 16) #24, !noalias !73 br label %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit" -45: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i" - %46 = landingpad { ptr, i32 } +46: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i" + %47 = landingpad { ptr, i32 } cleanup %.val.i = load ptr, ptr %5, align 8, !alias.scope !46, !nonnull !7, !noundef !7 tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef 48, i64 noundef 8) #24, !noalias !46 - resume { ptr, i32 } %46 + resume { ptr, i32 } %47 -"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit": ; preds = %41, %.noexc, %7 +"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit": ; preds = %42, %.noexc, %7 %.val1.i = load ptr, ptr %5, align 8, !alias.scope !46, !nonnull !7, !noundef !7 tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i, i64 noundef 48, i64 noundef 8) #24, !noalias !46 - br label %48 + br label %49 -47: ; preds = %1 +48: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !76 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !76 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) @@ -330,9 +334,9 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !76 call void @"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0cb7a0d947f514c2E.llvm.6944390993391618976"(ptr noalias noundef nonnull align 8 dereferenceable(72) %3), !noalias !76 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !76 - br label %48 + br label %49 -48: ; preds = %47, %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", %6 +49: ; preds = %48, %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", %6 ret void } @@ -397,7 +401,7 @@ define hidden void @"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validat %25 = getelementptr inbounds { { ptr, i64 }, { i64, [3 x i64] } }, ptr %.sroa.03.1.i.i.i, i64 %24 %26 = getelementptr inbounds i8, ptr %25, i64 -32 invoke void @"_ZN4core3ptr59drop_in_place$LT$validator..types..ValidationErrorsKind$GT$17h45e243adcc0b352eE.llvm.17854369902771195939"(ptr noalias noundef nonnull align 8 dereferenceable(32) %26) - to label %.noexc unwind label %38 + to label %.noexc unwind label %39 .noexc: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i.i.i" %27 = add i16 %.lcssa.i.i.i.i.i, -1 @@ -410,26 +414,28 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.1785436 tail call void @llvm.experimental.noalias.scope.decl(metadata !110) %31 = mul i64 %4, 49 %32 = add nsw i64 %31, 65 - %33 = icmp eq i64 %32, 0 - br i1 %33, label %"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit", label %34 + %33 = icmp ult i64 %32, 9223372036854775793 + tail call void @llvm.assume(i1 %33) + %34 = icmp eq i64 %32, 0 + br i1 %34, label %"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit", label %35 -34: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i +35: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i %.neg.i.i = mul i64 %4, -48 - %35 = load ptr, ptr %2, align 8, !alias.scope !113, !nonnull !7, !noundef !7 - %36 = getelementptr i8, ptr %35, i64 %.neg.i.i - %37 = getelementptr i8, ptr %36, i64 -48 - tail call void @__rust_dealloc(ptr noundef nonnull %37, i64 noundef %32, i64 noundef 16) #24, !noalias !113 + %36 = load ptr, ptr %2, align 8, !alias.scope !113, !nonnull !7, !noundef !7 + %37 = getelementptr i8, ptr %36, i64 %.neg.i.i + %38 = getelementptr i8, ptr %37, i64 -48 + tail call void @__rust_dealloc(ptr noundef nonnull %38, i64 noundef %32, i64 noundef 16) #24, !noalias !113 br label %"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit" -"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit": ; preds = %34, %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i, %1 +"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit": ; preds = %35, %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i, %1 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 8) #24 ret void -38: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i.i.i" - %39 = landingpad { ptr, i32 } +39: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i.i.i" + %40 = landingpad { ptr, i32 } cleanup tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 8) #24 - resume { ptr, i32 } %39 + resume { ptr, i32 } %40 } ; Function Attrs: nonlazybind uwtable @@ -733,6 +739,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.17 %20 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #24 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.llvm.17854369902771195939.exit" @@ -912,7 +920,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h9911cf0 %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -931,6 +939,8 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h9911cf0 %23 = load ptr, ptr %0, align 8, !alias.scope !190, !nonnull !7, !noundef !7 %24 = sub nsw i64 0, %14 %25 = getelementptr inbounds i8, ptr %23, i64 %24 + %26 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #24, !noalias !190 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hc46aaf8c8f1e8d54E.llvm.17854369902771195939.exit @@ -1000,7 +1010,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.1785436 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -1019,6 +1029,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.1785436 %47 = load ptr, ptr %0, align 8, !alias.scope !211, !nonnull !7, !noundef !7 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #24, !noalias !211 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hc46aaf8c8f1e8d54E.llvm.17854369902771195939.exit @@ -1556,15 +1568,15 @@ _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h219538e3b4492417E.exit.threa br label %168 ._crit_edge.i.i10: ; preds = %168 - %spec.select.i = tail call i64 @llvm.umax.i64(i64 %22, i64 16) - %spec.select31.i = tail call i64 @llvm.umin.i64(i64 %22, i64 16) - %154 = getelementptr inbounds i8, ptr %.val16.i, i64 %spec.select.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %154, ptr nonnull align 1 %.val16.i, i64 %spec.select31.i, i1 false), !noalias !308 + %154 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %155 = getelementptr inbounds nuw i8, ptr %8, i64 16 + %..i = tail call i64 @llvm.umax.i64(i64 %22, i64 16) + %.30.i = tail call i64 @llvm.umin.i64(i64 %22, i64 16) + %156 = getelementptr inbounds i8, ptr %.val16.i, i64 %..i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %156, ptr nonnull align 1 %.val16.i, i64 %.30.i, i1 false), !noalias !308 call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !308 - %155 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store ptr @"_ZN4core3ptr85drop_in_place$LT$$LP$alloc..borrow..Cow$LT$str$GT$$C$serde_json..value..Value$RP$$GT$17hc5f4d9c7a396909eE.llvm.17854369902771195939", ptr %155, align 8, !noalias !308 - %156 = getelementptr inbounds nuw i8, ptr %8, i64 16 - store i64 56, ptr %156, align 8, !noalias !308 + store ptr @"_ZN4core3ptr85drop_in_place$LT$$LP$alloc..borrow..Cow$LT$str$GT$$C$serde_json..value..Value$RP$$GT$17hc5f4d9c7a396909eE.llvm.17854369902771195939", ptr %154, align 8, !noalias !308 + store i64 56, ptr %155, align 8, !noalias !308 store ptr %0, ptr %8, align 8, !noalias !308 %.sroa.0.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %7, i64 8 %.sroa.0.sroa.5.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %7, i64 16 diff --git a/bench/qdrant-rs/optimized/4iacc535829shmz2.ll b/bench/qdrant-rs/optimized/4iacc535829shmz2.ll index 5a0bee919a9..0772548a039 100644 --- a/bench/qdrant-rs/optimized/4iacc535829shmz2.ll +++ b/bench/qdrant-rs/optimized/4iacc535829shmz2.ll @@ -580,38 +580,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #11 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 - -10: ; preds = %4 - br i1 %3, label %19, label %14 - -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 - -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 - br label %11 - -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #32 - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 + +11: ; preds = %4 + br i1 %3, label %20, label %15 + +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 + +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 + br label %12 + +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #32 + br label %12 } ; Function Attrs: alwaysinline nonlazybind uwtable @@ -732,28 +734,30 @@ define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allo ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #11 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %3 %6 = add i64 %1, -1 %7 = icmp sgt i64 %6, -1 tail call void @llvm.assume(i1 %7) %8 = inttoptr i64 %1 to ptr + %9 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %9) br label %_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit -9: ; preds = %3 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %11 = add i64 %1, -1 - %12 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %12) - %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 +10: ; preds = %3 + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %12 = add i64 %1, -1 + %13 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %13) + %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 br label %_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit -_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit: ; preds = %5, %9 - %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %13, %9 ] - %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 - %15 = insertvalue { ptr, i64 } %14, i64 %2, 1 - ret { ptr, i64 } %15 +_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit: ; preds = %5, %10 + %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] + %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 + %16 = insertvalue { ptr, i64 } %15, i64 %2, 1 + ret { ptr, i64 } %16 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1499,25 +1503,27 @@ define hidden void @"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ite ; Function Attrs: nounwind nonlazybind uwtable define hidden noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17hce7306cb8b86e242E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #1 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %3 %6 = add i64 %1, -1 %7 = icmp sgt i64 %6, -1 tail call void @llvm.assume(i1 %7) %8 = inttoptr i64 %1 to ptr + %9 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %9) br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit" -9: ; preds = %3 - %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %11 = add i64 %1, -1 - %12 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %12) - %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 +10: ; preds = %3 + %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %12 = add i64 %1, -1 + %13 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %13) + %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit": ; preds = %5, %9 - %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %13, %9 ] +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit": ; preds = %5, %10 + %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %14, %10 ] ret ptr %.sroa.05.0.i.i } diff --git a/bench/qemu/optimized/tcg-op.ll b/bench/qemu/optimized/tcg-op.ll index f8277b0d986..dd29edf3b2f 100644 --- a/bench/qemu/optimized/tcg-op.ll +++ b/bench/qemu/optimized/tcg-op.ll @@ -2124,6 +2124,8 @@ define dso_local void @tcg_gen_extract2_i32(ptr noundef %0, ptr noundef %1, ptr br i1 %29, label %30, label %57 30: ; preds = %28 + %or.cond.i = icmp samesign ult i32 %3, 32 + tail call void @llvm.assume(i1 %or.cond.i) %31 = icmp eq i32 %3, 0 br i1 %31, label %32, label %tcg_gen_rotli_i32.exit.i @@ -5563,9 +5565,11 @@ define dso_local void @tcg_gen_extract2_i64(ptr noundef %0, ptr noundef %1, ptr 30: ; preds = %4 %31 = icmp eq ptr %1, %2 - br i1 %31, label %32, label %61 + br i1 %31, label %32, label %60 32: ; preds = %30 + %or.cond.i = icmp samesign ult i32 %3, 64 + tail call void @llvm.assume(i1 %or.cond.i) %33 = icmp eq i32 %3, 0 br i1 %33, label %34, label %tcg_gen_rotli_i64.exit.i @@ -5586,40 +5590,40 @@ define dso_local void @tcg_gen_extract2_i64(ptr noundef %0, ptr noundef %1, ptr br label %tcg_gen_mov_i64.exit tcg_gen_rotli_i64.exit.i: ; preds = %32 - %46 = zext nneg i32 %3 to i64 - %47 = sub nuw nsw i64 64, %46 - %48 = tail call ptr @tcg_constant_i64(i64 noundef %47) #6 - %49 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) - %50 = load ptr, ptr %49, align 8 - %51 = ptrtoint ptr %0 to i64 - %52 = getelementptr inbounds nuw i8, ptr %50, i64 %51 - %53 = ptrtoint ptr %52 to i64 - %54 = ptrtoint ptr %2 to i64 - %55 = getelementptr inbounds nuw i8, ptr %50, i64 %54 - %56 = ptrtoint ptr %55 to i64 - %57 = ptrtoint ptr %48 to i64 - %58 = getelementptr inbounds nuw i8, ptr %50, i64 %57 - %59 = ptrtoint ptr %58 to i64 - %60 = tail call ptr @tcg_gen_op3(i32 noundef 93, i32 noundef 1, i64 noundef %53, i64 noundef %56, i64 noundef %59) + %narrow = sub nuw nsw i32 64, %3 + %46 = zext nneg i32 %narrow to i64 + %47 = tail call ptr @tcg_constant_i64(i64 noundef %46) #6 + %48 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) + %49 = load ptr, ptr %48, align 8 + %50 = ptrtoint ptr %0 to i64 + %51 = getelementptr inbounds nuw i8, ptr %49, i64 %50 + %52 = ptrtoint ptr %51 to i64 + %53 = ptrtoint ptr %2 to i64 + %54 = getelementptr inbounds nuw i8, ptr %49, i64 %53 + %55 = ptrtoint ptr %54 to i64 + %56 = ptrtoint ptr %47 to i64 + %57 = getelementptr inbounds nuw i8, ptr %49, i64 %56 + %58 = ptrtoint ptr %57 to i64 + %59 = tail call ptr @tcg_gen_op3(i32 noundef 93, i32 noundef 1, i64 noundef %52, i64 noundef %55, i64 noundef %58) br label %tcg_gen_mov_i64.exit -61: ; preds = %30 - %62 = zext nneg i32 %3 to i64 - %63 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) - %64 = load ptr, ptr %63, align 8 - %65 = ptrtoint ptr %0 to i64 - %66 = getelementptr inbounds nuw i8, ptr %64, i64 %65 - %67 = ptrtoint ptr %66 to i64 - %68 = ptrtoint ptr %1 to i64 - %69 = getelementptr inbounds nuw i8, ptr %64, i64 %68 - %70 = ptrtoint ptr %69 to i64 - %71 = ptrtoint ptr %2 to i64 - %72 = getelementptr inbounds nuw i8, ptr %64, i64 %71 - %73 = ptrtoint ptr %72 to i64 - %74 = tail call ptr @tcg_gen_op4(i32 noundef 98, i32 noundef 1, i64 noundef %67, i64 noundef %70, i64 noundef %73, i64 noundef range(i64 1, 4294967296) %62) +60: ; preds = %30 + %61 = zext nneg i32 %3 to i64 + %62 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) + %63 = load ptr, ptr %62, align 8 + %64 = ptrtoint ptr %0 to i64 + %65 = getelementptr inbounds nuw i8, ptr %63, i64 %64 + %66 = ptrtoint ptr %65 to i64 + %67 = ptrtoint ptr %1 to i64 + %68 = getelementptr inbounds nuw i8, ptr %63, i64 %67 + %69 = ptrtoint ptr %68 to i64 + %70 = ptrtoint ptr %2 to i64 + %71 = getelementptr inbounds nuw i8, ptr %63, i64 %70 + %72 = ptrtoint ptr %71 to i64 + %73 = tail call ptr @tcg_gen_op4(i32 noundef 98, i32 noundef 1, i64 noundef %66, i64 noundef %69, i64 noundef %72, i64 noundef range(i64 1, 4294967296) %61) br label %tcg_gen_mov_i64.exit -tcg_gen_mov_i64.exit: ; preds = %tcg_gen_rotli_i64.exit.i, %36, %34, %20, %18, %8, %6, %61 +tcg_gen_mov_i64.exit: ; preds = %tcg_gen_rotli_i64.exit.i, %36, %34, %20, %18, %8, %6, %60 ret void } diff --git a/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll b/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll index af0fe6ab968..abe58b7c8e1 100644 --- a/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll +++ b/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll @@ -444,21 +444,23 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..rc..Weak$LT$core..ce %17 = sub i64 0, %14 %18 = and i64 %16, %17 %19 = tail call i64 @llvm.umax.i64(i64 %14, i64 8) - %20 = add i64 %19, 7 + %20 = add nuw i64 %19, 7 %21 = add i64 %20, %18 %22 = sub i64 0, %19 %23 = and i64 %21, %22 - %24 = add i64 %19, 15 + %24 = add nuw i64 %19, 15 %25 = add i64 %24, %23 %26 = and i64 %25, %22 - %27 = icmp eq i64 %26, 0 - br i1 %27, label %"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit", label %28 + %27 = icmp ult i64 %14, -9223372036854775807 + tail call void @llvm.assume(i1 %27) + %28 = icmp eq i64 %26, 0 + br i1 %28, label %"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit", label %29 -28: ; preds = %9 +29: ; preds = %9 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %26, i64 noundef range(i64 1, -9223372036854775807) %19) #13 br label %"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit" -"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit": ; preds = %1, %4, %9, %28 +"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit": ; preds = %1, %4, %9, %29 ret void } diff --git a/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll b/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll index ab0f4157f43..0dd86ddaf8f 100644 --- a/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll +++ b/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll @@ -616,49 +616,51 @@ define internal fastcc { ptr, i64 } @"_ZN90_$LT$core..str..iter..Split$LT$P$GT$$ %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 br label %15 -15: ; preds = %43, %.lr.ph.i.i - %.pre4547.i.i = phi i64 [ %.val1.i, %.lr.ph.i.i ], [ %.pre4548.i.i, %43 ] - %16 = phi i64 [ %11, %.lr.ph.i.i ], [ %45, %43 ] - %17 = phi i64 [ %10, %.lr.ph.i.i ], [ %44, %43 ] +15: ; preds = %44, %.lr.ph.i.i + %.pre4547.i.i = phi i64 [ %.val1.i, %.lr.ph.i.i ], [ %.pre4548.i.i, %44 ] + %16 = phi i64 [ %11, %.lr.ph.i.i ], [ %46, %44 ] + %17 = phi i64 [ %10, %.lr.ph.i.i ], [ %45, %44 ] %18 = load ptr, ptr %6, align 8, !alias.scope !106, !noalias !109, !nonnull !8, !align !105, !noundef !8 %19 = sub nuw i64 %16, %17 %20 = getelementptr inbounds nuw i8, ptr %18, i64 %17 %21 = load i8, ptr %14, align 8, !alias.scope !106, !noalias !109, !noundef !8 %22 = zext i8 %21 to i64 - %23 = getelementptr i8, ptr %13, i64 %22 - %24 = getelementptr i8, ptr %23, i64 -1 - %25 = load i8, ptr %24, align 1, !alias.scope !106, !noalias !109, !noundef !8 - %26 = icmp ult i64 %19, 16 - br i1 %26, label %.preheader.i.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i + %23 = add nsw i64 %22, -1 + %24 = icmp ult i64 %23, 4 + tail call void @llvm.assume(i1 %24) + %25 = getelementptr inbounds nuw i8, ptr %13, i64 %23 + %26 = load i8, ptr %25, align 1, !alias.scope !106, !noalias !109, !noundef !8 + %27 = icmp ult i64 %19, 16 + br i1 %27, label %.preheader.i.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i .preheader.i.i.i: ; preds = %15 %.not.i.i.i = icmp eq i64 %16, %17 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %.preheader.i.i.i, %30 - %.sroa.01.05.i.i.i = phi i64 [ %31, %30 ], [ 0, %.preheader.i.i.i ] - %27 = getelementptr inbounds nuw i8, ptr %20, i64 %.sroa.01.05.i.i.i - %28 = load i8, ptr %27, align 1, !alias.scope !111, !noalias !109, !noundef !8 - %29 = icmp eq i8 %28, %25 - br i1 %29, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i, label %30 +.lr.ph.i.i.i: ; preds = %.preheader.i.i.i, %31 + %.sroa.01.05.i.i.i = phi i64 [ %32, %31 ], [ 0, %.preheader.i.i.i ] + %28 = getelementptr inbounds nuw i8, ptr %20, i64 %.sroa.01.05.i.i.i + %29 = load i8, ptr %28, align 1, !alias.scope !111, !noalias !109, !noundef !8 + %30 = icmp eq i8 %29, %26 + br i1 %30, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i, label %31 -30: ; preds = %.lr.ph.i.i.i - %31 = add nuw i64 %.sroa.01.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %31, %19 +31: ; preds = %.lr.ph.i.i.i + %32 = add nuw i64 %.sroa.01.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %32, %19 br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i: ; preds = %15 - %32 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17ha63ab3f9ed3c39d6E(i8 noundef %25, ptr noalias noundef nonnull readonly align 1 %20, i64 noundef %19), !noalias !109 - %33 = extractvalue { i64, i64 } %32, 0 - %34 = trunc nuw i64 %33 to i1 - br i1 %34, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i + %33 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17ha63ab3f9ed3c39d6E(i8 noundef %26, ptr noalias noundef nonnull readonly align 1 %20, i64 noundef %19), !noalias !109 + %34 = extractvalue { i64, i64 } %33, 0 + %35 = trunc nuw i64 %34 to i1 + br i1 %35, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i %.pre46.pre.i.i = load i64, ptr %9, align 8, !alias.scope !106, !noalias !109 br label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i - %35 = extractvalue { i64, i64 } %32, 1 + %36 = extractvalue { i64, i64 } %33, 1 %.pre.i.i = load i64, ptr %8, align 8, !alias.scope !106, !noalias !109 %.pre42.i.i = load i8, ptr %14, align 8, !alias.scope !106, !noalias !109 %.pre45.pre.i.i = load i64, ptr %7, align 8, !alias.scope !106, !noalias !109 @@ -668,89 +670,89 @@ _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memc _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i: ; preds = %.lr.ph.i.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i %.pre-phi.i.i = phi i64 [ %.pre51.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %22, %.lr.ph.i.i.i ] %.pre45.i.i = phi i64 [ %.pre45.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %.pre4547.i.i, %.lr.ph.i.i.i ] - %36 = phi i8 [ %.pre42.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %21, %.lr.ph.i.i.i ] - %37 = phi i64 [ %.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %17, %.lr.ph.i.i.i ] - %.sroa.4.0.i19.i.i = phi i64 [ %35, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %.sroa.01.05.i.i.i, %.lr.ph.i.i.i ] - %38 = add i64 %37, 1 - %39 = add i64 %38, %.sroa.4.0.i19.i.i - store i64 %39, ptr %8, align 8, !alias.scope !106, !noalias !109 - %.not12.i.i = icmp ult i64 %39, %.pre-phi.i.i - br i1 %.not12.i.i, label %43, label %41 - -_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i: ; preds = %.preheader.i.i.i, %30, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i - %40 = phi i64 [ %16, %30 ], [ %.pre46.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i ], [ %16, %.preheader.i.i.i ] + %37 = phi i8 [ %.pre42.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %21, %.lr.ph.i.i.i ] + %38 = phi i64 [ %.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %17, %.lr.ph.i.i.i ] + %.sroa.4.0.i19.i.i = phi i64 [ %36, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %.sroa.01.05.i.i.i, %.lr.ph.i.i.i ] + %39 = add i64 %38, 1 + %40 = add i64 %39, %.sroa.4.0.i19.i.i store i64 %40, ptr %8, align 8, !alias.scope !106, !noalias !109 + %.not12.i.i = icmp ult i64 %40, %.pre-phi.i.i + br i1 %.not12.i.i, label %44, label %42 + +_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i: ; preds = %.preheader.i.i.i, %31, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i + %41 = phi i64 [ %16, %31 ], [ %.pre46.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i ], [ %16, %.preheader.i.i.i ] + store i64 %41, ptr %8, align 8, !alias.scope !106, !noalias !109 br label %.loopexit.i -41: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i - %42 = sub nuw i64 %39, %.pre-phi.i.i - %.not13.i.i = icmp ugt i64 %39, %.pre45.i.i - br i1 %.not13.i.i, label %43, label %47 - -43: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i", %41, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i - %.pre4548.i.i = phi i64 [ %.pre44.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %.pre45.i.i, %41 ], [ %.pre45.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] - %44 = phi i64 [ %.pre43.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %39, %41 ], [ %39, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] - %45 = load i64, ptr %9, align 8, !alias.scope !106, !noalias !109, !noundef !8 - %46 = icmp ult i64 %45, %44 - %.not.i.i = icmp ugt i64 %45, %.pre4548.i.i - %or.cond.i.i = select i1 %46, i1 true, i1 %.not.i.i +42: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i + %43 = sub nuw i64 %40, %.pre-phi.i.i + %.not13.i.i = icmp ugt i64 %40, %.pre45.i.i + br i1 %.not13.i.i, label %44, label %48 + +44: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i", %42, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i + %.pre4548.i.i = phi i64 [ %.pre44.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %.pre45.i.i, %42 ], [ %.pre45.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] + %45 = phi i64 [ %.pre43.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %40, %42 ], [ %40, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] + %46 = load i64, ptr %9, align 8, !alias.scope !106, !noalias !109, !noundef !8 + %47 = icmp ult i64 %46, %45 + %.not.i.i = icmp ugt i64 %46, %.pre4548.i.i + %or.cond.i.i = select i1 %47, i1 true, i1 %.not.i.i br i1 %or.cond.i.i, label %.loopexit.i, label %15 -47: ; preds = %41 - %48 = icmp ugt i8 %36, 4 - br i1 %48, label %49, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i", !prof !10 +48: ; preds = %42 + %49 = icmp ugt i8 %37, 4 + br i1 %49, label %50, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i", !prof !10 -49: ; preds = %47 +50: ; preds = %48 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef range(i64 0, 256) %.pre-phi.i.i, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.cb0cbbd8d54a074eda7e75993297274d.20) #12, !noalias !114 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i": ; preds = %47 - %50 = load ptr, ptr %6, align 8, !alias.scope !106, !noalias !109, !nonnull !8, !align !105, !noundef !8 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 %42 - %52 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hdfc6144e18c3da94E"(ptr noalias noundef nonnull readonly align 1 %51, i64 noundef %.pre-phi.i.i, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %.pre-phi.i.i), !noalias !109 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i": ; preds = %48 + %51 = load ptr, ptr %6, align 8, !alias.scope !106, !noalias !109, !nonnull !8, !align !105, !noundef !8 + %52 = getelementptr inbounds nuw i8, ptr %51, i64 %43 + %53 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hdfc6144e18c3da94E"(ptr noalias noundef nonnull readonly align 1 %52, i64 noundef %.pre-phi.i.i, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %.pre-phi.i.i), !noalias !109 %.pre43.i.i = load i64, ptr %8, align 8, !alias.scope !106, !noalias !109 - br i1 %52, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" + br i1 %53, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i" %.pre44.i.i = load i64, ptr %7, align 8, !alias.scope !106, !noalias !109 - br label %43 + br label %44 "_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i" - %53 = load i64, ptr %0, align 8, !alias.scope !102, !noundef !8 - %54 = sub nuw i64 %42, %53 - %55 = getelementptr inbounds nuw i8, ptr %.val.i, i64 %53 + %54 = load i64, ptr %0, align 8, !alias.scope !102, !noundef !8 + %55 = sub nuw i64 %43, %54 + %56 = getelementptr inbounds nuw i8, ptr %.val.i, i64 %54 store i64 %.pre43.i.i, ptr %0, align 8, !alias.scope !102 br label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit" -.loopexit.i: ; preds = %43, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, %5 - %56 = load i8, ptr %2, align 1, !range !101, !alias.scope !117, !noundef !8 - %57 = trunc nuw i8 %56 to i1 - br i1 %57, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit", label %58 +.loopexit.i: ; preds = %44, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, %5 + %57 = load i8, ptr %2, align 1, !range !101, !alias.scope !117, !noundef !8 + %58 = trunc nuw i8 %57 to i1 + br i1 %58, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit", label %59 -58: ; preds = %.loopexit.i +59: ; preds = %.loopexit.i store i8 1, ptr %2, align 1, !alias.scope !117 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %60 = load i8, ptr %59, align 8, !range !101, !alias.scope !117, !noundef !8 - %61 = trunc nuw i8 %60 to i1 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %61 = load i8, ptr %60, align 8, !range !101, !alias.scope !117, !noundef !8 + %62 = trunc nuw i8 %61 to i1 %.pre.i2.i = load i64, ptr %0, align 8, !alias.scope !117 %.phi.trans.insert.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 %.pre2.i.i = load i64, ptr %.phi.trans.insert.i.i, align 8, !alias.scope !117 %.not.i3.i = icmp ne i64 %.pre2.i.i, %.pre.i2.i - %or.cond.not.i.i = select i1 %61, i1 true, i1 %.not.i3.i + %or.cond.not.i.i = select i1 %62, i1 true, i1 %.not.i3.i br i1 %or.cond.not.i.i, label %._crit_edge.i.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit" -._crit_edge.i.i: ; preds = %58 +._crit_edge.i.i: ; preds = %59 %.val.i.i = load ptr, ptr %6, align 8, !alias.scope !117, !nonnull !8, !align !105, !noundef !8 - %62 = sub nuw i64 %.pre2.i.i, %.pre.i2.i - %63 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 %.pre.i2.i + %63 = sub nuw i64 %.pre2.i.i, %.pre.i2.i + %64 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 %.pre.i2.i br label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit" -"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit": ; preds = %1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", %.loopexit.i, %58, %._crit_edge.i.i - %.sroa.4.0.i = phi i64 [ undef, %1 ], [ %54, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %62, %._crit_edge.i.i ], [ undef, %58 ], [ undef, %.loopexit.i ] - %.sroa.0.0.i = phi ptr [ null, %1 ], [ %55, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %63, %._crit_edge.i.i ], [ null, %58 ], [ null, %.loopexit.i ] - %64 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 - %65 = insertvalue { ptr, i64 } %64, i64 %.sroa.4.0.i, 1 - ret { ptr, i64 } %65 +"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit": ; preds = %1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", %.loopexit.i, %59, %._crit_edge.i.i + %.sroa.4.0.i = phi i64 [ undef, %1 ], [ %55, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %63, %._crit_edge.i.i ], [ undef, %59 ], [ undef, %.loopexit.i ] + %.sroa.0.0.i = phi ptr [ null, %1 ], [ %56, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %64, %._crit_edge.i.i ], [ null, %59 ], [ null, %.loopexit.i ] + %65 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 + %66 = insertvalue { ptr, i64 } %65, i64 %.sroa.4.0.i, 1 + ret { ptr, i64 } %66 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll b/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll index 0682e4cf11c..86105a0a0c6 100644 --- a/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll +++ b/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll @@ -492,18 +492,21 @@ define hidden void @"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !6, !invariant.load !3 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit", label %20 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit", label %22 -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #14 +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit": ; preds = %1, %4, %8, %22 ret void } @@ -647,18 +650,21 @@ define hidden void @"_ZN4core3ptr111drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !6, !invariant.load !3 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit", label %20 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit", label %22 -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #14 +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit": ; preds = %1, %4, %8, %22 ret void } diff --git a/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll b/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll index e4cf09f5782..c6a2508c578 100644 --- a/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll +++ b/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll @@ -7825,94 +7825,98 @@ _ZN11quinn_proto5token16encode_unix_secs17h14abcd41ee43cda7E.exit20: ; preds = % %82 = getelementptr inbounds nuw i8, ptr %81, i64 24 %83 = load ptr, ptr %82, align 8, !invariant.load !3, !nonnull !3 %84 = invoke noundef zeroext i1 %83(ptr noundef align 1 %80, ptr noalias noundef nonnull align 8 dereferenceable(24) %24, ptr noalias noundef nonnull readonly align 1 inttoptr (i64 1 to ptr), i64 noundef 0) - to label %87 unwind label %85 + to label %88 unwind label %85 -85: ; preds = %88, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", %79 +85: ; preds = %89, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", %79 %86 = landingpad { ptr, i32 } cleanup + %87 = icmp ne ptr %81, null + call void @llvm.assume(i1 %87) invoke fastcc void @"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE"(ptr %80, ptr nonnull %81) #26 - to label %.thread unwind label %112 + to label %.thread unwind label %114 -87: ; preds = %79 - br i1 %84, label %88, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", !prof !4 +88: ; preds = %79 + br i1 %84, label %89, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", !prof !4 -88: ; preds = %87 +89: ; preds = %88 invoke void @_ZN4core6result13unwrap_failed17h563d6df1cad9fe9bE(ptr noalias noundef nonnull readonly align 1 @anon.958ad362766c6650c2bee9c81b99cdad.33, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.958ad362766c6650c2bee9c81b99cdad.37, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.958ad362766c6650c2bee9c81b99cdad.171) #23 to label %.noexc unwind label %85 -.noexc: ; preds = %88 +.noexc: ; preds = %89 unreachable -"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit": ; preds = %87 +"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit": ; preds = %88 call void @llvm.lifetime.start.p0(ptr nonnull %21) store i128 %62, ptr %21, align 16 - %89 = getelementptr inbounds nuw i8, ptr %21, i64 16 - invoke void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h1f35b7a2b9569eedE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull %21, ptr noundef nonnull %89, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.958ad362766c6650c2bee9c81b99cdad.172) - to label %90 unwind label %85 + %90 = getelementptr inbounds nuw i8, ptr %21, i64 16 + invoke void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h1f35b7a2b9569eedE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull %21, ptr noundef nonnull %90, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.958ad362766c6650c2bee9c81b99cdad.172) + to label %91 unwind label %85 -90: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit" +91: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit" call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %24, i64 24, i1 false) - %91 = load ptr, ptr %81, align 8, !invariant.load !3 - %.not.i = icmp eq ptr %91, null - br i1 %.not.i, label %94, label %92 + %92 = icmp ne ptr %81, null + call void @llvm.assume(i1 %92) + %93 = load ptr, ptr %81, align 8, !invariant.load !3 + %.not.i = icmp eq ptr %93, null + br i1 %.not.i, label %96, label %94 -92: ; preds = %90 - %93 = icmp ne ptr %80, null - call void @llvm.assume(i1 %93) - invoke void %91(ptr noundef nonnull %80) - to label %94 unwind label %103 - -94: ; preds = %92, %90 +94: ; preds = %91 %95 = icmp ne ptr %80, null call void @llvm.assume(i1 %95) - %96 = getelementptr inbounds nuw i8, ptr %81, i64 8 - %97 = load i64, ptr %96, align 8, !range !45, !invariant.load !3 - %98 = getelementptr inbounds nuw i8, ptr %81, i64 16 - %99 = load i64, ptr %98, align 8, !range !46, !invariant.load !3 - %100 = icmp ult i64 %99, -9223372036854775807 - call void @llvm.assume(i1 %100) - %101 = icmp eq i64 %97, 0 - br i1 %101, label %"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit", label %102 - -102: ; preds = %94 - call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %97, i64 noundef range(i64 1, -9223372036854775807) %99) #24 + invoke void %93(ptr noundef nonnull %80) + to label %96 unwind label %105 + +96: ; preds = %94, %91 + %97 = icmp ne ptr %80, null + call void @llvm.assume(i1 %97) + %98 = getelementptr inbounds nuw i8, ptr %81, i64 8 + %99 = load i64, ptr %98, align 8, !range !45, !invariant.load !3 + %100 = getelementptr inbounds nuw i8, ptr %81, i64 16 + %101 = load i64, ptr %100, align 8, !range !46, !invariant.load !3 + %102 = icmp ult i64 %101, -9223372036854775807 + call void @llvm.assume(i1 %102) + %103 = icmp eq i64 %99, 0 + br i1 %103, label %"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit", label %104 + +104: ; preds = %96 + call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %99, i64 noundef range(i64 1, -9223372036854775807) %101) #24 br label %"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit" -103: ; preds = %92 - %104 = landingpad { ptr, i32 } +105: ; preds = %94 + %106 = landingpad { ptr, i32 } cleanup - %105 = getelementptr inbounds nuw i8, ptr %81, i64 8 - %106 = load i64, ptr %105, align 8, !range !45, !invariant.load !3 - %107 = getelementptr inbounds nuw i8, ptr %81, i64 16 - %108 = load i64, ptr %107, align 8, !range !46, !invariant.load !3 - %109 = icmp ult i64 %108, -9223372036854775807 - call void @llvm.assume(i1 %109) - %110 = icmp eq i64 %106, 0 - br i1 %110, label %114, label %111 - -111: ; preds = %103 - call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %106, i64 noundef range(i64 1, -9223372036854775807) %108) #24 - br label %114 - -"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit": ; preds = %102, %94 + %107 = getelementptr inbounds nuw i8, ptr %81, i64 8 + %108 = load i64, ptr %107, align 8, !range !45, !invariant.load !3 + %109 = getelementptr inbounds nuw i8, ptr %81, i64 16 + %110 = load i64, ptr %109, align 8, !range !46, !invariant.load !3 + %111 = icmp ult i64 %110, -9223372036854775807 + call void @llvm.assume(i1 %111) + %112 = icmp eq i64 %108, 0 + br i1 %112, label %116, label %113 + +113: ; preds = %105 + call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %108, i64 noundef range(i64 1, -9223372036854775807) %110) #24 + br label %116 + +"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit": ; preds = %104, %96 call void @llvm.lifetime.end.p0(ptr nonnull %24) ret void -112: ; preds = %85, %.thread - %113 = landingpad { ptr, i32 } +114: ; preds = %85, %.thread + %115 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #25 unreachable -114: ; preds = %111, %103, %.thread - %.pn34 = phi { ptr, i32 } [ %.pn35, %.thread ], [ %104, %103 ], [ %104, %111 ] +116: ; preds = %113, %105, %.thread + %.pn34 = phi { ptr, i32 } [ %.pn35, %.thread ], [ %106, %105 ], [ %106, %113 ] resume { ptr, i32 } %.pn34 .thread: ; preds = %85, %.thread36 %.pn35 = phi { ptr, i32 } [ %43, %.thread36 ], [ %86, %85 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hdec3f2ebf373a446E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24) #26 - to label %114 unwind label %112 + to label %116 unwind label %114 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll b/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll index ba84797af2f..1c88c16ca40 100644 --- a/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll +++ b/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll @@ -28,26 +28,28 @@ define hidden void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$ %2 = alloca { ptr, i64 }, align 8 %3 = and i64 %0, -8 %4 = inttoptr i64 %3 to ptr - %5 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 - %6 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %7 = load i64, ptr %6, align 8, !noundef !4 + %5 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %5) + %6 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %8 = load i64, ptr %7, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) - store ptr %5, ptr %2, align 8 - %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %7, ptr %8, align 8 + store ptr %6, ptr %2, align 8 + %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %8, ptr %9, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %9 unwind label %10 + to label %10 unwind label %11 -9: ; preds = %1 +10: ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @__rust_dealloc(ptr noundef nonnull %4, i64 noundef 16, i64 noundef 8) #13, !noalias !5 ret void -10: ; preds = %1 - %11 = landingpad { ptr, i32 } +11: ; preds = %1 + %12 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %4, i64 noundef 16, i64 noundef 8) #13, !noalias !10 - resume { ptr, i32 } %11 + resume { ptr, i32 } %12 } ; Function Attrs: nonlazybind uwtable @@ -65,33 +67,35 @@ define hidden void @_ZN15crossbeam_epoch5guard5Guard15defer_unchecked17h4ccf3bef store i64 %1, ptr %8, align 8, !alias.scope !15 call void @_ZN15crossbeam_epoch8internal5Local5defer17he931d8941bee3f39E(ptr noundef nonnull align 128 %5, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %18 + br label %19 9: ; preds = %2 %10 = and i64 %1, -8 %11 = inttoptr i64 %10 to ptr - %12 = load ptr, ptr %11, align 8, !nonnull !4, !noundef !4 - %13 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %14 = load i64, ptr %13, align 8, !noundef !4 + %12 = icmp ne i64 %10, 0 + tail call void @llvm.assume(i1 %12) + %13 = load ptr, ptr %11, align 8, !nonnull !4, !noundef !4 + %14 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %15 = load i64, ptr %14, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store ptr %12, ptr %3, align 8 - %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %14, ptr %15, align 8 + store ptr %13, ptr %3, align 8 + %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %15, ptr %16, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) - to label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit" unwind label %16 + to label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit" unwind label %17 -16: ; preds = %9 - %17 = landingpad { ptr, i32 } +17: ; preds = %9 + %18 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef 16, i64 noundef 8) #13, !noalias !18 - resume { ptr, i32 } %17 + resume { ptr, i32 } %18 "_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit": ; preds = %9 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef 16, i64 noundef 8) #13, !noalias !23 - br label %18 + br label %19 -18: ; preds = %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit", %7 +19: ; preds = %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit", %7 ret void } diff --git a/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll b/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll index 758901c018b..87752e7eb95 100644 --- a/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll +++ b/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll @@ -61,21 +61,23 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2c83d87f31 %3 = load i64, ptr %0, align 8, !noundef !4 %4 = and i64 %3, -8 %5 = inttoptr i64 %4 to ptr - %6 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 - %7 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %8 = load i64, ptr %7, align 8, !noundef !4 + %6 = icmp ne i64 %4, 0 + tail call void @llvm.assume(i1 %6) + %7 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %8 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %9 = load i64, ptr %8, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) - store ptr %6, ptr %2, align 8 - %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %8, ptr %9, align 8 + store ptr %7, ptr %2, align 8 + %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %9, ptr %10, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit" unwind label %10 + to label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit" unwind label %11 -10: ; preds = %1 - %11 = landingpad { ptr, i32 } +11: ; preds = %1 + %12 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8) #19 - resume { ptr, i32 } %11 + resume { ptr, i32 } %12 "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit": ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) @@ -90,24 +92,26 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h94c2fe8421 %4 = load i64, ptr %3, align 8, !noundef !4 %5 = and i64 %4, -8 %6 = inttoptr i64 %5 to ptr - %7 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 - %8 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %9 = load i64, ptr %8, align 8, !noundef !4 + %7 = icmp ne i64 %5, 0 + tail call void @llvm.assume(i1 %7) + %8 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %9 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %10 = load i64, ptr %9, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) - store ptr %7, ptr %2, align 8 - %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %9, ptr %10, align 8 + store ptr %8, ptr %2, align 8 + %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %10, ptr %11, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %13 unwind label %11 + to label %14 unwind label %12 -11: ; preds = %1 - %12 = landingpad { ptr, i32 } +12: ; preds = %1 + %13 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8) #19 call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8) #19 - resume { ptr, i32 } %12 + resume { ptr, i32 } %13 -13: ; preds = %1 +14: ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8) #19 call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8) #19 @@ -695,38 +699,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.3707938170552112821. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.3707938170552112821(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #4 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 - -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 - -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #19 - br label %11 - -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #19 - br label %11 +11: ; preds = %4 + br i1 %3, label %20, label %15 + +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 + +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #19 + br label %12 + +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #19 + br label %12 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll b/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll index 531a3ef8f5f..aed6482b784 100644 --- a/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll +++ b/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll @@ -157,7 +157,7 @@ define hidden { ptr, ptr } @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$ ] 48: ; preds = %43 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %37, i64 noundef %.sroa.5.0.copyload, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.35) #14, !noalias !55 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %37, i64 noundef %.sroa.5.0.copyload, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.35) #16, !noalias !55 unreachable default.unreachable: ; preds = %45 @@ -192,10 +192,12 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h986421bd6c20431eE.exit.thread: ret { ptr, ptr } %55 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable define hidden noundef nonnull align 8 ptr @"_ZN15crossbeam_epoch6atomic14Owned$LT$T$GT$8into_box17h06d60643629aab33E"(i64 noundef %0) unnamed_addr #2 { %2 = and i64 %0, -8 %3 = inttoptr i64 %2 to ptr + %4 = icmp ne i64 %2, 0 + tail call void @llvm.assume(i1 %4) ret ptr %3 } @@ -229,7 +231,7 @@ define hidden noundef i64 @"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$4load17h store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %13, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #16 unreachable 14: ; preds = %3 @@ -247,7 +249,7 @@ define hidden noundef i64 @"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$4load17h store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %19, align 8 %20 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %20, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #16 unreachable 21: ; preds = %3 @@ -517,7 +519,7 @@ define hidden noundef i8 @_ZN4core4sync6atomic11atomic_load17h5793edc2db4770a0E. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %12, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #16 unreachable 13: ; preds = %2 @@ -535,7 +537,7 @@ define hidden noundef i8 @_ZN4core4sync6atomic11atomic_load17h5793edc2db4770a0E. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %3, i64 24 store i64 0, ptr %19, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #16 unreachable 20: ; preds = %2 @@ -577,7 +579,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h939a445d398624cfE store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %12, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #16 unreachable 13: ; preds = %2 @@ -595,7 +597,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h939a445d398624cfE store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %3, i64 24 store i64 0, ptr %19, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #16 unreachable 20: ; preds = %2 @@ -641,7 +643,7 @@ define hidden void @_ZN4core4sync6atomic12atomic_store17h1574303c9bdc4bbcE.llvm. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %13, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.14) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.14) #16 unreachable 14: ; preds = %3 @@ -655,7 +657,7 @@ define hidden void @_ZN4core4sync6atomic12atomic_store17h1574303c9bdc4bbcE.llvm. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %18, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.17) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.17) #16 unreachable 19: ; preds = %3 @@ -807,7 +809,7 @@ define hidden { i32, i32 } @_ZN4core4sync6atomic23atomic_compare_exchange17h498a store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %50, align 8 %51 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i64 0, ptr %51, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.20) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.20) #16 unreachable 52: ; preds = %13, %12, %11, %10, %9 @@ -821,7 +823,7 @@ define hidden { i32, i32 } @_ZN4core4sync6atomic23atomic_compare_exchange17h498a store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %55, align 8 %56 = getelementptr inbounds nuw i8, ptr %7, i64 24 store i64 0, ptr %56, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.23) #14 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.23) #16 unreachable } @@ -850,13 +852,13 @@ define hidden { ptr, i8 } @"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81de store ptr %14, ptr %3, align 8 %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 %16, ptr %17, align 8 - invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) #14 + invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) #16 to label %20 unwind label %18 18: ; preds = %12 %19 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #15 + invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #17 to label %23 unwind label %21 20: ; preds = %12 @@ -865,7 +867,7 @@ define hidden { ptr, i8 } @"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81de 21: ; preds = %18 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable 23: ; preds = %18 @@ -883,7 +885,7 @@ define hidden { ptr, i64 } @"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$ } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable -define hidden noundef align 8 dereferenceable(16) ptr @"_ZN56_$LT$T$u20$as$u20$crossbeam_epoch..atomic..Pointable$GT$5deref17h424818de35272a61E.llvm.4364434838112105284"(i64 noundef %0) unnamed_addr #2 { +define hidden noundef align 8 dereferenceable(16) ptr @"_ZN56_$LT$T$u20$as$u20$crossbeam_epoch..atomic..Pointable$GT$5deref17h424818de35272a61E.llvm.4364434838112105284"(i64 noundef %0) unnamed_addr #7 { %2 = inttoptr i64 %0 to ptr ret ptr %2 } @@ -936,7 +938,7 @@ define hidden noundef zeroext i1 @"_ZN69_$LT$std..sync..mutex..Mutex$LT$T$GT$$u2 26: ; preds = %23 %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) #15 + invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) #17 to label %48 unwind label %46 28: ; preds = %23 @@ -987,7 +989,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 46: ; preds = %58, %26 %47 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable 48: ; preds = %58, %26 @@ -1022,7 +1024,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 58: ; preds = %49 %59 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) #15 + invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) #17 to label %48 unwind label %46 60: ; preds = %49 @@ -1068,7 +1070,7 @@ define hidden noundef nonnull align 128 ptr @"_ZN75_$LT$usize$u20$as$u20$core..s ret ptr %7 8: ; preds = %4 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %0, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #14 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %0, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #16 unreachable } @@ -1117,7 +1119,7 @@ define hidden noundef nonnull align 128 ptr @"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A br i1 %6, label %"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h61d1fc09bc3e3cbfE.llvm.4364434838112105284.exit", label %7, !prof !54 7: ; preds = %3 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #14 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #16 unreachable "_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h61d1fc09bc3e3cbfE.llvm.4364434838112105284.exit": ; preds = %3 @@ -1134,7 +1136,7 @@ define void @_ZN10rayon_core5sleep5Sleep3new17h97a0d250b2f3199bE(ptr noalias nou br i1 %4, label %6, label %5 5: ; preds = %2 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.36.llvm.4364434838112105284, i64 noundef 42, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.38.llvm.4364434838112105284) #14 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.36.llvm.4364434838112105284, i64 noundef 42, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.38.llvm.4364434838112105284) #16 unreachable 6: ; preds = %2 @@ -1148,7 +1150,7 @@ define void @_ZN10rayon_core5sleep5Sleep3new17h97a0d250b2f3199bE(ptr noalias nou } ; Function Attrs: cold nonlazybind uwtable -define hidden noundef range(i64 0, 4294967296) i64 @_ZN10rayon_core5sleep5Sleep15announce_sleepy17hd873976ca361f7c4E(ptr noundef nonnull align 8 %0) unnamed_addr #7 personality ptr @rust_eh_personality { +define hidden noundef range(i64 0, 4294967296) i64 @_ZN10rayon_core5sleep5Sleep15announce_sleepy17hd873976ca361f7c4E(ptr noundef nonnull align 8 %0) unnamed_addr #8 personality ptr @rust_eh_personality { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 br label %3 @@ -1178,7 +1180,7 @@ define void @_ZN10rayon_core5sleep5Sleep26notify_worker_latch_is_set17hd2845a688 } ; Function Attrs: cold nonlazybind uwtable -define void @_ZN10rayon_core5sleep5Sleep16wake_any_threads17hdf2987505f1636b6E(ptr noundef nonnull align 8 captures(none) %0, i32 noundef %1) unnamed_addr #7 { +define void @_ZN10rayon_core5sleep5Sleep16wake_any_threads17hdf2987505f1636b6E(ptr noundef nonnull align 8 captures(none) %0, i32 noundef %1) unnamed_addr #8 { %.not = icmp eq i32 %1, 0 br i1 %.not, label %.thread, label %3 @@ -1220,7 +1222,7 @@ define hidden noundef zeroext i1 @_ZN10rayon_core5sleep5Sleep20wake_specific_thr br i1 %7, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17ha78111fc5ebf76fcE.llvm.4364434838112105284.exit", label %8, !prof !54 8: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %1, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.39.llvm.4364434838112105284) #14, !noalias !101 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %1, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.39.llvm.4364434838112105284) #16, !noalias !101 unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17ha78111fc5ebf76fcE.llvm.4364434838112105284.exit": ; preds = %2 @@ -1260,13 +1262,13 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.llvm.43644348 store ptr %11, ptr %3, align 8, !noalias !109 %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 %.0.i.i.i, ptr %24, align 8, !noalias !109 - invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.40.llvm.4364434838112105284) #14 + invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.40.llvm.4364434838112105284) #16 to label %27 unwind label %25, !noalias !113 25: ; preds = %23 %26 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #15 + invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #17 to label %common.resume unwind label %28, !noalias !113 27: ; preds = %23 @@ -1275,7 +1277,7 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.llvm.43644348 28: ; preds = %25 %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16, !noalias !113 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18, !noalias !113 unreachable common.resume: ; preds = %46, %25 @@ -1331,7 +1333,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 46: ; preds = %33 %47 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #15 + invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #17 to label %common.resume unwind label %51 48: ; preds = %33 @@ -1342,12 +1344,12 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 51: ; preds = %46 %52 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 + tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable -define hidden void @_ZN10rayon_core5sleep9IdleState10wake_fully17h605886b4e5c58020E(ptr noalias noundef writeonly align 8 captures(none) dereferenceable(24) initializes((8, 20)) %0) unnamed_addr #8 { +define hidden void @_ZN10rayon_core5sleep9IdleState10wake_fully17h605886b4e5c58020E(ptr noalias noundef writeonly align 8 captures(none) dereferenceable(24) initializes((8, 20)) %0) unnamed_addr #9 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 0, ptr %2, align 8 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1356,7 +1358,7 @@ define hidden void @_ZN10rayon_core5sleep9IdleState10wake_fully17h605886b4e5c580 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable -define hidden void @_ZN10rayon_core5sleep9IdleState11wake_partly17h7a9dde494bf6f5ccE(ptr noalias noundef writeonly align 8 captures(none) dereferenceable(24) initializes((8, 20)) %0) unnamed_addr #8 { +define hidden void @_ZN10rayon_core5sleep9IdleState11wake_partly17h7a9dde494bf6f5ccE(ptr noalias noundef writeonly align 8 captures(none) dereferenceable(24) initializes((8, 20)) %0) unnamed_addr #9 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i32 32, ptr %2, align 8 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1368,31 +1370,31 @@ define hidden void @_ZN10rayon_core5sleep9IdleState11wake_partly17h7a9dde494bf6f declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #9 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #10 ; Function Attrs: nonlazybind uwtable declare void @_ZN3std3env4_var17heb1759b01e9820adE(ptr noalias noundef sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #1 ; Function Attrs: cold nonlazybind uwtable -declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex14lock_contended17h711e3c2fa7879c2dE(ptr noundef nonnull align 4) unnamed_addr #7 +declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex14lock_contended17h711e3c2fa7879c2dE(ptr noundef nonnull align 4) unnamed_addr #8 ; Function Attrs: cold nonlazybind uwtable -declare noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h658c934b8397a2acE() unnamed_addr #7 +declare noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h658c934b8397a2acE() unnamed_addr #8 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN43_$LT$bool$u20$as$u20$core..fmt..Display$GT$3fmt17h66f0ab6491e96cc2E"(ptr noalias noundef readonly align 1 dereferenceable(1), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef align 8 captures(none) dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 +declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef align 8 captures(none) dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN76_$LT$std..sync..poison..PoisonError$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17hfaccba8df3425db0E"(ptr noalias noundef readonly align 8 dereferenceable(16), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 +declare void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #11 +declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #12 ; Function Attrs: nonlazybind uwtable declare void @_ZN4core3fmt9Formatter12debug_struct17h182b2d36b73186b9E(ptr noalias noundef sret({ ptr, i8, i8, [6 x i8] }) align 8 captures(none) dereferenceable(16), ptr noalias noundef align 8 dereferenceable(64), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #1 @@ -1410,16 +1412,16 @@ declare noundef zeroext i1 @"_ZN57_$LT$core..fmt..Arguments$u20$as$u20$core..fmt declare noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct21finish_non_exhaustive17h376fe039ed28a878E(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 +declare void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 ; Function Attrs: cold nonlazybind uwtable -declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17hb07a3d057da5ea39E(ptr noundef nonnull align 4) unnamed_addr #7 +declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17hb07a3d057da5ea39E(ptr noundef nonnull align 4) unnamed_addr #8 ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN15crossbeam_deque5deque16Stealer$LT$T$GT$5steal17h201b268e9298e0a7E"(ptr noalias noundef sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 +declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 ; Function Attrs: nonlazybind uwtable declare void @_ZN3std4sync7condvar7Condvar10notify_one17h2467c63876d6f3cfE(ptr noundef nonnull align 4) unnamed_addr #1 @@ -1446,31 +1448,36 @@ declare hidden void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonEr declare hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hcf05d76f64e5335aE.llvm.15553549611834190124"(ptr noalias noundef sret({ { i64, ptr }, i64 }) align 8 captures(none) dereferenceable(24), i64 noundef, i64 noundef) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(ptr captures(none)) #12 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #13 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(ptr captures(none)) #12 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #13 + +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #13 +declare void @llvm.experimental.noalias.scope.decl(metadata) #15 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #8 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #14 = { noreturn } -attributes #15 = { cold } -attributes #16 = { cold noreturn nounwind } +attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #9 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #15 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #16 = { noreturn } +attributes #17 = { cold } +attributes #18 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/redis/optimized/arena.ll b/bench/redis/optimized/arena.ll index 8fe23506d99..47e31f2ffcf 100644 --- a/bench/redis/optimized/arena.ll +++ b/bench/redis/optimized/arena.ll @@ -886,41 +886,43 @@ san_large_extent_decide_guard.exit: ; preds = %sz_size2index.exit, 82: ; preds = %75 %83 = add nuw nsw i64 %3, 63 %84 = and i64 %83, 8128 - %85 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 range(i64 0, -2305843009213693952) %84, i1 true) - %86 = xor i64 %85, 63 + %85 = icmp ne i64 %84, 0 + call void @llvm.assume(i1 %85) + %86 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 range(i64 0, -2305843009213693952) %84, i1 true) + %87 = xor i64 %86, 63 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %87 = icmp eq ptr %0, null - br i1 %87, label %93, label %88 - -88: ; preds = %82 - %89 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %90 = load i64, ptr %89, align 8, !tbaa !11 - %91 = mul i64 %90, 6364136223846793005 - %92 = add i64 %91, 1442695040888963407 - store i64 %92, ptr %89, align 8, !tbaa !11 - br label %97 - -93: ; preds = %82 - %94 = ptrtoint ptr %6 to i64 - %95 = mul i64 %94, 6364136223846793005 - %96 = add i64 %95, 1442695040888963407 - br label %97 - -97: ; preds = %93, %88 - %.sink.i26 = phi i64 [ %96, %93 ], [ %92, %88 ] - %98 = sub nuw nsw i64 115, %85 - %99 = lshr i64 %.sink.i26, %98 - %100 = shl nuw nsw i64 %99, %86 - %101 = getelementptr inbounds nuw i8, ptr %56, i64 8 - %102 = load ptr, ptr %101, align 8, !tbaa !143 - %103 = ptrtoint ptr %102 to i64 - %104 = add i64 %100, %103 - %105 = inttoptr i64 %104 to ptr - store ptr %105, ptr %101, align 8, !tbaa !143 + %88 = icmp eq ptr %0, null + br i1 %88, label %94, label %89 + +89: ; preds = %82 + %90 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %91 = load i64, ptr %90, align 8, !tbaa !11 + %92 = mul i64 %91, 6364136223846793005 + %93 = add i64 %92, 1442695040888963407 + store i64 %93, ptr %90, align 8, !tbaa !11 + br label %98 + +94: ; preds = %82 + %95 = ptrtoint ptr %6 to i64 + %96 = mul i64 %95, 6364136223846793005 + %97 = add i64 %96, 1442695040888963407 + br label %98 + +98: ; preds = %94, %89 + %.sink.i26 = phi i64 [ %97, %94 ], [ %93, %89 ] + %99 = sub nuw nsw i64 115, %86 + %100 = lshr i64 %.sink.i26, %99 + %101 = shl nuw nsw i64 %100, %87 + %102 = getelementptr inbounds nuw i8, ptr %56, i64 8 + %103 = load ptr, ptr %102, align 8, !tbaa !143 + %104 = ptrtoint ptr %103 to i64 + %105 = add i64 %101, %104 + %106 = inttoptr i64 %105 to ptr + store ptr %106, ptr %102, align 8, !tbaa !143 call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %arena_cache_oblivious_randomize.exit -arena_cache_oblivious_randomize.exit: ; preds = %san_large_extent_decide_guard.exit, %97, %75 +arena_cache_oblivious_randomize.exit: ; preds = %san_large_extent_decide_guard.exit, %98, %75 call void @llvm.lifetime.end.p0(ptr nonnull %7) ret ptr %56 } diff --git a/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll b/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll index 4b0ef74f1ab..108cca75f31 100644 --- a/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll +++ b/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll @@ -2947,6 +2947,8 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu tail call void @llvm.assume(i1 %24) %25 = sub nsw i64 0, %15 %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + %27 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %27) tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #35, !noalias !216 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7656fca3dc56cecfE.exit" @@ -3970,6 +3972,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.12 %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #35 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.12622858556511099134.exit" @@ -4146,9 +4150,9 @@ define internal fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17 %.val19 = load i64, ptr %5, align 8, !noundef !5 %6 = add i64 %.val19, 1 %.not.not4.i = icmp eq i64 %6, 0 - br i1 %.not.not4.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23, label %.lr.ph.i + br i1 %.not.not4.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22, label %.lr.ph.i -_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23: ; preds = %3 +_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22: ; preds = %3 %7 = icmp ne ptr %.val18, null tail call void @llvm.assume(i1 %7) %8 = getelementptr inbounds nuw i8, ptr %.val18, i64 16 @@ -4167,15 +4171,15 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex br label %16 ._crit_edge.i: ; preds = %16 - %spec.select = tail call i64 @llvm.umax.i64(i64 %6, i64 16) - %spec.select31 = tail call i64 @llvm.umin.i64(i64 %6, i64 16) - %13 = getelementptr inbounds i8, ptr %.val18, i64 %spec.select - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %13, ptr nonnull align 1 %.val18, i64 %spec.select31, i1 false) + %13 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %14 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %. = tail call i64 @llvm.umax.i64(i64 %6, i64 16) + %.30 = tail call i64 @llvm.umin.i64(i64 %6, i64 16) + %15 = getelementptr inbounds i8, ptr %.val18, i64 %. + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %15, ptr nonnull align 1 %.val18, i64 %.30, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %4) - %14 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %2, ptr %14, align 8 - %15 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store i64 24, ptr %15, align 8 + store ptr %2, ptr %13, align 8 + store i64 24, ptr %14, align 8 store ptr %0, ptr %4, align 8 br label %.lr.ph @@ -4206,9 +4210,9 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %26 = mul nuw i64 %25, 7 br label %._crit_edge -._crit_edge: ; preds = %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23, %._crit_edge.loopexit - %.pre-phi = phi i64 [ %26, %._crit_edge.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23 ] - %27 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ -1, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23 ] +._crit_edge: ; preds = %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22, %._crit_edge.loopexit + %.pre-phi = phi i64 [ %26, %._crit_edge.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22 ] + %27 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ -1, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22 ] %28 = icmp ult i64 %27, 8 %.0 = select i1 %28, i64 %27, i64 %.pre-phi %29 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -4440,7 +4444,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.1262285 %37 = add i64 %6, 1 %38 = mul nuw i64 %37, %2 %39 = add i64 %3, -1 - %40 = add nuw i64 %39, %38 + %40 = add nuw i64 %38, %39 %41 = sub i64 0, %3 %42 = and i64 %40, %41 %43 = add i64 %6, 17 @@ -4459,6 +4463,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.1262285 %51 = load ptr, ptr %0, align 8, !alias.scope !425, !nonnull !5, !noundef !5 %52 = sub nsw i64 0, %42 %53 = getelementptr inbounds i8, ptr %51, i64 %52 + %54 = icmp sgt i64 %39, -1 + tail call void @llvm.assume(i1 %54) tail call void @__rust_dealloc(ptr noundef nonnull %53, i64 noundef %44, i64 noundef %3) #35, !noalias !425 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit @@ -4541,7 +4547,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.1262285 %38 = add i64 %6, 1 %39 = mul nuw i64 %38, %2 %40 = add i64 %3, -1 - %41 = add nuw i64 %40, %39 + %41 = add nuw i64 %39, %40 %42 = sub i64 0, %3 %43 = and i64 %41, %42 %44 = add i64 %6, 17 @@ -4560,6 +4566,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.1262285 %52 = load ptr, ptr %0, align 8, !alias.scope !457, !nonnull !5, !noundef !5 %53 = sub nsw i64 0, %43 %54 = getelementptr inbounds i8, ptr %52, i64 %53 + %55 = icmp sgt i64 %40, -1 + tail call void @llvm.assume(i1 %55) tail call void @__rust_dealloc(ptr noundef nonnull %54, i64 noundef %45, i64 noundef %3) #35, !noalias !457 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit diff --git a/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll b/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll index fdb0eaf2e33..efaf468c52a 100644 --- a/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll +++ b/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll @@ -175,60 +175,62 @@ define hidden void @"_ZN4core3ptr103drop_in_place$LT$alloc..vec..Vec$LT$alloc..b .body.i.i: ; preds = %.lr.ph.i.i %9 = landingpad { ptr, i32 } cleanup + %10 = icmp ne ptr %.val7.i.i, null + tail call void @llvm.assume(i1 %10) tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !113 - br label %11 + br label %12 "_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE.exit.i.i": ; preds = %.lr.ph.i.i tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !113 - %10 = icmp eq i64 %8, %5 - br i1 %10, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", label %.lr.ph.i.i + %11 = icmp eq i64 %8, %5 + br i1 %11, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", label %.lr.ph.i.i -11: ; preds = %13, %.body.i.i - %.1.i.i = phi i64 [ %8, %.body.i.i ], [ %15, %13 ] - %12 = icmp eq i64 %.1.i.i, %5 - br i1 %12, label %.body, label %13 +12: ; preds = %14, %.body.i.i + %.1.i.i = phi i64 [ %8, %.body.i.i ], [ %16, %14 ] + %13 = icmp eq i64 %.1.i.i, %5 + br i1 %13, label %.body, label %14 -13: ; preds = %11 - %14 = getelementptr inbounds ptr, ptr %3, i64 %.1.i.i - %15 = add i64 %.1.i.i, 1 - %.val.i.i = load ptr, ptr %14, align 8, !alias.scope !110, !noalias !107, !noundef !4 +14: ; preds = %12 + %15 = getelementptr inbounds ptr, ptr %3, i64 %.1.i.i + %16 = add i64 %.1.i.i, 1 + %.val.i.i = load ptr, ptr %15, align 8, !alias.scope !110, !noalias !107, !noundef !4 invoke fastcc void @"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE"(ptr %.val.i.i) #13 - to label %11 unwind label %16, !noalias !113 + to label %12 unwind label %17, !noalias !113 -16: ; preds = %13 - %17 = landingpad { ptr, i32 } +17: ; preds = %14 + %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #14, !noalias !113 unreachable -.body: ; preds = %11 +.body: ; preds = %12 tail call void @llvm.experimental.noalias.scope.decl(metadata !114) tail call void @llvm.experimental.noalias.scope.decl(metadata !117) %.val.i.i1 = load i64, ptr %0, align 8, !alias.scope !120, !noundef !4 - %18 = icmp eq i64 %.val.i.i1, 0 - br i1 %18, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit", label %19 + %19 = icmp eq i64 %.val.i.i1, 0 + br i1 %19, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit", label %20 -19: ; preds = %.body - %20 = shl nuw i64 %.val.i.i1, 3 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %20, i64 noundef 8) #12, !noalias !120 +20: ; preds = %.body + %21 = shl nuw i64 %.val.i.i1, 3 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %21, i64 noundef 8) #12, !noalias !120 br label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit" "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit": ; preds = %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE.exit.i.i", %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !121) tail call void @llvm.experimental.noalias.scope.decl(metadata !124) %.val.i.i2 = load i64, ptr %0, align 8, !alias.scope !127, !noundef !4 - %21 = icmp eq i64 %.val.i.i2, 0 - br i1 %21, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4", label %22 + %22 = icmp eq i64 %.val.i.i2, 0 + br i1 %22, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4", label %23 -22: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit" - %23 = shl nuw i64 %.val.i.i2, 3 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %23, i64 noundef 8) #12, !noalias !127 +23: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit" + %24 = shl nuw i64 %.val.i.i2, 3 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %24, i64 noundef 8) #12, !noalias !127 br label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4" -"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", %22 +"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", %23 ret void -"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit": ; preds = %19, %.body +"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit": ; preds = %20, %.body resume { ptr, i32 } %9 } @@ -7813,31 +7815,33 @@ define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops .body.i: ; preds = %.lr.ph.i %9 = landingpad { ptr, i32 } cleanup + %10 = icmp ne ptr %.val7.i, null + tail call void @llvm.assume(i1 %10) tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !3160 - br label %11 + br label %12 "_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE.exit.i": ; preds = %.lr.ph.i tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !3160 - %10 = icmp eq i64 %8, %5 - br i1 %10, label %"_ZN4core3ptr90drop_in_place$LT$$u5b$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$u5d$$GT$17h5f521015cafd55e9E.exit", label %.lr.ph.i + %11 = icmp eq i64 %8, %5 + br i1 %11, label %"_ZN4core3ptr90drop_in_place$LT$$u5b$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$u5d$$GT$17h5f521015cafd55e9E.exit", label %.lr.ph.i -11: ; preds = %13, %.body.i - %.1.i = phi i64 [ %8, %.body.i ], [ %15, %13 ] - %12 = icmp eq i64 %.1.i, %5 - br i1 %12, label %16, label %13 +12: ; preds = %14, %.body.i + %.1.i = phi i64 [ %8, %.body.i ], [ %16, %14 ] + %13 = icmp eq i64 %.1.i, %5 + br i1 %13, label %17, label %14 -13: ; preds = %11 - %14 = getelementptr inbounds ptr, ptr %3, i64 %.1.i - %15 = add i64 %.1.i, 1 - %.val.i = load ptr, ptr %14, align 8, !alias.scope !3160, !noundef !4 +14: ; preds = %12 + %15 = getelementptr inbounds ptr, ptr %3, i64 %.1.i + %16 = add i64 %.1.i, 1 + %.val.i = load ptr, ptr %15, align 8, !alias.scope !3160, !noundef !4 invoke fastcc void @"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE"(ptr %.val.i) #13 - to label %11 unwind label %17, !noalias !3160 + to label %12 unwind label %18, !noalias !3160 -16: ; preds = %11 +17: ; preds = %12 resume { ptr, i32 } %9 -17: ; preds = %13 - %18 = landingpad { ptr, i32 } +18: ; preds = %14 + %19 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #14, !noalias !3160 unreachable diff --git a/bench/ripgrep-rs/optimized/24qzgyq9sz17vf3i.ll b/bench/ripgrep-rs/optimized/24qzgyq9sz17vf3i.ll index 88a64e4e7e4..335d5655cb0 100644 --- a/bench/ripgrep-rs/optimized/24qzgyq9sz17vf3i.ll +++ b/bench/ripgrep-rs/optimized/24qzgyq9sz17vf3i.ll @@ -596,6 +596,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h890668c9b2984b6eE.llvm.10 %20 = load ptr, ptr %0, align 8, !nonnull !11, !noundef !11 %21 = sub nsw i64 0, %11 %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #21 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.llvm.10656536096838236268.exit" @@ -963,7 +965,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h2f2549dff2d29f61E.llvm.1065653 %37 = add i64 %6, 1 %38 = mul nuw i64 %37, %2 %39 = add i64 %3, -1 - %40 = add nuw i64 %39, %38 + %40 = add nuw i64 %38, %39 %41 = sub i64 0, %3 %42 = and i64 %40, %41 %43 = add i64 %6, 17 @@ -982,6 +984,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h2f2549dff2d29f61E.llvm.1065653 %51 = load ptr, ptr %0, align 8, !alias.scope !209, !nonnull !11, !noundef !11 %52 = sub nsw i64 0, %42 %53 = getelementptr inbounds i8, ptr %51, i64 %52 + %54 = icmp sgt i64 %39, -1 + tail call void @llvm.assume(i1 %54) tail call void @__rust_dealloc(ptr noundef nonnull %53, i64 noundef %44, i64 noundef %3) #21, !noalias !209 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hb96127f642884f43E.llvm.10656536096838236268.exit @@ -1051,7 +1055,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h7cc88b90689ac367E.llvm.1065653 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %35, %34 + %36 = add nuw i64 %34, %35 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -1070,6 +1074,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h7cc88b90689ac367E.llvm.1065653 %47 = load ptr, ptr %0, align 8, !alias.scope !230, !nonnull !11, !noundef !11 %48 = sub nsw i64 0, %38 %49 = getelementptr inbounds i8, ptr %47, i64 %48 + %50 = icmp sgt i64 %35, -1 + tail call void @llvm.assume(i1 %50) tail call void @__rust_dealloc(ptr noundef nonnull %49, i64 noundef %40, i64 noundef %3) #21, !noalias !230 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hb96127f642884f43E.llvm.10656536096838236268.exit @@ -1152,7 +1158,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h184d4bc8ec847c52E.llvm.1065653 %37 = add i64 %6, 1 %38 = mul nuw i64 %37, %2 %39 = add i64 %3, -1 - %40 = add nuw i64 %39, %38 + %40 = add nuw i64 %38, %39 %41 = sub i64 0, %3 %42 = and i64 %40, %41 %43 = add i64 %6, 17 @@ -1171,6 +1177,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h184d4bc8ec847c52E.llvm.1065653 %51 = load ptr, ptr %0, align 8, !alias.scope !262, !nonnull !11, !noundef !11 %52 = sub nsw i64 0, %42 %53 = getelementptr inbounds i8, ptr %51, i64 %52 + %54 = icmp sgt i64 %39, -1 + tail call void @llvm.assume(i1 %54) tail call void @__rust_dealloc(ptr noundef nonnull %53, i64 noundef %44, i64 noundef %3) #21, !noalias !262 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hb96127f642884f43E.llvm.10656536096838236268.exit @@ -1191,7 +1199,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hf471666 %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -1210,6 +1218,8 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hf471666 %23 = load ptr, ptr %0, align 8, !alias.scope !265, !nonnull !11, !noundef !11 %24 = sub nsw i64 0, %14 %25 = getelementptr inbounds i8, ptr %23, i64 %24 + %26 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #21, !noalias !265 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hb96127f642884f43E.llvm.10656536096838236268.exit diff --git a/bench/rocksdb/optimized/xxhash.ll b/bench/rocksdb/optimized/xxhash.ll index 2a3c66f0a43..ac0a0e1f8ef 100644 --- a/bench/rocksdb/optimized/xxhash.ll +++ b/bench/rocksdb/optimized/xxhash.ll @@ -87,9 +87,9 @@ _ZL18XXH32_endian_alignPKhmj13XXH_alignment.exit: ; preds = %5 br label %54 .preheader.thread.i: ; preds = %3 - %52 = icmp eq i64 %1, 0 - tail call void @llvm.assume(i1 %52) - %53 = add i32 %2, 374761393 + %52 = add i32 %2, 374761393 + %53 = icmp eq i64 %1, 0 + tail call void @llvm.assume(i1 %53) br label %_ZL14XXH32_finalizejPKhm13XXH_alignment.exit 54: ; preds = %_ZL18XXH32_endian_alignPKhmj13XXH_alignment.exit, %_ZL18XXH32_endian_alignPKhmj13XXH_alignment.exit.thread @@ -136,7 +136,7 @@ _ZL18XXH_readLE32_alignPKv13XXH_alignment.exit.i: ; preds = %54, %_ZL18XXH_readL br i1 %.not.i, label %_ZL14XXH32_finalizejPKhm13XXH_alignment.exit, label %.lr.ph.i, !llvm.loop !13 _ZL14XXH32_finalizejPKhm13XXH_alignment.exit: ; preds = %.lr.ph.i, %.preheader.thread.i, %.preheader.i - %.1.lcssa.i = phi i32 [ %.0.lcssa.i, %.preheader.i ], [ %53, %.preheader.thread.i ], [ %71, %.lr.ph.i ] + %.1.lcssa.i = phi i32 [ %.0.lcssa.i, %.preheader.i ], [ %52, %.preheader.thread.i ], [ %71, %.lr.ph.i ] %73 = lshr i32 %.1.lcssa.i, 15 %74 = xor i32 %73, %.1.lcssa.i %75 = mul i32 %74, -2048144777 diff --git a/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll b/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll index 0780ba5ec98..d7d1df4a1d1 100644 --- a/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll +++ b/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll @@ -6377,13 +6377,13 @@ define hidden noundef zeroext i1 @_ZN18tracing_subscriber6filter3env9EnvFilter7e %11 = trunc nuw i8 %10 to i1 br i1 %11, label %15, label %.critedge -.critedge: ; preds = %15, %73, %18, %4 +.critedge: ; preds = %15, %._crit_edge, %18, %4 %12 = load i64, ptr %0, align 8, !range !456, !noundef !4 %.not25 = icmp eq i64 %12, 5 %13 = load i64, ptr %1, align 8, !range !457 %14 = icmp samesign ult i64 %13, %12 %or.cond = select i1 %.not25, i1 true, i1 %14 - br i1 %or.cond, label %.critedge30, label %74 + br i1 %or.cond, label %.critedge30, label %72 15: ; preds = %4 %16 = getelementptr inbounds nuw i8, ptr %0, i64 464 @@ -6499,36 +6499,44 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit: ; preds = %3 %65 = load ptr, ptr %64, align 8, !nonnull !4, !noundef !4 %66 = getelementptr inbounds nuw i8, ptr %27, i64 24 %67 = load i64, ptr %66, align 8, !noundef !4 - %68 = getelementptr inbounds nuw i64, ptr %65, i64 %67 - br label %.critedge32 - -.critedge32: ; preds = %70, %60 - %.sroa.019.0 = phi ptr [ %65, %60 ], [ %.sroa.019.1, %70 ] - %69 = icmp eq ptr %.sroa.019.0, %68 - br i1 %69, label %73, label %70 - -70: ; preds = %.critedge32 - %.sroa.019.1 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 8 - %71 = load i64, ptr %.sroa.019.0, align 8, !range !456, !noundef !4 - %.not27 = icmp eq i64 %71, 5 - %72 = icmp samesign ult i64 %19, %71 - %or.cond43 = select i1 %.not27, i1 true, i1 %72 - br i1 %or.cond43, label %.critedge32, label %76 - -73: ; preds = %.critedge32 + %.idx = shl nuw nsw i64 %67, 3 + %68 = getelementptr inbounds nuw i8, ptr %65, i64 %.idx + %69 = icmp eq i64 %67, 0 + br i1 %69, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %60 + %.sroa.019.143 = getelementptr inbounds nuw i8, ptr %65, i64 8 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.critedge32 + %.sroa.019.145 = phi ptr [ %.sroa.019.1, %.critedge32 ], [ %.sroa.019.143, %.lr.ph.preheader ] + %.sroa.019.044 = phi ptr [ %.sroa.019.145, %.critedge32 ], [ %65, %.lr.ph.preheader ] + %70 = load i64, ptr %.sroa.019.044, align 8, !range !456, !noundef !4 + %.not27 = icmp eq i64 %70, 5 + %71 = icmp samesign ult i64 %19, %70 + %or.cond52 = select i1 %.not27, i1 true, i1 %71 + br i1 %or.cond52, label %.critedge32, label %75 + +._crit_edge: ; preds = %.critedge32, %60 call void @"_ZN4core3ptr102drop_in_place$LT$core..cell..Ref$LT$alloc..vec..Vec$LT$tracing_core..metadata..LevelFilter$GT$$GT$$GT$17hd4a90ece6d18398fE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %7) call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.critedge -74: ; preds = %.critedge - %75 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) +72: ; preds = %.critedge + %73 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) br label %.critedge30 -.critedge30: ; preds = %58, %.critedge, %76, %74 - %.sroa.0.0 = phi i1 [ true, %58 ], [ true, %76 ], [ %75, %74 ], [ false, %.critedge ] +.critedge30: ; preds = %58, %.critedge, %75, %72 + %.sroa.0.0 = phi i1 [ true, %58 ], [ true, %75 ], [ %73, %72 ], [ false, %.critedge ] ret i1 %.sroa.0.0 -76: ; preds = %70 +.critedge32: ; preds = %.lr.ph + %74 = icmp eq ptr %.sroa.019.145, %68 + %.sroa.019.1.idx = select i1 %74, i64 0, i64 8 + %.sroa.019.1 = getelementptr inbounds nuw i8, ptr %.sroa.019.145, i64 %.sroa.019.1.idx + br i1 %74, label %._crit_edge, label %.lr.ph + +75: ; preds = %.lr.ph call void @"_ZN4core3ptr102drop_in_place$LT$core..cell..Ref$LT$alloc..vec..Vec$LT$tracing_core..metadata..LevelFilter$GT$$GT$$GT$17hd4a90ece6d18398fE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %7) call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.critedge30 diff --git a/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll b/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll index 2c0ca737728..59a5004d9aa 100644 --- a/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll +++ b/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll @@ -1133,7 +1133,7 @@ define hidden noundef zeroext i1 @"_ZN113_$LT$tracing_subscriber..layer..layered %10 = trunc nuw i8 %9 to i1 br i1 %10, label %14, label %.critedge.i.i -.critedge.i.i: ; preds = %102, %17, %14, %2 +.critedge.i.i: ; preds = %._crit_edge.i.i, %17, %14, %2 %11 = load i64, ptr %0, align 8, !range !91, !noalias !90, !noundef !4 %.not25.i.i = icmp eq i64 %11, 5 %12 = load i64, ptr %1, align 8, !range !92, !alias.scope !90 @@ -1331,46 +1331,54 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit.i.i: ; preds %94 = load ptr, ptr %93, align 8, !noalias !90, !nonnull !4, !noundef !4 %95 = getelementptr inbounds nuw i8, ptr %26, i64 24 %96 = load i64, ptr %95, align 8, !noalias !90, !noundef !4 - %97 = getelementptr inbounds nuw i64, ptr %94, i64 %96 - br label %.critedge32.i.i - -.critedge32.i.i: ; preds = %99, %89 - %.sroa.019.0.i.i = phi ptr [ %94, %89 ], [ %.sroa.019.1.i.i, %99 ] - %98 = icmp eq ptr %.sroa.019.0.i.i, %97 - br i1 %98, label %102, label %99 - -99: ; preds = %.critedge32.i.i - %.sroa.019.1.i.i = getelementptr inbounds nuw i8, ptr %.sroa.019.0.i.i, i64 8 - %100 = load i64, ptr %.sroa.019.0.i.i, align 8, !range !91, !noalias !90, !noundef !4 - %.not27.i.i = icmp eq i64 %100, 5 - %101 = icmp samesign ult i64 %18, %100 - %or.cond12.i.i = select i1 %.not27.i.i, i1 true, i1 %101 - br i1 %or.cond12.i.i, label %.critedge32.i.i, label %103 - -102: ; preds = %.critedge32.i.i + %.idx.i.i = shl nuw nsw i64 %96, 3 + %97 = getelementptr inbounds nuw i8, ptr %94, i64 %.idx.i.i + %98 = icmp eq i64 %96, 0 + br i1 %98, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i + +.lr.ph.preheader.i.i: ; preds = %89 + %.sroa.019.112.i.i = getelementptr inbounds nuw i8, ptr %94, i64 8 + br label %.lr.ph.i.i + +.lr.ph.i.i: ; preds = %.critedge32.i.i, %.lr.ph.preheader.i.i + %.sroa.019.114.i.i = phi ptr [ %.sroa.019.1.i.i, %.critedge32.i.i ], [ %.sroa.019.112.i.i, %.lr.ph.preheader.i.i ] + %.sroa.019.013.i.i = phi ptr [ %.sroa.019.114.i.i, %.critedge32.i.i ], [ %94, %.lr.ph.preheader.i.i ] + %99 = load i64, ptr %.sroa.019.013.i.i, align 8, !range !91, !noalias !90, !noundef !4 + %.not27.i.i = icmp eq i64 %99, 5 + %100 = icmp samesign ult i64 %18, %99 + %or.cond23.i.i = select i1 %.not27.i.i, i1 true, i1 %100 + br i1 %or.cond23.i.i, label %.critedge32.i.i, label %102 + +._crit_edge.i.i: ; preds = %.critedge32.i.i, %89 call void @"_ZN4core3ptr102drop_in_place$LT$core..cell..Ref$LT$alloc..vec..Vec$LT$tracing_core..metadata..LevelFilter$GT$$GT$$GT$17h309a1a406261b22dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !90 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !90 br label %.critedge.i.i -103: ; preds = %99 +.critedge32.i.i: ; preds = %.lr.ph.i.i + %101 = icmp eq ptr %.sroa.019.114.i.i, %97 + %.sroa.019.1.idx.i.i = select i1 %101, i64 0, i64 8 + %.sroa.019.1.i.i = getelementptr inbounds nuw i8, ptr %.sroa.019.114.i.i, i64 %.sroa.019.1.idx.i.i + br i1 %101, label %._crit_edge.i.i, label %.lr.ph.i.i + +102: ; preds = %.lr.ph.i.i call void @"_ZN4core3ptr102drop_in_place$LT$core..cell..Ref$LT$alloc..vec..Vec$LT$tracing_core..metadata..LevelFilter$GT$$GT$$GT$17h309a1a406261b22dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5), !noalias !90 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !90 br label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread" "_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit": ; preds = %.critedge.i.i - %104 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) - br i1 %104, label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" + %103 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) + br i1 %103, label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" "_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3": ; preds = %.critedge.i.i, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit" call void @_ZN18tracing_subscriber6filter13layer_filters11FilterState13clear_enabled17h3e5cc05076ff84bcE() - br label %106 + br label %105 -"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread": ; preds = %103, %87, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit" - %105 = call noundef zeroext i1 @"_ZN104_$LT$tracing_subscriber..registry..sharded..Registry$u20$as$u20$tracing_core..subscriber..Subscriber$GT$7enabled17h6a00e11fb75bb5c3E"(ptr noundef nonnull align 8 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) - br label %106 +"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread": ; preds = %102, %87, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit" + %104 = call noundef zeroext i1 @"_ZN104_$LT$tracing_subscriber..registry..sharded..Registry$u20$as$u20$tracing_core..subscriber..Subscriber$GT$7enabled17h6a00e11fb75bb5c3E"(ptr noundef nonnull align 8 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) + br label %105 -106: ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" - %.sroa.0.0 = phi i1 [ %105, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread" ], [ false, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" ] +105: ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" + %.sroa.0.0 = phi i1 [ %104, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread" ], [ false, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" ] ret i1 %.sroa.0.0 } diff --git a/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll b/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll index de51d26eba3..2c07dc31b19 100644 --- a/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll +++ b/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll @@ -7696,7 +7696,7 @@ define internal fastcc void @"_ZN4core3ptr78drop_in_place$LT$alloc..boxed..Box$L 13: ; preds = %17, %15 %.1.i = phi i64 [ %3, %15 ], [ %19, %17 ] %14 = icmp eq i64 %.1.i, %.8.val - br i1 %14, label %23, label %17 + br i1 %14, label %24, label %17 15: ; preds = %.noexc.i, %11 %16 = landingpad { ptr, i32 } @@ -7717,15 +7717,19 @@ define internal fastcc void @"_ZN4core3ptr78drop_in_place$LT$alloc..boxed..Box$L "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.15956212377945586164.exit.i4": ; preds = %"_ZN4core3ptr43drop_in_place$LT$hir_expand..name..Name$GT$17he023fc5ab385eb70E.exit.i" %22 = mul nsw i64 %.8.val, 24 + %23 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %23) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %22, i64 noundef 8) #50 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf1f460e18fc64242E.exit5" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf1f460e18fc64242E.exit5": ; preds = %0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.15956212377945586164.exit.i4" ret void -23: ; preds = %13 - %24 = mul nsw i64 %.8.val, 24 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %24, i64 noundef 8) #50 +24: ; preds = %13 + %25 = mul nsw i64 %.8.val, 24 + %26 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %26) + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %25, i64 noundef 8) #50 resume { ptr, i32 } %16 } @@ -54006,8 +54010,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %27, "_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h34856fc93529786eE.exit.i": ; preds = %38, %31, %14 %41 = phi i64 [ %16, %14 ], [ %35, %38 ], [ %2, %31 ] - %.not.i6.i.not = icmp eq i64 %2, %15 - br i1 %.not.i6.i.not, label %42, label %select.unfold + %.not.i7.i.not = icmp eq i64 %2, %15 + br i1 %.not.i7.i.not, label %42, label %select.unfold 42: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h245b0fff45acc95eE.exit", %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h34856fc93529786eE.exit.i" ret i1 false diff --git a/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll b/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll index 05d0717c429..989d5781e15 100644 --- a/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll +++ b/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll @@ -8324,38 +8324,40 @@ _ZN5alloc5alloc6Global10alloc_impl17hf23e6a0ec42f607aE.llvm.3925314320651144617. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hf23e6a0ec42f607aE.llvm.3925314320651144617(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #21 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 - -10: ; preds = %4 - br i1 %3, label %19, label %14 - -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #46 - br label %11 +11: ; preds = %4 + br i1 %3, label %20, label %15 + +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 + +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #46 + br label %12 -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #46 - br label %11 +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #46 + br label %12 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable diff --git a/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll b/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll index 057c564c984..2993eb1d43c 100644 --- a/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll +++ b/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll @@ -1034,7 +1034,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !126 invoke void @"_ZN5alloc11collections5btree8navigate227_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$7next_kv17h54294366e019656aE"(ptr noalias noundef nonnull sret({ ptr, [2 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %7) - to label %.noexc unwind label %29 + to label %.noexc unwind label %30 .noexc: ; preds = %1 %9 = load ptr, ptr %6, align 8, !noalias !126, !noundef !4 @@ -1044,7 +1044,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 11: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !126 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.25b62880313225d728764a1cafc68778.0.llvm.15983814413174583861, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.25b62880313225d728764a1cafc68778.4.llvm.15983814413174583861) #20 - to label %.noexc1 unwind label %29 + to label %.noexc1 unwind label %30 .noexc1: ; preds = %11 unreachable @@ -1065,7 +1065,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 tail call void @llvm.experimental.noalias.scope.decl(metadata !130) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !133 invoke void @"_ZN5alloc11collections5btree4node145Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$Type$GT$5force17h2d11f8f1b3d17b4eE.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %.noexc2 unwind label %29 + to label %.noexc2 unwind label %30 .noexc2: ; preds = %12 %13 = load i64, ptr %3, align 8, !range !8, !noalias !133, !noundef !4 @@ -1076,55 +1076,57 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 %17 = load i64, ptr %16, align 8, !noalias !133, !noundef !4 %18 = getelementptr inbounds nuw i8, ptr %3, i64 24 %19 = load i64, ptr %18, align 8, !noalias !133, !noundef !4 - br i1 %trunc.i.i, label %24, label %20 + %20 = add i64 %19, 1 + br i1 %trunc.i.i, label %24, label %21 -20: ; preds = %.noexc2 - %21 = add i64 %19, 1 +21: ; preds = %.noexc2 store ptr %15, ptr %5, align 8, !alias.scope !130, !noalias !135 %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %17, ptr %22, align 8, !alias.scope !130, !noalias !135 %23 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %21, ptr %23, align 8, !alias.scope !130, !noalias !135 - br label %31 + store i64 %20, ptr %23, align 8, !alias.scope !130, !noalias !135 + br label %32 24: ; preds = %.noexc2 - %25 = getelementptr i8, ptr %15, i64 640 - %26 = getelementptr ptr, ptr %25, i64 %19 - %27 = load ptr, ptr %26, align 8, !noalias !133, !nonnull !4, !noundef !4 - %28 = add i64 %17, -1 - invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h29e9b4d53caa48e3E.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %27, i64 noundef %28) - to label %31 unwind label %29 - -29: ; preds = %24, %12, %11, %1 - %30 = landingpad { ptr, i32 } + %25 = getelementptr inbounds nuw i8, ptr %15, i64 632 + %26 = icmp ult i64 %20, 12 + tail call void @llvm.assume(i1 %26) + %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %20 + %28 = load ptr, ptr %27, align 8, !noalias !133, !nonnull !4, !noundef !4 + %29 = add i64 %17, -1 + invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h29e9b4d53caa48e3E.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %28, i64 noundef %29) + to label %32 unwind label %30 + +30: ; preds = %24, %12, %11, %1 + %31 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit" unwind label %38 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit" unwind label %39 -31: ; preds = %20, %24 +32: ; preds = %21, %24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !133 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !126 - %32 = getelementptr inbounds nuw i8, ptr %9, i64 360 - %33 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 - tail call void @llvm.assume(i1 %33) - %34 = getelementptr inbounds nuw { [3 x i64] }, ptr %32, i64 %.sroa.4.sroa.4.0.copyload.i - %35 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i + %33 = getelementptr inbounds nuw i8, ptr %9, i64 360 + %34 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 + tail call void @llvm.assume(i1 %34) + %35 = getelementptr inbounds nuw { [3 x i64] }, ptr %33, i64 %.sroa.4.sroa.4.0.copyload.i + %36 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !126 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %36 = insertvalue { ptr, ptr } poison, ptr %34, 0 - %37 = insertvalue { ptr, ptr } %36, ptr %35, 1 - ret { ptr, ptr } %37 + %37 = insertvalue { ptr, ptr } poison, ptr %35, 0 + %38 = insertvalue { ptr, ptr } %37, ptr %36, 1 + ret { ptr, ptr } %38 -38: ; preds = %29 - %39 = landingpad { ptr, i32 } +39: ; preds = %30 + %40 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #21 unreachable -"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit": ; preds = %29 - resume { ptr, i32 } %30 +"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit": ; preds = %30 + resume { ptr, i32 } %31 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1236,38 +1238,40 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %15 = load i64, ptr %14, align 8, !noalias !143, !noundef !4 %16 = getelementptr inbounds nuw i8, ptr %3, i64 24 %17 = load i64, ptr %16, align 8, !noalias !143, !noundef !4 - br i1 %trunc.i, label %22, label %18 + %18 = add i64 %17, 1 + br i1 %trunc.i, label %22, label %19 -18: ; preds = %10 - %19 = add i64 %17, 1 +19: ; preds = %10 store ptr %13, ptr %5, align 8, !alias.scope !140, !noalias !145 %20 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %15, ptr %20, align 8, !alias.scope !140, !noalias !145 %21 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %19, ptr %21, align 8, !alias.scope !140, !noalias !145 + store i64 %18, ptr %21, align 8, !alias.scope !140, !noalias !145 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit" 22: ; preds = %10 - %23 = getelementptr i8, ptr %13, i64 640 - %24 = getelementptr ptr, ptr %23, i64 %17 - %25 = load ptr, ptr %24, align 8, !noalias !143, !nonnull !4, !noundef !4 - %26 = add i64 %15, -1 - call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h29e9b4d53caa48e3E.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %25, i64 noundef %26), !noalias !145 + %23 = getelementptr inbounds nuw i8, ptr %13, i64 632 + %24 = icmp ult i64 %18, 12 + tail call void @llvm.assume(i1 %24) + %25 = getelementptr inbounds nuw ptr, ptr %23, i64 %18 + %26 = load ptr, ptr %25, align 8, !noalias !143, !nonnull !4, !noundef !4 + %27 = add i64 %15, -1 + call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h29e9b4d53caa48e3E.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %26, i64 noundef %27), !noalias !145 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit" -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit": ; preds = %18, %22 +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit": ; preds = %19, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !143 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %27 = getelementptr inbounds nuw i8, ptr %7, i64 360 - %28 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 - tail call void @llvm.assume(i1 %28) - %29 = getelementptr inbounds nuw { [3 x i64] }, ptr %27, i64 %.sroa.4.sroa.4.0.copyload - %30 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload + %28 = getelementptr inbounds nuw i8, ptr %7, i64 360 + %29 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 + tail call void @llvm.assume(i1 %29) + %30 = getelementptr inbounds nuw { [3 x i64] }, ptr %28, i64 %.sroa.4.sroa.4.0.copyload + %31 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %31 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %29, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 store ptr %30, ptr %32, align 8 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr %31, ptr %33, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/spike/optimized/socketif.ll b/bench/spike/optimized/socketif.ll index 527866d178b..0bbb19e7cde 100644 --- a/bench/spike/optimized/socketif.ll +++ b/bench/spike/optimized/socketif.ll @@ -21987,26 +21987,28 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i - %.not.i.i = icmp ugt i64 %94, 15 - br i1 %.not.i.i, label %98, label %115 + %97 = icmp ult i64 %91, 16 + call void @llvm.assume(i1 %97) + %.not.i.i = icmp eq i64 %91, 15 + br i1 %.not.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, label %115 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i - %97 = load i64, ptr %24, align 8 - %.not.i.i135 = icmp ugt i64 %94, %97 + %98 = load i64, ptr %24, align 8 + %.not.i.i135 = icmp ugt i64 %94, %98 br i1 %.not.i.i135, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %115 -98: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %99 = load i64, ptr %24, align 8 - br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + br label %101 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread, %98 - %100 = phi i64 [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread ], [ %99, %98 ] - %101 = phi i64 [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread ], [ 15, %98 ] - %102 = icmp slt i64 %91, -1 - br i1 %102, label %.invoke, label %103 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread + %100 = icmp slt i64 %91, -1 + br i1 %100, label %.invoke, label %101 -103: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - %104 = shl nuw i64 %101, 1 +101: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + %102 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %98, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %103 = phi i64 [ %99, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %98, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %104 = shl nuw i64 %102, 1 %105 = icmp ult i64 %94, %104 %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %104, i64 9223372036854775807) %.0.i114 = select i1 %105, i64 %spec.store.select.i.i, i64 %94 @@ -22014,14 +22016,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred %107 = icmp slt i64 %106, 0 br i1 %107, label %108, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i, !prof !14 -108: ; preds = %103 +108: ; preds = %101 invoke void @_ZSt17__throw_bad_allocv() #34 to label %.noexc118 unwind label %.loopexit.split-lp140 .noexc118: ; preds = %108 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %103 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %101 %109 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %106) #35 to label %.noexc119 unwind label %.loopexit139 @@ -22049,7 +22051,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br label %.noexc69 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i115: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - %114 = add i64 %100, 1 + %114 = add i64 %103, 1 call void @_ZdlPvm(ptr noundef %95, i64 noundef %114) #37 br label %.noexc69 @@ -22202,26 +22204,28 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %161, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i75 - %.not.i.i77 = icmp ugt i64 %159, 15 - br i1 %.not.i.i77, label %163, label %180 + %162 = icmp ult i64 %156, 16 + call void @llvm.assume(i1 %162) + %.not.i.i77 = icmp eq i64 %156, 15 + br i1 %.not.i.i77, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread, label %180 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i75 - %162 = load i64, ptr %27, align 8 - %.not.i.i77137 = icmp ugt i64 %159, %162 + %163 = load i64, ptr %27, align 8 + %.not.i.i77137 = icmp ugt i64 %159, %163 br i1 %.not.i.i77137, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120, label %180 -163: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76 %164 = load i64, ptr %27, align 8 - br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 + br label %166 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread, %163 - %165 = phi i64 [ %162, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread ], [ %164, %163 ] - %166 = phi i64 [ %162, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread ], [ 15, %163 ] - %167 = icmp slt i64 %156, -1 - br i1 %167, label %.invoke242, label %168 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread + %165 = icmp slt i64 %156, -1 + br i1 %165, label %.invoke242, label %166 -168: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 - %169 = shl nuw i64 %166, 1 +166: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 + %167 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread ], [ %163, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 ] + %168 = phi i64 [ %164, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread ], [ %163, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 ] + %169 = shl nuw i64 %167, 1 %170 = icmp ult i64 %159, %169 %spec.store.select.i.i129 = call i64 @llvm.umin.i64(i64 %169, i64 9223372036854775807) %.0.i121 = select i1 %170, i64 %spec.store.select.i.i129, i64 %159 @@ -22229,14 +22233,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120: ; p %172 = icmp slt i64 %171, 0 br i1 %172, label %173, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i122, !prof !14 -173: ; preds = %168 +173: ; preds = %166 invoke void @_ZSt17__throw_bad_allocv() #34 to label %.noexc131 unwind label %.loopexit.split-lp .noexc131: ; preds = %173 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i122: ; preds = %168 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i122: ; preds = %166 %174 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %171) #35 to label %.noexc132 unwind label %.loopexit @@ -22264,7 +22268,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br label %.noexc79 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i127: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i126 - %179 = add i64 %165, 1 + %179 = add i64 %168, 1 call void @_ZdlPvm(ptr noundef %160, i64 noundef %179) #37 br label %.noexc79 diff --git a/bench/syn/optimized/4dl8yvgrwkkcv6u.ll b/bench/syn/optimized/4dl8yvgrwkkcv6u.ll index b9d4be05787..c16f5106e2e 100644 --- a/bench/syn/optimized/4dl8yvgrwkkcv6u.ll +++ b/bench/syn/optimized/4dl8yvgrwkkcv6u.ll @@ -1452,35 +1452,37 @@ define hidden noundef nonnull ptr @"_ZN5alloc2rc11Rc$LT$T$GT$19allocate_for_layo %6 = extractvalue { i64, i64 } %5, 0 %7 = extractvalue { i64, i64 } %5, 1 %8 = icmp eq i64 %7, 0 - br i1 %8, label %9, label %13 + br i1 %8, label %9, label %14 9: ; preds = %3 %10 = add i64 %6, -1 %11 = icmp sgt i64 %10, -1 tail call void @llvm.assume(i1 %11) %12 = inttoptr i64 %6 to ptr + %13 = icmp ne i64 %6, 0 + tail call void @llvm.assume(i1 %13) br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" -13: ; preds = %3 - %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %15 = add i64 %6, -1 - %16 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %16) - %17 = tail call noundef ptr @__rust_alloc(i64 noundef %7, i64 noundef %6) #32 +14: ; preds = %3 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %6, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %7, i64 noundef %6) #32 br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" -"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i": ; preds = %13, %9 - %.sroa.05.0.i.i.i.i = phi ptr [ %12, %9 ], [ %17, %13 ] - %18 = icmp eq ptr %.sroa.05.0.i.i.i.i, null - br i1 %18, label %21, label %19 +"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i": ; preds = %14, %9 + %.sroa.05.0.i.i.i.i = phi ptr [ %12, %9 ], [ %18, %14 ] + %19 = icmp eq ptr %.sroa.05.0.i.i.i.i, null + br i1 %19, label %22, label %20 -19: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" +20: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" store i64 1, ptr %.sroa.05.0.i.i.i.i, align 8 - %20 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i.i, i64 8 - store i64 1, ptr %20, align 8 + %21 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i.i, i64 8 + store i64 1, ptr %21, align 8 ret ptr %.sroa.05.0.i.i.i.i -21: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" +22: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" %.fca.1.extract = extractvalue { i64, i64 } %4, 1 %.fca.0.extract = extractvalue { i64, i64 } %4, 0 tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %.fca.0.extract, i64 noundef %.fca.1.extract) #31 @@ -1493,39 +1495,41 @@ define hidden { i64, ptr } @"_ZN5alloc2rc11Rc$LT$T$GT$23try_allocate_for_layout1 %5 = extractvalue { i64, i64 } %4, 0 %6 = extractvalue { i64, i64 } %4, 1 %7 = icmp eq i64 %6, 0 - br i1 %7, label %8, label %12 + br i1 %7, label %8, label %13 8: ; preds = %3 %9 = add i64 %5, -1 %10 = icmp sgt i64 %9, -1 tail call void @llvm.assume(i1 %10) %11 = inttoptr i64 %5 to ptr + %12 = icmp ne i64 %5, 0 + tail call void @llvm.assume(i1 %12) br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" -12: ; preds = %3 - %13 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %14 = add i64 %5, -1 - %15 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %15) - %16 = tail call noundef ptr @__rust_alloc(i64 noundef %6, i64 noundef %5) #32 +13: ; preds = %3 + %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %15 = add i64 %5, -1 + %16 = icmp sgt i64 %15, -1 + tail call void @llvm.assume(i1 %16) + %17 = tail call noundef ptr @__rust_alloc(i64 noundef %6, i64 noundef %5) #32 br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" -"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit": ; preds = %8, %12 - %.sroa.05.0.i.i.i = phi ptr [ %11, %8 ], [ %16, %12 ] - %17 = icmp eq ptr %.sroa.05.0.i.i.i, null - br i1 %17, label %20, label %18 +"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit": ; preds = %8, %13 + %.sroa.05.0.i.i.i = phi ptr [ %11, %8 ], [ %17, %13 ] + %18 = icmp eq ptr %.sroa.05.0.i.i.i, null + br i1 %18, label %21, label %19 -18: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" +19: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" store i64 1, ptr %.sroa.05.0.i.i.i, align 8 - %19 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i, i64 8 - store i64 1, ptr %19, align 8 - br label %20 + %20 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i, i64 8 + store i64 1, ptr %20, align 8 + br label %21 -20: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit", %18 - %.sroa.0.0 = phi i64 [ 0, %18 ], [ 1, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" ] - %21 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %22 = insertvalue { i64, ptr } %21, ptr %.sroa.05.0.i.i.i, 1 - ret { i64, ptr } %22 +21: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit", %19 + %.sroa.0.0 = phi i64 [ 0, %19 ], [ 1, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" ] + %22 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %23 = insertvalue { i64, ptr } %22, ptr %.sroa.05.0.i.i.i, 1 + ret { i64, ptr } %23 } ; Function Attrs: nonlazybind uwtable @@ -1708,38 +1712,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.11864023271123110445 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.11864023271123110445(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #11 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 +11: ; preds = %4 + br i1 %3, label %20, label %15 -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 - br label %11 +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 + br label %12 -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #32 - br label %11 +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #32 + br label %12 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/syn/optimized/4llvvcm7ykus6q9g.ll b/bench/syn/optimized/4llvvcm7ykus6q9g.ll index feb108bd6a8..b07ae85bd6a 100644 --- a/bench/syn/optimized/4llvvcm7ykus6q9g.ll +++ b/bench/syn/optimized/4llvvcm7ykus6q9g.ll @@ -1219,6 +1219,8 @@ define hidden void @"_ZN4core3ptr122drop_in_place$LT$core..iter..adapters..enume br i1 %16, label %"_ZN4core3ptr72drop_in_place$LT$syn..punctuated..Iter$LT$syn..path..PathSegment$GT$$GT$17hcf7c12214a847e16E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !490 br label %"_ZN4core3ptr72drop_in_place$LT$syn..punctuated..Iter$LT$syn..path..PathSegment$GT$$GT$17hcf7c12214a847e16E.exit" @@ -1707,6 +1709,8 @@ define hidden void @"_ZN4core3ptr186drop_in_place$LT$alloc..boxed..Box$LT$syn..d br i1 %16, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbdf7993e92eca5eE.llvm.8351105841907204142.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !733 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbdf7993e92eca5eE.llvm.8351105841907204142.exit" @@ -1854,6 +1858,8 @@ define hidden void @"_ZN4core3ptr197drop_in_place$LT$alloc..boxed..Box$LT$syn..d br i1 %16, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdedaebfed0e43106E.llvm.8351105841907204142.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !789 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdedaebfed0e43106E.llvm.8351105841907204142.exit" @@ -1920,6 +1926,8 @@ define hidden void @"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$syn..d br i1 %16, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c99367490058e10E.llvm.8351105841907204142.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !808 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8c99367490058e10E.llvm.8351105841907204142.exit" @@ -12100,6 +12108,8 @@ define hidden void @"_ZN4core3ptr72drop_in_place$LT$syn..punctuated..Iter$LT$syn br i1 %16, label %"_ZN4core3ptr186drop_in_place$LT$alloc..boxed..Box$LT$syn..drops..NoDrop$LT$dyn$u20$syn..punctuated..IterTrait$LT$syn..path..PathSegment$GT$$u2b$Item$u20$$u3d$$u20$$RF$syn..path..PathSegment$GT$$GT$$GT$17h39a375801bb87514E.llvm.8351105841907204142.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !5617 br label %"_ZN4core3ptr186drop_in_place$LT$alloc..boxed..Box$LT$syn..drops..NoDrop$LT$dyn$u20$syn..punctuated..IterTrait$LT$syn..path..PathSegment$GT$$u2b$Item$u20$$u3d$$u20$$RF$syn..path..PathSegment$GT$$GT$$GT$17h39a375801bb87514E.llvm.8351105841907204142.exit" @@ -12847,6 +12857,8 @@ define hidden void @"_ZN4core3ptr75drop_in_place$LT$syn..punctuated..IterMut$LT$ br i1 %16, label %"_ZN4core3ptr197drop_in_place$LT$alloc..boxed..Box$LT$syn..drops..NoDrop$LT$dyn$u20$syn..punctuated..IterMutTrait$LT$syn..path..PathSegment$GT$$u2b$Item$u20$$u3d$$u20$$RF$mut$u20$syn..path..PathSegment$GT$$GT$$GT$17h8db571f20bf77301E.llvm.8351105841907204142.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !5894 br label %"_ZN4core3ptr197drop_in_place$LT$alloc..boxed..Box$LT$syn..drops..NoDrop$LT$dyn$u20$syn..punctuated..IterMutTrait$LT$syn..path..PathSegment$GT$$u2b$Item$u20$$u3d$$u20$$RF$mut$u20$syn..path..PathSegment$GT$$GT$$GT$17h8db571f20bf77301E.llvm.8351105841907204142.exit" @@ -13160,6 +13172,8 @@ define hidden void @"_ZN4core3ptr79drop_in_place$LT$syn..punctuated..Iter$LT$syn br i1 %16, label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$syn..drops..NoDrop$LT$dyn$u20$syn..punctuated..IterTrait$LT$syn..generics..TypeParamBound$GT$$u2b$Item$u20$$u3d$$u20$$RF$syn..generics..TypeParamBound$GT$$GT$$GT$17h87c22d664147fef8E.llvm.8351105841907204142.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit.i.i": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17, !noalias !5955 br label %"_ZN4core3ptr200drop_in_place$LT$alloc..boxed..Box$LT$syn..drops..NoDrop$LT$dyn$u20$syn..punctuated..IterTrait$LT$syn..generics..TypeParamBound$GT$$u2b$Item$u20$$u3d$$u20$$RF$syn..generics..TypeParamBound$GT$$GT$$GT$17h87c22d664147fef8E.llvm.8351105841907204142.exit" @@ -17926,13 +17940,15 @@ define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..o %15 = icmp ult i64 %8, -9223372036854775807 tail call void @llvm.assume(i1 %15) %16 = icmp eq i64 %14, 0 - br i1 %16, label %17, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" + br i1 %16, label %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17 - br label %17 + br label %18 -17: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" +18: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" ret void } @@ -17975,13 +17991,15 @@ define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..o %15 = icmp ult i64 %8, -9223372036854775807 tail call void @llvm.assume(i1 %15) %16 = icmp eq i64 %14, 0 - br i1 %16, label %17, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" + br i1 %16, label %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17 - br label %17 + br label %18 -17: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" +18: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" ret void } @@ -18003,13 +18021,15 @@ define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..o %15 = icmp ult i64 %8, -9223372036854775807 tail call void @llvm.assume(i1 %15) %16 = icmp eq i64 %14, 0 - br i1 %16, label %17, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" + br i1 %16, label %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit": ; preds = %1 + %17 = icmp sgt i64 %9, -1 + tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17 - br label %17 + br label %18 -17: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" +18: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" ret void } diff --git a/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll b/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll index d7e220c87ef..2b2089a1c3f 100644 --- a/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll +++ b/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll @@ -169,14 +169,14 @@ define void @_ZN10tikv_alloc5trace2Id4name17h811b6edf24c96a6dE(ptr dead_on_unwin 14: ; preds = %17, %10 %15 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #14 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #15 to label %20 unwind label %18, !noalias !18 16: ; preds = %10 br i1 %13, label %17, label %"_ZN49_$LT$T$u20$as$u20$alloc..string..SpecToString$GT$14spec_to_string17hccd905806fd6cbf4E.exit", !prof !19 17: ; preds = %16 - invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #15 + invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #16 to label %.noexc.i unwind label %14, !noalias !18 .noexc.i: ; preds = %17 @@ -185,7 +185,7 @@ define void @_ZN10tikv_alloc5trace2Id4name17h811b6edf24c96a6dE(ptr dead_on_unwin 18: ; preds = %14 %19 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #16, !noalias !18 + call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #17, !noalias !18 unreachable 20: ; preds = %14 @@ -210,7 +210,7 @@ define void @_ZN10tikv_alloc5trace2Id4name17h811b6edf24c96a6dE(ptr dead_on_unwin 28: ; preds = %21 %29 = load i64, ptr %27, align 8, !noalias !21 - tail call void @_ZN5alloc7raw_vec12handle_error17h988b9e2e52726708E(i64 noundef %26, i64 %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.36) #15, !noalias !29 + tail call void @_ZN5alloc7raw_vec12handle_error17h988b9e2e52726708E(i64 noundef %26, i64 %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.36) #16, !noalias !29 unreachable "_ZN87_$LT$T$u20$as$u20$alloc..slice..$LT$impl$u20$$u5b$T$u5d$$GT$..to_vec_in..ConvertVec$GT$6to_vec17h06f30b3e3b668bb1E.exit": ; preds = %21 @@ -267,14 +267,14 @@ define void @_ZN10tikv_alloc5trace2Id13readable_name17hf03bbfd8bde0a0b5E(ptr dea 17: ; preds = %20, %12 %18 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #14 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #15 to label %23 unwind label %21, !noalias !35 19: ; preds = %12 br i1 %16, label %20, label %"_ZN49_$LT$T$u20$as$u20$alloc..string..SpecToString$GT$14spec_to_string17hccd905806fd6cbf4E.exit", !prof !19 20: ; preds = %19 - invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #15 + invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #16 to label %.noexc.i unwind label %17, !noalias !35 .noexc.i: ; preds = %20 @@ -283,7 +283,7 @@ define void @_ZN10tikv_alloc5trace2Id13readable_name17hf03bbfd8bde0a0b5E(ptr dea 21: ; preds = %17 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #16, !noalias !35 + call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #17, !noalias !35 unreachable 23: ; preds = %17 @@ -420,8 +420,8 @@ define { i64, i64 } @"_ZN72_$LT$tikv_alloc..trace..TraceEvent$u20$as$u20$core..d ret { i64, i64 } zeroinitializer } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable -define { i64, i64 } @"_ZN71_$LT$tikv_alloc..trace..TraceEvent$u20$as$u20$core..ops..arith..Add$GT$3add17h23c6974c7b988cbbE"(i64 noundef range(i64 0, 3) %0, i64 noundef %1, i64 noundef range(i64 0, 3) %2, i64 noundef %3) unnamed_addr #2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable +define { i64, i64 } @"_ZN71_$LT$tikv_alloc..trace..TraceEvent$u20$as$u20$core..ops..arith..Add$GT$3add17h23c6974c7b988cbbE"(i64 noundef range(i64 0, 3) %0, i64 noundef %1, i64 noundef range(i64 0, 3) %2, i64 noundef %3) unnamed_addr #3 { switch i64 %0, label %default.unreachable24 [ i64 0, label %5 i64 1, label %6 @@ -434,64 +434,69 @@ default.unreachable24: ; preds = %7, %6, %5, %4 5: ; preds = %4 switch i64 %2, label %default.unreachable24 [ i64 0, label %8 - i64 1, label %13 + i64 1, label %15 i64 2, label %10 ] 6: ; preds = %4 switch i64 %2, label %default.unreachable24 [ - i64 0, label %13 - i64 1, label %15 + i64 0, label %15 + i64 1, label %17 i64 2, label %10 ] 7: ; preds = %4 switch i64 %2, label %default.unreachable24 [ - i64 0, label %21 - i64 1, label %23 + i64 0, label %23 + i64 1, label %25 i64 2, label %10 ] 8: ; preds = %5 %9 = add i64 %3, %1 - br label %10 + br label %12 + +10: ; preds = %7, %6, %5 + %11 = icmp eq i64 %2, 2 + tail call void @llvm.assume(i1 %11) + br label %12 -10: ; preds = %5, %6, %7, %17, %19, %23, %21, %15, %8 - %.sroa.017.0 = phi i64 [ 0, %8 ], [ 0, %19 ], [ 1, %17 ], [ 2, %23 ], [ 1, %15 ], [ 2, %21 ], [ %2, %7 ], [ %2, %6 ], [ %2, %5 ] - %.sroa.8.0 = phi i64 [ %9, %8 ], [ %20, %19 ], [ %18, %17 ], [ %24, %23 ], [ %16, %15 ], [ %22, %21 ], [ %3, %7 ], [ %3, %6 ], [ %3, %5 ] - %11 = insertvalue { i64, i64 } poison, i64 %.sroa.017.0, 0 - %12 = insertvalue { i64, i64 } %11, i64 %.sroa.8.0, 1 - ret { i64, i64 } %12 +12: ; preds = %19, %21, %25, %23, %17, %10, %8 + %.sroa.017.0 = phi i64 [ 0, %8 ], [ 0, %21 ], [ 1, %19 ], [ 2, %10 ], [ 1, %17 ], [ 2, %23 ], [ 2, %25 ] + %.sroa.8.0 = phi i64 [ %9, %8 ], [ %22, %21 ], [ %20, %19 ], [ %3, %10 ], [ %18, %17 ], [ %24, %23 ], [ %26, %25 ] + %13 = insertvalue { i64, i64 } poison, i64 %.sroa.017.0, 0 + %14 = insertvalue { i64, i64 } %13, i64 %.sroa.8.0, 1 + ret { i64, i64 } %14 -13: ; preds = %6, %5 +15: ; preds = %6, %5 %.sroa.018.0 = phi i64 [ %3, %5 ], [ %1, %6 ] %.sroa.021.0 = phi i64 [ %1, %5 ], [ %3, %6 ] - %14 = icmp ugt i64 %.sroa.021.0, %.sroa.018.0 - br i1 %14, label %19, label %17 + %16 = icmp ugt i64 %.sroa.021.0, %.sroa.018.0 + br i1 %16, label %21, label %19 -15: ; preds = %6 - %16 = add i64 %3, %1 - br label %10 +17: ; preds = %6 + %18 = add i64 %3, %1 + br label %12 -17: ; preds = %13 - %18 = sub nuw i64 %.sroa.018.0, %.sroa.021.0 - br label %10 - -19: ; preds = %13 - %20 = sub nuw i64 %.sroa.021.0, %.sroa.018.0 - br label %10 +19: ; preds = %15 + %20 = sub nuw i64 %.sroa.018.0, %.sroa.021.0 + br label %12 -21: ; preds = %7 - %22 = add i64 %3, %1 - br label %10 +21: ; preds = %15 + %22 = sub nuw i64 %.sroa.021.0, %.sroa.018.0 + br label %12 23: ; preds = %7 - %24 = sub i64 %1, %3 - br label %10 + %24 = add i64 %3, %1 + br label %12 + +25: ; preds = %7 + %26 = sub i64 %1, %3 + br label %12 } ; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define void @_ZN10tikv_alloc5trace11MemoryTrace5trace17h627b6f333ed64ec8E(ptr noundef nonnull align 8 captures(none) %0, i64 noundef range(i64 0, 3) %1, i64 noundef %2) unnamed_addr #3 { +define void @_ZN10tikv_alloc5trace11MemoryTrace5trace17h627b6f333ed64ec8E(ptr noundef nonnull align 8 captures(none) %0, i64 noundef range(i64 0, 3) %1, i64 noundef %2) unnamed_addr #4 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 48 switch i64 %1, label %default.unreachable6 [ i64 0, label %5 @@ -608,7 +613,7 @@ define noundef nonnull ptr @_ZN10tikv_alloc5trace11MemoryTrace9sub_trace17h27ae4 br i1 %38, label %41, label %39 select.unfold: ; preds = %._crit_edge.i.i, %2 - tail call void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.41) #15 + tail call void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.41) #16 unreachable 39: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$9get_inner17hb4e6d01e5a603591E.exit" @@ -693,7 +698,7 @@ define void @_ZN10tikv_alloc5trace11MemoryTrace16get_children_ids17h07bcd8b61099 9: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..Id$GT$$GT$17hf67c11083eb3398aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #14 + invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..Id$GT$$GT$17hf67c11083eb3398aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #15 to label %27 unwind label %25 10: ; preds = %2 @@ -741,7 +746,7 @@ define void @_ZN10tikv_alloc5trace11MemoryTrace16get_children_ids17h07bcd8b61099 25: ; preds = %9 %26 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #16 + call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #17 unreachable 27: ; preds = %9 @@ -749,10 +754,10 @@ define void @_ZN10tikv_alloc5trace11MemoryTrace16get_children_ids17h07bcd8b61099 } ; Function Attrs: nounwind nonlazybind uwtable -declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #4 +declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #5 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #5 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #6 ; Function Attrs: nonlazybind uwtable declare hidden noundef i64 @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1580d2927ba06e04E"(ptr noalias noundef align 8 captures(none) dereferenceable(40), i64 noundef, ptr noalias noundef nonnull align 1) unnamed_addr #1 @@ -767,16 +772,16 @@ declare hidden noundef zeroext i1 @_ZN4core3fmt5Write9write_fmt17hf815782a42a166 declare noundef zeroext i1 @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u64$GT$3fmt17he7c8138d95e921b6E"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 ; Function Attrs: cold minsize noreturn nounwind nonlazybind optsize uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() unnamed_addr #6 +declare void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() unnamed_addr #7 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt5write17hd4082f3c5e2a1cc0E(ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(48), ptr noalias noundef align 8 captures(none) dereferenceable(48)) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #7 +declare void @llvm.assume(i1 noundef) #8 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #8 +declare void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17h624a910a27ee01aeE(ptr noalias noundef align 8 dereferenceable(24), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #1 @@ -794,7 +799,7 @@ declare void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hdf980ebc9bec100 declare hidden void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$15try_allocate_in17h81fac9395268972aE"(ptr dead_on_unwind noalias noundef writable sret([24 x i8]) align 8 captures(none) dereferenceable(24), i64 noundef, i1 noundef zeroext, i64 noundef range(i64 1, -9223372036854775807), i64 noundef) unnamed_addr #1 ; Function Attrs: cold minsize noreturn nonlazybind optsize uwtable -declare void @_ZN5alloc7raw_vec12handle_error17h988b9e2e52726708E(i64 noundef range(i64 0, -9223372036854775807), i64, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 +declare void @_ZN5alloc7raw_vec12handle_error17h988b9e2e52726708E(i64 noundef range(i64 0, -9223372036854775807), i64, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 ; Function Attrs: nonlazybind uwtable declare void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h9136a8e8e1f0fdcbE"(ptr noalias noundef align 8 dereferenceable(8)) unnamed_addr #1 @@ -812,7 +817,7 @@ declare hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent declare hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h439cdb546578af0bE(ptr noalias noundef nonnull readonly align 1, ptr noalias noundef readonly align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.cttz.i16(i16, i1 immarg) #10 +declare i16 @llvm.cttz.i16(i16, i1 immarg) #11 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h95043d71ffe0904bE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 @@ -824,10 +829,10 @@ declare hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Displa declare hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$4iter17h3f90595cdd777a22E"(ptr dead_on_unwind noalias noundef writable sret([40 x i8]) align 8 captures(none) dereferenceable(40), ptr noalias noundef readonly align 8 dereferenceable(32)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #8 +declare void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 ; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) -declare void @llvm.trap() #11 +declare void @llvm.trap() #12 ; Function Attrs: nonlazybind uwtable declare hidden noundef ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h31872302a6a794ebE"(ptr noalias noundef align 8 dereferenceable(32), ptr noalias noundef align 8 captures(none) dereferenceable(16), ptr noundef nonnull) unnamed_addr #1 @@ -839,31 +844,32 @@ declare hidden { ptr, ptr } @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as declare hidden void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..Id$GT$$GT$17hf67c11083eb3398aE"(ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(ptr captures(none)) #12 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #13 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(ptr captures(none)) #12 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #13 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #13 +declare void @llvm.experimental.noalias.scope.decl(metadata) #14 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #3 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #4 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { cold minsize noreturn nounwind nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #8 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { cold minsize noreturn nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #10 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #11 = { cold noreturn nounwind memory(inaccessiblemem: write) } -attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #14 = { cold } -attributes #15 = { noreturn } -attributes #16 = { cold noreturn nounwind } +attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #4 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { cold minsize noreturn nounwind nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #10 = { cold minsize noreturn nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #12 = { cold noreturn nounwind memory(inaccessiblemem: write) } +attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #15 = { cold } +attributes #16 = { noreturn } +attributes #17 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll b/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll index d5087769bed..147bdef0615 100644 --- a/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll +++ b/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll @@ -1649,38 +1649,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.15934541666227088301 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.15934541666227088301(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #12 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 +11: ; preds = %4 + br i1 %3, label %20, label %15 -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #39 - br label %11 +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #39 + br label %12 -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #39 - br label %11 +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #39 + br label %12 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable diff --git a/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll b/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll index 0bf015ddbfe..30decc17267 100644 --- a/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll +++ b/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll @@ -1905,42 +1905,44 @@ define internal fastcc void @"_ZN4core3ptr87drop_in_place$LT$alloc..boxed..Box$L tail call void @llvm.assume(i1 %1) %2 = load ptr, ptr %.8.val, align 8, !invariant.load !4, !nonnull !4 invoke void %2(ptr noundef nonnull align 1 %.0.val) - to label %12 unwind label %3 + to label %13 unwind label %3 3: ; preds = %0 %4 = landingpad { ptr, i32 } cleanup - %5 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %6 = load i64, ptr %5, align 8, !range !20, !invariant.load !4 - %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %8 = load i64, ptr %7, align 8, !range !21, !invariant.load !4 - %9 = icmp ult i64 %8, -9223372036854775807 - tail call void @llvm.assume(i1 %9) - %10 = icmp eq i64 %6, 0 - br i1 %10, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit", label %11 - -11: ; preds = %3 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %6, i64 noundef range(i64 1, -9223372036854775807) %8) #40 + %5 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %5) + %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %7 = load i64, ptr %6, align 8, !range !20, !invariant.load !4 + %8 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %9 = load i64, ptr %8, align 8, !range !21, !invariant.load !4 + %10 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %10) + %11 = icmp eq i64 %7, 0 + br i1 %11, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit", label %12 + +12: ; preds = %3 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %7, i64 noundef range(i64 1, -9223372036854775807) %9) #40 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit" -12: ; preds = %0 - %13 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %14 = load i64, ptr %13, align 8, !range !20, !invariant.load !4 - %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %16 = load i64, ptr %15, align 8, !range !21, !invariant.load !4 - %17 = icmp ult i64 %16, -9223372036854775807 - tail call void @llvm.assume(i1 %17) - %18 = icmp eq i64 %14, 0 - br i1 %18, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4", label %19 - -19: ; preds = %12 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %14, i64 noundef range(i64 1, -9223372036854775807) %16) #40 +13: ; preds = %0 + %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %15 = load i64, ptr %14, align 8, !range !20, !invariant.load !4 + %16 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %17 = load i64, ptr %16, align 8, !range !21, !invariant.load !4 + %18 = icmp ult i64 %17, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp eq i64 %15, 0 + br i1 %19, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4", label %20 + +20: ; preds = %13 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %15, i64 noundef range(i64 1, -9223372036854775807) %17) #40 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4": ; preds = %12, %19 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4": ; preds = %13, %20 ret void -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit": ; preds = %11, %3 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit": ; preds = %12, %3 resume { ptr, i32 } %4 } @@ -2733,38 +2735,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.12014582817787848890 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.12014582817787848890(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #13 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %10 + br i1 %5, label %6, label %11 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - br label %11 + %10 = icmp ne i64 %1, 0 + tail call void @llvm.assume(i1 %10) + br label %12 -10: ; preds = %4 - br i1 %3, label %19, label %14 +11: ; preds = %4 + br i1 %3, label %20, label %15 -11: ; preds = %14, %19, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] - %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 - ret { ptr, i64 } %13 +12: ; preds = %15, %20, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] + %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 + ret { ptr, i64 } %14 -14: ; preds = %10 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %1, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #40 - br label %11 +15: ; preds = %11 + %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %17 = add i64 %1, -1 + %18 = icmp sgt i64 %17, -1 + tail call void @llvm.assume(i1 %18) + %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #40 + br label %12 -19: ; preds = %10 - %20 = add i64 %1, -1 - %21 = icmp sgt i64 %20, -1 - tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #40 - br label %11 +20: ; preds = %11 + %21 = add i64 %1, -1 + %22 = icmp sgt i64 %21, -1 + tail call void @llvm.assume(i1 %22) + %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #40 + br label %12 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll b/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll index 55ee5ed3135..5ba3a565c6e 100644 --- a/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll +++ b/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll @@ -5615,7 +5615,7 @@ define internal fastcc void @"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$ %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 %6 = load i8, ptr %5, align 8, !range !1072, !noundef !9 %7 = trunc nuw i8 %6 to i1 - br i1 %7, label %22, label %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge + br i1 %7, label %23, label %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge ._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge: ; preds = %1 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 @@ -5623,89 +5623,91 @@ define internal fastcc void @"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$ br label %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit _ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i", %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" - %8 = phi i64 [ %.pre, %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge ], [ %37, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ], [ %54, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ] - %9 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 - %10 = load i64, ptr %.0.val, align 8, !alias.scope !1073, !noalias !1084, !noundef !9 - %11 = icmp eq i64 %10, %8 - br i1 %11, label %12, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit" - -12: ; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit - %13 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %8, i64 noundef 1), !noalias !1084 - %14 = extractvalue { i64, i64 } %13, 0 - %15 = extractvalue { i64, i64 } %13, 1 - tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %14, i64 %15), !noalias !1084 - %.pre.i.i.i.i.i = load i64, ptr %9, align 8, !alias.scope !1090, !noalias !1084 + %8 = phi i64 [ %.pre, %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge ], [ %38, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ], [ %55, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ] + %9 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %9) + %10 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 + %11 = load i64, ptr %.0.val, align 8, !alias.scope !1073, !noalias !1084, !noundef !9 + %12 = icmp eq i64 %11, %8 + br i1 %12, label %13, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit" + +13: ; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit + %14 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %8, i64 noundef 1), !noalias !1084 + %15 = extractvalue { i64, i64 } %14, 0 + %16 = extractvalue { i64, i64 } %14, 1 + tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %15, i64 %16), !noalias !1084 + %.pre.i.i.i.i.i = load i64, ptr %10, align 8, !alias.scope !1090, !noalias !1084 br label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit" -"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit": ; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, %12 - %16 = phi i64 [ %8, %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit ], [ %.pre.i.i.i.i.i, %12 ] - %17 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %18 = load ptr, ptr %17, align 8, !alias.scope !1090, !noalias !1084, !nonnull !9, !noundef !9 - %19 = getelementptr inbounds i8, ptr %18, i64 %16 - store i8 93, ptr %19, align 1, !noalias !1091 - %20 = load i64, ptr %9, align 8, !alias.scope !1090, !noalias !1084, !noundef !9 - %21 = add i64 %20, 1 - store i64 %21, ptr %9, align 8, !alias.scope !1090, !noalias !1084 +"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit": ; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, %13 + %17 = phi i64 [ %8, %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit ], [ %.pre.i.i.i.i.i, %13 ] + %18 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %19 = load ptr, ptr %18, align 8, !alias.scope !1090, !noalias !1084, !nonnull !9, !noundef !9 + %20 = getelementptr inbounds i8, ptr %19, i64 %17 + store i8 93, ptr %20, align 1, !noalias !1091 + %21 = load i64, ptr %10, align 8, !alias.scope !1090, !noalias !1084, !noundef !9 + %22 = add i64 %21, 1 + store i64 %22, ptr %10, align 8, !alias.scope !1090, !noalias !1084 ret void -22: ; preds = %1 - %23 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %23) - %24 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 - %25 = load i64, ptr %24, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 - %26 = load i64, ptr %.0.val, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 - %27 = icmp eq i64 %26, %25 - br i1 %27, label %28, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" - -28: ; preds = %22 - %29 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %25, i64 noundef 1), !noalias !1103 - %30 = extractvalue { i64, i64 } %29, 0 - %31 = extractvalue { i64, i64 } %29, 1 - tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %30, i64 %31), !noalias !1103 - %.pre.i.i.i.i.i5 = load i64, ptr %24, align 8, !alias.scope !1109, !noalias !1103 +23: ; preds = %1 + %24 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %24) + %25 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 + %26 = load i64, ptr %25, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 + %27 = load i64, ptr %.0.val, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 + %28 = icmp eq i64 %27, %26 + br i1 %28, label %29, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" + +29: ; preds = %23 + %30 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %26, i64 noundef 1), !noalias !1103 + %31 = extractvalue { i64, i64 } %30, 0 + %32 = extractvalue { i64, i64 } %30, 1 + tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %31, i64 %32), !noalias !1103 + %.pre.i.i.i.i.i5 = load i64, ptr %25, align 8, !alias.scope !1109, !noalias !1103 br label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" -"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6": ; preds = %22, %28 - %32 = phi i64 [ %25, %22 ], [ %.pre.i.i.i.i.i5, %28 ] - %33 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %34 = load ptr, ptr %33, align 8, !alias.scope !1109, !noalias !1103, !nonnull !9, !noundef !9 - %35 = getelementptr inbounds i8, ptr %34, i64 %32 - store i8 10, ptr %35, align 1, !noalias !1110 - %36 = load i64, ptr %24, align 8, !alias.scope !1109, !noalias !1103, !noundef !9 - %37 = add i64 %36, 1 - store i64 %37, ptr %24, align 8, !alias.scope !1109, !noalias !1103 - %38 = load ptr, ptr %0, align 8, !nonnull !9, !align !43, !noundef !9 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %40 = load i64, ptr %39, align 8, !noundef !9 +"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6": ; preds = %23, %29 + %33 = phi i64 [ %26, %23 ], [ %.pre.i.i.i.i.i5, %29 ] + %34 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %35 = load ptr, ptr %34, align 8, !alias.scope !1109, !noalias !1103, !nonnull !9, !noundef !9 + %36 = getelementptr inbounds i8, ptr %35, i64 %33 + store i8 10, ptr %36, align 1, !noalias !1110 + %37 = load i64, ptr %25, align 8, !alias.scope !1109, !noalias !1103, !noundef !9 + %38 = add i64 %37, 1 + store i64 %38, ptr %25, align 8, !alias.scope !1109, !noalias !1103 + %39 = load ptr, ptr %0, align 8, !nonnull !9, !align !43, !noundef !9 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %41 = load i64, ptr %40, align 8, !noundef !9 %.not.i = icmp eq i64 %4, 0 br i1 %.not.i, label %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6", %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" - %41 = phi i64 [ %54, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ %37, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] - %.sroa.01.05.i = phi i64 [ %42, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ 0, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] - %42 = add nuw i64 %.sroa.01.05.i, 1 - %43 = load i64, ptr %.0.val, align 8, !alias.scope !1111, !noalias !1122, !noundef !9 - %44 = sub i64 %43, %41 - %45 = icmp ugt i64 %40, %44 - br i1 %45, label %46, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" - -46: ; preds = %.lr.ph.i - %47 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %41, i64 noundef %40), !noalias !1122 - %48 = extractvalue { i64, i64 } %47, 0 - %49 = extractvalue { i64, i64 } %47, 1 - tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %48, i64 %49), !noalias !1122 - %.pre.i.i.i.i.i.i = load i64, ptr %24, align 8, !alias.scope !1131, !noalias !1122 + %42 = phi i64 [ %55, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ %38, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] + %.sroa.01.05.i = phi i64 [ %43, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ 0, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] + %43 = add nuw i64 %.sroa.01.05.i, 1 + %44 = load i64, ptr %.0.val, align 8, !alias.scope !1111, !noalias !1122, !noundef !9 + %45 = sub i64 %44, %42 + %46 = icmp ugt i64 %41, %45 + br i1 %46, label %47, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" + +47: ; preds = %.lr.ph.i + %48 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %42, i64 noundef %41), !noalias !1122 + %49 = extractvalue { i64, i64 } %48, 0 + %50 = extractvalue { i64, i64 } %48, 1 + tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %49, i64 %50), !noalias !1122 + %.pre.i.i.i.i.i.i = load i64, ptr %25, align 8, !alias.scope !1131, !noalias !1122 br label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" -"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i": ; preds = %46, %.lr.ph.i - %50 = phi i64 [ %41, %.lr.ph.i ], [ %.pre.i.i.i.i.i.i, %46 ] - %51 = load ptr, ptr %33, align 8, !alias.scope !1131, !noalias !1122, !nonnull !9, !noundef !9 - %52 = getelementptr inbounds i8, ptr %51, i64 %50 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %52, ptr nonnull readonly align 1 %38, i64 %40, i1 false), !noalias !1132 - %53 = load i64, ptr %24, align 8, !alias.scope !1131, !noalias !1122, !noundef !9 - %54 = add i64 %53, %40 - store i64 %54, ptr %24, align 8, !alias.scope !1131, !noalias !1122 - %exitcond.not.i = icmp eq i64 %42, %4 +"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i": ; preds = %47, %.lr.ph.i + %51 = phi i64 [ %42, %.lr.ph.i ], [ %.pre.i.i.i.i.i.i, %47 ] + %52 = load ptr, ptr %34, align 8, !alias.scope !1131, !noalias !1122, !nonnull !9, !noundef !9 + %53 = getelementptr inbounds i8, ptr %52, i64 %51 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %53, ptr nonnull readonly align 1 %39, i64 %41, i1 false), !noalias !1132 + %54 = load i64, ptr %25, align 8, !alias.scope !1131, !noalias !1122, !noundef !9 + %55 = add i64 %54, %41 + store i64 %55, ptr %25, align 8, !alias.scope !1131, !noalias !1122 + %exitcond.not.i = icmp eq i64 %43, %4 br i1 %exitcond.not.i, label %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, label %.lr.ph.i } diff --git a/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll b/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll index 6872eb7e80c..d35c32a5aa2 100644 --- a/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll +++ b/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll @@ -121,15 +121,17 @@ define hidden { ptr, i64 } @"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$ define hidden void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499"(i64 noundef %0) unnamed_addr #2 personality ptr @rust_eh_personality { %2 = and i64 %0, -8 %3 = inttoptr i64 %2 to ptr - %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %5 = load i64, ptr %4, align 8, !noundef !4 - %6 = icmp eq i64 %5, 0 - br i1 %6, label %"_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i" + %4 = icmp ne i64 %2, 0 + tail call void @llvm.assume(i1 %4) + %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %6 = load i64, ptr %5, align 8, !noundef !4 + %7 = icmp eq i64 %6, 0 + br i1 %7, label %"_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i": ; preds = %1 - %7 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 - %8 = shl nsw i64 %5, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %7, i64 noundef %8, i64 noundef 8) #33, !noalias !5 + %8 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 + %9 = shl nsw i64 %6, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %9, i64 noundef 8) #33, !noalias !5 br label %"_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit" "_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i", %1 @@ -142,36 +144,38 @@ define hidden void @_ZN15crossbeam_epoch5guard5Guard15defer_unchecked17h0bbd4127 %3 = alloca { ptr, { [3 x i64] }, {} }, align 8 %4 = load ptr, ptr %0, align 8, !noundef !4 %5 = icmp eq ptr %4, null - br i1 %5, label %6, label %14 + br i1 %5, label %6, label %15 6: ; preds = %2 %7 = and i64 %1, -8 %8 = inttoptr i64 %7 to ptr - %9 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %10 = load i64, ptr %9, align 8, !noundef !4 - %11 = icmp eq i64 %10, 0 - br i1 %11, label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i" + %9 = icmp ne i64 %7, 0 + tail call void @llvm.assume(i1 %9) + %10 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %11 = load i64, ptr %10, align 8, !noundef !4 + %12 = icmp eq i64 %11, 0 + br i1 %12, label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i": ; preds = %6 - %12 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 - %13 = shl nsw i64 %10, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef 8) #33, !noalias !15 + %13 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 + %14 = shl nsw i64 %11, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %13, i64 noundef %14, i64 noundef 8) #33, !noalias !15 br label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit" "_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit": ; preds = %6, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i" tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef 16, i64 noundef 8) #33, !noalias !20 - br label %16 + br label %17 -14: ; preds = %2 +15: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2ab0b16c707812d9E.llvm.2256714685376175499, ptr %3, align 8, !alias.scope !25 - %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %1, ptr %15, align 8, !alias.scope !25 + %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %1, ptr %16, align 8, !alias.scope !25 call void @_ZN15crossbeam_epoch8internal5Local5defer17hd7a4045d8e5f9260E(ptr noundef nonnull align 128 %4, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %16 + br label %17 -16: ; preds = %14, %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit" +17: ; preds = %15, %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit" ret void } @@ -188,15 +192,17 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2ab0b16c70 %2 = load i64, ptr %0, align 8, !noundef !4 %3 = and i64 %2, -8 %4 = inttoptr i64 %3 to ptr - %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %6 = load i64, ptr %5, align 8, !noundef !4 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" + %5 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %5) + %6 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %7 = load i64, ptr %6, align 8, !noundef !4 + %8 = icmp eq i64 %7, 0 + br i1 %8, label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i": ; preds = %1 - %8 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 - %9 = shl nsw i64 %6, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %9, i64 noundef 8) #33, !noalias !28 + %9 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %10 = shl nsw i64 %7, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef %10, i64 noundef 8) #33, !noalias !28 br label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit" "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" @@ -210,18 +216,20 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h5cafaec84d %3 = load i64, ptr %2, align 8, !noundef !4 %4 = and i64 %3, -8 %5 = inttoptr i64 %4 to ptr - %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %7 = load i64, ptr %6, align 8, !noundef !4 - %8 = icmp eq i64 %7, 0 - br i1 %8, label %11, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" + %6 = icmp ne i64 %4, 0 + tail call void @llvm.assume(i1 %6) + %7 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %8 = load i64, ptr %7, align 8, !noundef !4 + %9 = icmp eq i64 %8, 0 + br i1 %9, label %12, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i": ; preds = %1 - %9 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 - %10 = shl nsw i64 %7, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef %10, i64 noundef 8) #33, !noalias !39 - br label %11 + %10 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %11 = shl nsw i64 %8, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %10, i64 noundef %11, i64 noundef 8) #33, !noalias !39 + br label %12 -11: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i", %1 +12: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i", %1 tail call void @__rust_dealloc(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8) #33, !noalias !44 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 8, i64 noundef 8) #33 ret void diff --git a/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll b/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll index 6c72a5fe6c7..f23eb6b800a 100644 --- a/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll +++ b/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll @@ -870,7 +870,7 @@ _ZN14regex_automata4util4pool5inner9THREAD_ID7__getit17hbfe95a96c38d7049E.exit.i %82 = getelementptr inbounds nuw i8, ptr %69, i64 120 %83 = load ptr, ptr %82, align 8, !invariant.load !4, !nonnull !4 %84 = invoke noundef zeroext i1 %83(ptr noundef align 1 %81, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.0.i9, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %8) - to label %85 unwind label %171 + to label %85 unwind label %172 85: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h29f32342d558414aE.exit" %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -1123,6 +1123,8 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.10717008487263263189.exit 167: ; preds = %166 %168 = landingpad { ptr, i32 } cleanup + %169 = icmp ne i64 %.sroa.0.sroa.4.0.copyload, 0 + call void @llvm.assume(i1 %169) br label %.body.thread.sink.split .noexc5: ; preds = %166 @@ -1136,10 +1138,10 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.10717008487263263189.exit unreachable .noexc7: ; preds = %90 - %169 = icmp ne ptr %.sroa.0.sroa.5.0.copyload, null - call void @llvm.assume(i1 %169) - %170 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload, i64 40 - store atomic i64 %.sroa.0.sroa.4.0.copyload, ptr %170 release, align 8 + %170 = icmp ne ptr %.sroa.0.sroa.5.0.copyload, null + call void @llvm.assume(i1 %170) + %171 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload, i64 40 + store atomic i64 %.sroa.0.sroa.4.0.copyload, ptr %171 release, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !177 br label %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17hc5b5b617c74ce2c4E.exit" @@ -1157,18 +1159,18 @@ _ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98144260d607b035E.exit call void @__rust_dealloc(ptr noundef nonnull %88, i64 noundef 1400, i64 noundef 8) #20 br label %.body.thread -.body.thread: ; preds = %.body.thread.sink.split, %.thread.i, %.body.i, %171 - %eh.lpad-body19 = phi { ptr, i32 } [ %130, %.body.i ], [ %lpad.thr_comm.split-lp, %171 ], [ %lpad.phi.i, %.thread.i ], [ %eh.lpad-body19.ph, %.body.thread.sink.split ] +.body.thread: ; preds = %.body.thread.sink.split, %.thread.i, %.body.i, %172 + %eh.lpad-body19 = phi { ptr, i32 } [ %130, %.body.i ], [ %lpad.thr_comm.split-lp, %172 ], [ %lpad.phi.i, %.thread.i ], [ %eh.lpad-body19.ph, %.body.thread.sink.split ] resume { ptr, i32 } %eh.lpad-body19 -171: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h29f32342d558414aE.exit" +172: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h29f32342d558414aE.exit" %lpad.thr_comm.split-lp = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr366drop_in_place$LT$regex_automata..util..pool..PoolGuard$LT$regex_automata..meta..regex..Cache$C$alloc..boxed..Box$LT$dyn$u20$core..ops..function..Fn$LT$$LP$$RP$$GT$$u2b$Output$u20$$u3d$$u20$regex_automata..meta..regex..Cache$u2b$core..marker..Send$u2b$core..marker..Sync$u2b$core..panic..unwind_safe..RefUnwindSafe$u2b$core..panic..unwind_safe..UnwindSafe$GT$$GT$$GT$17h738df2ae0dd77e27E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %7) #19 - to label %.body.thread unwind label %172 + to label %.body.thread unwind label %173 -172: ; preds = %171 - %173 = landingpad { ptr, i32 } +173: ; preds = %172 + %174 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #21 unreachable diff --git a/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll b/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll index 1e7b836933a..457f84c2661 100644 --- a/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll +++ b/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll @@ -45,11 +45,17 @@ define internal fastcc void @"_ZN4core3ptr233drop_in_place$LT$hashbrown..scopegu %18 = sub nuw i64 -9223372036854775808, %9 %19 = icmp ule i64 %17, %18 tail call void @llvm.assume(i1 %19) - %20 = icmp ne ptr %.val.i, null + %20 = icmp ult i64 %9, -9223372036854775807 tail call void @llvm.assume(i1 %20) - %21 = sub nsw i64 0, %15 - %22 = getelementptr inbounds i8, ptr %.val.i, i64 %21 - tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %17, i64 noundef %9) #22, !noalias !12 + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %22) + %23 = sub nsw i64 0, %15 + %24 = getelementptr inbounds i8, ptr %.val.i, i64 %23 + %25 = icmp sgt i64 %12, -1 + tail call void @llvm.assume(i1 %25) + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %17, i64 noundef %9) #22, !noalias !12 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h727d7012506f71b9E.exit" "_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h727d7012506f71b9E.exit": ; preds = %1, %5 @@ -183,10 +189,16 @@ _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h0f2d8eece5dfc4acE.l %14 = sub nuw i64 -9223372036854775808, %3 %15 = icmp ule i64 %13, %14 tail call void @llvm.assume(i1 %15) - %16 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 - %17 = sub nsw i64 0, %11 - %18 = getelementptr inbounds i8, ptr %16, i64 %17 - tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %13, i64 noundef %3) #22 + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 + %19 = sub nsw i64 0, %11 + %20 = getelementptr inbounds i8, ptr %18, i64 %19 + %21 = icmp sgt i64 %8, -1 + tail call void @llvm.assume(i1 %21) + tail call void @__rust_dealloc(ptr noundef nonnull %20, i64 noundef %13, i64 noundef %3) #22 ret void } @@ -200,14 +212,14 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17hb %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i64, ptr %5, align 8, !noundef !7 %7 = icmp eq i64 %6, 0 - br i1 %7, label %22, label %8 + br i1 %7, label %25, label %8 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !24) %9 = add i64 %6, 1 %10 = mul nuw i64 %9, %2 %11 = add i64 %3, -1 - %12 = add nuw i64 %11, %10 + %12 = add nuw i64 %10, %11 %13 = sub i64 0, %3 %14 = and i64 %12, %13 %15 = add i64 %6, 17 @@ -215,13 +227,19 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17hb %17 = sub nuw i64 -9223372036854775808, %3 %18 = icmp ule i64 %16, %17 tail call void @llvm.assume(i1 %18) - %19 = load ptr, ptr %0, align 8, !alias.scope !24, !nonnull !7, !noundef !7 - %20 = sub nsw i64 0, %14 - %21 = getelementptr inbounds i8, ptr %19, i64 %20 - tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef %16, i64 noundef %3) #22, !noalias !24 - br label %22 - -22: ; preds = %4, %8 + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = load ptr, ptr %0, align 8, !alias.scope !24, !nonnull !7, !noundef !7 + %22 = sub nsw i64 0, %14 + %23 = getelementptr inbounds i8, ptr %21, i64 %22 + %24 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %24) + tail call void @__rust_dealloc(ptr noundef nonnull %23, i64 noundef %16, i64 noundef %3) #22, !noalias !24 + br label %25 + +25: ; preds = %4, %8 ret void } @@ -763,10 +781,10 @@ _ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h11ac1c8566f75df4E.exit br label %151 ._crit_edge.i.i10: ; preds = %151 - %spec.select.i = tail call i64 @llvm.umax.i64(i64 %22, i64 16) - %spec.select64.i = tail call i64 @llvm.umin.i64(i64 %22, i64 16) - %150 = getelementptr inbounds i8, ptr %.val18.i, i64 %spec.select.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %150, ptr nonnull align 1 %.val18.i, i64 %spec.select64.i, i1 false), !noalias !103 + %..i = tail call i64 @llvm.umax.i64(i64 %22, i64 16) + %.63.i = tail call i64 @llvm.umin.i64(i64 %22, i64 16) + %150 = getelementptr inbounds i8, ptr %.val18.i, i64 %..i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %150, ptr nonnull align 1 %.val18.i, i64 %.63.i, i1 false), !noalias !103 br label %168 151: ; preds = %151, %.lr.ph.i.i9 diff --git a/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll b/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll index 19293f5e87c..cc3ab42a064 100644 --- a/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll +++ b/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll @@ -2865,23 +2865,22 @@ define hidden void @_ZN5alloc11collections5btree3mem7replace17hdb78cf47100d07aeE %.sroa.5.0.lcssa.i.i = phi i64 [ %.sroa.27.0.copyload, %2 ], [ %21, %._crit_edge.loopexit.i.i ] %.sroa.0.0.lcssa.i.i = phi ptr [ %.sroa.06.0.copyload, %2 ], [ %18, %._crit_edge.loopexit.i.i ] %.not.i.not.i.i.i = icmp eq i64 %.sroa.5.0.lcssa.i.i, 0 - br i1 %.not.i.not.i.i.i, label %8, label %10 - -8: ; preds = %._crit_edge.i.i - %9 = add nuw nsw i64 %.sroa.6.0.lcssa.i.i, 1 - br label %"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h95d8c890bf89c71dE.llvm.10840908634243202882.exit" - -10: ; preds = %._crit_edge.i.i - %11 = getelementptr i8, ptr %.sroa.0.0.lcssa.i.i, i64 552 - %12 = getelementptr ptr, ptr %11, i64 %.sroa.6.0.lcssa.i.i + %8 = add nuw nsw i64 %.sroa.6.0.lcssa.i.i, 1 + br i1 %.not.i.not.i.i.i, label %"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h95d8c890bf89c71dE.llvm.10840908634243202882.exit", label %9 + +9: ; preds = %._crit_edge.i.i + %10 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i.i, i64 544 + %11 = icmp samesign ult i64 %.sroa.6.0.lcssa.i.i, 11 + tail call void @llvm.assume(i1 %11) + %12 = getelementptr inbounds nuw ptr, ptr %10, i64 %8 %13 = load ptr, ptr %12, align 8, !noalias !706, !nonnull !12, !noundef !12 %14 = add i64 %.sroa.5.0.lcssa.i.i, -1 %.not11.i.i.i.i = icmp eq i64 %14, 0 br i1 %.not11.i.i.i.i, label %"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h95d8c890bf89c71dE.llvm.10840908634243202882.exit", label %.lr.ph.i.i.i.i -.lr.ph.i.i.i.i: ; preds = %10, %.lr.ph.i.i.i.i - %.013.i.i.i.i = phi ptr [ %16, %.lr.ph.i.i.i.i ], [ %13, %10 ] - %.01012.i.i.i.i = phi i64 [ %17, %.lr.ph.i.i.i.i ], [ %14, %10 ] +.lr.ph.i.i.i.i: ; preds = %9, %.lr.ph.i.i.i.i + %.013.i.i.i.i = phi ptr [ %16, %.lr.ph.i.i.i.i ], [ %13, %9 ] + %.01012.i.i.i.i = phi i64 [ %17, %.lr.ph.i.i.i.i ], [ %14, %9 ] %15 = getelementptr inbounds nuw i8, ptr %.013.i.i.i.i, i64 544 %16 = load ptr, ptr %15, align 8, !noalias !710, !nonnull !12, !noundef !12 %17 = add i64 %.01012.i.i.i.i, -1 @@ -2923,9 +2922,9 @@ define hidden void @_ZN5alloc11collections5btree3mem7replace17hdb78cf47100d07aeE invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %3) to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h476c9acfe909476dE.exit" unwind label %29 -"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h95d8c890bf89c71dE.llvm.10840908634243202882.exit": ; preds = %.lr.ph.i.i.i.i, %10, %8 - %.sroa.7.0.ph.i = phi i64 [ %9, %8 ], [ 0, %10 ], [ 0, %.lr.ph.i.i.i.i ] - %.sroa.0.0.ph.i = phi ptr [ %.sroa.0.0.lcssa.i.i, %8 ], [ %13, %10 ], [ %16, %.lr.ph.i.i.i.i ] +"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h95d8c890bf89c71dE.llvm.10840908634243202882.exit": ; preds = %.lr.ph.i.i.i.i, %9, %._crit_edge.i.i + %.sroa.7.0.ph.i = phi i64 [ %8, %._crit_edge.i.i ], [ 0, %9 ], [ 0, %.lr.ph.i.i.i.i ] + %.sroa.0.0.ph.i = phi ptr [ %.sroa.0.0.lcssa.i.i, %._crit_edge.i.i ], [ %13, %9 ], [ %16, %.lr.ph.i.i.i.i ] store ptr %.sroa.0.0.lcssa.i.i, ptr %0, align 8 %.sroa.8.24..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.5.0.lcssa.i.i, ptr %.sroa.8.24..sroa_idx, align 8 @@ -2998,32 +2997,31 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %.sroa.5.0.lcssa = phi i64 [ %4, %2 ], [ %27, %._crit_edge.loopexit ] %.sroa.0.0.lcssa = phi ptr [ %5, %2 ], [ %22, %._crit_edge.loopexit ] %.not.i.not.i = icmp eq i64 %.sroa.5.0.lcssa, 0 - br i1 %.not.i.not.i, label %12, label %14 - -12: ; preds = %._crit_edge - %13 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 - br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit" - -14: ; preds = %._crit_edge - %15 = getelementptr i8, ptr %.sroa.0.0.lcssa, i64 552 - %16 = getelementptr ptr, ptr %15, i64 %.sroa.6.0.lcssa + %12 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 + br i1 %.not.i.not.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit", label %13 + +13: ; preds = %._crit_edge + %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 544 + %15 = icmp samesign ult i64 %.sroa.6.0.lcssa, 11 + tail call void @llvm.assume(i1 %15) + %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !725, !nonnull !12, !noundef !12 %18 = add i64 %.sroa.5.0.lcssa, -1 %.not11.i.i = icmp eq i64 %18, 0 br i1 %.not11.i.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit", label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %14, %.lr.ph.i.i - %.013.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %17, %14 ] - %.01012.i.i = phi i64 [ %21, %.lr.ph.i.i ], [ %18, %14 ] +.lr.ph.i.i: ; preds = %13, %.lr.ph.i.i + %.013.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %17, %13 ] + %.01012.i.i = phi i64 [ %21, %.lr.ph.i.i ], [ %18, %13 ] %19 = getelementptr inbounds nuw i8, ptr %.013.i.i, i64 544 %20 = load ptr, ptr %19, align 8, !noalias !729, !nonnull !12, !noundef !12 %21 = add i64 %.01012.i.i, -1 %.not.i6.i = icmp eq i64 %21, 0 br i1 %.not.i6.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit", label %.lr.ph.i.i -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit": ; preds = %.lr.ph.i.i, %14, %12 - %.sroa.7.0 = phi i64 [ %13, %12 ], [ 0, %14 ], [ 0, %.lr.ph.i.i ] - %.sroa.0.055 = phi ptr [ %.sroa.0.0.lcssa, %12 ], [ %17, %14 ], [ %20, %.lr.ph.i.i ] +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit": ; preds = %.lr.ph.i.i, %13, %._crit_edge + %.sroa.7.0 = phi i64 [ %12, %._crit_edge ], [ 0, %13 ], [ 0, %.lr.ph.i.i ] + %.sroa.0.055 = phi ptr [ %.sroa.0.0.lcssa, %._crit_edge ], [ %17, %13 ], [ %20, %.lr.ph.i.i ] store ptr %.sroa.0.055, ptr %0, align 8 %.sroa.034.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %.sroa.034.sroa.4.0..sroa_idx, align 8 @@ -3090,23 +3088,22 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %.sroa.5.0.lcssa.i = phi i64 [ %4, %2 ], [ %25, %._crit_edge.loopexit.i ] %.sroa.0.0.lcssa.i = phi ptr [ %5, %2 ], [ %22, %._crit_edge.loopexit.i ] %.not.i.not.i.i = icmp eq i64 %.sroa.5.0.lcssa.i, 0 - br i1 %.not.i.not.i.i, label %12, label %14 - -12: ; preds = %._crit_edge.i - %13 = add nuw nsw i64 %.sroa.6.0.lcssa.i, 1 - br label %.loopexit - -14: ; preds = %._crit_edge.i - %15 = getelementptr i8, ptr %.sroa.0.0.lcssa.i, i64 552 - %16 = getelementptr ptr, ptr %15, i64 %.sroa.6.0.lcssa.i + %12 = add nuw nsw i64 %.sroa.6.0.lcssa.i, 1 + br i1 %.not.i.not.i.i, label %.loopexit, label %13 + +13: ; preds = %._crit_edge.i + %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i, i64 544 + %15 = icmp samesign ult i64 %.sroa.6.0.lcssa.i, 11 + tail call void @llvm.assume(i1 %15) + %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !744, !nonnull !12, !noundef !12 %18 = add i64 %.sroa.5.0.lcssa.i, -1 %.not11.i.i.i = icmp eq i64 %18, 0 br i1 %.not11.i.i.i, label %.loopexit, label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %14, %.lr.ph.i.i.i - %.013.i.i.i = phi ptr [ %20, %.lr.ph.i.i.i ], [ %17, %14 ] - %.01012.i.i.i = phi i64 [ %21, %.lr.ph.i.i.i ], [ %18, %14 ] +.lr.ph.i.i.i: ; preds = %13, %.lr.ph.i.i.i + %.013.i.i.i = phi ptr [ %20, %.lr.ph.i.i.i ], [ %17, %13 ] + %.01012.i.i.i = phi i64 [ %21, %.lr.ph.i.i.i ], [ %18, %13 ] %19 = getelementptr inbounds nuw i8, ptr %.013.i.i.i, i64 544 %20 = load ptr, ptr %19, align 8, !noalias !748, !nonnull !12, !noundef !12 %21 = add i64 %.01012.i.i.i, -1 @@ -3139,9 +3136,9 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.0e76b016d983fcbb76446f9307f9fc57.3.llvm.10840908634243202882, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0e76b016d983fcbb76446f9307f9fc57.28.llvm.10840908634243202882) #34 unreachable -.loopexit: ; preds = %.lr.ph.i.i.i, %12, %14 - %.sroa.7.0.ph = phi i64 [ %13, %12 ], [ 0, %14 ], [ 0, %.lr.ph.i.i.i ] - %.sroa.0.0.ph = phi ptr [ %.sroa.0.0.lcssa.i, %12 ], [ %17, %14 ], [ %20, %.lr.ph.i.i.i ] +.loopexit: ; preds = %.lr.ph.i.i.i, %._crit_edge.i, %13 + %.sroa.7.0.ph = phi i64 [ %12, %._crit_edge.i ], [ 0, %13 ], [ 0, %.lr.ph.i.i.i ] + %.sroa.0.0.ph = phi ptr [ %.sroa.0.0.lcssa.i, %._crit_edge.i ], [ %17, %13 ], [ %20, %.lr.ph.i.i.i ] store ptr %.sroa.0.0.ph, ptr %0, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %.sroa.6.0..sroa_idx, align 8 diff --git a/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll b/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll index 00555f014b8..4a60c1edfd1 100644 --- a/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll +++ b/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll @@ -1248,7 +1248,7 @@ _RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossi _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i: ; preds = %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.thread.i %42 = invoke noundef ptr @_RINvMs0_NtNtNtNtCsapf13pIxsjn_3std3sys12thread_local6native4lazyINtB6_7StoragejzE10initializeNvNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID6___initEB1D_(ptr noundef nonnull align 8 @_RNvNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_03VAL, ptr noalias noundef align 8 dereferenceable_or_null(16) null) - to label %.noexc unwind label %162 + to label %.noexc unwind label %163 .noexc: ; preds = %_RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i %43 = icmp eq ptr %42, null @@ -1256,7 +1256,7 @@ _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INt 44: ; preds = %.noexc invoke void @_ZN4core6result13unwrap_failed17hc6a65fe4227be0f0E(ptr noalias noundef nonnull readonly align 1 @anon.990a21868e8154f5393011229cd9bf7f.31, i64 noundef 70, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.990a21868e8154f5393011229cd9bf7f.26, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.990a21868e8154f5393011229cd9bf7f.33) #27 - to label %.noexc11 unwind label %162 + to label %.noexc11 unwind label %163 .noexc11: ; preds = %44 unreachable @@ -1271,7 +1271,7 @@ _RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultjNtNtNtCsapf13pIxsjn_3std6thread5l 48: ; preds = %_RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultjNtNtNtCsapf13pIxsjn_3std6thread5local11AccessErrorE6expectCseG2FYMysgNb_3wax.exit.i.i invoke void @_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE8get_slowCseG2FYMysgNb_3wax(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %8, ptr noundef nonnull align 8 %.val9, i64 noundef %.val.i.i.i, i64 noundef %46) - to label %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i unwind label %162 + to label %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i unwind label %163 49: ; preds = %_RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultjNtNtNtCsapf13pIxsjn_3std6thread5local11AccessErrorE6expectCseG2FYMysgNb_3wax.exit.i.i store atomic i64 1, ptr %45 release, align 8, !noalias !363 @@ -1308,7 +1308,7 @@ _RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_ %69 = getelementptr inbounds nuw i8, ptr %56, i64 128 %70 = load ptr, ptr %69, align 8, !invariant.load !5, !nonnull !5 %71 = invoke { i32, i32 } %70(ptr noundef align 1 %62, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.sroa.02.0.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %11, ptr noalias noundef nonnull align 8 %14, i64 noundef %16) - to label %72 unwind label %159 + to label %72 unwind label %160 72: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %.sroa.46.0..sroa_idx.i10 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -1385,7 +1385,7 @@ _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INt _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i: ; preds = %95 call void @__rust_dealloc(ptr noundef nonnull align 8 %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #25 - br label %164 + br label %165 98: ; preds = %.noexc23.i, %88 %.sroa.01.030.i.i = phi i32 [ 0, %88 ], [ %99, %.noexc23.i ] @@ -1460,7 +1460,7 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3Box .noexc16.i.i: ; preds = %128 %132 = invoke noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h6a9f75f10e5219e5E() - to label %.noexc13 unwind label %162 + to label %.noexc13 unwind label %163 .noexc13: ; preds = %.noexc16.i.i br i1 %132, label %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, label %133 @@ -1472,11 +1472,11 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3Box _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %133, %.noexc13, %128, %121 %134 = atomicrmw xchg ptr %109, i32 0 release, align 4 %135 = icmp eq i32 %134, 2 - br i1 %135, label %136, label %164 + br i1 %135, label %136, label %165 136: ; preds = %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i invoke void @_ZN3std3sys4sync5mutex5futex5Mutex4wake17h8c60655997115495E(ptr noundef nonnull align 4 %109) - to label %164 unwind label %162 + to label %165 unwind label %163 137: ; preds = %153, %.body.i.i %138 = landingpad { ptr, i32 } @@ -1554,89 +1554,91 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsapf13pIxsjn_3std4sync5mute 155: ; preds = %154 %156 = landingpad { ptr, i32 } cleanup + %157 = icmp ne ptr %.sroa.46.0.copyload.i, null + call void @llvm.assume(i1 %157) br label %.body.thread.sink.split.i .noexc5.i: ; preds = %154 call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #25 - br label %164 + br label %165 .noexc6.i: ; preds = %76 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !365 store ptr null, ptr %6, align 8, !noalias !365 invoke void @_RINvNtCs1LoaDTb72WA_4core9panicking13assert_failedjjECs5g6BnGVOFtV_12regex_syntax(i8 noundef 1, ptr noalias noundef readonly align 8 dereferenceable(8) @_RNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner17THREAD_ID_DROPPED, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.990a21868e8154f5393011229cd9bf7f.37) #27 - to label %.noexc15 unwind label %162 + to label %.noexc15 unwind label %163 .noexc15: ; preds = %.noexc6.i unreachable .noexc7.i: ; preds = %76 - %157 = icmp ne ptr %.sroa.57.0.copyload.i, null - call void @llvm.assume(i1 %157) - %158 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 - store atomic i64 %73, ptr %158 release, align 8 - br label %164 + %158 = icmp ne ptr %.sroa.57.0.copyload.i, null + call void @llvm.assume(i1 %158) + %159 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 + store atomic i64 %73, ptr %159 release, align 8 + br label %165 .body.thread.sink.split.i: ; preds = %155, %96 %eh.lpad-body17.ph.i = phi { ptr, i32 } [ %97, %96 ], [ %156, %155 ] call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #25 br label %.body -159: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i +160: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsgrIngBG6lgl_14regex_automata4util4pool9PoolGuardNtNtNtBN_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputB1B_NtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB3h_10UnwindSafeNtB3Y_4SendEL_EEECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(32) %9) #28 - to label %.body unwind label %160 + to label %.body unwind label %161 -160: ; preds = %159 - %161 = landingpad { ptr, i32 } +161: ; preds = %160 + %162 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #26 unreachable -162: ; preds = %.noexc6.i, %136, %.noexc16.i.i, %48, %44, %_RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i - %163 = landingpad { ptr, i32 } +163: ; preds = %.noexc6.i, %136, %.noexc16.i.i, %48, %44, %_RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i + %164 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %.body.i.i, %153, %.body.thread.sink.split.i, %159, %162 - %eh.lpad-body = phi { ptr, i32 } [ %163, %162 ], [ %lpad.phi.i.i, %153 ], [ %lpad.thr_comm.split-lp.i, %159 ], [ %118, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] +.body: ; preds = %.body.i.i, %153, %.body.thread.sink.split.i, %160, %163 + %eh.lpad-body = phi { ptr, i32 } [ %164, %163 ], [ %lpad.phi.i.i, %153 ], [ %lpad.thr_comm.split-lp.i, %160 ], [ %118, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4util8captures8CapturesECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) #28 - to label %183 unwind label %181 + to label %184 unwind label %182 -164: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %.noexc5.i, %.noexc7.i, %136 +165: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %.noexc5.i, %.noexc7.i, %136 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !352 - %165 = extractvalue { i32, i32 } %71, 1 - %166 = extractvalue { i32, i32 } %71, 0 + %166 = extractvalue { i32, i32 } %71, 1 + %167 = extractvalue { i32, i32 } %71, 0 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !352 - %167 = getelementptr inbounds nuw i8, ptr %10, i64 28 - store i32 %166, ptr %12, align 8 - store i32 %165, ptr %167, align 4 - %168 = icmp eq i32 %166, 1 - br i1 %168, label %169, label %.thread - -169: ; preds = %164 - %170 = load ptr, ptr %18, align 8, !nonnull !5, !noundef !5 - %171 = getelementptr inbounds nuw i8, ptr %170, i64 168 - %172 = load ptr, ptr %171, align 8, !nonnull !5, !noundef !5 - %173 = getelementptr inbounds nuw i8, ptr %172, i64 32 - %174 = load i64, ptr %173, align 8, !range !313, !noundef !5 - %trunc = trunc nuw i64 %174 to i1 - br i1 %trunc, label %175, label %179 - -.thread: ; preds = %20, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %164 + %168 = getelementptr inbounds nuw i8, ptr %10, i64 28 + store i32 %167, ptr %12, align 8 + store i32 %166, ptr %168, align 4 + %169 = icmp eq i32 %167, 1 + br i1 %169, label %170, label %.thread + +170: ; preds = %165 + %171 = load ptr, ptr %18, align 8, !nonnull !5, !noundef !5 + %172 = getelementptr inbounds nuw i8, ptr %171, i64 168 + %173 = load ptr, ptr %172, align 8, !nonnull !5, !noundef !5 + %174 = getelementptr inbounds nuw i8, ptr %173, i64 32 + %175 = load i64, ptr %174, align 8, !range !313, !noundef !5 + %trunc = trunc nuw i64 %175 to i1 + br i1 %trunc, label %176, label %180 + +.thread: ; preds = %20, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %165 store i64 2, ptr %0, align 8 call void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4util8captures8CapturesECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) - br label %180 + br label %181 -175: ; preds = %169 - %176 = getelementptr inbounds nuw i8, ptr %172, i64 40 - %177 = load i64, ptr %176, align 8 - %178 = call i64 @llvm.uadd.sat.i64(i64 %177, i64 1) - br label %179 +176: ; preds = %170 + %177 = getelementptr inbounds nuw i8, ptr %173, i64 40 + %178 = load i64, ptr %177, align 8 + %179 = call i64 @llvm.uadd.sat.i64(i64 %178, i64 1) + br label %180 -179: ; preds = %169, %175 - %.sroa.01.0 = phi i64 [ 1, %175 ], [ 0, %169 ] - %.sroa.3.0 = phi i64 [ %178, %175 ], [ undef, %169 ] +180: ; preds = %170, %176 + %.sroa.01.0 = phi i64 [ 1, %176 ], [ 0, %170 ] + %.sroa.3.0 = phi i64 [ %179, %176 ], [ undef, %170 ] %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %10, i64 40, i1 false) store i64 %.sroa.01.0, ptr %0, align 8 @@ -1646,20 +1648,20 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsapf13pIxsjn_3std4sync5mute store ptr %2, ptr %.sroa.6.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 64 store i64 %3, ptr %.sroa.7.0..sroa_idx, align 8 - br label %180 + br label %181 -180: ; preds = %.thread, %179 +181: ; preds = %.thread, %180 call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %11) ret void -181: ; preds = %.body - %182 = landingpad { ptr, i32 } +182: ; preds = %.body + %183 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #26 unreachable -183: ; preds = %.body +184: ; preds = %.body resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll b/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll index 8d4a4b4a927..3ec25443f0e 100644 --- a/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll +++ b/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll @@ -1054,7 +1054,7 @@ _RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_ %64 = getelementptr inbounds nuw i8, ptr %51, i64 112 %65 = load ptr, ptr %64, align 8, !invariant.load !5, !noalias !169, !nonnull !5 invoke void %65(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %8, ptr noundef align 1 %57, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.sroa.01.0.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %9) - to label %66 unwind label %151 + to label %66 unwind label %152 66: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %.sroa.46.0..sroa_idx.i3 = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -1131,7 +1131,7 @@ _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INt _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i: ; preds = %89 call void @__rust_dealloc(ptr noundef nonnull align 8 %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #35, !noalias !169 - br label %149 + br label %150 92: ; preds = %141, %82 %.sroa.01.036.i.i = phi i32 [ 0, %82 ], [ %93, %141 ] @@ -1240,11 +1240,11 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3Box _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, %.noexc17.i.i, %130, %124 %136 = atomicrmw xchg ptr %98, i32 0 release, align 4, !noalias !169 %137 = icmp eq i32 %136, 2 - br i1 %137, label %138, label %149 + br i1 %137, label %138, label %150 138: ; preds = %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i call void @_ZN3std3sys4sync5mutex5futex5Mutex4wake17h8c60655997115495E(ptr noundef nonnull align 4 %98), !noalias !169 - br label %149 + br label %150 139: ; preds = %143, %.body.i.i %140 = landingpad { ptr, i32 } @@ -1283,11 +1283,13 @@ _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, 145: ; preds = %144 %146 = landingpad { ptr, i32 } cleanup + %147 = icmp ne ptr %.sroa.46.0.copyload.i, null + call void @llvm.assume(i1 %147) br label %.body.thread.sink.split.i .noexc4.i: ; preds = %144 call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #35, !noalias !169 - br label %149 + br label %150 .noexc5.i: ; preds = %70 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !171 @@ -1296,17 +1298,17 @@ _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, unreachable .noexc6.i: ; preds = %70 - %147 = icmp ne ptr %.sroa.57.0.copyload.i, null - call void @llvm.assume(i1 %147) - %148 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 - store atomic i64 %67, ptr %148 release, align 8, !noalias !169 - br label %149 + %148 = icmp ne ptr %.sroa.57.0.copyload.i, null + call void @llvm.assume(i1 %148) + %149 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 + store atomic i64 %67, ptr %149 release, align 8, !noalias !169 + br label %150 -149: ; preds = %.noexc6.i, %.noexc4.i, %138, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i +150: ; preds = %.noexc6.i, %.noexc4.i, %138, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !156 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !156 %.pre = load i64, ptr %8, align 8, !range !4 - %150 = trunc nuw i64 %.pre to i1 + %151 = trunc nuw i64 %.pre to i1 br label %_RNvMs0_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_5Regex11search_half.exit .body.thread.sink.split.i: ; preds = %145, %90 @@ -1314,24 +1316,24 @@ _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #35, !noalias !169 br label %.body.thread.i -.body.thread.i: ; preds = %151, %.body.thread.sink.split.i, %143, %.body.i.i - %eh.lpad-body17.i = phi { ptr, i32 } [ %lpad.phi.i.i, %143 ], [ %lpad.thr_comm.split-lp.i, %151 ], [ %121, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] +.body.thread.i: ; preds = %152, %.body.thread.sink.split.i, %143, %.body.i.i + %eh.lpad-body17.i = phi { ptr, i32 } [ %lpad.phi.i.i, %143 ], [ %lpad.thr_comm.split-lp.i, %152 ], [ %121, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] resume { ptr, i32 } %eh.lpad-body17.i -151: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i +152: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsgrIngBG6lgl_14regex_automata4util4pool9PoolGuardNtNtNtBN_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputB1B_NtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB3h_10UnwindSafeNtB3Y_4SendEL_EEECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(32) %7) #37 - to label %.body.thread.i unwind label %152, !noalias !169 + to label %.body.thread.i unwind label %153, !noalias !169 -152: ; preds = %151 - %153 = landingpad { ptr, i32 } +153: ; preds = %152 + %154 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #34, !noalias !169 unreachable -_RNvMs0_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_5Regex11search_half.exit: ; preds = %15, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %149 - %trunc = phi i1 [ %150, %149 ], [ false, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i ], [ false, %15 ] +_RNvMs0_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_5Regex11search_half.exit: ; preds = %15, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %150 + %trunc = phi i1 [ %151, %150 ], [ false, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i ], [ false, %15 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) ret i1 %trunc diff --git a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll index 8985d85e3c0..50f50ba3256 100644 --- a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll +++ b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll @@ -893,79 +893,81 @@ define void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtNtCsgrIngBG6lgl 14: ; preds = %5 %15 = landingpad { ptr, i32 } cleanup - %16 = getelementptr inbounds nuw i8, ptr %.val2, i64 8 - %17 = load i64, ptr %16, align 8, !range !109, !invariant.load !8 - %18 = getelementptr inbounds nuw i8, ptr %.val2, i64 16 - %19 = load i64, ptr %18, align 8, !range !110, !invariant.load !8 - %20 = icmp ult i64 %19, -9223372036854775807 - tail call void @llvm.assume(i1 %20) - %21 = icmp eq i64 %17, 0 - br i1 %21, label %.body, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i4.i" + %16 = icmp ne ptr %.val, null + tail call void @llvm.assume(i1 %16) + %17 = getelementptr inbounds nuw i8, ptr %.val2, i64 8 + %18 = load i64, ptr %17, align 8, !range !109, !invariant.load !8 + %19 = getelementptr inbounds nuw i8, ptr %.val2, i64 16 + %20 = load i64, ptr %19, align 8, !range !110, !invariant.load !8 + %21 = icmp ult i64 %20, -9223372036854775807 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %18, 0 + br i1 %22, label %.body, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i4.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i4.i": ; preds = %14 - tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %17, i64 noundef range(i64 1, -9223372036854775807) %19) #20 + tail call void @__rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %20) #20 br label %.body .body: ; preds = %14, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i4.i" invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) #19 - to label %.body3 unwind label %37 + to label %.body3 unwind label %38 _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i.i", %6 invoke void @_RNvXsn_NtCs68wO5nsWeTG_5alloc3vecINtB5_3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBw_INtNtB7_5boxed3BoxNtNtNtBO_4meta5regex5CacheEEEEENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropBO_(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) - to label %24 unwind label %22 + to label %25 unwind label %23 -22: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit - %23 = landingpad { ptr, i32 } +23: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit + %24 = landingpad { ptr, i32 } cleanup invoke void @_RNvXs2_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexINtNtB7_3vec3VecINtNtB7_5boxed3BoxNtNtNtBV_4meta5regex5CacheEEEEENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropBV_(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) - to label %.body3 unwind label %25 + to label %.body3 unwind label %26 -24: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit +25: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit invoke void @_RNvXs2_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexINtNtB7_3vec3VecINtNtB7_5boxed3BoxNtNtNtBV_4meta5regex5CacheEEEEENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropBV_(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) - to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %31 + to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %32 -25: ; preds = %22 - %26 = landingpad { ptr, i32 } +26: ; preds = %23 + %27 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #18 unreachable -.body3: ; preds = %31, %22, %.body - %.pn = phi { ptr, i32 } [ %15, %.body ], [ %32, %31 ], [ %23, %22 ] - %27 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %28 = load i64, ptr %27, align 8, !range !4, !alias.scope !111, !noundef !8 - %29 = icmp eq i64 %28, 3 - br i1 %29, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit, label %30 +.body3: ; preds = %32, %23, %.body + %.pn = phi { ptr, i32 } [ %15, %.body ], [ %33, %32 ], [ %24, %23 ] + %28 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %29 = load i64, ptr %28, align 8, !range !4, !alias.scope !111, !noundef !8 + %30 = icmp eq i64 %29, 3 + br i1 %30, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit, label %31 -30: ; preds = %.body3 - invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %27) - to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %37 +31: ; preds = %.body3 + invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %28) + to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %38 -31: ; preds = %24 - %32 = landingpad { ptr, i32 } +32: ; preds = %25 + %33 = landingpad { ptr, i32 } cleanup br label %.body3 -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %24 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %34 = load i64, ptr %33, align 8, !range !4, !alias.scope !116, !noundef !8 - %35 = icmp eq i64 %34, 3 - br i1 %35, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5, label %36 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %25 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %35 = load i64, ptr %34, align 8, !range !4, !alias.scope !116, !noundef !8 + %36 = icmp eq i64 %35, 3 + br i1 %36, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5, label %37 -36: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit - tail call void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %33) +37: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit + tail call void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %34) br label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5 -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit, %36 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit, %37 ret void -37: ; preds = %30, %.body - %38 = landingpad { ptr, i32 } +38: ; preds = %31, %.body + %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #18 unreachable -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %.body3, %30 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %.body3, %31 resume { ptr, i32 } %.pn } diff --git a/bench/velox/optimized/SIMDJsonExtractor.ll b/bench/velox/optimized/SIMDJsonExtractor.ll index 4e930e0ac04..0cfc3c8a200 100644 --- a/bench/velox/optimized/SIMDJsonExtractor.ll +++ b/bench/velox/optimized/SIMDJsonExtractor.ll @@ -762,6 +762,8 @@ if.end.i68: ; preds = %if.end.i76 %16 = load ptr, ptr %jsonValue, align 8, !noalias !17 %17 = load i32, ptr %_depth.i, align 8, !noalias !17 %sub.i = add nsw i32 %17, -1 + %or.cond = icmp ult i32 %sub.i, 2147483646 + tail call void @llvm.assume(i1 %or.cond) %_depth.i210 = getelementptr inbounds nuw i8, ptr %16, i64 36 %18 = load i32, ptr %_depth.i210, align 4, !noalias !17 %cmp4.i = icmp eq i32 %18, %17 @@ -785,10 +787,12 @@ if.end.i32.lr.ph: ; preds = %if.end.i76, %if.end %_position.i254 = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload480, i64 8 %add.i427 = add nuw nsw i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload479, 1 %cmp2.i509 = icmp ne i32 %add.i427, 2147483647 - %cmp12.i275 = icmp sgt i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload479, 0 + %cmp12.i275 = icmp ne i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload479, 0 %_string_buf_loc.i = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload480, i64 24 %parser.i1009 = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload480, i64 16 %sub.i.i = add nsw i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload479, -1 + %or.cond12 = icmp ult i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload479, 2147483647 + %cmp12.i260 = icmp sgt i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload479, 0 br label %if.end.i32 if.end.i32: ; preds = %if.end.i32.lr.ph, %_ZN8simdjson15simdjson_resultINS_7haswell8ondemand15object_iteratorEEppEv.exit @@ -808,7 +812,7 @@ if.end.i322: ; preds = %if.end.i32 tail call void @llvm.assume(i1 %cmp.i256), !noalias !23 %cmp5.i259 = icmp eq i32 %20, %ref.tmp3.i.sroa.0.sroa.2.0.copyload479 tail call void @llvm.assume(i1 %cmp5.i259), !noalias !23 - tail call void @llvm.assume(i1 %cmp12.i275), !noalias !23 + tail call void @llvm.assume(i1 %cmp12.i260), !noalias !23 %23 = load ptr, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload480, align 8, !noalias !23 %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %22, i64 4 store ptr %incdec.ptr.i.i, ptr %_position.i254, align 8, !noalias !23 @@ -843,6 +847,7 @@ if.end.i39: ; preds = %if.end.i365 store i32 %add.i427, ptr %_depth.i.i311481, align 4, !noalias !23 %cmp.i271 = icmp ugt ptr %incdec.ptr.i.i419, %ref.tmp3.i.sroa.0.sroa.4.0.copyload478 tail call void @llvm.assume(i1 %cmp.i271), !noalias !26 + tail call void @llvm.assume(i1 %cmp12.i275), !noalias !26 %28 = load ptr, ptr %_string_buf_loc.i, align 8, !noalias !31 %29 = load <4 x i64>, ptr %incdec.ptr.i404, align 1 store <4 x i64> %29, ptr %28, align 1 @@ -1244,6 +1249,7 @@ if.end5.i: ; preds = %sw.bb31.i, %if.end. ] _ZN8simdjson15simdjson_resultINS_7haswell8ondemand15object_iteratorEEppEv.exit.thread: ; preds = %if.end5.i + tail call void @llvm.assume(i1 %or.cond12) store i32 %sub.i.i, ptr %_depth.i.i311481, align 4 br label %return @@ -1334,6 +1340,8 @@ if.then.i83: ; preds = %if.end.i48 %16 = load ptr, ptr %jsonValue, align 8, !noalias !36 %17 = load i32, ptr %_depth.i.i, align 8, !noalias !36 %sub.i.i = add nsw i32 %17, -1 + %or.cond = icmp ult i32 %sub.i.i, 2147483646 + tail call void @llvm.assume(i1 %or.cond) %_depth.i43.i = getelementptr inbounds nuw i8, ptr %16, i64 36 %18 = load i32, ptr %_depth.i43.i, align 4, !noalias !36 %cmp4.i.i = icmp eq i32 %18, %17 @@ -1412,6 +1420,7 @@ if.end.i146.lr.ph: ; preds = %_ZNR5folly8Expected %cmp.i74.i = icmp sgt i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload, -1 %cmp2.i77.i = icmp ne i32 %add.i92, 2147483647 %sub.i.i340 = add nsw i32 %ref.tmp3.i.sroa.0.sroa.2.0.copyload, -1 + %or.cond5 = icmp ult i32 %sub.i.i340, 2147483646 %error.i9.i.promoted = load i32, ptr %error.i9.i, align 8 br label %if.end.i146 @@ -1562,6 +1571,7 @@ if.end6.i: ; preds = %if.end6.i.loopexit, ] _ZN8simdjson15simdjson_resultINS_7haswell8ondemand14array_iteratorEEppEv.exit.thread: ; preds = %if.end6.i + call void @llvm.assume(i1 %or.cond5) store i32 %sub.i.i340, ptr %_depth.i.i.i217, align 4 br label %return diff --git a/bench/wasmi-rs/optimized/47i5oou8fwwq0e6h8s2c2rc64.ll b/bench/wasmi-rs/optimized/47i5oou8fwwq0e6h8s2c2rc64.ll index 12e037446a8..12c13830696 100644 --- a/bench/wasmi-rs/optimized/47i5oou8fwwq0e6h8s2c2rc64.ll +++ b/bench/wasmi-rs/optimized/47i5oou8fwwq0e6h8s2c2rc64.ll @@ -1918,18 +1918,21 @@ define hidden void @"_ZN4core3ptr359drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !89, !invariant.load !3 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h511e1da4b4faf558E.exit", label %20 - -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #11 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h511e1da4b4faf558E.exit", label %22 + +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #11 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h511e1da4b4faf558E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h511e1da4b4faf558E.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h511e1da4b4faf558E.exit": ; preds = %1, %4, %8, %22 ret void } @@ -1956,18 +1959,21 @@ define hidden void @"_ZN4core3ptr385drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !89, !invariant.load !3 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7cb3058bd31f8aa1E.exit", label %20 - -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #11 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7cb3058bd31f8aa1E.exit", label %22 + +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #11 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7cb3058bd31f8aa1E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7cb3058bd31f8aa1E.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7cb3058bd31f8aa1E.exit": ; preds = %1, %4, %8, %22 ret void } diff --git a/bench/wasmi-rs/optimized/ah35cui21ubzfcdfw75m5m10r.ll b/bench/wasmi-rs/optimized/ah35cui21ubzfcdfw75m5m10r.ll index ad8c6544626..ec0d41f04d3 100644 --- a/bench/wasmi-rs/optimized/ah35cui21ubzfcdfw75m5m10r.ll +++ b/bench/wasmi-rs/optimized/ah35cui21ubzfcdfw75m5m10r.ll @@ -2735,18 +2735,21 @@ define hidden void @"_ZN4core3ptr359drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %12 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 %13 = load i64, ptr %12, align 8, !range !189, !invariant.load !3 %14 = tail call i64 @llvm.umax.i64(i64 %13, i64 8) - %15 = add nuw i64 %11, 15 - %16 = add i64 %15, %14 - %17 = sub i64 0, %14 - %18 = and i64 %16, %17 - %19 = icmp eq i64 %18, 0 - br i1 %19, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6b6ea9da0a1df61fE.exit", label %20 - -20: ; preds = %8 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %18, i64 noundef range(i64 1, -9223372036854775807) %14) #15 + %15 = add nuw i64 %11, 16 + %16 = add i64 %14, -1 + %17 = add i64 %15, %16 + %18 = sub i64 0, %14 + %19 = and i64 %17, %18 + %20 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %19, 0 + br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6b6ea9da0a1df61fE.exit", label %22 + +22: ; preds = %8 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #15 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6b6ea9da0a1df61fE.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6b6ea9da0a1df61fE.exit": ; preds = %1, %4, %8, %20 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6b6ea9da0a1df61fE.exit": ; preds = %1, %4, %8, %22 ret void } diff --git a/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll b/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll index 90b5b53d494..0ea3ef27a80 100644 --- a/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll +++ b/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll @@ -1891,7 +1891,7 @@ define internal fastcc void @"_ZN4core3ptr103drop_in_place$LT$alloc..boxed..Box$ 15: ; preds = %19, %17 %.1.i = phi i64 [ %7, %17 ], [ %21, %19 ] %16 = icmp eq i64 %.1.i, %.8.val - br i1 %16, label %25, label %19 + br i1 %16, label %26, label %19 17: ; preds = %5 %18 = landingpad { ptr, i32 } @@ -1912,15 +1912,19 @@ define internal fastcc void @"_ZN4core3ptr103drop_in_place$LT$alloc..boxed..Box$ "_ZN4core3ptr78drop_in_place$LT$$u5b$wasmtime_environ..component..types..RecordField$u5d$$GT$17h7abcc09d68e1ff20E.exit": ; preds = %"_ZN4core3ptr68drop_in_place$LT$wasmtime_environ..component..types..RecordField$GT$17hcc4a12c36b891a9dE.exit.i" %24 = shl nsw i64 %.8.val, 5 + %25 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %25) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, 0) %24, i64 noundef 8) #25 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5f19fdbdac53d871E.exit4" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5f19fdbdac53d871E.exit4": ; preds = %0, %"_ZN4core3ptr78drop_in_place$LT$$u5b$wasmtime_environ..component..types..RecordField$u5d$$GT$17h7abcc09d68e1ff20E.exit" ret void -25: ; preds = %15 - %26 = shl nsw i64 %.8.val, 5 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, 0) %26, i64 noundef 8) #25 +26: ; preds = %15 + %27 = shl nsw i64 %.8.val, 5 + %28 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %28) + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, 0) %27, i64 noundef 8) #25 resume { ptr, i32 } %18 } diff --git a/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll b/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll index af0dd4c2064..c5b3597cf50 100644 --- a/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll +++ b/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll @@ -113,18 +113,20 @@ define nonnull align 8 ptr @"_ZN4core6option15Option$LT$T$GT$18get_or_insert_wit call void @"_ZN4core4iter8adapters8peekable17Peekable$LT$I$GT$4peek28_$u7b$$u7b$closure$u7d$$u7d$17h296401757362ea26E"(ptr nonnull sret({ [2 x i64], i64, [6 x i64] }) align 8 %3, ptr align 8 %1) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %4, ptr noundef nonnull align 8 dereferenceable(72) %3, i64 72, i1 false) invoke void @"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..option..Option$LT$$LP$$RF$str$C$cranelift_codegen_meta..cdsl..operands..OperandKindFields$RP$$GT$$GT$$GT$17hf6b28dbe6eee9e49E"(ptr nonnull align 8 %0) - to label %12 unwind label %10 + to label %13 unwind label %11 -9: ; preds = %12, %2 +9: ; preds = %13, %2 + %10 = icmp ne ptr %0, null + call void @llvm.assume(i1 %10) ret ptr %0 -10: ; preds = %8 - %11 = landingpad { ptr, i32 } +11: ; preds = %8 + %12 = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) - resume { ptr, i32 } %11 + resume { ptr, i32 } %12 -12: ; preds = %8 +13: ; preds = %8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) br label %9 } @@ -254,7 +256,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 17: ; preds = %5 %18 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr159drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$alloc..rc..Rc$LT$cranelift_codegen_meta..cdsl..instructions..InstructionContent$GT$$GT$$GT$$GT$17hfb94199e64ad60fdE"(ptr nonnull align 8 %4) #8 + invoke void @"_ZN4core3ptr159drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$alloc..rc..Rc$LT$cranelift_codegen_meta..cdsl..instructions..InstructionContent$GT$$GT$$GT$$GT$17hfb94199e64ad60fdE"(ptr nonnull align 8 %4) #9 to label %23 unwind label %21 19: ; preds = %5 @@ -267,7 +269,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 21: ; preds = %17 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #9 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #10 unreachable 23: ; preds = %17 @@ -306,7 +308,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 17: ; preds = %5 %18 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr129drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$cranelift_codegen_meta..gen_settings..SettingOrPreset$GT$$GT$$GT$17hf4c033295bb53410E"(ptr nonnull align 8 %4) #8 + invoke void @"_ZN4core3ptr129drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$cranelift_codegen_meta..gen_settings..SettingOrPreset$GT$$GT$$GT$17hf4c033295bb53410E"(ptr nonnull align 8 %4) #9 to label %23 unwind label %21 19: ; preds = %5 @@ -319,7 +321,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 21: ; preds = %17 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #9 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #10 unreachable 23: ; preds = %17 @@ -456,6 +458,9 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr no ; Function Attrs: nonlazybind uwtable declare void @"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..option..Option$LT$$LP$$RF$str$C$cranelift_codegen_meta..cdsl..operands..OperandKindFields$RP$$GT$$GT$$GT$17hf6b28dbe6eee9e49E"(ptr align 8) unnamed_addr #0 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: inlinehint nonlazybind uwtable declare { i64, i64 } @"_ZN4core4iter8adapters8peekable17Peekable$LT$I$GT$4peek28_$u7b$$u7b$closure$u7d$$u7d$17h65c9c09b741781dfE"(ptr align 8) unnamed_addr #1 @@ -478,7 +483,7 @@ declare void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h981f6d3602f7ed7cE" declare void @"_ZN4core3ptr159drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$alloc..rc..Rc$LT$cranelift_codegen_meta..cdsl..instructions..InstructionContent$GT$$GT$$GT$$GT$17hfb94199e64ad60fdE"(ptr align 8) unnamed_addr #0 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() unnamed_addr #6 +declare void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() unnamed_addr #7 ; Function Attrs: nonlazybind uwtable declare { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he0d53153d69932d6E"(i64, i1 zeroext) unnamed_addr #0 @@ -514,10 +519,10 @@ declare void @"_ZN4core3ptr77drop_in_place$LT$$RF$cranelift_codegen_meta..cdsl.. declare zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h79cc2e733c0774e3E"(ptr align 8, ptr align 8) unnamed_addr #0 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(ptr captures(none)) #7 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(ptr captures(none)) #7 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #8 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -525,10 +530,11 @@ attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { cold } -attributes #9 = { cold noreturn nounwind } +attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { cold } +attributes #10 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll b/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll index e5d66e4dfb0..bfdb011de20 100644 --- a/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll +++ b/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll @@ -10635,7 +10635,7 @@ define internal fastcc void @"_ZN4core3ptr285drop_in_place$LT$alloc..boxed..Box$ 18: ; preds = %22, %.body.i %.1.i = phi i64 [ %3, %.body.i ], [ %24, %22 ] %19 = icmp eq i64 %.1.i, %.8.val - br i1 %19, label %28, label %22 + br i1 %19, label %29, label %22 20: ; preds = %"_ZN4core3ptr134drop_in_place$LT$addr2line..function..Function$LT$gimli..read..endian_slice..EndianSlice$LT$gimli..endianity..LittleEndian$GT$$GT$$GT$17h439c178630bcb059E.exit.i.i.i.i.i.i" %21 = landingpad { ptr, i32 } @@ -10660,15 +10660,19 @@ define internal fastcc void @"_ZN4core3ptr285drop_in_place$LT$alloc..boxed..Box$ "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4": ; preds = %"_ZN4core3ptr250drop_in_place$LT$$LP$gimli..read..UnitOffset$C$addr2line..lazy..LazyCell$LT$core..result..Result$LT$addr2line..function..Function$LT$gimli..read..endian_slice..EndianSlice$LT$gimli..endianity..LittleEndian$GT$$GT$$C$gimli..read..Error$GT$$GT$$RP$$GT$17h94b8473be6ba5aafE.exit.i" %27 = mul nsw i64 %.8.val, 72 + %28 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %28) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %27, i64 noundef 8) #44 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h89cefaec755e2d09E.exit5" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h89cefaec755e2d09E.exit5": ; preds = %0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4" ret void -28: ; preds = %18 - %29 = mul nsw i64 %.8.val, 72 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %29, i64 noundef 8) #44 +29: ; preds = %18 + %30 = mul nsw i64 %.8.val, 72 + %31 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %31) + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %30, i64 noundef 8) #44 resume { ptr, i32 } %eh.lpad-body.i } @@ -10893,6 +10897,8 @@ define internal void @"_ZN4core3ptr52drop_in_place$LT$target_lexicon..targets..V 18: ; preds = %9 %19 = landingpad { ptr, i32 } cleanup + %20 = icmp ne ptr %.val1, null + tail call void @llvm.assume(i1 %20) tail call void @__rust_dealloc(ptr noundef nonnull %.val1, i64 noundef 24, i64 noundef 8) #44 resume { ptr, i32 } %19 @@ -11462,7 +11468,7 @@ define internal fastcc void @"_ZN4core3ptr77drop_in_place$LT$alloc..boxed..Box$L 15: ; preds = %19, %17 %.1.i = phi i64 [ %7, %17 ], [ %21, %19 ] %16 = icmp eq i64 %.1.i, %.8.val - br i1 %16, label %25, label %19 + br i1 %16, label %26, label %19 17: ; preds = %5 %18 = landingpad { ptr, i32 } @@ -11483,15 +11489,19 @@ define internal fastcc void @"_ZN4core3ptr77drop_in_place$LT$alloc..boxed..Box$L "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4": ; preds = %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he1bee15603eaa80eE.exit.i" %24 = mul nsw i64 %.8.val, 24 + %25 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %25) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %24, i64 noundef 8) #44 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f5a36d45de145c2E.exit5" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f5a36d45de145c2E.exit5": ; preds = %0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4" ret void -25: ; preds = %15 - %26 = mul nsw i64 %.8.val, 24 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %26, i64 noundef 8) #44 +26: ; preds = %15 + %27 = mul nsw i64 %.8.val, 24 + %28 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %28) + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %27, i64 noundef 8) #44 resume { ptr, i32 } %18 } @@ -12045,7 +12055,7 @@ define hidden void @"_ZN4core3ptr98drop_in_place$LT$alloc..boxed..Box$LT$$u5b$wa 21: ; preds = %25, %23 %.1.i = phi i64 [ %11, %23 ], [ %27, %25 ] %22 = icmp eq i64 %.1.i, %5 - br i1 %22, label %31, label %25 + br i1 %22, label %32, label %25 23: ; preds = %13 %24 = landingpad { ptr, i32 } @@ -12066,15 +12076,19 @@ define hidden void @"_ZN4core3ptr98drop_in_place$LT$alloc..boxed..Box$LT$$u5b$wa "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4": ; preds = %"_ZN4core3ptr63drop_in_place$LT$wasmtime_environ..component..info..CoreDef$GT$17h510674b56cbf1984E.llvm.14223331465801898566.exit.i" %30 = shl nsw i64 %5, 5 + %31 = icmp ne ptr %3, null + tail call void @llvm.assume(i1 %31) tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %30, i64 noundef 8) #44 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6c9ae326c624e18bE.exit5" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6c9ae326c624e18bE.exit5": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4" ret void -31: ; preds = %21 - %32 = shl nsw i64 %5, 5 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %32, i64 noundef 8) #44 +32: ; preds = %21 + %33 = shl nsw i64 %5, 5 + %34 = icmp ne ptr %3, null + tail call void @llvm.assume(i1 %34) + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %33, i64 noundef 8) #44 resume { ptr, i32 } %24 } diff --git a/bench/wireshark/optimized/packet-agentx.ll b/bench/wireshark/optimized/packet-agentx.ll index 7b94cef0015..f9b03d07bf9 100644 --- a/bench/wireshark/optimized/packet-agentx.ll +++ b/bench/wireshark/optimized/packet-agentx.ll @@ -1072,8 +1072,8 @@ define internal fastcc noundef i32 @dissect_object_id(ptr noundef %0, ptr nounde %7 = alloca [2048 x i8], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %7) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %6, i8 noundef 0, i64 noundef 8192, i1 noundef false) #6 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2048) %7, i8 noundef 0, i64 noundef 2048, i1 noundef false) #6 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %6, i8 noundef 0, i64 noundef 8192, i1 noundef false) #7 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2048) %7, i8 noundef 0, i64 noundef 2048, i1 noundef false) #7 %8 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %2) %9 = add i32 %2, 1 %10 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %9) @@ -1133,7 +1133,7 @@ define internal fastcc noundef i32 @dissect_object_id(ptr noundef %0, ptr nounde .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.lr.ph.i ] - %.139.i = phi i32 [ %.046.i, %.lr.ph.preheader.i ], [ %41, %.lr.ph.i ] + %.139.i = phi i32 [ %.046.i, %.lr.ph.preheader.i ], [ %42, %.lr.ph.i ] %31 = sext i32 %.139.i to i64 %32 = getelementptr i8, ptr %7, i64 %31 %33 = sub i32 2048, %.139.i @@ -1141,64 +1141,66 @@ define internal fastcc noundef i32 @dissect_object_id(ptr noundef %0, ptr nounde %35 = sub nsw i64 2048, %31 %36 = icmp ugt i32 %.139.i, 2048 %37 = select i1 %36, i64 0, i64 %35 - %38 = getelementptr i32, ptr %6, i64 %indvars.iv.i - %39 = load i32, ptr %38, align 4 - %40 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef %32, i64 noundef %34, i32 noundef 2, i64 noundef %37, ptr noundef nonnull @.str.183, i32 noundef %39) - %41 = add i32 %40, %.139.i + %38 = icmp ne i64 %37, -1 + call void @llvm.assume(i1 %38) + %39 = getelementptr i32, ptr %6, i64 %indvars.iv.i + %40 = load i32, ptr %39, align 4 + %41 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef %32, i64 noundef %34, i32 noundef 2, i64 noundef %37, ptr noundef nonnull @.str.183, i32 noundef %40) + %42 = add i32 %41, %.139.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %42 = icmp samesign ult i64 %indvars.iv.next.i, %30 - %43 = icmp slt i32 %41, 2048 - %44 = select i1 %42, i1 %43, i1 false - br i1 %44, label %.lr.ph.i, label %convert_oid_to_str.exit, !llvm.loop !16 + %43 = icmp samesign ult i64 %indvars.iv.next.i, %30 + %44 = icmp slt i32 %42, 2048 + %45 = select i1 %43, i1 %44, i1 false + br i1 %45, label %.lr.ph.i, label %convert_oid_to_str.exit, !llvm.loop !16 convert_oid_to_str.exit: ; preds = %.lr.ph.i - %.not = icmp eq i32 %41, 0 + %.not = icmp eq i32 %42, 0 br i1 %.not, label %convert_oid_to_str.exit.thread, label %convert_oid_to_str.exit.thread58 convert_oid_to_str.exit.thread: ; preds = %5, %convert_oid_to_str.exit - %45 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %7, i64 noundef 2048, i32 noundef 2, i64 noundef 2048, ptr noundef nonnull @.str.175) + %46 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %7, i64 noundef 2048, i32 noundef 2, i64 noundef 2048, ptr noundef nonnull @.str.175) br label %convert_oid_to_str.exit.thread58 convert_oid_to_str.exit.thread58: ; preds = %26, %convert_oid_to_str.exit.thread, %convert_oid_to_str.exit %.not53 = icmp eq ptr %1, null - br i1 %.not53, label %66, label %46 + br i1 %.not53, label %67, label %47 -46: ; preds = %convert_oid_to_str.exit.thread58 +47: ; preds = %convert_oid_to_str.exit.thread58 %.not54 = icmp eq i8 %12, 0 - %47 = select i1 %.not54, ptr @.str.178, ptr @.str.177 - switch i32 %4, label %49 [ - i32 0, label %50 - i32 1, label %48 + %48 = select i1 %.not54, ptr @.str.178, ptr @.str.177 + switch i32 %4, label %50 [ + i32 0, label %51 + i32 1, label %49 ] -48: ; preds = %46 - br label %50 - -49: ; preds = %46 - br label %50 - -50: ; preds = %46, %49, %48 - %.048 = phi ptr [ @.str.176, %49 ], [ @.str.180, %48 ], [ @.str.179, %46 ] - %.0 = phi ptr [ @.str.176, %49 ], [ %47, %48 ], [ %47, %46 ] - %51 = shl nuw nsw i32 %15, 2 - %52 = add nuw nsw i32 %51, 4 - %53 = load i32, ptr @ett_obj_ident, align 4 - %54 = call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef nonnull %1, ptr noundef %0, i32 noundef %2, i32 noundef %52, i32 noundef %53, ptr noundef null, ptr noundef nonnull @.str.181, ptr noundef nonnull %.048, ptr noundef nonnull %7, ptr noundef nonnull %.0) - %55 = load i32, ptr @hf_oid_sub, align 4 - %56 = call ptr @proto_tree_add_uint(ptr noundef %54, i32 noundef %55, ptr noundef %0, i32 noundef %2, i32 noundef 1, i32 noundef %15) - %57 = load i32, ptr @hf_oid_prefix, align 4 - %58 = zext i8 %10 to i32 - %59 = call ptr @proto_tree_add_uint(ptr noundef %54, i32 noundef %57, ptr noundef %0, i32 noundef %9, i32 noundef 1, i32 noundef %58) - %60 = load i32, ptr @hf_oid_include, align 4 - %61 = zext i8 %12 to i64 - %62 = call ptr @proto_tree_add_boolean(ptr noundef %54, i32 noundef %60, ptr noundef %0, i32 noundef %11, i32 noundef 1, i64 noundef %61) - %63 = load i32, ptr @hf_oid_str, align 4 - %64 = add i32 %2, 4 - %65 = call ptr @proto_tree_add_string(ptr noundef %54, i32 noundef %63, ptr noundef %0, i32 noundef %64, i32 noundef %51, ptr noundef nonnull %7) - br label %66 - -66: ; preds = %convert_oid_to_str.exit.thread58, %50 - %.050 = phi i32 [ %52, %50 ], [ %2, %convert_oid_to_str.exit.thread58 ] +49: ; preds = %47 + br label %51 + +50: ; preds = %47 + br label %51 + +51: ; preds = %47, %50, %49 + %.048 = phi ptr [ @.str.176, %50 ], [ @.str.180, %49 ], [ @.str.179, %47 ] + %.0 = phi ptr [ @.str.176, %50 ], [ %48, %49 ], [ %48, %47 ] + %52 = shl nuw nsw i32 %15, 2 + %53 = add nuw nsw i32 %52, 4 + %54 = load i32, ptr @ett_obj_ident, align 4 + %55 = call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef nonnull %1, ptr noundef %0, i32 noundef %2, i32 noundef %53, i32 noundef %54, ptr noundef null, ptr noundef nonnull @.str.181, ptr noundef nonnull %.048, ptr noundef nonnull %7, ptr noundef nonnull %.0) + %56 = load i32, ptr @hf_oid_sub, align 4 + %57 = call ptr @proto_tree_add_uint(ptr noundef %55, i32 noundef %56, ptr noundef %0, i32 noundef %2, i32 noundef 1, i32 noundef %15) + %58 = load i32, ptr @hf_oid_prefix, align 4 + %59 = zext i8 %10 to i32 + %60 = call ptr @proto_tree_add_uint(ptr noundef %55, i32 noundef %58, ptr noundef %0, i32 noundef %9, i32 noundef 1, i32 noundef %59) + %61 = load i32, ptr @hf_oid_include, align 4 + %62 = zext i8 %12 to i64 + %63 = call ptr @proto_tree_add_boolean(ptr noundef %55, i32 noundef %61, ptr noundef %0, i32 noundef %11, i32 noundef 1, i64 noundef %62) + %64 = load i32, ptr @hf_oid_str, align 4 + %65 = add i32 %2, 4 + %66 = call ptr @proto_tree_add_string(ptr noundef %55, i32 noundef %64, ptr noundef %0, i32 noundef %65, i32 noundef %52, ptr noundef nonnull %7) + br label %67 + +67: ; preds = %convert_oid_to_str.exit.thread58, %51 + %.050 = phi i32 [ %53, %51 ], [ %2, %convert_oid_to_str.exit.thread58 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.050 @@ -1337,13 +1339,17 @@ declare i32 @llvm.umin.i32(i32, i32) #4 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #5 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + attributes #0 = { null_pointer_is_valid sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "probe-stack"="inline-asm" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { null_pointer_is_valid "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 = { nofree null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #4 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nounwind } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/wireshark/optimized/packet-tls-utils.ll b/bench/wireshark/optimized/packet-tls-utils.ll index 49f80904917..c600bc4c931 100644 --- a/bench/wireshark/optimized/packet-tls-utils.ll +++ b/bench/wireshark/optimized/packet-tls-utils.ll @@ -16549,7 +16549,7 @@ define internal fastcc noundef zeroext i1 @tls12_prf(i32 noundef range(i32 8, 32 21: ; preds = %12 tail call void (ptr, ...) @ssl_debug_printf(ptr noundef nonnull @.str.1227) - br label %51 + br label %53 22: ; preds = %12 %23 = trunc i64 %19 to i32 @@ -16561,41 +16561,45 @@ define internal fastcc noundef zeroext i1 @tls12_prf(i32 noundef range(i32 8, 32 %28 = load i32, ptr %15, align 8 %29 = zext i32 %28 to i64 %30 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %14) - %31 = tail call ptr @__memcpy_chk(ptr noundef %26, ptr noundef %27, i64 noundef %29, i64 noundef %30) #31, !alias.scope !175 + %31 = icmp ne i64 %30, -1 + tail call void @llvm.assume(i1 %31) + %32 = tail call ptr @__memcpy_chk(ptr noundef %26, ptr noundef %27, i64 noundef %29, i64 noundef %30) #31, !alias.scope !175 %.not25 = icmp eq i64 %13, 0 - br i1 %.not25, label %41, label %32 - -32: ; preds = %22 - %33 = add i64 %14, %29 - %34 = getelementptr i8, ptr %26, i64 %29 - %35 = load ptr, ptr %4, align 8 - %36 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %37 = load i32, ptr %36, align 8 - %38 = zext i32 %37 to i64 - %39 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %33) - %40 = tail call ptr @__memcpy_chk(ptr noundef %34, ptr noundef %35, i64 noundef %38, i64 noundef %39) #31, !alias.scope !179 - br label %41 - -41: ; preds = %32, %22 - %42 = tail call ptr @gcry_md_algo_name(i32 noundef %0) #32 - %43 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %44 = load i32, ptr %43, align 8 - tail call void (ptr, ...) @ssl_debug_printf(ptr noundef nonnull @.str.1228, ptr noundef %42, i32 noundef %44, i32 noundef %23) - %45 = tail call fastcc i32 @tls_hash(ptr noundef %1, ptr %20, i32 %23, i32 noundef %0, ptr noundef %5, i32 noundef %6) - tail call void @g_free(ptr noundef %20) - %.not26 = icmp eq i32 %45, -1 - br i1 %.not26, label %51, label %46 + br i1 %.not25, label %43, label %33 -46: ; preds = %41 - %47 = load ptr, ptr %5, align 8 - %48 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %49 = load i32, ptr %48, align 8 - %50 = zext i32 %49 to i64 - tail call void @ssl_print_data(ptr noundef nonnull @.str.1220, ptr noundef %47, i64 noundef %50) - br label %51 +33: ; preds = %22 + %34 = add i64 %14, %29 + %35 = getelementptr i8, ptr %26, i64 %29 + %36 = load ptr, ptr %4, align 8 + %37 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %38 = load i32, ptr %37, align 8 + %39 = zext i32 %38 to i64 + %40 = tail call i64 @llvm.usub.sat.i64(i64 %19, i64 %34) + %41 = icmp ne i64 %40, -1 + tail call void @llvm.assume(i1 %41) + %42 = tail call ptr @__memcpy_chk(ptr noundef %35, ptr noundef %36, i64 noundef %39, i64 noundef %40) #31, !alias.scope !179 + br label %43 -51: ; preds = %41, %46, %21 - %.0 = phi i1 [ false, %21 ], [ true, %46 ], [ false, %41 ] +43: ; preds = %33, %22 + %44 = tail call ptr @gcry_md_algo_name(i32 noundef %0) #32 + %45 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %46 = load i32, ptr %45, align 8 + tail call void (ptr, ...) @ssl_debug_printf(ptr noundef nonnull @.str.1228, ptr noundef %44, i32 noundef %46, i32 noundef %23) + %47 = tail call fastcc i32 @tls_hash(ptr noundef %1, ptr %20, i32 %23, i32 noundef %0, ptr noundef %5, i32 noundef %6) + tail call void @g_free(ptr noundef %20) + %.not26 = icmp eq i32 %47, -1 + br i1 %.not26, label %53, label %48 + +48: ; preds = %43 + %49 = load ptr, ptr %5, align 8 + %50 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %51 = load i32, ptr %50, align 8 + %52 = zext i32 %51 to i64 + tail call void @ssl_print_data(ptr noundef nonnull @.str.1220, ptr noundef %49, i64 noundef %52) + br label %53 + +53: ; preds = %43, %48, %21 + %.0 = phi i1 [ false, %21 ], [ true, %48 ], [ false, %43 ] ret i1 %.0 } diff --git a/bench/wireshark/optimized/proto.ll b/bench/wireshark/optimized/proto.ll index bbc06cf3e94..fa64a65f4a4 100644 --- a/bench/wireshark/optimized/proto.ll +++ b/bench/wireshark/optimized/proto.ll @@ -35353,7 +35353,7 @@ proto_item_set_generated.exit: ; preds = %36, %39, %42 %73 = tail call ptr @proto_tree_add_bytes(ptr noundef %0, i32 noundef %3, ptr noundef %1, i32 noundef %2, i32 noundef %72, ptr noundef %70) %74 = and i32 %9, 1 %.not124 = icmp eq i32 %74, 0 - br i1 %.not124, label %134, label %75 + br i1 %.not124, label %135, label %75 75: ; preds = %67 %76 = and i32 %9, 12 @@ -35465,52 +35465,54 @@ proto_item_set_generated.exit153: ; preds = %106, %103, %101, %. ._crit_edge: ; preds = %.lr.ph, %115 tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %73, ptr noundef nonnull @.str.199, ptr noundef %121) %.not131 = icmp eq ptr %5, null - br i1 %.not131, label %proto_item_set_generated.exit141, label %131 + br i1 %.not131, label %proto_item_set_generated.exit141, label %132 .lr.ph: ; preds = %115, %.lr.ph - %.0158 = phi i64 [ %130, %.lr.ph ], [ 0, %115 ] + %.0158 = phi i64 [ %131, %.lr.ph ], [ 0, %115 ] %122 = shl i64 %.0158, 1 %123 = getelementptr i8, ptr %121, i64 %122 %124 = sub i64 %117, %122 %125 = tail call i64 @llvm.usub.sat.i64(i64 %120, i64 %122) - %126 = getelementptr i8, ptr %7, i64 %.0158 - %127 = load i8, ptr %126, align 1 - %128 = zext i8 %127 to i32 - %129 = tail call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef %123, i64 noundef %124, i32 noundef 2, i64 noundef %125, ptr noundef nonnull @.str.198, i32 noundef %128) - %130 = add nuw i64 %.0158, 1 - %exitcond.not = icmp eq i64 %130, %8 + %126 = icmp ne i64 %125, -1 + tail call void @llvm.assume(i1 %126) + %127 = getelementptr i8, ptr %7, i64 %.0158 + %128 = load i8, ptr %127, align 1 + %129 = zext i8 %128 to i32 + %130 = tail call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef %123, i64 noundef %124, i32 noundef 2, i64 noundef %125, ptr noundef nonnull @.str.198, i32 noundef %129) + %131 = add nuw i64 %.0158, 1 + %exitcond.not = icmp eq i64 %131, %8 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !77 -131: ; preds = %._crit_edge - %132 = tail call ptr @expert_get_summary(ptr noundef nonnull %5) - %133 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %6, ptr noundef %73, ptr noundef nonnull %5, ptr noundef nonnull @.str.200, ptr noundef %132, ptr noundef %121) +132: ; preds = %._crit_edge + %133 = tail call ptr @expert_get_summary(ptr noundef nonnull %5) + %134 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %6, ptr noundef %73, ptr noundef nonnull %5, ptr noundef nonnull @.str.200, ptr noundef %133, ptr noundef %121) br label %proto_item_set_generated.exit141 -134: ; preds = %67 +135: ; preds = %67 %.not125 = icmp eq i32 %4, -1 - br i1 %.not125, label %proto_item_set_generated.exit141, label %135 + br i1 %.not125, label %proto_item_set_generated.exit141, label %136 -135: ; preds = %134 +136: ; preds = %135 tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %73, ptr noundef nonnull @.str.196) - %136 = tail call ptr @proto_tree_add_uint(ptr noundef %0, i32 noundef %4, ptr noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 2) - %.not.i154 = icmp eq ptr %136, null - br i1 %.not.i154, label %proto_item_set_generated.exit141, label %137 + %137 = tail call ptr @proto_tree_add_uint(ptr noundef %0, i32 noundef %4, ptr noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 2) + %.not.i154 = icmp eq ptr %137, null + br i1 %.not.i154, label %proto_item_set_generated.exit141, label %138 -137: ; preds = %135 - %138 = getelementptr inbounds nuw i8, ptr %136, i64 40 - %139 = load ptr, ptr %138, align 8 - %.not5.i155 = icmp eq ptr %139, null - br i1 %.not5.i155, label %proto_item_set_generated.exit141, label %140 +138: ; preds = %136 + %139 = getelementptr inbounds nuw i8, ptr %137, i64 40 + %140 = load ptr, ptr %139, align 8 + %.not5.i155 = icmp eq ptr %140, null + br i1 %.not5.i155, label %proto_item_set_generated.exit141, label %141 -140: ; preds = %137 - %141 = getelementptr inbounds nuw i8, ptr %139, i64 28 - %142 = load i32, ptr %141, align 4 - %143 = or i32 %142, 2 - store i32 %143, ptr %141, align 4 +141: ; preds = %138 + %142 = getelementptr inbounds nuw i8, ptr %140, i64 28 + %143 = load i32, ptr %142, align 4 + %144 = or i32 %143, 2 + store i32 %144, ptr %142, align 4 br label %proto_item_set_generated.exit141 -proto_item_set_generated.exit141: ; preds = %140, %137, %135, %97, %94, %92, %85, %82, %80, %63, %60, %57, %51, %48, %46, %134, %111, %112, %91, %79, %131, %._crit_edge, %proto_item_set_generated.exit - %.0111 = phi ptr [ %38, %proto_item_set_generated.exit ], [ %73, %._crit_edge ], [ %38, %51 ], [ %73, %112 ], [ %73, %111 ], [ %59, %63 ], [ %73, %134 ], [ %73, %97 ], [ %73, %91 ], [ %73, %85 ], [ %73, %79 ], [ %73, %131 ], [ %38, %46 ], [ %38, %48 ], [ null, %57 ], [ %59, %60 ], [ %73, %80 ], [ %73, %82 ], [ %73, %92 ], [ %73, %94 ], [ %73, %135 ], [ %73, %137 ], [ %73, %140 ] +proto_item_set_generated.exit141: ; preds = %141, %138, %136, %97, %94, %92, %85, %82, %80, %63, %60, %57, %51, %48, %46, %135, %111, %112, %91, %79, %132, %._crit_edge, %proto_item_set_generated.exit + %.0111 = phi ptr [ %38, %proto_item_set_generated.exit ], [ %73, %._crit_edge ], [ %38, %51 ], [ %73, %112 ], [ %73, %111 ], [ %59, %63 ], [ %73, %135 ], [ %73, %97 ], [ %73, %91 ], [ %73, %85 ], [ %73, %79 ], [ %73, %132 ], [ %38, %46 ], [ %38, %48 ], [ null, %57 ], [ %59, %60 ], [ %73, %80 ], [ %73, %82 ], [ %73, %92 ], [ %73, %94 ], [ %73, %136 ], [ %73, %138 ], [ %73, %141 ] ret ptr %.0111 } diff --git a/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll b/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll index c06dfb85c15..59ab8f7debf 100644 --- a/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll +++ b/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll @@ -390215,7 +390215,7 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 store ptr null, ptr %0, align 8 br label %28 -28: ; preds = %100, %79, %36, %35, %_ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread +28: ; preds = %101, %80, %36, %35, %_ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread ret void 29: ; preds = %_ZN9psl_types4List6suffix17haa67183b2c716d12E.exit @@ -390264,7 +390264,7 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 %.sroa.618.0 = select i1 %.not71.not.not, ptr %1, ptr %.sroa.442.0.copyload call void @llvm.lifetime.end.p0(ptr nonnull %6) %spec.select75 = select i1 %.not71.not.not, ptr %1, ptr null - br i1 %.not71.not.not, label %40, label %79 + br i1 %.not71.not.not, label %40, label %80 40: ; preds = %37 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !10931 @@ -390283,117 +390283,119 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 store i32 46, ptr %46, align 8, !alias.scope !10935, !noalias !10938 br label %47 -47: ; preds = %67, %40 - %48 = phi i64 [ %38, %40 ], [ %63, %67 ] - %49 = phi i64 [ 0, %40 ], [ %68, %67 ] +47: ; preds = %68, %40 + %48 = phi i64 [ %38, %40 ], [ %64, %68 ] + %49 = phi i64 [ 0, %40 ], [ %69, %68 ] %50 = sub nuw i64 %48, %49 %51 = getelementptr inbounds nuw i8, ptr %1, i64 %49 %52 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 %53 = zext i8 %52 to i64 - %54 = getelementptr i8, ptr %46, i64 %53 - %55 = getelementptr i8, ptr %54, i64 -1 - %56 = load i8, ptr %55, align 1, !alias.scope !10940, !noalias !10943, !noundef !11 - %57 = call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h602236b76846be3aE(i8 noundef %56, ptr noalias noundef nonnull readonly align 1 %51, i64 noundef %50), !noalias !10945 - %58 = extractvalue { i64, i64 } %57, 0 - %59 = trunc nuw i64 %58 to i1 - br i1 %59, label %60, label %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" - -60: ; preds = %47 - %61 = extractvalue { i64, i64 } %57, 1 - %62 = load i64, ptr %42, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 - %63 = add i64 %62, %61 - %64 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 - %65 = zext i8 %64 to i64 - %66 = add nsw i64 %65, -1 - %.not14.i.i = icmp ult i64 %63, %66 - br i1 %.not14.i.i, label %67, label %70 - -67: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i", %70, %60 - %68 = phi i64 [ %.pre.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" ], [ %62, %70 ], [ %62, %60 ] - store i64 %63, ptr %43, align 8, !alias.scope !10940, !noalias !10943 - %69 = icmp ult i64 %63, %68 - %.not.i.i = icmp ugt i64 %63, %38 - %or.cond.i.i = or i1 %.not.i.i, %69 + %54 = add nsw i64 %53, -1 + %55 = icmp ult i64 %54, 4 + call void @llvm.assume(i1 %55) + %56 = getelementptr inbounds nuw i8, ptr %46, i64 %54 + %57 = load i8, ptr %56, align 1, !alias.scope !10940, !noalias !10943, !noundef !11 + %58 = call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h602236b76846be3aE(i8 noundef %57, ptr noalias noundef nonnull readonly align 1 %51, i64 noundef %50), !noalias !10945 + %59 = extractvalue { i64, i64 } %58, 0 + %60 = trunc nuw i64 %59 to i1 + br i1 %60, label %61, label %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" + +61: ; preds = %47 + %62 = extractvalue { i64, i64 } %58, 1 + %63 = load i64, ptr %42, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 + %64 = add i64 %63, %62 + %65 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 + %66 = zext i8 %65 to i64 + %67 = add nsw i64 %66, -1 + %.not14.i.i = icmp ult i64 %64, %67 + br i1 %.not14.i.i, label %68, label %71 + +68: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i", %71, %61 + %69 = phi i64 [ %.pre.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" ], [ %63, %71 ], [ %63, %61 ] + store i64 %64, ptr %43, align 8, !alias.scope !10940, !noalias !10943 + %70 = icmp ult i64 %64, %69 + %.not.i.i = icmp ugt i64 %64, %38 + %or.cond.i.i = or i1 %.not.i.i, %70 br i1 %or.cond.i.i, label %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread", label %47 -70: ; preds = %60 - %71 = sub nuw i64 %63, %66 - %72 = add i64 %71, %65 - %73 = icmp ult i64 %72, %71 - %.not15.i.i = icmp ugt i64 %72, %38 - %or.cond16.i.i = or i1 %73, %.not15.i.i - br i1 %or.cond16.i.i, label %67, label %74 +71: ; preds = %61 + %72 = sub nuw i64 %64, %67 + %73 = add i64 %72, %66 + %74 = icmp ult i64 %73, %72 + %.not15.i.i = icmp ugt i64 %73, %38 + %or.cond16.i.i = or i1 %74, %.not15.i.i + br i1 %or.cond16.i.i, label %68, label %75 -74: ; preds = %70 - %75 = icmp ugt i8 %64, 4 - br i1 %75, label %76, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i", !prof !10837 +75: ; preds = %71 + %76 = icmp ugt i8 %65, 4 + br i1 %76, label %77, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i", !prof !10837 -76: ; preds = %74 - call void @_ZN4core5slice5index24slice_end_index_len_fail17heb50b9bbe4663132E(i64 noundef range(i64 0, 256) %65, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4ab27f9ebae99a76f53542c5005a6483.33) #14, !noalias !10946 +77: ; preds = %75 + call void @_ZN4core5slice5index24slice_end_index_len_fail17heb50b9bbe4663132E(i64 noundef range(i64 0, 256) %66, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4ab27f9ebae99a76f53542c5005a6483.33) #14, !noalias !10946 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i": ; preds = %74 - %77 = getelementptr inbounds nuw i8, ptr %1, i64 %71 - %78 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %77, i64 noundef %65, ptr noalias noundef nonnull readonly align 1 %46, i64 noundef %65), !noalias !10945 - br i1 %78, label %80, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i": ; preds = %75 + %78 = getelementptr inbounds nuw i8, ptr %1, i64 %72 + %79 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %78, i64 noundef %66, ptr noalias noundef nonnull readonly align 1 %46, i64 noundef %66), !noalias !10945 + br i1 %79, label %81, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i" %.pre.i.i = load i64, ptr %42, align 8, !alias.scope !10940, !noalias !10943 - br label %67 + br label %68 -"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread": ; preds = %47, %67 +"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread": ; preds = %47, %68 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !10931 - br label %86 + br label %87 -79: ; preds = %37 +80: ; preds = %37 store ptr null, ptr %0, align 8 br label %28 -80: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i" - %81 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 - %82 = zext i8 %81 to i64 - %83 = add i64 %71, %82 +81: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i" + %82 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 + %83 = zext i8 %82 to i64 + %84 = add i64 %72, %83 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !10931 - %84 = sub nuw i64 %38, %83 - %85 = getelementptr inbounds nuw i8, ptr %spec.select75, i64 %83 - br label %86 - -86: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread", %80 - %.sroa.5.087 = phi i64 [ %71, %80 ], [ undef, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %.sroa.044.0 = phi ptr [ %.sroa.618.0, %80 ], [ null, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %.sroa.046.0 = phi ptr [ %85, %80 ], [ %spec.select75, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %.sroa.12.0 = phi i64 [ %84, %80 ], [ %38, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %87 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.55, i64 noundef 3) - br i1 %87, label %101, label %88 + %85 = sub nuw i64 %38, %84 + %86 = getelementptr inbounds nuw i8, ptr %spec.select75, i64 %84 + br label %87 + +87: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread", %81 + %.sroa.5.087 = phi i64 [ %72, %81 ], [ undef, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] + %.sroa.044.0 = phi ptr [ %.sroa.618.0, %81 ], [ null, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] + %.sroa.046.0 = phi ptr [ %86, %81 ], [ %spec.select75, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] + %.sroa.12.0 = phi i64 [ %85, %81 ], [ %38, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] + %88 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.55, i64 noundef 3) + br i1 %88, label %102, label %89 -88: ; preds = %86 - %89 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.56, i64 noundef 3) - br i1 %89, label %101, label %90 +89: ; preds = %87 + %90 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.56, i64 noundef 3) + br i1 %90, label %102, label %91 -90: ; preds = %88 - %91 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.57, i64 noundef 1) - br i1 %91, label %101, label %92 +91: ; preds = %89 + %92 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.57, i64 noundef 1) + br i1 %92, label %102, label %93 -92: ; preds = %90 - %93 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.58, i64 noundef 4) - br i1 %93, label %101, label %94 +93: ; preds = %91 + %94 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.58, i64 noundef 4) + br i1 %94, label %102, label %95 -94: ; preds = %92 - %95 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.59, i64 noundef 7) - br i1 %95, label %101, label %96 +95: ; preds = %93 + %96 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.59, i64 noundef 7) + br i1 %96, label %102, label %97 -96: ; preds = %94 - %97 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.60, i64 noundef 3) - br i1 %97, label %101, label %98 +97: ; preds = %95 + %98 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.60, i64 noundef 3) + br i1 %98, label %102, label %99 -98: ; preds = %96 - %99 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.61, i64 noundef 3) - br i1 %99, label %101, label %100 +99: ; preds = %97 + %100 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.61, i64 noundef 3) + br i1 %100, label %102, label %101 -100: ; preds = %101, %98 - %.sroa.044.1 = phi ptr [ %.sroa.046.0, %101 ], [ %.sroa.044.0, %98 ] - %.sroa.445.1 = phi i64 [ %.sroa.12.0, %101 ], [ %.sroa.5.087, %98 ] - %.sroa.046.1 = phi ptr [ null, %101 ], [ %.sroa.046.0, %98 ] +101: ; preds = %102, %99 + %.sroa.044.1 = phi ptr [ %.sroa.046.0, %102 ], [ %.sroa.044.0, %99 ] + %.sroa.445.1 = phi i64 [ %.sroa.12.0, %102 ], [ %.sroa.5.087, %99 ] + %.sroa.046.1 = phi ptr [ null, %102 ], [ %.sroa.046.0, %99 ] store ptr %spec.select74, ptr %0, align 8 %.sroa.426.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.04.0.i, ptr %.sroa.426.0..sroa_idx, align 8 @@ -390411,8 +390413,8 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 store i64 %.sroa.12.0, ptr %.sroa.1032.0..sroa_idx, align 8 br label %28 -101: ; preds = %86, %88, %90, %92, %94, %96, %98 - br label %100 +102: ; preds = %87, %89, %91, %93, %95, %97, %99 + br label %101 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll b/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll index 89d6de104a8..f201949e613 100644 --- a/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll +++ b/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll @@ -14902,7 +14902,7 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17hf %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i64, ptr %5, align 8, !noundef !4 %7 = icmp eq i64 %6, 0 - br i1 %7, label %21, label %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit + br i1 %7, label %24, label %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit: ; preds = %4 %8 = add i64 %6, 1 @@ -14916,13 +14916,19 @@ _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.l %16 = sub nuw i64 -9223372036854775808, %3 %17 = icmp ule i64 %15, %16 tail call void @llvm.assume(i1 %17) - %18 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %19 = sub nsw i64 0, %13 - %20 = getelementptr inbounds i8, ptr %18, i64 %19 - tail call void @__rust_dealloc(ptr noundef nonnull %20, i64 noundef %15, i64 noundef %3) #37 - br label %21 + %18 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %19) + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %13 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + %23 = icmp sgt i64 %10, -1 + tail call void @llvm.assume(i1 %23) + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %15, i64 noundef %3) #37 + br label %24 -21: ; preds = %4, %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit +24: ; preds = %4, %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit ret void } diff --git a/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll b/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll index 51c2966c082..a112445915e 100644 --- a/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll +++ b/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll @@ -7100,17 +7100,19 @@ define internal fastcc void @"_ZN4core3ptr93drop_in_place$LT$alloc..boxed..Box$L 12: ; preds = %3 %13 = landingpad { ptr, i32 } cleanup - %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %15 = load i64, ptr %14, align 8, !range !606, !invariant.load !4 - %16 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %17 = load i64, ptr %16, align 8, !range !607, !invariant.load !4 - %18 = icmp ult i64 %17, -9223372036854775807 - tail call void @llvm.assume(i1 %18) - %19 = icmp eq i64 %15, 0 - br i1 %19, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2789fead471a09b1E.exit5", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.16332856919557639794.exit.i4" + %14 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %14) + %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %16 = load i64, ptr %15, align 8, !range !606, !invariant.load !4 + %17 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %18 = load i64, ptr %17, align 8, !range !607, !invariant.load !4 + %19 = icmp ult i64 %18, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp eq i64 %16, 0 + br i1 %20, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2789fead471a09b1E.exit5", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.16332856919557639794.exit.i4" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.16332856919557639794.exit.i4": ; preds = %12 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %15, i64 noundef %17) #47 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %16, i64 noundef %18) #47 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2789fead471a09b1E.exit5" "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2789fead471a09b1E.exit5": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.16332856919557639794.exit.i4", %12 diff --git a/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll b/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll index 38ec0cbf815..feb84244fdd 100644 --- a/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll +++ b/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll @@ -394,6 +394,8 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h7682ca6e4bd1cee6E.llvm.11 %22 = load ptr, ptr %0, align 8, !nonnull !11, !noundef !11 %23 = sub nsw i64 0, %13 %24 = getelementptr inbounds i8, ptr %22, i64 %23 + %25 = icmp sgt i64 %10, -1 + tail call void @llvm.assume(i1 %25) tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %3) #26 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.11637435995136952541.exit" @@ -509,6 +511,8 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h92451d08aa89aaa0E.llvm.1163743 %62 = load ptr, ptr %0, align 8, !nonnull !11, !noundef !11 %63 = sub nsw i64 0, %53 %64 = getelementptr inbounds i8, ptr %62, i64 %63 + %65 = icmp sgt i64 %50, -1 + tail call void @llvm.assume(i1 %65) tail call void @__rust_dealloc(ptr noundef nonnull %64, i64 noundef %55, i64 noundef %3) #26 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.11637435995136952541.exit" @@ -872,9 +876,9 @@ _ZN9hashbrown3raw13RawTableInner16find_insert_slot17hd5499c650fb46ed7E.exit: ; p tail call void @llvm.experimental.noalias.scope.decl(metadata !175) %.val11.i = load ptr, ptr %0, align 8, !alias.scope !175 %.not5.i.i = icmp eq i64 %15, 0 - br i1 %.not5.i.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread19.i, label %.lr.ph.i.i + br i1 %.not5.i.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread18.i, label %.lr.ph.i.i -_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread19.i: ; preds = %130 +_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread18.i: ; preds = %130 %131 = icmp ne ptr %.val11.i, null tail call void @llvm.assume(i1 %131) br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit @@ -890,10 +894,10 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.ex br label %137 ._crit_edge.i.i: ; preds = %137 - %spec.select.i = tail call i64 @llvm.umax.i64(i64 %15, i64 16) - %spec.select25.i = tail call i64 @llvm.umin.i64(i64 %15, i64 16) - %136 = getelementptr inbounds i8, ptr %.val11.i, i64 %spec.select.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %136, ptr nonnull align 1 %.val11.i, i64 %spec.select25.i, i1 false), !noalias !175 + %..i = tail call i64 @llvm.umax.i64(i64 %15, i64 16) + %.24.i = tail call i64 @llvm.umin.i64(i64 %15, i64 16) + %136 = getelementptr inbounds i8, ptr %.val11.i, i64 %..i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %136, ptr nonnull align 1 %.val11.i, i64 %.24.i, i1 false), !noalias !175 br label %144 137: ; preds = %137, %.lr.ph.i.i @@ -1036,7 +1040,7 @@ _ZN9hashbrown3raw13RawTableInner16find_insert_slot17hd5499c650fb46ed7E.exit.i: ; %exitcond.not.i = icmp eq i64 %.sroa.0.08.i, %13 br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit, label %144 -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit: ; preds = %210, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread19.i +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit: ; preds = %210, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread18.i %211 = getelementptr inbounds nuw i8, ptr %0, i64 16 %212 = sub i64 %.sroa.03.0.i, %7 store i64 %212, ptr %211, align 8, !alias.scope !175 diff --git a/bench/zxing/optimized/ODDataBarReader.ll b/bench/zxing/optimized/ODDataBarReader.ll index dc19f30af85..50b26bf48e3 100644 --- a/bench/zxing/optimized/ODDataBarReader.ll +++ b/bench/zxing/optimized/ODDataBarReader.ll @@ -897,34 +897,36 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %311, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %.not.i.i.i114 = icmp ugt i64 %309, 15 - br i1 %.not.i.i.i114, label %313, label %337 + %312 = icmp ult i64 %307, 16 + call void @llvm.assume(i1 %312) + %.not.i.i.i114 = icmp eq i64 %307, 15 + br i1 %.not.i.i.i114, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, label %337 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %312 = load i64, ptr %292, align 8, !alias.scope !60 - %.not.i.i.i114178 = icmp ugt i64 %309, %312 + %313 = load i64, ptr %292, align 8, !alias.scope !60 + %.not.i.i.i114178 = icmp ugt i64 %309, %313 br i1 %.not.i.i.i114178, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %337 -313: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i %314 = load i64, ptr %292, align 8, !alias.scope !60 - br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + br label %317 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread, %313 - %315 = phi i64 [ %312, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ %314, %313 ] - %316 = phi i64 [ %312, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ 15, %313 ] - %317 = icmp slt i64 %307, -1 - br i1 %317, label %.invoke, label %319 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread + %315 = icmp slt i64 %307, -1 + br i1 %315, label %.invoke, label %317 .invoke: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i - %318 = phi ptr [ @.str.4, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i ], [ @.str.2, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] - invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %318) #23 + %316 = phi ptr [ @.str.4, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i ], [ @.str.2, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %316) #23 to label %.cont unwind label %331 .cont: ; preds = %.invoke unreachable -319: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - %320 = shl nuw i64 %316, 1 +317: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + %318 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %313, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %319 = phi i64 [ %314, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %313, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + %320 = shl nuw i64 %318, 1 %321 = icmp ult i64 %309, %320 %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %320, i64 9223372036854775807) %.0.i = select i1 %321, i64 %spec.store.select.i.i, i64 %309 @@ -932,14 +934,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred %323 = icmp slt i64 %322, 0 br i1 %323, label %324, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i, !prof !63 -324: ; preds = %319 +324: ; preds = %317 invoke void @_ZSt17__throw_bad_allocv() #23 to label %.noexc132 unwind label %331 .noexc132: ; preds = %324 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %319 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %317 %325 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %322) #21 to label %.noexc133 unwind label %331 @@ -967,7 +969,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br label %._crit_edge.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i129: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - %330 = add i64 %315, 1 + %330 = add i64 %319, 1 call void @_ZdlPvm(ptr noundef %310, i64 noundef %330) #24 br label %._crit_edge.i From 2482eae864ef229c0bbab10f0f86ffe35d865f4b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:58:46 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/cnfPost.ll | 16 +- bench/abc/optimized/llb1Hint.ll | 74 ++++---- bench/abseil-cpp/optimized/cord_test.ll | 80 ++++----- bench/arrow/optimized/value_parsing.ll | 110 ++++++------ bench/boost/optimized/cmd_test.ll | 104 +++++------ bench/clap-rs/optimized/1zp92zvstj9lufi9.ll | 30 ++-- .../optimized/335iccg14rff9vbo.ll | 6 +- bench/darktable/optimized/Cr2Decoder.ll | 36 ++-- bench/darktable/optimized/NakedDecoder.ll | 20 +-- .../darktable/optimized/RawImageDataFloat.ll | 20 +-- bench/delta-rs/optimized/145iz0hplas008bu.ll | 46 ++--- bench/duckdb/optimized/arena.ll | 88 +++++----- bench/faiss/optimized/gtest-all.ll | 164 +++++++++--------- .../optimized/7ggr7vxi3lrn28dd77bkw6see.ll | 4 +- .../optimized/czs708r0zvy58e2j6rsq7a88i.ll | 58 +++---- .../optimized/3mkcuilt3qj76iejlx2uremig.ll | 62 +++---- .../optimized/dn9au2q3g3wlvvn47oahet6lo.ll | 96 +++++----- bench/glslang/optimized/ParseHelper.ll | 64 +++---- bench/hermes/optimized/SemanticValidator.ll | 46 ++--- .../html5ever-rs/optimized/6qwbbyxelav3qgo.ll | 66 +++---- bench/image-rs/optimized/2ndzmzcdt55acj4k.ll | 84 ++++----- bench/image-rs/optimized/5ez7udly19o3uj1p.ll | 30 ++-- bench/image-rs/optimized/ptscn4jakoj4p9m.ll | 102 +++++------ .../influxdb-rs/optimized/34vmrh0qyn6415sj.ll | 138 +++++++-------- bench/just-rs/optimized/2sotx4bdu006z307.ll | 26 +-- bench/libquic/optimized/string16.ll | 124 ++++++------- bench/lief/optimized/AArch64PAuth.ll | 92 +++++----- .../optimized/564p8f6yhi59w8h9.ll | 86 ++++----- .../mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll | 22 +-- .../mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll | 8 +- .../mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll | 74 ++++---- bench/mitsuba3/optimized/codeholder.ll | 88 +++++----- bench/mold/optimized/cmdline.cc.X86_64.ll | 40 ++--- .../optimized/msgpack_variant_mapbased.ll | 154 ++++++++-------- bench/nix/optimized/archive.ll | 26 +-- bench/nix/optimized/git.ll | 114 ++++++------ bench/nix/optimized/json-to-value.ll | 126 +++++++------- bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll | 12 +- bench/opencv/optimized/darknet_io.ll | 90 +++++----- bench/opencv/optimized/ts_gtest.ll | 140 +++++++-------- bench/php/optimized/attr.ll | 50 +++--- bench/php/optimized/node.ll | 82 ++++----- bench/php/optimized/pdo_stmt.ll | 96 +++++----- .../optimized/24oggy68gf6cx0i1vzuuyyts4.ll | 38 ++-- .../optimized/9kpxegslu0j3pb3oe28vzbz0s.ll | 10 +- .../optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll | 50 +++--- .../optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll | 6 +- .../optimized/cil91sqjm14i40hvtn93g3igf.ll | 2 +- bench/qdrant-rs/optimized/14hho85eanhsaepf.ll | 56 +++--- bench/qdrant-rs/optimized/4iacc535829shmz2.ll | 52 +++--- bench/qemu/optimized/tcg-op.ll | 58 +++---- .../optimized/2i59h3d4lts0esz5vi8utqlqr.ll | 4 +- .../optimized/a2fxvubrv6xxh830kesi8vt5v.ll | 126 +++++++------- .../optimized/97m639ujt231tug2it6j1j2tc.ll | 8 +- .../optimized/f3p3h61s9nwe4ta3vnloaej97.ll | 68 ++++---- bench/rayon-rs/optimized/1ospp3uz7h49thev.ll | 38 ++-- bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll | 82 ++++----- bench/rayon-rs/optimized/aeba4nd7ialzggy.ll | 74 ++++---- bench/redis/optimized/arena.ll | 58 +++---- bench/regex-rs/optimized/4dth5ncaqumdqgby.ll | 6 +- bench/regex-rs/optimized/4ilpqr23cw58vyva.ll | 84 ++++----- .../optimized/42urr4wi9o4ym10wn20vge60c.ll | 16 +- .../optimized/7wwgo2qmgv5jda16jk82i54eo.ll | 20 +-- .../optimized/55szrkbrq7kolv5z.ll | 10 +- .../rustfmt-rs/optimized/4gk399kploc9gcsb.ll | 14 +- .../optimized/mlftjs9t2bz2jrv.ll | 54 +++--- bench/spike/optimized/socketif.ll | 36 ++-- bench/syn/optimized/4dl8yvgrwkkcv6u.ll | 112 ++++++------ bench/syn/optimized/4llvvcm7ykus6q9g.ll | 18 +- .../optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll | 82 ++++----- bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll | 42 ++--- bench/tls-rs/optimized/526n7g8rwc65lc9b.ll | 76 ++++---- .../optimized/1w676x6x6lprwvn5.ll | 122 ++++++------- .../optimized/3yaq830kuxi6xpg5.ll | 46 ++--- .../optimized/2czk4owdq0ube9pw.ll | 20 +-- .../optimized/2xun21ofbsn7p9xn.ll | 8 +- .../optimized/42mwgpotg9phq80h.ll | 14 +- .../optimized/073xkjbb0bs34qvdns32a3q3u.ll | 112 ++++++------ .../optimized/667fw7b0fgqo2a1672jmft41u.ll | 38 ++-- .../optimized/68uz0ms18epwru7402hblucwm.ll | 66 +++---- .../wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll | 6 +- .../wasmtime-rs/optimized/4oustitdsdvnhdau.ll | 26 +-- .../wasmtime-rs/optimized/enal6epyb0tyurl.ll | 18 +- bench/wireshark/optimized/packet-agentx.ll | 74 ++++---- bench/wireshark/optimized/packet-tls-utils.ll | 8 +- bench/wireshark/optimized/proto.ll | 44 ++--- .../optimized/8prs9ypeqrggu5mcc8i3onesd.ll | 114 ++++++------ .../optimized/0pbj35jdb0n0bb6blyk493qkr.ll | 4 +- .../optimized/160h40gmjuq6w4py8cgz7ceyb.ll | 4 +- .../optimized/9zapxybzyqo7as5l1oow5wvsl.ll | 14 +- bench/zxing/optimized/ODDataBarReader.ll | 20 +-- 91 files changed, 2526 insertions(+), 2526 deletions(-) diff --git a/bench/abc/optimized/cnfPost.ll b/bench/abc/optimized/cnfPost.ll index 119b00836af..7ab916dc4db 100644 --- a/bench/abc/optimized/cnfPost.ll +++ b/bench/abc/optimized/cnfPost.ll @@ -108,7 +108,7 @@ declare noundef i32 @printf(ptr noundef readonly captures(none), ...) local_unna define void @Cnf_ManTransferCuts(ptr noundef %0) local_unnamed_addr #2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 %3 = load ptr, ptr %2, align 8, !tbaa !33 - tail call void @Aig_MmFlexRestart(ptr noundef %3) #6 + tail call void @Aig_MmFlexRestart(ptr noundef %3) #5 %4 = load ptr, ptr %0, align 8, !tbaa !3 %5 = getelementptr inbounds nuw i8, ptr %4, i64 32 %6 = load ptr, ptr %5, align 8, !tbaa !15 @@ -140,7 +140,7 @@ define void @Cnf_ManTransferCuts(ptr noundef %0) local_unnamed_addr #2 { br i1 %or.cond, label %.sink.split, label %20 20: ; preds = %14 - %21 = tail call ptr @Cnf_CutCreate(ptr noundef nonnull %0, ptr noundef nonnull %12) #6 + %21 = tail call ptr @Cnf_CutCreate(ptr noundef nonnull %0, ptr noundef nonnull %12) #5 br label %.sink.split .sink.split: ; preds = %14, %20 @@ -196,7 +196,7 @@ define void @Cnf_ManFreeCuts(ptr noundef readonly captures(none) %0) local_unnam br i1 %.not, label %17, label %16 16: ; preds = %13 - tail call void @Cnf_CutFree(ptr noundef nonnull %15) #6 + tail call void @Cnf_CutFree(ptr noundef nonnull %15) #5 store ptr null, ptr %14, align 8, !tbaa !34 %.pre = load ptr, ptr %0, align 8, !tbaa !3 br label %17 @@ -393,7 +393,7 @@ Aig_ManObj.exit93: ; preds = %63 %.val89 = load ptr, ptr %81, align 8, !tbaa !34 %82 = getelementptr inbounds nuw i8, ptr %74, i64 36 %83 = load i32, ptr %82, align 4, !tbaa !44 - %84 = tail call ptr @Cnf_CutCompose(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef %.val89, i32 noundef %83) #6 + %84 = tail call ptr @Cnf_CutCompose(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef %.val89, i32 noundef %83) #5 %cond = icmp eq ptr %84, null br i1 %cond, label %101, label %85 @@ -415,16 +415,16 @@ Aig_ManObj.exit93: ; preds = %63 br i1 %97, label %98, label %99 98: ; preds = %85, %89 - tail call void @Cnf_CutFree(ptr noundef nonnull %84) #6 + tail call void @Cnf_CutFree(ptr noundef nonnull %84) #5 br label %101 99: ; preds = %89 %100 = getelementptr i8, ptr %74, i64 40 store ptr %84, ptr %22, align 8, !tbaa !34 store ptr null, ptr %100, align 8, !tbaa !34 - tail call void @Cnf_CutUpdateRefs(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef nonnull %.val89, ptr noundef nonnull %84) #6 - tail call void @Cnf_CutFree(ptr noundef nonnull %.val87) #6 - tail call void @Cnf_CutFree(ptr noundef nonnull %.val89) #6 + tail call void @Cnf_CutUpdateRefs(ptr noundef nonnull %0, ptr noundef nonnull %.val87, ptr noundef nonnull %.val89, ptr noundef nonnull %84) #5 + tail call void @Cnf_CutFree(ptr noundef nonnull %.val87) #5 + tail call void @Cnf_CutFree(ptr noundef nonnull %.val89) #5 br label %.critedge4 101: ; preds = %80, %98, %75 diff --git a/bench/abc/optimized/llb1Hint.ll b/bench/abc/optimized/llb1Hint.ll index 18832c0916f..263b4f7f523 100644 --- a/bench/abc/optimized/llb1Hint.ll +++ b/bench/abc/optimized/llb1Hint.ll @@ -53,7 +53,7 @@ define i32 @Llb_ManMaxFanoutCi(ptr noundef readonly captures(none) %0) local_unn ; Function Attrs: nounwind uwtable define ptr @Llb_ManPerformHints(ptr noundef %0, i32 noundef %1) local_unnamed_addr #1 { - %3 = tail call ptr @Aig_ManDupDfs(ptr noundef %0) #17 + %3 = tail call ptr @Aig_ManDupDfs(ptr noundef %0) #16 %4 = icmp sgt i32 %1, 0 br i1 %4, label %.lr.ph, label %._crit_edge @@ -94,8 +94,8 @@ define ptr @Llb_ManPerformHints(ptr noundef %0, i32 noundef %1) local_unnamed_ad Llb_ManMaxFanoutCi.exit: ; preds = %10, %.lr.ph %.0.lcssa.i = phi i32 [ -1, %.lr.ph ], [ %spec.select15.i, %10 ] tail call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str, i32 noundef %.01011, i32 noundef %.0.lcssa.i) - %18 = tail call ptr @Aig_ManDupCof(ptr noundef nonnull %.012, i32 noundef %.0.lcssa.i, i32 noundef 1) #17 - tail call void @Aig_ManStop(ptr noundef nonnull %.012) #17 + %18 = tail call ptr @Aig_ManDupCof(ptr noundef nonnull %.012, i32 noundef %.0.lcssa.i, i32 noundef 1) #16 + tail call void @Aig_ManStop(ptr noundef nonnull %.012) #16 %19 = add nuw nsw i32 %.01011, 1 %exitcond.not = icmp eq i32 %19, %1 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !27 @@ -116,24 +116,24 @@ define internal void @Abc_Print(i32 %0, ptr noundef %1, ...) unnamed_addr #3 { br i1 %.not, label %18, label %5 5: ; preds = %2 - %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #17 + %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #16 call void @llvm.va_start.p0(ptr nonnull %3) - %7 = call i32 (...) @Abc_FrameIsBridgeMode() #17 + %7 = call i32 (...) @Abc_FrameIsBridgeMode() #16 %.not9 = icmp eq i32 %7, 0 br i1 %.not9, label %14, label %8 8: ; preds = %5 - %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #17 + %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #16 %10 = load ptr, ptr @stdout, align 8, !tbaa !29 - %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #18 + %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #17 %12 = trunc i64 %11 to i32 - %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef nonnull %9) #17 - call void @free(ptr noundef %9) #17 + %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef nonnull %9) #16 + call void @free(ptr noundef %9) #16 br label %17 14: ; preds = %5 %15 = load ptr, ptr @stdout, align 8, !tbaa !29, !noalias !31 - %16 = call i32 @vfprintf(ptr noundef %15, ptr noundef %1, ptr noundef nonnull %3) #17 + %16 = call i32 @vfprintf(ptr noundef %15, ptr noundef %1, ptr noundef nonnull %3) #16 br label %17 17: ; preds = %14, %8 @@ -151,11 +151,11 @@ declare void @Aig_ManStop(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define noalias noundef ptr @Llb_ManCollectHighFanoutObjects(ptr noundef readonly captures(none) %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #1 { - %4 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 + %4 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #18 %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 0, ptr %5, align 4, !tbaa !34 store i32 100, ptr %4, align 8, !tbaa !36 - %6 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #19 + %6 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #18 %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %6, ptr %7, align 8, !tbaa !37 %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -225,11 +225,11 @@ Saig_ObjIsLo.exit.thread: ; preds = %20, %Saig_ObjIsLo.e br i1 %.not9.i.i, label %37, label %35 35: ; preds = %34 - %36 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %15, i64 noundef 64) #20 + %36 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %15, i64 noundef 64) #19 br label %Vec_IntPush.exit.sink.split 37: ; preds = %34 - %38 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #19 + %38 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #18 br label %Vec_IntPush.exit.sink.split 39: ; preds = %32 @@ -240,11 +240,11 @@ Saig_ObjIsLo.exit.thread: ; preds = %20, %Saig_ObjIsLo.e br i1 %.not9.i9.i, label %45, label %43 43: ; preds = %39 - %44 = tail call ptr @realloc(ptr noundef nonnull %15, i64 noundef %42) #20 + %44 = tail call ptr @realloc(ptr noundef nonnull %15, i64 noundef %42) #19 br label %Vec_IntPush.exit.sink.split 45: ; preds = %39 - %46 = tail call noalias ptr @malloc(i64 noundef %42) #19 + %46 = tail call noalias ptr @malloc(i64 noundef %42) #18 br label %Vec_IntPush.exit.sink.split Vec_IntPush.exit.sink.split: ; preds = %43, %45, %35, %37 @@ -282,19 +282,19 @@ Vec_IntFree.exit: ; preds = %Vec_IntFree.exit.lo %.val73 = phi ptr [ %.pre.i130, %Vec_IntFree.exit.loopexit ], [ %6, %3 ] %.val72 = phi i32 [ %.val72.pre, %Vec_IntFree.exit.loopexit ], [ 0, %3 ] %55 = sext i32 %.val72 to i64 - tail call void @qsort(ptr noundef %.val73, i64 noundef %55, i64 noundef 4, ptr noundef nonnull @Vec_IntSortCompare2) #17 + tail call void @qsort(ptr noundef %.val73, i64 noundef %55, i64 noundef 4, ptr noundef nonnull @Vec_IntSortCompare2) #16 %56 = add nsw i32 %.val72, -1 %57 = tail call range(i32 -2147483648, 2147483647) i32 @llvm.smin.i32(i32 %1, i32 range(i32 -2147483648, 2147483647) %56) %58 = sext i32 %57 to i64 %59 = getelementptr inbounds i32, ptr %.val73, i64 %58 %60 = load i32, ptr %59, align 4, !tbaa !28 - tail call void @free(ptr noundef nonnull %.val73) #17 - tail call void @free(ptr noundef nonnull %4) #17 - %61 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 + tail call void @free(ptr noundef nonnull %.val73) #16 + tail call void @free(ptr noundef nonnull %4) #16 + %61 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #18 %62 = getelementptr inbounds nuw i8, ptr %61, i64 4 store i32 0, ptr %62, align 4, !tbaa !34 store i32 100, ptr %61, align 8, !tbaa !36 - %63 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #19 + %63 = tail call noalias dereferenceable_or_null(400) ptr @malloc(i64 noundef 400) #18 %64 = getelementptr inbounds nuw i8, ptr %61, i64 8 store ptr %63, ptr %64, align 8, !tbaa !37 %65 = load ptr, ptr %8, align 8, !tbaa !38 @@ -426,11 +426,11 @@ Saig_ObjIsLo.exit91.thread: ; preds = %99, %Saig_ObjIsLo.e br i1 %.not9.i.i97, label %119, label %117 117: ; preds = %116 - %118 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %94, i64 noundef 64) #20 + %118 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %94, i64 noundef 64) #19 br label %Vec_IntPush.exit99.sink.split 119: ; preds = %116 - %120 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #19 + %120 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #18 br label %Vec_IntPush.exit99.sink.split 121: ; preds = %114 @@ -441,11 +441,11 @@ Saig_ObjIsLo.exit91.thread: ; preds = %99, %Saig_ObjIsLo.e br i1 %.not9.i9.i96, label %127, label %125 125: ; preds = %121 - %126 = tail call ptr @realloc(ptr noundef nonnull %94, i64 noundef %124) #20 + %126 = tail call ptr @realloc(ptr noundef nonnull %94, i64 noundef %124) #19 br label %Vec_IntPush.exit99.sink.split 127: ; preds = %121 - %128 = tail call noalias ptr @malloc(i64 noundef %124) #19 + %128 = tail call noalias ptr @malloc(i64 noundef %124) #18 br label %Vec_IntPush.exit99.sink.split Vec_IntPush.exit99.sink.split: ; preds = %125, %127, %117, %119 @@ -487,7 +487,7 @@ define i32 @Llb_ManModelCheckAigWithHints(ptr noundef %0, ptr noundef %1) local_ call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr null, ptr %5, align 8, !tbaa !46 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %6 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #17 + %6 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #16 %7 = icmp slt i32 %6, 0 br i1 %7, label %Abc_Clock.exit, label %8 @@ -513,7 +513,7 @@ Abc_Clock.exit: ; preds = %2, %8 %.val41 = load ptr, ptr %18, align 8, !tbaa !38 %19 = getelementptr i8, ptr %.val41, i64 4 %.val41.val = load i32, ptr %19, align 4, !tbaa !21 - %20 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 + %20 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #18 %21 = add i32 %.val41.val, -1 %or.cond.i.i = icmp ult i32 %21, 15 %spec.store.select.i.i = select i1 %or.cond.i.i, i32 16, i32 %.val41.val @@ -531,7 +531,7 @@ Vec_IntAlloc.exit.thread.i: ; preds = %Abc_Clock.exit Vec_IntAlloc.exit.i: ; preds = %Abc_Clock.exit %24 = sext i32 %spec.store.select.i.i to i64 %25 = shl nsw i64 %24, 2 - %26 = call noalias ptr @malloc(i64 noundef %25) #19 + %26 = call noalias ptr @malloc(i64 noundef %25) #18 %27 = getelementptr inbounds nuw i8, ptr %20, i64 8 store ptr %26, ptr %27, align 8, !tbaa !37 store i32 %.val41.val, ptr %22, align 4, !tbaa !34 @@ -566,7 +566,7 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t %40 = sext i32 %39 to i64 %41 = getelementptr inbounds i32, ptr %.val40, i64 %40 store i32 1, ptr %41, align 4, !tbaa !28 - %42 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #17 + %42 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #16 switch i32 %42, label %43 [ i32 0, label %.loopexit i32 1, label %.preheader.loopexit @@ -614,7 +614,7 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t %56 = sext i32 %55 to i64 %57 = getelementptr inbounds i32, ptr %.val39, i64 %56 store i32 -1, ptr %57, align 4, !tbaa !28 - %58 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #17 + %58 = call i32 @Llb_ManModelCheckAig(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %20, ptr noundef nonnull %5) #16 %59 = icmp eq i32 %58, 1 br i1 %59, label %50, label %.loopexit @@ -631,13 +631,13 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t br i1 %.not35, label %65, label %64 64: ; preds = %61 - call void @Cudd_RecursiveDeref(ptr noundef nonnull %60, ptr noundef nonnull %63) #17 + call void @Cudd_RecursiveDeref(ptr noundef nonnull %60, ptr noundef nonnull %63) #16 %.pre = load ptr, ptr %5, align 8, !tbaa !46 br label %65 65: ; preds = %64, %61 %66 = phi ptr [ %.pre, %64 ], [ %60, %61 ] - call void @Extra_StopManager(ptr noundef %66) #17 + call void @Extra_StopManager(ptr noundef %66) #16 br label %67 67: ; preds = %.loopexit, %65 @@ -647,22 +647,22 @@ Vec_IntStartFull.exit: ; preds = %Vec_IntAlloc.exit.t br i1 %.not.i42, label %70, label %.thread.i .thread.i: ; preds = %67 - call void @free(ptr noundef nonnull %69) #17 + call void @free(ptr noundef nonnull %69) #16 br label %70 70: ; preds = %.thread.i, %67 - call void @free(ptr noundef nonnull %17) #17 + call void @free(ptr noundef nonnull %17) #16 %71 = getelementptr inbounds nuw i8, ptr %20, i64 8 %72 = load ptr, ptr %71, align 8, !tbaa !37 %.not.i43 = icmp eq ptr %72, null br i1 %.not.i43, label %Vec_IntFreeP.exit45, label %.thread.i44 .thread.i44: ; preds = %70 - call void @free(ptr noundef nonnull %72) #17 + call void @free(ptr noundef nonnull %72) #16 br label %Vec_IntFreeP.exit45 Vec_IntFreeP.exit45: ; preds = %70, %.thread.i44 - call void @free(ptr noundef nonnull %20) #17 + call void @free(ptr noundef nonnull %20) #16 %73 = getelementptr inbounds nuw i8, ptr %1, i64 64 %74 = load i32, ptr %73, align 8, !tbaa !69 %.not36 = icmp eq i32 %74, 0 @@ -670,7 +670,7 @@ Vec_IntFreeP.exit45: ; preds = %70, %.thread.i44 75: ; preds = %Vec_IntFreeP.exit45 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %76 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #17 + %76 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #16 %77 = icmp slt i32 %76, 0 br i1 %77, label %Abc_Clock.exit47, label %78 diff --git a/bench/abseil-cpp/optimized/cord_test.ll b/bench/abseil-cpp/optimized/cord_test.ll index 5e3af665faa..a77afbeff1f 100644 --- a/bench/abseil-cpp/optimized/cord_test.ll +++ b/bench/abseil-cpp/optimized/cord_test.ll @@ -59420,62 +59420,62 @@ _ZN4absl12log_internal10LogMessagelsILi20EEERS1_RAT__Kc.exit: ; preds = %14 %29 = getelementptr inbounds nuw i8, ptr %.0.i23, i64 8 %30 = atomicrmw add ptr %29, i32 2 monotonic, align 4 %or.cond.i = icmp ult i8 %27, 5 - br i1 %or.cond.i, label %31, label %32, !prof !858 + br i1 %or.cond.i, label %30, label %31, !prof !858 -31: ; preds = %26 +30: ; preds = %26 invoke void @_ZN4absl13cord_internal16LogFatalNodeTypeEPNS0_7CordRepE(ptr noundef nonnull %.0.i23) #40 - to label %.noexc unwind label %47 + to label %.noexc unwind label %46 -.noexc: ; preds = %31 +.noexc: ; preds = %30 unreachable -32: ; preds = %26 - %33 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #42 - to label %34 unwind label %47 +31: ; preds = %26 + %32 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #42 + to label %34 unwind label %46 -34: ; preds = %32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %33, i8 0, i64 16, i1 false) - %35 = getelementptr inbounds nuw i8, ptr %33, i64 8 - store i32 2, ptr %35, align 4, !tbaa !94 - store i64 %3, ptr %33, align 8, !tbaa !119 - %36 = getelementptr inbounds nuw i8, ptr %33, i64 12 - store i8 1, ptr %36, align 4, !tbaa !96 - %37 = getelementptr inbounds nuw i8, ptr %33, i64 16 - store i64 %2, ptr %37, align 8, !tbaa !859 - %38 = getelementptr inbounds nuw i8, ptr %33, i64 24 - store ptr %.0.i23, ptr %38, align 8, !tbaa !861 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %33, ptr %39, align 8, !tbaa !24 +33: ; preds = %31 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %32, i8 0, i64 16, i1 false) + %34 = getelementptr inbounds nuw i8, ptr %32, i64 8 + store i32 2, ptr %34, align 4, !tbaa !94 + store i64 %3, ptr %32, align 8, !tbaa !119 + %35 = getelementptr inbounds nuw i8, ptr %32, i64 12 + store i8 1, ptr %35, align 4, !tbaa !96 + %36 = getelementptr inbounds nuw i8, ptr %32, i64 16 + store i64 %2, ptr %36, align 8, !tbaa !859 + %37 = getelementptr inbounds nuw i8, ptr %32, i64 24 + store ptr %.0.i23, ptr %37, align 8, !tbaa !861 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %32, ptr %38, align 8, !tbaa !24 store i64 1, ptr %0, align 8, !tbaa !24 - %40 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN4absl13cord_internal17cordz_next_sampleE) - %41 = load i64, ptr %40, align 8, !tbaa !115 - %42 = icmp sgt i64 %41, 1 - br i1 %42, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, !prof !117 - -_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i: ; preds = %34 - %43 = add nsw i64 %41, -1 - store i64 %43, ptr %40, align 8, !tbaa !115 + %39 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN4absl13cord_internal17cordz_next_sampleE) + %40 = load i64, ptr %39, align 8, !tbaa !115 + %41 = icmp sgt i64 %40, 1 + br i1 %41, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, label %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, !prof !117 + +_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i: ; preds = %33 + %42 = add nsw i64 %40, -1 + store i64 %42, ptr %39, align 8, !tbaa !115 br label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit -_ZN4absl13cord_internal20cordz_should_profileEv.exit.i: ; preds = %34 - %44 = invoke noundef i64 @_ZN4absl13cord_internal25cordz_should_profile_slowERNS0_13SamplingStateE(ptr noundef nonnull align 8 dereferenceable(16) %40) - to label %.noexc25 unwind label %47 +_ZN4absl13cord_internal20cordz_should_profileEv.exit.i: ; preds = %33 + %43 = invoke noundef i64 @_ZN4absl13cord_internal25cordz_should_profile_slowERNS0_13SamplingStateE(ptr noundef nonnull align 8 dereferenceable(16) %39) + to label %.noexc25 unwind label %46 .noexc25: ; preds = %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i - %45 = icmp sgt i64 %44, 0 - br i1 %45, label %46, label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit, !prof !118 + %44 = icmp sgt i64 %43, 0 + br i1 %44, label %45, label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit, !prof !118 -46: ; preds = %.noexc25 - invoke void @_ZN4absl13cord_internal9CordzInfo9TrackCordERNS0_10InlineDataENS0_18CordzUpdateTracker16MethodIdentifierEl(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 24, i64 noundef %44) - to label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit unwind label %47 +45: ; preds = %.noexc25 + invoke void @_ZN4absl13cord_internal9CordzInfo9TrackCordERNS0_10InlineDataENS0_18CordzUpdateTracker16MethodIdentifierEl(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef 24, i64 noundef %43) + to label %_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit unwind label %46 -47: ; preds = %46, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, %32, %31 - %48 = landingpad { ptr, i32 } +46: ; preds = %45, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.i, %31, %30 + %47 = landingpad { ptr, i32 } cleanup tail call void @_ZN4absl4CordD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #41 - resume { ptr, i32 } %48 + resume { ptr, i32 } %47 -_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit: ; preds = %.noexc25, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, %46 +_ZN4absl4Cord9InlineRep11EmplaceTreeEPNS_13cord_internal7CordRepENS2_18CordzUpdateTracker16MethodIdentifierE.exit: ; preds = %.noexc25, %_ZN4absl13cord_internal20cordz_should_profileEv.exit.thread.i, %45 ret void } diff --git a/bench/arrow/optimized/value_parsing.ll b/bench/arrow/optimized/value_parsing.ll index 2491fecd6f7..82a693d2123 100644 --- a/bench/arrow/optimized/value_parsing.ll +++ b/bench/arrow/optimized/value_parsing.ll @@ -1809,9 +1809,9 @@ define void @_ZN5arrow15TimestampParser12MakeStrptimeENSt7__cxx1112basic_stringI br i1 %11, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i: ; preds = %2 - %12 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %13 = load i64, ptr %12, align 8, !tbaa !56, !noalias !44 - %14 = icmp ult i64 %13, 16 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %14 = load i64, ptr %13, align 8, !tbaa !56, !noalias !44 + %14 = icmp ult i64 %14, 16 tail call void @llvm.assume(i1 %14) %15 = add nuw nsw i64 %13, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %8, ptr noundef nonnull align 8 dereferenceable(1) %10, i64 %15, i1 false), !noalias !44 @@ -1819,14 +1819,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i store i64 0, ptr %12, align 8, !tbaa !56, !noalias !44 store i8 0, ptr %10, align 8, !tbaa !6, !noalias !44 store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserE, i64 16), ptr %7, align 8, !tbaa !51, !noalias !44 - %17 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %18 = getelementptr inbounds nuw i8, ptr %4, i64 40 - store ptr %18, ptr %17, align 8, !tbaa !57, !noalias !44 - br label %24 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %17 = getelementptr inbounds nuw i8, ptr %4, i64 40 + store ptr %17, ptr %16, align 8, !tbaa !57, !noalias !44 + br label %22 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i: ; preds = %2 - %19 = load i64, ptr %10, align 8, !tbaa !6, !noalias !44 - store i64 %19, ptr %8, align 8, !tbaa !6, !noalias !44 + %18 = load i64, ptr %10, align 8, !tbaa !6, !noalias !44 + store i64 %18, ptr %8, align 8, !tbaa !6, !noalias !44 %.phi.trans.insert.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %.pre.i.i.i.i.i.i.i = load i64, ptr %.phi.trans.insert.i.i.i.i.i.i.i, align 8, !tbaa !56, !noalias !44 %20 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -1834,78 +1834,78 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i: store i64 0, ptr %.phi.trans.insert.i.i.i.i.i.i.i, align 8, !tbaa !56, !noalias !44 store i8 0, ptr %10, align 8, !tbaa !6, !noalias !44 store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTVN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserE, i64 16), ptr %7, align 8, !tbaa !51, !noalias !44 - %21 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %22 = getelementptr inbounds nuw i8, ptr %4, i64 40 - store ptr %22, ptr %21, align 8, !tbaa !57, !noalias !44 - %23 = icmp eq ptr %9, %8 - br i1 %23, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i + %19 = getelementptr inbounds nuw i8, ptr %4, i64 24 + %20 = getelementptr inbounds nuw i8, ptr %4, i64 40 + store ptr %20, ptr %19, align 8, !tbaa !57, !noalias !44 + %21 = icmp eq ptr %9, %8 + br i1 %21, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i %.pre.i.i.i.i.i.i = add nuw nsw i64 %.pre.i.i.i.i.i.i.i, 1 - br label %24 + br label %22 -24: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i +22: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i %.pre-phi.i.i.i.i.i.i = phi i64 [ %.pre.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] - %25 = phi ptr [ %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %18, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] - %26 = phi ptr [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %16, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] - %27 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %13, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] + %23 = phi ptr [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %17, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] + %24 = phi ptr [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %16, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] + %27 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i._crit_edge.i.i.i.i.i.i ], [ %14, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.thread.i.i.i.i.i.i ] %28 = icmp ult i64 %27, 16 call void @llvm.assume(i1 %28) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %25, ptr noundef nonnull align 8 dereferenceable(1) %8, i64 %.pre-phi.i.i.i.i.i.i, i1 false), !noalias !44 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i - store ptr %9, ptr %21, align 8, !tbaa !53, !noalias !44 - store i64 %19, ptr %22, align 8, !tbaa !6, !noalias !44 + store ptr %9, ptr %19, align 8, !tbaa !53, !noalias !44 + store i64 %18, ptr %20, align 8, !tbaa !6, !noalias !44 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i, %24 - %29 = phi ptr [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %26, %24 ] - %30 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %27, %24 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i, %22 + %26 = phi ptr [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %24, %24 ] + %27 = phi i64 [ %.pre.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %27, %24 ] %31 = phi ptr [ %9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i.i.i.i.i ], [ %25, %24 ] %32 = getelementptr inbounds nuw i8, ptr %4, i64 32 store i64 %30, ptr %32, align 8, !tbaa !56, !noalias !44 store ptr %8, ptr %3, align 8, !tbaa !53, !noalias !44 store i64 0, ptr %29, align 8, !tbaa !56, !noalias !44 store i8 0, ptr %8, align 8, !tbaa !6, !noalias !44 - %33 = getelementptr inbounds nuw i8, ptr %4, i64 56 - store i8 0, ptr %33, align 8, !tbaa !58, !noalias !44 - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %30, 0 + %29 = getelementptr inbounds nuw i8, ptr %4, i64 56 + store i8 0, ptr %29, align 8, !tbaa !58, !noalias !44 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %27, 0 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, label %.lr.ph.i.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i, %45 - %.07.i.i.i.i.i.i.i.i = phi i64 [ %46, %45 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i ] - %34 = getelementptr inbounds nuw i8, ptr %31, i64 %.07.i.i.i.i.i.i.i.i - %35 = load i8, ptr %34, align 1, !tbaa !6, !noalias !44 - %36 = icmp eq i8 %35, 37 - br i1 %36, label %37, label %45 - -37: ; preds = %.lr.ph.i.i.i.i.i.i.i.i - %38 = add nuw i64 %.07.i.i.i.i.i.i.i.i, 1 - %39 = icmp ult i64 %38, %30 - br i1 %39, label %40, label %45 - -40: ; preds = %37 - %41 = getelementptr inbounds nuw i8, ptr %31, i64 %38 - %42 = load i8, ptr %41, align 1, !tbaa !6, !noalias !44 - %43 = icmp eq i8 %42, 122 - br i1 %43, label %44, label %45 - -44: ; preds = %40 - store i8 1, ptr %33, align 8, !tbaa !58, !noalias !44 +.lr.ph.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i, %41 + %.07.i.i.i.i.i.i.i.i = phi i64 [ %42, %45 ], [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i ] + %30 = getelementptr inbounds nuw i8, ptr %31, i64 %.07.i.i.i.i.i.i.i.i + %31 = load i8, ptr %30, align 1, !tbaa !6, !noalias !44 + %32 = icmp eq i8 %31, 37 + br i1 %32, label %33, label %41 + +33: ; preds = %.lr.ph.i.i.i.i.i.i.i.i + %34 = add nuw i64 %.07.i.i.i.i.i.i.i.i, 1 + %35 = icmp ult i64 %34, %27 + br i1 %35, label %36, label %41 + +36: ; preds = %33 + %37 = getelementptr inbounds nuw i8, ptr %31, i64 %34 + %38 = load i8, ptr %37, align 1, !tbaa !6, !noalias !44 + %39 = icmp eq i8 %38, 122 + br i1 %39, label %40, label %41 + +40: ; preds = %36 + store i8 1, ptr %29, align 8, !tbaa !58, !noalias !44 br label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit -45: ; preds = %40, %37, %.lr.ph.i.i.i.i.i.i.i.i - %.1.i.i.i.i.i.i.i.i = phi i64 [ %.07.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %38, %40 ], [ %38, %37 ] - %46 = add i64 %.1.i.i.i.i.i.i.i.i, 1 - %47 = icmp ult i64 %46, %30 - br i1 %47, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, !llvm.loop !61 +41: ; preds = %36, %33, %.lr.ph.i.i.i.i.i.i.i.i + %.1.i.i.i.i.i.i.i.i = phi i64 [ %.07.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %34, %40 ], [ %34, %37 ] + %42 = add i64 %.1.i.i.i.i.i.i.i.i, 1 + %43 = icmp ult i64 %42, %27 + br i1 %43, label %.lr.ph.i.i.i.i.i.i.i.i, label %_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit, !llvm.loop !61 -_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; preds = %45, %44, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i +_ZNSt12__shared_ptrIN5arrow8internal12_GLOBAL__N_123StrptimeTimestampParserELN9__gnu_cxx12_Lock_policyE2EED2Ev.exit: ; preds = %41, %40, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_.exit.i.i.i.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !44 store ptr %7, ptr %0, align 8, !tbaa !62 - %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %4, ptr %48, align 8, !tbaa !67 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %4, ptr %44, align 8, !tbaa !67 ret void } diff --git a/bench/boost/optimized/cmd_test.ll b/bench/boost/optimized/cmd_test.ll index 7a1541cf0d8..d36c08014d7 100644 --- a/bench/boost/optimized/cmd_test.ll +++ b/bench/boost/optimized/cmd_test.ll @@ -137394,10 +137394,10 @@ define linkonce_odr hidden void @_ZNK5boost9iterators6detail20iterator_facade_ba br i1 %33, label %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread, label %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit _ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread: ; preds = %26 - %34 = load i64, ptr %15, align 8, !tbaa !11, !noalias !2567 - %35 = icmp ult i64 %34, 16 + %39 = load i64, ptr %15, align 8, !tbaa !11, !noalias !2567 + %35 = icmp ult i64 %39, 16 call void @llvm.assume(i1 %35) - %36 = add nuw nsw i64 %34, 1 + %36 = add nuw nsw i64 %39, 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %14, i64 %36, i1 false) %37 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i, i64 1 %38 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -137411,13 +137411,13 @@ _ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7p %41 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %41, ptr %0, align 8, !tbaa !92, !alias.scope !2570 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !2570 - store i64 %34, ptr %3, align 8, !tbaa !93, !noalias !2570 + store i64 %39, ptr %3, align 8, !tbaa !93, !noalias !2570 br label %._crit_edge.i.i.i.i.i.i2 _ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit: ; preds = %26 store ptr %32, ptr %6, align 8, !tbaa !4, !alias.scope !2567 - %42 = load i64, ptr %14, align 8, !tbaa !24, !noalias !2567 - store i64 %42, ptr %31, align 8, !tbaa !24, !alias.scope !2567 + %41 = load i64, ptr %14, align 8, !tbaa !24, !noalias !2567 + store i64 %41, ptr %31, align 8, !tbaa !24, !alias.scope !2567 %.pre.i.i.i.i = load i64, ptr %15, align 8, !tbaa !11, !noalias !2567 %43 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i, i64 1 %44 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -137432,78 +137432,78 @@ _ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7p store ptr %47, ptr %0, align 8, !tbaa !92, !alias.scope !2573 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !2573 store i64 %.pre.i.i.i.i, ptr %3, align 8, !tbaa !93, !noalias !2573 - %48 = icmp ugt i64 %.pre.i.i.i.i, 15 - br i1 %48, label %.noexc.i.i.i.i.i3, label %._crit_edge.i.i.i.i.i.i2 + %42 = icmp ugt i64 %.pre.i.i.i.i, 15 + br i1 %42, label %.noexc.i.i.i.i.i3, label %._crit_edge.i.i.i.i.i.i2 .noexc.i.i.i.i.i3: ; preds = %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit - %49 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - to label %.noexc unwind label %68 + %43 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + to label %.noexc unwind label %61 .noexc: ; preds = %.noexc.i.i.i.i.i3 - store ptr %49, ptr %0, align 8, !tbaa !4, !alias.scope !2573 - %50 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 - store i64 %50, ptr %47, align 8, !tbaa !24, !alias.scope !2573 + store ptr %43, ptr %0, align 8, !tbaa !4, !alias.scope !2573 + %44 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 + store i64 %44, ptr %47, align 8, !tbaa !24, !alias.scope !2573 br label %._crit_edge.i.i.i.i.i.i2 ._crit_edge.i.i.i.i.i.i2: ; preds = %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread, %.noexc, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit - %51 = phi ptr [ %45, %.noexc ], [ %45, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %39, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] - %52 = phi i64 [ %.pre.i.i.i.i, %.noexc ], [ %.pre.i.i.i.i, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %34, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] - %53 = phi ptr [ %32, %.noexc ], [ %32, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %31, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + %45 = phi ptr [ %45, %.noexc ], [ %45, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %39, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + %46 = phi i64 [ %.pre.i.i.i.i, %.noexc ], [ %.pre.i.i.i.i, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %34, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] + %47 = phi ptr [ %32, %.noexc ], [ %32, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %31, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] %54 = phi ptr [ %49, %.noexc ], [ %47, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit ], [ %41, %_ZNK5boost9iterators6detail20iterator_facade_baseINS0_18transform_iteratorINS_7process2v16detail10make_entryIcNS5_22basic_environment_implIcNS6_5posix23native_environment_implEEEEEPPcNS6_5entryIcSB_EESG_EESG_NS0_27random_access_traversal_tagESG_lLb0ELb0EEdeEv.exit.thread ] switch i64 %52, label %57 [ i64 1, label %55 i64 0, label %58 ] -55: ; preds = %._crit_edge.i.i.i.i.i.i2 - %56 = load i8, ptr %53, align 1, !tbaa !24 - store i8 %56, ptr %54, align 1, !tbaa !24 - br label %58 +48: ; preds = %._crit_edge.i.i.i.i.i.i2 + %49 = load i8, ptr %47, align 1, !tbaa !24 + store i8 %49, ptr %54, align 1, !tbaa !24 + br label %51 -57: ; preds = %._crit_edge.i.i.i.i.i.i2 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %54, ptr align 1 %53, i64 %52, i1 false) - br label %58 +50: ; preds = %._crit_edge.i.i.i.i.i.i2 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %54, ptr align 1 %47, i64 %52, i1 false) + br label %51 -58: ; preds = %57, %55, %._crit_edge.i.i.i.i.i.i2 - %59 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %59, ptr %60, align 8, !tbaa !11, !alias.scope !2573 - %61 = load ptr, ptr %0, align 8, !tbaa !4, !alias.scope !2573 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 %59 - store i8 0, ptr %62, align 1, !tbaa !24 +51: ; preds = %50, %48, %._crit_edge.i.i.i.i.i.i2 + %52 = load i64, ptr %3, align 8, !tbaa !93, !noalias !2573 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %52, ptr %53, align 8, !tbaa !11, !alias.scope !2573 + %54 = load ptr, ptr %0, align 8, !tbaa !4, !alias.scope !2573 + %55 = getelementptr inbounds nuw i8, ptr %54, i64 %52 + store i8 0, ptr %55, align 1, !tbaa !24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !2573 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 32 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %51, i64 16, i1 false) - %64 = load ptr, ptr %6, align 8, !tbaa !4 - %65 = icmp eq ptr %64, %31 - br i1 %65, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %58 - %66 = load i64, ptr %31, align 8, !tbaa !24 - %67 = add i64 %66, 1 - call void @_ZdlPvm(ptr noundef %64, i64 noundef %67) #61 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 8 dereferenceable(16) %51, i64 16, i1 false) + %57 = load ptr, ptr %6, align 8, !tbaa !4 + %58 = icmp eq ptr %57, %31 + br i1 %58, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %51 + %59 = load i64, ptr %31, align 8, !tbaa !24 + %60 = add i64 %59, 1 + call void @_ZdlPvm(ptr noundef %57, i64 noundef %60) #61 br label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit -_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit: ; preds = %58, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i +_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit: ; preds = %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %6) ret void -68: ; preds = %.noexc.i.i.i.i.i3 - %69 = landingpad { ptr, i32 } +61: ; preds = %.noexc.i.i.i.i.i3 + %62 = landingpad { ptr, i32 } cleanup - %70 = load ptr, ptr %6, align 8, !tbaa !4 - %71 = icmp eq ptr %70, %31 - br i1 %71, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 + %63 = load ptr, ptr %6, align 8, !tbaa !4 + %64 = icmp eq ptr %63, %31 + br i1 %64, label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4: ; preds = %68 - %72 = load i64, ptr %31, align 8, !tbaa !24 - %73 = add i64 %72, 1 - call void @_ZdlPvm(ptr noundef %70, i64 noundef %73) #61 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4: ; preds = %61 + %65 = load i64, ptr %31, align 8, !tbaa !24 + %66 = add i64 %65, 1 + call void @_ZdlPvm(ptr noundef %63, i64 noundef %66) #61 br label %_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6 -_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6: ; preds = %68, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 +_ZN5boost7process2v16detail11const_entryIcNS1_22basic_environment_implIcNS2_5posix23native_environment_implEEEED2Ev.exit6: ; preds = %61, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i4 call void @llvm.lifetime.end.p0(ptr nonnull %6) - resume { ptr, i32 } %69 + resume { ptr, i32 } %62 } ; Function Attrs: inlinehint mustprogress uwtable diff --git a/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll b/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll index cc542540317..152ef08b6b8 100644 --- a/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll +++ b/bench/clap-rs/optimized/1zp92zvstj9lufi9.ll @@ -6984,8 +6984,8 @@ define internal fastcc void @"_ZN4core3ptr168drop_in_place$LT$alloc..boxed..Box$ cleanup %5 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %5) - %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %7 = load i64, ptr %6, align 8, !range !923, !invariant.load !28 + %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %8 = load i64, ptr %7, align 8, !range !923, !invariant.load !28 %8 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 %9 = load i64, ptr %8, align 8, !range !924, !invariant.load !28 %10 = icmp ult i64 %9, -9223372036854775807 @@ -6997,21 +6997,21 @@ define internal fastcc void @"_ZN4core3ptr168drop_in_place$LT$alloc..boxed..Box$ tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %7, i64 noundef range(i64 0, -9223372036854775807) %9) #24 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit" -12: ; preds = %0 - %13 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %14 = load i64, ptr %13, align 8, !range !923, !invariant.load !28 - %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %16 = load i64, ptr %15, align 8, !range !924, !invariant.load !28 - %17 = icmp ult i64 %16, -9223372036854775807 - tail call void @llvm.assume(i1 %17) - %18 = icmp eq i64 %14, 0 - br i1 %18, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4": ; preds = %12 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %14, i64 noundef range(i64 0, -9223372036854775807) %16) #24 +11: ; preds = %0 + %12 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %13 = load i64, ptr %12, align 8, !range !923, !invariant.load !28 + %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %15 = load i64, ptr %14, align 8, !range !924, !invariant.load !28 + %16 = icmp ult i64 %15, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp eq i64 %13, 0 + br i1 %17, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4": ; preds = %11 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %13, i64 noundef range(i64 0, -9223372036854775807) %15) #24 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5": ; preds = %12, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit5": ; preds = %11, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i4" ret void "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6de30c24fa805bafE.exit": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit.i", %3 diff --git a/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll b/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll index 92a2c100e6c..40646aa39f4 100644 --- a/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll +++ b/bench/coreutils-rs/optimized/335iccg14rff9vbo.ll @@ -32,7 +32,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr42drop_in_place$LT$uu_nl..NumberingStyle$GT$17hd8c2d2a9d41db602E"(i64 %.0.val, ptr %.8.val) unnamed_addr #0 personality ptr @rust_eh_personality { %1 = icmp eq i64 %.0.val, 3 - br i1 %1, label %2, label %18 + br i1 %1, label %2, label %17 2: ; preds = %0 invoke void @"_ZN4core3ptr55drop_in_place$LT$regex_automata..meta..regex..Regex$GT$17he4df1cc7465925b6E.llvm.11599604617220858543"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.8.val) @@ -82,9 +82,9 @@ define internal fastcc void @"_ZN4core3ptr42drop_in_place$LT$uu_nl..NumberingSty "_ZN4core3ptr73drop_in_place$LT$alloc..boxed..Box$LT$regex..regex..string..Regex$GT$$GT$17h649688b096eaab77E.exit": ; preds = %6, %.noexc.i tail call void @__rust_dealloc(ptr noundef nonnull %.8.val, i64 noundef 32, i64 noundef 8) #12 - br label %18 + br label %17 -18: ; preds = %0, %"_ZN4core3ptr73drop_in_place$LT$alloc..boxed..Box$LT$regex..regex..string..Regex$GT$$GT$17h649688b096eaab77E.exit" +17: ; preds = %0, %"_ZN4core3ptr73drop_in_place$LT$alloc..boxed..Box$LT$regex..regex..string..Regex$GT$$GT$17h649688b096eaab77E.exit" ret void } diff --git a/bench/darktable/optimized/Cr2Decoder.ll b/bench/darktable/optimized/Cr2Decoder.ll index b7cc9a1a572..7a1f68f6ba1 100644 --- a/bench/darktable/optimized/Cr2Decoder.ll +++ b/bench/darktable/optimized/Cr2Decoder.ll @@ -2231,7 +2231,7 @@ define hidden noundef zeroext i1 @_ZNK8rawspeed10Cr2Decoder20decodeCanonColorDat %3 = load ptr, ptr %2, align 8, !tbaa !16 %4 = tail call noundef ptr @_ZNK8rawspeed7TiffIFD17getEntryRecursiveENS_7TiffTagE(ptr noundef nonnull align 8 dereferenceable(104) %3, i16 noundef zeroext 16385) #30 %.not = icmp eq ptr %4, null - br i1 %.not, label %90, label %5 + br i1 %.not, label %88, label %5 5: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.083) @@ -2458,7 +2458,7 @@ _ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_O %67 = getelementptr inbounds nuw i8, ptr %0, i64 104 %68 = load i32, ptr %67, align 8, !tbaa !64 %69 = icmp slt i32 %68, 14 - br i1 %69, label %77, label %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 + br i1 %69, label %76, label %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 70: ; preds = %_ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_OS6_.exit, %70 %indvars.iv = phi i64 [ 0, %_ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_OS6_.exit ], [ %indvars.iv.next, %70 ] @@ -2474,15 +2474,15 @@ _ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_O %.not32 = icmp eq i64 %indvars.iv.next, 4 br i1 %.not32, label %66, label %70, !llvm.loop !232 -77: ; preds = %66 - %78 = sub nsw i32 14, %68 +76: ; preds = %66 + %77 = sub nsw i32 14, %68 %.not.i = icmp ne i8 %23, 4 - %79 = and i64 %.sroa.083.4..sroa.083.4..sroa.083.4..sroa.083.4..sroa.681.0.copyload, 8589934591 - %80 = icmp ne i64 %79, 8589934589 - %81 = select i1 %.not.i, i1 true, i1 %80 - br i1 %81, label %.preheader, label %.loopexit + %78 = and i64 %.sroa.083.4..sroa.083.4..sroa.083.4..sroa.083.4..sroa.681.0.copyload, 8589934591 + %79 = icmp ne i64 %78, 8589934589 + %80 = select i1 %.not.i, i1 true, i1 %79 + br i1 %80, label %.preheader, label %.loopexit -.preheader: ; preds = %77, %.preheader +.preheader: ; preds = %76, %.preheader %indvars.iv116 = phi i64 [ %indvars.iv.next117, %.preheader ], [ 0, %77 ] %82 = icmp samesign ult i64 %indvars.iv116, 4 tail call void @llvm.assume(i1 %82) @@ -2494,22 +2494,22 @@ _ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_O %.not33 = icmp eq i64 %indvars.iv.next117, 4 br i1 %.not33, label %.loopexit, label %.preheader, !llvm.loop !233 -.loopexit: ; preds = %.preheader, %77 - %86 = load ptr, ptr %27, align 8, !tbaa !33 - %87 = getelementptr inbounds nuw i8, ptr %86, i64 160 - %88 = load i32, ptr %87, align 4, !tbaa !113 - %89 = ashr i32 %88, %78 - %.sroa.0.0.insert.ext.i = zext i32 %89 to i64 +.loopexit: ; preds = %.preheader, %76 + %84 = load ptr, ptr %27, align 8, !tbaa !33 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 160 + %86 = load i32, ptr %85, align 4, !tbaa !113 + %87 = ashr i32 %86, %77 + %.sroa.0.0.insert.ext.i = zext i32 %87 to i64 %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.0.0.insert.ext.i, 4294967296 - store i64 %.sroa.0.0.insert.insert.i, ptr %87, align 4 + store i64 %.sroa.0.0.insert.insert.i, ptr %85, align 4 br label %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 _ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107: ; preds = %.loopexit, %66, %40, %40, %switch.lookup, %switch.lookup, %switch.lookup, %_ZN8rawspeed12_GLOBAL__N_121deduceColorDataFormatEPKNS_9TiffEntryE.exit %.1 = phi i1 [ false, %_ZN8rawspeed12_GLOBAL__N_121deduceColorDataFormatEPKNS_9TiffEntryE.exit ], [ true, %66 ], [ true, %.loopexit ], [ false, %40 ], [ false, %40 ], [ false, %switch.lookup ], [ false, %switch.lookup ], [ false, %switch.lookup ] call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.083) - br label %90 + br label %88 -90: ; preds = %1, %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 +88: ; preds = %1, %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 %.028 = phi i1 [ %.1, %_ZN8rawspeed12_GLOBAL__N_139getBlackAndWhiteLevelOffsetsInColorDataENS0_15ColorDataFormatENS_8OptionalIiEE.exit.thread107 ], [ false, %1 ] ret i1 %.028 } diff --git a/bench/darktable/optimized/NakedDecoder.ll b/bench/darktable/optimized/NakedDecoder.ll index f26cd053b3c..9f5c200afdf 100644 --- a/bench/darktable/optimized/NakedDecoder.ll +++ b/bench/darktable/optimized/NakedDecoder.ll @@ -235,7 +235,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i55 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57: ; preds = %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i55 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %173 + br label %172 53: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %54 = landingpad { ptr, i32 } @@ -252,7 +252,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60: ; preds = %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i58 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %173 + br label %172 ._crit_edge.i.i61: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit54 call void @llvm.lifetime.start.p0(ptr nonnull %6) @@ -336,7 +336,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i83 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85: ; preds = %85, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i83 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %173 + br label %172 91: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 %92 = landingpad { ptr, i32 } @@ -353,7 +353,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i86 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88: ; preds = %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i86 call void @llvm.lifetime.end.p0(ptr nonnull %7) - br label %173 + br label %172 ._crit_edge.i.i89: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit82 call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -414,7 +414,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i10 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102: ; preds = %118, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i100 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %173 + br label %172 ._crit_edge.i.i103: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit99 call void @llvm.lifetime.start.p0(ptr nonnull %9) @@ -556,9 +556,9 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126: ; preds = %167 - %171 = load i64, ptr %168, align 8, !tbaa !49 - %172 = add i64 %171, 1 - call void @_ZdlPvm(ptr noundef %.pre143, i64 noundef %172) #23 + %170 = load i64, ptr %168, align 8, !tbaa !49 + %171 = add i64 %170, 1 + call void @_ZdlPvm(ptr noundef %.pre143, i64 noundef %171) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i127, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i126 @@ -571,9 +571,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit128: ; preds = %_Z _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125: ; preds = %158, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i123, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit122 %.pn37 = phi { ptr, i32 } [ %149, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit122 ], [ %159, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i123 ], [ %159, %158 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) - br label %173 + br label %172 -173: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 +172: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 %.pn37.pn = phi { ptr, i32 } [ %.pn37, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit125 ], [ %119, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit102 ], [ %92, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88 ], [ %86, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit85 ], [ %54, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit60 ], [ %48, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit57 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/darktable/optimized/RawImageDataFloat.ll b/bench/darktable/optimized/RawImageDataFloat.ll index 09b3311a6ef..635cc970e02 100644 --- a/bench/darktable/optimized/RawImageDataFloat.ll +++ b/bench/darktable/optimized/RawImageDataFloat.ll @@ -401,29 +401,29 @@ _ZN8rawspeed8OptionalINS_10Array2DRefIiEEEaSIS2_Qsr3stdE7same_asITL0__T_EEERS3_O br i1 %exitcond230.not, label %104, label %108, !llvm.loop !113 .lr.ph205: ; preds = %.lr.ph201 - %116 = add nsw i32 %119, 2 - %117 = ashr i32 %116, 2 - br label %120 + %115 = add nsw i32 %118, 2 + %116 = ashr i32 %115, 2 + br label %119 .lr.ph201: ; preds = %104, %.lr.ph201 %.066199.idx = phi i64 [ %.066199.add, %.lr.ph201 ], [ 100, %104 ] - %.068198 = phi i32 [ %119, %.lr.ph201 ], [ 0, %104 ] + %.068198 = phi i32 [ %118, %.lr.ph201 ], [ 0, %104 ] %.066199.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %.066199.idx - %118 = load i32, ptr %.066199.ptr, align 4, !tbaa !106 - %119 = add nsw i32 %118, %.068198 + %117 = load i32, ptr %.066199.ptr, align 4, !tbaa !106 + %118 = add nsw i32 %117, %.068198 %.066199.add = add nuw nsw i64 %.066199.idx, 4 %.not75 = icmp eq i64 %.066199.add, 116 br i1 %.not75, label %.lr.ph205, label %.lr.ph201 -120: ; preds = %.lr.ph205, %120 +119: ; preds = %.lr.ph205, %119 %.063204.idx = phi i64 [ 100, %.lr.ph205 ], [ %.063204.add, %120 ] %.063204.ptr = getelementptr inbounds nuw i8, ptr %0, i64 %.063204.idx - store i32 %117, ptr %.063204.ptr, align 4, !tbaa !106 + store i32 %116, ptr %.063204.ptr, align 4, !tbaa !106 %.063204.add = add nuw nsw i64 %.063204.idx, 4 %.not76 = icmp eq i64 %.063204.add, 116 - br i1 %.not76, label %.loopexit, label %120 + br i1 %.not76, label %.loopexit, label %119 -.loopexit: ; preds = %120, %100, %104 +.loopexit: ; preds = %119, %100, %104 call void @llvm.lifetime.end.p0(ptr nonnull %1) ret void } diff --git a/bench/delta-rs/optimized/145iz0hplas008bu.ll b/bench/delta-rs/optimized/145iz0hplas008bu.ll index 37933a5e333..791781b78ee 100644 --- a/bench/delta-rs/optimized/145iz0hplas008bu.ll +++ b/bench/delta-rs/optimized/145iz0hplas008bu.ll @@ -1054,7 +1054,7 @@ _ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.4766490671745005879. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.4766490671745005879(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #4 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -1065,29 +1065,29 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 - -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 - -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #18 - br label %12 +10: ; preds = %4 + br i1 %3, label %19, label %14 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #18 - br label %12 +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %15 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 + +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #18 + br label %11 + +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #18 + br label %11 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/duckdb/optimized/arena.ll b/bench/duckdb/optimized/arena.ll index a3dc891f8bf..21a57c233a6 100644 --- a/bench/duckdb/optimized/arena.ll +++ b/bench/duckdb/optimized/arena.ll @@ -883,7 +883,7 @@ san_large_extent_decide_guard.exit: ; preds = %sz_size2index.exit, %58 = getelementptr inbounds nuw i8, ptr %1, i64 10664 %59 = call ptr @duckdb_je_pa_alloc(ptr noundef %0, ptr noundef nonnull %58, i64 noundef %32, i64 noundef %3, i1 noundef zeroext false, i32 noundef %.0.i, i1 noundef zeroext %57, i1 noundef zeroext %.0.i37, ptr noundef nonnull %7) #18 %60 = icmp eq ptr %59, null - br i1 %60, label %95, label %61 + br i1 %60, label %94, label %61 61: ; preds = %san_large_extent_decide_guard.exit call fastcc void @arena_large_malloc_stats_update(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %2) @@ -901,57 +901,57 @@ san_large_extent_decide_guard.exit: ; preds = %sz_size2index.exit, %68 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 range(i64 1, -2305843009213693952) %66, i1 true) %69 = xor i64 %68, 63 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %70 = icmp eq ptr %0, null - br i1 %70, label %76, label %71 - -71: ; preds = %64 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %73 = load i64, ptr %72, align 8, !tbaa !10 - %74 = mul i64 %73, 6364136223846793005 - %75 = add i64 %74, 1442695040888963407 - store i64 %75, ptr %72, align 8, !tbaa !10 - br label %80 - -76: ; preds = %64 - %77 = ptrtoint ptr %6 to i64 - %78 = mul i64 %77, 6364136223846793005 - %79 = add i64 %78, 1442695040888963407 - br label %80 - -80: ; preds = %76, %71 - %.sink.i38 = phi i64 [ %79, %76 ], [ %75, %71 ] - %81 = sub nuw nsw i64 115, %68 - %82 = lshr i64 %.sink.i38, %81 - %83 = shl nuw nsw i64 %82, %69 - %84 = getelementptr inbounds nuw i8, ptr %59, i64 8 - %85 = load ptr, ptr %84, align 8, !tbaa !145 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 %83 - store ptr %86, ptr %84, align 8, !tbaa !145 + %69 = icmp eq ptr %0, null + br i1 %69, label %75, label %70 + +70: ; preds = %64 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %72 = load i64, ptr %71, align 8, !tbaa !10 + %73 = mul i64 %72, 6364136223846793005 + %74 = add i64 %73, 1442695040888963407 + store i64 %74, ptr %71, align 8, !tbaa !10 + br label %79 + +75: ; preds = %64 + %76 = ptrtoint ptr %6 to i64 + %77 = mul i64 %76, 6364136223846793005 + %78 = add i64 %77, 1442695040888963407 + br label %79 + +79: ; preds = %75, %70 + %.sink.i38 = phi i64 [ %78, %76 ], [ %74, %71 ] + %80 = sub nuw nsw i64 115, %68 + %81 = lshr i64 %.sink.i38, %80 + %82 = shl nuw nsw i64 %81, %69 + %83 = getelementptr inbounds nuw i8, ptr %59, i64 8 + %84 = load ptr, ptr %83, align 8, !tbaa !145 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 %82 + store ptr %85, ptr %83, align 8, !tbaa !145 call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %arena_cache_oblivious_randomize.exit -arena_cache_oblivious_randomize.exit: ; preds = %80, %61 +arena_cache_oblivious_randomize.exit: ; preds = %79, %61 %.not = xor i1 %4, true %or.cond = or i1 %57, %.not - br i1 %or.cond, label %95, label %87 + br i1 %or.cond, label %94, label %86 -87: ; preds = %arena_cache_oblivious_randomize.exit +86: ; preds = %arena_cache_oblivious_randomize.exit %.val = load i64, ptr %59, align 8, !tbaa !147 - %88 = and i64 %.val, 32768 - %.not40 = icmp eq i64 %88, 0 - br i1 %.not40, label %89, label %95 - -89: ; preds = %87 - %90 = getelementptr i8, ptr %59, i64 8 - %.val34 = load ptr, ptr %90, align 8, !tbaa !145 - %91 = lshr i64 %.val, 20 - %92 = and i64 %91, 255 - %93 = getelementptr inbounds nuw i64, ptr @duckdb_je_sz_index2size_tab, i64 %92 - %94 = load i64, ptr %93, align 8, !tbaa !10 - call void @llvm.memset.p0.i64(ptr align 1 %.val34, i8 0, i64 %94, i1 false) - br label %95 + %87 = and i64 %.val, 32768 + %.not40 = icmp eq i64 %87, 0 + br i1 %.not40, label %88, label %94 + +88: ; preds = %86 + %89 = getelementptr i8, ptr %59, i64 8 + %.val34 = load ptr, ptr %89, align 8, !tbaa !145 + %90 = lshr i64 %.val, 20 + %91 = and i64 %90, 255 + %92 = getelementptr inbounds nuw i64, ptr @duckdb_je_sz_index2size_tab, i64 %91 + %93 = load i64, ptr %92, align 8, !tbaa !10 + call void @llvm.memset.p0.i64(ptr align 1 %.val34, i8 0, i64 %93, i1 false) + br label %94 -95: ; preds = %arena_cache_oblivious_randomize.exit, %87, %89, %san_large_extent_decide_guard.exit +94: ; preds = %arena_cache_oblivious_randomize.exit, %86, %88, %san_large_extent_decide_guard.exit call void @llvm.lifetime.end.p0(ptr nonnull %7) ret ptr %59 } diff --git a/bench/faiss/optimized/gtest-all.ll b/bench/faiss/optimized/gtest-all.ll index 3142ce798ea..519f385e037 100644 --- a/bench/faiss/optimized/gtest-all.ll +++ b/bench/faiss/optimized/gtest-all.ll @@ -57115,9 +57115,9 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i br i1 %25, label %.thread, label %32 .thread: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %27 = load i64, ptr %21, align 8, !tbaa !25, !noalias !1393 - %28 = add nuw nsw i64 %27, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %28, i1 false), !noalias !1393 + %29 = load i64, ptr %21, align 8, !tbaa !25, !noalias !1393 + %30 = add nuw nsw i64 %29, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %30, i1 false), !noalias !1393 store i64 0, ptr %21, align 8, !tbaa !25, !noalias !1393 store i8 0, ptr %9, align 8, !tbaa !27, !noalias !1393 store ptr %26, ptr %7, align 8, !tbaa !19, !alias.scope !1393 @@ -57131,17 +57131,17 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i %31 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %31, ptr %5, align 8, !tbaa !19 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %27, ptr %4, align 8, !tbaa !26 + store i64 %29, ptr %4, align 8, !tbaa !26 br label %._crit_edge.i.i.i.i.i -32: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %33 = load i64, ptr %9, align 8, !tbaa !27, !noalias !1393 +31: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit + %32 = load i64, ptr %9, align 8, !tbaa !27, !noalias !1393 %.pre.i = load i64, ptr %21, align 8, !tbaa !25, !noalias !1393 store ptr %9, ptr %8, align 8, !tbaa !22, !noalias !1393 store i64 0, ptr %21, align 8, !tbaa !25, !noalias !1393 store i8 0, ptr %9, align 8, !tbaa !27, !noalias !1393 store ptr %24, ptr %7, align 8, !tbaa !22, !alias.scope !1393 - store i64 %33, ptr %26, align 8, !tbaa !27, !alias.scope !1393 + store i64 %32, ptr %26, align 8, !tbaa !27, !alias.scope !1393 %34 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %.pre.i, ptr %34, align 8, !tbaa !25, !alias.scope !1393 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.4) @@ -57150,127 +57150,127 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i store ptr %35, ptr %5, align 8, !tbaa !19 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 %.pre.i, ptr %4, align 8, !tbaa !26 - %36 = icmp ugt i64 %.pre.i, 15 - br i1 %36, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i + %33 = icmp ugt i64 %.pre.i, 15 + br i1 %33, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i -.noexc.i.i.i.i: ; preds = %32 - %37 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - to label %.noexc unwind label %71 +.noexc.i.i.i.i: ; preds = %31 + %34 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + to label %.noexc unwind label %67 .noexc: ; preds = %.noexc.i.i.i.i - store ptr %37, ptr %5, align 8, !tbaa !22 - %38 = load i64, ptr %4, align 8, !tbaa !26 - store i64 %38, ptr %35, align 8, !tbaa !27 + store ptr %34, ptr %5, align 8, !tbaa !22 + %35 = load i64, ptr %4, align 8, !tbaa !26 + store i64 %35, ptr %35, align 8, !tbaa !27 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %32 - %39 = phi ptr [ %24, %.noexc ], [ %24, %32 ], [ %26, %.thread ] - %40 = phi ptr [ %35, %.noexc ], [ %35, %32 ], [ %31, %.thread ] - %41 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %32 ], [ %27, %.thread ] +._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %31 + %36 = phi ptr [ %24, %.noexc ], [ %24, %32 ], [ %26, %.thread ] + %37 = phi ptr [ %35, %.noexc ], [ %35, %32 ], [ %31, %.thread ] + %38 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %32 ], [ %27, %.thread ] %42 = phi ptr [ %37, %.noexc ], [ %35, %32 ], [ %31, %.thread ] switch i64 %41, label %45 [ i64 1, label %43 i64 0, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i ] -43: ; preds = %._crit_edge.i.i.i.i.i - %44 = load i8, ptr %39, align 1, !tbaa !27 - store i8 %44, ptr %42, align 1, !tbaa !27 +39: ; preds = %._crit_edge.i.i.i.i.i + %40 = load i8, ptr %36, align 1, !tbaa !27 + store i8 %40, ptr %42, align 1, !tbaa !27 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -45: ; preds = %._crit_edge.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %39, i64 %41, i1 false) +41: ; preds = %._crit_edge.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %36, i64 %38, i1 false) br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %45, %43, %._crit_edge.i.i.i.i.i - %46 = load i64, ptr %4, align 8, !tbaa !26 - %47 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %46, ptr %47, align 8, !tbaa !25 - %48 = load ptr, ptr %5, align 8, !tbaa !22 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 %46 - store i8 0, ptr %49, align 1, !tbaa !27 +_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %41, %39, %._crit_edge.i.i.i.i.i + %42 = load i64, ptr %4, align 8, !tbaa !26 + %43 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %42, ptr %43, align 8, !tbaa !25 + %44 = load ptr, ptr %5, align 8, !tbaa !22 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 %42 + store i8 0, ptr %45, align 1, !tbaa !27 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %50 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) - to label %51 unwind label %56 + %46 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) + to label %51 unwind label %52 -51: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %52 = load ptr, ptr %5, align 8, !tbaa !22 - %53 = icmp eq ptr %52, %40 - br i1 %53, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +47: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %48 = load ptr, ptr %5, align 8, !tbaa !22 + %49 = icmp eq ptr %48, %40 + br i1 %49, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %51 - %54 = load i64, ptr %40, align 8, !tbaa !27 - %55 = add i64 %54, 1 - call void @_ZdlPvm(ptr noundef %52, i64 noundef %55) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %47 + %50 = load i64, ptr %40, align 8, !tbaa !27 + %51 = add i64 %50, 1 + call void @_ZdlPvm(ptr noundef %48, i64 noundef %51) #60 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i -56: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %57 = landingpad { ptr, i32 } +52: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %53 = landingpad { ptr, i32 } cleanup - %58 = load ptr, ptr %5, align 8, !tbaa !22 - %59 = icmp eq ptr %58, %40 - br i1 %59, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i + %54 = load ptr, ptr %5, align 8, !tbaa !22 + %55 = icmp eq ptr %54, %40 + br i1 %55, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %56 - %60 = load i64, ptr %40, align 8, !tbaa !27 - %61 = add i64 %60, 1 - call void @_ZdlPvm(ptr noundef %58, i64 noundef %61) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %52 + %56 = load i64, ptr %40, align 8, !tbaa !27 + %57 = add i64 %56, 1 + call void @_ZdlPvm(ptr noundef %54, i64 noundef %57) #60 br label %.body -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %62 = load ptr, ptr %7, align 8, !tbaa !22 - %63 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %64 = icmp eq ptr %62, %63 - br i1 %64, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %58 = load ptr, ptr %7, align 8, !tbaa !22 + %59 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %60 = icmp eq ptr %58, %59 + br i1 %60, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i - %65 = load i64, ptr %63, align 8, !tbaa !27 - %66 = add i64 %65, 1 - call void @_ZdlPvm(ptr noundef %62, i64 noundef %66) #60 + %61 = load i64, ptr %59, align 8, !tbaa !27 + %62 = add i64 %61, 1 + call void @_ZdlPvm(ptr noundef %58, i64 noundef %62) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %67 = load ptr, ptr %8, align 8, !tbaa !22 - %68 = icmp eq ptr %67, %9 - br i1 %68, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %63 = load ptr, ptr %8, align 8, !tbaa !22 + %64 = icmp eq ptr %63, %9 + br i1 %64, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit - %69 = load i64, ptr %9, align 8, !tbaa !27 - %70 = add i64 %69, 1 - call void @_ZdlPvm(ptr noundef %67, i64 noundef %70) #60 + %65 = load i64, ptr %9, align 8, !tbaa !27 + %66 = add i64 %65, 1 + call void @_ZdlPvm(ptr noundef %63, i64 noundef %66) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - ret ptr %50 + ret ptr %46 -71: ; preds = %.noexc.i.i.i.i - %72 = landingpad { ptr, i32 } +67: ; preds = %.noexc.i.i.i.i + %68 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %56, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %71 - %eh.lpad-body = phi { ptr, i32 } [ %72, %71 ], [ %57, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %57, %56 ] - %73 = load ptr, ptr %7, align 8, !tbaa !22 - %74 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %75 = icmp eq ptr %73, %74 - br i1 %75, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 +.body: ; preds = %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %67 + %eh.lpad-body = phi { ptr, i32 } [ %68, %71 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %53, %56 ] + %69 = load ptr, ptr %7, align 8, !tbaa !22 + %70 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %71 = icmp eq ptr %69, %70 + br i1 %71, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7: ; preds = %.body - %76 = load i64, ptr %74, align 8, !tbaa !27 - %77 = add i64 %76, 1 - call void @_ZdlPvm(ptr noundef %73, i64 noundef %77) #60 + %72 = load i64, ptr %70, align 8, !tbaa !27 + %73 = add i64 %72, 1 + call void @_ZdlPvm(ptr noundef %69, i64 noundef %73) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9: ; preds = %.body, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 - %78 = load ptr, ptr %8, align 8, !tbaa !22 - %79 = icmp eq ptr %78, %9 - br i1 %79, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 + %74 = load ptr, ptr %8, align 8, !tbaa !22 + %75 = icmp eq ptr %74, %9 + br i1 %75, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 - %80 = load i64, ptr %9, align 8, !tbaa !27 - %81 = add i64 %80, 1 - call void @_ZdlPvm(ptr noundef %78, i64 noundef %81) #60 + %76 = load i64, ptr %9, align 8, !tbaa !27 + %77 = add i64 %76, 1 + call void @_ZdlPvm(ptr noundef %74, i64 noundef %77) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12 _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 diff --git a/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll b/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll index e5ed646481e..4f886f84b65 100644 --- a/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll +++ b/bench/fish-rs/optimized/7ggr7vxi3lrn28dd77bkw6see.ll @@ -37220,11 +37220,11 @@ define hidden void @"_ZN4core3ptr97drop_in_place$LT$alloc..sync..Weak$LT$dyn$u20 %21 = icmp eq i64 %19, 0 br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit", label %22 -22: ; preds = %8 +20: ; preds = %8 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #34 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit": ; preds = %1, %4, %8, %22 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hec2994721f0a5696E.exit": ; preds = %1, %4, %8, %20 ret void } diff --git a/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll b/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll index 1699e88f87e..5c9beb026a2 100644 --- a/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll +++ b/bench/fish-rs/optimized/czs708r0zvy58e2j6rsq7a88i.ll @@ -31325,11 +31325,11 @@ define { i32, i32 } @_ZN4fish3fds13wopen_cloexec17hce368140301abc68E(ptr noalias %11 = extractvalue { i32, i32 } %10, 0 %12 = extractvalue { i32, i32 } %10, 1 %13 = trunc i32 %11 to i1 - br i1 %13, label %14, label %23 + br i1 %13, label %14, label %22 14: ; preds = %.noexc %.not.i = icmp eq i32 %12, 4 - br i1 %.not.i, label %15, label %23 + br i1 %.not.i, label %15, label %22 15: ; preds = %14 %16 = invoke noundef i32 @_ZN4fish6signal19signal_check_cancel17h11924faa90d83cb1E() @@ -31337,7 +31337,7 @@ define { i32, i32 } @_ZN4fish3fds13wopen_cloexec17hce368140301abc68E(ptr noalias .noexc4: ; preds = %15 %17 = icmp eq i32 %16, 0 - br i1 %17, label %9, label %23 + br i1 %17, label %9, label %22 18: ; preds = %15, %9 %19 = landingpad { ptr, i32 } @@ -31345,30 +31345,30 @@ define { i32, i32 } @_ZN4fish3fds13wopen_cloexec17hce368140301abc68E(ptr noalias %20 = icmp ne ptr %6, null tail call void @llvm.assume(i1 %20) store i8 0, ptr %6, align 1 - %21 = icmp eq i64 %7, 0 - br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %22 + %20 = icmp eq i64 %7, 0 + br i1 %20, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %21 -22: ; preds = %18 +21: ; preds = %18 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %6, i64 noundef range(i64 1, 0) %7, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit" -23: ; preds = %.noexc4, %14, %.noexc +22: ; preds = %.noexc4, %14, %.noexc %.lcssa.i = phi i32 [ %12, %.noexc ], [ 4, %.noexc4 ], [ %12, %14 ] %.sroa.0.0.i = phi i32 [ 0, %.noexc ], [ 1, %.noexc4 ], [ 1, %14 ] store i8 0, ptr %6, align 1 - %24 = icmp eq i64 %7, 0 - br i1 %24, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %25 + %23 = icmp eq i64 %7, 0 + br i1 %23, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %24 -25: ; preds = %23 +24: ; preds = %22 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %6, i64 noundef range(i64 1, 0) %7, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5" -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %23, %25 - %26 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0.i, 0 - %27 = insertvalue { i32, i32 } %26, i32 %.lcssa.i, 1 - ret { i32, i32 } %27 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %22, %24 + %25 = insertvalue { i32, i32 } poison, i32 %.sroa.0.0.i, 0 + %26 = insertvalue { i32, i32 } %25, i32 %.lcssa.i, 1 + ret { i32, i32 } %26 -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %22, %18 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %21, %18 resume { ptr, i32 } %19 } @@ -31419,7 +31419,7 @@ define { i32, i32 } @_ZN4fish3fds9wopen_dir17hde3f8548a82b06b7E(ptr noalias noun %12 = trunc i32 %10 to i1 %.not.i.i = icmp eq i32 %11, 4 %or.cond.i = select i1 %12, i1 %.not.i.i, i1 false - br i1 %or.cond.i, label %13, label %21 + br i1 %or.cond.i, label %13, label %20 13: ; preds = %.noexc %14 = invoke noundef i32 @_ZN4fish6signal19signal_check_cancel17h11924faa90d83cb1E() @@ -31427,7 +31427,7 @@ define { i32, i32 } @_ZN4fish3fds9wopen_dir17hde3f8548a82b06b7E(ptr noalias noun .noexc4: ; preds = %13 %15 = icmp eq i32 %14, 0 - br i1 %15, label %8, label %21 + br i1 %15, label %8, label %20 16: ; preds = %13, %8 %17 = landingpad { ptr, i32 } @@ -31435,30 +31435,30 @@ define { i32, i32 } @_ZN4fish3fds9wopen_dir17hde3f8548a82b06b7E(ptr noalias noun %18 = icmp ne ptr %5, null tail call void @llvm.assume(i1 %18) store i8 0, ptr %5, align 1 - %19 = icmp eq i64 %6, 0 - br i1 %19, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %20 + %18 = icmp eq i64 %6, 0 + br i1 %18, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit", label %19 -20: ; preds = %16 +19: ; preds = %16 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %5, i64 noundef range(i64 1, 0) %6, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit" -21: ; preds = %.noexc4, %.noexc +20: ; preds = %.noexc4, %.noexc %.lcssa.i.i = phi i32 [ %11, %.noexc ], [ 4, %.noexc4 ] store i8 0, ptr %5, align 1 - %22 = icmp eq i64 %6, 0 - br i1 %22, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %23 + %21 = icmp eq i64 %6, 0 + br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5", label %22 -23: ; preds = %21 +22: ; preds = %20 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %5, i64 noundef range(i64 1, 0) %6, i64 noundef 1) #36 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5" -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %21, %23 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit5": ; preds = %20, %22 %..i = and i32 %10, 1 - %24 = insertvalue { i32, i32 } poison, i32 %..i, 0 - %25 = insertvalue { i32, i32 } %24, i32 %.lcssa.i.i, 1 - ret { i32, i32 } %25 + %23 = insertvalue { i32, i32 } poison, i32 %..i, 0 + %24 = insertvalue { i32, i32 } %23, i32 %.lcssa.i.i, 1 + ret { i32, i32 } %24 -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %20, %16 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h5d16417567c270b7E.exit": ; preds = %19, %16 resume { ptr, i32 } %17 } diff --git a/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll b/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll index 4f18abb4056..90fbabbcf5f 100644 --- a/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll +++ b/bench/foundations-rs/optimized/3mkcuilt3qj76iejlx2uremig.ll @@ -11865,7 +11865,7 @@ default.unreachable: ; preds = %570 "_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread": ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$7is_done17hd188279779f3efd4E.exit.i", %609, %626 store i64 3, ptr %0, align 8 - br label %679 + br label %678 "_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7": ; preds = %639 call void @llvm.lifetime.end.p0(ptr nonnull %76), !noalias !277 @@ -11882,67 +11882,67 @@ default.unreachable: ; preds = %570 %.sroa.4.0.copyload.i = load i8, ptr %.sroa.4.0..sroa_idx.i1, align 8, !noalias !430 store i8 3, ptr %.sroa.4.0..sroa_idx.i1, align 8, !noalias !430 %.not.i = icmp eq i8 %.sroa.4.0.copyload.i, 3 - br i1 %.not.i, label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit", label %665 + br i1 %.not.i, label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit", label %664 -665: ; preds = %.thread +664: ; preds = %.thread %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 529 - %666 = getelementptr inbounds nuw i8, ptr %1, i64 496 + %665 = getelementptr inbounds nuw i8, ptr %1, i64 496 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !430 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %666, i64 32, i1 false), !noalias !430 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %665, i64 32, i1 false), !noalias !430 %.sroa.4.0..sroa_idx1.i = getelementptr inbounds nuw i8, ptr %6, i64 32 store i8 %.sroa.4.0.copyload.i, ptr %.sroa.4.0..sroa_idx1.i, align 8, !noalias !430 %.sroa.5.0..sroa_idx3.i = getelementptr inbounds nuw i8, ptr %6, i64 33 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.5.0..sroa_idx3.i, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.5.0..sroa_idx.i, i64 7, i1 false), !noalias !430 - %667 = invoke noundef nonnull align 8 ptr @_ZN5hyper5error5Error8new_body17he651352ae74bd830E(ptr noalias noundef nonnull readonly align 1 @anon.b34713dfcbdcf2a8bb4377ca3df15ef5.124, i64 noundef 16) - to label %670 unwind label %668, !noalias !434 + %666 = invoke noundef nonnull align 8 ptr @_ZN5hyper5error5Error8new_body17he651352ae74bd830E(ptr noalias noundef nonnull readonly align 1 @anon.b34713dfcbdcf2a8bb4377ca3df15ef5.124, i64 noundef 16) + to label %670 unwind label %667, !noalias !434 -668: ; preds = %670, %665 - %669 = landingpad { ptr, i32 } +667: ; preds = %669, %664 + %668 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$hyper..body..body..Sender$GT$17h2676c14a10e89bb8E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %6) #23 - to label %.thread.i unwind label %677, !noalias !434 + to label %.thread.i unwind label %676, !noalias !434 -670: ; preds = %665 - invoke void @_ZN5hyper4body4body6Sender10send_error17h453918a8a746d91dE(ptr noalias noundef nonnull align 8 dereferenceable(40) %6, ptr noalias noundef nonnull align 8 %667) - to label %671 unwind label %668, !noalias !434 +669: ; preds = %664 + invoke void @_ZN5hyper4body4body6Sender10send_error17h453918a8a746d91dE(ptr noalias noundef nonnull align 8 dereferenceable(40) %6, ptr noalias noundef nonnull align 8 %666) + to label %671 unwind label %667, !noalias !434 -671: ; preds = %670 +670: ; preds = %669 invoke void @"_ZN4core3ptr46drop_in_place$LT$hyper..body..body..Sender$GT$17h2676c14a10e89bb8E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %6) to label %673 unwind label %.thread8.i, !noalias !434 -.thread8.i: ; preds = %671 - %672 = landingpad { ptr, i32 } +.thread8.i: ; preds = %670 + %671 = landingpad { ptr, i32 } cleanup br label %.thread.i -673: ; preds = %671 +672: ; preds = %670 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !430 br label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit" -"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit": ; preds = %673, %.thread - %674 = getelementptr inbounds nuw i8, ptr %1, i64 536 +"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit": ; preds = %672, %.thread + %673 = getelementptr inbounds nuw i8, ptr %1, i64 536 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !430 - %675 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr %.sroa.14.31017, ptr %675, align 8, !noalias !430 + %674 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr %.sroa.14.31017, ptr %674, align 8, !noalias !430 store i64 3, ptr %5, align 8, !noalias !430 - %676 = call fastcc noundef align 8 ptr @"_ZN126_$LT$hyper..proto..h1..dispatch..Server$LT$S$C$hyper..body..body..Body$GT$$u20$as$u20$hyper..proto..h1..dispatch..Dispatch$GT$8recv_msg17hc2155c49930f6d03E"(ptr noalias noundef align 8 dereferenceable(24) %674, ptr noalias noundef align 8 captures(none) dereferenceable(272) %5), !noalias !434 + %675 = call fastcc noundef align 8 ptr @"_ZN126_$LT$hyper..proto..h1..dispatch..Server$LT$S$C$hyper..body..body..Body$GT$$u20$as$u20$hyper..proto..h1..dispatch..Dispatch$GT$8recv_msg17hc2155c49930f6d03E"(ptr noalias noundef align 8 dereferenceable(24) %673, ptr noalias noundef align 8 captures(none) dereferenceable(272) %5), !noalias !434 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !430 - %.not10.i = icmp eq ptr %676, null - %spec.select = select i1 %.not10.i, ptr %.sroa.14.31017, ptr %676 + %.not10.i = icmp eq ptr %675, null + %spec.select = select i1 %.not10.i, ptr %.sroa.14.31017, ptr %675 %spec.select26 = select i1 %.not10.i, i64 0, i64 2 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20" -677: ; preds = %.thread.i, %668 - %678 = landingpad { ptr, i32 } +676: ; preds = %.thread.i, %667 + %677 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #24, !noalias !434 unreachable -.thread.i: ; preds = %.thread8.i, %668 - %.pn7.i = phi { ptr, i32 } [ %672, %.thread8.i ], [ %669, %668 ] +.thread.i: ; preds = %.thread8.i, %667 + %.pn7.i = phi { ptr, i32 } [ %671, %.thread8.i ], [ %668, %668 ] invoke void @"_ZN4core3ptr40drop_in_place$LT$hyper..error..Error$GT$17hbeade3f06316e71fE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %7) #23 - to label %common.resume unwind label %677, !noalias !434 + to label %common.resume unwind label %676, !noalias !434 "_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20": ; preds = %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$hyper..upgrade..Pending$GT$$GT$17h7ac20e489142b26cE.exit.i", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit" %.sroa.03.0 = phi i64 [ %spec.select26, %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_catch28_$u7b$$u7b$closure$u7d$$u7d$17h51d730f12348ef71E.exit" ], [ 1, %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7" ], [ 0, %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$hyper..upgrade..Pending$GT$$GT$17h7ac20e489142b26cE.exit.i" ] @@ -11950,9 +11950,9 @@ default.unreachable: ; preds = %570 store i64 %.sroa.03.0, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 - br label %679 + br label %678 -679: ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread" +678: ; preds = %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread7.thread20", %"_ZN5hyper5proto2h18dispatch32Dispatcher$LT$D$C$Bs$C$I$C$T$GT$10poll_inner17h2e53b7966fd472cbE.exit.thread" ret void } diff --git a/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll b/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll index d0ad1d46e42..f513d468258 100644 --- a/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll +++ b/bench/foundations-rs/optimized/dn9au2q3g3wlvvn47oahet6lo.ll @@ -2976,13 +2976,13 @@ define internal void @_ZN17tikv_jemalloc_ctl11stats_print8callback17h839c6a6807f %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8, !noundef !4 %.not = icmp eq ptr %4, null - br i1 %.not, label %5, label %45 + br i1 %.not, label %5, label %44 5: ; preds = %2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 %7 = load ptr, ptr %6, align 8, !align !49, !noundef !4 %.not11 = icmp eq ptr %7, null - br i1 %.not11, label %8, label %45 + br i1 %.not11, label %8, label %44 8: ; preds = %5 %9 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #29 @@ -2990,37 +2990,37 @@ define internal void @_ZN17tikv_jemalloc_ctl11stats_print8callback17h839c6a6807f tail call void @llvm.assume(i1 %10) %.val.i.i.i.i = load ptr, ptr %0, align 8, !noalias !197, !nonnull !4, !align !6, !noundef !4 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17he55b90e851844799E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.val.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %9, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ce0e6684e58da1538182cd2ee1a0154e.80) - to label %45 unwind label %11 + to label %45 unwind label %10 -11: ; preds = %8 - %12 = landingpad { ptr, i32 } +10: ; preds = %8 + %11 = landingpad { ptr, i32 } catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - %14 = invoke { ptr, ptr } @_ZN3std9panicking3try7cleanup17h6438e71f073086c0E(ptr noundef %13) - to label %17 unwind label %15 + %12 = extractvalue { ptr, i32 } %11, 0 + %13 = invoke { ptr, ptr } @_ZN3std9panicking3try7cleanup17h6438e71f073086c0E(ptr noundef %12) + to label %17 unwind label %14 -15: ; preds = %11 - %16 = landingpad { ptr, i32 } +14: ; preds = %10 + %15 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking19panic_cannot_unwind17h82fcc9c695da0defE() #28 unreachable -17: ; preds = %11 - %18 = extractvalue { ptr, ptr } %14, 0 - %19 = extractvalue { ptr, ptr } %14, 1 - %20 = icmp ne ptr %18, null - tail call void @llvm.assume(i1 %20) +16: ; preds = %10 + %17 = extractvalue { ptr, ptr } %13, 0 + %18 = extractvalue { ptr, ptr } %13, 1 + %19 = icmp ne ptr %17, null + tail call void @llvm.assume(i1 %19) %.val = load ptr, ptr %6, align 8, !align !49, !noundef !4 - %21 = getelementptr i8, ptr %0, i64 24 - %.val13 = load ptr, ptr %21, align 8 - %22 = icmp eq ptr %.val, null - br i1 %22, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %23 - -23: ; preds = %17 - %24 = icmp ne ptr %.val13, null - tail call void @llvm.assume(i1 %24) - %25 = load ptr, ptr %.val13, align 8, !invariant.load !4 - %.not.i.i = icmp eq ptr %25, null + %20 = getelementptr i8, ptr %0, i64 24 + %.val13 = load ptr, ptr %20, align 8 + %21 = icmp eq ptr %.val, null + br i1 %21, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %22 + +22: ; preds = %16 + %23 = icmp ne ptr %.val13, null + tail call void @llvm.assume(i1 %23) + %24 = load ptr, ptr %.val13, align 8, !invariant.load !4 + %.not.i.i = icmp eq ptr %24, null br i1 %.not.i.i, label %27, label %26 26: ; preds = %23 @@ -3037,38 +3037,38 @@ define internal void @_ZN17tikv_jemalloc_ctl11stats_print8callback17h839c6a6807f %33 = icmp eq i64 %29, 0 br i1 %33, label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", label %34 -34: ; preds = %27 +25: ; preds = %27 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %29, i64 noundef range(i64 1, -9223372036854775807) %31) #29 br label %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit" -35: ; preds = %26 - %36 = landingpad { ptr, i32 } +34: ; preds = %26 + %35 = landingpad { ptr, i32 } cleanup - %37 = getelementptr inbounds nuw i8, ptr %.val13, i64 8 - %38 = load i64, ptr %37, align 8, !range !201, !invariant.load !4 - %39 = getelementptr inbounds nuw i8, ptr %.val13, i64 16 - %40 = load i64, ptr %39, align 8, !range !61, !invariant.load !4 - %41 = icmp ult i64 %40, -9223372036854775807 - tail call void @llvm.assume(i1 %41) - %42 = icmp eq i64 %38, 0 - br i1 %42, label %44, label %43 - -43: ; preds = %35 - tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %38, i64 noundef range(i64 1, -9223372036854775807) %40) #29 - br label %44 + %36 = getelementptr inbounds nuw i8, ptr %.val13, i64 8 + %37 = load i64, ptr %36, align 8, !range !201, !invariant.load !4 + %38 = getelementptr inbounds nuw i8, ptr %.val13, i64 16 + %39 = load i64, ptr %38, align 8, !range !61, !invariant.load !4 + %40 = icmp ult i64 %39, -9223372036854775807 + tail call void @llvm.assume(i1 %40) + %41 = icmp eq i64 %37, 0 + br i1 %41, label %43, label %42 + +42: ; preds = %34 + tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, 0) %37, i64 noundef range(i64 1, -9223372036854775807) %39) #29 + br label %43 -44: ; preds = %43, %35 - store ptr %18, ptr %6, align 8 - store ptr %19, ptr %21, align 8 +43: ; preds = %42, %34 + store ptr %17, ptr %6, align 8 + store ptr %18, ptr %20, align 8 tail call void @_ZN4core9panicking19panic_cannot_unwind17h82fcc9c695da0defE() #28 unreachable -"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit": ; preds = %34, %27, %17 - store ptr %18, ptr %6, align 8 - store ptr %19, ptr %21, align 8 - br label %45 +"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit": ; preds = %34, %27, %16 + store ptr %17, ptr %6, align 8 + store ptr %18, ptr %20, align 8 + br label %44 -45: ; preds = %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", %8, %2, %5 +44: ; preds = %"_ZN4core3ptr130drop_in_place$LT$core..result..Result$LT$$LP$$RP$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h0747c6cd5085b449E.exit", %8, %2, %5 ret void } diff --git a/bench/glslang/optimized/ParseHelper.ll b/bench/glslang/optimized/ParseHelper.ll index 8279067ff58..11c9a7fdd2c 100644 --- a/bench/glslang/optimized/ParseHelper.ll +++ b/bench/glslang/optimized/ParseHelper.ll @@ -69747,63 +69747,63 @@ define linkonce_odr void @_ZNK7glslang5TType17appendMangledNameERNSt7__cxx1112ba br i1 %9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i: ; preds = %2 - %10 = icmp ult i64 %4, 16 + %10 = icmp ult i64 %4, 15 tail call void @llvm.assume(i1 %10) %11 = icmp samesign ugt i64 %5, 15 br i1 %11, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i: ; preds = %2 - %12 = load i64, ptr %8, align 8 - %13 = icmp ugt i64 %5, %12 - br i1 %13, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit + %11 = load i64, ptr %8, align 8 + %12 = icmp ugt i64 %5, %11 + br i1 %12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i - %14 = phi i64 [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] - %15 = icmp slt i64 %5, 0 - br i1 %15, label %16, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i + %13 = phi i64 [ %11, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] + %14 = icmp slt i64 %5, 0 + br i1 %14, label %15, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i -16: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i +15: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1003) #24 unreachable _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i.i - %17 = shl nuw i64 %14, 1 - %18 = icmp ult i64 %5, %17 - %spec.store.select.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %17, i64 9223372036854775807) - %.0.i.i.i = select i1 %18, i64 %spec.store.select.i.i.i.i, i64 %5 - %19 = add nuw i64 %.0.i.i.i, 1 - %20 = load ptr, ptr %1, align 8 - %21 = tail call noundef ptr @_ZN7glslang14TPoolAllocator8allocateEm(ptr noundef nonnull align 8 dereferenceable(96) %20, i64 noundef %19) #23 + %16 = shl nuw i64 %13, 1 + %17 = icmp ult i64 %5, %16 + %spec.store.select.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %16, i64 9223372036854775807) + %.0.i.i.i = select i1 %17, i64 %spec.store.select.i.i.i.i, i64 %5 + %18 = add nuw i64 %.0.i.i.i, 1 + %19 = load ptr, ptr %1, align 8 + %20 = tail call noundef ptr @_ZN7glslang14TPoolAllocator8allocateEm(ptr noundef nonnull align 8 dereferenceable(96) %19, i64 noundef %18) #23 %.not.i.i.i = icmp eq i64 %4, 0 - br i1 %.not.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i, label %22 + br i1 %.not.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i, label %21 -22: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i - %23 = load ptr, ptr %6, align 8 +21: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i + %22 = load ptr, ptr %6, align 8 %cond30.i.i.i = icmp eq i64 %4, 1 - br i1 %cond30.i.i.i, label %24, label %26 + br i1 %cond30.i.i.i, label %23, label %25 -24: ; preds = %22 - %25 = load i8, ptr %23, align 1 - store i8 %25, ptr %21, align 1 +23: ; preds = %21 + %24 = load i8, ptr %22, align 1 + store i8 %24, ptr %20, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i -26: ; preds = %22 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %21, ptr align 1 %23, i64 %4, i1 false) +25: ; preds = %21 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %20, ptr align 1 %22, i64 %4, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i: ; preds = %26, %24, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i - store ptr %21, ptr %6, align 8 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i: ; preds = %25, %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i.i.i + store ptr %20, ptr %6, align 8 store i64 %.0.i.i.i, ptr %8, align 8 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEpLEc.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i - %27 = phi ptr [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ %21, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i ], [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] - %28 = getelementptr inbounds i8, ptr %27, i64 %4 - store i8 59, ptr %28, align 1 + %26 = phi ptr [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.thread.i.i ], [ %20, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27.i.i.i ], [ %7, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i ] + %27 = getelementptr inbounds i8, ptr %26, i64 %4 + store i8 59, ptr %27, align 1 store i64 %5, ptr %3, align 8 - %29 = load ptr, ptr %6, align 8 - %30 = getelementptr inbounds i8, ptr %29, i64 %5 - store i8 0, ptr %30, align 1 + %28 = load ptr, ptr %6, align 8 + %29 = getelementptr inbounds i8, ptr %28, i64 %5 + store i8 0, ptr %29, align 1 ret void } diff --git a/bench/hermes/optimized/SemanticValidator.ll b/bench/hermes/optimized/SemanticValidator.ll index 372ae421a6a..945012abd75 100644 --- a/bench/hermes/optimized/SemanticValidator.ll +++ b/bench/hermes/optimized/SemanticValidator.ll @@ -5414,22 +5414,22 @@ if.then23: ; preds = %if.else20 %kind_.i.i.i.i.i.i.i.i.i51 = getelementptr inbounds nuw i8, ptr %17, i64 16 %18 = load i32, ptr %kind_.i.i.i.i.i.i.i.i.i51, align 8 switch i32 %18, label %if.end24.i58 [ - i32 25, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 21, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 20, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 15, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 14, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 13, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 12, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 - i32 11, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + i32 25, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 21, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 20, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 15, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 14, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 13, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 12, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 + i32 11, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 ] if.end24.i58: ; preds = %if.then23 %cmp.i.i.i.i.i.i.i23.i59 = icmp eq i32 %18, 26 tail call void @llvm.assume(i1 %cmp.i.i.i.i.i.i.i23.i59) - br label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61 + br label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60 -_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61: ; preds = %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.end24.i58 +_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60: ; preds = %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.then23, %if.end24.i58 %retval.0.i57 = getelementptr inbounds nuw i8, ptr %17, i64 48 %19 = load i32, ptr %retval.0.i57, align 4 %add.ptr29 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 48 @@ -5439,19 +5439,19 @@ _ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13Statement if.else30: ; preds = %if.else20 %sm_31 = getelementptr inbounds nuw i8, ptr %this, i64 8 %20 = load ptr, ptr %sm_31, align 8 - %sourceRange_.i62 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 24 - %retval.sroa.0.0.copyload.i63 = load ptr, ptr %sourceRange_.i62, align 8 - %retval.sroa.2.0.sourceRange_.sroa_idx.i64 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 32 - %retval.sroa.2.0.copyload.i65 = load ptr, ptr %retval.sroa.2.0.sourceRange_.sroa_idx.i64, align 8 - %LHSKind.i68 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 16 - %RHSKind.i69 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 17 - store i8 1, ptr %RHSKind.i69, align 1 + %sourceRange_.i61 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 24 + %retval.sroa.0.0.copyload.i62 = load ptr, ptr %sourceRange_.i61, align 8 + %retval.sroa.2.0.sourceRange_.sroa_idx.i63 = getelementptr inbounds nuw i8, ptr %breakStmt, i64 32 + %retval.sroa.2.0.copyload.i64 = load ptr, ptr %retval.sroa.2.0.sourceRange_.sroa_idx.i63, align 8 + %LHSKind.i67 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 16 + %RHSKind.i68 = getelementptr inbounds nuw i8, ptr %ref.tmp34, i64 17 + store i8 1, ptr %RHSKind.i68, align 1 store ptr @.str.34, ptr %ref.tmp34, align 8 - store i8 3, ptr %LHSKind.i68, align 8 - call void @_ZN6hermes18SourceErrorManager7messageENS0_8DiagKindEN4llvh7SMRangeERKNS2_5TwineENS_9SubsystemE(ptr noundef nonnull align 8 dereferenceable(464) %20, i32 noundef 0, ptr %retval.sroa.0.0.copyload.i63, ptr %retval.sroa.2.0.copyload.i65, ptr noundef nonnull align 8 dereferenceable(18) %ref.tmp34, i32 noundef 0) #21 + store i8 3, ptr %LHSKind.i67, align 8 + call void @_ZN6hermes18SourceErrorManager7messageENS0_8DiagKindEN4llvh7SMRangeERKNS2_5TwineENS_9SubsystemE(ptr noundef nonnull align 8 dereferenceable(464) %20, i32 noundef 0, ptr %retval.sroa.0.0.copyload.i62, ptr %retval.sroa.2.0.copyload.i64, ptr noundef nonnull align 8 dereferenceable(18) %ref.tmp34, i32 noundef 0) #21 br label %if.end36 -if.end36: ; preds = %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit61, %if.else30, %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit, %_ZN4llvhplERKNS_5TwineES2_.exit48 +if.end36: ; preds = %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit60, %if.else30, %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit, %_ZN4llvhplERKNS_5TwineES2_.exit48 %21 = load ptr, ptr %_label, align 8 %call.i = call { ptr, i8 } @_ZN6hermes6ESTree24RecursiveVisitorDispatchINS_3sem17SemanticValidatorELb1EE5visitERS3_PNS0_4NodeES7_(ptr noundef nonnull align 8 dereferenceable(168) %this, ptr noundef %21, ptr noundef %breakStmt) ret void @@ -5561,9 +5561,9 @@ if.then8: ; preds = %_ZN4llvh12DenseMapB %10 = load i32, ptr %kind_.i.i.i.i.i.i.i, align 8 %11 = add i32 %10, -11 %12 = icmp ult i32 %11, 5 - br i1 %12, label %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit, label %_ZN4llvhplERKNS_5TwineES2_.exit50 + br i1 %12, label %if.then11, label %_ZN4llvhplERKNS_5TwineES2_.exit50 -_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit: ; preds = %if.then8 +if.then11: ; preds = %if.then8 %retval.0.i = getelementptr inbounds nuw i8, ptr %9, i64 48 %13 = load i32, ptr %retval.0.i, align 4 %add.ptr = getelementptr inbounds nuw i8, ptr %continueStmt, i64 48 @@ -5659,7 +5659,7 @@ if.else53: ; preds = %if.else43 call void @_ZN6hermes18SourceErrorManager7messageENS0_8DiagKindEN4llvh7SMRangeERKNS2_5TwineENS_9SubsystemE(ptr noundef nonnull align 8 dereferenceable(464) %20, i32 noundef 0, ptr %retval.sroa.0.0.copyload.i138, ptr %retval.sroa.2.0.copyload.i140, ptr noundef nonnull align 8 dereferenceable(18) %ref.tmp57, i32 noundef 0) #21 br label %if.end59 -if.end59: ; preds = %if.then46, %if.else53, %_ZN4llvhplERKNS_5TwineES2_.exit134, %_ZN4llvhplERKNS_5TwineES2_.exit50, %_ZN6hermes3sem17SemanticValidator22getLabelDecorationBaseEPNS_6ESTree13StatementNodeE.exit +if.end59: ; preds = %if.then46, %if.else53, %_ZN4llvhplERKNS_5TwineES2_.exit134, %_ZN4llvhplERKNS_5TwineES2_.exit50, %if.then11 %21 = load ptr, ptr %_label, align 8 %call.i = call { ptr, i8 } @_ZN6hermes6ESTree24RecursiveVisitorDispatchINS_3sem17SemanticValidatorELb1EE5visitERS3_PNS0_4NodeES7_(ptr noundef nonnull align 8 dereferenceable(168) %this, ptr noundef %21, ptr noundef %continueStmt) ret void diff --git a/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll b/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll index 66a04d55203..a04c8529710 100644 --- a/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll +++ b/bench/html5ever-rs/optimized/6qwbbyxelav3qgo.ll @@ -606,7 +606,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !72 invoke void @"_ZN5alloc11collections5btree8navigate227_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$7next_kv17hdae230a576726a15E"(ptr noalias noundef nonnull sret({ ptr, [2 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %7) - to label %.noexc unwind label %30 + to label %.noexc unwind label %29 .noexc: ; preds = %1 %9 = load ptr, ptr %6, align 8, !noalias !72, !noundef !4 @@ -616,7 +616,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 11: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !72 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.6aab054ba3997061577097a5e0729914.0.llvm.3526042320029563352, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6aab054ba3997061577097a5e0729914.4.llvm.3526042320029563352) #10 - to label %.noexc1 unwind label %30 + to label %.noexc1 unwind label %29 .noexc1: ; preds = %11 unreachable @@ -637,7 +637,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 tail call void @llvm.experimental.noalias.scope.decl(metadata !76) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !79 invoke void @"_ZN5alloc11collections5btree4node145Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$Type$GT$5force17h8165ff6cd9c0fa88E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %.noexc2 unwind label %30 + to label %.noexc2 unwind label %29 .noexc2: ; preds = %12 %13 = load i64, ptr %3, align 8, !range !8, !noalias !79, !noundef !4 @@ -651,20 +651,20 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 %20 = add i64 %19, 1 br i1 %trunc.i.i, label %24, label %21 -21: ; preds = %.noexc2 +20: ; preds = %.noexc2 store ptr %15, ptr %5, align 8, !alias.scope !76, !noalias !81 %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %17, ptr %22, align 8, !alias.scope !76, !noalias !81 %23 = getelementptr inbounds nuw i8, ptr %5, i64 16 store i64 %20, ptr %23, align 8, !alias.scope !76, !noalias !81 - br label %32 + br label %31 24: ; preds = %.noexc2 %25 = getelementptr inbounds nuw i8, ptr %15, i64 192 %26 = icmp ult i64 %20, 12 tail call void @llvm.assume(i1 %26) %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %20 - %28 = load ptr, ptr %27, align 8, !noalias !79, !nonnull !4, !noundef !4 + %27 = load ptr, ptr %27, align 8, !noalias !79, !nonnull !4, !noundef !4 %29 = add i64 %17, -1 invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6aa67acece877a1E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %28, i64 noundef %29) to label %32 unwind label %30 @@ -673,33 +673,33 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17hf773ad464 %31 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit" unwind label %40 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit" unwind label %39 -32: ; preds = %21, %24 +31: ; preds = %20, %24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !79 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !72 - %33 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %34 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 - tail call void @llvm.assume(i1 %34) - %35 = getelementptr inbounds nuw i64, ptr %33, i64 %.sroa.4.sroa.4.0.copyload.i - %36 = getelementptr inbounds nuw i8, ptr %9, i64 96 - %37 = getelementptr inbounds nuw i64, ptr %36, i64 %.sroa.4.sroa.4.0.copyload.i + %32 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %33 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 + tail call void @llvm.assume(i1 %33) + %34 = getelementptr inbounds nuw i64, ptr %32, i64 %.sroa.4.sroa.4.0.copyload.i + %35 = getelementptr inbounds nuw i8, ptr %9, i64 96 + %36 = getelementptr inbounds nuw i64, ptr %35, i64 %.sroa.4.sroa.4.0.copyload.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !72 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %38 = insertvalue { ptr, ptr } poison, ptr %35, 0 - %39 = insertvalue { ptr, ptr } %38, ptr %37, 1 - ret { ptr, ptr } %39 + %37 = insertvalue { ptr, ptr } poison, ptr %34, 0 + %38 = insertvalue { ptr, ptr } %37, ptr %36, 1 + ret { ptr, ptr } %38 -40: ; preds = %30 - %41 = landingpad { ptr, i32 } +39: ; preds = %29 + %40 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #11 unreachable -"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit": ; preds = %30 - resume { ptr, i32 } %31 +"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12a1dee841fd5187E.exit": ; preds = %29 + resume { ptr, i32 } %30 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -765,7 +765,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %18 = add i64 %17, 1 br i1 %trunc.i, label %22, label %19 -19: ; preds = %10 +18: ; preds = %10 store ptr %13, ptr %5, align 8, !alias.scope !82, !noalias !87 %20 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %15, ptr %20, align 8, !alias.scope !82, !noalias !87 @@ -783,20 +783,20 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6aa67acece877a1E.llvm.7068131978735311054"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %26, i64 noundef %27), !noalias !87 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit" -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit": ; preds = %19, %22 +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h1ae5170b2bd7d665E.exit": ; preds = %18, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !85 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %28 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %29 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 - tail call void @llvm.assume(i1 %29) - %30 = getelementptr inbounds nuw i64, ptr %28, i64 %.sroa.4.sroa.4.0.copyload - %31 = getelementptr inbounds nuw i8, ptr %7, i64 96 - %32 = getelementptr inbounds nuw i64, ptr %31, i64 %.sroa.4.sroa.4.0.copyload + %27 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %28 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 + tail call void @llvm.assume(i1 %28) + %29 = getelementptr inbounds nuw i64, ptr %27, i64 %.sroa.4.sroa.4.0.copyload + %30 = getelementptr inbounds nuw i8, ptr %7, i64 96 + %31 = getelementptr inbounds nuw i64, ptr %30, i64 %.sroa.4.sroa.4.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %33 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %30, ptr %33, align 8 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store ptr %32, ptr %34, align 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %29, ptr %32, align 8 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr %31, ptr %33, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret void } diff --git a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll index 809d67da871..cdae6924d32 100644 --- a/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll +++ b/bench/image-rs/optimized/2ndzmzcdt55acj4k.ll @@ -2927,7 +2927,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #10 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -2938,29 +2938,29 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e50 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 +10: ; preds = %4 + br i1 %3, label %19, label %14 -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %14 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 - br label %12 +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 + br label %11 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 - br label %12 +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 + br label %11 } ; Function Attrs: alwaysinline nonlazybind uwtable @@ -3170,7 +3170,7 @@ define internal noundef zeroext i1 @"_ZN60_$LT$alloc..string..String$u20$as$u20$ ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #10 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %10 + br i1 %4, label %5, label %9 5: ; preds = %3 %6 = add i64 %1, -1 @@ -3181,19 +3181,19 @@ define hidden { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..all tail call void @llvm.assume(i1 %9) br label %_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit -10: ; preds = %3 - %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %12 = add i64 %1, -1 - %13 = icmp sgt i64 %12, -1 - tail call void @llvm.assume(i1 %13) - %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +9: ; preds = %3 + %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %11 = add i64 %1, -1 + %12 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %12) + %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit -_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit: ; preds = %5, %10 - %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] - %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 - %16 = insertvalue { ptr, i64 } %15, i64 %2, 1 - ret { ptr, i64 } %16 +_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.6960974148744716740.exit: ; preds = %5, %9 + %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %13, %10 ] + %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 + %15 = insertvalue { ptr, i64 } %14, i64 %2, 1 + ret { ptr, i64 } %15 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -3364,7 +3364,7 @@ define hidden { ptr, i64 } @"_ZN74_$LT$core..num..dec2flt..ParseFloatError$u20$a ; Function Attrs: nounwind nonlazybind uwtable define hidden noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17h75dec4d235bf20d7E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #13 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %10 + br i1 %4, label %5, label %9 5: ; preds = %3 %6 = add i64 %1, -1 @@ -3375,16 +3375,16 @@ define hidden noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17h75dec4d235bf tail call void @llvm.assume(i1 %9) br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit" -10: ; preds = %3 - %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %12 = add i64 %1, -1 - %13 = icmp sgt i64 %12, -1 - tail call void @llvm.assume(i1 %13) - %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +9: ; preds = %3 + %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %11 = add i64 %1, -1 + %12 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %12) + %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit": ; preds = %5, %10 - %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %14, %10 ] +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hbab35f6282c065eaE.llvm.6960974148744716740.exit": ; preds = %5, %9 + %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %13, %10 ] ret ptr %.sroa.05.0.i.i } diff --git a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll index 8868b593c3d..9915f1a9d82 100644 --- a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll +++ b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll @@ -18389,8 +18389,8 @@ define internal fastcc void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$L cleanup %5 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %5) - %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %7 = load i64, ptr %6, align 8, !range !2429, !invariant.load !19 + %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %8 = load i64, ptr %7, align 8, !range !2429, !invariant.load !19 %8 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 %9 = load i64, ptr %8, align 8, !range !2430, !invariant.load !19 %10 = icmp ult i64 %9, -9223372036854775807 @@ -18402,21 +18402,21 @@ define internal fastcc void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$L tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %7, i64 noundef range(i64 1, -9223372036854775807) %9) #25 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit" -13: ; preds = %0 - %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %15 = load i64, ptr %14, align 8, !range !2429, !invariant.load !19 - %16 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %17 = load i64, ptr %16, align 8, !range !2430, !invariant.load !19 - %18 = icmp ult i64 %17, -9223372036854775807 - tail call void @llvm.assume(i1 %18) - %19 = icmp eq i64 %15, 0 - br i1 %19, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4", label %20 - -20: ; preds = %13 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %15, i64 noundef range(i64 1, -9223372036854775807) %17) #25 +12: ; preds = %0 + %13 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %14 = load i64, ptr %13, align 8, !range !2429, !invariant.load !19 + %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %16 = load i64, ptr %15, align 8, !range !2430, !invariant.load !19 + %17 = icmp ult i64 %16, -9223372036854775807 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %14, 0 + br i1 %18, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4", label %19 + +19: ; preds = %12 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %14, i64 noundef range(i64 1, -9223372036854775807) %16) #25 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4": ; preds = %13, %20 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit4": ; preds = %12, %19 ret void "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdcd771d9965cec9cE.exit": ; preds = %12, %3 diff --git a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll index 178395f1d84..ed37bc2f8f0 100644 --- a/bench/image-rs/optimized/ptscn4jakoj4p9m.ll +++ b/bench/image-rs/optimized/ptscn4jakoj4p9m.ll @@ -12192,7 +12192,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !3480 invoke void @"_ZN5alloc11collections5btree8navigate227_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$7next_kv17hc3de3f800ddf11a7E"(ptr noalias noundef nonnull sret({ ptr, [2 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %7) - to label %.noexc unwind label %30 + to label %.noexc unwind label %29 .noexc: ; preds = %1 %9 = load ptr, ptr %6, align 8, !noalias !3480, !noundef !24 @@ -12202,7 +12202,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 11: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !3480 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.b16754a467d3cf51c98f9660b4d015ba.5.llvm.17224713629878502917, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b16754a467d3cf51c98f9660b4d015ba.111.llvm.17224713629878502917) #35 - to label %.noexc1 unwind label %30 + to label %.noexc1 unwind label %29 .noexc1: ; preds = %11 unreachable @@ -12223,7 +12223,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 tail call void @llvm.experimental.noalias.scope.decl(metadata !3484) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !3487 invoke void @"_ZN5alloc11collections5btree4node145Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$Type$GT$5force17hfcac10e75fe77bebE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %.noexc2 unwind label %30 + to label %.noexc2 unwind label %29 .noexc2: ; preds = %12 %13 = load i64, ptr %3, align 8, !range !666, !noalias !3487, !noundef !24 @@ -12237,19 +12237,19 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 %20 = add i64 %19, 1 br i1 %trunc.i.i, label %24, label %21 -21: ; preds = %.noexc2 +20: ; preds = %.noexc2 store ptr %15, ptr %5, align 8, !alias.scope !3484, !noalias !3489 %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %17, ptr %22, align 8, !alias.scope !3484, !noalias !3489 %23 = getelementptr inbounds nuw i8, ptr %5, i64 16 store i64 %20, ptr %23, align 8, !alias.scope !3484, !noalias !3489 - br label %32 + br label %31 24: ; preds = %.noexc2 %25 = getelementptr inbounds nuw i8, ptr %15, i64 392 - %26 = icmp ult i64 %20, 12 + %26 = icmp ult i64 %19, 12 tail call void @llvm.assume(i1 %26) - %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %20 + %27 = getelementptr inbounds nuw ptr, ptr %25, i64 %19 %28 = load ptr, ptr %27, align 8, !noalias !3487, !nonnull !24, !noundef !24 %29 = add i64 %17, -1 invoke void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hca7860a19e83631cE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %28, i64 noundef %29) @@ -12259,32 +12259,32 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0da48a740 %31 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit" unwind label %39 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit" unwind label %38 -32: ; preds = %21, %24 +31: ; preds = %20, %24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !3487 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !3480 - %33 = getelementptr inbounds nuw i8, ptr %9, i64 364 - %34 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 - tail call void @llvm.assume(i1 %34) - %35 = getelementptr inbounds nuw i16, ptr %33, i64 %.sroa.4.sroa.4.0.copyload.i - %36 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i + %32 = getelementptr inbounds nuw i8, ptr %9, i64 364 + %33 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 + tail call void @llvm.assume(i1 %33) + %34 = getelementptr inbounds nuw i16, ptr %32, i64 %.sroa.4.sroa.4.0.copyload.i + %35 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !3480 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %37 = insertvalue { ptr, ptr } poison, ptr %35, 0 - %38 = insertvalue { ptr, ptr } %37, ptr %36, 1 - ret { ptr, ptr } %38 + %36 = insertvalue { ptr, ptr } poison, ptr %34, 0 + %37 = insertvalue { ptr, ptr } %36, ptr %35, 1 + ret { ptr, ptr } %37 -39: ; preds = %30 - %40 = landingpad { ptr, i32 } +38: ; preds = %29 + %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38 unreachable -"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit": ; preds = %30 - resume { ptr, i32 } %31 +"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h59a162aca6d3396aE.exit": ; preds = %29 + resume { ptr, i32 } %30 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -12467,7 +12467,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %18 = add i64 %17, 1 br i1 %trunc.i, label %22, label %19 -19: ; preds = %10 +18: ; preds = %10 store ptr %13, ptr %5, align 8, !alias.scope !3498, !noalias !3503 %20 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %15, ptr %20, align 8, !alias.scope !3498, !noalias !3503 @@ -12477,7 +12477,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc 22: ; preds = %10 %23 = getelementptr inbounds nuw i8, ptr %13, i64 392 - %24 = icmp ult i64 %18, 12 + %24 = icmp ult i64 %17, 12 tail call void @llvm.assume(i1 %24) %25 = getelementptr inbounds nuw ptr, ptr %23, i64 %18 %26 = load ptr, ptr %25, align 8, !noalias !3501, !nonnull !24, !noundef !24 @@ -12485,16 +12485,16 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hca7860a19e83631cE.llvm.15109044229312055141"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %26, i64 noundef %27), !noalias !3503 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit" -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit": ; preds = %19, %22 +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h5e81b289b3e9e865E.exit": ; preds = %18, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !3501 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %28 = getelementptr inbounds nuw i8, ptr %7, i64 364 - %29 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 - tail call void @llvm.assume(i1 %29) - %30 = getelementptr inbounds nuw i16, ptr %28, i64 %.sroa.4.sroa.4.0.copyload - %31 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload + %27 = getelementptr inbounds nuw i8, ptr %7, i64 364 + %28 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 + tail call void @llvm.assume(i1 %28) + %29 = getelementptr inbounds nuw i16, ptr %27, i64 %.sroa.4.sroa.4.0.copyload + %30 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 24 store ptr %30, ptr %32, align 8 %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr %31, ptr %33, align 8 @@ -17088,7 +17088,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17224713629878502917 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17224713629878502917(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #19 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -17099,29 +17099,29 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e50 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 +10: ; preds = %4 + br i1 %3, label %19, label %14 -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %15 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #37 - br label %12 +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #37 + br label %11 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #37 - br label %12 +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #37 + br label %11 } ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll b/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll index a900ce787d0..8460a618dc0 100644 --- a/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll +++ b/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll @@ -1091,100 +1091,100 @@ define hidden noundef nonnull ptr @"_ZN5tokio4sync4mpsc4list11Tx$LT$T$GT$10find_ %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %13 -13: ; preds = %.lr.ph, %48 - %14 = phi ptr [ %5, %.lr.ph ], [ %49, %48 ] +13: ; preds = %.lr.ph, %47 + %14 = phi ptr [ %5, %.lr.ph ], [ %48, %48 ] %.01116 = phi i1 [ %11, %.lr.ph ], [ %.1, %48 ] %.01215 = phi ptr [ %.0.i, %.lr.ph ], [ %.0, %48 ] %15 = getelementptr inbounds nuw i8, ptr %.01215, i64 6920 %16 = load atomic i64, ptr %15 acquire, align 8 %.0.i.i = inttoptr i64 %16 to ptr %17 = icmp eq i64 %16, 0 - br i1 %17, label %19, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" + br i1 %17, label %18, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" -._crit_edge: ; preds = %48, %2 +._crit_edge: ; preds = %47, %2 %.012.lcssa = phi ptr [ %.0.i, %2 ], [ %.0, %48 ] %18 = icmp ne ptr %.012.lcssa, null tail call void @llvm.assume(i1 %18) ret ptr %.012.lcssa -19: ; preds = %13 - %20 = load i64, ptr %14, align 8, !noundef !10 - %21 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %22 = tail call noundef align 8 dereferenceable_or_null(6944) ptr @__rust_alloc(i64 noundef 6944, i64 noundef 8) #20 - %23 = icmp eq ptr %22, null - br i1 %23, label %24, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" +18: ; preds = %13 + %19 = load i64, ptr %14, align 8, !noundef !10 + %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %21 = tail call noundef align 8 dereferenceable_or_null(6944) ptr @__rust_alloc(i64 noundef 6944, i64 noundef 8) #20 + %22 = icmp eq ptr %21, null + br i1 %22, label %23, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" -24: ; preds = %19 +23: ; preds = %18 tail call void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 8, i64 noundef 6944) #32 unreachable -"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i": ; preds = %19 - %25 = add i64 %20, 32 - %26 = getelementptr inbounds nuw i8, ptr %22, i64 6912 - store i64 %25, ptr %26, align 8 - %.sroa.46.0..0.4.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %22, i64 6920 +"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i": ; preds = %18 + %24 = add i64 %19, 32 + %25 = getelementptr inbounds nuw i8, ptr %21, i64 6912 + store i64 %24, ptr %25, align 8 + %.sroa.46.0..0.4.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %21, i64 6920 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.46.0..0.4.sroa_idx.i.i, i8 0, i64 24, i1 false) - %27 = ptrtoint ptr %22 to i64 - %28 = cmpxchg ptr %15, i64 0, i64 %27 acq_rel acquire, align 8 - %.sroa.07.0.in.i.i = extractvalue { i64, i1 } %28, 0 + %26 = ptrtoint ptr %21 to i64 + %27 = cmpxchg ptr %15, i64 0, i64 %26 acq_rel acquire, align 8 + %.sroa.07.0.in.i.i = extractvalue { i64, i1 } %27, 0 %.sroa.07.0.i.i = inttoptr i64 %.sroa.07.0.in.i.i to ptr - %29 = extractvalue { i64, i1 } %28, 1 - br i1 %29, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.preheader.i + %28 = extractvalue { i64, i1 } %27, 1 + br i1 %28, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.preheader.i .preheader.i: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" - %30 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6912 - %31 = load i64, ptr %30, align 8, !noundef !10 - %32 = add i64 %31, 32 - store i64 %32, ptr %26, align 8 - %33 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6920 - %34 = cmpxchg ptr %33, i64 0, i64 %27 acq_rel acquire, align 8 - %35 = extractvalue { i64, i1 } %34, 1 - br i1 %35, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i + %29 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6912 + %30 = load i64, ptr %29, align 8, !noundef !10 + %31 = add i64 %30, 32 + store i64 %31, ptr %25, align 8 + %32 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i, i64 6920 + %33 = cmpxchg ptr %32, i64 0, i64 %26 acq_rel acquire, align 8 + %34 = extractvalue { i64, i1 } %33, 1 + br i1 %34, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i .lr.ph.i: ; preds = %.preheader.i, %.lr.ph.i - %36 = phi { i64, i1 } [ %41, %.lr.ph.i ], [ %34, %.preheader.i ] - %.sroa.07.0.in.i.i.i = extractvalue { i64, i1 } %36, 0 + %35 = phi { i64, i1 } [ %40, %.lr.ph.i ], [ %33, %.preheader.i ] + %.sroa.07.0.in.i.i.i = extractvalue { i64, i1 } %35, 0 %.sroa.07.0.i.i.i = inttoptr i64 %.sroa.07.0.in.i.i.i to ptr tail call void @llvm.x86.sse2.pause() #20 - %37 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6912 - %38 = load i64, ptr %37, align 8, !noundef !10 - %39 = add i64 %38, 32 - store i64 %39, ptr %26, align 8 - %40 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6920 - %41 = cmpxchg ptr %40, i64 0, i64 %27 acq_rel acquire, align 8 - %42 = extractvalue { i64, i1 } %41, 1 - br i1 %42, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i + %36 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6912 + %37 = load i64, ptr %36, align 8, !noundef !10 + %38 = add i64 %37, 32 + store i64 %38, ptr %25, align 8 + %39 = getelementptr inbounds nuw i8, ptr %.sroa.07.0.i.i.i, i64 6920 + %40 = cmpxchg ptr %39, i64 0, i64 %26 acq_rel acquire, align 8 + %41 = extractvalue { i64, i1 } %40, 1 + br i1 %41, label %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit", label %.lr.ph.i "_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit": ; preds = %.lr.ph.i, %.preheader.i, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i", %13 - %.0 = phi ptr [ %.0.i.i, %13 ], [ %22, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" ], [ %.sroa.07.0.i.i, %.preheader.i ], [ %.sroa.07.0.i.i, %.lr.ph.i ] - %43 = getelementptr inbounds nuw i8, ptr %.01215, i64 6928 - %44 = load atomic i64, ptr %43 acquire, align 8 - %45 = and i64 %44, 4294967295 - %46 = icmp eq i64 %45, 4294967295 - %47 = and i1 %.01116, %46 - br i1 %47, label %52, label %48 - -48: ; preds = %52, %56, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" + %.0 = phi ptr [ %.0.i.i, %13 ], [ %21, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17he910c4308dd5f64dE.exit.i" ], [ %.sroa.07.0.i.i, %.preheader.i ], [ %.sroa.07.0.i.i, %.lr.ph.i ] + %42 = getelementptr inbounds nuw i8, ptr %.01215, i64 6928 + %43 = load atomic i64, ptr %42 acquire, align 8 + %44 = and i64 %43, 4294967295 + %45 = icmp eq i64 %44, 4294967295 + %46 = and i1 %.01116, %45 + br i1 %46, label %51, label %47 + +47: ; preds = %51, %55, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" %.1 = phi i1 [ true, %56 ], [ false, %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" ], [ false, %52 ] tail call void @llvm.x86.sse2.pause() #20 - %49 = getelementptr inbounds nuw i8, ptr %.0, i64 6912 - %50 = load i64, ptr %49, align 8, !noundef !10 - %51 = icmp eq i64 %50, %3 - br i1 %51, label %._crit_edge, label %13 - -52: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" - %53 = ptrtoint ptr %.01215 to i64 - %54 = ptrtoint ptr %.0 to i64 - %55 = cmpxchg ptr %0, i64 %53, i64 %54 release monotonic, align 8 - %.sroa.18.0.in.i = extractvalue { i64, i1 } %55, 1 - br i1 %.sroa.18.0.in.i, label %56, label %48 - -56: ; preds = %52 - %57 = atomicrmw or ptr %12, i64 0 release, align 8 - %58 = getelementptr inbounds nuw i8, ptr %.01215, i64 6936 - store i64 %57, ptr %58, align 8 - %59 = atomicrmw or ptr %43, i64 4294967296 release, align 8 - br label %48 + %48 = getelementptr inbounds nuw i8, ptr %.0, i64 6912 + %49 = load i64, ptr %48, align 8, !noundef !10 + %50 = icmp eq i64 %49, %3 + br i1 %50, label %._crit_edge, label %13 + +51: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4grow17h421a22e867859a35E.exit" + %52 = ptrtoint ptr %.01215 to i64 + %53 = ptrtoint ptr %.0 to i64 + %54 = cmpxchg ptr %0, i64 %52, i64 %53 release monotonic, align 8 + %.sroa.18.0.in.i = extractvalue { i64, i1 } %54, 1 + br i1 %.sroa.18.0.in.i, label %55, label %47 + +55: ; preds = %51 + %56 = atomicrmw or ptr %12, i64 0 release, align 8 + %57 = getelementptr inbounds nuw i8, ptr %.01215, i64 6936 + store i64 %56, ptr %57, align 8 + %58 = atomicrmw or ptr %42, i64 4294967296 release, align 8 + br label %47 } ; Function Attrs: nounwind nonlazybind uwtable @@ -2158,7 +2158,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %34, %35 + %36 = add nuw i64 %34, %34 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -2248,7 +2248,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %34, %35 + %36 = add nuw i64 %34, %34 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 @@ -2461,7 +2461,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949 %52 = add i64 %6, 1 %53 = mul nuw i64 %52, %2 %54 = add i64 %3, -1 - %55 = add nuw i64 %53, %54 + %55 = add nuw i64 %53, %53 %56 = sub i64 0, %3 %57 = and i64 %55, %56 %58 = add i64 %6, 17 diff --git a/bench/just-rs/optimized/2sotx4bdu006z307.ll b/bench/just-rs/optimized/2sotx4bdu006z307.ll index 32f3aca60e8..9d984e7a56c 100644 --- a/bench/just-rs/optimized/2sotx4bdu006z307.ll +++ b/bench/just-rs/optimized/2sotx4bdu006z307.ll @@ -9573,7 +9573,7 @@ _ZN14regex_automata4util4pool5inner9THREAD_ID7__getit17he141448109b075e5E.exit.i %59 = getelementptr inbounds nuw i8, ptr %46, i64 112 %60 = load ptr, ptr %59, align 8, !invariant.load !4, !noalias !2085, !nonnull !4 invoke void %60(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %7, ptr noundef align 1 %58, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.0.i7.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %8) - to label %61 unwind label %154 + to label %61 unwind label %153 61: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h8779890000955411E.exit.i" %.sroa.0.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -9838,17 +9838,17 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit. unreachable .noexc5.i: ; preds = %66 - %151 = icmp ne ptr %.sroa.0.sroa.5.0.copyload.i, null - call void @llvm.assume(i1 %151) - %152 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload.i, i64 40 - store atomic i64 %.sroa.0.sroa.4.0.copyload.i, ptr %152 release, align 8, !noalias !2085 + %150 = icmp ne ptr %.sroa.0.sroa.5.0.copyload.i, null + call void @llvm.assume(i1 %150) + %151 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload.i, i64 40 + store atomic i64 %.sroa.0.sroa.4.0.copyload.i, ptr %151 release, align 8, !noalias !2085 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !2101 br label %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" "_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i": ; preds = %.noexc5.i, %.noexc3.i, %134, %_ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.11107275065492906757.exit.i.i.i.i, %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17h296dfeae8992f9c8E.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !2086 %.pre = load i64, ptr %7, align 8, !range !578 - %153 = icmp ne i64 %.pre, 0 + %152 = icmp ne i64 %.pre, 0 br label %_ZN14regex_automata4meta5regex5Regex11search_half17hf6e7bbd4f4e39a06E.exit .body.thread.sink.split.i: ; preds = %148, %84 @@ -9856,27 +9856,27 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit. call void @__rust_dealloc(ptr noundef nonnull %64, i64 noundef 1400, i64 noundef 8) #42, !noalias !2085 br label %.body.thread.i -.body.thread.i: ; preds = %154, %.body.thread.sink.split.i, %.body.i.i, %.thread.i.i +.body.thread.i: ; preds = %153, %.body.thread.sink.split.i, %.body.i.i, %.thread.i.i %eh.lpad-body15.i = phi { ptr, i32 } [ %115, %.body.i.i ], [ %lpad.thr_comm.split-lp.i, %154 ], [ %lpad.phi.i.i, %.thread.i.i ], [ %eh.lpad-body15.ph.i, %.body.thread.sink.split.i ] resume { ptr, i32 } %eh.lpad-body15.i -154: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h8779890000955411E.exit.i" +153: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h8779890000955411E.exit.i" %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr366drop_in_place$LT$regex_automata..util..pool..PoolGuard$LT$regex_automata..meta..regex..Cache$C$alloc..boxed..Box$LT$dyn$u20$core..ops..function..Fn$LT$$LP$$RP$$GT$$u2b$Output$u20$$u3d$$u20$regex_automata..meta..regex..Cache$u2b$core..panic..unwind_safe..UnwindSafe$u2b$core..marker..Send$u2b$core..marker..Sync$u2b$core..panic..unwind_safe..RefUnwindSafe$GT$$GT$$GT$17he3690092f493643eE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %6) #41 - to label %.body.thread.i unwind label %155, !noalias !2085 + to label %.body.thread.i unwind label %154, !noalias !2085 -155: ; preds = %154 - %156 = landingpad { ptr, i32 } +154: ; preds = %153 + %155 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #40, !noalias !2085 unreachable _ZN14regex_automata4meta5regex5Regex11search_half17hf6e7bbd4f4e39a06E.exit: ; preds = %14, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98b7df9da17870f0E.exit.i, %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" - %157 = phi i1 [ %153, %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" ], [ false, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98b7df9da17870f0E.exit.i ], [ false, %14 ] + %156 = phi i1 [ %152, %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.exit.i" ], [ false, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98b7df9da17870f0E.exit.i ], [ false, %14 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) - ret i1 %157 + ret i1 %156 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/libquic/optimized/string16.ll b/bench/libquic/optimized/string16.ll index 36b6ea82cd6..898950786ef 100644 --- a/bench/libquic/optimized/string16.ll +++ b/bench/libquic/optimized/string16.ll @@ -3238,48 +3238,48 @@ _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exi br i1 %10, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i: ; preds = %2 - %11 = load i64, ptr %7, align 8 - %12 = icmp ugt i64 %5, %11 - br i1 %12, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit + %10 = load i64, ptr %7, align 8 + %11 = icmp ugt i64 %5, %10 + br i1 %11, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i - %13 = phi i64 [ %11, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] - %14 = icmp ugt i64 %5, 2305843009213693951 - br i1 %14, label %15, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i + %12 = phi i64 [ %10, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] + %13 = icmp ugt i64 %5, 2305843009213693951 + br i1 %13, label %14, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i -15: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i +14: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str) #18 unreachable _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i.i - %16 = shl nuw nsw i64 %13, 1 - %17 = icmp samesign ult i64 %5, %16 - %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %16, i64 2305843009213693951) - %.0.i.i = select i1 %17, i64 %spec.store.select.i.i.i, i64 %5 - %18 = shl nuw nsw i64 %.0.i.i, 1 - %19 = add nuw nsw i64 %18, 2 - %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #19 + %15 = shl nuw nsw i64 %12, 1 + %16 = icmp samesign ult i64 %5, %15 + %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %15, i64 2305843009213693951) + %.0.i.i = select i1 %16, i64 %spec.store.select.i.i.i, i64 %5 + %17 = shl nuw nsw i64 %.0.i.i, 1 + %18 = add nuw nsw i64 %17, 2 + %19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %18) #19 switch i64 %4, label %23 [ i64 0, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i - i64 1, label %21 + i64 1, label %20 ] -21: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i - %22 = load i16, ptr %6, align 2, !tbaa !3 - store i16 %22, ptr %20, align 2, !tbaa !3 +20: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i + %21 = load i16, ptr %6, align 2, !tbaa !3 + store i16 %21, ptr %19, align 2, !tbaa !3 br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i -23: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i - %24 = shl nuw nsw i64 %4, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %20, ptr readonly align 2 %6, i64 %24, i1 false) +22: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i + %23 = shl nuw nsw i64 %4, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %19, ptr readonly align 2 %6, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i -_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i: ; preds = %23, %21, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i +_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i: ; preds = %22, %20, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i.i br i1 %8, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i.i, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i - %25 = icmp samesign ult i64 %4, 8 - tail call void @llvm.assume(i1 %25) + %24 = icmp samesign ult i64 %4, 8 + tail call void @llvm.assume(i1 %24) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i.i @@ -3287,17 +3287,17 @@ _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i.i - store ptr %20, ptr %0, align 8, !tbaa !12 + store ptr %19, ptr %0, align 8, !tbaa !12 store i64 %.0.i.i, ptr %7, align 8, !tbaa !25 br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9push_backEt.exit: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i - %26 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ %20, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] - %27 = getelementptr inbounds nuw i16, ptr %26, i64 %4 - store i16 %1, ptr %27, align 2, !tbaa !3 + %25 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread.i ], [ %19, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit.i ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i ] + %26 = getelementptr inbounds nuw i16, ptr %25, i64 %4 + store i16 %1, ptr %26, align 2, !tbaa !3 store i64 %5, ptr %3, align 8, !tbaa !18 - %28 = getelementptr inbounds nuw i16, ptr %26, i64 %5 - store i16 0, ptr %28, align 2, !tbaa !3 + %27 = getelementptr inbounds nuw i16, ptr %25, i64 %5 + store i16 0, ptr %27, align 2, !tbaa !3 ret ptr %0 } @@ -3318,48 +3318,48 @@ _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exi br i1 %10, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %26 _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread: ; preds = %2 - %11 = load i64, ptr %7, align 8 - %12 = icmp ugt i64 %5, %11 - br i1 %12, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %26 + %10 = load i64, ptr %7, align 8 + %11 = icmp ugt i64 %5, %10 + br i1 %11, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i, label %25 _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread - %13 = phi i64 [ %11, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] - %14 = icmp ugt i64 %5, 2305843009213693951 - br i1 %14, label %15, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i + %12 = phi i64 [ %10, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ 7, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] + %13 = icmp ugt i64 %5, 2305843009213693951 + br i1 %13, label %14, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i -15: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i +14: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str) #18 unreachable _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.i - %16 = shl nuw nsw i64 %13, 1 - %17 = icmp samesign ult i64 %5, %16 - %spec.store.select.i.i = tail call i64 @llvm.umin.i64(i64 %16, i64 2305843009213693951) - %.0.i = select i1 %17, i64 %spec.store.select.i.i, i64 %5 - %18 = shl nuw nsw i64 %.0.i, 1 - %19 = add nuw nsw i64 %18, 2 - %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #19 + %15 = shl nuw nsw i64 %12, 1 + %16 = icmp samesign ult i64 %5, %15 + %spec.store.select.i.i = tail call i64 @llvm.umin.i64(i64 %15, i64 2305843009213693951) + %.0.i = select i1 %16, i64 %spec.store.select.i.i, i64 %5 + %17 = shl nuw nsw i64 %.0.i, 1 + %18 = add nuw nsw i64 %17, 2 + %19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %18) #19 switch i64 %4, label %23 [ i64 0, label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i - i64 1, label %21 + i64 1, label %20 ] -21: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i - %22 = load i16, ptr %6, align 2, !tbaa !3 - store i16 %22, ptr %20, align 2, !tbaa !3 +20: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i + %21 = load i16, ptr %6, align 2, !tbaa !3 + store i16 %21, ptr %19, align 2, !tbaa !3 br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i -23: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i - %24 = shl nuw nsw i64 %4, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %20, ptr readonly align 2 %6, i64 %24, i1 false) +22: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i + %23 = shl nuw nsw i64 %4, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %19, ptr readonly align 2 %6, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i -_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i, %21, %23 +_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_createERmm.exit.i, %20, %22 br i1 %8, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i - %25 = icmp samesign ult i64 %4, 8 - tail call void @llvm.assume(i1 %25) + %24 = icmp samesign ult i64 %4, 8 + tail call void @llvm.assume(i1 %24) br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE7_S_copyEPtPKtm.exit27.i @@ -3367,17 +3367,17 @@ _ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv br label %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit _ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE11_M_is_localEv.exit.i.i - store ptr %20, ptr %0, align 8, !tbaa !12 + store ptr %19, ptr %0, align 8, !tbaa !12 store i64 %.0.i, ptr %7, align 8, !tbaa !25 - br label %26 + br label %25 -26: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit - %27 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ %20, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] - %28 = getelementptr inbounds nuw i16, ptr %27, i64 %4 - store i16 %1, ptr %28, align 2, !tbaa !3 +25: ; preds = %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit + %26 = phi ptr [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit.thread ], [ %19, %_ZNSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE9_M_mutateEmmPKtm.exit ], [ %6, %_ZNKSt7__cxx1112basic_stringItN4base20string16_char_traitsESaItEE8capacityEv.exit ] + %27 = getelementptr inbounds nuw i16, ptr %26, i64 %4 + store i16 %1, ptr %27, align 2, !tbaa !3 store i64 %5, ptr %3, align 8, !tbaa !18 - %29 = getelementptr inbounds nuw i16, ptr %27, i64 %5 - store i16 0, ptr %29, align 2, !tbaa !3 + %28 = getelementptr inbounds nuw i16, ptr %26, i64 %5 + store i16 0, ptr %28, align 2, !tbaa !3 ret void } diff --git a/bench/lief/optimized/AArch64PAuth.ll b/bench/lief/optimized/AArch64PAuth.ll index b865b065815..af4b0037c21 100644 --- a/bench/lief/optimized/AArch64PAuth.ll +++ b/bench/lief/optimized/AArch64PAuth.ll @@ -10065,74 +10065,74 @@ _ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10l %31 = getelementptr inbounds nuw i8, ptr %6, i64 32 store i8 %22, ptr %31, align 8, !tbaa !217, !alias.scope !227 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !227 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %32, ptr %0, align 8, !tbaa !43 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %31, ptr %0, align 8, !tbaa !43 call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 %27, ptr %3, align 8, !tbaa !10 br label %._crit_edge.i.i _ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit: ; preds = %21 store ptr %24, ptr %6, align 8, !tbaa !45, !alias.scope !227 - %33 = load i64, ptr %25, align 8, !tbaa !47, !noalias !227 - store i64 %33, ptr %23, align 8, !tbaa !47, !alias.scope !227 + %32 = load i64, ptr %25, align 8, !tbaa !47, !noalias !227 + store i64 %32, ptr %23, align 8, !tbaa !47, !alias.scope !227 %.pre.i = load i64, ptr %13, align 8, !tbaa !48, !noalias !227 - %34 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 %.pre.i, ptr %34, align 8, !tbaa !48, !alias.scope !227 - %35 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store i8 %22, ptr %35, align 8, !tbaa !217, !alias.scope !227 + %33 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 %.pre.i, ptr %33, align 8, !tbaa !48, !alias.scope !227 + %34 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store i8 %22, ptr %34, align 8, !tbaa !217, !alias.scope !227 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !227 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %36, ptr %0, align 8, !tbaa !43 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %35, ptr %0, align 8, !tbaa !43 call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 %.pre.i, ptr %3, align 8, !tbaa !10 - %37 = icmp ugt i64 %.pre.i, 15 - br i1 %37, label %38, label %._crit_edge.i.i - -38: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit - %39 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) #23 - store ptr %39, ptr %0, align 8, !tbaa !45 - %40 = load i64, ptr %3, align 8, !tbaa !10 - store i64 %40, ptr %36, align 8, !tbaa !47 + %36 = icmp ugt i64 %.pre.i, 15 + br i1 %36, label %37, label %._crit_edge.i.i + +37: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit + %38 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) #23 + store ptr %38, ptr %0, align 8, !tbaa !45 + %39 = load i64, ptr %3, align 8, !tbaa !10 + store i64 %39, ptr %35, align 8, !tbaa !47 br label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread, %38, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit - %41 = phi ptr [ %24, %38 ], [ %24, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %23, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - %42 = phi ptr [ %35, %38 ], [ %35, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %31, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - %43 = phi i64 [ %.pre.i, %38 ], [ %.pre.i, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %27, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - %44 = phi ptr [ %39, %38 ], [ %36, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %32, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] - switch i64 %43, label %47 [ - i64 1, label %45 +._crit_edge.i.i: ; preds = %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread, %37, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit + %40 = phi ptr [ %24, %38 ], [ %24, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %23, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + %41 = phi ptr [ %34, %38 ], [ %35, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %31, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + %42 = phi i64 [ %.pre.i, %38 ], [ %.pre.i, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %27, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + %43 = phi ptr [ %39, %38 ], [ %35, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit ], [ %31, %_ZN3fmt3v106detail18thousands_sep_implIcEENS1_20thousands_sep_resultIT_EENS1_10locale_refE.exit.thread ] + switch i64 %42, label %47 [ + i64 1, label %44 i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit ] -45: ; preds = %._crit_edge.i.i - %46 = load i8, ptr %41, align 1, !tbaa !47 - store i8 %46, ptr %44, align 1, !tbaa !47 +44: ; preds = %._crit_edge.i.i + %45 = load i8, ptr %40, align 1, !tbaa !47 + store i8 %45, ptr %43, align 1, !tbaa !47 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit -47: ; preds = %._crit_edge.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %44, ptr align 1 %41, i64 %43, i1 false) +46: ; preds = %._crit_edge.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %43, ptr align 1 %40, i64 %42, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %._crit_edge.i.i, %45, %47 - %48 = load i64, ptr %3, align 8, !tbaa !10 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %48, ptr %49, align 8, !tbaa !48 - %50 = load ptr, ptr %0, align 8, !tbaa !45 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 %48 - store i8 0, ptr %51, align 1, !tbaa !47 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit: ; preds = %._crit_edge.i.i, %44, %46 + %47 = load i64, ptr %3, align 8, !tbaa !10 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %47, ptr %48, align 8, !tbaa !48 + %49 = load ptr, ptr %0, align 8, !tbaa !45 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 %47 + store i8 0, ptr %50, align 1, !tbaa !47 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %52 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %53 = load i8, ptr %42, align 8, !tbaa !217 - store i8 %53, ptr %52, align 8, !tbaa !217 - %54 = load ptr, ptr %6, align 8, !tbaa !45 - %55 = icmp eq ptr %54, %23 - br i1 %55, label %_ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %51 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %52 = load i8, ptr %41, align 8, !tbaa !217 + store i8 %52, ptr %51, align 8, !tbaa !217 + %53 = load ptr, ptr %6, align 8, !tbaa !45 + %54 = icmp eq ptr %53, %23 + br i1 %54, label %_ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit - %56 = load i64, ptr %23, align 8, !tbaa !47 - %57 = add i64 %56, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %57) #26 + %55 = load i64, ptr %23, align 8, !tbaa !47 + %56 = add i64 %55, 1 + call void @_ZdlPvm(ptr noundef %53, i64 noundef %56) #26 br label %_ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit _ZN3fmt3v106detail20thousands_sep_resultIcED2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i diff --git a/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll b/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll index a109ba84511..32e5ccd9add 100644 --- a/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll +++ b/bench/meilisearch-rs/optimized/564p8f6yhi59w8h9.ll @@ -516,7 +516,7 @@ define hidden void @"_ZN104_$LT$core..iter..adapters..cloned..Cloned$LT$I$GT$$u2 ; Function Attrs: alwaysinline nounwind nonlazybind uwtable define hidden { ptr, i64 } @"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$8allocate17ha3da7a35c6397d0dE.llvm.10588664184252717122"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #3 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %10 + br i1 %4, label %5, label %9 5: ; preds = %3 %6 = add i64 %1, -1 @@ -527,19 +527,19 @@ define hidden { ptr, i64 } @"_ZN106_$LT$allocator_api2..stable..alloc..global..G tail call void @llvm.assume(i1 %9) br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -10: ; preds = %3 - %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %12 = add i64 %1, -1 - %13 = icmp sgt i64 %12, -1 - tail call void @llvm.assume(i1 %13) - %14 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +9: ; preds = %3 + %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %11 = add i64 %1, -1 + %12 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %12) + %13 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %10 - %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] - %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 - %16 = insertvalue { ptr, i64 } %15, i64 %2, 1 - ret { ptr, i64 } %16 +_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %9 + %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %13, %10 ] + %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 + %15 = insertvalue { ptr, i64 } %14, i64 %2, 1 + ret { ptr, i64 } %15 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -553,7 +553,7 @@ define internal { i64, i64 } @"_ZN126_$LT$actix_http..body..message_body..Messag ; Function Attrs: alwaysinline nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #3 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -564,29 +564,29 @@ define hidden { ptr, i64 } @_ZN14allocator_api26stable5alloc6global6Global10allo tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 - -12: ; preds = %15, %20, %6 - %.sroa.0.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 +10: ; preds = %4 + br i1 %3, label %19, label %14 -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 - br label %12 +11: ; preds = %14, %19, %6 + %.sroa.0.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %14 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 - br label %12 +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 + br label %11 + +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #31 + br label %11 } ; Function Attrs: nonlazybind uwtable @@ -2463,7 +2463,7 @@ define hidden noalias noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17h60a7 ; Function Attrs: nounwind nonlazybind uwtable define hidden noalias noundef ptr @_ZN9hashbrown3raw5inner5alloc5inner8do_alloc17h8c3552d9c26b3df3E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #17 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %10 + br i1 %4, label %5, label %9 5: ; preds = %3 %6 = add i64 %1, -1 @@ -2474,16 +2474,16 @@ define hidden noalias noundef ptr @_ZN9hashbrown3raw5inner5alloc5inner8do_alloc1 tail call void @llvm.assume(i1 %9) br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -10: ; preds = %3 - %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %12 = add i64 %1, -1 - %13 = icmp sgt i64 %12, -1 - tail call void @llvm.assume(i1 %13) - %14 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 +9: ; preds = %3 + %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %11 = add i64 %1, -1 + %12 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %12) + %13 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #31 br label %_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit -_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %10 - %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] +_ZN14allocator_api26stable5alloc6global6Global10alloc_impl17h4b4fe1d7a8542cbbE.llvm.10588664184252717122.exit: ; preds = %5, %9 + %.sroa.0.0.i = phi ptr [ %8, %5 ], [ %13, %10 ] ret ptr %.sroa.0.0.i } diff --git a/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll b/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll index a50ada4fac4..af994ea5ff2 100644 --- a/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll +++ b/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll @@ -6489,20 +6489,20 @@ _ZN10serde_json3ser9Formatter10end_object17h16ac9c73c8dffd40E.exit: ; preds = %3 %21 = icmp eq i64 %20, %17 br i1 %21, label %22, label %23 -22: ; preds = %16 +21: ; preds = %16 tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h05fddb391e635b6fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %17, i64 noundef 1), !noalias !1683 %.pre.i.i.i.i.i6 = load i64, ptr %19, align 8, !alias.scope !1700, !noalias !1683 - br label %23 + br label %22 -23: ; preds = %22, %16 - %24 = phi i64 [ %17, %16 ], [ %.pre.i.i.i.i.i6, %22 ] - %25 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %26 = load ptr, ptr %25, align 8, !alias.scope !1700, !noalias !1683, !nonnull !9, !noundef !9 - %27 = getelementptr inbounds i8, ptr %26, i64 %24 - store i8 125, ptr %27, align 1, !noalias !1701 - %28 = load i64, ptr %19, align 8, !alias.scope !1700, !noalias !1683, !noundef !9 - %29 = add i64 %28, 1 - store i64 %29, ptr %19, align 8, !alias.scope !1700, !noalias !1683 +22: ; preds = %21, %16 + %23 = phi i64 [ %17, %16 ], [ %.pre.i.i.i.i.i6, %22 ] + %24 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %25 = load ptr, ptr %24, align 8, !alias.scope !1700, !noalias !1683, !nonnull !9, !noundef !9 + %26 = getelementptr inbounds i8, ptr %25, i64 %23 + store i8 125, ptr %26, align 1, !noalias !1701 + %27 = load i64, ptr %19, align 8, !alias.scope !1700, !noalias !1683, !noundef !9 + %28 = add i64 %27, 1 + store i64 %28, ptr %19, align 8, !alias.scope !1700, !noalias !1683 ret ptr null } diff --git a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll index 8a6776567c1..368dd5f4de8 100644 --- a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll +++ b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll @@ -1209,11 +1209,11 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %12 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 br i1 %.not.i.not.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h9d90bc93199ec4bcE.exit", label %13 -13: ; preds = %._crit_edge +13:; preds = %._crit_edge %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 808 %15 = icmp samesign ult i64 %.sroa.6.0.lcssa, 11 tail call void @llvm.assume(i1 %15) - %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 + %15 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !208, !nonnull !11, !noundef !11 %18 = add i64 %.sroa.5.0.lcssa, -1 %.not11.i.i = icmp eq i64 %18, 0 @@ -1300,11 +1300,11 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %12 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 br i1 %.not.i.not.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h36666cdcac50dfebE.exit", label %13 -13: ; preds = %._crit_edge +13:; preds = %._crit_edge %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 192 %15 = icmp samesign ult i64 %.sroa.6.0.lcssa, 11 tail call void @llvm.assume(i1 %15) - %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 + %15 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !221, !nonnull !11, !noundef !11 %18 = add i64 %.sroa.5.0.lcssa, -1 %.not11.i.i = icmp eq i64 %18, 0 diff --git a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll index ec324e76bda..7197de9414d 100644 --- a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll +++ b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll @@ -61,7 +61,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern 13: ; preds = %3 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - br label %30 + br label %29 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit": ; preds = %3 %14 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %1, i64 noundef %5, i64 noundef %9, i8 noundef 1, i8 noundef 0), !noalias !4 @@ -92,34 +92,34 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern store i64 %5, ptr %25, align 8, !alias.scope !23, !noalias !22 call void @_ZN15crossbeam_epoch8internal5Local5defer17h63f66b08c2fc0a6aE(ptr noundef nonnull align 8 %22, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2), !noalias !7 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !22 - br label %28 + br label %27 26: ; preds = %21 %27 = icmp ne i64 %6, 0 tail call void @llvm.assume(i1 %27) tail call void @__rust_dealloc(ptr noundef nonnull %7, i64 noundef 2072, i64 noundef 8) #22, !noalias !26 - br label %28 + br label %27 -28: ; preds = %26, %24 +27: ; preds = %26, %24 %.sroa.4.8.copyload = load i64, ptr %11, align 8, !noalias !35 %.sroa.7.8..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 %.sroa.7.8.copyload = load i64, ptr %.sroa.7.8..sroa_idx, align 8, !noalias !35 %.sroa.8.8..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !36) - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.4.8.copyload, ptr %29, align 8, !alias.scope !39 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.4.8.copyload, ptr %28, align 8, !alias.scope !39 %.sroa.7.8..sroa_idx5 = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %.sroa.7.8.copyload, ptr %.sroa.7.8..sroa_idx5, align 8, !alias.scope !39 %.sroa.8.8..sroa_idx7 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2048) %.sroa.8.8..sroa_idx7, ptr noundef nonnull align 8 dereferenceable(2048) %.sroa.8.8..sroa_idx, i64 2048, i1 false) br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit": ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit", %28 +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit": ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit", %27 %storemerge.i3 = phi i64 [ 0, %28 ], [ 1, %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit" ] store i64 %storemerge.i3, ptr %0, align 8, !alias.scope !41, !noalias !36 - br label %30 + br label %29 -30: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit", %13 +29: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit", %13 ret void } @@ -174,7 +174,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern br label %_ZN15crossbeam_epoch5guard5Guard15defer_unchecked17hef6a54156fe241f4E.exit _ZN15crossbeam_epoch5guard5Guard15defer_unchecked17hef6a54156fe241f4E.exit: ; preds = %26, %28 - %32 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %31 = getelementptr inbounds nuw i8, ptr %1, i64 32 %33 = load ptr, ptr %32, align 8, !nonnull !21, !align !42, !noundef !21 %34 = load ptr, ptr %33, align 8, !nonnull !21, !align !42, !noundef !21 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %0, ptr noundef nonnull align 8 dereferenceable(2064) %34, i64 2064, i1 false) @@ -213,18 +213,18 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc br i1 %17, label %.lr.ph._crit_edge, label %"_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit" .lr.ph._crit_edge: ; preds = %.lr.ph, %.lr.ph.preheader - %.lcssa69 = phi i64 [ %10, %.lr.ph.preheader ], [ %34, %.lr.ph ] - %.lcssa67 = phi i64 [ %9, %.lr.ph.preheader ], [ %33, %.lr.ph ] - %.lcssa65 = phi ptr [ %7, %.lr.ph.preheader ], [ %31, %.lr.ph ] + %.lcssa63 = phi i64 [ %10, %.lr.ph.preheader ], [ %34, %.lr.ph ] + %.lcssa61 = phi i64 [ %9, %.lr.ph.preheader ], [ %33, %.lr.ph ] + %.lcssa59 = phi ptr [ %7, %.lr.ph.preheader ], [ %31, %.lr.ph ] %.lcssa = phi i64 [ %5, %.lr.ph.preheader ], [ %29, %.lr.ph ] - %18 = inttoptr i64 %.lcssa69 to ptr + %18 = inttoptr i64 %.lcssa63 to ptr %19 = getelementptr inbounds nuw i8, ptr %1, i64 128 %20 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %19, i8 noundef 0), !noalias !69 %21 = icmp eq i64 %.lcssa, %20 br i1 %21, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i", label %23 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i": ; preds = %.lr.ph._crit_edge - %22 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %19, i64 noundef %.lcssa, i64 noundef %.lcssa67, i8 noundef 1, i8 noundef 0), !noalias !77 + %22 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %19, i64 noundef %.lcssa, i64 noundef %.lcssa61, i8 noundef 1, i8 noundef 0), !noalias !77 br label %23 23: ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i", %.lr.ph._crit_edge @@ -243,7 +243,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread30" 28: ; preds = %23 - tail call void @__rust_dealloc(ptr noundef nonnull %.lcssa65, i64 noundef 2072, i64 noundef 8) #22, !noalias !88 + tail call void @__rust_dealloc(ptr noundef nonnull %.lcssa59, i64 noundef 2072, i64 noundef 8) #22, !noalias !88 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread30" "_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread30": ; preds = %26, %28 @@ -2715,7 +2715,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 %4 = alloca { ptr, { [3 x i64] }, {} }, align 8 %5 = load i64, ptr %1, align 8, !range !132, !noundef !21 %trunc = trunc nuw i64 %5 to i1 - br i1 %trunc, label %32, label %6 + br i1 %trunc, label %31, label %6 6: ; preds = %3 %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !21, !noundef !21 @@ -2772,26 +2772,26 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" "_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit": ; preds = %23, %25 - %29 = icmp ne ptr %.sroa.7.0.copyload, null - tail call void @llvm.assume(i1 %29) - %30 = load ptr, ptr %.sroa.7.0.copyload, align 8, !noalias !679, !nonnull !21, !align !42, !noundef !21 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %31, ptr noundef nonnull align 8 dereferenceable(2064) %30, i64 2064, i1 false) - br label %39 - -32: ; preds = %3 - %33 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %34 = load i64, ptr %33, align 8, !noundef !21 - %35 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %36 = load i64, ptr %35, align 8, !noundef !21 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %34, ptr %37, align 8 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %36, ptr %38, align 8 - br label %39 - -39: ; preds = %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit", %32 - %storemerge = phi i64 [ 0, %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" ], [ 1, %32 ] + %28 = icmp ne ptr %.sroa.7.0.copyload, null + tail call void @llvm.assume(i1 %28) + %29 = load ptr, ptr %.sroa.7.0.copyload, align 8, !noalias !679, !nonnull !21, !align !42, !noundef !21 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %30, ptr noundef nonnull align 8 dereferenceable(2064) %29, i64 2064, i1 false) + br label %38 + +31: ; preds = %3 + %32 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %33 = load i64, ptr %32, align 8, !noundef !21 + %34 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %35 = load i64, ptr %34, align 8, !noundef !21 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %33, ptr %36, align 8 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %35, ptr %37, align 8 + br label %38 + +38: ; preds = %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit", %31 + %storemerge = phi i64 [ 0, %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" ], [ 1, %31 ] store i64 %storemerge, ptr %0, align 8 ret void } diff --git a/bench/mitsuba3/optimized/codeholder.ll b/bench/mitsuba3/optimized/codeholder.ll index 7690c55a7a3..68a9410a89a 100644 --- a/bench/mitsuba3/optimized/codeholder.ll +++ b/bench/mitsuba3/optimized/codeholder.ll @@ -1217,7 +1217,7 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl 7: ; preds = %3 store ptr %1, ptr %0, align 8, !tbaa !99 - br label %148 + br label %147 8: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -1232,12 +1232,12 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 br label %15 -15: ; preds = %131, %8 +15: ; preds = %130, %8 %16 = phi ptr [ null, %8 ], [ %17, %131 ] %17 = phi ptr [ null, %8 ], [ %55, %131 ] - %18 = phi ptr [ %4, %8 ], [ %138, %131 ] - %19 = phi ptr [ %5, %8 ], [ %142, %131 ] - %20 = phi i64 [ 0, %8 ], [ %136, %131 ] + %18 = phi ptr [ %4, %8 ], [ %137, %131 ] + %19 = phi ptr [ %5, %8 ], [ %141, %131 ] + %20 = phi i64 [ 0, %8 ], [ %135, %131 ] %21 = phi i64 [ 0, %8 ], [ %20, %131 ] %22 = icmp eq ptr %19, null br i1 %22, label %23, label %28 @@ -1296,13 +1296,13 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %58 = icmp eq i64 %57, 0 %59 = icmp eq ptr %17, null %60 = or i1 %59, %58 - br i1 %60, label %129, label %61 + br i1 %60, label %128, label %61 61: ; preds = %54 %62 = load i64, ptr %17, align 8, !tbaa !104 %63 = and i64 %62, 1 %64 = icmp eq i64 %63, 0 - br i1 %64, label %129, label %65 + br i1 %64, label %128, label %65 65: ; preds = %61 %66 = icmp ne ptr %16, null @@ -1331,12 +1331,12 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %87 = and i64 %86, -2 br i1 %75, label %88, label %91 -88: ; preds = %65 +88:; preds = %65 %89 = and i64 %81, 1 %90 = or disjoint i64 %87, %89 br label %113 -91: ; preds = %65 +91:; preds = %65 %92 = inttoptr i64 %87 to ptr %93 = icmp ne i64 %87, 0 tail call void @llvm.assume(i1 %93) @@ -1366,13 +1366,13 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %112 = or disjoint i64 %111, %107 br label %113 -113: ; preds = %91, %88 - %114 = phi i64 [ %112, %91 ], [ %90, %88 ] - %115 = phi ptr [ %109, %91 ], [ %85, %88 ] +113:; preds = %91, %88 + %115 = phi i64 [ %112, %91 ], [ %90, %88 ] + %116 = phi ptr [ %109, %91 ], [ %85, %88 ] %116 = phi ptr [ %92, %91 ], [ %83, %88 ] %117 = phi i64 [ %87, %91 ], [ %82, %88 ] store i64 %114, ptr %80, align 8, !tbaa !104 - %118 = load i64, ptr %115, align 8, !tbaa !104 + %118 = load i64, ptr %116, align 8, !tbaa !104 %119 = and i64 %118, 1 %120 = ptrtoint ptr %16 to i64 %121 = or i64 %119, %120 @@ -1384,41 +1384,41 @@ define linkonce_odr hidden void @_ZN6asmjit9_abi_1_108ZoneTreeINS0_17AddressTabl %125 = and i64 %124, -2 store i64 %125, ptr %116, align 8, !tbaa !104 %.sroa.sel = select i1 %70, ptr %67, ptr %18 - %126 = load i64, ptr %.sroa.sel, align 8, !tbaa !104 - %127 = and i64 %126, 1 - %128 = or disjoint i64 %127, %117 - store i64 %128, ptr %.sroa.sel, align 8, !tbaa !104 - br label %129 - -129: ; preds = %113, %61, %54 - %130 = icmp eq ptr %55, %1 - br i1 %130, label %143, label %131 - -131: ; preds = %129 - %132 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %133 = load i64, ptr %132, align 8, !tbaa !100 - %134 = load i64, ptr %14, align 8, !tbaa !100 - %135 = icmp ult i64 %133, %134 - %136 = zext i1 %135 to i64 - %137 = icmp eq ptr %16, null - %138 = select i1 %137, ptr %18, ptr %16 - %139 = getelementptr inbounds nuw i64, ptr %55, i64 %136 - %140 = load i64, ptr %139, align 8, !tbaa !104 - %141 = and i64 %140, -2 - %142 = inttoptr i64 %141 to ptr + %125 = load i64, ptr %.sroa.sel, align 8, !tbaa !104 + %126 = and i64 %125, 1 + %127 = or disjoint i64 %126, %117 + store i64 %127, ptr %.sroa.sel, align 8, !tbaa !104 + br label %128 + +128: ; preds = %113, %61, %54 + %129 = icmp eq ptr %55, %1 + br i1 %129, label %142, label %130 + +130: ; preds = %128 + %131 = getelementptr inbounds nuw i8, ptr %55, i64 16 + %132 = load i64, ptr %131, align 8, !tbaa !100 + %133 = load i64, ptr %14, align 8, !tbaa !100 + %134 = icmp ult i64 %132, %133 + %135 = zext i1 %134 to i64 + %136 = icmp eq ptr %16, null + %137 = select i1 %136, ptr %18, ptr %16 + %138 = getelementptr inbounds nuw i64, ptr %55, i64 %135 + %139 = load i64, ptr %138, align 8, !tbaa !104 + %140 = and i64 %139, -2 + %141 = inttoptr i64 %140 to ptr br label %15, !llvm.loop !110 -143: ; preds = %129 - %144 = load i64, ptr %10, align 8, !tbaa !104 - %145 = inttoptr i64 %144 to ptr - store ptr %145, ptr %0, align 8, !tbaa !99 - %146 = load i64, ptr %145, align 8, !tbaa !104 - %147 = and i64 %146, -2 - store i64 %147, ptr %145, align 8, !tbaa !104 +142: ; preds = %128 + %143 = load i64, ptr %10, align 8, !tbaa !104 + %144 = inttoptr i64 %143 to ptr + store ptr %144, ptr %0, align 8, !tbaa !99 + %145 = load i64, ptr %144, align 8, !tbaa !104 + %146 = and i64 %145, -2 + store i64 %146, ptr %144, align 8, !tbaa !104 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %148 + br label %147 -148: ; preds = %143, %7 +147: ; preds = %142, %7 ret void } diff --git a/bench/mold/optimized/cmdline.cc.X86_64.ll b/bench/mold/optimized/cmdline.cc.X86_64.ll index bbbf8f10a11..634c5155f75 100644 --- a/bench/mold/optimized/cmdline.cc.X86_64.ll +++ b/bench/mold/optimized/cmdline.cc.X86_64.ll @@ -2144,29 +2144,29 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %88, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %89 = icmp ult i64 %83, 16 - call void @llvm.assume(i1 %89) + %.not.i.i.i = icmp ult i64 %83, 16 + call void @llvm.assume(i1 %.not.i.i.i) %.not.i.i.i = icmp eq i64 %83, 15 br i1 %.not.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %90 = load i64, ptr %50, align 8 - %.not.i.i.i62 = icmp ugt i64 %86, %90 + %89 = load i64, ptr %50, align 8 + %.not.i.i.i62 = icmp ugt i64 %86, %89 br i1 %.not.i.i.i62, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc.exit.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i +90: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i %91 = load i64, ptr %50, align 8 - br label %94 + br label %96 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread %92 = icmp slt i64 %83, -1 br i1 %92, label %93, label %94 -93: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 +95: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.428) #32 unreachable -94: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 +96: ; preds = %90, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 %95 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread ], [ %90, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 ] %96 = phi i64 [ %91, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36.thread ], [ %90, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36 ] %97 = shl nuw i64 %95, 1 @@ -2177,11 +2177,11 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i36: ; pr %100 = icmp slt i64 %99, 0 br i1 %100, label %101, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i38, !prof !32 -101: ; preds = %94 +101: ; preds = %96 call void @_ZSt17__throw_bad_allocv() #32 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i38: ; preds = %94 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i38: ; preds = %96 %102 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %99) #33 switch i64 %83, label %105 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i42 @@ -2246,29 +2246,29 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %120, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i12.i - %121 = icmp ult i64 %115, 16 - call void @llvm.assume(i1 %121) + %.not.i.i14.i = icmp ult i64 %115, 16 + call void @llvm.assume(i1 %.not.i.i14.i) %.not.i.i14.i = icmp eq i64 %115, 15 br i1 %.not.i.i14.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit18.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i12.i - %122 = load i64, ptr %50, align 8 - %.not.i.i14.i63 = icmp ugt i64 %118, %122 + %121 = load i64, ptr %50, align 8 + %.not.i.i14.i63 = icmp ugt i64 %118, %121 br i1 %.not.i.i14.i63, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit18.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i +122: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i %123 = load i64, ptr %50, align 8 - br label %126 + br label %128 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i13.i.thread %124 = icmp slt i64 %115, -1 br i1 %124, label %125, label %126 -125: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +127: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.428) #32 unreachable -126: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +128: ; preds = %122, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i %127 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %122, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %128 = phi i64 [ %123, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %122, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %129 = shl nuw i64 %127, 1 @@ -2279,11 +2279,11 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred %132 = icmp slt i64 %131, 0 br i1 %132, label %133, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i, !prof !32 -133: ; preds = %126 +133: ; preds = %128 call void @_ZSt17__throw_bad_allocv() #32 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %126 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %128 %134 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %131) #33 switch i64 %115, label %137 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i diff --git a/bench/msgpack/optimized/msgpack_variant_mapbased.ll b/bench/msgpack/optimized/msgpack_variant_mapbased.ll index 00962005869..7071755bce3 100644 --- a/bench/msgpack/optimized/msgpack_variant_mapbased.ll +++ b/bench/msgpack/optimized/msgpack_variant_mapbased.ll @@ -13540,7 +13540,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds store ptr %38, ptr %10, align 8, !tbaa !4, !alias.scope !331 %126 = load ptr, ptr %11, align 8, !tbaa !32, !noalias !331 %127 = icmp eq ptr %126, %36 - br i1 %127, label %.thread, label %131 + br i1 %127, label %.thread, label %130 .thread: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i %128 = load i64, ptr %37, align 8, !tbaa !10, !noalias !331 @@ -13554,105 +13554,105 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i: ; preds store ptr %41, ptr %40, align 8, !tbaa !4 br label %._crit_edge.i.i.i.i.i.i -131: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i +130: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc.exit.i store ptr %126, ptr %10, align 8, !tbaa !32, !alias.scope !331 - %132 = load i64, ptr %36, align 8, !tbaa !13, !noalias !331 - store i64 %132, ptr %38, align 8, !tbaa !13, !alias.scope !331 + %131 = load i64, ptr %36, align 8, !tbaa !13, !noalias !331 + store i64 %131, ptr %38, align 8, !tbaa !13, !alias.scope !331 %.pre.i = load i64, ptr %37, align 8, !tbaa !10, !noalias !331 store i64 %.pre.i, ptr %39, align 8, !tbaa !10, !alias.scope !331 store ptr %36, ptr %11, align 8, !tbaa !32, !noalias !331 store i64 0, ptr %37, align 8, !tbaa !10, !noalias !331 store i8 0, ptr %36, align 8, !tbaa !13, !noalias !331 store ptr %41, ptr %40, align 8, !tbaa !4 - %133 = icmp ugt i64 %.pre.i, 15 - br i1 %133, label %134, label %._crit_edge.i.i.i.i.i.i + %132 = icmp ugt i64 %.pre.i, 15 + br i1 %132, label %133, label %._crit_edge.i.i.i.i.i.i -134: ; preds = %131 - %135 = icmp slt i64 %.pre.i, 0 - br i1 %135, label %.noexc.i.i.i.i.i, label %136 +133: ; preds = %130 + %134 = icmp slt i64 %.pre.i, 0 + br i1 %134, label %.noexc.i.i.i.i.i, label %135 -.noexc.i.i.i.i.i: ; preds = %134 +.noexc.i.i.i.i.i: ; preds = %133 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.9) #32 to label %.noexc64 unwind label %.loopexit.split-lp108 .noexc64: ; preds = %.noexc.i.i.i.i.i unreachable -136: ; preds = %134 - %137 = add nuw i64 %.pre.i, 1 - %138 = icmp slt i64 %137, 0 - br i1 %138, label %.noexc6.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i, !prof !114 +135: ; preds = %133 + %136 = add nuw i64 %.pre.i, 1 + %137 = icmp slt i64 %136, 0 + br i1 %137, label %.noexc6.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i, !prof !114 -.noexc6.i.i.i.i.i: ; preds = %136 +.noexc6.i.i.i.i.i: ; preds = %135 invoke void @_ZSt17__throw_bad_allocv() #32 to label %.noexc65 unwind label %.loopexit.split-lp108 .noexc65: ; preds = %.noexc6.i.i.i.i.i unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i: ; preds = %136 - %139 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %137) #35 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i: ; preds = %135 + %138 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %136) #35 to label %.noexc66 unwind label %.loopexit107 .noexc66: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i - store ptr %139, ptr %40, align 8, !tbaa !32 + store ptr %138, ptr %40, align 8, !tbaa !32 store i64 %.pre.i, ptr %41, align 8, !tbaa !13 br label %._crit_edge.i.i.i.i.i.i -._crit_edge.i.i.i.i.i.i: ; preds = %.thread, %.noexc66, %131 - %140 = phi i64 [ %.pre.i, %.noexc66 ], [ %.pre.i, %131 ], [ %128, %.thread ] - %141 = phi ptr [ %126, %.noexc66 ], [ %126, %131 ], [ %38, %.thread ] - %142 = phi ptr [ %139, %.noexc66 ], [ %41, %131 ], [ %41, %.thread ] - switch i64 %140, label %145 [ - i64 1, label %143 - i64 0, label %146 +._crit_edge.i.i.i.i.i.i: ; preds = %.thread, %.noexc66, %130 + %139 = phi i64 [ %.pre.i, %.noexc66 ], [ %.pre.i, %131 ], [ %128, %.thread ] + %140 = phi ptr [ %126, %.noexc66 ], [ %126, %131 ], [ %38, %.thread ] + %141 = phi ptr [ %138, %.noexc66 ], [ %41, %131 ], [ %41, %.thread ] + switch i64 %139, label %145 [ + i64 1, label %142 + i64 0, label %145 ] -143: ; preds = %._crit_edge.i.i.i.i.i.i - %144 = load i8, ptr %141, align 1, !tbaa !13 - store i8 %144, ptr %142, align 1, !tbaa !13 - br label %146 +142: ; preds = %._crit_edge.i.i.i.i.i.i + %143 = load i8, ptr %140, align 1, !tbaa !13 + store i8 %143, ptr %141, align 1, !tbaa !13 + br label %145 -145: ; preds = %._crit_edge.i.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %142, ptr align 1 %141, i64 %140, i1 false) - br label %146 +144: ; preds = %._crit_edge.i.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %141, ptr align 1 %140, i64 %139, i1 false) + br label %145 -146: ; preds = %145, %143, %._crit_edge.i.i.i.i.i.i - store i64 %140, ptr %42, align 8, !tbaa !10 - %147 = getelementptr inbounds nuw i8, ptr %142, i64 %140 - store i8 0, ptr %147, align 1, !tbaa !13 +145: ; preds = %144, %142, %._crit_edge.i.i.i.i.i.i + store i64 %139, ptr %42, align 8, !tbaa !10 + %146 = getelementptr inbounds nuw i8, ptr %141, i64 %139 + store i8 0, ptr %146, align 1, !tbaa !13 store i32 5, ptr %9, align 8, !tbaa !234 invoke void @_ZN5boost7variantIN7msgpack2v14type5nil_tEJblmdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16basic_string_refIcS8_EESt6vectorIcS9_ENS3_7raw_refENS3_3extENS3_7ext_refENS_17recursive_wrapperISD_INS3_13basic_variantISC_SF_SH_EESaISK_EEEENSI_ISt3mapISK_SK_St4lessISK_ESaISt4pairIKSK_SK_EEEEENSI_ISt8multimapISK_SK_SQ_SU_EEEEE14variant_assignEOS10_(ptr noundef nonnull align 8 dereferenceable(40) %84, ptr noundef nonnull align 8 dereferenceable(40) %9) - to label %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit unwind label %157 + to label %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit unwind label %156 -_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit: ; preds = %146 +_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit: ; preds = %145 call void @_ZN5boost7variantIN7msgpack2v14type5nil_tEJblmdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16basic_string_refIcS8_EESt6vectorIcS9_ENS3_7raw_refENS3_3extENS3_7ext_refENS_17recursive_wrapperISD_INS3_13basic_variantISC_SF_SH_EESaISK_EEEENSI_ISt3mapISK_SK_St4lessISK_ESaISt4pairIKSK_SK_EEEEENSI_ISt8multimapISK_SK_SQ_SU_EEEEE15destroy_contentEv(ptr noundef nonnull align 8 dereferenceable(40) %9) #30 - %148 = load ptr, ptr %10, align 8, !tbaa !32 - %149 = icmp eq ptr %148, %38 - br i1 %149, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 + %147 = load ptr, ptr %10, align 8, !tbaa !32 + %148 = icmp eq ptr %147, %38 + br i1 %148, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68: ; preds = %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit - %150 = load i64, ptr %38, align 8, !tbaa !13 - %151 = add i64 %150, 1 - call void @_ZdlPvm(ptr noundef %148, i64 noundef %151) #31 + %149 = load i64, ptr %38, align 8, !tbaa !13 + %150 = add i64 %149, 1 + call void @_ZdlPvm(ptr noundef %147, i64 noundef %150) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZN7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEEaSEOSA_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i68 - %152 = load ptr, ptr %11, align 8, !tbaa !32 - %153 = icmp eq ptr %152, %36 - br i1 %153, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 + %151 = load ptr, ptr %11, align 8, !tbaa !32 + %152 = icmp eq ptr %151, %36 + br i1 %152, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %154 = load i64, ptr %36, align 8, !tbaa !13 - %155 = add i64 %154, 1 - call void @_ZdlPvm(ptr noundef %152, i64 noundef %155) #31 + %153 = load i64, ptr %36, align 8, !tbaa !13 + %154 = add i64 %153, 1 + call void @_ZdlPvm(ptr noundef %151, i64 noundef %154) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i69 call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) - %156 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.091.0137) #36 + %155 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.091.0137) #36 br label %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit53.thread .loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i @@ -13678,41 +13678,41 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71: ; preds = %_ZN .loopexit107: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i.i.i %lpad.loopexit109 = landingpad { ptr, i32 } cleanup - br label %159 + br label %158 .loopexit.split-lp108: ; preds = %.noexc.i.i.i.i.i, %.noexc6.i.i.i.i.i %lpad.loopexit.split-lp110 = landingpad { ptr, i32 } cleanup - br label %159 + br label %158 -157: ; preds = %146 - %158 = landingpad { ptr, i32 } +156: ; preds = %145 + %157 = landingpad { ptr, i32 } cleanup call void @_ZN5boost7variantIN7msgpack2v14type5nil_tEJblmdNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16basic_string_refIcS8_EESt6vectorIcS9_ENS3_7raw_refENS3_3extENS3_7ext_refENS_17recursive_wrapperISD_INS3_13basic_variantISC_SF_SH_EESaISK_EEEENSI_ISt3mapISK_SK_St4lessISK_ESaISt4pairIKSK_SK_EEEEENSI_ISt8multimapISK_SK_SQ_SU_EEEEE15destroy_contentEv(ptr noundef nonnull align 8 dereferenceable(40) %9) #30 - br label %159 - -159: ; preds = %.loopexit107, %.loopexit.split-lp108, %157 - %.pn = phi { ptr, i32 } [ %158, %157 ], [ %lpad.loopexit109, %.loopexit107 ], [ %lpad.loopexit.split-lp110, %.loopexit.split-lp108 ] - %160 = load ptr, ptr %10, align 8, !tbaa !32 - %161 = icmp eq ptr %160, %38 - br i1 %161, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72: ; preds = %159 - %162 = load i64, ptr %38, align 8, !tbaa !13 - %163 = add i64 %162, 1 - call void @_ZdlPvm(ptr noundef %160, i64 noundef %163) #31 + br label %158 + +158: ; preds = %.loopexit107, %.loopexit.split-lp108, %156 + %.pn = phi { ptr, i32 } [ %157, %157 ], [ %lpad.loopexit109, %.loopexit107 ], [ %lpad.loopexit.split-lp110, %.loopexit.split-lp108 ] + %159 = load ptr, ptr %10, align 8, !tbaa !32 + %160 = icmp eq ptr %159, %38 + br i1 %160, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72: ; preds = %158 + %161 = load i64, ptr %38, align 8, !tbaa !13 + %162 = add i64 %161, 1 + call void @_ZdlPvm(ptr noundef %159, i64 noundef %162) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74: ; preds = %159, %.loopexit102, %.loopexit.split-lp103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74: ; preds = %158, %.loopexit102, %.loopexit.split-lp103, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 %.pn.pn = phi { ptr, i32 } [ %.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i72 ], [ %lpad.loopexit.split-lp105, %.loopexit.split-lp103 ], [ %lpad.loopexit104, %.loopexit102 ], [ %.pn, %159 ] - %164 = load ptr, ptr %11, align 8, !tbaa !32 - %165 = icmp eq ptr %164, %36 - br i1 %165, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75 + %163 = load ptr, ptr %11, align 8, !tbaa !32 + %164 = icmp eq ptr %163, %36 + br i1 %164, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74 - %166 = load i64, ptr %36, align 8, !tbaa !13 - %167 = add i64 %166, 1 - call void @_ZdlPvm(ptr noundef %164, i64 noundef %167) #31 + %165 = load i64, ptr %36, align 8, !tbaa !13 + %166 = add i64 %165, 1 + call void @_ZdlPvm(ptr noundef %163, i64 noundef %166) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit74, %.loopexit, %.loopexit.split-lp, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i75 @@ -13723,9 +13723,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit77: ; preds = %_ZN br label %common.resume _ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit53.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i42, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %_ZNK7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEE19as_boost_string_refEv.exit, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i49, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit46, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit39.thread - %.sroa.091.1 = phi ptr [ %77, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit39.thread ], [ %78, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit46 ], [ %156, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i49 ], [ %.sroa.091.0137, %_ZNK7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEE19as_boost_string_refEv.exit ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i42 ] - %168 = icmp eq ptr %.sroa.091.1, %34 - br i1 %168, label %._crit_edge, label %55, !llvm.loop !334 + %.sroa.091.1 = phi ptr [ %77, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit39.thread ], [ %78, %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit46 ], [ %155, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit71 ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i49 ], [ %.sroa.091.0137, %_ZNK7msgpack2v14type13basic_variantIN5boost16basic_string_refIcSt11char_traitsIcEEENS1_7raw_refENS1_7ext_refEE19as_boost_string_refEv.exit ], [ %.sroa.091.0137, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i42 ] + %167 = icmp eq ptr %.sroa.091.1, %34 + br i1 %167, label %._crit_edge, label %55, !llvm.loop !334 ._crit_edge: ; preds = %_ZN5boosteqIcSt11char_traitsIcEEEbNS_16basic_string_refIT_T0_EEPKS4_.exit53.thread, %_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_.exit ret void diff --git a/bench/nix/optimized/archive.ll b/bench/nix/optimized/archive.ll index 149d6fe478f..fe3edce8b5d 100644 --- a/bench/nix/optimized/archive.ll +++ b/bench/nix/optimized/archive.ll @@ -3892,25 +3892,25 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %713, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %714 = icmp ult i64 %709, 16 - call void @llvm.assume(i1 %714) + %.not.i.i.i.i = icmp ult i64 %709, 16 + call void @llvm.assume(i1 %.not.i.i.i.i) %.not.i.i.i.i.not = icmp eq i64 %709, 0 br i1 %.not.i.i.i.i.not, label %716, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %715 = load i64, ptr %158, align 8 - %.not.i.i.i.i631 = icmp ugt i64 %711, %715 - br i1 %.not.i.i.i.i631, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, label %716 + %714 = load i64, ptr %158, align 8 + %.not.i.i.i.i631 = icmp ugt i64 %711, %714 + br i1 %.not.i.i.i.i631, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, label %715 -716: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i - %717 = getelementptr inbounds i8, ptr %712, i64 %709 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %717, ptr noundef nonnull align 1 dereferenceable(15) @.str.54, i64 15, i1 false) +715: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i + %716 = getelementptr inbounds i8, ptr %712, i64 %709 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %716, ptr noundef nonnull align 1 dereferenceable(15) @.str.54, i64 15, i1 false) %.pre1034 = load ptr, ptr %26, align 8 br label %731 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.thread %718 = icmp slt i64 %709, -15 - br i1 %718, label %.invoke1212, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread + br i1 %718, label %.invoke1212, label %720 .invoke1212: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508, %708, %445 %719 = phi ptr [ @.str.18, %708 ], [ @.str.17, %445 ], [ @.str.17, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 ] @@ -3920,7 +3920,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508: ; p .cont1213: ; preds = %.invoke1212 unreachable -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 +720: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 %720 = phi i64 [ %715, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508 ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i ] %721 = shl nuw i64 %720, 1 %722 = icmp ult i64 %711, %721 @@ -3930,14 +3930,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thre %724 = icmp slt i64 %723, 0 br i1 %724, label %.invoke1210, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i510 -.invoke1210: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread, %447 +.invoke1210: ; preds = %720, %447 invoke void @_ZSt17__throw_bad_allocv() #37 to label %.cont1211 unwind label %.loopexit.split-lp719.loopexit.split-lp .cont1211: ; preds = %.invoke1210 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i510: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i508.thread +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i510: ; preds = %720 %725 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %723) #36 to label %.noexc517 unwind label %.loopexit718 @@ -3975,7 +3975,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i51 store i64 %.0.i509, ptr %158, align 8 br label %731 -731: ; preds = %.noexc330, %716 +731: ; preds = %.noexc330, %715 %732 = phi ptr [ %725, %.noexc330 ], [ %.pre1034, %716 ] store i64 %711, ptr %159, align 8 %733 = getelementptr inbounds i8, ptr %732, i64 %711 diff --git a/bench/nix/optimized/git.ll b/bench/nix/optimized/git.ll index 715c09d4dd7..71b34ecb948 100644 --- a/bench/nix/optimized/git.ll +++ b/bench/nix/optimized/git.ll @@ -14034,7 +14034,7 @@ define internal void @"_ZNSt17_Function_handlerIFvRKNSt7__cxx1112basic_stringIcS call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) %6 = load i32, ptr %5, align 8 %7 = icmp eq i32 %6, 16384 - br i1 %7, label %8, label %39 + br i1 %7, label %8, label %38 8: ; preds = %3 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -14052,63 +14052,63 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i br i1 %16, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i: ; preds = %8 - %17 = load i64, ptr %13, align 8 - %18 = icmp ugt i64 %11, %17 - br i1 %18, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i + %16 = load i64, ptr %13, align 8 + %17 = icmp ugt i64 %11, %16 + br i1 %17, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i - %19 = phi i64 [ %17, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ] - %20 = icmp slt i64 %11, 0 - br i1 %20, label %21, label %22 + %18 = phi i64 [ %16, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ] + %19 = icmp slt i64 %11, 0 + br i1 %19, label %20, label %21 -21: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i +20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.73) #27 - to label %.noexc5.i.i.i unwind label %37 + to label %.noexc5.i.i.i unwind label %36 -.noexc5.i.i.i: ; preds = %21 +.noexc5.i.i.i: ; preds = %20 unreachable -22: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i - %23 = shl nuw i64 %19, 1 - %24 = icmp ult i64 %11, %23 - %spec.store.select.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %23, i64 9223372036854775807) - %.0.i.i.i.i = select i1 %24, i64 %spec.store.select.i.i.i.i.i, i64 %11 - %25 = add nuw i64 %.0.i.i.i.i, 1 - %26 = icmp slt i64 %25, 0 - br i1 %26, label %27, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i - -27: ; preds = %22 +21: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i + %22 = shl nuw i64 %18, 1 + %23 = icmp ult i64 %11, %22 + %spec.store.select.i.i.i.i.i = call i64 @llvm.umin.i64(i64 %22, i64 9223372036854775807) + %.0.i.i.i.i = select i1 %23, i64 %spec.store.select.i.i.i.i.i, i64 %11 + %24 = add nuw i64 %.0.i.i.i.i, 1 + %25 = icmp slt i64 %24, 0 + br i1 %25, label %26, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i + +26: ; preds = %21 invoke void @_ZSt17__throw_bad_allocv() #27 - to label %.noexc6.i.i.i unwind label %37 + to label %.noexc6.i.i.i unwind label %36 -.noexc6.i.i.i: ; preds = %27 +.noexc6.i.i.i: ; preds = %26 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i: ; preds = %22 - %28 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %25) #28 - to label %.noexc7.i.i.i unwind label %37 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i: ; preds = %21 + %27 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %24) #28 + to label %.noexc7.i.i.i unwind label %36 .noexc7.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i switch i64 %10, label %31 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i - i64 1, label %29 + i64 1, label %28 ] -29: ; preds = %.noexc7.i.i.i - %30 = load i8, ptr %12, align 1 - store i8 %30, ptr %28, align 1 +28: ; preds = %.noexc7.i.i.i + %29 = load i8, ptr %12, align 1 + store i8 %29, ptr %27, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i -31: ; preds = %.noexc7.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %28, ptr align 1 %12, i64 %10, i1 false) +30: ; preds = %.noexc7.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %27, ptr align 1 %12, i64 %10, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i: ; preds = %31, %29, %.noexc7.i.i.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i: ; preds = %30, %28, %.noexc7.i.i.i br i1 %14, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i - %32 = icmp samesign ult i64 %10, 16 - call void @llvm.assume(i1 %32) + %31 = icmp samesign ult i64 %10, 16 + call void @llvm.assume(i1 %31) br label %.noexc.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i.i.i.i @@ -14116,42 +14116,42 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3. br label %.noexc.i.i.i .noexc.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i3.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i - store ptr %28, ptr %4, align 8 + store ptr %27, ptr %4, align 8 store i64 %.0.i.i.i.i, ptr %13, align 8 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i: ; preds = %.noexc.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i - %33 = phi ptr [ %28, %.noexc.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ] - %34 = getelementptr inbounds i8, ptr %33, i64 %10 - store i8 47, ptr %34, align 1 + %32 = phi ptr [ %27, %.noexc.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.i.i ], [ %12, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread.i.i.i ] + %33 = getelementptr inbounds i8, ptr %32, i64 %10 + store i8 47, ptr %33, align 1 store i64 %11, ptr %9, align 8 - %35 = load ptr, ptr %4, align 8 - %36 = getelementptr inbounds i8, ptr %35, i64 %11 - store i8 0, ptr %36, align 1 - br label %39 + %34 = load ptr, ptr %4, align 8 + %35 = getelementptr inbounds i8, ptr %34, i64 %11 + store i8 0, ptr %35, align 1 + br label %38 -37: ; preds = %39, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i, %27, %21 - %38 = landingpad { ptr, i32 } +36: ; preds = %38, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i.i.i, %26, %20 + %37 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #26 - resume { ptr, i32 } %38 + resume { ptr, i32 } %37 -39: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i, %3 - %40 = load ptr, ptr %0, align 8 - %41 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix3git9TreeEntryESt4lessIS5_ESaISt4pairIKS5_S8_EEE16insert_or_assignIS8_EESB_ISt17_Rb_tree_iteratorISD_EbERSC_OT_(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %5) - to label %42 unwind label %37 +38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i.i.i, %3 + %39 = load ptr, ptr %0, align 8 + %40 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3nix3git9TreeEntryESt4lessIS5_ESaISt4pairIKS5_S8_EEE16insert_or_assignIS8_EESB_ISt17_Rb_tree_iteratorISD_EbERSC_OT_(ptr noundef nonnull align 8 dereferenceable(48) %39, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(88) %5) + to label %42 unwind label %36 -42: ; preds = %39 - %43 = load ptr, ptr %4, align 8 - %44 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %45 = icmp eq ptr %43, %44 - br i1 %45, label %"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit", label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +41: ; preds = %38 + %42 = load ptr, ptr %4, align 8 + %43 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %44 = icmp eq ptr %42, %43 + br i1 %44, label %"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit", label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %42 - call void @_ZdlPv(ptr noundef %43) #29 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %41 + call void @_ZdlPv(ptr noundef %42) #29 br label %"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit" -"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit": ; preds = %42, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +"_ZSt10__invoke_rIvRZZN3nix22GitTest_tree_read_Test8TestBodyEvENK3$_0clINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDaRKT_EUlRSA_T0_E_JRKS9_NS0_3git9TreeEntryEEENSt9enable_ifIX16is_invocable_r_vISA_SE_DpT1_EESA_E4typeEOSE_DpOSM_.exit": ; preds = %41, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #26 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) diff --git a/bench/nix/optimized/json-to-value.ll b/bench/nix/optimized/json-to-value.ll index 12603fd0e8f..14be3c374a3 100644 --- a/bench/nix/optimized/json-to-value.ll +++ b/bench/nix/optimized/json-to-value.ll @@ -24860,7 +24860,7 @@ define linkonce_odr noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10 %11 = getelementptr inbounds nuw i8, ptr %0, i64 40 br label %12 -12: ; preds = %78, %2 +12: ; preds = %77, %2 %13 = load i64, ptr %8, align 8 %14 = add i64 %13, 1 store i64 %14, ptr %8, align 8 @@ -24895,12 +24895,12 @@ define linkonce_odr noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %75, %68, %21 +.loopexit.split-lp.loopexit: ; preds = %74, %67, %21 %lpad.loopexit21 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %57, %51 +.loopexit.split-lp.loopexit.split-lp: ; preds = %56, %50 %lpad.loopexit.split-lp22 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -24942,7 +24942,7 @@ _ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112b 36: ; preds = %.noexc %37 = load i32, ptr %10, align 8 %38 = icmp eq i32 %37, 0 - br i1 %38, label %67, label %39 + br i1 %38, label %66, label %39 39: ; preds = %36 %40 = trunc i32 %37 to i8 @@ -24959,63 +24959,63 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; br i1 %46, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread: ; preds = %39 - %47 = load i64, ptr %5, align 8 - %48 = icmp ugt i64 %42, %47 - br i1 %48, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i + %46 = load i64, ptr %5, align 8 + %47 = icmp ugt i64 %42, %46 + br i1 %47, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread - %49 = phi i64 [ %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ] - %50 = icmp slt i64 %42, 0 - br i1 %50, label %51, label %52 + %48 = phi i64 [ %46, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ], [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ] + %49 = icmp slt i64 %42, 0 + br i1 %49, label %50, label %51 -51: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +50: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.9) #36 to label %.noexc11 unwind label %.loopexit.split-lp.loopexit.split-lp -.noexc11: ; preds = %51 +.noexc11: ; preds = %50 unreachable -52: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i - %53 = shl nuw i64 %49, 1 - %54 = icmp ult i64 %42, %53 - %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %53, i64 9223372036854775807) - %.0.i = select i1 %54, i64 %spec.store.select.i.i, i64 %42 - %55 = add nuw i64 %.0.i, 1 - %56 = icmp slt i64 %55, 0 - br i1 %56, label %57, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i - -57: ; preds = %52 +51: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i + %52 = shl nuw i64 %48, 1 + %53 = icmp ult i64 %42, %52 + %spec.store.select.i.i = call i64 @llvm.umin.i64(i64 %52, i64 9223372036854775807) + %.0.i = select i1 %53, i64 %spec.store.select.i.i, i64 %42 + %54 = add nuw i64 %.0.i, 1 + %55 = icmp slt i64 %54, 0 + br i1 %55, label %56, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i + +56: ; preds = %51 invoke void @_ZSt17__throw_bad_allocv() #36 to label %.noexc12 unwind label %.loopexit.split-lp.loopexit.split-lp -.noexc12: ; preds = %57 +.noexc12: ; preds = %56 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %52 - %58 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #34 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %51 + %57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %54) #34 to label %.noexc13 unwind label %.loopexit .noexc13: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i switch i64 %41, label %61 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - i64 1, label %59 + i64 1, label %58 ] -59: ; preds = %.noexc13 - %60 = load i8, ptr %43, align 1 - store i8 %60, ptr %58, align 1 +58: ; preds = %.noexc13 + %59 = load i8, ptr %43, align 1 + store i8 %59, ptr %57, align 1 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i -61: ; preds = %.noexc13 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %58, ptr align 1 %43, i64 %41, i1 false) +60: ; preds = %.noexc13 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %57, ptr align 1 %43, i64 %41, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i: ; preds = %.noexc13, %59, %61 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i: ; preds = %.noexc13, %58, %60 br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i - %62 = icmp samesign ult i64 %41, 16 - call void @llvm.assume(i1 %62) + %61 = icmp samesign ult i64 %41, 16 + call void @llvm.assume(i1 %61) br label %.noexc8 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27.i @@ -25023,56 +25023,56 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9: br label %.noexc8 .noexc8: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10 - store ptr %58, ptr %4, align 8 + store ptr %57, ptr %4, align 8 store i64 %.0.i, ptr %5, align 8 br label %_ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i _ZNSt20back_insert_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEaSEOc.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread, %.noexc8, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i - %63 = phi ptr [ %58, %.noexc8 ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ] - %64 = getelementptr inbounds i8, ptr %63, i64 %41 - store i8 %40, ptr %64, align 1 + %62 = phi ptr [ %57, %.noexc8 ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i ], [ %43, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread ] + %63 = getelementptr inbounds i8, ptr %62, i64 %41 + store i8 %40, ptr %63, align 1 store i64 %42, ptr %6, align 8 - %65 = load ptr, ptr %4, align 8 - %66 = getelementptr inbounds i8, ptr %65, i64 %42 - store i8 0, ptr %66, align 1 + %64 = load ptr, ptr %4, align 8 + %65 = getelementptr inbounds i8, ptr %64, i64 %42 + store i8 0, ptr %65, align 1 %.pre = load i64, ptr %8, align 8 br label %26, !llvm.loop !153 -67: ; preds = %36 - br i1 %1, label %75, label %68 +66: ; preds = %36 + br i1 %1, label %74, label %67 -68: ; preds = %67 - %69 = load ptr, ptr %11, align 8 - %70 = load ptr, ptr %69, align 8 - %71 = getelementptr inbounds nuw i8, ptr %70, i64 64 - %72 = load ptr, ptr %71, align 8 - %73 = invoke noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(32) %4) +67: ; preds = %66 + %68 = load ptr, ptr %11, align 8 + %69 = load ptr, ptr %68, align 8 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 64 + %71 = load ptr, ptr %70, align 8 + %72 = invoke noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 8 dereferenceable(32) %4) to label %74 unwind label %.loopexit.split-lp.loopexit -74: ; preds = %68 - br i1 %73, label %75, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit +73: ; preds = %67 + br i1 %72, label %74, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit -75: ; preds = %74, %67 - %76 = invoke noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE27parse_bson_element_internalEim(ptr noundef nonnull align 8 dereferenceable(48) %0, i32 noundef %.0.i.i16, i64 noundef %25) +74: ; preds = %73, %66 + %75 = invoke noundef zeroext i1 @_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE27parse_bson_element_internalEim(ptr noundef nonnull align 8 dereferenceable(48) %0, i32 noundef %.0.i.i16, i64 noundef %25) to label %77 unwind label %.loopexit.split-lp.loopexit -77: ; preds = %75 - br i1 %76, label %78, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit +76: ; preds = %74 + br i1 %75, label %77, label %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit -78: ; preds = %77 +77: ; preds = %76 store i64 0, ptr %6, align 8 - %79 = load ptr, ptr %4, align 8 - store i8 0, ptr %79, align 1 + %78 = load ptr, ptr %4, align 8 + store i8 0, ptr %78, align 1 br label %12, !llvm.loop !154 -_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit: ; preds = %17, %77, %74, %23, %.noexc +_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit: ; preds = %17, %76, %73, %23, %.noexc %.not18 = phi i1 [ false, %.noexc ], [ false, %23 ], [ false, %74 ], [ false, %77 ], [ true, %17 ] - %80 = load ptr, ptr %4, align 8 - %81 = icmp eq ptr %80, %5 - br i1 %81, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %79 = load ptr, ptr %4, align 8 + %80 = icmp eq ptr %79, %5 + br i1 %80, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit - call void @_ZdlPv(ptr noundef %80) #35 + call void @_ZdlPv(ptr noundef %79) #35 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZN8nlohmann6detail13binary_readerINS_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES4_IhSaIhEEEENS0_22iterator_input_adapterIPKcEEN3nix7JSONSaxEE13get_bson_cstrERSA_.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i diff --git a/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll b/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll index 885396ea450..2e3c30c46a3 100644 --- a/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll +++ b/bench/ockam-rs/optimized/4r08vyqwrxt6fmz0.ll @@ -1265,15 +1265,15 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$12free_buckets17h28 %6 = icmp eq i64 %4, 0 br i1 %6, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit", label %7 -7: ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit" - %8 = load ptr, ptr %0, align 8, !alias.scope !116, !noalias !119, !nonnull !4, !noundef !4 +6: ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit" + %7 = load ptr, ptr %0, align 8, !alias.scope !116, !noalias !119, !nonnull !4, !noundef !4 %.neg = mul i64 %2, -48 - %9 = getelementptr i8, ptr %8, i64 %.neg - %10 = getelementptr i8, ptr %9, i64 -48 - tail call void @__rust_dealloc(ptr noundef nonnull %10, i64 noundef %4, i64 noundef 16) #31 + %8 = getelementptr i8, ptr %7, i64 %.neg + %9 = getelementptr i8, ptr %8, i64 -48 + tail call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef %4, i64 noundef 16) #31 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit": ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit", %7 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h6940b36ff7ab085dE.llvm.11649118056320185023.exit": ; preds = %"_ZN9hashbrown3raw22RawTableInner$LT$A$GT$15allocation_info17hd6deb3cad731f8cbE.llvm.11649118056320185023.exit", %6 ret void } diff --git a/bench/opencv/optimized/darknet_io.ll b/bench/opencv/optimized/darknet_io.ll index 4ed0cb8be26..1ac4a5e9329 100644 --- a/bench/opencv/optimized/darknet_io.ll +++ b/bench/opencv/optimized/darknet_io.ll @@ -17696,7 +17696,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %70, % %.pn150 = phi { ptr, i32 } [ %69, %68 ], [ %71, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i ], [ %71, %70 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %509 + br label %508 75: ; preds = %59 %76 = call noalias noundef nonnull dereferenceable(12) ptr @_Znwm(i64 noundef 12) #26 @@ -17882,7 +17882,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %_ZNSt6vectorINSt7__ %.sroa.0360.0614 = phi ptr [ %76, %._crit_edge.i.i.lr.ph ], [ %.sroa.0360.2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] %.sroa.20.0613 = phi ptr [ %77, %._crit_edge.i.i.lr.ph ], [ %.sroa.20.1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] %.sroa.28.0612 = phi ptr [ %77, %._crit_edge.i.i.lr.ph ], [ %.sroa.28.1, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] - %.sroa.0356.0611 = phi ptr [ %104, %._crit_edge.i.i.lr.ph ], [ %505, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] + %.sroa.0356.0611 = phi ptr [ %104, %._crit_edge.i.i.lr.ph ], [ %504, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 ] %indvars.iv.next = add nsw i64 %indvars.iv, 1 %162 = add nsw i32 %.097616, 1 %163 = getelementptr inbounds nuw i8, ptr %.sroa.0356.0611, i64 40 @@ -18867,7 +18867,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196: ; preds = %28 %.pn132.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn132.pn.pn.pn.pn.pn.pn, %448 ], [ %.pn130, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253 ], [ %227, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 ], [ %lpad.loopexit, %322 ], [ %213, %212 ], [ %.pn111, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit237 ], [ %286, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i229 ], [ %219, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i197 ], [ %215, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i194 ], [ %275, %274 ], [ %.pn125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit214 ], [ %.pn123, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit211 ], [ %.pn121, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit208 ], [ %223, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i200 ], [ %290, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i232 ], [ %227, %226 ], [ %286, %285 ], [ %215, %214 ], [ %223, %222 ], [ %219, %218 ], [ %290, %289 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %15) #25 call void @llvm.lifetime.end.p0(ptr nonnull %15) - br label %506 + br label %505 449: ; preds = %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit308, %184 %.198 = phi i32 [ %.299, %_ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit308 ], [ %162, %184 ] @@ -18953,7 +18953,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325: ; preds = %46 %478 = sub i64 %476, %477 %479 = ashr exact i64 %478, 2 %480 = icmp eq ptr %.sroa.20.0613, %.sroa.0360.0614 - br i1 %480, label %481, label %494 + br i1 %480, label %481, label %493 481: ; preds = %475 %482 = sub nuw nsw i64 1, %479 @@ -18970,61 +18970,61 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325: ; preds = %46 _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i: ; preds = %481 store i32 0, ptr %.sroa.20.0613, align 4, !tbaa !16 - %489 = getelementptr i8, ptr %.sroa.20.0613, i64 4 + %488 = getelementptr i8, ptr %.sroa.20.0613, i64 4 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %481 - %490 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znwm(i64 noundef 4) #26 + %489 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znwm(i64 noundef 4) #26 to label %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i unwind label %471 _ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i - %491 = getelementptr inbounds nuw i8, ptr %490, i64 %478 - store i32 0, ptr %491, align 4, !tbaa !16 + %490 = getelementptr inbounds nuw i8, ptr %489, i64 %478 + store i32 0, ptr %490, align 4, !tbaa !16 call void @_ZdlPv(ptr noundef nonnull %.sroa.0360.0614) #23 - %492 = getelementptr inbounds nuw i8, ptr %491, i64 4 - %493 = getelementptr inbounds nuw i8, ptr %490, i64 4 + %491 = getelementptr inbounds nuw i8, ptr %490, i64 4 + %492 = getelementptr inbounds nuw i8, ptr %489, i64 4 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -494: ; preds = %475 - %495 = icmp ugt i64 %479, 1 - br i1 %495, label %496, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit +493: ; preds = %475 + %494 = icmp ugt i64 %479, 1 + br i1 %494, label %495, label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -496: ; preds = %494 - %497 = getelementptr inbounds nuw i8, ptr %.sroa.0360.0614, i64 4 - %.not.i.i = icmp eq ptr %.sroa.20.0613, %497 - %spec.select374 = select i1 %.not.i.i, ptr %.sroa.20.0613, ptr %497 +495: ; preds = %493 + %496 = getelementptr inbounds nuw i8, ptr %.sroa.0360.0614, i64 4 + %.not.i.i = icmp eq ptr %.sroa.20.0613, %496 + %spec.select374 = select i1 %.not.i.i, ptr %.sroa.20.0613, ptr %496 br label %_ZNSt6vectorIiSaIiEE6resizeEm.exit -_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %496, %494, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 - %.sroa.28.1 = phi ptr [ %.sroa.28.0612, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.28.0612, %494 ], [ %.sroa.28.0612, %496 ], [ %493, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.28.0612, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %.sroa.20.1 = phi ptr [ %.sroa.20.0613, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.20.0613, %494 ], [ %spec.select374, %496 ], [ %492, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %489, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %.sroa.0360.2 = phi ptr [ %.sroa.0360.0614, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.0360.0614, %494 ], [ %.sroa.0360.0614, %496 ], [ %490, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.0360.0614, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] - %498 = load ptr, ptr %141, align 8, !tbaa !99 - %499 = getelementptr inbounds nuw i32, ptr %498, i64 %indvars.iv.next - %500 = load i32, ptr %499, align 4, !tbaa !16 - store i32 %500, ptr %.sroa.0360.2, align 4, !tbaa !16 - %501 = load ptr, ptr %42, align 8, !tbaa !13 - %502 = icmp eq ptr %501, %142 - br i1 %502, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333 +_ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %495, %493, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 + %.sroa.28.1 = phi ptr [ %.sroa.28.0612, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.28.0612, %494 ], [ %.sroa.28.0612, %496 ], [ %492, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.28.0612, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %.sroa.20.1 = phi ptr [ %.sroa.20.0613, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.20.0613, %494 ], [ %spec.select374, %496 ], [ %491, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %488, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %.sroa.0360.2 = phi ptr [ %.sroa.0360.0614, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit322 ], [ %.sroa.0360.0614, %494 ], [ %.sroa.0360.0614, %496 ], [ %489, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit33.i ], [ %.sroa.0360.0614, %_ZSt27__uninitialized_default_n_aIPimiET_S1_T0_RSaIT1_E.exit.i ] + %497 = load ptr, ptr %141, align 8, !tbaa !99 + %498 = getelementptr inbounds nuw i32, ptr %497, i64 %indvars.iv.next + %499 = load i32, ptr %498, align 4, !tbaa !16 + store i32 %499, ptr %.sroa.0360.2, align 4, !tbaa !16 + %500 = load ptr, ptr %42, align 8, !tbaa !13 + %501 = icmp eq ptr %500, %142 + br i1 %501, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit - call void @_ZdlPv(ptr noundef %501) #23 + call void @_ZdlPv(ptr noundef %500) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEm.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i333 call void @llvm.lifetime.end.p0(ptr nonnull %42) - %503 = load ptr, ptr %13, align 8, !tbaa !13 - %504 = icmp eq ptr %503, %108 - br i1 %504, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336 + %502 = load ptr, ptr %13, align 8, !tbaa !13 + %503 = icmp eq ptr %502, %108 + br i1 %503, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335 - call void @_ZdlPv(ptr noundef %503) #23 + call void @_ZdlPv(ptr noundef %502) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit338: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit335, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i336 call void @llvm.lifetime.end.p0(ptr nonnull %13) - %505 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0356.0611) #27 - %.not375 = icmp eq ptr %505, %105 + %504 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0356.0611) #27 + %.not375 = icmp eq ptr %504, %105 br i1 %.not375, label %._crit_edge, label %._crit_edge.i.i, !llvm.loop !193 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split: ; preds = %471, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325 @@ -19036,19 +19036,19 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split: ; _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split, %471, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325 %.pn144 = phi { ptr, i32 } [ %466, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit325 ], [ %472, %471 ], [ %.pn144.ph, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328.sink.split ] call void @llvm.lifetime.end.p0(ptr nonnull %42) - br label %506 + br label %505 -506: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196 +505: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196 %.pn144.pn = phi { ptr, i32 } [ %.pn144, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit328 ], [ %.pn132.pn.pn.pn.pn.pn.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit196 ] - %507 = load ptr, ptr %13, align 8, !tbaa !13 - %508 = icmp eq ptr %507, %108 - br i1 %508, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 + %506 = load ptr, ptr %13, align 8, !tbaa !13 + %507 = icmp eq ptr %506, %108 + br i1 %507, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339: ; preds = %506 - call void @_ZdlPv(ptr noundef %507) #23 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339: ; preds = %505 + call void @_ZdlPv(ptr noundef %506) #23 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341: ; preds = %506, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341: ; preds = %505, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 %.pn144.pn.pn = phi { ptr, i32 } [ %209, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit193 ], [ %.pn144.pn, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i339 ], [ %.pn144.pn, %506 ] call void @llvm.lifetime.end.p0(ptr nonnull %13) call void @_ZN2cv3dnn7darknet15setLayersParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %12) #25 @@ -19059,9 +19059,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit343: ; preds = %_ZNSt7__cxx1112basi %.pn144.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit341 ], [ %161, %160 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @_ZdlPv(ptr noundef nonnull %.sroa.0360.1) #23 - br label %509 + br label %508 -509: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit343, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit +508: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit343, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit %.pn150.pn = phi { ptr, i32 } [ %.pn150, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pn144.pn.pn.pn, %_ZNSt6vectorIiSaIiEED2Ev.exit343 ] call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/opencv/optimized/ts_gtest.ll b/bench/opencv/optimized/ts_gtest.ll index 4257df87d64..73ad065b24d 100644 --- a/bench/opencv/optimized/ts_gtest.ll +++ b/bench/opencv/optimized/ts_gtest.ll @@ -26550,9 +26550,9 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i br i1 %25, label %.thread, label %32 .thread: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %27 = load i64, ptr %21, align 8, !tbaa !12, !noalias !586 - %28 = add nuw nsw i64 %27, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %28, i1 false), !noalias !586 + %29 = load i64, ptr %21, align 8, !tbaa !12, !noalias !586 + %30 = add nuw nsw i64 %29, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.sroa.4, ptr noundef nonnull align 8 dereferenceable(1) %9, i64 %30, i1 false), !noalias !586 store i64 0, ptr %21, align 8, !tbaa !12, !noalias !586 store i8 0, ptr %9, align 8, !tbaa !13, !noalias !586 store ptr %26, ptr %7, align 8, !tbaa !11, !alias.scope !586 @@ -26566,17 +26566,17 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i %31 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr %31, ptr %5, align 8, !tbaa !11 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %27, ptr %4, align 8, !tbaa !37 + store i64 %29, ptr %4, align 8, !tbaa !37 br label %._crit_edge.i.i.i.i.i -32: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit - %33 = load i64, ptr %9, align 8, !tbaa !13, !noalias !586 +31: ; preds = %_ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit + %32 = load i64, ptr %9, align 8, !tbaa !13, !noalias !586 %.pre.i = load i64, ptr %21, align 8, !tbaa !12, !noalias !586 store ptr %9, ptr %8, align 8, !tbaa !3, !noalias !586 store i64 0, ptr %21, align 8, !tbaa !12, !noalias !586 store i8 0, ptr %9, align 8, !tbaa !13, !noalias !586 store ptr %24, ptr %7, align 8, !tbaa !3, !alias.scope !586 - store i64 %33, ptr %26, align 8, !tbaa !13, !alias.scope !586 + store i64 %32, ptr %26, align 8, !tbaa !13, !alias.scope !586 %34 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 %.pre.i, ptr %34, align 8, !tbaa !12, !alias.scope !586 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.4) @@ -26585,115 +26585,115 @@ _ZN7testing8internal17TestPropertyKeyIsC2ERKS1_.exit: ; preds = %._crit_edge.i.i store ptr %35, ptr %5, align 8, !tbaa !11 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 %.pre.i, ptr %4, align 8, !tbaa !37 - %36 = icmp ugt i64 %.pre.i, 15 - br i1 %36, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i + %33 = icmp ugt i64 %.pre.i, 15 + br i1 %33, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i -.noexc.i.i.i.i: ; preds = %32 - %37 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - to label %.noexc unwind label %63 +.noexc.i.i.i.i: ; preds = %31 + %34 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + to label %.noexc unwind label %59 .noexc: ; preds = %.noexc.i.i.i.i - store ptr %37, ptr %5, align 8, !tbaa !3 - %38 = load i64, ptr %4, align 8, !tbaa !37 - store i64 %38, ptr %35, align 8, !tbaa !13 + store ptr %34, ptr %5, align 8, !tbaa !3 + %35 = load i64, ptr %4, align 8, !tbaa !37 + store i64 %35, ptr %35, align 8, !tbaa !13 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %32 - %39 = phi ptr [ %24, %.noexc ], [ %24, %32 ], [ %26, %.thread ] - %40 = phi ptr [ %35, %.noexc ], [ %35, %32 ], [ %31, %.thread ] - %41 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %32 ], [ %27, %.thread ] +._crit_edge.i.i.i.i.i: ; preds = %.thread, %.noexc, %31 + %36 = phi ptr [ %24, %.noexc ], [ %24, %32 ], [ %26, %.thread ] + %37 = phi ptr [ %35, %.noexc ], [ %35, %32 ], [ %31, %.thread ] + %38 = phi i64 [ %.pre.i, %.noexc ], [ %.pre.i, %32 ], [ %27, %.thread ] %42 = phi ptr [ %37, %.noexc ], [ %35, %32 ], [ %31, %.thread ] switch i64 %41, label %45 [ i64 1, label %43 i64 0, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i ] -43: ; preds = %._crit_edge.i.i.i.i.i - %44 = load i8, ptr %39, align 1, !tbaa !13 - store i8 %44, ptr %42, align 1, !tbaa !13 +39: ; preds = %._crit_edge.i.i.i.i.i + %40 = load i8, ptr %36, align 1, !tbaa !13 + store i8 %40, ptr %42, align 1, !tbaa !13 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -45: ; preds = %._crit_edge.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %39, i64 %41, i1 false) +41: ; preds = %._crit_edge.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %42, ptr align 1 %36, i64 %38, i1 false) br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i -_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %45, %43, %._crit_edge.i.i.i.i.i - %46 = load i64, ptr %4, align 8, !tbaa !37 - %47 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 %46, ptr %47, align 8, !tbaa !12 - %48 = load ptr, ptr %5, align 8, !tbaa !3 - %49 = getelementptr inbounds nuw i8, ptr %48, i64 %46 - store i8 0, ptr %49, align 1, !tbaa !13 +_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i: ; preds = %41, %39, %._crit_edge.i.i.i.i.i + %42 = load i64, ptr %4, align 8, !tbaa !37 + %43 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 %42, ptr %43, align 8, !tbaa !12 + %44 = load ptr, ptr %5, align 8, !tbaa !3 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 %42 + store i8 0, ptr %45, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %50 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) - to label %51 unwind label %54 + %46 = invoke ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN7testing12TestPropertyESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_8internal17TestPropertyKeyIsEEEET_SE_SE_T0_St26random_access_iterator_tag(ptr %0, ptr %1, ptr noundef nonnull %5) + to label %51 unwind label %50 -51: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %52 = load ptr, ptr %5, align 8, !tbaa !3 - %53 = icmp eq ptr %52, %40 - br i1 %53, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +47: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %48 = load ptr, ptr %5, align 8, !tbaa !3 + %49 = icmp eq ptr %48, %40 + br i1 %49, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %51 - call void @_ZdlPv(ptr noundef %52) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %47 + call void @_ZdlPv(ptr noundef %48) #60 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i -54: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i - %55 = landingpad { ptr, i32 } +50: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEEC2ERKS5_.exit.i + %51 = landingpad { ptr, i32 } cleanup - %56 = load ptr, ptr %5, align 8, !tbaa !3 - %57 = icmp eq ptr %56, %40 - br i1 %57, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i + %52 = load ptr, ptr %5, align 8, !tbaa !3 + %53 = icmp eq ptr %52, %40 + br i1 %53, label %.body, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %54 - call void @_ZdlPv(ptr noundef %56) #60 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i: ; preds = %50 + call void @_ZdlPv(ptr noundef %52) #60 br label %.body -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %47, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5) - %58 = load ptr, ptr %7, align 8, !tbaa !3 - %59 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %60 = icmp eq ptr %58, %59 - br i1 %60, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %54 = load ptr, ptr %7, align 8, !tbaa !3 + %55 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %56 = icmp eq ptr %54, %55 + br i1 %56, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i - call void @_ZdlPv(ptr noundef %58) #60 + call void @_ZdlPv(ptr noundef %54) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %61 = load ptr, ptr %8, align 8, !tbaa !3 - %62 = icmp eq ptr %61, %9 - br i1 %62, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %57 = load ptr, ptr %8, align 8, !tbaa !3 + %58 = icmp eq ptr %57, %9 + br i1 %58, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit - call void @_ZdlPv(ptr noundef %61) #60 + call void @_ZdlPv(ptr noundef %57) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - ret ptr %50 + ret ptr %46 -63: ; preds = %.noexc.i.i.i.i - %64 = landingpad { ptr, i32 } +59: ; preds = %.noexc.i.i.i.i + %60 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %63 - %eh.lpad-body = phi { ptr, i32 } [ %64, %63 ], [ %55, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %55, %54 ] - %65 = load ptr, ptr %7, align 8, !tbaa !3 - %66 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %67 = icmp eq ptr %65, %66 - br i1 %67, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 +.body: ; preds = %50, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i, %59 + %eh.lpad-body = phi { ptr, i32 } [ %60, %63 ], [ %51, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i4.i ], [ %51, %54 ] + %61 = load ptr, ptr %7, align 8, !tbaa !3 + %62 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %63 = icmp eq ptr %61, %62 + br i1 %63, label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7: ; preds = %.body - call void @_ZdlPv(ptr noundef %65) #60 + call void @_ZdlPv(ptr noundef %61) #60 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 _ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9: ; preds = %.body, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i7 - %68 = load ptr, ptr %8, align 8, !tbaa !3 - %69 = icmp eq ptr %68, %9 - br i1 %69, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 + %64 = load ptr, ptr %8, align 8, !tbaa !3 + %65 = icmp eq ptr %64, %9 + br i1 %65, label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9 - call void @_ZdlPv(ptr noundef %68) #60 + call void @_ZdlPv(ptr noundef %64) #60 br label %_ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12 _ZN7testing8internal17TestPropertyKeyIsD2Ev.exit12: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN7testing8internal17TestPropertyKeyIsEED2Ev.exit9, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i10 diff --git a/bench/php/optimized/attr.ll b/bench/php/optimized/attr.ll index 7e25c897686..535b542136e 100644 --- a/bench/php/optimized/attr.ll +++ b/bench/php/optimized/attr.ll @@ -225,7 +225,7 @@ define hidden range(i32 -1, 1) i32 @dom_attr_value_write(ptr noundef %0, ptr nou 5: ; preds = %2 tail call void @php_dom_throw_error(i32 noundef 11, i1 noundef zeroext true) #9 - br label %45 + br label %44 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %3, i64 80 @@ -268,32 +268,32 @@ dom_attr_value_will_change.exit: ; preds = %14, %17 br i1 %.not.i, label %php_dom_follow_spec_doc_ref.exit.thread, label %php_dom_follow_spec_doc_ref.exit php_dom_follow_spec_doc_ref.exit: ; preds = %dom_attr_value_will_change.exit - %28 = getelementptr inbounds nuw i8, ptr %27, i64 44 - %29 = load i16, ptr %28, align 4 - %30 = and i16 %29, 255 - %31 = icmp eq i16 %30, 2 - br i1 %31, label %32, label %php_dom_follow_spec_doc_ref.exit.thread - -32: ; preds = %php_dom_follow_spec_doc_ref.exit - %33 = getelementptr inbounds nuw i8, ptr %3, i64 64 - %34 = load ptr, ptr %33, align 8, !tbaa !32 - %35 = getelementptr inbounds nuw i8, ptr %25, i64 24 - %36 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %37 = load i64, ptr %36, align 8, !tbaa !30 - %38 = trunc i64 %37 to i32 - %39 = tail call ptr @xmlNewDocTextLen(ptr noundef %34, ptr noundef nonnull %35, i32 noundef %38) #9 - %40 = tail call ptr @xmlAddChild(ptr noundef nonnull %3, ptr noundef %39) #9 - br label %45 + %27 = getelementptr inbounds nuw i8, ptr %27, i64 44 + %28 = load i16, ptr %27, align 4 + %29 = and i16 %28, 255 + %30 = icmp eq i16 %29, 2 + br i1 %30, label %31, label %php_dom_follow_spec_doc_ref.exit.thread + +31: ; preds = %php_dom_follow_spec_doc_ref.exit + %32 = getelementptr inbounds nuw i8, ptr %3, i64 64 + %33 = load ptr, ptr %32, align 8, !tbaa !32 + %34 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %35 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %36 = load i64, ptr %35, align 8, !tbaa !30 + %37 = trunc i64 %36 to i32 + %38 = tail call ptr @xmlNewDocTextLen(ptr noundef %33, ptr noundef nonnull %34, i32 noundef %37) #9 + %39 = tail call ptr @xmlAddChild(ptr noundef nonnull %3, ptr noundef %38) #9 + br label %44 php_dom_follow_spec_doc_ref.exit.thread: ; preds = %dom_attr_value_will_change.exit, %php_dom_follow_spec_doc_ref.exit - %41 = getelementptr inbounds nuw i8, ptr %25, i64 24 - %42 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %43 = load i64, ptr %42, align 8, !tbaa !30 - %44 = trunc i64 %43 to i32 - tail call void @xmlNodeSetContentLen(ptr noundef nonnull %3, ptr noundef nonnull %41, i32 noundef %44) #9 - br label %45 - -45: ; preds = %32, %php_dom_follow_spec_doc_ref.exit.thread, %5 + %40 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %41 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %42 = load i64, ptr %41, align 8, !tbaa !30 + %43 = trunc i64 %42 to i32 + tail call void @xmlNodeSetContentLen(ptr noundef nonnull %3, ptr noundef nonnull %40, i32 noundef %43) #9 + br label %44 + +44: ; preds = %31, %php_dom_follow_spec_doc_ref.exit.thread, %5 %.0 = phi i32 [ -1, %5 ], [ 0, %php_dom_follow_spec_doc_ref.exit.thread ], [ 0, %32 ] ret i32 %.0 } diff --git a/bench/php/optimized/node.ll b/bench/php/optimized/node.ll index 10ffd310cc4..88a9697b1bc 100644 --- a/bench/php/optimized/node.ll +++ b/bench/php/optimized/node.ll @@ -6367,7 +6367,7 @@ instanceof_function.exit: ; preds = %14 %.0168 = phi ptr [ null, %7 ], [ %9, %20 ], [ %9, %.thread ] %.0 = phi i32 [ 0, %7 ], [ 1, %20 ], [ 1, %.thread ] tail call void @zend_wrong_parameter_error(i32 noundef %.0171, i32 noundef %.0, ptr noundef %.0170, i32 noundef %.0169, ptr noundef %.0168) #11 - br label %153 + br label %151 .critedge: ; preds = %14, %instanceof_function.exit, %13 %25 = load ptr, ptr %4, align 8, !tbaa !9 @@ -6383,7 +6383,7 @@ instanceof_function.exit: ; preds = %14 %33 = load ptr, ptr %32, align 8, !tbaa !64 %34 = getelementptr inbounds nuw i8, ptr %33, i64 24 tail call void (ptr, ptr, ...) @zend_throw_error(ptr noundef null, ptr noundef nonnull @.str.11, ptr noundef nonnull %34) #11 - br label %153 + br label %151 35: ; preds = %.critedge %36 = load ptr, ptr %27, align 8, !tbaa !76 @@ -6400,7 +6400,7 @@ instanceof_function.exit: ; preds = %14 %45 = load ptr, ptr %44, align 8, !tbaa !64 %46 = getelementptr inbounds nuw i8, ptr %45, i64 24 tail call void (ptr, ptr, ...) @zend_throw_error(ptr noundef null, ptr noundef nonnull @.str.11, ptr noundef nonnull %46) #11 - br label %153 + br label %151 47: ; preds = %35 %48 = load ptr, ptr %39, align 8, !tbaa !76 @@ -6411,7 +6411,7 @@ instanceof_function.exit: ; preds = %14 store i64 0, ptr %1, align 8, !tbaa !9 %51 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %51, align 8, !tbaa !9 - br label %153 + br label %151 52: ; preds = %47 %53 = getelementptr inbounds nuw i8, ptr %48, i64 8 @@ -6463,7 +6463,7 @@ instanceof_function.exit: ; preds = %14 store i64 34, ptr %1, align 8, !tbaa !9 %75 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %75, align 8, !tbaa !9 - br label %153 + br label %151 76: ; preds = %.lr.ph %77 = tail call fastcc zeroext i1 @php_dom_is_equal_attr(ptr noundef %.0189228, ptr noundef %36) @@ -6473,7 +6473,7 @@ instanceof_function.exit: ; preds = %14 store i64 36, ptr %1, align 8, !tbaa !9 %79 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %79, align 8, !tbaa !9 - br label %153 + br label %151 .critedge215: ; preds = %71, %69, %63, %59 %.0190 = phi ptr [ %36, %63 ], [ null, %59 ], [ %36, %69 ], [ %36, %71 ] @@ -6481,7 +6481,7 @@ instanceof_function.exit: ; preds = %14 %80 = icmp eq ptr %.0183, null %81 = icmp eq ptr %.0185, null %or.cond4 = select i1 %80, i1 true, i1 %81 - br i1 %or.cond4, label %144, label %.preheader224 + br i1 %or.cond4, label %142, label %.preheader224 .preheader224: ; preds = %.critedge215 %82 = getelementptr inbounds nuw i8, ptr %.0183, i64 40 @@ -6527,7 +6527,7 @@ instanceof_function.exit: ; preds = %14 %.0174.lcssa = phi i64 [ 0, %.preheader223 ], [ %93, %.lr.ph238 ] %.0173.lcssa = phi ptr [ %.0185, %.preheader223 ], [ %91, %.lr.ph238 ] %.not210 = icmp eq ptr %.0178.lcssa, %.0173.lcssa - br i1 %.not210, label %96, label %144 + br i1 %.not210, label %96, label %142 96: ; preds = %._crit_edge %97 = icmp eq ptr %.0191, null @@ -6544,7 +6544,7 @@ instanceof_function.exit: ; preds = %14 store i64 10, ptr %1, align 8, !tbaa !9 %102 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %102, align 8, !tbaa !9 - br label %153 + br label %151 103: ; preds = %98 %104 = icmp eq ptr %.0190, null @@ -6560,7 +6560,7 @@ instanceof_function.exit: ; preds = %14 store i64 20, ptr %1, align 8, !tbaa !9 %108 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %108, align 8, !tbaa !9 - br label %153 + br label %151 109: ; preds = %105 br i1 %.0176.lcssa, label %110, label %112 @@ -6570,7 +6570,7 @@ instanceof_function.exit: ; preds = %14 store i64 2, ptr %1, align 8, !tbaa !9 %111 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %111, align 8, !tbaa !9 - br label %153 + br label %151 112: ; preds = %109 br i1 %.0181.lcssa, label %113, label %115 @@ -6580,7 +6580,7 @@ instanceof_function.exit: ; preds = %14 store i64 4, ptr %1, align 8, !tbaa !9 %114 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 4, ptr %114, align 8, !tbaa !9 - br label %153 + br label %151 115: ; preds = %112 %116 = icmp ugt i64 %.0179.lcssa, %.0174.lcssa @@ -6632,7 +6632,7 @@ instanceof_function.exit: ; preds = %14 tail call void @llvm.assume(i1 %134) br label %135 -135: ; preds = %141, %131 +135: ; preds = %139, %131 %.4 = phi ptr [ %.3, %131 ], [ %137, %141 ] %136 = getelementptr inbounds nuw i8, ptr %.4, i64 48 %137 = load ptr, ptr %136, align 8, !tbaa !45 @@ -6641,42 +6641,42 @@ instanceof_function.exit: ; preds = %14 139: ; preds = %135 store i64 2, ptr %1, align 8, !tbaa !9 - %140 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i32 4, ptr %140, align 8, !tbaa !9 - br label %153 + %138 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i32 4, ptr %138, align 8, !tbaa !9 + br label %151 -141: ; preds = %135 +139: ; preds = %135 %.not212 = icmp eq ptr %137, null - br i1 %.not212, label %142, label %135 + br i1 %.not212, label %140, label %135 -142: ; preds = %141 +140: ; preds = %139 store i64 4, ptr %1, align 8, !tbaa !9 - %143 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i32 4, ptr %143, align 8, !tbaa !9 - br label %153 + %141 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i32 4, ptr %141, align 8, !tbaa !9 + br label %151 -144: ; preds = %._crit_edge, %.critedge215 - %145 = icmp eq ptr %.0183, %.0185 - br i1 %145, label %146, label %148 +142: ; preds = %._crit_edge, %.critedge215 + %143 = icmp eq ptr %.0183, %.0185 + br i1 %143, label %144, label %146 -146: ; preds = %144 +144: ; preds = %142 tail call void @llvm.assume(i1 %80) - %147 = icmp ult ptr %37, %25 - br label %150 + %145 = icmp ult ptr %37, %25 + br label %148 -148: ; preds = %144 - %149 = icmp ult ptr %.0183, %.0185 - br label %150 - -150: ; preds = %148, %146 - %.sink = phi i1 [ %149, %148 ], [ %147, %146 ] - %151 = select i1 %.sink, i64 35, i64 37 - store i64 %151, ptr %1, align 8, !tbaa !9 - %152 = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i32 4, ptr %152, align 8, !tbaa !9 - br label %153 - -153: ; preds = %74, %78, %24, %101, %107, %110, %113, %139, %142, %150, %50, %41, %29 +146: ; preds = %142 + %147 = icmp ult ptr %.0183, %.0185 + br label %148 + +148: ; preds = %146, %144 + %.sink = phi i1 [ %147, %148 ], [ %145, %146 ] + %149 = select i1 %.sink, i64 35, i64 37 + store i64 %149, ptr %1, align 8, !tbaa !9 + %150 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store i32 4, ptr %150, align 8, !tbaa !9 + br label %151 + +151: ; preds = %74, %78, %24, %101, %107, %110, %113, %139, %140, %148, %50, %41, %29 ret void } diff --git a/bench/php/optimized/pdo_stmt.ll b/bench/php/optimized/pdo_stmt.ll index f1ac0dfa7e0..3c8b37c69ea 100644 --- a/bench/php/optimized/pdo_stmt.ll +++ b/bench/php/optimized/pdo_stmt.ll @@ -7447,34 +7447,34 @@ zval_try_get_string.exit.thread: ; preds = %22, %27 br label %32 zval_try_get_string.exit: ; preds = %6 - %31 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 - %.not23 = icmp eq ptr %31, null - br i1 %.not23, label %zend_string_release_ex.exit, label %32 - -32: ; preds = %zval_try_get_string.exit.thread, %zval_try_get_string.exit - %.0.i26 = phi ptr [ %23, %zval_try_get_string.exit.thread ], [ %31, %zval_try_get_string.exit ] - %33 = tail call ptr @row_prop_read(ptr noundef %0, ptr noundef nonnull %.0.i26, i32 noundef %2, ptr noundef null, ptr noundef %3) - %34 = getelementptr inbounds nuw i8, ptr %.0.i26, i64 4 - %35 = load i32, ptr %34, align 4, !tbaa !37 - %36 = and i32 %35, 64 - %.not.i = icmp eq i32 %36, 0 - br i1 %.not.i, label %37, label %zend_string_release_ex.exit + %30 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 + %.not23 = icmp eq ptr %30, null + br i1 %.not23, label %zend_string_release_ex.exit, label %zval_try_get_string.exit.thread + +zval_try_get_string.exit.thread: ; preds = %zval_try_get_string.exit.thread, %zval_try_get_string.exit + %.0.i26 = phi ptr [ %23, %zval_try_get_string.exit.thread ], [ %30, %zval_try_get_string.exit ] + %31 = tail call ptr @row_prop_read(ptr noundef %0, ptr noundef nonnull %.0.i26, i32 noundef %2, ptr noundef null, ptr noundef %3) + %32 = getelementptr inbounds nuw i8, ptr %.0.i26, i64 4 + %33 = load i32, ptr %32, align 4, !tbaa !37 + %34 = and i32 %33, 64 + %.not.i = icmp eq i32 %34, 0 + br i1 %.not.i, label %35, label %zend_string_release_ex.exit -37: ; preds = %32 - %38 = load i32, ptr %.0.i26, align 4, !tbaa !38 - %39 = icmp ne i32 %38, 0 - tail call void @llvm.assume(i1 %39) - %40 = add i32 %38, -1 - store i32 %40, ptr %.0.i26, align 4, !tbaa !38 - %41 = icmp eq i32 %40, 0 - br i1 %41, label %42, label %zend_string_release_ex.exit +35: ; preds = %zval_try_get_string.exit.thread + %36 = load i32, ptr %.0.i26, align 4, !tbaa !38 + %37 = icmp ne i32 %36, 0 + tail call void @llvm.assume(i1 %37) + %38 = add i32 %36, -1 + store i32 %38, ptr %.0.i26, align 4, !tbaa !38 + %39 = icmp eq i32 %38, 0 + br i1 %39, label %40, label %zend_string_release_ex.exit -42: ; preds = %37 +40: ; preds = %35 tail call void @_efree(ptr noundef nonnull %.0.i26) #17 br label %zend_string_release_ex.exit -zend_string_release_ex.exit: ; preds = %42, %37, %32, %zval_try_get_string.exit, %9, %15, %20, %5 - %.0 = phi ptr [ null, %5 ], [ %3, %9 ], [ %3, %20 ], [ %3, %15 ], [ null, %zval_try_get_string.exit ], [ %33, %32 ], [ %33, %37 ], [ %33, %42 ] +zend_string_release_ex.exit: ; preds = %40, %35, %zval_try_get_string.exit.thread, %zval_try_get_string.exit, %9, %15, %20, %5 + %.0 = phi ptr [ null, %5 ], [ %3, %9 ], [ %3, %20 ], [ %3, %15 ], [ null, %zval_try_get_string.exit ], [ %31, %32 ], [ %31, %37 ], [ %31, %42 ] ret ptr %.0 } @@ -7666,34 +7666,34 @@ zval_try_get_string.exit.thread: ; preds = %76, %81 br label %86 zval_try_get_string.exit: ; preds = %3 - %85 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 - %.not = icmp eq ptr %85, null - br i1 %.not, label %zend_string_release_ex.exit, label %86 - -86: ; preds = %zval_try_get_string.exit.thread, %zval_try_get_string.exit - %.0.i3040 = phi ptr [ %77, %zval_try_get_string.exit.thread ], [ %85, %zval_try_get_string.exit ] - %87 = tail call i32 @row_prop_exists(ptr noundef %0, ptr noundef nonnull %.0.i3040, i32 noundef %2, ptr poison) - %88 = getelementptr inbounds nuw i8, ptr %.0.i3040, i64 4 - %89 = load i32, ptr %88, align 4, !tbaa !37 - %90 = and i32 %89, 64 - %.not.i28 = icmp eq i32 %90, 0 - br i1 %.not.i28, label %91, label %zend_string_release_ex.exit - -91: ; preds = %86 - %92 = load i32, ptr %.0.i3040, align 4, !tbaa !38 - %93 = icmp ne i32 %92, 0 - tail call void @llvm.assume(i1 %93) - %94 = add i32 %92, -1 - store i32 %94, ptr %.0.i3040, align 4, !tbaa !38 - %95 = icmp eq i32 %94, 0 - br i1 %95, label %96, label %zend_string_release_ex.exit - -96: ; preds = %91 + %84 = tail call ptr @zval_try_get_string_func(ptr noundef nonnull %1) #17 + %.not = icmp eq ptr %84, null + br i1 %.not, label %zend_string_release_ex.exit, label %zval_try_get_string.exit.thread + +zval_try_get_string.exit.thread: ; preds = %zval_try_get_string.exit.thread, %zval_try_get_string.exit + %.0.i3040 = phi ptr [ %77, %zval_try_get_string.exit.thread ], [ %84, %zval_try_get_string.exit ] + %85 = tail call i32 @row_prop_exists(ptr noundef %0, ptr noundef nonnull %.0.i3040, i32 noundef %2, ptr poison) + %86 = getelementptr inbounds nuw i8, ptr %.0.i3040, i64 4 + %87 = load i32, ptr %86, align 4, !tbaa !37 + %88 = and i32 %87, 64 + %.not.i28 = icmp eq i32 %88, 0 + br i1 %.not.i28, label %89, label %zend_string_release_ex.exit + +89: ; preds = %zval_try_get_string.exit.thread + %90 = load i32, ptr %.0.i3040, align 4, !tbaa !38 + %91 = icmp ne i32 %90, 0 + tail call void @llvm.assume(i1 %91) + %92 = add i32 %90, -1 + store i32 %92, ptr %.0.i3040, align 4, !tbaa !38 + %93 = icmp eq i32 %92, 0 + br i1 %93, label %94, label %zend_string_release_ex.exit + +94: ; preds = %89 tail call void @_efree(ptr noundef nonnull %.0.i3040) #17 br label %zend_string_release_ex.exit -zend_string_release_ex.exit: ; preds = %96, %91, %86, %zval_try_get_string.exit, %row_read_column_number.exit.thread, %13, %11 - %.2 = phi i32 [ %18, %13 ], [ %.1, %row_read_column_number.exit.thread ], [ 0, %11 ], [ 0, %zval_try_get_string.exit ], [ %87, %86 ], [ %87, %91 ], [ %87, %96 ] +zend_string_release_ex.exit: ; preds = %94, %89, %zval_try_get_string.exit.thread, %zval_try_get_string.exit, %row_read_column_number.exit.thread, %13, %11 + %.2 = phi i32 [ %18, %13 ], [ %.1, %row_read_column_number.exit.thread ], [ 0, %11 ], [ 0, %zval_try_get_string.exit ], [ %85, %86 ], [ %87, %91 ], [ %85, %96 ] ret i32 %.2 } diff --git a/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll b/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll index 3bd7367e948..2cefb872c14 100644 --- a/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll +++ b/bench/pingora-rs/optimized/24oggy68gf6cx0i1vzuuyyts4.ll @@ -4029,8 +4029,8 @@ define hidden void @_ZN4http10extensions10Extensions6remove17h24a8d8827cd6aaabE( call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29, !noalias !337 unreachable -common.resume.i: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i", %39, %19 - %common.resume.op.i = phi { ptr, i32 } [ %20, %19 ], [ %40, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" ], [ %40, %39 ] +common.resume.i: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i", %38, %19 + %common.resume.op.i = phi { ptr, i32 } [ %20, %19 ], [ %39, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" ], [ %39, %39 ] resume { ptr, i32 } %common.resume.op.i "_ZN5alloc5boxed7convert69_$LT$impl$u20$alloc..boxed..Box$LT$dyn$u20$core..any..Any$C$A$GT$$GT$8downcast17hbc1b1c5b80f64518E.exit.i": ; preds = %10 @@ -4053,13 +4053,13 @@ common.resume.i: ; preds = %"_ZN63_$LT$alloc..a %.not.i.i.i = icmp eq ptr %30, null br i1 %.not.i.i.i, label %32, label %31 -31: ; preds = %28 +31: ; preds = %28 invoke void %30(ptr noundef nonnull %15) to label %32 unwind label %39, !noalias !329 -32: ; preds = %31, %28 - %33 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %34 = load i64, ptr %33, align 8, !range !307, !invariant.load !7, !noalias !329 +32:; preds = %31, %28 + %34 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %35 = load i64, ptr %34, align 8, !range !307, !invariant.load !7, !noalias !329 %35 = getelementptr inbounds nuw i8, ptr %16, i64 16 %36 = load i64, ptr %35, align 8, !range !308, !invariant.load !7, !noalias !329 %37 = icmp ult i64 %36, -9223372036854775807 @@ -4071,20 +4071,20 @@ common.resume.i: ; preds = %"_ZN63_$LT$alloc..a call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %34, i64 noundef range(i64 1, -9223372036854775807) %36) #26, !noalias !329 br label %"_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i" -39: ; preds = %31 - %40 = landingpad { ptr, i32 } +38: ; preds = %31 + %39 = landingpad { ptr, i32 } cleanup - %41 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %42 = load i64, ptr %41, align 8, !range !307, !invariant.load !7, !noalias !329 - %43 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %44 = load i64, ptr %43, align 8, !range !308, !invariant.load !7, !noalias !329 - %45 = icmp ult i64 %44, -9223372036854775807 - call void @llvm.assume(i1 %45) - %46 = icmp eq i64 %42, 0 - br i1 %46, label %common.resume.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i": ; preds = %39 - call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %42, i64 noundef range(i64 1, -9223372036854775807) %44) #26, !noalias !329 + %40 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %41 = load i64, ptr %40, align 8, !range !307, !invariant.load !7, !noalias !329 + %42 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %43 = load i64, ptr %42, align 8, !range !308, !invariant.load !7, !noalias !329 + %44 = icmp ult i64 %43, -9223372036854775807 + call void @llvm.assume(i1 %44) + %45 = icmp eq i64 %41, 0 + br i1 %45, label %common.resume.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i4.i.i.i": ; preds = %38 + call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %15, i64 noundef %41, i64 noundef range(i64 1, -9223372036854775807) %43) #26, !noalias !329 br label %common.resume.i "_ZN4core3ptr141drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$h2..ext..Protocol$GT$$C$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$$GT$17hef1ae7f0c8857ad5E.exit.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit.i.i.i.i", %32 diff --git a/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll b/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll index 15d3432f5cb..7b5433d2e73 100644 --- a/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll +++ b/bench/pingora-rs/optimized/9kpxegslu0j3pb3oe28vzbz0s.ll @@ -586,7 +586,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17hcdeca8dcb9fdacd7E call void @_ZN11parking_lot10raw_rwlock9RawRwLock18unlock_shared_slow17hd7b98226de795fccE(ptr noundef nonnull align 8 %34) br label %"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27" -"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27": ; preds = %85, %81, %133, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" +"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27": ; preds = %85, %81, %132, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" %.val19.pn = phi ptr [ %45, %133 ], [ %.val21, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" ], [ %.val23, %81 ], [ %.val23, %85 ] %.val20.pn = phi ptr [ %46, %133 ], [ %.val22, %"_ZN4core3ptr208drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17he4ffe40ce8495caeE.exit34" ], [ %.val24, %81 ], [ %.val24, %85 ] %.pn = insertvalue { ptr, ptr } poison, ptr %.val19.pn, 0 @@ -705,7 +705,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17hcdeca8dcb9fdacd7E _ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit: ; preds = %43 %125 = atomicrmw add ptr %45, i64 1 monotonic, align 8 %126 = icmp slt i64 %125, 0 - br i1 %126, label %131, label %127 + br i1 %126, label %130, label %127 127: ; preds = %_ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit %128 = icmp ne ptr %46, null @@ -714,15 +714,15 @@ _ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit: ; preds = %43 %130 = icmp slt i64 %129, 0 br i1 %130, label %132, label %133 -131: ; preds = %_ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit +130: ; preds = %_ZN15pingora_timeout5timer5Timer4fire17hd07adee1b4af4e89E.exit tail call void @llvm.trap() unreachable -132: ; preds = %127 +131: ; preds = %127 tail call void @llvm.trap() unreachable -133: ; preds = %127 +132: ; preds = %127 call void @"_ZN4core3ptr50drop_in_place$LT$pingora_timeout..timer..Timer$GT$17h4a17a76a217a0b3eE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %"_ZN4core3ptr207drop_in_place$LT$lock_api..rwlock..RwLockReadGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..collections..btree..map..BTreeMap$LT$pingora_timeout..timer..Time$C$pingora_timeout..timer..Timer$GT$$GT$$GT$17h220d51b62f69fc4eE.exit27" diff --git a/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll b/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll index dbef8189a1d..e2182f45701 100644 --- a/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll +++ b/bench/pingora-rs/optimized/a0qicvo6a6vpvfqn6bbsbzkj4.ll @@ -197,7 +197,7 @@ _ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit: ; preds = %28 = add nsw i64 %18, 2 br label %54 -29: ; preds = %2 +29:; preds = %2 %30 = getelementptr inbounds nuw i8, ptr %0, i64 72 %31 = add nsw i64 %4, -1 store i64 %31, ptr %3, align 8 @@ -212,42 +212,42 @@ _ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit: ; preds = %38 = load i64, ptr %37, align 8, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !19) switch i64 %38, label %39 [ - i64 0, label %44 - i64 1, label %46 + i64 0, label %43 + i64 1, label %45 ] -39: ; preds = %29 - %40 = add i64 %38, -2 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %42 = load i64, ptr %41, align 8, !alias.scope !19, !noalias !22, !noundef !3 - %43 = icmp ult i64 %40, %42 - br i1 %43, label %48, label %52 +38: ; preds = %29 + %39 = add i64 %38, -2 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %41 = load i64, ptr %40, align 8, !alias.scope !19, !noalias !22, !noundef !3 + %42 = icmp ult i64 %39, %41 + br i1 %42, label %47, label %51 -44: ; preds = %29 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 24 +43: ; preds = %29 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 br label %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" -46: ; preds = %29 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 48 +45: ; preds = %29 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 48 br label %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" -48: ; preds = %39 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %50 = load ptr, ptr %49, align 8, !alias.scope !19, !noalias !22, !nonnull !3, !noundef !3 - %51 = getelementptr inbounds nuw { i64, i64, i64 }, ptr %50, i64 %40 +47: ; preds = %38 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %49 = load ptr, ptr %48, align 8, !alias.scope !19, !noalias !22, !nonnull !3, !noundef !3 + %50 = getelementptr inbounds nuw { i64, i64, i64 }, ptr %49, i64 %39 br label %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" -52: ; preds = %39 - tail call void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %40, i64 noundef %42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ff2e992120c34a933ceff030207ecd38.4) #13, !noalias !19 +51: ; preds = %38 + tail call void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %39, i64 noundef %41, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ff2e992120c34a933ceff030207ecd38.4) #13, !noalias !19 unreachable -"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit": ; preds = %44, %46, %48 - %.sroa.0.0.i = phi ptr [ %51, %48 ], [ %45, %44 ], [ %47, %46 ] - %53 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 16 - store i64 %1, ptr %53, align 8 - br label %54 +"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit": ; preds = %43, %45, %47 + %.sroa.0.0.i = phi ptr [ %50, %48 ], [ %44, %44 ], [ %46, %46 ] + %52 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i, i64 16 + store i64 %1, ptr %52, align 8 + br label %53 -54: ; preds = %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit", %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit +53: ; preds = %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit", %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit %.sroa.0.0 = phi i64 [ %28, %_ZN11pingora_lru11linked_list5Nodes8new_node17h5bb5feb2947f715eE.exit ], [ %38, %"_ZN91_$LT$pingora_lru..linked_list..Nodes$u20$as$u20$core..ops..index..IndexMut$LT$usize$GT$$GT$9index_mut17hb5701dfddf68a816E.exit" ] ret i64 %.sroa.0.0 } diff --git a/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll b/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll index 10be075e547..2011d99df25 100644 --- a/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll +++ b/bench/pola-rs/optimized/4wcss1mo7ddwq4rmuj4gtjb0b.ll @@ -1768,9 +1768,9 @@ define internal void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17hb83e8bd2 br i1 %8, label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i": ; preds = %1 - %9 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 - %10 = shl nuw nsw i64 %7, 4 - tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %9, i64 noundef %10, i64 noundef 8) #23 + %8 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 + %9 = shl nuw nsw i64 %7, 4 + tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %8, i64 noundef %9, i64 noundef 8) #23 br label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit" "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h3efd2e483f3c25e9E.exit": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2c4b2651a9251490E.exit.i.i.i.i" diff --git a/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll b/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll index 3c6bed07aec..d2bb8452903 100644 --- a/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll +++ b/bench/pola-rs/optimized/cil91sqjm14i40hvtn93g3igf.ll @@ -4984,7 +4984,7 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit: ; %20 = icmp eq i64 %15, 0 br i1 %20, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17he5d5389288bbc6faE.exit", label %21 -21: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit +21:; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17hb3a027330886b1b5E.exit %22 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %23 = sub nsw i64 0, %13 %24 = getelementptr inbounds i8, ptr %22, i64 %23 diff --git a/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll b/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll index cc1edd9d5e9..b743a91754e 100644 --- a/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll +++ b/bench/qdrant-rs/optimized/14hho85eanhsaepf.ll @@ -224,12 +224,12 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 switch i64 %4, label %6 [ i64 0, label %7 - i64 1, label %48 + i64 1, label %47 ] 6: ; preds = %1 tail call void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$validator..types..ValidationError$GT$$GT$17he81271ec927c1bb6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) - br label %49 + br label %48 7: ; preds = %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !46) @@ -290,7 +290,7 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation %35 = and i16 %34, %.lcssa.i.i.i %36 = getelementptr inbounds i8, ptr %32, i64 -32 invoke void @"_ZN4core3ptr59drop_in_place$LT$validator..types..ValidationErrorsKind$GT$17h45e243adcc0b352eE.llvm.17854369902771195939"(ptr noalias noundef nonnull align 8 dereferenceable(32) %36) - to label %.noexc1 unwind label %46 + to label %.noexc1 unwind label %45 .noexc.loopexit: ; preds = %.noexc1 %.pre = load i64, ptr %9, align 8, !alias.scope !73 @@ -302,31 +302,31 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation %38 = mul i64 %37, 49 %39 = add nsw i64 %38, 65 %40 = icmp ult i64 %39, 9223372036854775793 - tail call void @llvm.assume(i1 %40) + tail call void @llvm.assume(i1 %39) %41 = icmp eq i64 %39, 0 br i1 %41, label %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", label %42 -42: ; preds = %.noexc +41: ; preds = %.noexc %.neg = mul i64 %37, -48 - %43 = load ptr, ptr %8, align 8, !alias.scope !73, !nonnull !7, !noundef !7 - %44 = getelementptr i8, ptr %43, i64 %.neg - %45 = getelementptr i8, ptr %44, i64 -48 - tail call void @__rust_dealloc(ptr noundef nonnull %45, i64 noundef %39, i64 noundef 16) #24, !noalias !73 + %42 = load ptr, ptr %8, align 8, !alias.scope !73, !nonnull !7, !noundef !7 + %43 = getelementptr i8, ptr %42, i64 %.neg + %44 = getelementptr i8, ptr %43, i64 -48 + tail call void @__rust_dealloc(ptr noundef nonnull %44, i64 noundef %39, i64 noundef 16) #24, !noalias !73 br label %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit" -46: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i" - %47 = landingpad { ptr, i32 } +45: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i" + %46 = landingpad { ptr, i32 } cleanup %.val.i = load ptr, ptr %5, align 8, !alias.scope !46, !nonnull !7, !noundef !7 tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef 48, i64 noundef 8) #24, !noalias !46 - resume { ptr, i32 } %47 + resume { ptr, i32 } %46 -"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit": ; preds = %42, %.noexc, %7 +"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit": ; preds = %41, %.noexc, %7 %.val1.i = load ptr, ptr %5, align 8, !alias.scope !46, !nonnull !7, !noundef !7 tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i, i64 noundef 48, i64 noundef 8) #24, !noalias !46 - br label %49 + br label %48 -48: ; preds = %1 +47: ; preds = %1 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !76 call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !76 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) @@ -334,9 +334,9 @@ define hidden void @"_ZN4core3ptr59drop_in_place$LT$validator..types..Validation call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !76 call void @"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0cb7a0d947f514c2E.llvm.6944390993391618976"(ptr noalias noundef nonnull align 8 dereferenceable(72) %3), !noalias !76 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !76 - br label %49 + br label %48 -49: ; preds = %48, %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", %6 +48: ; preds = %47, %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validator..types..ValidationErrors$GT$$GT$17h8f696a6bffc8bef3E.llvm.17854369902771195939.exit", %6 ret void } @@ -401,7 +401,7 @@ define hidden void @"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$validat %25 = getelementptr inbounds { { ptr, i64 }, { i64, [3 x i64] } }, ptr %.sroa.03.1.i.i.i, i64 %24 %26 = getelementptr inbounds i8, ptr %25, i64 -32 invoke void @"_ZN4core3ptr59drop_in_place$LT$validator..types..ValidationErrorsKind$GT$17h45e243adcc0b352eE.llvm.17854369902771195939"(ptr noalias noundef nonnull align 8 dereferenceable(32) %26) - to label %.noexc unwind label %39 + to label %.noexc unwind label %38 .noexc: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i.i.i" %27 = add i16 %.lcssa.i.i.i.i.i, -1 @@ -419,23 +419,23 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.1785436 %34 = icmp eq i64 %32, 0 br i1 %34, label %"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit", label %35 -35: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i +34: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i %.neg.i.i = mul i64 %4, -48 - %36 = load ptr, ptr %2, align 8, !alias.scope !113, !nonnull !7, !noundef !7 - %37 = getelementptr i8, ptr %36, i64 %.neg.i.i - %38 = getelementptr i8, ptr %37, i64 -48 - tail call void @__rust_dealloc(ptr noundef nonnull %38, i64 noundef %32, i64 noundef 16) #24, !noalias !113 + %35 = load ptr, ptr %2, align 8, !alias.scope !113, !nonnull !7, !noundef !7 + %36 = getelementptr i8, ptr %35, i64 %.neg.i.i + %37 = getelementptr i8, ptr %36, i64 -48 + tail call void @__rust_dealloc(ptr noundef nonnull %37, i64 noundef %32, i64 noundef 16) #24, !noalias !113 br label %"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit" -"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit": ; preds = %35, %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i, %1 +"_ZN4core3ptr55drop_in_place$LT$validator..types..ValidationErrors$GT$17hccb70c6bbd2a815cE.exit": ; preds = %34, %_ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.17854369902771195939.exit.i.i, %1 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 8) #24 ret void -39: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i.i.i" - %40 = landingpad { ptr, i32 } +38: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1dfe9770281547f4E.llvm.17854369902771195939.exit.i.i.i" + %39 = landingpad { ptr, i32 } cleanup tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 8) #24 - resume { ptr, i32 } %40 + resume { ptr, i32 } %39 } ; Function Attrs: nonlazybind uwtable @@ -1010,7 +1010,7 @@ _ZN9hashbrown3raw13RawTableInner13drop_elements17he78dd81bb3a33870E.llvm.1785436 %33 = add i64 %6, 1 %34 = mul nuw i64 %33, %2 %35 = add i64 %3, -1 - %36 = add nuw i64 %34, %35 + %36 = add nuw i64 %34, %34 %37 = sub i64 0, %3 %38 = and i64 %36, %37 %39 = add i64 %6, 17 diff --git a/bench/qdrant-rs/optimized/4iacc535829shmz2.ll b/bench/qdrant-rs/optimized/4iacc535829shmz2.ll index 0772548a039..93a762ddee8 100644 --- a/bench/qdrant-rs/optimized/4iacc535829shmz2.ll +++ b/bench/qdrant-rs/optimized/4iacc535829shmz2.ll @@ -580,7 +580,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #11 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -592,15 +592,15 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67 br label %12 11: ; preds = %4 - br i1 %3, label %20, label %15 + br i1 %3, label %20, label %14 -12: ; preds = %15, %20, %6 +12:; preds = %15, %20, %6 %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 ret { ptr, i64 } %14 -15: ; preds = %11 +15:; preds = %11 %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %17 = add i64 %1, -1 %18 = icmp sgt i64 %17, -1 @@ -608,7 +608,7 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67 %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 br label %12 -20: ; preds = %11 +20:; preds = %11 %21 = add i64 %1, -1 %22 = icmp sgt i64 %21, -1 tail call void @llvm.assume(i1 %22) @@ -734,7 +734,7 @@ define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allo ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #11 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %10 + br i1 %4, label %5, label %9 5: ; preds = %3 %6 = add i64 %1, -1 @@ -745,19 +745,19 @@ define hidden { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..all tail call void @llvm.assume(i1 %9) br label %_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit -10: ; preds = %3 - %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %12 = add i64 %1, -1 - %13 = icmp sgt i64 %12, -1 - tail call void @llvm.assume(i1 %13) - %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 +9: ; preds = %3 + %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %11 = add i64 %1, -1 + %12 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %12) + %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 br label %_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit -_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit: ; preds = %5, %10 - %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %14, %10 ] - %15 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 - %16 = insertvalue { ptr, i64 } %15, i64 %2, 1 - ret { ptr, i64 } %16 +_ZN5alloc5alloc6Global10alloc_impl17h996700ad2487d67cE.llvm.14663317015130033216.exit: ; preds = %5, %9 + %.sroa.05.0.i = phi ptr [ %8, %5 ], [ %13, %10 ] + %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0.i, 0 + %15 = insertvalue { ptr, i64 } %14, i64 %2, 1 + ret { ptr, i64 } %15 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1503,7 +1503,7 @@ define hidden void @"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ite ; Function Attrs: nounwind nonlazybind uwtable define hidden noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17hce7306cb8b86e242E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #1 { %4 = icmp eq i64 %2, 0 - br i1 %4, label %5, label %10 + br i1 %4, label %5, label %9 5: ; preds = %3 %6 = add i64 %1, -1 @@ -1514,16 +1514,16 @@ define hidden noundef ptr @_ZN9hashbrown3raw5alloc5inner8do_alloc17hce7306cb8b86 tail call void @llvm.assume(i1 %9) br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit" -10: ; preds = %3 - %11 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %12 = add i64 %1, -1 - %13 = icmp sgt i64 %12, -1 - tail call void @llvm.assume(i1 %13) - %14 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 +9: ; preds = %3 + %10 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %11 = add i64 %1, -1 + %12 = icmp sgt i64 %11, -1 + tail call void @llvm.assume(i1 %12) + %13 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit": ; preds = %5, %10 - %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %14, %10 ] +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17h0677ad99f6a2c870E.llvm.14663317015130033216.exit": ; preds = %5, %9 + %.sroa.05.0.i.i = phi ptr [ %8, %5 ], [ %13, %10 ] ret ptr %.sroa.05.0.i.i } diff --git a/bench/qemu/optimized/tcg-op.ll b/bench/qemu/optimized/tcg-op.ll index dd29edf3b2f..ef5e192a26f 100644 --- a/bench/qemu/optimized/tcg-op.ll +++ b/bench/qemu/optimized/tcg-op.ll @@ -5565,7 +5565,7 @@ define dso_local void @tcg_gen_extract2_i64(ptr noundef %0, ptr noundef %1, ptr 30: ; preds = %4 %31 = icmp eq ptr %1, %2 - br i1 %31, label %32, label %60 + br i1 %31, label %32, label %61 32: ; preds = %30 %or.cond.i = icmp samesign ult i32 %3, 64 @@ -5592,38 +5592,38 @@ define dso_local void @tcg_gen_extract2_i64(ptr noundef %0, ptr noundef %1, ptr tcg_gen_rotli_i64.exit.i: ; preds = %32 %narrow = sub nuw nsw i32 64, %3 %46 = zext nneg i32 %narrow to i64 - %47 = tail call ptr @tcg_constant_i64(i64 noundef %46) #6 - %48 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) - %49 = load ptr, ptr %48, align 8 - %50 = ptrtoint ptr %0 to i64 - %51 = getelementptr inbounds nuw i8, ptr %49, i64 %50 - %52 = ptrtoint ptr %51 to i64 - %53 = ptrtoint ptr %2 to i64 - %54 = getelementptr inbounds nuw i8, ptr %49, i64 %53 - %55 = ptrtoint ptr %54 to i64 - %56 = ptrtoint ptr %47 to i64 - %57 = getelementptr inbounds nuw i8, ptr %49, i64 %56 - %58 = ptrtoint ptr %57 to i64 - %59 = tail call ptr @tcg_gen_op3(i32 noundef 93, i32 noundef 1, i64 noundef %52, i64 noundef %55, i64 noundef %58) + %48 = tail call ptr @tcg_constant_i64(i64 noundef %46) #6 + %49 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) + %50 = load ptr, ptr %49, align 8 + %51 = ptrtoint ptr %0 to i64 + %52 = getelementptr inbounds nuw i8, ptr %50, i64 %51 + %53 = ptrtoint ptr %52 to i64 + %54 = ptrtoint ptr %2 to i64 + %55 = getelementptr inbounds nuw i8, ptr %50, i64 %54 + %56 = ptrtoint ptr %55 to i64 + %57 = ptrtoint ptr %48 to i64 + %58 = getelementptr inbounds nuw i8, ptr %50, i64 %57 + %59 = ptrtoint ptr %58 to i64 + %60 = tail call ptr @tcg_gen_op3(i32 noundef 93, i32 noundef 1, i64 noundef %53, i64 noundef %56, i64 noundef %59) br label %tcg_gen_mov_i64.exit -60: ; preds = %30 - %61 = zext nneg i32 %3 to i64 - %62 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) - %63 = load ptr, ptr %62, align 8 - %64 = ptrtoint ptr %0 to i64 - %65 = getelementptr inbounds nuw i8, ptr %63, i64 %64 - %66 = ptrtoint ptr %65 to i64 - %67 = ptrtoint ptr %1 to i64 - %68 = getelementptr inbounds nuw i8, ptr %63, i64 %67 - %69 = ptrtoint ptr %68 to i64 - %70 = ptrtoint ptr %2 to i64 - %71 = getelementptr inbounds nuw i8, ptr %63, i64 %70 - %72 = ptrtoint ptr %71 to i64 - %73 = tail call ptr @tcg_gen_op4(i32 noundef 98, i32 noundef 1, i64 noundef %66, i64 noundef %69, i64 noundef %72, i64 noundef range(i64 1, 4294967296) %61) +61: ; preds = %30 + %62 = zext nneg i32 %3 to i64 + %63 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @tcg_ctx) + %64 = load ptr, ptr %63, align 8 + %65 = ptrtoint ptr %0 to i64 + %66 = getelementptr inbounds nuw i8, ptr %64, i64 %65 + %67 = ptrtoint ptr %66 to i64 + %68 = ptrtoint ptr %1 to i64 + %69 = getelementptr inbounds nuw i8, ptr %64, i64 %68 + %70 = ptrtoint ptr %69 to i64 + %71 = ptrtoint ptr %2 to i64 + %72 = getelementptr inbounds nuw i8, ptr %64, i64 %71 + %73 = ptrtoint ptr %72 to i64 + %74 = tail call ptr @tcg_gen_op4(i32 noundef 98, i32 noundef 1, i64 noundef %67, i64 noundef %70, i64 noundef %73, i64 noundef range(i64 1, 4294967296) %62) br label %tcg_gen_mov_i64.exit -tcg_gen_mov_i64.exit: ; preds = %tcg_gen_rotli_i64.exit.i, %36, %34, %20, %18, %8, %6, %60 +tcg_gen_mov_i64.exit: ; preds = %tcg_gen_rotli_i64.exit.i, %36, %34, %20, %18, %8, %6, %61 ret void } diff --git a/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll b/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll index abe58b7c8e1..dcc7689689f 100644 --- a/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll +++ b/bench/quiche-rs/optimized/2i59h3d4lts0esz5vi8utqlqr.ll @@ -456,11 +456,11 @@ define hidden void @"_ZN4core3ptr206drop_in_place$LT$alloc..rc..Weak$LT$core..ce %28 = icmp eq i64 %26, 0 br i1 %28, label %"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit", label %29 -29: ; preds = %9 +28: ; preds = %9 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %26, i64 noundef range(i64 1, -9223372036854775807) %19) #13 br label %"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit" -"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit": ; preds = %1, %4, %9, %29 +"_ZN70_$LT$alloc..rc..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06900f0b70c28d96E.exit": ; preds = %1, %4, %9, %28 ret void } diff --git a/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll b/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll index 0dd86ddaf8f..5957fa490cb 100644 --- a/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll +++ b/bench/quiche-rs/optimized/a2fxvubrv6xxh830kesi8vt5v.ll @@ -616,10 +616,10 @@ define internal fastcc { ptr, i64 } @"_ZN90_$LT$core..str..iter..Split$LT$P$GT$$ %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 br label %15 -15: ; preds = %44, %.lr.ph.i.i +15: ; preds = %43, %.lr.ph.i.i %.pre4547.i.i = phi i64 [ %.val1.i, %.lr.ph.i.i ], [ %.pre4548.i.i, %44 ] - %16 = phi i64 [ %11, %.lr.ph.i.i ], [ %46, %44 ] - %17 = phi i64 [ %10, %.lr.ph.i.i ], [ %45, %44 ] + %16 = phi i64 [ %11, %.lr.ph.i.i ], [ %45, %44 ] + %17 = phi i64 [ %10, %.lr.ph.i.i ], [ %44, %44 ] %18 = load ptr, ptr %6, align 8, !alias.scope !106, !noalias !109, !nonnull !8, !align !105, !noundef !8 %19 = sub nuw i64 %16, %17 %20 = getelementptr inbounds nuw i8, ptr %18, i64 %17 @@ -637,30 +637,30 @@ define internal fastcc { ptr, i64 } @"_ZN90_$LT$core..str..iter..Split$LT$P$GT$$ %.not.i.i.i = icmp eq i64 %16, %17 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %.preheader.i.i.i, %31 - %.sroa.01.05.i.i.i = phi i64 [ %32, %31 ], [ 0, %.preheader.i.i.i ] - %28 = getelementptr inbounds nuw i8, ptr %20, i64 %.sroa.01.05.i.i.i - %29 = load i8, ptr %28, align 1, !alias.scope !111, !noalias !109, !noundef !8 - %30 = icmp eq i8 %29, %26 - br i1 %30, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i, label %31 +.lr.ph.i.i.i: ; preds = %.preheader.i.i.i, %30 + %.sroa.01.05.i.i.i = phi i64 [ %31, %31 ], [ 0, %.preheader.i.i.i ] + %27 = getelementptr inbounds nuw i8, ptr %20, i64 %.sroa.01.05.i.i.i + %28 = load i8, ptr %27, align 1, !alias.scope !111, !noalias !109, !noundef !8 + %29 = icmp eq i8 %28, %26 + br i1 %29, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i, label %30 -31: ; preds = %.lr.ph.i.i.i - %32 = add nuw i64 %.sroa.01.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %32, %19 +30: ; preds = %.lr.ph.i.i.i + %31 = add nuw i64 %.sroa.01.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %31, %19 br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i: ; preds = %15 - %33 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17ha63ab3f9ed3c39d6E(i8 noundef %26, ptr noalias noundef nonnull readonly align 1 %20, i64 noundef %19), !noalias !109 - %34 = extractvalue { i64, i64 } %33, 0 - %35 = trunc nuw i64 %34 to i1 - br i1 %35, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i + %32 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17ha63ab3f9ed3c39d6E(i8 noundef %26, ptr noalias noundef nonnull readonly align 1 %20, i64 noundef %19), !noalias !109 + %33 = extractvalue { i64, i64 } %32, 0 + %34 = trunc nuw i64 %33 to i1 + br i1 %34, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i, label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.loopexit20_crit_edge.i.i: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i %.pre46.pre.i.i = load i64, ptr %9, align 8, !alias.scope !106, !noalias !109 br label %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.i.i - %36 = extractvalue { i64, i64 } %33, 1 + %35 = extractvalue { i64, i64 } %32, 1 %.pre.i.i = load i64, ptr %8, align 8, !alias.scope !106, !noalias !109 %.pre42.i.i = load i8, ptr %14, align 8, !alias.scope !106, !noalias !109 %.pre45.pre.i.i = load i64, ptr %7, align 8, !alias.scope !106, !noalias !109 @@ -670,11 +670,11 @@ _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memc _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i: ; preds = %.lr.ph.i.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i %.pre-phi.i.i = phi i64 [ %.pre51.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %22, %.lr.ph.i.i.i ] %.pre45.i.i = phi i64 [ %.pre45.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %.pre4547.i.i, %.lr.ph.i.i.i ] - %37 = phi i8 [ %.pre42.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %21, %.lr.ph.i.i.i ] - %38 = phi i64 [ %.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %17, %.lr.ph.i.i.i ] - %.sroa.4.0.i19.i.i = phi i64 [ %36, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %.sroa.01.05.i.i.i, %.lr.ph.i.i.i ] - %39 = add i64 %38, 1 - %40 = add i64 %39, %.sroa.4.0.i19.i.i + %36 = phi i8 [ %.pre42.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %21, %.lr.ph.i.i.i ] + %37 = phi i64 [ %.pre.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %17, %.lr.ph.i.i.i ] + %.sroa.4.0.i19.i.i = phi i64 [ %35, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit._ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16_crit_edge.i.i ], [ %.sroa.01.05.i.i.i, %.lr.ph.i.i.i ] + %38 = add i64 %37, 1 + %39 = add i64 %38, %.sroa.4.0.i19.i.i store i64 %40, ptr %8, align 8, !alias.scope !106, !noalias !109 %.not12.i.i = icmp ult i64 %40, %.pre-phi.i.i br i1 %.not12.i.i, label %44, label %42 @@ -684,75 +684,75 @@ _ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i: ; preds = %.pr store i64 %41, ptr %8, align 8, !alias.scope !106, !noalias !109 br label %.loopexit.i -42: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i - %43 = sub nuw i64 %40, %.pre-phi.i.i - %.not13.i.i = icmp ugt i64 %40, %.pre45.i.i - br i1 %.not13.i.i, label %44, label %48 +41: ; preds = %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i + %42 = sub nuw i64 %39, %.pre-phi.i.i + %.not13.i.i = icmp ugt i64 %39, %.pre45.i.i + br i1 %.not13.i.i, label %43, label %47 -44: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i", %42, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i +43: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i", %41, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i %.pre4548.i.i = phi i64 [ %.pre44.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %.pre45.i.i, %42 ], [ %.pre45.i.i, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] - %45 = phi i64 [ %.pre43.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %40, %42 ], [ %40, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] - %46 = load i64, ptr %9, align 8, !alias.scope !106, !noalias !109, !noundef !8 - %47 = icmp ult i64 %46, %45 - %.not.i.i = icmp ugt i64 %46, %.pre4548.i.i - %or.cond.i.i = select i1 %47, i1 true, i1 %.not.i.i + %44 = phi i64 [ %.pre43.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" ], [ %39, %42 ], [ %39, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread16.i.i ] + %45 = load i64, ptr %9, align 8, !alias.scope !106, !noalias !109, !noundef !8 + %46 = icmp ult i64 %45, %44 + %.not.i.i = icmp ugt i64 %45, %.pre4548.i.i + %or.cond.i.i = select i1 %46, i1 true, i1 %.not.i.i br i1 %or.cond.i.i, label %.loopexit.i, label %15 -48: ; preds = %42 - %49 = icmp ugt i8 %37, 4 - br i1 %49, label %50, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i", !prof !10 +47: ; preds = %41 + %48 = icmp ugt i8 %36, 4 + br i1 %48, label %49, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i", !prof !10 -50: ; preds = %48 +49: ; preds = %47 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef range(i64 0, 256) %.pre-phi.i.i, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.cb0cbbd8d54a074eda7e75993297274d.20) #12, !noalias !114 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i": ; preds = %48 - %51 = load ptr, ptr %6, align 8, !alias.scope !106, !noalias !109, !nonnull !8, !align !105, !noundef !8 - %52 = getelementptr inbounds nuw i8, ptr %51, i64 %43 - %53 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hdfc6144e18c3da94E"(ptr noalias noundef nonnull readonly align 1 %52, i64 noundef %.pre-phi.i.i, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %.pre-phi.i.i), !noalias !109 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i": ; preds = %47 + %50 = load ptr, ptr %6, align 8, !alias.scope !106, !noalias !109, !nonnull !8, !align !105, !noundef !8 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 %42 + %52 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hdfc6144e18c3da94E"(ptr noalias noundef nonnull readonly align 1 %51, i64 noundef %.pre-phi.i.i, ptr noalias noundef nonnull readonly align 1 %13, i64 noundef %.pre-phi.i.i), !noalias !109 %.pre43.i.i = load i64, ptr %8, align 8, !alias.scope !106, !noalias !109 - br i1 %53, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" + br i1 %52, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i" "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit._crit_edge.i.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i" %.pre44.i.i = load i64, ptr %7, align 8, !alias.scope !106, !noalias !109 - br label %44 + br label %43 "_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5c022711328fe7a6E.exit.i.i" - %54 = load i64, ptr %0, align 8, !alias.scope !102, !noundef !8 - %55 = sub nuw i64 %43, %54 - %56 = getelementptr inbounds nuw i8, ptr %.val.i, i64 %54 + %53 = load i64, ptr %0, align 8, !alias.scope !102, !noundef !8 + %54 = sub nuw i64 %42, %53 + %55 = getelementptr inbounds nuw i8, ptr %.val.i, i64 %53 store i64 %.pre43.i.i, ptr %0, align 8, !alias.scope !102 br label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit" -.loopexit.i: ; preds = %44, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, %5 - %57 = load i8, ptr %2, align 1, !range !101, !alias.scope !117, !noundef !8 - %58 = trunc nuw i8 %57 to i1 - br i1 %58, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit", label %59 +.loopexit.i: ; preds = %43, %_ZN4core5slice6memchr6memchr17h2d5411a4e6c78ad8E.exit.thread.i.i, %5 + %56 = load i8, ptr %2, align 1, !range !101, !alias.scope !117, !noundef !8 + %57 = trunc nuw i8 %56 to i1 + br i1 %57, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit", label %58 -59: ; preds = %.loopexit.i +58: ; preds = %.loopexit.i store i8 1, ptr %2, align 1, !alias.scope !117 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %61 = load i8, ptr %60, align 8, !range !101, !alias.scope !117, !noundef !8 - %62 = trunc nuw i8 %61 to i1 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %60 = load i8, ptr %59, align 8, !range !101, !alias.scope !117, !noundef !8 + %61 = trunc nuw i8 %60 to i1 %.pre.i2.i = load i64, ptr %0, align 8, !alias.scope !117 %.phi.trans.insert.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 %.pre2.i.i = load i64, ptr %.phi.trans.insert.i.i, align 8, !alias.scope !117 %.not.i3.i = icmp ne i64 %.pre2.i.i, %.pre.i2.i - %or.cond.not.i.i = select i1 %62, i1 true, i1 %.not.i3.i + %or.cond.not.i.i = select i1 %61, i1 true, i1 %.not.i3.i br i1 %or.cond.not.i.i, label %._crit_edge.i.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit" -._crit_edge.i.i: ; preds = %59 +._crit_edge.i.i: ; preds = %58 %.val.i.i = load ptr, ptr %6, align 8, !alias.scope !117, !nonnull !8, !align !105, !noundef !8 - %63 = sub nuw i64 %.pre2.i.i, %.pre.i2.i - %64 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 %.pre.i2.i + %62 = sub nuw i64 %.pre2.i.i, %.pre.i2.i + %63 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 %.pre.i2.i br label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit" -"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit": ; preds = %1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", %.loopexit.i, %59, %._crit_edge.i.i - %.sroa.4.0.i = phi i64 [ undef, %1 ], [ %55, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %63, %._crit_edge.i.i ], [ undef, %59 ], [ undef, %.loopexit.i ] - %.sroa.0.0.i = phi ptr [ null, %1 ], [ %56, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %64, %._crit_edge.i.i ], [ null, %59 ], [ null, %.loopexit.i ] - %65 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 - %66 = insertvalue { ptr, i64 } %65, i64 %.sroa.4.0.i, 1 - ret { ptr, i64 } %66 +"_ZN4core3str4iter22SplitInternal$LT$P$GT$4next17h0d3af17c2a08064cE.exit": ; preds = %1, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i", %.loopexit.i, %58, %._crit_edge.i.i + %.sroa.4.0.i = phi i64 [ undef, %1 ], [ %54, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %62, %._crit_edge.i.i ], [ undef, %59 ], [ undef, %.loopexit.i ] + %.sroa.0.0.i = phi ptr [ null, %1 ], [ %55, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17hbd7d807cf085a09fE.exit.i" ], [ %63, %._crit_edge.i.i ], [ null, %59 ], [ null, %.loopexit.i ] + %64 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 + %65 = insertvalue { ptr, i64 } %64, i64 %.sroa.4.0.i, 1 + ret { ptr, i64 } %65 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll b/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll index 86105a0a0c6..6608b998a19 100644 --- a/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll +++ b/bench/quinn-rs/optimized/97m639ujt231tug2it6j1j2tc.ll @@ -502,11 +502,11 @@ define hidden void @"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %21 = icmp eq i64 %19, 0 br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit", label %22 -22: ; preds = %8 +20: ; preds = %8 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit": ; preds = %1, %4, %8, %22 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h964d77205a4ab862E.exit": ; preds = %1, %4, %8, %20 ret void } @@ -660,11 +660,11 @@ define hidden void @"_ZN4core3ptr111drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 %21 = icmp eq i64 %19, 0 br i1 %21, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit", label %22 -22: ; preds = %8 +20: ; preds = %8 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef %19, i64 noundef range(i64 1, -9223372036854775807) %14) #14 br label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit" -"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit": ; preds = %1, %4, %8, %22 +"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc52f36648a8fcbcfE.exit": ; preds = %1, %4, %8, %20 ret void } diff --git a/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll b/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll index c6a2508c578..841fad3b68a 100644 --- a/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll +++ b/bench/quinn-rs/optimized/f3p3h61s9nwe4ta3vnloaej97.ll @@ -7827,32 +7827,32 @@ _ZN11quinn_proto5token16encode_unix_secs17h14abcd41ee43cda7E.exit20: ; preds = % %84 = invoke noundef zeroext i1 %83(ptr noundef align 1 %80, ptr noalias noundef nonnull align 8 dereferenceable(24) %24, ptr noalias noundef nonnull readonly align 1 inttoptr (i64 1 to ptr), i64 noundef 0) to label %88 unwind label %85 -85: ; preds = %89, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", %79 +85: ; preds = %88, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", %79 %86 = landingpad { ptr, i32 } cleanup %87 = icmp ne ptr %81, null call void @llvm.assume(i1 %87) invoke fastcc void @"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE"(ptr %80, ptr nonnull %81) #26 - to label %.thread unwind label %114 + to label %.thread unwind label %112 -88: ; preds = %79 - br i1 %84, label %89, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", !prof !4 +87: ; preds = %79 + br i1 %84, label %88, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit", !prof !4 -89: ; preds = %88 +88: ; preds = %87 invoke void @_ZN4core6result13unwrap_failed17h563d6df1cad9fe9bE(ptr noalias noundef nonnull readonly align 1 @anon.958ad362766c6650c2bee9c81b99cdad.33, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.958ad362766c6650c2bee9c81b99cdad.37, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.958ad362766c6650c2bee9c81b99cdad.171) #23 to label %.noexc unwind label %85 -.noexc: ; preds = %89 +.noexc: ; preds = %88 unreachable -"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit": ; preds = %88 +"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit": ; preds = %87 call void @llvm.lifetime.start.p0(ptr nonnull %21) store i128 %62, ptr %21, align 16 - %90 = getelementptr inbounds nuw i8, ptr %21, i64 16 - invoke void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h1f35b7a2b9569eedE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull %21, ptr noundef nonnull %90, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.958ad362766c6650c2bee9c81b99cdad.172) + %89 = getelementptr inbounds nuw i8, ptr %21, i64 16 + invoke void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h1f35b7a2b9569eedE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull %21, ptr noundef nonnull %89, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.958ad362766c6650c2bee9c81b99cdad.172) to label %91 unwind label %85 -91: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit" +90: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8c53eaa133ee9530E.exit" call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %24, i64 24, i1 false) %92 = icmp ne ptr %81, null @@ -7861,15 +7861,15 @@ _ZN11quinn_proto5token16encode_unix_secs17h14abcd41ee43cda7E.exit20: ; preds = % %.not.i = icmp eq ptr %93, null br i1 %.not.i, label %96, label %94 -94: ; preds = %91 +92: ; preds = %90 %95 = icmp ne ptr %80, null call void @llvm.assume(i1 %95) invoke void %93(ptr noundef nonnull %80) - to label %96 unwind label %105 + to label %96 unwind label %103 -96: ; preds = %94, %91 - %97 = icmp ne ptr %80, null - call void @llvm.assume(i1 %97) +96:; preds = %94, %91 + %100 = icmp ne ptr %80, null + call void @llvm.assume(i1 %100) %98 = getelementptr inbounds nuw i8, ptr %81, i64 8 %99 = load i64, ptr %98, align 8, !range !45, !invariant.load !3 %100 = getelementptr inbounds nuw i8, ptr %81, i64 16 @@ -7883,40 +7883,40 @@ _ZN11quinn_proto5token16encode_unix_secs17h14abcd41ee43cda7E.exit20: ; preds = % call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %99, i64 noundef range(i64 1, -9223372036854775807) %101) #24 br label %"_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit" -105: ; preds = %94 - %106 = landingpad { ptr, i32 } +103: ; preds = %92 + %104 = landingpad { ptr, i32 } cleanup - %107 = getelementptr inbounds nuw i8, ptr %81, i64 8 - %108 = load i64, ptr %107, align 8, !range !45, !invariant.load !3 - %109 = getelementptr inbounds nuw i8, ptr %81, i64 16 - %110 = load i64, ptr %109, align 8, !range !46, !invariant.load !3 - %111 = icmp ult i64 %110, -9223372036854775807 - call void @llvm.assume(i1 %111) - %112 = icmp eq i64 %108, 0 - br i1 %112, label %116, label %113 - -113: ; preds = %105 - call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %108, i64 noundef range(i64 1, -9223372036854775807) %110) #24 - br label %116 + %105 = getelementptr inbounds nuw i8, ptr %81, i64 8 + %106 = load i64, ptr %105, align 8, !range !45, !invariant.load !3 + %107 = getelementptr inbounds nuw i8, ptr %81, i64 16 + %108 = load i64, ptr %107, align 8, !range !46, !invariant.load !3 + %109 = icmp ult i64 %108, -9223372036854775807 + call void @llvm.assume(i1 %109) + %110 = icmp eq i64 %106, 0 + br i1 %110, label %114, label %111 + +111: ; preds = %103 + call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %80, i64 noundef range(i64 1, -9223372036854775808) %106, i64 noundef range(i64 1, -9223372036854775807) %108) #24 + br label %114 "_ZN4core3ptr82drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$quinn_proto..crypto..AeadKey$GT$$GT$17h540cb866fe89f75eE.exit": ; preds = %104, %96 call void @llvm.lifetime.end.p0(ptr nonnull %24) ret void -114: ; preds = %85, %.thread - %115 = landingpad { ptr, i32 } +112: ; preds = %85, %.thread + %113 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #25 unreachable -116: ; preds = %113, %105, %.thread - %.pn34 = phi { ptr, i32 } [ %.pn35, %.thread ], [ %106, %105 ], [ %106, %113 ] +114: ; preds = %111, %103, %.thread + %.pn34 = phi { ptr, i32 } [ %.pn35, %.thread ], [ %104, %105 ], [ %104, %113 ] resume { ptr, i32 } %.pn34 .thread: ; preds = %85, %.thread36 %.pn35 = phi { ptr, i32 } [ %43, %.thread36 ], [ %86, %85 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hdec3f2ebf373a446E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24) #26 - to label %116 unwind label %114 + to label %116 unwind label %112 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll b/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll index 1c88c16ca40..332daaa6211 100644 --- a/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll +++ b/bench/rayon-rs/optimized/1ospp3uz7h49thev.ll @@ -30,26 +30,26 @@ define hidden void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$ %4 = inttoptr i64 %3 to ptr %5 = icmp ne i64 %3, 0 tail call void @llvm.assume(i1 %5) - %6 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %7 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 %8 = load i64, ptr %7, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) store ptr %6, ptr %2, align 8 - %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %8, ptr %9, align 8 + %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %8, ptr %8, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %10 unwind label %11 + to label %10 unwind label %10 -10: ; preds = %1 +9: ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @__rust_dealloc(ptr noundef nonnull %4, i64 noundef 16, i64 noundef 8) #13, !noalias !5 ret void -11: ; preds = %1 - %12 = landingpad { ptr, i32 } +10: ; preds = %1 + %11 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %4, i64 noundef 16, i64 noundef 8) #13, !noalias !10 - resume { ptr, i32 } %12 + resume { ptr, i32 } %11 } ; Function Attrs: nonlazybind uwtable @@ -67,35 +67,35 @@ define hidden void @_ZN15crossbeam_epoch5guard5Guard15defer_unchecked17h4ccf3bef store i64 %1, ptr %8, align 8, !alias.scope !15 call void @_ZN15crossbeam_epoch8internal5Local5defer17he931d8941bee3f39E(ptr noundef nonnull align 128 %5, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %19 + br label %18 9: ; preds = %2 %10 = and i64 %1, -8 %11 = inttoptr i64 %10 to ptr %12 = icmp ne i64 %10, 0 - tail call void @llvm.assume(i1 %12) - %13 = load ptr, ptr %11, align 8, !nonnull !4, !noundef !4 + tail call void @llvm.assume(i1 %11) + %14 = load ptr, ptr %11, align 8, !nonnull !4, !noundef !4 %14 = getelementptr inbounds nuw i8, ptr %11, i64 8 %15 = load i64, ptr %14, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr %13, ptr %3, align 8 - %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %15, ptr %16, align 8 + %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %15, ptr %15, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) - to label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit" unwind label %17 + to label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit" unwind label %16 -17: ; preds = %9 - %18 = landingpad { ptr, i32 } +16: ; preds = %9 + %17 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef 16, i64 noundef 8) #13, !noalias !18 - resume { ptr, i32 } %18 + resume { ptr, i32 } %17 "_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit": ; preds = %9 call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @__rust_dealloc(ptr noundef nonnull %11, i64 noundef 16, i64 noundef 8) #13, !noalias !23 - br label %19 + br label %18 -19: ; preds = %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit", %7 +18: ; preds = %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17h277ab886a182d976E.llvm.9411856555795096292.exit", %7 ret void } diff --git a/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll b/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll index 87752e7eb95..e10667d563d 100644 --- a/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll +++ b/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll @@ -63,21 +63,21 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2c83d87f31 %5 = inttoptr i64 %4 to ptr %6 = icmp ne i64 %4, 0 tail call void @llvm.assume(i1 %6) - %7 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %8 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 %8 = getelementptr inbounds nuw i8, ptr %5, i64 8 %9 = load i64, ptr %8, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) store ptr %7, ptr %2, align 8 - %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %9, ptr %10, align 8 + %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %9, ptr %9, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit" unwind label %11 + to label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit" unwind label %10 -11: ; preds = %1 - %12 = landingpad { ptr, i32 } +10: ; preds = %1 + %11 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8) #19 - resume { ptr, i32 } %12 + resume { ptr, i32 } %11 "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit": ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) @@ -93,25 +93,25 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h94c2fe8421 %5 = and i64 %4, -8 %6 = inttoptr i64 %5 to ptr %7 = icmp ne i64 %5, 0 - tail call void @llvm.assume(i1 %7) - %8 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + tail call void @llvm.assume(i1 %8) + %9 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 %9 = getelementptr inbounds nuw i8, ptr %6, i64 8 %10 = load i64, ptr %9, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) store ptr %8, ptr %2, align 8 - %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %10, ptr %11, align 8 + %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %9, ptr %10, align 8 invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h14fcd6ddb83fe083E.llvm.9679142966780209040"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %14 unwind label %12 + to label %13 unwind label %11 -12: ; preds = %1 - %13 = landingpad { ptr, i32 } +11: ; preds = %1 + %12 = landingpad { ptr, i32 } cleanup call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8) #19 call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8) #19 - resume { ptr, i32 } %13 + resume { ptr, i32 } %12 -14: ; preds = %1 +13: ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8) #19 call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8) #19 @@ -699,40 +699,40 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.3707938170552112821. ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.3707938170552112821(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #4 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) %9 = inttoptr i64 %1 to ptr - %10 = icmp ne i64 %1, 0 + %9 = icmp ne i64 %1, 0 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 - -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 - -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #19 - br label %12 - -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #19 - br label %12 +10: ; preds = %4 + br i1 %3, label %19, label %14 + +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %15 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 + +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #19 + br label %11 + +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #19 + br label %11 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll b/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll index aed6482b784..021a27aeb5c 100644 --- a/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll +++ b/bench/rayon-rs/optimized/aeba4nd7ialzggy.ll @@ -231,7 +231,7 @@ define hidden noundef i64 @"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$4load17h store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %13, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #14 unreachable 14: ; preds = %3 @@ -249,7 +249,7 @@ define hidden noundef i64 @"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$4load17h store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %19, align 8 %20 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %20, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #14 unreachable 21: ; preds = %3 @@ -519,7 +519,7 @@ define hidden noundef i8 @_ZN4core4sync6atomic11atomic_load17h5793edc2db4770a0E. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %12, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #14 unreachable 13: ; preds = %2 @@ -537,7 +537,7 @@ define hidden noundef i8 @_ZN4core4sync6atomic11atomic_load17h5793edc2db4770a0E. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %3, i64 24 store i64 0, ptr %19, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #14 unreachable 20: ; preds = %2 @@ -579,7 +579,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h939a445d398624cfE store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %12, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.8) #14 unreachable 13: ; preds = %2 @@ -597,7 +597,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h939a445d398624cfE store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %3, i64 24 store i64 0, ptr %19, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.11) #14 unreachable 20: ; preds = %2 @@ -643,7 +643,7 @@ define hidden void @_ZN4core4sync6atomic12atomic_store17h1574303c9bdc4bbcE.llvm. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %13, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.14) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.14) #14 unreachable 14: ; preds = %3 @@ -657,7 +657,7 @@ define hidden void @_ZN4core4sync6atomic12atomic_store17h1574303c9bdc4bbcE.llvm. store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %18, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.17) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.17) #14 unreachable 19: ; preds = %3 @@ -809,7 +809,7 @@ define hidden { i32, i32 } @_ZN4core4sync6atomic23atomic_compare_exchange17h498a store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %50, align 8 %51 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i64 0, ptr %51, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.20) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.20) #14 unreachable 52: ; preds = %13, %12, %11, %10, %9 @@ -823,7 +823,7 @@ define hidden { i32, i32 } @_ZN4core4sync6atomic23atomic_compare_exchange17h498a store ptr @anon.6bfb40bdba5575227de52f328afb9133.0, ptr %55, align 8 %56 = getelementptr inbounds nuw i8, ptr %7, i64 24 store i64 0, ptr %56, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.23) #16 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.23) #14 unreachable } @@ -852,13 +852,13 @@ define hidden { ptr, i8 } @"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81de store ptr %14, ptr %3, align 8 %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 %16, ptr %17, align 8 - invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) #16 + invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) #14 to label %20 unwind label %18 18: ; preds = %12 %19 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #17 + invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #15 to label %23 unwind label %21 20: ; preds = %12 @@ -867,7 +867,7 @@ define hidden { ptr, i8 } @"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81de 21: ; preds = %18 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 unreachable 23: ; preds = %18 @@ -938,7 +938,7 @@ define hidden noundef zeroext i1 @"_ZN69_$LT$std..sync..mutex..Mutex$LT$T$GT$$u2 26: ; preds = %23 %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) #17 + invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8) #15 to label %48 unwind label %46 28: ; preds = %23 @@ -989,7 +989,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 46: ; preds = %58, %26 %47 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 unreachable 48: ; preds = %58, %26 @@ -1024,7 +1024,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 58: ; preds = %49 %59 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) #17 + invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) #15 to label %48 unwind label %46 60: ; preds = %49 @@ -1070,7 +1070,7 @@ define hidden noundef nonnull align 128 ptr @"_ZN75_$LT$usize$u20$as$u20$core..s ret ptr %7 8: ; preds = %4 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %0, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #16 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %0, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #14 unreachable } @@ -1119,7 +1119,7 @@ define hidden noundef nonnull align 128 ptr @"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A br i1 %6, label %"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h61d1fc09bc3e3cbfE.llvm.4364434838112105284.exit", label %7, !prof !54 7: ; preds = %3 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #16 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #14 unreachable "_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h61d1fc09bc3e3cbfE.llvm.4364434838112105284.exit": ; preds = %3 @@ -1136,7 +1136,7 @@ define void @_ZN10rayon_core5sleep5Sleep3new17h97a0d250b2f3199bE(ptr noalias nou br i1 %4, label %6, label %5 5: ; preds = %2 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.36.llvm.4364434838112105284, i64 noundef 42, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.38.llvm.4364434838112105284) #16 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.36.llvm.4364434838112105284, i64 noundef 42, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.38.llvm.4364434838112105284) #14 unreachable 6: ; preds = %2 @@ -1262,13 +1262,13 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.llvm.43644348 store ptr %11, ptr %3, align 8, !noalias !109 %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 %.0.i.i.i, ptr %24, align 8, !noalias !109 - invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.40.llvm.4364434838112105284) #16 + invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.6bfb40bdba5575227de52f328afb9133.24, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6bfb40bdba5575227de52f328afb9133.40.llvm.4364434838112105284) #14 to label %27 unwind label %25, !noalias !113 25: ; preds = %23 %26 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #17 + invoke void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonError$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$$GT$17h5a2246340cb6bcd0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #15 to label %common.resume unwind label %28, !noalias !113 27: ; preds = %23 @@ -1333,7 +1333,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 46: ; preds = %33 %47 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #17 + invoke void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.llvm.4364434838112105284"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #15 to label %common.resume unwind label %51 48: ; preds = %33 @@ -1344,7 +1344,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.4364434838112105284.exit. 51: ; preds = %46 %52 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 + tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 unreachable } @@ -1370,31 +1370,31 @@ define hidden void @_ZN10rayon_core5sleep9IdleState11wake_partly17h7a9dde494bf6f declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #10 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #9 ; Function Attrs: nonlazybind uwtable declare void @_ZN3std3env4_var17heb1759b01e9820adE(ptr noalias noundef sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #1 ; Function Attrs: cold nonlazybind uwtable -declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex14lock_contended17h711e3c2fa7879c2dE(ptr noundef nonnull align 4) unnamed_addr #8 +declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex14lock_contended17h711e3c2fa7879c2dE(ptr noundef nonnull align 4) unnamed_addr #7 ; Function Attrs: cold nonlazybind uwtable -declare noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h658c934b8397a2acE() unnamed_addr #8 +declare noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h658c934b8397a2acE() unnamed_addr #7 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN43_$LT$bool$u20$as$u20$core..fmt..Display$GT$3fmt17h66f0ab6491e96cc2E"(ptr noalias noundef readonly align 1 dereferenceable(1), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef align 8 captures(none) dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 +declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef align 8 captures(none) dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN76_$LT$std..sync..poison..PoisonError$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17hfaccba8df3425db0E"(ptr noalias noundef readonly align 8 dereferenceable(16), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 +declare void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #12 +declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #11 ; Function Attrs: nonlazybind uwtable declare void @_ZN4core3fmt9Formatter12debug_struct17h182b2d36b73186b9E(ptr noalias noundef sret({ ptr, i8, i8, [6 x i8] }) align 8 captures(none) dereferenceable(16), ptr noalias noundef align 8 dereferenceable(64), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #1 @@ -1412,16 +1412,16 @@ declare noundef zeroext i1 @"_ZN57_$LT$core..fmt..Arguments$u20$as$u20$core..fmt declare noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct21finish_non_exhaustive17h376fe039ed28a878E(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 +declare void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 ; Function Attrs: cold nonlazybind uwtable -declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17hb07a3d057da5ea39E(ptr noundef nonnull align 4) unnamed_addr #8 +declare void @_ZN3std3sys4unix5locks11futex_mutex5Mutex4wake17hb07a3d057da5ea39E(ptr noundef nonnull align 4) unnamed_addr #7 ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN15crossbeam_deque5deque16Stealer$LT$T$GT$5steal17h201b268e9298e0a7E"(ptr noalias noundef sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 +declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 ; Function Attrs: nonlazybind uwtable declare void @_ZN3std4sync7condvar7Condvar10notify_one17h2467c63876d6f3cfE(ptr noundef nonnull align 4) unnamed_addr #1 @@ -1448,16 +1448,16 @@ declare hidden void @"_ZN4core3ptr99drop_in_place$LT$std..sync..poison..PoisonEr declare hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hcf05d76f64e5335aE.llvm.15553549611834190124"(ptr noalias noundef sret({ { i64, ptr }, i64 }) align 8 captures(none) dereferenceable(24), i64 noundef, i64 noundef) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(ptr captures(none)) #13 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #12 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(ptr captures(none)) #13 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #15 +declare void @llvm.experimental.noalias.scope.decl(metadata) #13 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -1468,11 +1468,11 @@ attributes #5 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "tar attributes #6 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #11 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #12 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #15 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #16 = { noreturn } diff --git a/bench/redis/optimized/arena.ll b/bench/redis/optimized/arena.ll index 47e31f2ffcf..56c5465e3c1 100644 --- a/bench/redis/optimized/arena.ll +++ b/bench/redis/optimized/arena.ll @@ -891,38 +891,38 @@ san_large_extent_decide_guard.exit: ; preds = %sz_size2index.exit, %86 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 range(i64 0, -2305843009213693952) %84, i1 true) %87 = xor i64 %86, 63 call void @llvm.lifetime.start.p0(ptr nonnull %6) - %88 = icmp eq ptr %0, null - br i1 %88, label %94, label %89 - -89: ; preds = %82 - %90 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %91 = load i64, ptr %90, align 8, !tbaa !11 - %92 = mul i64 %91, 6364136223846793005 - %93 = add i64 %92, 1442695040888963407 - store i64 %93, ptr %90, align 8, !tbaa !11 - br label %98 - -94: ; preds = %82 - %95 = ptrtoint ptr %6 to i64 - %96 = mul i64 %95, 6364136223846793005 - %97 = add i64 %96, 1442695040888963407 - br label %98 - -98: ; preds = %94, %89 - %.sink.i26 = phi i64 [ %97, %94 ], [ %93, %89 ] - %99 = sub nuw nsw i64 115, %86 - %100 = lshr i64 %.sink.i26, %99 - %101 = shl nuw nsw i64 %100, %87 - %102 = getelementptr inbounds nuw i8, ptr %56, i64 8 - %103 = load ptr, ptr %102, align 8, !tbaa !143 - %104 = ptrtoint ptr %103 to i64 - %105 = add i64 %101, %104 - %106 = inttoptr i64 %105 to ptr - store ptr %106, ptr %102, align 8, !tbaa !143 + %87 = icmp eq ptr %0, null + br i1 %87, label %93, label %88 + +88: ; preds = %82 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %90 = load i64, ptr %89, align 8, !tbaa !11 + %91 = mul i64 %90, 6364136223846793005 + %92 = add i64 %91, 1442695040888963407 + store i64 %92, ptr %89, align 8, !tbaa !11 + br label %97 + +93: ; preds = %82 + %94 = ptrtoint ptr %6 to i64 + %95 = mul i64 %94, 6364136223846793005 + %96 = add i64 %95, 1442695040888963407 + br label %97 + +97: ; preds = %93, %88 + %.sink.i26 = phi i64 [ %96, %94 ], [ %92, %89 ] + %98 = sub nuw nsw i64 115, %86 + %99 = lshr i64 %.sink.i26, %98 + %100 = shl nuw nsw i64 %99, %87 + %101 = getelementptr inbounds nuw i8, ptr %56, i64 8 + %102 = load ptr, ptr %101, align 8, !tbaa !143 + %103 = ptrtoint ptr %102 to i64 + %104 = add i64 %100, %103 + %105 = inttoptr i64 %104 to ptr + store ptr %105, ptr %101, align 8, !tbaa !143 call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %arena_cache_oblivious_randomize.exit -arena_cache_oblivious_randomize.exit: ; preds = %san_large_extent_decide_guard.exit, %98, %75 +arena_cache_oblivious_randomize.exit: ; preds = %san_large_extent_decide_guard.exit, %97, %75 call void @llvm.lifetime.end.p0(ptr nonnull %7) ret ptr %56 } diff --git a/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll b/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll index 108cca75f31..cc5ac6a9832 100644 --- a/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll +++ b/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll @@ -4150,9 +4150,9 @@ define internal fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17 %.val19 = load i64, ptr %5, align 8, !noundef !5 %6 = add i64 %.val19, 1 %.not.not4.i = icmp eq i64 %6, 0 - br i1 %.not.not4.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22, label %.lr.ph.i + br i1 %.not.not4.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23, label %.lr.ph.i -_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22: ; preds = %3 +_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23: ; preds = %3 %7 = icmp ne ptr %.val18, null tail call void @llvm.assume(i1 %7) %8 = getelementptr inbounds nuw i8, ptr %.val18, i64 16 @@ -4210,7 +4210,7 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %26 = mul nuw i64 %25, 7 br label %._crit_edge -._crit_edge: ; preds = %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22, %._crit_edge.loopexit +._crit_edge: ; preds = %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread23, %._crit_edge.loopexit %.pre-phi = phi i64 [ %26, %._crit_edge.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22 ] %27 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ -1, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread22 ] %28 = icmp ult i64 %27, 8 diff --git a/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll b/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll index efaf468c52a..45e72528400 100644 --- a/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll +++ b/bench/regex-rs/optimized/4ilpqr23cw58vyva.ll @@ -178,59 +178,59 @@ define hidden void @"_ZN4core3ptr103drop_in_place$LT$alloc..vec..Vec$LT$alloc..b %10 = icmp ne ptr %.val7.i.i, null tail call void @llvm.assume(i1 %10) tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !113 - br label %12 + br label %11 "_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE.exit.i.i": ; preds = %.lr.ph.i.i tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !113 - %11 = icmp eq i64 %8, %5 - br i1 %11, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", label %.lr.ph.i.i + %10 = icmp eq i64 %8, %5 + br i1 %10, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", label %.lr.ph.i.i -12: ; preds = %14, %.body.i.i - %.1.i.i = phi i64 [ %8, %.body.i.i ], [ %16, %14 ] - %13 = icmp eq i64 %.1.i.i, %5 - br i1 %13, label %.body, label %14 +11: ; preds = %13, %.body.i.i + %.1.i.i = phi i64 [ %8, %.body.i.i ], [ %15, %14 ] + %12 = icmp eq i64 %.1.i.i, %5 + br i1 %12, label %.body, label %13 -14: ; preds = %12 - %15 = getelementptr inbounds ptr, ptr %3, i64 %.1.i.i - %16 = add i64 %.1.i.i, 1 - %.val.i.i = load ptr, ptr %15, align 8, !alias.scope !110, !noalias !107, !noundef !4 +13: ; preds = %11 + %14 = getelementptr inbounds ptr, ptr %3, i64 %.1.i.i + %15 = add i64 %.1.i.i, 1 + %.val.i.i = load ptr, ptr %14, align 8, !alias.scope !110, !noalias !107, !noundef !4 invoke fastcc void @"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE"(ptr %.val.i.i) #13 - to label %12 unwind label %17, !noalias !113 + to label %12 unwind label %16, !noalias !113 -17: ; preds = %14 - %18 = landingpad { ptr, i32 } +16: ; preds = %13 + %17 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #14, !noalias !113 unreachable -.body: ; preds = %12 +.body: ; preds = %11 tail call void @llvm.experimental.noalias.scope.decl(metadata !114) tail call void @llvm.experimental.noalias.scope.decl(metadata !117) %.val.i.i1 = load i64, ptr %0, align 8, !alias.scope !120, !noundef !4 - %19 = icmp eq i64 %.val.i.i1, 0 - br i1 %19, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit", label %20 + %18 = icmp eq i64 %.val.i.i1, 0 + br i1 %18, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit", label %19 -20: ; preds = %.body - %21 = shl nuw i64 %.val.i.i1, 3 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %21, i64 noundef 8) #12, !noalias !120 +19: ; preds = %.body + %20 = shl nuw i64 %.val.i.i1, 3 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %20, i64 noundef 8) #12, !noalias !120 br label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit" "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit": ; preds = %"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE.exit.i.i", %1 tail call void @llvm.experimental.noalias.scope.decl(metadata !121) tail call void @llvm.experimental.noalias.scope.decl(metadata !124) %.val.i.i2 = load i64, ptr %0, align 8, !alias.scope !127, !noundef !4 - %22 = icmp eq i64 %.val.i.i2, 0 - br i1 %22, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4", label %23 + %21 = icmp eq i64 %.val.i.i2, 0 + br i1 %21, label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4", label %22 -23: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit" - %24 = shl nuw i64 %.val.i.i2, 3 - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %24, i64 noundef 8) #12, !noalias !127 +22: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit" + %23 = shl nuw i64 %.val.i.i2, 3 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %23, i64 noundef 8) #12, !noalias !127 br label %"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4" -"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", %23 +"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit4": ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdbee15b05b555a99E.llvm.13084666244534616040.exit", %22 ret void -"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit": ; preds = %20, %.body +"_ZN4core3ptr110drop_in_place$LT$alloc..raw_vec..RawVec$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$$GT$17h9f26fdd16728d338E.llvm.13084666244534616040.exit": ; preds = %19, %.body resume { ptr, i32 } %9 } @@ -7818,30 +7818,30 @@ define hidden void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops %10 = icmp ne ptr %.val7.i, null tail call void @llvm.assume(i1 %10) tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !3160 - br label %12 + br label %11 "_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE.exit.i": ; preds = %.lr.ph.i tail call void @__rust_dealloc(ptr noundef nonnull %.val7.i, i64 noundef 1400, i64 noundef 8) #12, !noalias !3160 - %11 = icmp eq i64 %8, %5 - br i1 %11, label %"_ZN4core3ptr90drop_in_place$LT$$u5b$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$u5d$$GT$17h5f521015cafd55e9E.exit", label %.lr.ph.i + %10 = icmp eq i64 %8, %5 + br i1 %10, label %"_ZN4core3ptr90drop_in_place$LT$$u5b$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$u5d$$GT$17h5f521015cafd55e9E.exit", label %.lr.ph.i -12: ; preds = %14, %.body.i - %.1.i = phi i64 [ %8, %.body.i ], [ %16, %14 ] - %13 = icmp eq i64 %.1.i, %5 - br i1 %13, label %17, label %14 +11: ; preds = %13, %.body.i + %.1.i = phi i64 [ %8, %.body.i ], [ %15, %14 ] + %12 = icmp eq i64 %.1.i, %5 + br i1 %12, label %16, label %13 -14: ; preds = %12 - %15 = getelementptr inbounds ptr, ptr %3, i64 %.1.i - %16 = add i64 %.1.i, 1 - %.val.i = load ptr, ptr %15, align 8, !alias.scope !3160, !noundef !4 +13: ; preds = %11 + %14 = getelementptr inbounds ptr, ptr %3, i64 %.1.i + %15 = add i64 %.1.i, 1 + %.val.i = load ptr, ptr %14, align 8, !alias.scope !3160, !noundef !4 invoke fastcc void @"_ZN4core3ptr80drop_in_place$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$GT$17hae213ac566abb52fE"(ptr %.val.i) #13 - to label %12 unwind label %18, !noalias !3160 + to label %12 unwind label %17, !noalias !3160 -17: ; preds = %12 +16: ; preds = %11 resume { ptr, i32 } %9 -18: ; preds = %14 - %19 = landingpad { ptr, i32 } +17: ; preds = %13 + %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #14, !noalias !3160 unreachable diff --git a/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll b/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll index d7d1df4a1d1..d5e5b9a5f77 100644 --- a/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll +++ b/bench/ruff-rs/optimized/42urr4wi9o4ym10wn20vge60c.ll @@ -6383,7 +6383,7 @@ define hidden noundef zeroext i1 @_ZN18tracing_subscriber6filter3env9EnvFilter7e %13 = load i64, ptr %1, align 8, !range !457 %14 = icmp samesign ult i64 %13, %12 %or.cond = select i1 %.not25, i1 true, i1 %14 - br i1 %or.cond, label %.critedge30, label %72 + br i1 %or.cond, label %.critedge30, label %74 15: ; preds = %4 %16 = getelementptr inbounds nuw i8, ptr %0, i64 464 @@ -6504,11 +6504,11 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit: ; preds = %3 %69 = icmp eq i64 %67, 0 br i1 %69, label %._crit_edge, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %60 +.lr.ph.preheader:; preds = %60 %.sroa.019.143 = getelementptr inbounds nuw i8, ptr %65, i64 8 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %.critedge32 +.lr.ph:; preds = %.lr.ph.preheader, %76 %.sroa.019.145 = phi ptr [ %.sroa.019.1, %.critedge32 ], [ %.sroa.019.143, %.lr.ph.preheader ] %.sroa.019.044 = phi ptr [ %.sroa.019.145, %.critedge32 ], [ %65, %.lr.ph.preheader ] %70 = load i64, ptr %.sroa.019.044, align 8, !range !456, !noundef !4 @@ -6522,15 +6522,15 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit: ; preds = %3 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.critedge -72: ; preds = %.critedge - %73 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) +74: ; preds = %.critedge + %75 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) br label %.critedge30 -.critedge30: ; preds = %58, %.critedge, %75, %72 - %.sroa.0.0 = phi i1 [ true, %58 ], [ true, %75 ], [ %73, %72 ], [ false, %.critedge ] +.critedge30: ; preds = %58, %.critedge, %75, %74 + %.sroa.0.0 = phi i1 [ true, %58 ], [ true, %75 ], [ %75, %72 ], [ false, %.critedge ] ret i1 %.sroa.0.0 -.critedge32: ; preds = %.lr.ph +76: ; preds = %.lr.ph %74 = icmp eq ptr %.sroa.019.145, %68 %.sroa.019.1.idx = select i1 %74, i64 0, i64 8 %.sroa.019.1 = getelementptr inbounds nuw i8, ptr %.sroa.019.145, i64 %.sroa.019.1.idx diff --git a/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll b/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll index 59a5004d9aa..0fbb27fe876 100644 --- a/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll +++ b/bench/ruff-rs/optimized/7wwgo2qmgv5jda16jk82i54eo.ll @@ -1336,11 +1336,11 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit.i.i: ; preds %98 = icmp eq i64 %96, 0 br i1 %98, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i -.lr.ph.preheader.i.i: ; preds = %89 +.lr.ph.preheader.i.i:; preds = %89 %.sroa.019.112.i.i = getelementptr inbounds nuw i8, ptr %94, i64 8 br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %.critedge32.i.i, %.lr.ph.preheader.i.i +.lr.ph.i.i: ; preds = %103, %.lr.ph.preheader.i.i %.sroa.019.114.i.i = phi ptr [ %.sroa.019.1.i.i, %.critedge32.i.i ], [ %.sroa.019.112.i.i, %.lr.ph.preheader.i.i ] %.sroa.019.013.i.i = phi ptr [ %.sroa.019.114.i.i, %.critedge32.i.i ], [ %94, %.lr.ph.preheader.i.i ] %99 = load i64, ptr %.sroa.019.013.i.i, align 8, !range !91, !noalias !90, !noundef !4 @@ -1354,7 +1354,7 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit.i.i: ; preds call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !90 br label %.critedge.i.i -.critedge32.i.i: ; preds = %.lr.ph.i.i +103: ; preds = %.lr.ph.i.i %101 = icmp eq ptr %.sroa.019.114.i.i, %97 %.sroa.019.1.idx.i.i = select i1 %101, i64 0, i64 8 %.sroa.019.1.i.i = getelementptr inbounds nuw i8, ptr %.sroa.019.114.i.i, i64 %.sroa.019.1.idx.i.i @@ -1366,19 +1366,19 @@ _ZN3std3sys4sync6rwlock5futex6RwLock4read17h71ab566576a387feE.exit.i.i: ; preds br label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread" "_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit": ; preds = %.critedge.i.i - %103 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) - br i1 %103, label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" + %104 = call noundef zeroext i1 @"_ZN18tracing_subscriber6filter9directive74DirectiveSet$LT$tracing_subscriber..filter..directive..StaticDirective$GT$7enabled17hd44d965863307517E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(464) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) + br i1 %104, label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", label %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" "_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3": ; preds = %.critedge.i.i, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit" call void @_ZN18tracing_subscriber6filter13layer_filters11FilterState13clear_enabled17h3e5cc05076ff84bcE() - br label %105 + br label %106 "_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread": ; preds = %102, %87, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit" - %104 = call noundef zeroext i1 @"_ZN104_$LT$tracing_subscriber..registry..sharded..Registry$u20$as$u20$tracing_core..subscriber..Subscriber$GT$7enabled17h6a00e11fb75bb5c3E"(ptr noundef nonnull align 8 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) - br label %105 + %105 = call noundef zeroext i1 @"_ZN104_$LT$tracing_subscriber..registry..sharded..Registry$u20$as$u20$tracing_core..subscriber..Subscriber$GT$7enabled17h6a00e11fb75bb5c3E"(ptr noundef nonnull align 8 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(120) %1) + br label %106 -105: ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" - %.sroa.0.0 = phi i1 [ %104, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread" ], [ false, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" ] +106: ; preds = %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread", %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" + %.sroa.0.0 = phi i1 [ %105, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread" ], [ false, %"_ZN104_$LT$tracing_subscriber..filter..env..EnvFilter$u20$as$u20$tracing_subscriber..layer..Layer$LT$S$GT$$GT$7enabled17h3274ffe787624e1aE.exit.thread3" ] ret i1 %.sroa.0.0 } diff --git a/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll b/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll index 2c07dc31b19..94d024efff6 100644 --- a/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll +++ b/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll @@ -7696,7 +7696,7 @@ define internal fastcc void @"_ZN4core3ptr78drop_in_place$LT$alloc..boxed..Box$L 13: ; preds = %17, %15 %.1.i = phi i64 [ %3, %15 ], [ %19, %17 ] %14 = icmp eq i64 %.1.i, %.8.val - br i1 %14, label %24, label %17 + br i1 %14, label %23, label %17 15: ; preds = %.noexc.i, %11 %16 = landingpad { ptr, i32 } @@ -7725,8 +7725,8 @@ define internal fastcc void @"_ZN4core3ptr78drop_in_place$LT$alloc..boxed..Box$L "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf1f460e18fc64242E.exit5": ; preds = %0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.15956212377945586164.exit.i4" ret void -24: ; preds = %13 - %25 = mul nsw i64 %.8.val, 24 +23: ; preds = %13 + %24 = mul nsw i64 %.8.val, 24 %26 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %26) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %25, i64 noundef 8) #50 @@ -54010,8 +54010,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %27, "_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h34856fc93529786eE.exit.i": ; preds = %38, %31, %14 %41 = phi i64 [ %16, %14 ], [ %35, %38 ], [ %2, %31 ] - %.not.i7.i.not = icmp eq i64 %2, %15 - br i1 %.not.i7.i.not, label %42, label %select.unfold + %.not.i6.i.not = icmp eq i64 %2, %15 + br i1 %.not.i6.i.not, label %42, label %select.unfold 42: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h245b0fff45acc95eE.exit", %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h34856fc93529786eE.exit.i" ret i1 false diff --git a/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll b/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll index 989d5781e15..c9558ce5286 100644 --- a/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll +++ b/bench/rustfmt-rs/optimized/4gk399kploc9gcsb.ll @@ -8335,10 +8335,10 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hf23e6a0ec42f607 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 +14: ; preds = %4 br i1 %3, label %20, label %15 -12: ; preds = %15, %20, %6 +12:; preds = %15, %19, %6 %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 @@ -8352,11 +8352,11 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hf23e6a0ec42f607 %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #46 br label %12 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #46 +19: ; preds = %11 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #46 br label %12 } diff --git a/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll b/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll index 2993eb1d43c..f9cfcf6a615 100644 --- a/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll +++ b/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll @@ -1034,7 +1034,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %0, i64 24, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !126 invoke void @"_ZN5alloc11collections5btree8navigate227_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$7next_kv17h54294366e019656aE"(ptr noalias noundef nonnull sret({ ptr, [2 x i64] }) align 8 captures(none) dereferenceable(24) %6, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %7) - to label %.noexc unwind label %30 + to label %.noexc unwind label %29 .noexc: ; preds = %1 %9 = load ptr, ptr %6, align 8, !noalias !126, !noundef !4 @@ -1044,7 +1044,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 11: ; preds = %.noexc call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !126 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.25b62880313225d728764a1cafc68778.0.llvm.15983814413174583861, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.25b62880313225d728764a1cafc68778.4.llvm.15983814413174583861) #20 - to label %.noexc1 unwind label %30 + to label %.noexc1 unwind label %29 .noexc1: ; preds = %11 unreachable @@ -1065,7 +1065,7 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 tail call void @llvm.experimental.noalias.scope.decl(metadata !130) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !133 invoke void @"_ZN5alloc11collections5btree4node145Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$Type$GT$5force17h2d11f8f1b3d17b4eE.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ i64, [3 x i64] }) align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %4) - to label %.noexc2 unwind label %30 + to label %.noexc2 unwind label %29 .noexc2: ; preds = %12 %13 = load i64, ptr %3, align 8, !range !8, !noalias !133, !noundef !4 @@ -1079,13 +1079,13 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 %20 = add i64 %19, 1 br i1 %trunc.i.i, label %24, label %21 -21: ; preds = %.noexc2 +20: ; preds = %.noexc2 store ptr %15, ptr %5, align 8, !alias.scope !130, !noalias !135 %22 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %17, ptr %22, align 8, !alias.scope !130, !noalias !135 %23 = getelementptr inbounds nuw i8, ptr %5, i64 16 store i64 %20, ptr %23, align 8, !alias.scope !130, !noalias !135 - br label %32 + br label %31 24: ; preds = %.noexc2 %25 = getelementptr inbounds nuw i8, ptr %15, i64 632 @@ -1101,32 +1101,32 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h46c9d6119 %31 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h05a720c8417fac17E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit" unwind label %39 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit" unwind label %38 -32: ; preds = %21, %24 +31: ; preds = %20, %24 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !133 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !126 - %33 = getelementptr inbounds nuw i8, ptr %9, i64 360 - %34 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 - tail call void @llvm.assume(i1 %34) - %35 = getelementptr inbounds nuw { [3 x i64] }, ptr %33, i64 %.sroa.4.sroa.4.0.copyload.i - %36 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i + %32 = getelementptr inbounds nuw i8, ptr %9, i64 360 + %33 = icmp ult i64 %.sroa.4.sroa.4.0.copyload.i, 11 + tail call void @llvm.assume(i1 %33) + %34 = getelementptr inbounds nuw { [3 x i64] }, ptr %32, i64 %.sroa.4.sroa.4.0.copyload.i + %35 = getelementptr inbounds nuw { [4 x i64] }, ptr %9, i64 %.sroa.4.sroa.4.0.copyload.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !126 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %37 = insertvalue { ptr, ptr } poison, ptr %35, 0 - %38 = insertvalue { ptr, ptr } %37, ptr %36, 1 - ret { ptr, ptr } %38 + %36 = insertvalue { ptr, ptr } poison, ptr %34, 0 + %37 = insertvalue { ptr, ptr } %36, ptr %35, 1 + ret { ptr, ptr } %37 -39: ; preds = %30 - %40 = landingpad { ptr, i32 } +38: ; preds = %29 + %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #21 unreachable -"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit": ; preds = %30 - resume { ptr, i32 } %31 +"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h1eb10b30b02d1442E.exit": ; preds = %29 + resume { ptr, i32 } %30 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -1241,7 +1241,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %18 = add i64 %17, 1 br i1 %trunc.i, label %22, label %19 -19: ; preds = %10 +18: ; preds = %10 store ptr %13, ptr %5, align 8, !alias.scope !140, !noalias !145 %20 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 %15, ptr %20, align 8, !alias.scope !140, !noalias !145 @@ -1259,16 +1259,16 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc call void @"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h29e9b4d53caa48e3E.llvm.16754810813067917266"(ptr noalias noundef nonnull sret({ { ptr, i64 }, i64, {} }) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull %26, i64 noundef %27), !noalias !145 br label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit" -"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit": ; preds = %19, %22 +"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h84776e35f94a5fcfE.exit": ; preds = %18, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !143 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %28 = getelementptr inbounds nuw i8, ptr %7, i64 360 - %29 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 - tail call void @llvm.assume(i1 %29) - %30 = getelementptr inbounds nuw { [3 x i64] }, ptr %28, i64 %.sroa.4.sroa.4.0.copyload - %31 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload + %27 = getelementptr inbounds nuw i8, ptr %7, i64 360 + %28 = icmp ult i64 %.sroa.4.sroa.4.0.copyload, 11 + tail call void @llvm.assume(i1 %28) + %29 = getelementptr inbounds nuw { [3 x i64] }, ptr %27, i64 %.sroa.4.sroa.4.0.copyload + %30 = getelementptr inbounds nuw { [4 x i64] }, ptr %7, i64 %.sroa.4.sroa.4.0.copyload call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %32 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 24 store ptr %30, ptr %32, align 8 %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr %31, ptr %33, align 8 diff --git a/bench/spike/optimized/socketif.ll b/bench/spike/optimized/socketif.ll index 0bbb19e7cde..c194bfbb9dc 100644 --- a/bench/spike/optimized/socketif.ll +++ b/bench/spike/optimized/socketif.ll @@ -21987,25 +21987,25 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i - %97 = icmp ult i64 %91, 16 - call void @llvm.assume(i1 %97) + %.not.i.i = icmp ult i64 %91, 16 + call void @llvm.assume(i1 %.not.i.i) %.not.i.i = icmp eq i64 %91, 15 br i1 %.not.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, label %115 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i - %98 = load i64, ptr %24, align 8 - %.not.i.i135 = icmp ugt i64 %94, %98 + %97 = load i64, ptr %24, align 8 + %.not.i.i135 = icmp ugt i64 %94, %97 br i1 %.not.i.i135, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %115 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i +98: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i %99 = load i64, ptr %24, align 8 br label %101 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.thread %100 = icmp slt i64 %91, -1 - br i1 %100, label %.invoke, label %101 + br i1 %100, label %.invoke, label %103 -101: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +103: ; preds = %98, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i %102 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %98, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %103 = phi i64 [ %99, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %98, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %104 = shl nuw i64 %102, 1 @@ -22016,14 +22016,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred %107 = icmp slt i64 %106, 0 br i1 %107, label %108, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i, !prof !14 -108: ; preds = %101 +108: ; preds = %103 invoke void @_ZSt17__throw_bad_allocv() #34 to label %.noexc118 unwind label %.loopexit.split-lp140 .noexc118: ; preds = %108 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %101 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %103 %109 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %106) #35 to label %.noexc119 unwind label %.loopexit139 @@ -22204,25 +22204,25 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %161, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i75 - %162 = icmp ult i64 %156, 16 - call void @llvm.assume(i1 %162) + %.not.i.i77 = icmp ult i64 %156, 16 + call void @llvm.assume(i1 %.not.i.i77) %.not.i.i77 = icmp eq i64 %156, 15 br i1 %.not.i.i77, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread, label %180 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i75 - %163 = load i64, ptr %27, align 8 - %.not.i.i77137 = icmp ugt i64 %159, %163 + %162 = load i64, ptr %27, align 8 + %.not.i.i77137 = icmp ugt i64 %159, %162 br i1 %.not.i.i77137, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120, label %180 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76 +163: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76 %164 = load i64, ptr %27, align 8 - br label %166 + br label %168 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i76.thread %165 = icmp slt i64 %156, -1 br i1 %165, label %.invoke242, label %166 -166: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 +168: ; preds = %163, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 %167 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread ], [ %163, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 ] %168 = phi i64 [ %164, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120.thread ], [ %163, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120 ] %169 = shl nuw i64 %167, 1 @@ -22233,14 +22233,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i120: ; p %172 = icmp slt i64 %171, 0 br i1 %172, label %173, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i122, !prof !14 -173: ; preds = %166 +173: ; preds = %168 invoke void @_ZSt17__throw_bad_allocv() #34 to label %.noexc131 unwind label %.loopexit.split-lp .noexc131: ; preds = %173 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i122: ; preds = %166 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i122: ; preds = %168 %174 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %171) #35 to label %.noexc132 unwind label %.loopexit diff --git a/bench/syn/optimized/4dl8yvgrwkkcv6u.ll b/bench/syn/optimized/4dl8yvgrwkkcv6u.ll index c16f5106e2e..38344f07374 100644 --- a/bench/syn/optimized/4dl8yvgrwkkcv6u.ll +++ b/bench/syn/optimized/4dl8yvgrwkkcv6u.ll @@ -1452,7 +1452,7 @@ define hidden noundef nonnull ptr @"_ZN5alloc2rc11Rc$LT$T$GT$19allocate_for_layo %6 = extractvalue { i64, i64 } %5, 0 %7 = extractvalue { i64, i64 } %5, 1 %8 = icmp eq i64 %7, 0 - br i1 %8, label %9, label %14 + br i1 %8, label %9, label %13 9: ; preds = %3 %10 = add i64 %6, -1 @@ -1463,26 +1463,26 @@ define hidden noundef nonnull ptr @"_ZN5alloc2rc11Rc$LT$T$GT$19allocate_for_layo tail call void @llvm.assume(i1 %13) br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" -14: ; preds = %3 - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %16 = add i64 %6, -1 - %17 = icmp sgt i64 %16, -1 - tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %7, i64 noundef %6) #32 +13: ; preds = %3 + %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %15 = add i64 %6, -1 + %16 = icmp sgt i64 %15, -1 + tail call void @llvm.assume(i1 %16) + %17 = tail call noundef ptr @__rust_alloc(i64 noundef %7, i64 noundef %6) #32 br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" -"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i": ; preds = %14, %9 - %.sroa.05.0.i.i.i.i = phi ptr [ %12, %9 ], [ %18, %14 ] - %19 = icmp eq ptr %.sroa.05.0.i.i.i.i, null - br i1 %19, label %22, label %20 +"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i": ; preds = %13, %9 + %.sroa.05.0.i.i.i.i = phi ptr [ %12, %9 ], [ %17, %13 ] + %18 = icmp eq ptr %.sroa.05.0.i.i.i.i, null + br i1 %18, label %21, label %19 -20: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" +19: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" store i64 1, ptr %.sroa.05.0.i.i.i.i, align 8 - %21 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i.i, i64 8 - store i64 1, ptr %21, align 8 + %20 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i.i, i64 8 + store i64 1, ptr %20, align 8 ret ptr %.sroa.05.0.i.i.i.i -22: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" +21: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit.i" %.fca.1.extract = extractvalue { i64, i64 } %4, 1 %.fca.0.extract = extractvalue { i64, i64 } %4, 0 tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %.fca.0.extract, i64 noundef %.fca.1.extract) #31 @@ -1495,7 +1495,7 @@ define hidden { i64, ptr } @"_ZN5alloc2rc11Rc$LT$T$GT$23try_allocate_for_layout1 %5 = extractvalue { i64, i64 } %4, 0 %6 = extractvalue { i64, i64 } %4, 1 %7 = icmp eq i64 %6, 0 - br i1 %7, label %8, label %13 + br i1 %7, label %8, label %12 8: ; preds = %3 %9 = add i64 %5, -1 @@ -1506,30 +1506,30 @@ define hidden { i64, ptr } @"_ZN5alloc2rc11Rc$LT$T$GT$23try_allocate_for_layout1 tail call void @llvm.assume(i1 %12) br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" -13: ; preds = %3 - %14 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %15 = add i64 %5, -1 - %16 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %16) - %17 = tail call noundef ptr @__rust_alloc(i64 noundef %6, i64 noundef %5) #32 +12: ; preds = %3 + %13 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %14 = add i64 %5, -1 + %15 = icmp sgt i64 %14, -1 + tail call void @llvm.assume(i1 %15) + %16 = tail call noundef ptr @__rust_alloc(i64 noundef %6, i64 noundef %5) #32 br label %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" -"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit": ; preds = %8, %13 - %.sroa.05.0.i.i.i = phi ptr [ %11, %8 ], [ %17, %13 ] - %18 = icmp eq ptr %.sroa.05.0.i.i.i, null - br i1 %18, label %21, label %19 +"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit": ; preds = %8, %12 + %.sroa.05.0.i.i.i = phi ptr [ %11, %8 ], [ %16, %12 ] + %17 = icmp eq ptr %.sroa.05.0.i.i.i, null + br i1 %17, label %20, label %18 -19: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" +18: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" store i64 1, ptr %.sroa.05.0.i.i.i, align 8 - %20 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i, i64 8 - store i64 1, ptr %20, align 8 - br label %21 + %19 = getelementptr inbounds nuw i8, ptr %.sroa.05.0.i.i.i, i64 8 + store i64 1, ptr %19, align 8 + br label %20 -21: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit", %19 - %.sroa.0.0 = phi i64 [ 0, %19 ], [ 1, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" ] - %22 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %23 = insertvalue { i64, ptr } %22, ptr %.sroa.05.0.i.i.i, 1 - ret { i64, ptr } %23 +20: ; preds = %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit", %18 + %.sroa.0.0 = phi i64 [ 0, %18 ], [ 1, %"_ZN5alloc2rc15Rc$LT$T$C$A$GT$13new_uninit_in28_$u7b$$u7b$closure$u7d$$u7d$17h7d15a7eab3376f00E.exit" ] + %21 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %22 = insertvalue { i64, ptr } %21, ptr %.sroa.05.0.i.i.i, 1 + ret { i64, ptr } %22 } ; Function Attrs: nonlazybind uwtable @@ -1712,7 +1712,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.11864023271123110445 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.11864023271123110445(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #11 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -1723,29 +1723,29 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e50 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 +10: ; preds = %4 + br i1 %3, label %19, label %14 -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %19 ], [ %18, %14 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 - br label %12 +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #32 + br label %11 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #32 - br label %12 +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #32 + br label %11 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/syn/optimized/4llvvcm7ykus6q9g.ll b/bench/syn/optimized/4llvvcm7ykus6q9g.ll index b07ae85bd6a..639cfc5cfbf 100644 --- a/bench/syn/optimized/4llvvcm7ykus6q9g.ll +++ b/bench/syn/optimized/4llvvcm7ykus6q9g.ll @@ -17940,15 +17940,15 @@ define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..o %15 = icmp ult i64 %8, -9223372036854775807 tail call void @llvm.assume(i1 %15) %16 = icmp eq i64 %14, 0 - br i1 %16, label %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" + br i1 %16, label %17, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit": ; preds = %1 %17 = icmp sgt i64 %9, -1 tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17 - br label %18 + br label %17 -18: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" +17: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" ret void } @@ -17991,15 +17991,15 @@ define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..o %15 = icmp ult i64 %8, -9223372036854775807 tail call void @llvm.assume(i1 %15) %16 = icmp eq i64 %14, 0 - br i1 %16, label %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" + br i1 %16, label %17, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit": ; preds = %1 %17 = icmp sgt i64 %9, -1 tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17 - br label %18 + br label %17 -18: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" +17: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" ret void } @@ -18021,15 +18021,15 @@ define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..o %15 = icmp ult i64 %8, -9223372036854775807 tail call void @llvm.assume(i1 %15) %16 = icmp eq i64 %14, 0 - br i1 %16, label %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" + br i1 %16, label %17, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit": ; preds = %1 %17 = icmp sgt i64 %9, -1 tail call void @llvm.assume(i1 %17) tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef %14, i64 noundef %8) #17 - br label %18 + br label %17 -18: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" +17: ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" ret void } diff --git a/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll b/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll index 2b2089a1c3f..c3489bd13b5 100644 --- a/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll +++ b/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll @@ -169,14 +169,14 @@ define void @_ZN10tikv_alloc5trace2Id4name17h811b6edf24c96a6dE(ptr dead_on_unwin 14: ; preds = %17, %10 %15 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #15 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #14 to label %20 unwind label %18, !noalias !18 16: ; preds = %10 br i1 %13, label %17, label %"_ZN49_$LT$T$u20$as$u20$alloc..string..SpecToString$GT$14spec_to_string17hccd905806fd6cbf4E.exit", !prof !19 17: ; preds = %16 - invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #16 + invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #15 to label %.noexc.i unwind label %14, !noalias !18 .noexc.i: ; preds = %17 @@ -267,14 +267,14 @@ define void @_ZN10tikv_alloc5trace2Id13readable_name17hf03bbfd8bde0a0b5E(ptr dea 17: ; preds = %20, %12 %18 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #15 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h247983dd41a6c043E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #14 to label %23 unwind label %21, !noalias !35 19: ; preds = %12 br i1 %16, label %20, label %"_ZN49_$LT$T$u20$as$u20$alloc..string..SpecToString$GT$14spec_to_string17hccd905806fd6cbf4E.exit", !prof !19 20: ; preds = %19 - invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #16 + invoke void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1 @anon.6061f5929ed42ce63391d20b5e0ca064.1, i64 noundef 55, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.6061f5929ed42ce63391d20b5e0ca064.20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.3) #15 to label %.noexc.i unwind label %17, !noalias !35 .noexc.i: ; preds = %20 @@ -434,14 +434,14 @@ default.unreachable24: ; preds = %7, %6, %5, %4 5: ; preds = %4 switch i64 %2, label %default.unreachable24 [ i64 0, label %8 - i64 1, label %15 + i64 1, label %13 i64 2, label %10 ] 6: ; preds = %4 switch i64 %2, label %default.unreachable24 [ - i64 0, label %15 - i64 1, label %17 + i64 0, label %13 + i64 1, label %15 i64 2, label %10 ] @@ -454,41 +454,41 @@ default.unreachable24: ; preds = %7, %6, %5, %4 8: ; preds = %5 %9 = add i64 %3, %1 - br label %12 + br label %10 10: ; preds = %7, %6, %5 %11 = icmp eq i64 %2, 2 tail call void @llvm.assume(i1 %11) br label %12 -12: ; preds = %19, %21, %25, %23, %17, %10, %8 +10: ; preds = %19, %21, %25, %23, %17, %10, %8 %.sroa.017.0 = phi i64 [ 0, %8 ], [ 0, %21 ], [ 1, %19 ], [ 2, %10 ], [ 1, %17 ], [ 2, %23 ], [ 2, %25 ] %.sroa.8.0 = phi i64 [ %9, %8 ], [ %22, %21 ], [ %20, %19 ], [ %3, %10 ], [ %18, %17 ], [ %24, %23 ], [ %26, %25 ] - %13 = insertvalue { i64, i64 } poison, i64 %.sroa.017.0, 0 - %14 = insertvalue { i64, i64 } %13, i64 %.sroa.8.0, 1 - ret { i64, i64 } %14 + %11 = insertvalue { i64, i64 } poison, i64 %.sroa.017.0, 0 + %12 = insertvalue { i64, i64 } %11, i64 %.sroa.8.0, 1 + ret { i64, i64 } %12 -15: ; preds = %6, %5 +13: ; preds = %6, %5 %.sroa.018.0 = phi i64 [ %3, %5 ], [ %1, %6 ] %.sroa.021.0 = phi i64 [ %1, %5 ], [ %3, %6 ] - %16 = icmp ugt i64 %.sroa.021.0, %.sroa.018.0 - br i1 %16, label %21, label %19 + %14 = icmp ugt i64 %.sroa.021.0, %.sroa.018.0 + br i1 %14, label %21, label %17 -17: ; preds = %6 - %18 = add i64 %3, %1 - br label %12 +15: ; preds = %6 + %16 = add i64 %3, %1 + br label %10 -19: ; preds = %15 - %20 = sub nuw i64 %.sroa.018.0, %.sroa.021.0 - br label %12 +17: ; preds = %13 + %18 = sub nuw i64 %.sroa.018.0, %.sroa.021.0 + br label %10 21: ; preds = %15 %22 = sub nuw i64 %.sroa.021.0, %.sroa.018.0 - br label %12 + br label %10 23: ; preds = %7 %24 = add i64 %3, %1 - br label %12 + br label %10 25: ; preds = %7 %26 = sub i64 %1, %3 @@ -613,7 +613,7 @@ define noundef nonnull ptr @_ZN10tikv_alloc5trace11MemoryTrace9sub_trace17h27ae4 br i1 %38, label %41, label %39 select.unfold: ; preds = %._crit_edge.i.i, %2 - tail call void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.41) #16 + tail call void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6061f5929ed42ce63391d20b5e0ca064.41) #15 unreachable 39: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$9get_inner17hb4e6d01e5a603591E.exit" @@ -698,7 +698,7 @@ define void @_ZN10tikv_alloc5trace11MemoryTrace16get_children_ids17h07bcd8b61099 9: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..Id$GT$$GT$17hf67c11083eb3398aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #15 + invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..Id$GT$$GT$17hf67c11083eb3398aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #14 to label %27 unwind label %25 10: ; preds = %2 @@ -746,7 +746,7 @@ define void @_ZN10tikv_alloc5trace11MemoryTrace16get_children_ids17h07bcd8b61099 25: ; preds = %9 %26 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #17 + call void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() #16 unreachable 27: ; preds = %9 @@ -754,10 +754,10 @@ define void @_ZN10tikv_alloc5trace11MemoryTrace16get_children_ids17h07bcd8b61099 } ; Function Attrs: nounwind nonlazybind uwtable -declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #5 +declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #4 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #6 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #5 ; Function Attrs: nonlazybind uwtable declare hidden noundef i64 @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1580d2927ba06e04E"(ptr noalias noundef align 8 captures(none) dereferenceable(40), i64 noundef, ptr noalias noundef nonnull align 1) unnamed_addr #1 @@ -772,16 +772,16 @@ declare hidden noundef zeroext i1 @_ZN4core3fmt5Write9write_fmt17hf815782a42a166 declare noundef zeroext i1 @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u64$GT$3fmt17he7c8138d95e921b6E"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 ; Function Attrs: cold minsize noreturn nounwind nonlazybind optsize uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() unnamed_addr #7 +declare void @_ZN4core9panicking16panic_in_cleanup17h02d583d60c45268eE() unnamed_addr #6 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt5write17hd4082f3c5e2a1cc0E(ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(48), ptr noalias noundef align 8 captures(none) dereferenceable(48)) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #8 +declare void @llvm.assume(i1 noundef) #7 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 +declare void @_ZN4core6result13unwrap_failed17h6ad52aa6673b173dE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #8 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17h624a910a27ee01aeE(ptr noalias noundef align 8 dereferenceable(24), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #1 @@ -799,7 +799,7 @@ declare void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hdf980ebc9bec100 declare hidden void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$15try_allocate_in17h81fac9395268972aE"(ptr dead_on_unwind noalias noundef writable sret([24 x i8]) align 8 captures(none) dereferenceable(24), i64 noundef, i1 noundef zeroext, i64 noundef range(i64 1, -9223372036854775807), i64 noundef) unnamed_addr #1 ; Function Attrs: cold minsize noreturn nonlazybind optsize uwtable -declare void @_ZN5alloc7raw_vec12handle_error17h988b9e2e52726708E(i64 noundef range(i64 0, -9223372036854775807), i64, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 +declare void @_ZN5alloc7raw_vec12handle_error17h988b9e2e52726708E(i64 noundef range(i64 0, -9223372036854775807), i64, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 ; Function Attrs: nonlazybind uwtable declare void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h9136a8e8e1f0fdcbE"(ptr noalias noundef align 8 dereferenceable(8)) unnamed_addr #1 @@ -817,7 +817,7 @@ declare hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent declare hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h439cdb546578af0bE(ptr noalias noundef nonnull readonly align 1, ptr noalias noundef readonly align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.cttz.i16(i16, i1 immarg) #11 +declare i16 @llvm.cttz.i16(i16, i1 immarg) #10 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h95043d71ffe0904bE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 @@ -829,10 +829,10 @@ declare hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Displa declare hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$4iter17h3f90595cdd777a22E"(ptr dead_on_unwind noalias noundef writable sret([40 x i8]) align 8 captures(none) dereferenceable(40), ptr noalias noundef readonly align 8 dereferenceable(32)) unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 +declare void @_ZN4core6option13unwrap_failed17h6d92321daa037fa0E(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #8 ; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) -declare void @llvm.trap() #12 +declare void @llvm.trap() #11 ; Function Attrs: nonlazybind uwtable declare hidden noundef ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h31872302a6a794ebE"(ptr noalias noundef align 8 dereferenceable(32), ptr noalias noundef align 8 captures(none) dereferenceable(16), ptr noundef nonnull) unnamed_addr #1 @@ -844,18 +844,18 @@ declare hidden { ptr, ptr } @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as declare hidden void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$tikv_alloc..trace..Id$GT$$GT$17hf67c11083eb3398aE"(ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(ptr captures(none)) #13 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #12 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(ptr captures(none)) #13 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #14 +declare void @llvm.experimental.noalias.scope.decl(metadata) #13 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #3 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -864,8 +864,8 @@ attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memo attributes #9 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { cold minsize noreturn nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { cold noreturn nounwind memory(inaccessiblemem: write) } -attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #15 = { cold } attributes #16 = { noreturn } diff --git a/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll b/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll index 147bdef0615..ba051b8bd75 100644 --- a/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll +++ b/bench/tls-rs/optimized/1pt3w3786vo2dyk0.ll @@ -1649,7 +1649,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.15934541666227088301 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.15934541666227088301(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #12 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -1660,29 +1660,29 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e50 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 +10: ; preds = %4 + br i1 %3, label %19, label %14 -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %15 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #39 - br label %12 +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #39 + br label %11 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #39 - br label %12 +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #39 + br label %11 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable diff --git a/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll b/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll index 30decc17267..1e51476df8b 100644 --- a/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll +++ b/bench/tls-rs/optimized/526n7g8rwc65lc9b.ll @@ -1905,15 +1905,15 @@ define internal fastcc void @"_ZN4core3ptr87drop_in_place$LT$alloc..boxed..Box$L tail call void @llvm.assume(i1 %1) %2 = load ptr, ptr %.8.val, align 8, !invariant.load !4, !nonnull !4 invoke void %2(ptr noundef nonnull align 1 %.0.val) - to label %13 unwind label %3 + to label %12 unwind label %3 3: ; preds = %0 %4 = landingpad { ptr, i32 } cleanup %5 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %5) - %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %7 = load i64, ptr %6, align 8, !range !20, !invariant.load !4 + %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %8 = load i64, ptr %7, align 8, !range !20, !invariant.load !4 %8 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 %9 = load i64, ptr %8, align 8, !range !21, !invariant.load !4 %10 = icmp ult i64 %9, -9223372036854775807 @@ -1925,24 +1925,24 @@ define internal fastcc void @"_ZN4core3ptr87drop_in_place$LT$alloc..boxed..Box$L tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %7, i64 noundef range(i64 1, -9223372036854775807) %9) #40 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit" -13: ; preds = %0 - %14 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %15 = load i64, ptr %14, align 8, !range !20, !invariant.load !4 - %16 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %17 = load i64, ptr %16, align 8, !range !21, !invariant.load !4 - %18 = icmp ult i64 %17, -9223372036854775807 - tail call void @llvm.assume(i1 %18) - %19 = icmp eq i64 %15, 0 - br i1 %19, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4", label %20 - -20: ; preds = %13 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %15, i64 noundef range(i64 1, -9223372036854775807) %17) #40 +12: ; preds = %0 + %13 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %14 = load i64, ptr %13, align 8, !range !20, !invariant.load !4 + %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %16 = load i64, ptr %15, align 8, !range !21, !invariant.load !4 + %17 = icmp ult i64 %16, -9223372036854775807 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %14, 0 + br i1 %18, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4", label %19 + +19: ; preds = %12 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %14, i64 noundef range(i64 1, -9223372036854775807) %16) #40 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4" -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4": ; preds = %13, %20 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit4": ; preds = %12, %19 ret void -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit": ; preds = %12, %3 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb134c06e2f64d8bbE.exit": ; preds = %11, %3 resume { ptr, i32 } %4 } @@ -2735,7 +2735,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.12014582817787848890 ; Function Attrs: inlinehint nounwind nonlazybind uwtable define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.12014582817787848890(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, i64 noundef %2, i1 noundef zeroext %3) unnamed_addr #13 { %5 = icmp eq i64 %2, 0 - br i1 %5, label %6, label %11 + br i1 %5, label %6, label %10 6: ; preds = %4 %7 = add i64 %1, -1 @@ -2746,29 +2746,29 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e50 tail call void @llvm.assume(i1 %10) br label %12 -11: ; preds = %4 - br i1 %3, label %20, label %15 +10: ; preds = %4 + br i1 %3, label %19, label %14 -12: ; preds = %15, %20, %6 - %.sroa.05.0 = phi ptr [ %9, %6 ], [ %23, %20 ], [ %19, %15 ] - %13 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 - %14 = insertvalue { ptr, i64 } %13, i64 %2, 1 - ret { ptr, i64 } %14 +11: ; preds = %14, %19, %6 + %.sroa.05.0 = phi ptr [ %9, %6 ], [ %22, %20 ], [ %18, %14 ] + %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.05.0, 0 + %13 = insertvalue { ptr, i64 } %12, i64 %2, 1 + ret { ptr, i64 } %13 -15: ; preds = %11 - %16 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %17 = add i64 %1, -1 - %18 = icmp sgt i64 %17, -1 - tail call void @llvm.assume(i1 %18) - %19 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #40 - br label %12 +14: ; preds = %10 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %16 = add i64 %1, -1 + %17 = icmp sgt i64 %16, -1 + tail call void @llvm.assume(i1 %17) + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #40 + br label %11 -20: ; preds = %11 - %21 = add i64 %1, -1 - %22 = icmp sgt i64 %21, -1 - tail call void @llvm.assume(i1 %22) - %23 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #40 - br label %12 +19: ; preds = %10 + %20 = add i64 %1, -1 + %21 = icmp sgt i64 %20, -1 + tail call void @llvm.assume(i1 %21) + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #40 + br label %11 } ; Function Attrs: alwaysinline nonlazybind uwtable diff --git a/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll b/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll index 5ba3a565c6e..e32dc32df8b 100644 --- a/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll +++ b/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll @@ -5615,7 +5615,7 @@ define internal fastcc void @"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$ %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 %6 = load i8, ptr %5, align 8, !range !1072, !noundef !9 %7 = trunc nuw i8 %6 to i1 - br i1 %7, label %23, label %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge + br i1 %7, label %22, label %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge ._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge: ; preds = %1 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 @@ -5623,7 +5623,7 @@ define internal fastcc void @"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$ br label %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit _ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i", %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" - %8 = phi i64 [ %.pre, %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge ], [ %38, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ], [ %55, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ] + %8 = phi i64 [ %.pre, %._ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit_crit_edge ], [ %37, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ], [ %54, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ] %9 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %9) %10 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 @@ -5631,7 +5631,7 @@ _ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit: ; preds = %"_ZN3std2io5impl %12 = icmp eq i64 %11, %8 br i1 %12, label %13, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit" -13: ; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit +13:; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit %14 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %8, i64 noundef 1), !noalias !1084 %15 = extractvalue { i64, i64 } %14, 0 %16 = extractvalue { i64, i64 } %14, 1 @@ -5640,74 +5640,74 @@ _ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit: ; preds = %"_ZN3std2io5impl br label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit" "_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit": ; preds = %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, %13 - %17 = phi i64 [ %8, %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit ], [ %.pre.i.i.i.i.i, %13 ] - %18 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %19 = load ptr, ptr %18, align 8, !alias.scope !1090, !noalias !1084, !nonnull !9, !noundef !9 - %20 = getelementptr inbounds i8, ptr %19, i64 %17 - store i8 93, ptr %20, align 1, !noalias !1091 - %21 = load i64, ptr %10, align 8, !alias.scope !1090, !noalias !1084, !noundef !9 - %22 = add i64 %21, 1 - store i64 %22, ptr %10, align 8, !alias.scope !1090, !noalias !1084 + %16 = phi i64 [ %8, %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit ], [ %.pre.i.i.i.i.i, %13 ] + %17 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %18 = load ptr, ptr %17, align 8, !alias.scope !1090, !noalias !1084, !nonnull !9, !noundef !9 + %19 = getelementptr inbounds i8, ptr %18, i64 %16 + store i8 93, ptr %19, align 1, !noalias !1091 + %20 = load i64, ptr %10, align 8, !alias.scope !1090, !noalias !1084, !noundef !9 + %21 = add i64 %20, 1 + store i64 %21, ptr %10, align 8, !alias.scope !1090, !noalias !1084 ret void -23: ; preds = %1 - %24 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %24) - %25 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 - %26 = load i64, ptr %25, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 - %27 = load i64, ptr %.0.val, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 - %28 = icmp eq i64 %27, %26 - br i1 %28, label %29, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" - -29: ; preds = %23 - %30 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %26, i64 noundef 1), !noalias !1103 - %31 = extractvalue { i64, i64 } %30, 0 - %32 = extractvalue { i64, i64 } %30, 1 - tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %31, i64 %32), !noalias !1103 - %.pre.i.i.i.i.i5 = load i64, ptr %25, align 8, !alias.scope !1109, !noalias !1103 +22: ; preds = %1 + %23 = icmp ne ptr %.0.val, null + tail call void @llvm.assume(i1 %23) + %24 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 + %25 = load i64, ptr %24, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 + %26 = load i64, ptr %.0.val, align 8, !alias.scope !1092, !noalias !1103, !noundef !9 + %27 = icmp eq i64 %26, %25 + br i1 %27, label %28, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" + +28: ; preds = %22 + %29 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %25, i64 noundef 1), !noalias !1103 + %30 = extractvalue { i64, i64 } %29, 0 + %31 = extractvalue { i64, i64 } %29, 1 + tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %30, i64 %31), !noalias !1103 + %.pre.i.i.i.i.i5 = load i64, ptr %24, align 8, !alias.scope !1109, !noalias !1103 br label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" -"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6": ; preds = %23, %29 - %33 = phi i64 [ %26, %23 ], [ %.pre.i.i.i.i.i5, %29 ] - %34 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %35 = load ptr, ptr %34, align 8, !alias.scope !1109, !noalias !1103, !nonnull !9, !noundef !9 - %36 = getelementptr inbounds i8, ptr %35, i64 %33 - store i8 10, ptr %36, align 1, !noalias !1110 - %37 = load i64, ptr %25, align 8, !alias.scope !1109, !noalias !1103, !noundef !9 - %38 = add i64 %37, 1 - store i64 %38, ptr %25, align 8, !alias.scope !1109, !noalias !1103 - %39 = load ptr, ptr %0, align 8, !nonnull !9, !align !43, !noundef !9 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %41 = load i64, ptr %40, align 8, !noundef !9 +"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6": ; preds = %22, %28 + %32 = phi i64 [ %25, %23 ], [ %.pre.i.i.i.i.i5, %29 ] + %33 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %34 = load ptr, ptr %33, align 8, !alias.scope !1109, !noalias !1103, !nonnull !9, !noundef !9 + %35 = getelementptr inbounds i8, ptr %34, i64 %32 + store i8 10, ptr %35, align 1, !noalias !1110 + %36 = load i64, ptr %24, align 8, !alias.scope !1109, !noalias !1103, !noundef !9 + %37 = add i64 %36, 1 + store i64 %37, ptr %24, align 8, !alias.scope !1109, !noalias !1103 + %38 = load ptr, ptr %0, align 8, !nonnull !9, !align !43, !noundef !9 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %40 = load i64, ptr %39, align 8, !noundef !9 %.not.i = icmp eq i64 %4, 0 br i1 %.not.i, label %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6", %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" - %42 = phi i64 [ %55, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ %38, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] - %.sroa.01.05.i = phi i64 [ %43, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ 0, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] - %43 = add nuw i64 %.sroa.01.05.i, 1 - %44 = load i64, ptr %.0.val, align 8, !alias.scope !1111, !noalias !1122, !noundef !9 - %45 = sub i64 %44, %42 - %46 = icmp ugt i64 %41, %45 - br i1 %46, label %47, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" - -47: ; preds = %.lr.ph.i - %48 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %42, i64 noundef %41), !noalias !1122 - %49 = extractvalue { i64, i64 } %48, 0 - %50 = extractvalue { i64, i64 } %48, 1 - tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %49, i64 %50), !noalias !1122 - %.pre.i.i.i.i.i.i = load i64, ptr %25, align 8, !alias.scope !1131, !noalias !1122 + %41 = phi i64 [ %54, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ %37, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] + %.sroa.01.05.i = phi i64 [ %42, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" ], [ 0, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit6" ] + %42 = add nuw i64 %.sroa.01.05.i, 1 + %43 = load i64, ptr %.0.val, align 8, !alias.scope !1111, !noalias !1122, !noundef !9 + %44 = sub i64 %43, %41 + %45 = icmp ugt i64 %40, %44 + br i1 %45, label %46, label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" + +46: ; preds = %.lr.ph.i + %47 = tail call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc691459aa6f899ddE.llvm.2256714685376175499"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %41, i64 noundef %40), !noalias !1122 + %48 = extractvalue { i64, i64 } %47, 0 + %49 = extractvalue { i64, i64 } %47, 1 + tail call void @_ZN5alloc7raw_vec14handle_reserve17h7755cec88f07bd9dE.llvm.2256714685376175499(i64 noundef %48, i64 %49), !noalias !1122 + %.pre.i.i.i.i.i.i = load i64, ptr %24, align 8, !alias.scope !1131, !noalias !1122 br label %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i" -"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i": ; preds = %47, %.lr.ph.i - %51 = phi i64 [ %42, %.lr.ph.i ], [ %.pre.i.i.i.i.i.i, %47 ] - %52 = load ptr, ptr %34, align 8, !alias.scope !1131, !noalias !1122, !nonnull !9, !noundef !9 - %53 = getelementptr inbounds i8, ptr %52, i64 %51 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %53, ptr nonnull readonly align 1 %39, i64 %41, i1 false), !noalias !1132 - %54 = load i64, ptr %25, align 8, !alias.scope !1131, !noalias !1122, !noundef !9 - %55 = add i64 %54, %41 - store i64 %55, ptr %25, align 8, !alias.scope !1131, !noalias !1122 - %exitcond.not.i = icmp eq i64 %43, %4 +"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hcbd42a639f756574E.llvm.13245325470516907508.exit.i": ; preds = %46, %.lr.ph.i + %50 = phi i64 [ %41, %.lr.ph.i ], [ %.pre.i.i.i.i.i.i, %47 ] + %51 = load ptr, ptr %33, align 8, !alias.scope !1131, !noalias !1122, !nonnull !9, !noundef !9 + %52 = getelementptr inbounds i8, ptr %51, i64 %50 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %52, ptr nonnull readonly align 1 %38, i64 %40, i1 false), !noalias !1132 + %53 = load i64, ptr %24, align 8, !alias.scope !1131, !noalias !1122, !noundef !9 + %54 = add i64 %53, %40 + store i64 %54, ptr %24, align 8, !alias.scope !1131, !noalias !1122 + %exitcond.not.i = icmp eq i64 %42, %4 br i1 %exitcond.not.i, label %_ZN10serde_json3ser6indent17hfdc4d053f7ca6686E.exit, label %.lr.ph.i } diff --git a/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll b/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll index d35c32a5aa2..4a040b7c053 100644 --- a/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll +++ b/bench/tokenizers-rs/optimized/3yaq830kuxi6xpg5.ll @@ -129,9 +129,9 @@ define hidden void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$ br i1 %7, label %"_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i": ; preds = %1 - %8 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 - %9 = shl nsw i64 %6, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %9, i64 noundef 8) #33, !noalias !5 + %7 = load ptr, ptr %3, align 8, !nonnull !4, !noundef !4 + %8 = shl nsw i64 %6, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %7, i64 noundef %8, i64 noundef 8) #33, !noalias !5 br label %"_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit" "_ZN15crossbeam_deque5deque15Buffer$LT$T$GT$7dealloc17h4bfbb38c0c6cd081E.exit": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i", %1 @@ -144,38 +144,38 @@ define hidden void @_ZN15crossbeam_epoch5guard5Guard15defer_unchecked17h0bbd4127 %3 = alloca { ptr, { [3 x i64] }, {} }, align 8 %4 = load ptr, ptr %0, align 8, !noundef !4 %5 = icmp eq ptr %4, null - br i1 %5, label %6, label %15 + br i1 %5, label %6, label %14 6: ; preds = %2 %7 = and i64 %1, -8 %8 = inttoptr i64 %7 to ptr %9 = icmp ne i64 %7, 0 - tail call void @llvm.assume(i1 %9) + tail call void @llvm.assume(i1 %8) %10 = getelementptr inbounds nuw i8, ptr %8, i64 8 - %11 = load i64, ptr %10, align 8, !noundef !4 + %11 = load i64, ptr %9, align 8, !noundef !4 %12 = icmp eq i64 %11, 0 br i1 %12, label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i": ; preds = %6 - %13 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 - %14 = shl nsw i64 %11, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %13, i64 noundef %14, i64 noundef 8) #33, !noalias !15 + %12 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 + %13 = shl nsw i64 %10, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef %13, i64 noundef 8) #33, !noalias !15 br label %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit" "_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit": ; preds = %6, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i" tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef 16, i64 noundef 8) #33, !noalias !20 - br label %17 + br label %16 -15: ; preds = %2 +14: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2ab0b16c707812d9E.llvm.2256714685376175499, ptr %3, align 8, !alias.scope !25 - %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %1, ptr %16, align 8, !alias.scope !25 + %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %1, ptr %15, align 8, !alias.scope !25 call void @_ZN15crossbeam_epoch8internal5Local5defer17hd7a4045d8e5f9260E(ptr noundef nonnull align 128 %4, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %0) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %17 + br label %16 -17: ; preds = %15, %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit" +16: ; preds = %14, %"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize28_$u7b$$u7b$closure$u7d$$u7d$17hb326f88466928cc7E.llvm.2256714685376175499.exit" ret void } @@ -200,9 +200,9 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2ab0b16c70 br i1 %8, label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i": ; preds = %1 - %9 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 - %10 = shl nsw i64 %7, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef %10, i64 noundef 8) #33, !noalias !28 + %8 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %9 = shl nsw i64 %7, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %9, i64 noundef 8) #33, !noalias !28 br label %"_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit" "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17hd2e496ed11636f0cE.exit": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" @@ -224,12 +224,12 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h5cafaec84d br i1 %9, label %12, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i": ; preds = %1 - %10 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 - %11 = shl nsw i64 %8, 4 - tail call void @__rust_dealloc(ptr noundef nonnull %10, i64 noundef %11, i64 noundef 8) #33, !noalias !39 - br label %12 + %9 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %10 = shl nsw i64 %7, 4 + tail call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef %10, i64 noundef 8) #33, !noalias !39 + br label %11 -12: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i", %1 +11: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hd26e3bd2729fe4c7E.llvm.1299376021755125212.exit.i.i.i.i.i", %1 tail call void @__rust_dealloc(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8) #33, !noalias !44 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 8, i64 noundef 8) #33 ret void diff --git a/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll b/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll index f23eb6b800a..3763cbfe607 100644 --- a/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll +++ b/bench/tree-sitter-rs/optimized/2czk4owdq0ube9pw.ll @@ -870,7 +870,7 @@ _ZN14regex_automata4util4pool5inner9THREAD_ID7__getit17hbfe95a96c38d7049E.exit.i %82 = getelementptr inbounds nuw i8, ptr %69, i64 120 %83 = load ptr, ptr %82, align 8, !invariant.load !4, !nonnull !4 %84 = invoke noundef zeroext i1 %83(ptr noundef align 1 %81, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.0.i9, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %8) - to label %85 unwind label %172 + to label %85 unwind label %171 85: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h29f32342d558414aE.exit" %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -1138,10 +1138,10 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.10717008487263263189.exit unreachable .noexc7: ; preds = %90 - %170 = icmp ne ptr %.sroa.0.sroa.5.0.copyload, null - call void @llvm.assume(i1 %170) - %171 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload, i64 40 - store atomic i64 %.sroa.0.sroa.4.0.copyload, ptr %171 release, align 8 + %169 = icmp ne ptr %.sroa.0.sroa.5.0.copyload, null + call void @llvm.assume(i1 %169) + %170 = getelementptr inbounds nuw i8, ptr %.sroa.0.sroa.5.0.copyload, i64 40 + store atomic i64 %.sroa.0.sroa.4.0.copyload, ptr %170 release, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !177 br label %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17hc5b5b617c74ce2c4E.exit" @@ -1159,18 +1159,18 @@ _ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h98144260d607b035E.exit call void @__rust_dealloc(ptr noundef nonnull %88, i64 noundef 1400, i64 noundef 8) #20 br label %.body.thread -.body.thread: ; preds = %.body.thread.sink.split, %.thread.i, %.body.i, %172 +.body.thread: ; preds = %.body.thread.sink.split, %.thread.i, %.body.i, %171 %eh.lpad-body19 = phi { ptr, i32 } [ %130, %.body.i ], [ %lpad.thr_comm.split-lp, %172 ], [ %lpad.phi.i, %.thread.i ], [ %eh.lpad-body19.ph, %.body.thread.sink.split ] resume { ptr, i32 } %eh.lpad-body19 -172: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h29f32342d558414aE.exit" +171: ; preds = %"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$3get17h29f32342d558414aE.exit" %lpad.thr_comm.split-lp = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr366drop_in_place$LT$regex_automata..util..pool..PoolGuard$LT$regex_automata..meta..regex..Cache$C$alloc..boxed..Box$LT$dyn$u20$core..ops..function..Fn$LT$$LP$$RP$$GT$$u2b$Output$u20$$u3d$$u20$regex_automata..meta..regex..Cache$u2b$core..marker..Send$u2b$core..marker..Sync$u2b$core..panic..unwind_safe..RefUnwindSafe$u2b$core..panic..unwind_safe..UnwindSafe$GT$$GT$$GT$17h738df2ae0dd77e27E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %7) #19 - to label %.body.thread unwind label %173 + to label %.body.thread unwind label %172 -173: ; preds = %172 - %174 = landingpad { ptr, i32 } +172: ; preds = %171 + %173 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #21 unreachable diff --git a/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll b/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll index 457f84c2661..b22911d9e63 100644 --- a/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll +++ b/bench/tree-sitter-rs/optimized/2xun21ofbsn7p9xn.ll @@ -781,10 +781,10 @@ _ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h11ac1c8566f75df4E.exit br label %151 ._crit_edge.i.i10: ; preds = %151 - %..i = tail call i64 @llvm.umax.i64(i64 %22, i64 16) - %.63.i = tail call i64 @llvm.umin.i64(i64 %22, i64 16) - %150 = getelementptr inbounds i8, ptr %.val18.i, i64 %..i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %150, ptr nonnull align 1 %.val18.i, i64 %.63.i, i1 false), !noalias !103 + %spec.select.i = tail call i64 @llvm.umax.i64(i64 %22, i64 16) + %spec.select64.i = tail call i64 @llvm.umin.i64(i64 %22, i64 16) + %150 = getelementptr inbounds i8, ptr %.val18.i, i64 %spec.select.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %150, ptr nonnull align 1 %.val18.i, i64 %spec.select64.i, i1 false), !noalias !103 br label %168 151: ; preds = %151, %.lr.ph.i.i9 diff --git a/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll b/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll index cc3ab42a064..88a2551a68f 100644 --- a/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll +++ b/bench/tree-sitter-rs/optimized/42mwgpotg9phq80h.ll @@ -2868,11 +2868,11 @@ define hidden void @_ZN5alloc11collections5btree3mem7replace17hdb78cf47100d07aeE %8 = add nuw nsw i64 %.sroa.6.0.lcssa.i.i, 1 br i1 %.not.i.not.i.i.i, label %"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$27deallocating_next_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h95d8c890bf89c71dE.llvm.10840908634243202882.exit", label %9 -9: ; preds = %._crit_edge.i.i +9:; preds = %._crit_edge.i.i %10 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i.i, i64 544 %11 = icmp samesign ult i64 %.sroa.6.0.lcssa.i.i, 11 tail call void @llvm.assume(i1 %11) - %12 = getelementptr inbounds nuw ptr, ptr %10, i64 %8 + %11 = getelementptr inbounds nuw ptr, ptr %10, i64 %8 %13 = load ptr, ptr %12, align 8, !noalias !706, !nonnull !12, !noundef !12 %14 = add i64 %.sroa.5.0.lcssa.i.i, -1 %.not11.i.i.i.i = icmp eq i64 %14, 0 @@ -3000,11 +3000,11 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %12 = add nuw nsw i64 %.sroa.6.0.lcssa, 1 br i1 %.not.i.not.i, label %"_ZN5alloc11collections5btree8navigate235_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14next_leaf_edge17h68628787b784317aE.exit", label %13 -13: ; preds = %._crit_edge +13:; preds = %._crit_edge %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 544 %15 = icmp samesign ult i64 %.sroa.6.0.lcssa, 11 tail call void @llvm.assume(i1 %15) - %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 + %15 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !725, !nonnull !12, !noundef !12 %18 = add i64 %.sroa.5.0.lcssa, -1 %.not11.i.i = icmp eq i64 %18, 0 @@ -3088,14 +3088,14 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %.sroa.5.0.lcssa.i = phi i64 [ %4, %2 ], [ %25, %._crit_edge.loopexit.i ] %.sroa.0.0.lcssa.i = phi ptr [ %5, %2 ], [ %22, %._crit_edge.loopexit.i ] %.not.i.not.i.i = icmp eq i64 %.sroa.5.0.lcssa.i, 0 - %12 = add nuw nsw i64 %.sroa.6.0.lcssa.i, 1 + %11 = add nuw nsw i64 %.sroa.6.0.lcssa.i, 1 br i1 %.not.i.not.i.i, label %.loopexit, label %13 -13: ; preds = %._crit_edge.i +13:; preds = %._crit_edge.i %14 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa.i, i64 544 %15 = icmp samesign ult i64 %.sroa.6.0.lcssa.i, 11 tail call void @llvm.assume(i1 %15) - %16 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 + %15 = getelementptr inbounds nuw ptr, ptr %14, i64 %12 %17 = load ptr, ptr %16, align 8, !noalias !744, !nonnull !12, !noundef !12 %18 = add i64 %.sroa.5.0.lcssa.i, -1 %.not11.i.i.i = icmp eq i64 %18, 0 diff --git a/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll b/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll index 4a60c1edfd1..dd6d5d9caa5 100644 --- a/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll +++ b/bench/turborepo-rs/optimized/073xkjbb0bs34qvdns32a3q3u.ll @@ -1248,7 +1248,7 @@ _RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossi _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i: ; preds = %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.thread.i %42 = invoke noundef ptr @_RINvMs0_NtNtNtNtCsapf13pIxsjn_3std3sys12thread_local6native4lazyINtB6_7StoragejzE10initializeNvNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID6___initEB1D_(ptr noundef nonnull align 8 @_RNvNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_03VAL, ptr noalias noundef align 8 dereferenceable_or_null(16) null) - to label %.noexc unwind label %163 + to label %.noexc unwind label %162 .noexc: ; preds = %_RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i %43 = icmp eq ptr %42, null @@ -1256,7 +1256,7 @@ _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INt 44: ; preds = %.noexc invoke void @_ZN4core6result13unwrap_failed17hc6a65fe4227be0f0E(ptr noalias noundef nonnull readonly align 1 @anon.990a21868e8154f5393011229cd9bf7f.31, i64 noundef 70, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.990a21868e8154f5393011229cd9bf7f.26, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.990a21868e8154f5393011229cd9bf7f.33) #27 - to label %.noexc11 unwind label %163 + to label %.noexc11 unwind label %162 .noexc11: ; preds = %44 unreachable @@ -1271,7 +1271,7 @@ _RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultjNtNtNtCsapf13pIxsjn_3std6thread5l 48: ; preds = %_RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultjNtNtNtCsapf13pIxsjn_3std6thread5local11AccessErrorE6expectCseG2FYMysgNb_3wax.exit.i.i invoke void @_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE8get_slowCseG2FYMysgNb_3wax(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %8, ptr noundef nonnull align 8 %.val9, i64 noundef %.val.i.i.i, i64 noundef %46) - to label %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i unwind label %163 + to label %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i unwind label %162 49: ; preds = %_RNvMNtCs1LoaDTb72WA_4core6resultINtB2_6ResultjNtNtNtCsapf13pIxsjn_3std6thread5local11AccessErrorE6expectCseG2FYMysgNb_3wax.exit.i.i store atomic i64 1, ptr %45 release, align 8, !noalias !363 @@ -1308,7 +1308,7 @@ _RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_ %69 = getelementptr inbounds nuw i8, ptr %56, i64 128 %70 = load ptr, ptr %69, align 8, !invariant.load !5, !nonnull !5 %71 = invoke { i32, i32 } %70(ptr noundef align 1 %62, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.sroa.02.0.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %11, ptr noalias noundef nonnull align 8 %14, i64 noundef %16) - to label %72 unwind label %160 + to label %72 unwind label %159 72: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %.sroa.46.0..sroa_idx.i10 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -1385,7 +1385,7 @@ _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INt _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i: ; preds = %95 call void @__rust_dealloc(ptr noundef nonnull align 8 %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #25 - br label %165 + br label %164 98: ; preds = %.noexc23.i, %88 %.sroa.01.030.i.i = phi i32 [ 0, %88 ], [ %99, %.noexc23.i ] @@ -1460,7 +1460,7 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3Box .noexc16.i.i: ; preds = %128 %132 = invoke noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h6a9f75f10e5219e5E() - to label %.noexc13 unwind label %163 + to label %.noexc13 unwind label %162 .noexc13: ; preds = %.noexc16.i.i br i1 %132, label %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, label %133 @@ -1472,11 +1472,11 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3Box _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %133, %.noexc13, %128, %121 %134 = atomicrmw xchg ptr %109, i32 0 release, align 4 %135 = icmp eq i32 %134, 2 - br i1 %135, label %136, label %165 + br i1 %135, label %136, label %164 136: ; preds = %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i invoke void @_ZN3std3sys4sync5mutex5futex5Mutex4wake17h8c60655997115495E(ptr noundef nonnull align 4 %109) - to label %165 unwind label %163 + to label %165 unwind label %162 137: ; preds = %153, %.body.i.i %138 = landingpad { ptr, i32 } @@ -1560,85 +1560,85 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsapf13pIxsjn_3std4sync5mute .noexc5.i: ; preds = %154 call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #25 - br label %165 + br label %164 .noexc6.i: ; preds = %76 call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !365 store ptr null, ptr %6, align 8, !noalias !365 invoke void @_RINvNtCs1LoaDTb72WA_4core9panicking13assert_failedjjECs5g6BnGVOFtV_12regex_syntax(i8 noundef 1, ptr noalias noundef readonly align 8 dereferenceable(8) @_RNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner17THREAD_ID_DROPPED, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.990a21868e8154f5393011229cd9bf7f.37) #27 - to label %.noexc15 unwind label %163 + to label %.noexc15 unwind label %162 .noexc15: ; preds = %.noexc6.i unreachable .noexc7.i: ; preds = %76 - %158 = icmp ne ptr %.sroa.57.0.copyload.i, null - call void @llvm.assume(i1 %158) - %159 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 - store atomic i64 %73, ptr %159 release, align 8 - br label %165 + %157 = icmp ne ptr %.sroa.57.0.copyload.i, null + call void @llvm.assume(i1 %157) + %158 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 + store atomic i64 %73, ptr %158 release, align 8 + br label %164 .body.thread.sink.split.i: ; preds = %155, %96 %eh.lpad-body17.ph.i = phi { ptr, i32 } [ %97, %96 ], [ %156, %155 ] call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #25 br label %.body -160: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i +159: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsgrIngBG6lgl_14regex_automata4util4pool9PoolGuardNtNtNtBN_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputB1B_NtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB3h_10UnwindSafeNtB3Y_4SendEL_EEECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(32) %9) #28 - to label %.body unwind label %161 + to label %.body unwind label %160 -161: ; preds = %160 - %162 = landingpad { ptr, i32 } +160: ; preds = %159 + %161 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #26 unreachable -163: ; preds = %.noexc6.i, %136, %.noexc16.i.i, %48, %44, %_RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i - %164 = landingpad { ptr, i32 } +162: ; preds = %.noexc6.i, %136, %.noexc16.i.i, %48, %44, %_RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INtNtNtCs1LoaDTb72WA_4core3ops8function6FnOnceTINtNtB1j_6option6OptionQIB1Y_jEEEE9call_onceCseG2FYMysgNb_3wax.exit.i.i.i + %163 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %.body.i.i, %153, %.body.thread.sink.split.i, %160, %163 - %eh.lpad-body = phi { ptr, i32 } [ %164, %163 ], [ %lpad.phi.i.i, %153 ], [ %lpad.thr_comm.split-lp.i, %160 ], [ %118, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] +.body: ; preds = %.body.i.i, %153, %.body.thread.sink.split.i, %159, %162 + %eh.lpad-body = phi { ptr, i32 } [ %163, %163 ], [ %lpad.phi.i.i, %153 ], [ %lpad.thr_comm.split-lp.i, %160 ], [ %118, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4util8captures8CapturesECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) #28 - to label %184 unwind label %182 + to label %184 unwind label %181 -165: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %.noexc5.i, %.noexc7.i, %136 +164: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %.noexc5.i, %.noexc7.i, %136 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !352 - %166 = extractvalue { i32, i32 } %71, 1 - %167 = extractvalue { i32, i32 } %71, 0 + %165 = extractvalue { i32, i32 } %71, 1 + %166 = extractvalue { i32, i32 } %71, 0 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !352 - %168 = getelementptr inbounds nuw i8, ptr %10, i64 28 - store i32 %167, ptr %12, align 8 - store i32 %166, ptr %168, align 4 - %169 = icmp eq i32 %167, 1 - br i1 %169, label %170, label %.thread - -170: ; preds = %165 - %171 = load ptr, ptr %18, align 8, !nonnull !5, !noundef !5 - %172 = getelementptr inbounds nuw i8, ptr %171, i64 168 - %173 = load ptr, ptr %172, align 8, !nonnull !5, !noundef !5 - %174 = getelementptr inbounds nuw i8, ptr %173, i64 32 - %175 = load i64, ptr %174, align 8, !range !313, !noundef !5 - %trunc = trunc nuw i64 %175 to i1 - br i1 %trunc, label %176, label %180 - -.thread: ; preds = %20, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %165 + %167 = getelementptr inbounds nuw i8, ptr %10, i64 28 + store i32 %166, ptr %12, align 8 + store i32 %165, ptr %167, align 4 + %168 = icmp eq i32 %166, 1 + br i1 %168, label %169, label %.thread + +169: ; preds = %164 + %170 = load ptr, ptr %18, align 8, !nonnull !5, !noundef !5 + %171 = getelementptr inbounds nuw i8, ptr %170, i64 168 + %172 = load ptr, ptr %171, align 8, !nonnull !5, !noundef !5 + %173 = getelementptr inbounds nuw i8, ptr %172, i64 32 + %174 = load i64, ptr %173, align 8, !range !313, !noundef !5 + %trunc = trunc nuw i64 %174 to i1 + br i1 %trunc, label %175, label %179 + +.thread: ; preds = %20, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %164 store i64 2, ptr %0, align 8 call void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4util8captures8CapturesECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(40) %10) - br label %181 - -176: ; preds = %170 - %177 = getelementptr inbounds nuw i8, ptr %173, i64 40 - %178 = load i64, ptr %177, align 8 - %179 = call i64 @llvm.uadd.sat.i64(i64 %178, i64 1) br label %180 -180: ; preds = %170, %176 +175: ; preds = %169 + %176 = getelementptr inbounds nuw i8, ptr %172, i64 40 + %177 = load i64, ptr %176, align 8 + %178 = call i64 @llvm.uadd.sat.i64(i64 %177, i64 1) + br label %179 + +179: ; preds = %169, %175 %.sroa.01.0 = phi i64 [ 1, %176 ], [ 0, %170 ] - %.sroa.3.0 = phi i64 [ %179, %176 ], [ undef, %170 ] + %.sroa.3.0 = phi i64 [ %178, %176 ], [ undef, %170 ] %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %10, i64 40, i1 false) store i64 %.sroa.01.0, ptr %0, align 8 @@ -1648,20 +1648,20 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsapf13pIxsjn_3std4sync5mute store ptr %2, ptr %.sroa.6.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 64 store i64 %3, ptr %.sroa.7.0..sroa_idx, align 8 - br label %181 + br label %180 -181: ; preds = %.thread, %180 +180: ; preds = %.thread, %179 call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %11) ret void -182: ; preds = %.body - %183 = landingpad { ptr, i32 } +181: ; preds = %.body + %182 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #26 unreachable -184: ; preds = %.body +183: ; preds = %.body resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll b/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll index 3ec25443f0e..f7731f7f6ee 100644 --- a/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll +++ b/bench/turborepo-rs/optimized/667fw7b0fgqo2a1672jmft41u.ll @@ -1054,7 +1054,7 @@ _RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_ %64 = getelementptr inbounds nuw i8, ptr %51, i64 112 %65 = load ptr, ptr %64, align 8, !invariant.load !5, !noalias !169, !nonnull !5 invoke void %65(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %8, ptr noundef align 1 %57, ptr noalias noundef nonnull align 8 dereferenceable(1400) %.sroa.01.0.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %9) - to label %66 unwind label %152 + to label %66 unwind label %151 66: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %.sroa.46.0..sroa_idx.i3 = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -1131,7 +1131,7 @@ _RNvYNCNkNvNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9THREAD_ID0s_0INt _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i: ; preds = %89 call void @__rust_dealloc(ptr noundef nonnull align 8 %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #35, !noalias !169 - br label %150 + br label %149 92: ; preds = %141, %82 %.sroa.01.036.i.i = phi i32 [ 0, %82 ], [ %93, %141 ] @@ -1240,11 +1240,11 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3Box _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, %.noexc17.i.i, %130, %124 %136 = atomicrmw xchg ptr %98, i32 0 release, align 4, !noalias !169 %137 = icmp eq i32 %136, 2 - br i1 %137, label %138, label %150 + br i1 %137, label %138, label %149 138: ; preds = %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i call void @_ZN3std3sys4sync5mutex5futex5Mutex4wake17h8c60655997115495E(ptr noundef nonnull align 4 %98), !noalias !169 - br label %150 + br label %149 139: ; preds = %143, %.body.i.i %140 = landingpad { ptr, i32 } @@ -1289,7 +1289,7 @@ _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, .noexc4.i: ; preds = %144 call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #35, !noalias !169 - br label %150 + br label %149 .noexc5.i: ; preds = %70 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !171 @@ -1298,17 +1298,17 @@ _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, unreachable .noexc6.i: ; preds = %70 - %148 = icmp ne ptr %.sroa.57.0.copyload.i, null - call void @llvm.assume(i1 %148) - %149 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 - store atomic i64 %67, ptr %149 release, align 8, !noalias !169 - br label %150 + %147 = icmp ne ptr %.sroa.57.0.copyload.i, null + call void @llvm.assume(i1 %147) + %148 = getelementptr inbounds nuw i8, ptr %.sroa.57.0.copyload.i, i64 40 + store atomic i64 %67, ptr %148 release, align 8, !noalias !169 + br label %149 -150: ; preds = %.noexc6.i, %.noexc4.i, %138, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i +149: ; preds = %.noexc6.i, %.noexc4.i, %138, %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i, %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEECseG2FYMysgNb_3wax.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !156 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !156 %.pre = load i64, ptr %8, align 8, !range !4 - %151 = trunc nuw i64 %.pre to i1 + %150 = trunc nuw i64 %.pre to i1 br label %_RNvMs0_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_5Regex11search_half.exit .body.thread.sink.split.i: ; preds = %145, %90 @@ -1316,24 +1316,24 @@ _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.exit.i.i.i.i: ; preds = %135, call void @__rust_dealloc(ptr noundef nonnull %.sroa.46.0.copyload.i, i64 noundef 1400, i64 noundef 8) #35, !noalias !169 br label %.body.thread.i -.body.thread.i: ; preds = %152, %.body.thread.sink.split.i, %143, %.body.i.i +.body.thread.i: ; preds = %151, %.body.thread.sink.split.i, %143, %.body.i.i %eh.lpad-body17.i = phi { ptr, i32 } [ %lpad.phi.i.i, %143 ], [ %lpad.thr_comm.split-lp.i, %152 ], [ %121, %.body.i.i ], [ %eh.lpad-body17.ph.i, %.body.thread.sink.split.i ] resume { ptr, i32 } %eh.lpad-body17.i -152: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i +151: ; preds = %_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE3getCseG2FYMysgNb_3wax.exit.i %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsgrIngBG6lgl_14regex_automata4util4pool9PoolGuardNtNtNtBN_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputB1B_NtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB3h_10UnwindSafeNtB3Y_4SendEL_EEECseG2FYMysgNb_3wax(ptr noalias noundef nonnull align 8 dereferenceable(32) %7) #37 - to label %.body.thread.i unwind label %153, !noalias !169 + to label %.body.thread.i unwind label %152, !noalias !169 -153: ; preds = %152 - %154 = landingpad { ptr, i32 } +152: ; preds = %151 + %153 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #34, !noalias !169 unreachable -_RNvMs0_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_5Regex11search_half.exit: ; preds = %15, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %150 - %trunc = phi i1 [ %151, %150 ], [ false, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i ], [ false, %15 ] +_RNvMs0_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_5Regex11search_half.exit: ; preds = %15, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i, %149 + %trunc = phi i1 [ %150, %150 ], [ false, %_RNvMs4_NtNtCsgrIngBG6lgl_14regex_automata4meta5regexNtB5_9RegexInfo13is_impossible.exit.i ], [ false, %15 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) ret i1 %trunc diff --git a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll index 50f50ba3256..eb6e404fb6b 100644 --- a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll +++ b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll @@ -895,8 +895,8 @@ define void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtNtCsgrIngBG6lgl cleanup %16 = icmp ne ptr %.val, null tail call void @llvm.assume(i1 %16) - %17 = getelementptr inbounds nuw i8, ptr %.val2, i64 8 - %18 = load i64, ptr %17, align 8, !range !109, !invariant.load !8 + %18 = getelementptr inbounds nuw i8, ptr %.val2, i64 8 + %19 = load i64, ptr %18, align 8, !range !109, !invariant.load !8 %19 = getelementptr inbounds nuw i8, ptr %.val2, i64 16 %20 = load i64, ptr %19, align 8, !range !110, !invariant.load !8 %21 = icmp ult i64 %20, -9223372036854775807 @@ -910,64 +910,64 @@ define void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtNtCsgrIngBG6lgl .body: ; preds = %14, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i4.i" invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) #19 - to label %.body3 unwind label %38 + to label %.body3 unwind label %37 _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h7539cf4a200804dcE.exit.i.i", %6 invoke void @_RNvXsn_NtCs68wO5nsWeTG_5alloc3vecINtB5_3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBw_INtNtB7_5boxed3BoxNtNtNtBO_4meta5regex5CacheEEEEENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropBO_(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) - to label %25 unwind label %23 + to label %25 unwind label %22 -23: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit - %24 = landingpad { ptr, i32 } +22: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit + %23 = landingpad { ptr, i32 } cleanup invoke void @_RNvXs2_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexINtNtB7_3vec3VecINtNtB7_5boxed3BoxNtNtNtBV_4meta5regex5CacheEEEEENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropBV_(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) - to label %.body3 unwind label %26 + to label %.body3 unwind label %25 -25: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit +24: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtB4_3ops8function2FnuEp6OutputNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheNtNtNtB4_5panic11unwind_safe13RefUnwindSafeNtNtB4_6marker4SyncNtB2J_10UnwindSafeNtB3q_4SendEL_EECsff1zCjKRl2o_13turborepo_env.exit invoke void @_RNvXs2_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexINtNtB7_3vec3VecINtNtB7_5boxed3BoxNtNtNtBV_4meta5regex5CacheEEEEENtNtNtCs1LoaDTb72WA_4core3ops4drop4Drop4dropBV_(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) - to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %32 + to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %31 -26: ; preds = %23 - %27 = landingpad { ptr, i32 } +25: ; preds = %22 + %26 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #18 unreachable -.body3: ; preds = %32, %23, %.body - %.pn = phi { ptr, i32 } [ %15, %.body ], [ %33, %32 ], [ %24, %23 ] - %28 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %29 = load i64, ptr %28, align 8, !range !4, !alias.scope !111, !noundef !8 - %30 = icmp eq i64 %29, 3 - br i1 %30, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit, label %31 +.body3: ; preds = %31, %22, %.body + %.pn = phi { ptr, i32 } [ %15, %.body ], [ %32, %32 ], [ %23, %23 ] + %27 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %28 = load i64, ptr %27, align 8, !range !4, !alias.scope !111, !noundef !8 + %29 = icmp eq i64 %28, 3 + br i1 %29, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit, label %30 -31: ; preds = %.body3 - invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %28) - to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %38 +30: ; preds = %.body3 + invoke void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %27) + to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit unwind label %37 -32: ; preds = %25 - %33 = landingpad { ptr, i32 } +31: ; preds = %24 + %32 = landingpad { ptr, i32 } cleanup br label %.body3 -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %25 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %35 = load i64, ptr %34, align 8, !range !4, !alias.scope !116, !noundef !8 - %36 = icmp eq i64 %35, 3 - br i1 %36, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5, label %37 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %24 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %34 = load i64, ptr %33, align 8, !range !4, !alias.scope !116, !noundef !8 + %35 = icmp eq i64 %34, 3 + br i1 %35, label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5, label %36 -37: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit - tail call void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %34) +36: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit + tail call void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 dereferenceable(1400) %33) br label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5 -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit, %37 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit5: ; preds = %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtCs68wO5nsWeTG_5alloc3vec3VecINtNtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner9CacheLineINtNtNtCsapf13pIxsjn_3std4sync5mutex5MutexIBH_INtNtBL_5boxed3BoxNtNtNtB1m_4meta5regex5CacheEEEEEECsff1zCjKRl2o_13turborepo_env.exit, %36 ret void -38: ; preds = %31, %.body - %39 = landingpad { ptr, i32 } +37: ; preds = %30, %.body + %38 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h1bb225b6f4388944E() #18 unreachable -_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %.body3, %31 +_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_4cell10UnsafeCellINtNtB4_6option6OptionNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEEECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %.body3, %30 resume { ptr, i32 } %.pn } diff --git a/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll b/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll index 0ea3ef27a80..8744afa5921 100644 --- a/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll +++ b/bench/wasmtime-rs/optimized/3tukmgwo6vemwvwz.ll @@ -1891,7 +1891,7 @@ define internal fastcc void @"_ZN4core3ptr103drop_in_place$LT$alloc..boxed..Box$ 15: ; preds = %19, %17 %.1.i = phi i64 [ %7, %17 ], [ %21, %19 ] %16 = icmp eq i64 %.1.i, %.8.val - br i1 %16, label %26, label %19 + br i1 %16, label %25, label %19 17: ; preds = %5 %18 = landingpad { ptr, i32 } @@ -1920,8 +1920,8 @@ define internal fastcc void @"_ZN4core3ptr103drop_in_place$LT$alloc..boxed..Box$ "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5f19fdbdac53d871E.exit4": ; preds = %0, %"_ZN4core3ptr78drop_in_place$LT$$u5b$wasmtime_environ..component..types..RecordField$u5d$$GT$17h7abcc09d68e1ff20E.exit" ret void -26: ; preds = %15 - %27 = shl nsw i64 %.8.val, 5 +25: ; preds = %15 + %26 = shl nsw i64 %.8.val, 5 %28 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %28) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, 0) %27, i64 noundef 8) #25 diff --git a/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll b/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll index c5b3597cf50..d2540d79eb7 100644 --- a/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll +++ b/bench/wasmtime-rs/optimized/4oustitdsdvnhdau.ll @@ -113,20 +113,20 @@ define nonnull align 8 ptr @"_ZN4core6option15Option$LT$T$GT$18get_or_insert_wit call void @"_ZN4core4iter8adapters8peekable17Peekable$LT$I$GT$4peek28_$u7b$$u7b$closure$u7d$$u7d$17h296401757362ea26E"(ptr nonnull sret({ [2 x i64], i64, [6 x i64] }) align 8 %3, ptr align 8 %1) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %4, ptr noundef nonnull align 8 dereferenceable(72) %3, i64 72, i1 false) invoke void @"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..option..Option$LT$$LP$$RF$str$C$cranelift_codegen_meta..cdsl..operands..OperandKindFields$RP$$GT$$GT$$GT$17hf6b28dbe6eee9e49E"(ptr nonnull align 8 %0) - to label %13 unwind label %11 + to label %13 unwind label %10 -9: ; preds = %13, %2 +9: ; preds = %12, %2 %10 = icmp ne ptr %0, null call void @llvm.assume(i1 %10) ret ptr %0 -11: ; preds = %8 - %12 = landingpad { ptr, i32 } +10: ; preds = %8 + %11 = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) - resume { ptr, i32 } %12 + resume { ptr, i32 } %11 -13: ; preds = %8 +12: ; preds = %8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %4, i64 72, i1 false) br label %9 } @@ -256,7 +256,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 17: ; preds = %5 %18 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr159drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$alloc..rc..Rc$LT$cranelift_codegen_meta..cdsl..instructions..InstructionContent$GT$$GT$$GT$$GT$17hfb94199e64ad60fdE"(ptr nonnull align 8 %4) #9 + invoke void @"_ZN4core3ptr159drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$alloc..rc..Rc$LT$cranelift_codegen_meta..cdsl..instructions..InstructionContent$GT$$GT$$GT$$GT$17hfb94199e64ad60fdE"(ptr nonnull align 8 %4) #8 to label %23 unwind label %21 19: ; preds = %5 @@ -269,7 +269,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 21: ; preds = %17 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #10 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #9 unreachable 23: ; preds = %17 @@ -308,7 +308,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 17: ; preds = %5 %18 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr129drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$cranelift_codegen_meta..gen_settings..SettingOrPreset$GT$$GT$$GT$17hf4c033295bb53410E"(ptr nonnull align 8 %4) #9 + invoke void @"_ZN4core3ptr129drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$cranelift_codegen_meta..gen_settings..SettingOrPreset$GT$$GT$$GT$17hf4c033295bb53410E"(ptr nonnull align 8 %4) #8 to label %23 unwind label %21 19: ; preds = %5 @@ -321,7 +321,7 @@ define void @"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT 21: ; preds = %17 %22 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #10 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #9 unreachable 23: ; preds = %17 @@ -483,7 +483,7 @@ declare void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h981f6d3602f7ed7cE" declare void @"_ZN4core3ptr159drop_in_place$LT$alloc..vec..Vec$LT$core..option..Option$LT$$RF$alloc..rc..Rc$LT$cranelift_codegen_meta..cdsl..instructions..InstructionContent$GT$$GT$$GT$$GT$17hfb94199e64ad60fdE"(ptr align 8) unnamed_addr #0 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() unnamed_addr #7 +declare void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() unnamed_addr #6 ; Function Attrs: nonlazybind uwtable declare { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he0d53153d69932d6E"(i64, i1 zeroext) unnamed_addr #0 @@ -519,10 +519,10 @@ declare void @"_ZN4core3ptr77drop_in_place$LT$$RF$cranelift_codegen_meta..cdsl.. declare zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h79cc2e733c0774e3E"(ptr align 8, ptr align 8) unnamed_addr #0 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(ptr captures(none)) #8 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(ptr captures(none)) #8 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #7 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll b/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll index bfdb011de20..e86c63a2a80 100644 --- a/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll +++ b/bench/wasmtime-rs/optimized/enal6epyb0tyurl.ll @@ -10635,7 +10635,7 @@ define internal fastcc void @"_ZN4core3ptr285drop_in_place$LT$alloc..boxed..Box$ 18: ; preds = %22, %.body.i %.1.i = phi i64 [ %3, %.body.i ], [ %24, %22 ] %19 = icmp eq i64 %.1.i, %.8.val - br i1 %19, label %29, label %22 + br i1 %19, label %28, label %22 20: ; preds = %"_ZN4core3ptr134drop_in_place$LT$addr2line..function..Function$LT$gimli..read..endian_slice..EndianSlice$LT$gimli..endianity..LittleEndian$GT$$GT$$GT$17h439c178630bcb059E.exit.i.i.i.i.i.i" %21 = landingpad { ptr, i32 } @@ -10668,8 +10668,8 @@ define internal fastcc void @"_ZN4core3ptr285drop_in_place$LT$alloc..boxed..Box$ "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h89cefaec755e2d09E.exit5": ; preds = %0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4" ret void -29: ; preds = %18 - %30 = mul nsw i64 %.8.val, 72 +28: ; preds = %18 + %29 = mul nsw i64 %.8.val, 72 %31 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %31) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %30, i64 noundef 8) #44 @@ -11468,7 +11468,7 @@ define internal fastcc void @"_ZN4core3ptr77drop_in_place$LT$alloc..boxed..Box$L 15: ; preds = %19, %17 %.1.i = phi i64 [ %7, %17 ], [ %21, %19 ] %16 = icmp eq i64 %.1.i, %.8.val - br i1 %16, label %26, label %19 + br i1 %16, label %25, label %19 17: ; preds = %5 %18 = landingpad { ptr, i32 } @@ -11497,8 +11497,8 @@ define internal fastcc void @"_ZN4core3ptr77drop_in_place$LT$alloc..boxed..Box$L "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f5a36d45de145c2E.exit5": ; preds = %0, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4" ret void -26: ; preds = %15 - %27 = mul nsw i64 %.8.val, 24 +25: ; preds = %15 + %26 = mul nsw i64 %.8.val, 24 %28 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %28) tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef %27, i64 noundef 8) #44 @@ -12055,7 +12055,7 @@ define hidden void @"_ZN4core3ptr98drop_in_place$LT$alloc..boxed..Box$LT$$u5b$wa 21: ; preds = %25, %23 %.1.i = phi i64 [ %11, %23 ], [ %27, %25 ] %22 = icmp eq i64 %.1.i, %5 - br i1 %22, label %32, label %25 + br i1 %22, label %31, label %25 23: ; preds = %13 %24 = landingpad { ptr, i32 } @@ -12084,8 +12084,8 @@ define hidden void @"_ZN4core3ptr98drop_in_place$LT$alloc..boxed..Box$LT$$u5b$wa "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6c9ae326c624e18bE.exit5": ; preds = %1, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14223331465801898566.exit.i4" ret void -32: ; preds = %21 - %33 = shl nsw i64 %5, 5 +31: ; preds = %21 + %32 = shl nsw i64 %5, 5 %34 = icmp ne ptr %3, null tail call void @llvm.assume(i1 %34) tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef %33, i64 noundef 8) #44 diff --git a/bench/wireshark/optimized/packet-agentx.ll b/bench/wireshark/optimized/packet-agentx.ll index f9b03d07bf9..1b9d3c0e960 100644 --- a/bench/wireshark/optimized/packet-agentx.ll +++ b/bench/wireshark/optimized/packet-agentx.ll @@ -1072,8 +1072,8 @@ define internal fastcc noundef i32 @dissect_object_id(ptr noundef %0, ptr nounde %7 = alloca [2048 x i8], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %7) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %6, i8 noundef 0, i64 noundef 8192, i1 noundef false) #7 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2048) %7, i8 noundef 0, i64 noundef 2048, i1 noundef false) #7 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %6, i8 noundef 0, i64 noundef 8192, i1 noundef false) #6 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2048) %7, i8 noundef 0, i64 noundef 2048, i1 noundef false) #6 %8 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %2) %9 = add i32 %2, 1 %10 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %9) @@ -1148,59 +1148,59 @@ define internal fastcc noundef i32 @dissect_object_id(ptr noundef %0, ptr nounde %41 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef %32, i64 noundef %34, i32 noundef 2, i64 noundef %37, ptr noundef nonnull @.str.183, i32 noundef %40) %42 = add i32 %41, %.139.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %43 = icmp samesign ult i64 %indvars.iv.next.i, %30 - %44 = icmp slt i32 %42, 2048 - %45 = select i1 %43, i1 %44, i1 false - br i1 %45, label %.lr.ph.i, label %convert_oid_to_str.exit, !llvm.loop !16 + %42 = icmp samesign ult i64 %indvars.iv.next.i, %30 + %43 = icmp slt i32 %42, 2048 + %44 = select i1 %42, i1 %43, i1 false + br i1 %44, label %.lr.ph.i, label %convert_oid_to_str.exit, !llvm.loop !16 convert_oid_to_str.exit: ; preds = %.lr.ph.i %.not = icmp eq i32 %42, 0 br i1 %.not, label %convert_oid_to_str.exit.thread, label %convert_oid_to_str.exit.thread58 convert_oid_to_str.exit.thread: ; preds = %5, %convert_oid_to_str.exit - %46 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %7, i64 noundef 2048, i32 noundef 2, i64 noundef 2048, ptr noundef nonnull @.str.175) + %45 = call i32 (ptr, i64, i32, i64, ptr, ...) @__snprintf_chk(ptr noundef nonnull %7, i64 noundef 2048, i32 noundef 2, i64 noundef 2048, ptr noundef nonnull @.str.175) br label %convert_oid_to_str.exit.thread58 convert_oid_to_str.exit.thread58: ; preds = %26, %convert_oid_to_str.exit.thread, %convert_oid_to_str.exit %.not53 = icmp eq ptr %1, null - br i1 %.not53, label %67, label %47 + br i1 %.not53, label %66, label %46 -47: ; preds = %convert_oid_to_str.exit.thread58 +46: ; preds = %convert_oid_to_str.exit.thread58 %.not54 = icmp eq i8 %12, 0 - %48 = select i1 %.not54, ptr @.str.178, ptr @.str.177 + %47 = select i1 %.not54, ptr @.str.178, ptr @.str.177 switch i32 %4, label %50 [ - i32 0, label %51 - i32 1, label %49 + i32 0, label %50 + i32 1, label %48 ] -49: ; preds = %47 - br label %51 +48: ; preds = %46 + br label %50 -50: ; preds = %47 - br label %51 +49: ; preds = %46 + br label %50 -51: ; preds = %47, %50, %49 +50: ; preds = %46, %49, %48 %.048 = phi ptr [ @.str.176, %50 ], [ @.str.180, %49 ], [ @.str.179, %47 ] - %.0 = phi ptr [ @.str.176, %50 ], [ %48, %49 ], [ %48, %47 ] - %52 = shl nuw nsw i32 %15, 2 - %53 = add nuw nsw i32 %52, 4 - %54 = load i32, ptr @ett_obj_ident, align 4 - %55 = call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef nonnull %1, ptr noundef %0, i32 noundef %2, i32 noundef %53, i32 noundef %54, ptr noundef null, ptr noundef nonnull @.str.181, ptr noundef nonnull %.048, ptr noundef nonnull %7, ptr noundef nonnull %.0) - %56 = load i32, ptr @hf_oid_sub, align 4 - %57 = call ptr @proto_tree_add_uint(ptr noundef %55, i32 noundef %56, ptr noundef %0, i32 noundef %2, i32 noundef 1, i32 noundef %15) - %58 = load i32, ptr @hf_oid_prefix, align 4 - %59 = zext i8 %10 to i32 - %60 = call ptr @proto_tree_add_uint(ptr noundef %55, i32 noundef %58, ptr noundef %0, i32 noundef %9, i32 noundef 1, i32 noundef %59) - %61 = load i32, ptr @hf_oid_include, align 4 - %62 = zext i8 %12 to i64 - %63 = call ptr @proto_tree_add_boolean(ptr noundef %55, i32 noundef %61, ptr noundef %0, i32 noundef %11, i32 noundef 1, i64 noundef %62) - %64 = load i32, ptr @hf_oid_str, align 4 - %65 = add i32 %2, 4 - %66 = call ptr @proto_tree_add_string(ptr noundef %55, i32 noundef %64, ptr noundef %0, i32 noundef %65, i32 noundef %52, ptr noundef nonnull %7) - br label %67 - -67: ; preds = %convert_oid_to_str.exit.thread58, %51 - %.050 = phi i32 [ %53, %51 ], [ %2, %convert_oid_to_str.exit.thread58 ] + %.0 = phi ptr [ @.str.176, %50 ], [ %47, %49 ], [ %48, %47 ] + %51 = shl nuw nsw i32 %15, 2 + %52 = add nuw nsw i32 %51, 4 + %53 = load i32, ptr @ett_obj_ident, align 4 + %54 = call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef nonnull %1, ptr noundef %0, i32 noundef %2, i32 noundef %52, i32 noundef %53, ptr noundef null, ptr noundef nonnull @.str.181, ptr noundef nonnull %.048, ptr noundef nonnull %7, ptr noundef nonnull %.0) + %55 = load i32, ptr @hf_oid_sub, align 4 + %56 = call ptr @proto_tree_add_uint(ptr noundef %54, i32 noundef %55, ptr noundef %0, i32 noundef %2, i32 noundef 1, i32 noundef %15) + %57 = load i32, ptr @hf_oid_prefix, align 4 + %58 = zext i8 %10 to i32 + %59 = call ptr @proto_tree_add_uint(ptr noundef %54, i32 noundef %57, ptr noundef %0, i32 noundef %9, i32 noundef 1, i32 noundef %58) + %60 = load i32, ptr @hf_oid_include, align 4 + %61 = zext i8 %12 to i64 + %62 = call ptr @proto_tree_add_boolean(ptr noundef %54, i32 noundef %60, ptr noundef %0, i32 noundef %11, i32 noundef 1, i64 noundef %61) + %63 = load i32, ptr @hf_oid_str, align 4 + %64 = add i32 %2, 4 + %65 = call ptr @proto_tree_add_string(ptr noundef %54, i32 noundef %63, ptr noundef %0, i32 noundef %64, i32 noundef %51, ptr noundef nonnull %7) + br label %66 + +66: ; preds = %convert_oid_to_str.exit.thread58, %50 + %.050 = phi i32 [ %52, %51 ], [ %2, %convert_oid_to_str.exit.thread58 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.050 diff --git a/bench/wireshark/optimized/packet-tls-utils.ll b/bench/wireshark/optimized/packet-tls-utils.ll index c600bc4c931..7dc14a8e9d5 100644 --- a/bench/wireshark/optimized/packet-tls-utils.ll +++ b/bench/wireshark/optimized/packet-tls-utils.ll @@ -16567,10 +16567,10 @@ define internal fastcc noundef zeroext i1 @tls12_prf(i32 noundef range(i32 8, 32 %.not25 = icmp eq i64 %13, 0 br i1 %.not25, label %43, label %33 -33: ; preds = %22 +46: ; preds = %22 %34 = add i64 %14, %29 - %35 = getelementptr i8, ptr %26, i64 %29 - %36 = load ptr, ptr %4, align 8 + %48 = getelementptr i8, ptr %26, i64 %29 + %49 = load ptr, ptr %4, align 8 %37 = getelementptr inbounds nuw i8, ptr %4, i64 8 %38 = load i32, ptr %37, align 8 %39 = zext i32 %38 to i64 @@ -16580,7 +16580,7 @@ define internal fastcc noundef zeroext i1 @tls12_prf(i32 noundef range(i32 8, 32 %42 = tail call ptr @__memcpy_chk(ptr noundef %35, ptr noundef %36, i64 noundef %39, i64 noundef %40) #31, !alias.scope !179 br label %43 -43: ; preds = %33, %22 +51: ; preds = %46, %22 %44 = tail call ptr @gcry_md_algo_name(i32 noundef %0) #32 %45 = getelementptr inbounds nuw i8, ptr %1, i64 8 %46 = load i32, ptr %45, align 8 diff --git a/bench/wireshark/optimized/proto.ll b/bench/wireshark/optimized/proto.ll index fa64a65f4a4..a624256840c 100644 --- a/bench/wireshark/optimized/proto.ll +++ b/bench/wireshark/optimized/proto.ll @@ -35353,7 +35353,7 @@ proto_item_set_generated.exit: ; preds = %36, %39, %42 %73 = tail call ptr @proto_tree_add_bytes(ptr noundef %0, i32 noundef %3, ptr noundef %1, i32 noundef %2, i32 noundef %72, ptr noundef %70) %74 = and i32 %9, 1 %.not124 = icmp eq i32 %74, 0 - br i1 %.not124, label %135, label %75 + br i1 %.not124, label %134, label %75 75: ; preds = %67 %76 = and i32 %9, 12 @@ -35465,7 +35465,7 @@ proto_item_set_generated.exit153: ; preds = %106, %103, %101, %. ._crit_edge: ; preds = %.lr.ph, %115 tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %73, ptr noundef nonnull @.str.199, ptr noundef %121) %.not131 = icmp eq ptr %5, null - br i1 %.not131, label %proto_item_set_generated.exit141, label %132 + br i1 %.not131, label %proto_item_set_generated.exit141, label %131 .lr.ph: ; preds = %115, %.lr.ph %.0158 = phi i64 [ %131, %.lr.ph ], [ 0, %115 ] @@ -35483,35 +35483,35 @@ proto_item_set_generated.exit153: ; preds = %106, %103, %101, %. %exitcond.not = icmp eq i64 %131, %8 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !77 -132: ; preds = %._crit_edge - %133 = tail call ptr @expert_get_summary(ptr noundef nonnull %5) - %134 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %6, ptr noundef %73, ptr noundef nonnull %5, ptr noundef nonnull @.str.200, ptr noundef %133, ptr noundef %121) +131: ; preds = %._crit_edge + %132 = tail call ptr @expert_get_summary(ptr noundef nonnull %5) + %133 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %6, ptr noundef %73, ptr noundef nonnull %5, ptr noundef nonnull @.str.200, ptr noundef %132, ptr noundef %121) br label %proto_item_set_generated.exit141 -135: ; preds = %67 +134: ; preds = %67 %.not125 = icmp eq i32 %4, -1 - br i1 %.not125, label %proto_item_set_generated.exit141, label %136 + br i1 %.not125, label %proto_item_set_generated.exit141, label %135 -136: ; preds = %135 +135: ; preds = %134 tail call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %73, ptr noundef nonnull @.str.196) - %137 = tail call ptr @proto_tree_add_uint(ptr noundef %0, i32 noundef %4, ptr noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 2) - %.not.i154 = icmp eq ptr %137, null - br i1 %.not.i154, label %proto_item_set_generated.exit141, label %138 + %136 = tail call ptr @proto_tree_add_uint(ptr noundef %0, i32 noundef %4, ptr noundef %1, i32 noundef %2, i32 noundef 0, i32 noundef 2) + %.not.i154 = icmp eq ptr %136, null + br i1 %.not.i154, label %proto_item_set_generated.exit141, label %137 -138: ; preds = %136 - %139 = getelementptr inbounds nuw i8, ptr %137, i64 40 - %140 = load ptr, ptr %139, align 8 - %.not5.i155 = icmp eq ptr %140, null - br i1 %.not5.i155, label %proto_item_set_generated.exit141, label %141 +137: ; preds = %135 + %138 = getelementptr inbounds nuw i8, ptr %136, i64 40 + %139 = load ptr, ptr %138, align 8 + %.not5.i155 = icmp eq ptr %139, null + br i1 %.not5.i155, label %proto_item_set_generated.exit141, label %140 -141: ; preds = %138 - %142 = getelementptr inbounds nuw i8, ptr %140, i64 28 - %143 = load i32, ptr %142, align 4 - %144 = or i32 %143, 2 - store i32 %144, ptr %142, align 4 +140: ; preds = %137 + %141 = getelementptr inbounds nuw i8, ptr %139, i64 28 + %142 = load i32, ptr %141, align 4 + %143 = or i32 %142, 2 + store i32 %143, ptr %141, align 4 br label %proto_item_set_generated.exit141 -proto_item_set_generated.exit141: ; preds = %141, %138, %136, %97, %94, %92, %85, %82, %80, %63, %60, %57, %51, %48, %46, %135, %111, %112, %91, %79, %132, %._crit_edge, %proto_item_set_generated.exit +proto_item_set_generated.exit141: ; preds = %140, %137, %135, %97, %94, %92, %85, %82, %80, %63, %60, %57, %51, %48, %46, %134, %111, %112, %91, %79, %131, %._crit_edge, %proto_item_set_generated.exit %.0111 = phi ptr [ %38, %proto_item_set_generated.exit ], [ %73, %._crit_edge ], [ %38, %51 ], [ %73, %112 ], [ %73, %111 ], [ %59, %63 ], [ %73, %135 ], [ %73, %97 ], [ %73, %91 ], [ %73, %85 ], [ %73, %79 ], [ %73, %132 ], [ %38, %46 ], [ %38, %48 ], [ null, %57 ], [ %59, %60 ], [ %73, %80 ], [ %73, %82 ], [ %73, %92 ], [ %73, %94 ], [ %73, %136 ], [ %73, %138 ], [ %73, %141 ] ret ptr %.0111 } diff --git a/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll b/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll index 59ab8f7debf..cfc9045c6fb 100644 --- a/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll +++ b/bench/yara-x-rs/optimized/8prs9ypeqrggu5mcc8i3onesd.ll @@ -390215,7 +390215,7 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 store ptr null, ptr %0, align 8 br label %28 -28: ; preds = %101, %80, %36, %35, %_ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread +28: ; preds = %100, %79, %36, %35, %_ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread ret void 29: ; preds = %_ZN9psl_types4List6suffix17haa67183b2c716d12E.exit @@ -390264,7 +390264,7 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 %.sroa.618.0 = select i1 %.not71.not.not, ptr %1, ptr %.sroa.442.0.copyload call void @llvm.lifetime.end.p0(ptr nonnull %6) %spec.select75 = select i1 %.not71.not.not, ptr %1, ptr null - br i1 %.not71.not.not, label %40, label %80 + br i1 %.not71.not.not, label %40, label %79 40: ; preds = %37 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !10931 @@ -390300,17 +390300,17 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 %60 = trunc nuw i64 %59 to i1 br i1 %60, label %61, label %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" -61: ; preds = %47 +61:; preds = %47 %62 = extractvalue { i64, i64 } %58, 1 - %63 = load i64, ptr %42, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 + %64 = load i64, ptr %42, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 %64 = add i64 %63, %62 %65 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 %66 = zext i8 %65 to i64 %67 = add nsw i64 %66, -1 %.not14.i.i = icmp ult i64 %64, %67 - br i1 %.not14.i.i, label %68, label %71 + br i1 %.not14.i.i, label %68, label %70 -68: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i", %71, %61 +68:; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i", %70, %61 %69 = phi i64 [ %.pre.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" ], [ %63, %71 ], [ %63, %61 ] store i64 %64, ptr %43, align 8, !alias.scope !10940, !noalias !10943 %70 = icmp ult i64 %64, %69 @@ -390318,26 +390318,26 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 %or.cond.i.i = or i1 %.not.i.i, %70 br i1 %or.cond.i.i, label %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread", label %47 -71: ; preds = %61 - %72 = sub nuw i64 %64, %67 - %73 = add i64 %72, %66 - %74 = icmp ult i64 %73, %72 - %.not15.i.i = icmp ugt i64 %73, %38 - %or.cond16.i.i = or i1 %74, %.not15.i.i - br i1 %or.cond16.i.i, label %68, label %75 +70: ; preds = %61 + %71 = sub nuw i64 %64, %67 + %72 = add i64 %71, %66 + %73 = icmp ult i64 %72, %71 + %.not15.i.i = icmp ugt i64 %72, %38 + %or.cond16.i.i = or i1 %73, %.not15.i.i + br i1 %or.cond16.i.i, label %68, label %74 -75: ; preds = %71 - %76 = icmp ugt i8 %65, 4 - br i1 %76, label %77, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i", !prof !10837 +74: ; preds = %70 + %75 = icmp ugt i8 %65, 4 + br i1 %75, label %76, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i", !prof !10837 -77: ; preds = %75 +76: ; preds = %74 call void @_ZN4core5slice5index24slice_end_index_len_fail17heb50b9bbe4663132E(i64 noundef range(i64 0, 256) %66, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4ab27f9ebae99a76f53542c5005a6483.33) #14, !noalias !10946 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i": ; preds = %75 - %78 = getelementptr inbounds nuw i8, ptr %1, i64 %72 - %79 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %78, i64 noundef %66, ptr noalias noundef nonnull readonly align 1 %46, i64 noundef %66), !noalias !10945 - br i1 %79, label %81, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i": ; preds = %74 + %77 = getelementptr inbounds nuw i8, ptr %1, i64 %71 + %78 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %77, i64 noundef %66, ptr noalias noundef nonnull readonly align 1 %46, i64 noundef %66), !noalias !10945 + br i1 %78, label %80, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i" "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit._crit_edge.i.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i" %.pre.i.i = load i64, ptr %42, align 8, !alias.scope !10940, !noalias !10943 @@ -390345,54 +390345,54 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 "_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread": ; preds = %47, %68 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !10931 - br label %87 + br label %86 -80: ; preds = %37 +79: ; preds = %37 store ptr null, ptr %0, align 8 br label %28 -81: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i" - %82 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 - %83 = zext i8 %82 to i64 - %84 = add i64 %72, %83 +80: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h04a6b3a4041a06e8E.exit.i.i" + %81 = load i8, ptr %45, align 8, !alias.scope !10940, !noalias !10943, !noundef !11 + %82 = zext i8 %81 to i64 + %83 = add i64 %71, %82 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !10931 - %85 = sub nuw i64 %38, %84 - %86 = getelementptr inbounds nuw i8, ptr %spec.select75, i64 %84 - br label %87 + %84 = sub nuw i64 %38, %83 + %85 = getelementptr inbounds nuw i8, ptr %spec.select75, i64 %83 + br label %86 -87: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread", %81 - %.sroa.5.087 = phi i64 [ %72, %81 ], [ undef, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] +86: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread", %80 + %.sroa.5.087 = phi i64 [ %71, %81 ], [ undef, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] %.sroa.044.0 = phi ptr [ %.sroa.618.0, %81 ], [ null, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %.sroa.046.0 = phi ptr [ %86, %81 ], [ %spec.select75, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %.sroa.12.0 = phi i64 [ %85, %81 ], [ %38, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] - %88 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.55, i64 noundef 3) - br i1 %88, label %102, label %89 + %.sroa.046.0 = phi ptr [ %85, %81 ], [ %spec.select75, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] + %.sroa.12.0 = phi i64 [ %84, %81 ], [ %38, %"_ZN4core3str21_$LT$impl$u20$str$GT$11rsplit_once17h7baac113857833b7E.exit.thread" ] + %87 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.55, i64 noundef 3) + br i1 %87, label %101, label %88 -89: ; preds = %87 - %90 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.56, i64 noundef 3) - br i1 %90, label %102, label %91 +88: ; preds = %86 + %89 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.56, i64 noundef 3) + br i1 %89, label %101, label %90 -91: ; preds = %89 - %92 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.57, i64 noundef 1) - br i1 %92, label %102, label %93 +90: ; preds = %88 + %91 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.57, i64 noundef 1) + br i1 %91, label %101, label %92 -93: ; preds = %91 - %94 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.58, i64 noundef 4) - br i1 %94, label %102, label %95 +92: ; preds = %90 + %93 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.58, i64 noundef 4) + br i1 %93, label %101, label %94 -95: ; preds = %93 - %96 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.59, i64 noundef 7) - br i1 %96, label %102, label %97 +94: ; preds = %92 + %95 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.59, i64 noundef 7) + br i1 %95, label %101, label %96 -97: ; preds = %95 - %98 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.60, i64 noundef 3) - br i1 %98, label %102, label %99 +96: ; preds = %94 + %97 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.60, i64 noundef 3) + br i1 %97, label %101, label %98 -99: ; preds = %97 - %100 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.61, i64 noundef 3) - br i1 %100, label %102, label %101 +98: ; preds = %96 + %99 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h4378f96f9e276f75E"(ptr noalias noundef nonnull readonly align 1 %.sroa.046.0, i64 noundef %.sroa.12.0, ptr noalias noundef nonnull readonly align 1 @anon.4ab27f9ebae99a76f53542c5005a6483.61, i64 noundef 3) + br i1 %99, label %101, label %100 -101: ; preds = %102, %99 +100: ; preds = %101, %98 %.sroa.044.1 = phi ptr [ %.sroa.046.0, %102 ], [ %.sroa.044.0, %99 ] %.sroa.445.1 = phi i64 [ %.sroa.12.0, %102 ], [ %.sroa.5.087, %99 ] %.sroa.046.1 = phi ptr [ null, %102 ], [ %.sroa.046.0, %99 ] @@ -390413,8 +390413,8 @@ _ZN9psl_types4List6suffix17haa67183b2c716d12E.exit.thread: ; preds = %24 store i64 %.sroa.12.0, ptr %.sroa.1032.0..sroa_idx, align 8 br label %28 -102: ; preds = %87, %89, %91, %93, %95, %97, %99 - br label %101 +101: ; preds = %86, %88, %90, %92, %94, %96, %98 + br label %100 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll b/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll index f201949e613..c0c6e0ce979 100644 --- a/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll +++ b/bench/zed-rs/optimized/0pbj35jdb0n0bb6blyk493qkr.ll @@ -14902,7 +14902,7 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17hf %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 %6 = load i64, ptr %5, align 8, !noundef !4 %7 = icmp eq i64 %6, 0 - br i1 %7, label %24, label %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit + br i1 %7, label %21, label %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit: ; preds = %4 %8 = add i64 %6, 1 @@ -14928,7 +14928,7 @@ _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.l tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %15, i64 noundef %3) #37 br label %24 -24: ; preds = %4, %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit +21: ; preds = %4, %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17hc48ee78c4b12348aE.llvm.17066669856223443129.exit ret void } diff --git a/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll b/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll index a112445915e..c7925dc2632 100644 --- a/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll +++ b/bench/zed-rs/optimized/160h40gmjuq6w4py8cgz7ceyb.ll @@ -7102,8 +7102,8 @@ define internal fastcc void @"_ZN4core3ptr93drop_in_place$LT$alloc..boxed..Box$L cleanup %14 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %14) - %15 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %16 = load i64, ptr %15, align 8, !range !606, !invariant.load !4 + %16 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %17 = load i64, ptr %16, align 8, !range !606, !invariant.load !4 %17 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 %18 = load i64, ptr %17, align 8, !range !607, !invariant.load !4 %19 = icmp ult i64 %18, -9223372036854775807 diff --git a/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll b/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll index feb84244fdd..68150dd785b 100644 --- a/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll +++ b/bench/zed-rs/optimized/9zapxybzyqo7as5l1oow5wvsl.ll @@ -876,9 +876,9 @@ _ZN9hashbrown3raw13RawTableInner16find_insert_slot17hd5499c650fb46ed7E.exit: ; p tail call void @llvm.experimental.noalias.scope.decl(metadata !175) %.val11.i = load ptr, ptr %0, align 8, !alias.scope !175 %.not5.i.i = icmp eq i64 %15, 0 - br i1 %.not5.i.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread18.i, label %.lr.ph.i.i + br i1 %.not5.i.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread19.i, label %.lr.ph.i.i -_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread18.i: ; preds = %130 +_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread19.i: ; preds = %130 %131 = icmp ne ptr %.val11.i, null tail call void @llvm.assume(i1 %131) br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit @@ -894,10 +894,10 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.ex br label %137 ._crit_edge.i.i: ; preds = %137 - %..i = tail call i64 @llvm.umax.i64(i64 %15, i64 16) - %.24.i = tail call i64 @llvm.umin.i64(i64 %15, i64 16) - %136 = getelementptr inbounds i8, ptr %.val11.i, i64 %..i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %136, ptr nonnull align 1 %.val11.i, i64 %.24.i, i1 false), !noalias !175 + %spec.select.i = tail call i64 @llvm.umax.i64(i64 %15, i64 16) + %spec.select25.i = tail call i64 @llvm.umin.i64(i64 %15, i64 16) + %136 = getelementptr inbounds i8, ptr %.val11.i, i64 %spec.select.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %136, ptr nonnull align 1 %.val11.i, i64 %spec.select25.i, i1 false), !noalias !175 br label %144 137: ; preds = %137, %.lr.ph.i.i @@ -1040,7 +1040,7 @@ _ZN9hashbrown3raw13RawTableInner16find_insert_slot17hd5499c650fb46ed7E.exit.i: ; %exitcond.not.i = icmp eq i64 %.sroa.0.08.i, %13 br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit, label %144 -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit: ; preds = %210, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread18.i +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h3136a4fc5ae63fadE.exit: ; preds = %210, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h050e4510560d0497E.exit.thread19.i %211 = getelementptr inbounds nuw i8, ptr %0, i64 16 %212 = sub i64 %.sroa.03.0.i, %7 store i64 %212, ptr %211, align 8, !alias.scope !175 diff --git a/bench/zxing/optimized/ODDataBarReader.ll b/bench/zxing/optimized/ODDataBarReader.ll index 50b26bf48e3..4069b7c1e8d 100644 --- a/bench/zxing/optimized/ODDataBarReader.ll +++ b/bench/zxing/optimized/ODDataBarReader.ll @@ -897,17 +897,17 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.ex br i1 %311, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %312 = icmp ult i64 %307, 16 - call void @llvm.assume(i1 %312) + %.not.i.i.i114 = icmp ult i64 %307, 16 + call void @llvm.assume(i1 %.not.i.i.i114) %.not.i.i.i114 = icmp eq i64 %307, 15 br i1 %.not.i.i.i114, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, label %337 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i.i - %313 = load i64, ptr %292, align 8, !alias.scope !60 - %.not.i.i.i114178 = icmp ugt i64 %309, %313 + %312 = load i64, ptr %292, align 8, !alias.scope !60 + %.not.i.i.i114178 = icmp ugt i64 %309, %312 br i1 %.not.i.i.i114178, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, label %337 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i +313: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i %314 = load i64, ptr %292, align 8, !alias.scope !60 br label %317 @@ -916,14 +916,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred br i1 %315, label %.invoke, label %317 .invoke: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i - %316 = phi ptr [ @.str.4, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i ], [ @.str.2, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] - invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %316) #23 + %318 = phi ptr [ @.str.4, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i ], [ @.str.2, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] + invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %318) #23 to label %.cont unwind label %331 .cont: ; preds = %.invoke unreachable -317: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i +319: ; preds = %313, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i %318 = phi i64 [ 15, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %313, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %319 = phi i64 [ %314, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.thread ], [ %313, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i ] %320 = shl nuw i64 %318, 1 @@ -934,14 +934,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i: ; pred %323 = icmp slt i64 %322, 0 br i1 %323, label %324, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i, !prof !63 -324: ; preds = %317 +324: ; preds = %319 invoke void @_ZSt17__throw_bad_allocv() #23 to label %.noexc132 unwind label %331 .noexc132: ; preds = %324 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %317 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i: ; preds = %319 %325 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %322) #21 to label %.noexc133 unwind label %331