From cc04a435bc884265a3f70af22143568d700e2112 Mon Sep 17 00:00:00 2001 From: fhahn <450489+fhahn@users.noreply.github.com> Date: Sun, 22 Dec 2024 23:38:30 +0800 Subject: [PATCH 1/2] pre-commit: PR120888 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..4f43af5e3c1 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/120888 export COMPTIME_MODE=0 # Please rebase manually From e89d924765d77ad3a8290c4aed871a9d9df57b8d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:03:27 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/abc/optimized/FxchMan.c.ll | 1 + bench/abseil-cpp/optimized/cord_test.cc.ll | 16 +-- bench/actix-rs/optimized/4zcw438fefceam0r.ll | 65 +++++------ bench/arrow/optimized/expression.cc.ll | 5 +- bench/box2d/optimized/b2_collide_edge.cpp.ll | 5 + bench/box2d/optimized/b2_collision.cpp.ll | 27 ++--- bench/box2d/optimized/b2_polygon_shape.cpp.ll | 39 +++---- bench/bullet3/optimized/b3GjkEpa.ll | 30 +++--- bench/bullet3/optimized/btConvexHull.ll | 5 +- .../optimized/btMultiBodySliderConstraint.ll | 20 ++-- bench/c3c/optimized/parse_stmt.c.ll | 3 +- bench/c3c/optimized/sema_decls.c.ll | 19 ++-- bench/c3c/optimized/types.c.ll | 31 +++--- bench/casadi/optimized/symbolic_qr.cpp.ll | 14 +-- bench/ceres/optimized/cgnr_solver.cc.ll | 44 ++++---- .../optimized/schur_complement_solver.cc.ll | 23 ++-- bench/chibicc/optimized/parse.ll | 15 +-- bench/clamav/optimized/gpt.c.ll | 4 +- .../optimized/29af07t0g5n4ob25.ll | 4 +- bench/cpython/optimized/_cursesmodule.ll | 58 +++++++--- bench/cpython/optimized/memoryobject.ll | 18 ++-- bench/csmith/optimized/StatementGoto.cpp.ll | 58 +++++----- bench/curl/optimized/libcurl_la-ftp.ll | 23 ++-- bench/curl/optimized/libcurl_la-smtp.ll | 9 +- .../optimized/introspection_demosaic.c.ll | 8 ++ .../optimized/introspection_retouch.c.ll | 22 ++-- bench/delta-rs/optimized/c3ex4j3d7dkyaj3.ll | 19 ++-- bench/delta-rs/optimized/rqh7tdav00zdgx4.ll | 21 ++-- bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll | 41 ++++--- bench/diesel-rs/optimized/4evqpcg6dxygah01.ll | 25 +++-- .../double_conversion/optimized/bignum.cc.ll | 21 ++-- .../optimized/TestSegmentedVector.cpp.ll | 6 +- bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll | 3 +- bench/egg-rs/optimized/3vlwzyp0day7srdg.ll | 45 ++++---- bench/egg-rs/optimized/ptoyfq63qf7sowp.ll | 14 ++- bench/flac/optimized/fixed_intrin_avx2.c.ll | 32 ++++-- bench/flac/optimized/replaygain_analysis.c.ll | 45 ++++---- .../optimized/binary_annotator.cpp.ll | 9 +- .../flatbuffers/optimized/idl_gen_cpp.cpp.ll | 21 ++-- bench/fmt/optimized/ostream-test.cc.ll | 25 ++--- bench/freetype/optimized/sdf.c.ll | 62 ++++++----- .../g2o/optimized/estimate_propagator.cpp.ll | 17 ++- bench/g2o/optimized/hyper_graph.cpp.ll | 36 +++---- .../marginal_covariance_cholesky.cpp.ll | 47 ++++---- bench/git/optimized/path.ll | 39 ++++--- bench/graphviz/optimized/labels.c.ll | 11 +- bench/hyperscan/optimized/fdr.c.ll | 12 ++- .../optimized/shortcut_literal.cpp.ll | 7 +- bench/imgui/optimized/imgui_demo.cpp.ll | 29 ++--- .../influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll | 71 ++++++------ bench/jemalloc/optimized/eset.ll | 4 + bench/jq/optimized/regparse.ll | 97 +++++++++-------- bench/jsonnet/optimized/vm.cpp.ll | 80 +++++++++----- bench/libevent/optimized/evutil_rand.c.ll | 84 ++++++++------- bench/libjpeg-turbo/optimized/jdmainct.c.ll | 51 +++++---- bench/libjpeg-turbo/optimized/jdsample.c.ll | 51 ++++----- bench/libquic/optimized/quic_session.cc.ll | 12 ++- .../libsodium_la-argon2-fill-block-ref.ll | 9 +- .../optimized/libsodium_la-poly1305_donna.ll | 26 +++-- bench/libwebp/optimized/buffer_dec.c.ll | 35 +++--- bench/lua/optimized/ltable.ll | 77 ++++++------- bench/lvgl/optimized/lv_tlsf.ll | 68 ++++++------ .../optimized/4spgntyrk3g2e624.ll | 60 +++++------ .../optimized/memcached-memcached.ll | 66 ++++++------ .../optimized/qualitymapperdialog.cpp.ll | 7 ++ .../optimized/indexgenerator.cpp.ll | 6 +- .../optimized/vcacheanalyzer.cpp.ll | 45 ++++---- .../mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll | 34 +++--- bench/mold/optimized/arch-arm64.cc.ll | 16 +-- .../arch-loongarch.cc.LOONGARCH32.cc.ll | 13 ++- bench/msdfgen/optimized/main.cpp.ll | 24 ++--- .../optimized/sdf-error-estimation.cpp.ll | 10 ++ bench/ncnn/optimized/pixelshuffle.cpp.ll | 36 ++++--- bench/ncnn/optimized/roipooling.cpp.ll | 32 +++--- bench/ninja/optimized/graph.cc.ll | 6 ++ .../optimized/unit-element_access1.cpp.ll | 14 +++ .../optimized/unit-element_access2.cpp.ll | 2 + bench/node/optimized/libnode.node_builtins.ll | 31 +++--- bench/nori/optimized/imagepanel.cpp.ll | 57 +++++----- bench/nori/optimized/tabwidget.cpp.ll | 10 +- .../ocio/optimized/GradingBSplineCurve.cpp.ll | 32 +++--- bench/ocio/optimized/XMLReaderHelper.cpp.ll | 29 +++-- .../openexr/optimized/ImfDwaCompressor.cpp.ll | 34 +++--- .../optimized/ImfTiledOutputFile.cpp.ll | 26 +++-- bench/openexr/optimized/internal_huf.c.ll | 19 ++-- bench/openjdk/optimized/vmError_posix.ll | 7 +- bench/openmpi/optimized/rmaps_base_map_job.ll | 7 +- bench/openvdb/optimized/RayTracer.cc.ll | 10 +- bench/pbrt-v4/optimized/pspec.cpp.ll | 42 ++++---- bench/pbrt-v4/optimized/subsurface.cpp.ll | 34 ++++-- bench/proj/optimized/molodensky.cpp.ll | 84 ++++++++------- .../eigen_tensor_avoid_stl_array.cpp.ll | 34 +++--- bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll | 16 ++- bench/qdrant-rs/optimized/4x6lbqvtsqiieqxe.ll | 67 ++++++------ bench/quest/optimized/QuEST_common.c.ll | 37 +++---- bench/rayon-rs/optimized/4ht8xefeo0zr8mzr.ll | 23 ++-- .../optimized/DetourCrowd.cpp.ll | 66 ++++++------ bench/regex-rs/optimized/12jtvy3iayrg5nam.ll | 20 ++-- bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll | 72 +++++++------ .../ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll | 15 +++ .../ripgrep-rs/optimized/1rzxgyr0fo8f0ob1.ll | 8 +- .../ripgrep-rs/optimized/3xecgmndlg4aprp5.ll | 31 +++--- bench/ropey-rs/optimized/1pm5yglvzoctacuo.ll | 8 +- .../optimized/43nczfbfdd1c6gc3.ll | 5 +- .../optimized/4s35iu99nk8vtuto.ll | 13 ++- bench/slurm/optimized/sort.ll | 75 ++++++------- ...ycpu_top___024root__DepSet_hcf0db31f__0.ll | 10 +- bench/stat-rs/optimized/u5boppws0o3vklz.ll | 101 +++++++++--------- .../optimized/stb_connected_components.c.ll | 52 ++++----- bench/stb/optimized/stb_voxel_render.c.ll | 59 +++++----- bench/stockfish/optimized/search.ll | 16 ++- bench/sundials/optimized/sundials_band.c.ll | 47 ++++---- bench/sundials/optimized/sundials_dense.c.ll | 43 ++++---- bench/tokio-rs/optimized/5cdni0zdopovrkgi.ll | 65 ++++++----- .../optimized/29jobt8pkdzk3dof.ll | 85 ++++++++------- .../optimized/4vdzcrqmrfs3duezq953b12ub.ll | 76 ++++++------- bench/typst-rs/optimized/w6iknwszr5npyaz.ll | 83 +++++++------- bench/verilator/optimized/V3CCtors.cpp.ll | 13 +-- .../wasmtime-rs/optimized/456j0x8j3xyjpk7h.ll | 38 +++---- bench/wireshark/optimized/packet-btmesh.c.ll | 24 ++--- bench/wireshark/optimized/packet-h265.c.ll | 15 ++- bench/wolfssl/optimized/aes.c.ll | 73 ++++++++----- bench/wolfssl/optimized/coding.c.ll | 17 +-- .../binary_json_conformance_suite.cc.ll | 11 ++ .../optimized/conformance_struct_pb.cc.ll | 3 + .../yaml-cpp/optimized/ostream_wrapper.cpp.ll | 18 ++-- bench/yaml-cpp/optimized/simplekey.cpp.ll | 28 +++-- bench/yoga/optimized/YGNode.cpp.ll | 79 +++++++------- bench/zstd/optimized/zstd_ldm.c.ll | 37 ++++--- bench/zxing/optimized/DMDetector.cpp.ll | 17 +-- 130 files changed, 2242 insertions(+), 1869 deletions(-) diff --git a/bench/abc/optimized/FxchMan.c.ll b/bench/abc/optimized/FxchMan.c.ll index 14261d5f023..7d6db525c52 100644 --- a/bench/abc/optimized/FxchMan.c.ll +++ b/bench/abc/optimized/FxchMan.c.ll @@ -1389,6 +1389,7 @@ define internal fastcc void @Fxch_ManDivSingleCube(ptr noundef %0, i32 noundef % %14 = getelementptr inbounds nuw i8, ptr %0, i64 112 %.not = icmp eq i32 %2, 0 %15 = getelementptr inbounds nuw i8, ptr %0, i64 200 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %11, i64 0) ] br label %17 .critedge2.loopexit.loopexit: ; preds = %.loopexit diff --git a/bench/abseil-cpp/optimized/cord_test.cc.ll b/bench/abseil-cpp/optimized/cord_test.cc.ll index 10ccff9747a..b895e37c0d5 100644 --- a/bench/abseil-cpp/optimized/cord_test.cc.ll +++ b/bench/abseil-cpp/optimized/cord_test.cc.ll @@ -65208,16 +65208,16 @@ for.body600: ; preds = %invoke.cont598 store i64 %retval.sroa.0.0.copyload.i, ptr %chunk, align 8 store ptr %retval.sroa.2.0.copyload.i, ptr %376, align 8 %cmp.i9311161 = icmp eq i64 %retval.sroa.0.0.copyload.i, 0 - br i1 %cmp.i9311161, label %for.inc631, label %while.body605.preheader + br i1 %cmp.i9311161, label %for.inc631, label %while.body605.lr.ph -while.body605.preheader: ; preds = %for.body600 +while.body605.lr.ph: ; preds = %for.body600 %retval.sroa.0.0.copyload.i.i.pre = load i64, ptr %it589, align 8 br label %while.body605 -while.body605: ; preds = %while.body605.preheader, %_ZN4absl4Cord12CharIteratorppEv.exit969 - %agg.tmp1.sroa.2.0.copyload.i.i = phi ptr [ %add.ptr.i, %_ZN4absl4Cord12CharIteratorppEv.exit969 ], [ %retval.sroa.2.0.copyload.i, %while.body605.preheader ] - %retval.sroa.0.0.copyload.i.i = phi i64 [ %retval.sroa.0.0.copyload.i.i1174, %_ZN4absl4Cord12CharIteratorppEv.exit969 ], [ %retval.sroa.0.0.copyload.i.i.pre, %while.body605.preheader ] - %379 = phi i64 [ %sub.i, %_ZN4absl4Cord12CharIteratorppEv.exit969 ], [ %retval.sroa.0.0.copyload.i, %while.body605.preheader ] +while.body605: ; preds = %while.body605.lr.ph, %_ZN4absl4Cord12CharIteratorppEv.exit969 + %agg.tmp1.sroa.2.0.copyload.i.i = phi ptr [ %retval.sroa.2.0.copyload.i, %while.body605.lr.ph ], [ %add.ptr.i, %_ZN4absl4Cord12CharIteratorppEv.exit969 ] + %retval.sroa.0.0.copyload.i.i = phi i64 [ %retval.sroa.0.0.copyload.i.i.pre, %while.body605.lr.ph ], [ %retval.sroa.0.0.copyload.i.i1174, %_ZN4absl4Cord12CharIteratorppEv.exit969 ] + %379 = phi i64 [ %retval.sroa.0.0.copyload.i, %while.body605.lr.ph ], [ %sub.i, %_ZN4absl4Cord12CharIteratorppEv.exit969 ] %retval.sroa.2.0.copyload.i.i = load ptr, ptr %retval.sroa.2.0.current_chunk_.sroa_idx.i.i, align 8 store i64 %retval.sroa.0.0.copyload.i.i, ptr %ref.tmp607, align 8 store ptr %retval.sroa.2.0.copyload.i.i, ptr %377, align 8 @@ -78910,6 +78910,7 @@ _ZN4absl13cord_internal8EdgeDataEPKNS0_7CordRepE.exit.i.i2205: ; preds = %cond.f invoke.cont874.thread: ; preds = %if.then.i2188 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %ref.tmp873, i8 0, i64 16, i1 false) + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ref.tmp873, i64 64) ] br label %_ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1400.thread2897 if.else6.i2270: ; preds = %for.end869 @@ -78924,6 +78925,7 @@ invoke.cont874: ; preds = %_ZN4absl13cord_inte %retval.sroa.3.0.i.sink.i.i2210.sink = phi ptr [ %spec.select.i.i2275, %if.else6.i2270 ], [ %retval.sroa.3.0.i.i.i2207, %_ZN4absl13cord_internal8EdgeDataEPKNS0_7CordRepE.exit.i.i2205 ], [ %retval.sroa.3.0.i.i.i.i2257, %_ZN4absl13cord_internal18CordRepBtreeReader4InitEPNS0_12CordRepBtreeE.exit.i.i2255 ] store i64 %.sink.i.i2209.sink, ptr %ref.tmp873, align 8 store ptr %retval.sroa.3.0.i.sink.i.i2210.sink, ptr %ref.tmp4.sroa.2.0.current_chunk_6.sroa_idx.i.i2211, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ref.tmp873, i64 64) ] %cmp.not.i1396 = icmp ult i64 %.sink.i.i2209.sink, 5 br i1 %cmp.not.i1396, label %_ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1400.thread2897, label %_ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1400 @@ -79970,10 +79972,12 @@ if.then5.i.i1543.invoke.cont978_crit_edge: ; preds = %if.then5.i.i1543 invoke.cont978.thread: ; preds = %if.else.i.i1532, %_ZNK4absl13cord_internal18CordRepBtreeReadercvbEv.exit.i.i1538 store i64 0, ptr %bytes_remaining_.i2377, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %char_it, i64 64) ] br label %_ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1560.thread2912 invoke.cont978: ; preds = %if.then5.i.i1543.invoke.cont978_crit_edge, %if.then.i.i1544 %retval.sroa.0.0.copyload.i.i = phi i64 [ %retval.sroa.0.0.copyload.i.i.pre, %if.then5.i.i1543.invoke.cont978_crit_edge ], [ %sub.i.i.i.i1547, %if.then.i.i1544 ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %char_it, i64 64) ] %cmp.not.i1556 = icmp ult i64 %retval.sroa.0.0.copyload.i.i, 3 br i1 %cmp.not.i1556, label %_ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1560.thread2912, label %_ZN4absl10StartsWithESt17basic_string_viewIcSt11char_traitsIcEES3_.exit1560 diff --git a/bench/actix-rs/optimized/4zcw438fefceam0r.ll b/bench/actix-rs/optimized/4zcw438fefceam0r.ll index ed32a94b75b..f26a01b2a69 100644 --- a/bench/actix-rs/optimized/4zcw438fefceam0r.ll +++ b/bench/actix-rs/optimized/4zcw438fefceam0r.ll @@ -4838,8 +4838,9 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h2b1d65e28ce br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4 - %37 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %38 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %37 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %38 = getelementptr inbounds nuw i8, ptr %1, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %37, i64 0) ] %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %34, i64 8 %.sroa.58.0..sroa_idx = getelementptr inbounds nuw i8, ptr %34, i64 12 %.sroa.5.0..sroa_idx2.i = getelementptr inbounds nuw i8, ptr %31, i64 8 @@ -4932,7 +4933,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h2b1d65e28ce 92: ; preds = %.lr.ph, %266 %.069 = phi i64 [ 0, %.lr.ph ], [ %.1, %266 ] %.02368 = phi i64 [ %36, %.lr.ph ], [ %.124, %266 ] - %93 = load i64, ptr %37, align 8, !alias.scope !479, !noundef !4 + %93 = load i64, ptr %38, align 8, !alias.scope !479, !noundef !4 %.not.i.not = icmp ult i64 %.069, %93 br i1 %.not.i.not, label %96, label %95 @@ -4944,7 +4945,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h2b1d65e28ce unreachable 96: ; preds = %92 - %97 = load ptr, ptr %38, align 8, !alias.scope !479, !nonnull !4 + %97 = load ptr, ptr %37, align 8, !alias.scope !479, !nonnull !4 %98 = getelementptr inbounds { i64, i32, i32 }, ptr %97, i64 %.069 %99 = getelementptr inbounds nuw i8, ptr %98, i64 8 %100 = getelementptr inbounds nuw i8, ptr %98, i64 12 @@ -5467,8 +5468,9 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h36989e10fc0 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3 - %7 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %8 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %7 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %8 = getelementptr inbounds nuw i8, ptr %1, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %7, i64 0) ] %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.58.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 12 %9 = load ptr, ptr %2, align 8, !nonnull !4, !align !61 @@ -5489,7 +5491,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h36989e10fc0 18: ; preds = %.lr.ph, %36 %.045 = phi i64 [ 0, %.lr.ph ], [ %.1, %36 ] %.02344 = phi i64 [ %6, %.lr.ph ], [ %.124, %36 ] - %19 = load i64, ptr %7, align 8, !alias.scope !518, !noundef !4 + %19 = load i64, ptr %8, align 8, !alias.scope !518, !noundef !4 %.not.i.not = icmp ult i64 %.045, %19 br i1 %.not.i.not, label %22, label %21 @@ -5501,7 +5503,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h36989e10fc0 unreachable 22: ; preds = %18 - %23 = load ptr, ptr %8, align 8, !alias.scope !518, !nonnull !4 + %23 = load ptr, ptr %7, align 8, !alias.scope !518, !nonnull !4 %24 = getelementptr inbounds { i64, i32, i32 }, ptr %23, i64 %.045 %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 %26 = getelementptr inbounds nuw i8, ptr %24, i64 12 @@ -5560,8 +5562,9 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h8cf68fb1257 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %7, i64 0) ] %.sroa.4.0..sroa_idx15 = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 12 %9 = load ptr, ptr %1, align 8, !nonnull !4, !align !61 @@ -5579,7 +5582,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h8cf68fb1257 16: ; preds = %.lr.ph, %19 %.017 = phi i64 [ 0, %.lr.ph ], [ %.1, %19 ] %.01316 = phi i64 [ %6, %.lr.ph ], [ %.114, %19 ] - %17 = load i64, ptr %7, align 8, !alias.scope !527, !noundef !4 + %17 = load i64, ptr %8, align 8, !alias.scope !527, !noundef !4 %.not.i.not = icmp ult i64 %.017, %17 br i1 %.not.i.not, label %19, label %18 @@ -5588,7 +5591,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17h8cf68fb1257 unreachable 19: ; preds = %16 - %20 = load ptr, ptr %8, align 8, !alias.scope !527, !nonnull !4 + %20 = load ptr, ptr %7, align 8, !alias.scope !527, !nonnull !4 %21 = getelementptr inbounds { i64, i32, i32 }, ptr %20, i64 %.017 %22 = getelementptr inbounds nuw i8, ptr %21, i64 8 %23 = getelementptr inbounds nuw i8, ptr %21, i64 12 @@ -5638,8 +5641,9 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17hb096cc980ae br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %9 = getelementptr inbounds nuw i8, ptr %0, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %8, i64 0) ] %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 12 %10 = load ptr, ptr %1, align 8, !nonnull !4, !align !517 @@ -5661,7 +5665,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17hb096cc980ae 19: ; preds = %.lr.ph, %"_ZN2h25proto7streams5store5Store8for_each28_$u7b$$u7b$closure$u7d$$u7d$17h63ea681ee5b38a8dE.exit" %.021 = phi i64 [ 0, %.lr.ph ], [ %.1, %"_ZN2h25proto7streams5store5Store8for_each28_$u7b$$u7b$closure$u7d$$u7d$17h63ea681ee5b38a8dE.exit" ] %.01320 = phi i64 [ %7, %.lr.ph ], [ %.114, %"_ZN2h25proto7streams5store5Store8for_each28_$u7b$$u7b$closure$u7d$$u7d$17h63ea681ee5b38a8dE.exit" ] - %20 = load i64, ptr %8, align 8, !alias.scope !554, !noundef !4 + %20 = load i64, ptr %9, align 8, !alias.scope !554, !noundef !4 %.not.i.not = icmp ult i64 %.021, %20 br i1 %.not.i.not, label %22, label %21 @@ -5670,7 +5674,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17hb096cc980ae unreachable 22: ; preds = %19 - %23 = load ptr, ptr %9, align 8, !alias.scope !554, !nonnull !4 + %23 = load ptr, ptr %8, align 8, !alias.scope !554, !nonnull !4 %24 = getelementptr inbounds { i64, i32, i32 }, ptr %23, i64 %.021 %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 %26 = getelementptr inbounds nuw i8, ptr %24, i64 12 @@ -5735,8 +5739,9 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17hef44caf1a5b br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %7, i64 0) ] %.sroa.4.0..sroa_idx15 = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 12 %9 = load ptr, ptr %1, align 8, !nonnull !4, !align !61 @@ -5752,7 +5757,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17hef44caf1a5b 14: ; preds = %.lr.ph, %17 %.017 = phi i64 [ 0, %.lr.ph ], [ %.1, %17 ] %.01316 = phi i64 [ %6, %.lr.ph ], [ %.114, %17 ] - %15 = load i64, ptr %7, align 8, !alias.scope !583, !noundef !4 + %15 = load i64, ptr %8, align 8, !alias.scope !583, !noundef !4 %.not.i.not = icmp ult i64 %.017, %15 br i1 %.not.i.not, label %17, label %16 @@ -5761,7 +5766,7 @@ define hidden void @_ZN2h25proto7streams5store5Store12try_for_each17hef44caf1a5b unreachable 17: ; preds = %14 - %18 = load ptr, ptr %8, align 8, !alias.scope !583, !nonnull !4 + %18 = load ptr, ptr %7, align 8, !alias.scope !583, !nonnull !4 %19 = getelementptr inbounds { i64, i32, i32 }, ptr %18, i64 %.017 %20 = getelementptr inbounds nuw i8, ptr %19, i64 8 %21 = getelementptr inbounds nuw i8, ptr %19, i64 12 @@ -6467,23 +6472,23 @@ define hidden { ptr, i64 } @"_ZN62_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$bytes..buf..b } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden void @"_ZN62_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$bytes..buf..buf_impl..Buf$GT$7advance17h5b0b05ddc38aa96aE.llvm.13402347524827553107"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0, i64 noundef %1) unnamed_addr #0 { +define hidden void @"_ZN62_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$bytes..buf..buf_impl..Buf$GT$7advance17h5b0b05ddc38aa96aE.llvm.13402347524827553107"(ptr noalias noundef align 8 dereferenceable(16) %0, i64 noundef %1) unnamed_addr #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !4 %5 = icmp ult i64 %4, %1 - br i1 %5, label %6, label %7 + br i1 %5, label %10, label %6 6: ; preds = %2 + %7 = load ptr, ptr %0, align 8, !nonnull !4, !align !22, !noundef !4 + %8 = sub nuw i64 %4, %1 + %9 = getelementptr inbounds i8, ptr %7, i64 %1 + store ptr %9, ptr %0, align 8 + store i64 %8, ptr %3, align 8 + ret void + +10: ; preds = %2 tail call void @_ZN5bytes13panic_advance17hbcbf46f7b21e6291E(i64 noundef %1, i64 noundef %4) #23 unreachable - -7: ; preds = %2 - %8 = load ptr, ptr %0, align 8, !nonnull !4, !align !22, !noundef !4 - %9 = sub nuw i64 %4, %1 - %10 = getelementptr inbounds i8, ptr %8, i64 %1 - store ptr %10, ptr %0, align 8 - store i64 %9, ptr %3, align 8 - ret void } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable diff --git a/bench/arrow/optimized/expression.cc.ll b/bench/arrow/optimized/expression.cc.ll index 57106564dbd..285b0613a65 100644 --- a/bench/arrow/optimized/expression.cc.ll +++ b/bench/arrow/optimized/expression.cc.ll @@ -3109,6 +3109,7 @@ if.then36: ; preds = %if.end33 invoke.cont38: ; preds = %if.then36 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp) #27 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %call14, i64 0) ] %field_names = getelementptr inbounds nuw i8, ptr %14, i64 16 %15 = load ptr, ptr %field_names, align 8 %_M_finish.i = getelementptr inbounds nuw i8, ptr %14, i64 24 @@ -5619,10 +5620,10 @@ invoke.cont33: ; preds = %for.cond11.preheade br i1 %tobool.not.i.i.i.i.i, label %invoke.cont37, label %if.then.i.i.i.i.i34 if.then.i.i.i.i.i34: ; preds = %invoke.cont33 + %data_.i.i.i = getelementptr inbounds nuw i8, ptr %param, i64 80 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %37 to i64 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %38 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i - %data_.i.i.i = getelementptr inbounds nuw i8, ptr %param, i64 80 %39 = load ptr, ptr %data_.i.i.i, align 8 call void @llvm.memmove.p0.p0.i64(ptr align 4 %39, ptr align 4 %38, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %invoke.cont37 @@ -6645,10 +6646,10 @@ invoke.cont31: ; preds = %for.cond11.preheade br i1 %tobool.not.i.i.i.i.i, label %invoke.cont35, label %if.then.i.i.i.i.i34 if.then.i.i.i.i.i34: ; preds = %invoke.cont31 + %data_.i.i.i = getelementptr inbounds nuw i8, ptr %param, i64 80 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %37 to i64 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %38 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i - %data_.i.i.i = getelementptr inbounds nuw i8, ptr %param, i64 80 %39 = load ptr, ptr %data_.i.i.i, align 8 call void @llvm.memmove.p0.p0.i64(ptr align 4 %39, ptr align 4 %38, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %invoke.cont35 diff --git a/bench/box2d/optimized/b2_collide_edge.cpp.ll b/bench/box2d/optimized/b2_collide_edge.cpp.ll index 8a9b4c8cbf0..5e9a49eebd3 100644 --- a/bench/box2d/optimized/b2_collide_edge.cpp.ll +++ b/bench/box2d/optimized/b2_collide_edge.cpp.ll @@ -638,6 +638,7 @@ if.then78: ; preds = %if.else65, %if.then %type79 = getelementptr inbounds nuw i8, ptr %manifold, i64 56 store i32 1, ptr %type79, align 4 %normals81 = getelementptr inbounds nuw i8, ptr %tempPolygonB, i64 64 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %normals81, i64 32) ] %cmp87332 = icmp sgt i32 %40, 1 br i1 %cmp87332, label %for.body88.preheader, label %for.end99 @@ -974,12 +975,16 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/box2d/optimized/b2_collision.cpp.ll b/bench/box2d/optimized/b2_collision.cpp.ll index 82f742002d6..0a7ace227f5 100644 --- a/bench/box2d/optimized/b2_collision.cpp.ll +++ b/bench/box2d/optimized/b2_collision.cpp.ll @@ -668,7 +668,7 @@ declare void @_ZN15b2DistanceProxy3SetEPK7b2Shapei(ptr noundef nonnull align 8 d declare void @_Z10b2DistanceP16b2DistanceOutputP14b2SimplexCachePK15b2DistanceInput(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5 -; Function Attrs: mustprogress nofree nosync nounwind memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden void @_Z13b2ComputeHullPK6b2Vec2i(ptr noalias nocapture sret(%struct.b2Hull) align 4 initializes((64, 68)) %agg.result, ptr nocapture noundef readonly %points, i32 noundef %count) local_unnamed_addr #6 { entry: %ps = alloca [8 x %struct.b2Vec2], align 16 @@ -797,8 +797,8 @@ for.body65.preheader: ; preds = %for.body42 %15 = load i64, ptr %arrayidx55, align 8 store i64 %15, ptr %arrayidx53, align 8 %p1.sroa.0.0.vec.extract = extractelement <2 x float> %14, i64 0 - %p1.sroa.0.4.vec.extract = extractelement <2 x float> %14, i64 1 %16 = load float, ptr %ps, align 16 + %p1.sroa.0.4.vec.extract = extractelement <2 x float> %14, i64 1 %sub.i.i76 = fsub float %p1.sroa.0.0.vec.extract, %16 %17 = load float, ptr %y2.i.i68, align 4 %sub3.i.i79 = fsub float %p1.sroa.0.4.vec.extract, %17 @@ -1094,7 +1094,7 @@ return: ; preds = %while.end, %if.then } ; Function Attrs: mustprogress nofree nosync nounwind memory(argmem: readwrite) uwtable -define internal fastcc void @_ZL13b2RecurseHull6b2Vec2S_PS_i(ptr noalias nocapture nonnull align 4 initializes((64, 68)) %agg.result, <2 x float> %p1.coerce, <2 x float> %p2.coerce, ptr nocapture noundef nonnull readonly %ps, i32 noundef %count) unnamed_addr #6 { +define internal fastcc void @_ZL13b2RecurseHull6b2Vec2S_PS_i(ptr noalias nocapture nonnull align 4 initializes((64, 68)) %agg.result, <2 x float> %p1.coerce, <2 x float> %p2.coerce, ptr nocapture noundef nonnull readonly %ps, i32 noundef %count) unnamed_addr #7 { entry: %rightPoints = alloca [8 x %struct.b2Vec2], align 16 %hull1 = alloca %struct.b2Hull, align 4 @@ -1268,7 +1268,7 @@ return: ; preds = %for.body63, %for.en } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define hidden noundef zeroext i1 @_Z14b2ValidateHullRK6b2Hull(ptr nocapture noundef nonnull readonly align 4 dereferenceable(68) %hull) local_unnamed_addr #7 { +define hidden noundef zeroext i1 @_Z14b2ValidateHullRK6b2Hull(ptr nocapture noundef nonnull readonly align 4 dereferenceable(68) %hull) local_unnamed_addr #8 { entry: %count = getelementptr inbounds nuw i8, ptr %hull, i64 64 %0 = load i32, ptr %count, align 4 @@ -1415,16 +1415,16 @@ return: ; preds = %if.end19.us, %for.c } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.fmuladd.f32(float, float, float) #8 +declare float @llvm.fmuladd.f32(float, float, float) #9 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.sqrt.f32(float) #10 +declare float @llvm.sqrt.f32(float) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #10 +declare i32 @llvm.smax.i32(i32, i32) #11 attributes #0 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -1432,11 +1432,12 @@ attributes #2 = { mustprogress nofree norecurse nosync nounwind memory(argmem: r attributes #3 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "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 uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { mustprogress nofree nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "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 #8 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { mustprogress nofree nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { mustprogress nofree nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "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 #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/box2d/optimized/b2_polygon_shape.cpp.ll b/bench/box2d/optimized/b2_polygon_shape.cpp.ll index c43e44e37a0..e97cd1ea569 100644 --- a/bench/box2d/optimized/b2_polygon_shape.cpp.ll +++ b/bench/box2d/optimized/b2_polygon_shape.cpp.ll @@ -151,8 +151,8 @@ entry: %1 = load float, ptr %center, align 4 %center.sroa_idx = getelementptr inbounds nuw i8, ptr %center, i64 4 %2 = load float, ptr %center.sroa_idx, align 4 - %call.i = tail call float @sinf(float noundef %angle) #14 - %call2.i = tail call float @cosf(float noundef %angle) #14 + %call.i = tail call float @sinf(float noundef %angle) #15 + %call2.i = tail call float @cosf(float noundef %angle) #15 %3 = load i32, ptr %m_count, align 8 %cmp29 = icmp sgt i32 %3, 0 br i1 %cmp29, label %for.body, label %for.end @@ -603,8 +603,8 @@ return: ; preds = %for.body, %entry ret i1 %cmp.lcssa } -; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define noundef zeroext i1 @_ZNK14b2PolygonShape7RayCastEP15b2RayCastOutputRK14b2RayCastInputRK11b2Transformi(ptr nocapture noundef nonnull readonly align 8 dereferenceable(156) %this, ptr nocapture noundef writeonly %output, ptr nocapture noundef nonnull readonly align 4 dereferenceable(20) %input, ptr nocapture noundef nonnull readonly align 4 dereferenceable(16) %xf, i32 %childIndex) unnamed_addr #7 align 2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define noundef zeroext i1 @_ZNK14b2PolygonShape7RayCastEP15b2RayCastOutputRK14b2RayCastInputRK11b2Transformi(ptr nocapture noundef nonnull readonly align 8 dereferenceable(156) %this, ptr nocapture noundef writeonly %output, ptr nocapture noundef nonnull readonly align 4 dereferenceable(20) %input, ptr nocapture noundef nonnull readonly align 4 dereferenceable(16) %xf, i32 %childIndex) unnamed_addr #9 align 2 { entry: %q = getelementptr inbounds nuw i8, ptr %xf, i64 8 %0 = load float, ptr %input, align 4 @@ -934,7 +934,7 @@ for.end: ; preds = %cond.end, %entry } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.fmuladd.f32(float, float, float) #9 +declare float @llvm.fmuladd.f32(float, float, float) #10 ; Function Attrs: mustprogress uwtable define noundef zeroext i1 @_ZNK14b2PolygonShape8ValidateEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(156) %this) local_unnamed_addr #1 align 2 { @@ -964,29 +964,29 @@ return: ; preds = %entry, %for.end declare noundef zeroext i1 @_Z14b2ValidateHullRK6b2Hull(ptr noundef nonnull align 4 dereferenceable(68)) local_unnamed_addr #2 ; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr hidden void @_ZN14b2PolygonShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(156) %this) unnamed_addr #10 comdat align 2 { +define linkonce_odr hidden void @_ZN14b2PolygonShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(156) %this) unnamed_addr #11 comdat align 2 { entry: ret void } ; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr hidden void @_ZN14b2PolygonShapeD0Ev(ptr noundef nonnull align 8 dereferenceable(156) %this) unnamed_addr #10 comdat align 2 { +define linkonce_odr hidden void @_ZN14b2PolygonShapeD0Ev(ptr noundef nonnull align 8 dereferenceable(156) %this) unnamed_addr #11 comdat align 2 { entry: - tail call void @_ZdlPv(ptr noundef nonnull %this) #15 + tail call void @_ZdlPv(ptr noundef nonnull %this) #16 ret void } ; Function Attrs: mustprogress nofree nounwind willreturn memory(write) -declare float @sinf(float noundef) local_unnamed_addr #11 +declare float @sinf(float noundef) local_unnamed_addr #12 ; Function Attrs: mustprogress nofree nounwind willreturn memory(write) -declare float @cosf(float noundef) local_unnamed_addr #11 +declare float @cosf(float noundef) local_unnamed_addr #12 ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) local_unnamed_addr #12 +declare void @_ZdlPv(ptr noundef) local_unnamed_addr #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.sqrt.f32(float) #13 +declare float @llvm.sqrt.f32(float) #14 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -997,13 +997,14 @@ attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memor attributes #6 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "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 #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #10 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #14 = { nounwind } -attributes #15 = { builtin nounwind } +attributes #9 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #11 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #12 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #13 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #15 = { nounwind } +attributes #16 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/bullet3/optimized/b3GjkEpa.ll b/bench/bullet3/optimized/b3GjkEpa.ll index 55c3431115b..d5e07303b5e 100644 --- a/bench/bullet3/optimized/b3GjkEpa.ll +++ b/bench/bullet3/optimized/b3GjkEpa.ll @@ -899,6 +899,8 @@ if.then127: ; preds = %sw.epilog call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %m_ray, i8 0, i64 16, i1 false) store i32 %sub, ptr %m_current, align 4 %56 = load i32, ptr %rank56, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %m_ray, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx3.i.i, i64 32) ] %cmp138112.not = icmp eq i32 %56, 0 %.pre125 = load i32, ptr %mask, align 4 br i1 %cmp138112.not, label %for.end181, label %for.body139.lr.ph @@ -2021,21 +2023,21 @@ _ZN13gjkepa2_impl25b3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit163: ; preds = %_ZN %inc.i162 = add i32 %110, 1 store i32 %inc.i162, ptr %count.i161, align 16 %111 = load ptr, ptr %m_hull, align 8 - %f.0.in9.i165 = getelementptr inbounds nuw i8, ptr %111, i64 80 - %f.010.i166 = load ptr, ptr %f.0.in9.i165, align 8 - %tobool.not11.i167 = icmp eq ptr %f.010.i166, null - br i1 %tobool.not11.i167, label %_ZN13gjkepa2_impl25b3EPA8findbestEv.exit184, label %for.body.preheader.i168 - -for.body.preheader.i168: ; preds = %_ZN13gjkepa2_impl25b3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit163 - %d.i169 = getelementptr inbounds nuw i8, ptr %111, i64 16 - %112 = load float, ptr %d.i169, align 16 + %f.0.in9.i166 = getelementptr inbounds nuw i8, ptr %111, i64 80 + %f.010.i167 = load ptr, ptr %f.0.in9.i166, align 8 + %tobool.not11.i168 = icmp eq ptr %f.010.i167, null + br i1 %tobool.not11.i168, label %_ZN13gjkepa2_impl25b3EPA8findbestEv.exit184, label %for.body.preheader.i169 + +for.body.preheader.i169: ; preds = %_ZN13gjkepa2_impl25b3EPA6appendERNS0_5sListEPNS0_5sFaceE.exit163 + %d.i165 = getelementptr inbounds nuw i8, ptr %111, i64 16 + %112 = load float, ptr %d.i165, align 16 %mul.i170 = fmul float %112, %112 br label %for.body.i171 -for.body.i171: ; preds = %for.body.i171, %for.body.preheader.i168 - %f.014.i172 = phi ptr [ %f.0.i181, %for.body.i171 ], [ %f.010.i166, %for.body.preheader.i168 ] - %minf.013.i173 = phi ptr [ %minf.1.i179, %for.body.i171 ], [ %111, %for.body.preheader.i168 ] - %mind.012.i174 = phi float [ %mind.1.i178, %for.body.i171 ], [ %mul.i170, %for.body.preheader.i168 ] +for.body.i171: ; preds = %for.body.i171, %for.body.preheader.i169 + %f.014.i172 = phi ptr [ %f.0.i181, %for.body.i171 ], [ %f.010.i167, %for.body.preheader.i169 ] + %minf.013.i173 = phi ptr [ %minf.1.i179, %for.body.i171 ], [ %111, %for.body.preheader.i169 ] + %mind.012.i174 = phi float [ %mind.1.i178, %for.body.i171 ], [ %mul.i170, %for.body.preheader.i169 ] %d3.i175 = getelementptr inbounds nuw i8, ptr %f.014.i172, i64 16 %113 = load float, ptr %d3.i175, align 16 %mul5.i176 = fmul float %113, %113 @@ -4081,6 +4083,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #9 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "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" } @@ -4090,6 +4095,7 @@ attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #6 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #8 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/bullet3/optimized/btConvexHull.ll b/bench/bullet3/optimized/btConvexHull.ll index bd5f6f47dfc..217afa31a70 100644 --- a/bench/bullet3/optimized/btConvexHull.ll +++ b/bench/bullet3/optimized/btConvexHull.ll @@ -4502,6 +4502,7 @@ invoke.cont63: ; preds = %for.body8.i176, %in %36 = load i32, ptr %desc, align 8 %and.i213 = and i32 %36, 2 %tobool.not.i214.not = icmp eq i32 %and.i213, 0 + %m_data.i219 = getelementptr inbounds nuw i8, ptr %result, i64 64 br i1 %tobool.not.i214.not, label %if.else, label %if.then72 if.then72: ; preds = %invoke.cont63 @@ -4509,8 +4510,7 @@ if.then72: ; preds = %invoke.cont63 br i1 %cmp82366.not, label %if.end163, label %for.body83.preheader for.body83.preheader: ; preds = %if.then72 - %m_data.i217 = getelementptr inbounds nuw i8, ptr %result, i64 64 - %37 = load ptr, ptr %m_data.i217, align 8 + %37 = load ptr, ptr %m_data.i219, align 8 br label %for.body83 for.body83: ; preds = %for.body83.preheader, %for.body83 @@ -4540,7 +4540,6 @@ lpad43: ; preds = %if.then3.i.i.i337, br label %ehcleanup if.else: ; preds = %invoke.cont63 - %m_data.i219 = getelementptr inbounds nuw i8, ptr %result, i64 64 %42 = load ptr, ptr %m_data.i219, align 8 %conv101 = zext i32 %mul.i to i64 %mul102 = shl nuw nsw i64 %conv101, 2 diff --git a/bench/bullet3/optimized/btMultiBodySliderConstraint.ll b/bench/bullet3/optimized/btMultiBodySliderConstraint.ll index a8bba35651b..4f10347a836 100644 --- a/bench/bullet3/optimized/btMultiBodySliderConstraint.ll +++ b/bench/bullet3/optimized/btMultiBodySliderConstraint.ll @@ -666,8 +666,12 @@ if.end42: ; preds = %if.else, %if.then25 %frameBworld.sroa.6.0.copyload = load float, ptr %frameBworld.sroa.6.0.m_frameInB.sroa_idx, align 8 %arrayidx6.i68 = getelementptr inbounds nuw i8, ptr %this, i64 208 %frameBworld.sroa.9.16.copyload = load float, ptr %arrayidx6.i68, align 8 + %frameBworld.sroa.13.16.arrayidx6.i68.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 212 + %frameBworld.sroa.15.16.arrayidx6.i68.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 216 %arrayidx10.i70 = getelementptr inbounds nuw i8, ptr %this, i64 224 %frameBworld.sroa.18.32.copyload = load float, ptr %arrayidx10.i70, align 8 + %frameBworld.sroa.22.32.arrayidx10.i70.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 228 + %frameBworld.sroa.24.32.arrayidx10.i70.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 232 %m_rigidBodyB = getelementptr inbounds nuw i8, ptr %this, i64 104 %88 = load ptr, ptr %m_rigidBodyB, align 8 %tobool43.not = icmp eq ptr %88, null @@ -721,14 +725,10 @@ if.then44: ; preds = %if.end42 store <2 x float> %retval.sroa.0.4.vec.insert.i3.i.i93, ptr %pivotBworld, align 8 %ref.tmp45.sroa.2.0.pivotBworld.sroa_idx = getelementptr inbounds nuw i8, ptr %pivotBworld, i64 8 store <2 x float> %retval.sroa.3.12.vec.insert.i4.i.i94, ptr %ref.tmp45.sroa.2.0.pivotBworld.sroa_idx, align 8 - %arrayidx.i1.i100 = getelementptr inbounds nuw i8, ptr %this, i64 212 - %arrayidx.i2.i101 = getelementptr inbounds nuw i8, ptr %this, i64 228 - %arrayidx.i4.i103 = getelementptr inbounds nuw i8, ptr %this, i64 216 - %arrayidx.i5.i104 = getelementptr inbounds nuw i8, ptr %this, i64 232 - %110 = load float, ptr %arrayidx.i1.i100, align 4, !noalias !11 - %111 = load float, ptr %arrayidx.i2.i101, align 4, !noalias !11 - %112 = load float, ptr %arrayidx.i4.i103, align 8, !noalias !11 - %113 = load float, ptr %arrayidx.i5.i104, align 8, !noalias !11 + %110 = load float, ptr %frameBworld.sroa.13.16.arrayidx6.i68.sroa_idx, align 4, !noalias !11 + %111 = load float, ptr %frameBworld.sroa.22.32.arrayidx10.i70.sroa_idx, align 4, !noalias !11 + %112 = load float, ptr %frameBworld.sroa.15.16.arrayidx6.i68.sroa_idx, align 8, !noalias !11 + %113 = load float, ptr %frameBworld.sroa.24.32.arrayidx10.i70.sroa_idx, align 8, !noalias !11 %call57 = call { <2 x float>, <2 x float> } @_ZNK11btRigidBody14getOrientationEv(ptr noundef nonnull align 8 dereferenceable(744) %88) %114 = extractvalue { <2 x float>, <2 x float> } %call57, 0 %115 = extractvalue { <2 x float>, <2 x float> } %call57, 1 @@ -795,13 +795,9 @@ if.then44: ; preds = %if.end42 br label %if.end75 if.else61: ; preds = %if.end42 - %frameBworld.sroa.24.32.arrayidx10.i70.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 232 %frameBworld.sroa.24.32.copyload = load float, ptr %frameBworld.sroa.24.32.arrayidx10.i70.sroa_idx, align 8 - %frameBworld.sroa.22.32.arrayidx10.i70.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 228 %frameBworld.sroa.22.32.copyload = load float, ptr %frameBworld.sroa.22.32.arrayidx10.i70.sroa_idx, align 4 - %frameBworld.sroa.15.16.arrayidx6.i68.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 216 %frameBworld.sroa.15.16.copyload = load float, ptr %frameBworld.sroa.15.16.arrayidx6.i68.sroa_idx, align 8 - %frameBworld.sroa.13.16.arrayidx6.i68.sroa_idx = getelementptr inbounds nuw i8, ptr %this, i64 212 %frameBworld.sroa.13.16.copyload = load float, ptr %frameBworld.sroa.13.16.arrayidx6.i68.sroa_idx, align 4 %m_bodyB = getelementptr inbounds nuw i8, ptr %this, i64 16 %137 = load ptr, ptr %m_bodyB, align 8 diff --git a/bench/c3c/optimized/parse_stmt.c.ll b/bench/c3c/optimized/parse_stmt.c.ll index 84b2610f92a..ddd6fd7f22f 100644 --- a/bench/c3c/optimized/parse_stmt.c.ll +++ b/bench/c3c/optimized/parse_stmt.c.ll @@ -6059,6 +6059,8 @@ define internal fastcc noundef zeroext i1 @parse_asm_scale(ptr noundef %0, ptr n %10 = tail call ptr @parse_integer(ptr noundef nonnull %0, ptr noundef null) #5 %11 = getelementptr inbounds nuw i8, ptr %10, i64 32 %.sroa.0.0.copyload = load i64, ptr %11, align 8 + %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 40 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.2.0..sroa_idx, i64 64) ] %.not = icmp eq i64 %.sroa.0.0.copyload, 0 br i1 %.not, label %16, label %12 @@ -6070,7 +6072,6 @@ define internal fastcc noundef zeroext i1 @parse_asm_scale(ptr noundef %0, ptr n br label %35 16: ; preds = %9 - %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 40 %.sroa.2.0.copyload = load i64, ptr %.sroa.2.0..sroa_idx, align 8 switch i64 %.sroa.2.0.copyload, label %32 [ i64 1, label %17 diff --git a/bench/c3c/optimized/sema_decls.c.ll b/bench/c3c/optimized/sema_decls.c.ll index cdde8fabe69..a504b2cdbb2 100644 --- a/bench/c3c/optimized/sema_decls.c.ll +++ b/bench/c3c/optimized/sema_decls.c.ll @@ -2871,11 +2871,12 @@ expand_.exit.i: ; preds = %149, %145 br i1 %exitcond137.not.i, label %._crit_edge119.i, label %138, !llvm.loop !16 ._crit_edge119.i: ; preds = %189, %134, %._crit_edge.i + %191 = getelementptr inbounds nuw i8, ptr %127, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %191, i64 0) ] %.not126.i = icmp eq i32 %.091.lcssa.i, 0 br i1 %.not126.i, label %._crit_edge123.i, label %.lr.ph122.i .lr.ph122.i: ; preds = %._crit_edge119.i - %191 = getelementptr inbounds nuw i8, ptr %127, i64 56 %192 = load ptr, ptr %191, align 8 %193 = load ptr, ptr %192, align 8 %194 = getelementptr inbounds nuw i8, ptr %193, i64 176 @@ -7654,7 +7655,7 @@ declare i64 @int_to_u64(ptr noundef byval(%struct.Int) align 8) local_unnamed_ad declare zeroext i1 @expr_const_will_overflow(ptr noundef, i32 noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define internal fastcc noundef zeroext i1 @sema_check_section(ptr nocapture readonly %.32.val.0.val) unnamed_addr #0 { +define internal fastcc noundef zeroext i1 @sema_check_section(ptr %.32.val.0.val) unnamed_addr #0 { %1 = alloca %struct.StringSlice_, align 8 %2 = alloca %struct.StringSlice_, align 8 %3 = alloca %struct.StringSlice_, align 8 @@ -11968,11 +11969,11 @@ declare zeroext i1 @int_fits(ptr noundef byval(%struct.Int) align 8, i32 noundef declare ptr @i128_to_string(i64, i64, i64 noundef, i1 noundef zeroext) local_unnamed_addr #1 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctpop.i64(i64) #6 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #7 +declare void @llvm.assume(i1 noundef) #6 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.ctpop.i64(i64) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 @@ -11981,7 +11982,7 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #6 +declare i32 @llvm.umax.i32(i32, i32) #7 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 @@ -11992,8 +11993,8 @@ attributes #2 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stac attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #4 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { nofree nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #8 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #10 = { nounwind } diff --git a/bench/c3c/optimized/types.c.ll b/bench/c3c/optimized/types.c.ll index bcc7eb0218a..55be202331d 100644 --- a/bench/c3c/optimized/types.c.ll +++ b/bench/c3c/optimized/types.c.ll @@ -1634,8 +1634,8 @@ define dso_local noundef zeroext i1 @type_func_match(ptr nocapture noundef reado %or.cond.not = select i1 %.not33, i1 %exitcond.not, i1 false br i1 %or.cond.not, label %35, label %.sink.split, !llvm.loop !11 -.sink.split: ; preds = %47, %29, %27 - %.026.ph = phi i1 [ true, %27 ], [ true, %29 ], [ %.not33, %47 ] +.sink.split: ; preds = %47, %27, %29 + %.026.ph = phi i1 [ true, %29 ], [ true, %27 ], [ %.not33, %47 ] call void @llvm.va_end.p0(ptr nonnull %4) br label %58 @@ -2844,7 +2844,7 @@ type_flatten.exit86: ; preds = %type_flatten.exit } ; Function Attrs: nounwind uwtable -define internal fastcc zeroext i1 @array_structurally_equivalent_to_struct(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) unnamed_addr #0 { +define internal fastcc zeroext i1 @array_structurally_equivalent_to_struct(ptr noundef %0, ptr nocapture noundef readonly %1) unnamed_addr #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 56 %4 = getelementptr inbounds nuw i8, ptr %0, i64 64 %5 = load i32, ptr %4, align 8 @@ -2893,8 +2893,8 @@ define internal fastcc zeroext i1 @array_structurally_equivalent_to_struct(ptr n 29: ; preds = %22 %30 = getelementptr inbounds i8, ptr %26, i64 -8 %31 = load i32, ptr %30, align 4 - %.not = icmp eq i32 %31, 0 - br i1 %.not, label %.loopexit, label %.lr.ph.preheader + %.not47 = icmp eq i32 %31, 0 + br i1 %.not47, label %.loopexit, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %29 %wide.trip.count = zext i32 %31 to i64 @@ -6184,13 +6184,14 @@ tailrecurse: ; preds = %48 br label %.critedge120 149: ; preds = %120 - %150 = load i32, ptr %spec.select118, align 8 - %151 = icmp eq i32 %150, 34 - br i1 %151, label %152, label %.thread126 - -152: ; preds = %149 - %153 = getelementptr inbounds nuw i8, ptr %122, i64 56 - %154 = load ptr, ptr %153, align 8 + %150 = getelementptr inbounds nuw i8, ptr %122, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %150, i64 0) ] + %151 = load i32, ptr %spec.select118, align 8 + %152 = icmp eq i32 %151, 34 + br i1 %152, label %153, label %.thread126 + +153: ; preds = %149 + %154 = load ptr, ptr %150, align 8 %155 = getelementptr inbounds nuw i8, ptr %154, i64 8 %156 = load ptr, ptr %155, align 8 %157 = getelementptr inbounds nuw i8, ptr %spec.select118, i64 56 @@ -6200,7 +6201,7 @@ tailrecurse: ; preds = %48 %161 = icmp eq ptr %156, %160 br i1 %161, label %.critedge120, label %.thread126 -.thread126: ; preds = %120, %124, %130, %136, %141, %149, %152 +.thread126: ; preds = %120, %124, %130, %136, %141, %149, %153 %162 = tail call ptr @type_decay_array_pointer(ptr noundef nonnull %spec.select) %163 = load i32, ptr %spec.select118, align 8 %164 = icmp eq i32 %163, 23 @@ -6264,8 +6265,8 @@ tailrecurse: ; preds = %48 tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, ptr noundef nonnull @__func__.type_find_max_type, ptr noundef nonnull @.str.2, i32 noundef 2190) #13 unreachable -.critedge120: ; preds = %tailrecurse, %9, %13, %.critedge2, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %48, %.lr.ph176, %.thread, %2, %90, %169, %188, %188, %188, %188, %175, %152, %130, %109, %105, %190, %177, %173, %167, %147, %116, %112, %.thread124, %.thread123 - %.0106 = phi ptr [ null, %190 ], [ %187, %177 ], [ %174, %173 ], [ %148, %147 ], [ %168, %167 ], [ %119, %116 ], [ %115, %112 ], [ %108, %.thread124 ], [ %89, %.thread123 ], [ %spec.select118, %105 ], [ %spec.select118, %109 ], [ %spec.select118, %130 ], [ %spec.select118, %152 ], [ null, %175 ], [ %spec.select118, %188 ], [ %spec.select118, %188 ], [ %spec.select118, %188 ], [ %spec.select118, %188 ], [ %spec.select121, %169 ], [ %spec.select118, %90 ], [ %4, %2 ], [ %spec.select118, %.thread ], [ %spec.select118, %.lr.ph176 ], [ %85, %tailrecurse ], [ %10, %9 ], [ %11, %13 ], [ %.0104.lcssa, %.critedge2 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ %spec.select118, %48 ] +.critedge120: ; preds = %tailrecurse, %9, %13, %.critedge2, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %44, %48, %.lr.ph176, %.thread, %2, %90, %169, %188, %188, %188, %188, %175, %153, %130, %109, %105, %190, %177, %173, %167, %147, %116, %112, %.thread124, %.thread123 + %.0106 = phi ptr [ null, %190 ], [ %187, %177 ], [ %174, %173 ], [ %148, %147 ], [ %168, %167 ], [ %119, %116 ], [ %115, %112 ], [ %108, %.thread124 ], [ %89, %.thread123 ], [ %spec.select118, %105 ], [ %spec.select118, %109 ], [ %spec.select118, %130 ], [ %spec.select118, %153 ], [ null, %175 ], [ %spec.select118, %188 ], [ %spec.select118, %188 ], [ %spec.select118, %188 ], [ %spec.select118, %188 ], [ %spec.select121, %169 ], [ %spec.select118, %90 ], [ %4, %2 ], [ %spec.select118, %.thread ], [ %spec.select118, %.lr.ph176 ], [ %85, %tailrecurse ], [ %10, %9 ], [ %11, %13 ], [ %.0104.lcssa, %.critedge2 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ null, %44 ], [ %spec.select118, %48 ] ret ptr %.0106 } diff --git a/bench/casadi/optimized/symbolic_qr.cpp.ll b/bench/casadi/optimized/symbolic_qr.cpp.ll index d951e262c9b..992edb61a14 100644 --- a/bench/casadi/optimized/symbolic_qr.cpp.ll +++ b/bench/casadi/optimized/symbolic_qr.cpp.ll @@ -3346,20 +3346,21 @@ _ZSt6fill_nIPPdxDnET_S2_T0_RKT1_.exit: ; preds = %_ZSt6fill_nIPPKdxDn %.042 = phi i64 [ 0, %.lr.ph ], [ %71, %68 ] %.02741 = phi ptr [ %3, %.lr.ph ], [ %70, %68 ] %42 = tail call noundef i64 @_ZNK6casadi8Sparsity5size1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) - %43 = icmp slt i64 %42, 1 - br i1 %43, label %_ZSt6copy_nIPdxS0_ET1_T_T0_S1_.exit, label %_ZSt8__copy_nIPdxS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i + %43 = load ptr, ptr %37, align 8 + %44 = icmp slt i64 %42, 1 + br i1 %44, label %_ZSt6copy_nIPdxS0_ET1_T_T0_S1_.exit, label %_ZSt8__copy_nIPdxS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i _ZSt8__copy_nIPdxS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i: ; preds = %41 - %44 = load ptr, ptr %37, align 8 %45 = load ptr, ptr %38, align 8 - %46 = icmp eq ptr %44, %45 - %spec.select.i34 = select i1 %46, ptr null, ptr %44 + %46 = icmp eq ptr %43, %45 + %spec.select.i34 = select i1 %46, ptr null, ptr %43 %.idx.i.i35 = shl nsw i64 %42, 3 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %spec.select.i34, ptr align 8 %.02741, i64 %.idx.i.i35, i1 false) + %.pre = load ptr, ptr %37, align 8 br label %_ZSt6copy_nIPdxS0_ET1_T_T0_S1_.exit _ZSt6copy_nIPdxS0_ET1_T_T0_S1_.exit: ; preds = %41, %_ZSt8__copy_nIPdxS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i - %47 = load ptr, ptr %37, align 8 + %47 = phi ptr [ %43, %41 ], [ %.pre, %_ZSt8__copy_nIPdxS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i ] %48 = load ptr, ptr %38, align 8 %49 = icmp eq ptr %47, %48 %spec.select.i36 = select i1 %49, ptr null, ptr %47 @@ -3970,6 +3971,7 @@ _ZSt8_DestroyIPN6casadi6SXElemES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %_ZSt8_Des _ZN6casadi6MatrixINS_6SXElemEED2Ev.exit: ; preds = %_ZSt8_DestroyIPN6casadi6SXElemES1_EvT_S3_RSaIT0_E.exit.i.i, %189 %190 = getelementptr inbounds nuw i8, ptr %42, i64 8 call void @_ZN6casadi12SharedObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #20 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %191 = icmp sgt i64 %7, 0 br i1 %191, label %.lr.ph, label %._crit_edge diff --git a/bench/ceres/optimized/cgnr_solver.cc.ll b/bench/ceres/optimized/cgnr_solver.cc.ll index f068fe2772c..28c188cdd6b 100644 --- a/bench/ceres/optimized/cgnr_solver.cc.ll +++ b/bench/ceres/optimized/cgnr_solver.cc.ll @@ -1012,7 +1012,7 @@ _ZNSt10unique_ptrIN5ceres8internal31BlockSparseJacobiPreconditionerESt14default_ .body: ; preds = %60, %22, %62 %.pn = phi { ptr, i32 } [ %63, %62 ], [ %61, %60 ], [ %23, %22 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #26 - br label %230 + br label %229 64: ; preds = %78, %68, %50 %65 = landingpad { ptr, i32 } @@ -1119,7 +1119,7 @@ _ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit53: ; preds = %85, %83, %24 .noexc54: ; preds = %92 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %110, i8 0, i64 16, i1 false) %.not.i.i.i.i.i.i.i.i = icmp eq i32 %114, 0 - br i1 %.not.i.i.i.i.i.i.i.i, label %128, label %115 + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.thread.i.i, label %115 115: ; preds = %.noexc54 %116 = sext i32 %114 to i64 @@ -1129,7 +1129,7 @@ _ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit53: ; preds = %85, %83, %24 _ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.i.i.thread: ; preds = %115 store i64 %116, ptr %117, align 8 - br label %128 + br label %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.thread.i.i 119: ; preds = %115 %120 = shl nuw nsw i64 %116, 3 @@ -1151,14 +1151,16 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18sc store i64 %116, ptr %117, align 8 %125 = shl nuw nsw i64 %116, 3 call void @llvm.memset.p0.i64(ptr nonnull align 8 %121, i8 0, i64 %125, i1 false) - br label %128 + br label %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.thread.i.i 126: ; preds = %123 %127 = landingpad { ptr, i32 } cleanup + %128 = load ptr, ptr %110, align 8 + call void @free(ptr noundef %128) #26 br label %_ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit -128: ; preds = %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.i.i.thread, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKT_.exit.loopexit.i, %.noexc54 +_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.thread.i.i: ; preds = %.noexc54, %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.i.i.thread, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKT_.exit.loopexit.i %129 = getelementptr inbounds nuw i8, ptr %13, i64 40 store ptr %104, ptr %129, align 8 %130 = getelementptr inbounds nuw i8, ptr %13, i64 48 @@ -1171,11 +1173,11 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18sc %.not.i80 = icmp eq i32 %132, 0 br i1 %.not.i80, label %.thread, label %135 -.thread: ; preds = %128 +.thread: ; preds = %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.thread.i.i store i64 %133, ptr %134, align 8 br label %146 -135: ; preds = %128 +135: ; preds = %_ZN5Eigen8internal17resize_if_allowedINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEENS_14CwiseNullaryOpINS0_18scalar_constant_opIdEES3_EEddEEvRT_RKT0_RKNS0_9assign_opIT1_T2_EE.exit.i.i.i.i.i.thread.i.i %136 = icmp sgt i32 %132, 0 br i1 %136, label %137, label %.thread102 @@ -1273,7 +1275,7 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18sc %171 = load ptr, ptr %166, align 8 call void @free(ptr noundef %171) #26 call void @_ZdlPv(ptr noundef nonnull %166) #27 - br label %227 + br label %.body57 _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IiEERKT_.exit66: ; preds = %167 store ptr %166, ptr %162, align 8 @@ -1287,12 +1289,12 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IiEERKT_.exit66: ; preds = %167 .loopexit: ; preds = %165 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %227 + br label %.body57 .loopexit.split-lp: ; preds = %146, %179, %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE6resizeEll.exit.i.i.i.i.i.i.i.i60 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %227 + br label %.body57 174: ; preds = %161, %_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IiEERKT_.exit66 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -1454,7 +1456,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit76: ; .body69: ; preds = %218, %177, %220 %.pn34 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ], [ %178, %177 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #26 - br label %227 + br label %.body57 222: ; preds = %.noexc72, %_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEaSIS2_EERS5_RKNS_9DenseBaseIT_EE.exit %223 = landingpad { ptr, i32 } @@ -1472,26 +1474,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit76: ; call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #26 %226 = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #26 - br label %227 - -227: ; preds = %.loopexit, %.loopexit.split-lp, %.body74, %.body69, %.body64 - %.pn39 = phi { ptr, i32 } [ %170, %.body64 ], [ %.pn36, %.body74 ], [ %.pn34, %.body69 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %228 = load ptr, ptr %14, align 8 - call void @free(ptr noundef %228) #26 br label %.body57 -.body57: ; preds = %143, %227 - %.pn39.pn = phi { ptr, i32 } [ %.pn39, %227 ], [ %144, %143 ] - %229 = load ptr, ptr %110, align 8 - call void @free(ptr noundef %229) #26 +.body57: ; preds = %.body64, %.body69, %.body74, %.loopexit.split-lp, %.loopexit, %143 + %.pn39.pn = phi { ptr, i32 } [ %144, %143 ], [ %170, %.body64 ], [ %.pn36, %.body74 ], [ %.pn34, %.body69 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %227 = load ptr, ptr %14, align 8 + call void @free(ptr noundef %227) #26 + %228 = load ptr, ptr %110, align 8 + call void @free(ptr noundef %228) #26 br label %_ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit _ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit: ; preds = %172, %126, %67, %64, %.body57 %.pn39.pn.pn = phi { ptr, i32 } [ %.pn39.pn, %.body57 ], [ %65, %64 ], [ %65, %67 ], [ %173, %172 ], [ %127, %126 ] call void @_ZN5ceres8internal11EventLoggerD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %7) #26 - br label %230 + br label %229 -230: ; preds = %_ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit, %.body +229: ; preds = %_ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit, %.body %.pn39.pn.pn.pn = phi { ptr, i32 } [ %.pn39.pn.pn, %_ZN5ceres8internal14Preconditioner7OptionsD2Ev.exit ], [ %.pn, %.body ] resume { ptr, i32 } %.pn39.pn.pn.pn } diff --git a/bench/ceres/optimized/schur_complement_solver.cc.ll b/bench/ceres/optimized/schur_complement_solver.cc.ll index edb9fe8fff2..27e5c64eb95 100644 --- a/bench/ceres/optimized/schur_complement_solver.cc.ll +++ b/bench/ceres/optimized/schur_complement_solver.cc.ll @@ -5003,14 +5003,15 @@ define linkonce_odr hidden void @_ZN5ceres8internal27SchurEliminatorForOneFBlock %indvars.iv = phi i64 [ 0, %.lr.ph219 ], [ %indvars.iv.next, %_ZN5Eigen7NoAliasINS_6MatrixIdLi3ELi6ELi0ELi3ELi6EEENS_10MatrixBaseEEaSINS_7ProductINS_3MapINS1_IdLi3ELi3ELi1ELi3ELi3EEELi0ENS_6StrideILi0ELi0EEEEES2_Li0EEEEERS2_RKNS3_IT_EE.exit ] %102 = phi ptr [ %64, %.lr.ph219 ], [ %510, %_ZN5Eigen7NoAliasINS_6MatrixIdLi3ELi6ELi0ELi3ELi6EEENS_10MatrixBaseEEaSINS_7ProductINS_3MapINS1_IdLi3ELi3ELi1ELi3ELi3EEELi0ENS_6StrideILi0ELi0EEEEES2_Li0EEEEERS2_RKNS3_IT_EE.exit ] %103 = getelementptr inbounds nuw %"struct.ceres::internal::SchurEliminatorForOneFBlock<2, 3, 6>::Chunk", ptr %102, i64 %indvars.iv - br i1 %.not, label %125, label %104 - -104: ; preds = %101 - %105 = load ptr, ptr %65, align 8 - %106 = load i32, ptr %103, align 4 - %107 = sext i32 %106 to i64 - %108 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %105, i64 %107, i32 1 - %109 = load ptr, ptr %108, align 8 + %104 = load i32, ptr %103, align 4 + %105 = sext i32 %104 to i64 + %106 = load ptr, ptr %65, align 8 + %107 = getelementptr inbounds %"struct.ceres::internal::CompressedList", ptr %106, i64 %105, i32 1 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %107, i64 0) ] + br i1 %.not, label %125, label %108 + +108: ; preds = %101 + %109 = load ptr, ptr %107, align 8 %110 = load i32, ptr %109, align 4 %111 = sext i32 %110 to i64 %112 = load ptr, ptr %26, align 8 @@ -5036,9 +5037,9 @@ define linkonce_odr hidden void @_ZN5ceres8internal27SchurEliminatorForOneFBlock call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) %18, i8 0, i64 72, i1 false) br label %126 -126: ; preds = %125, %104 - %127 = phi double [ 0.000000e+00, %125 ], [ %124, %104 ] - %128 = phi double [ 0.000000e+00, %125 ], [ %121, %104 ] +126: ; preds = %125, %108 + %127 = phi double [ 0.000000e+00, %125 ], [ %124, %108 ] + %128 = phi double [ 0.000000e+00, %125 ], [ %121, %108 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(144) %19, i8 0, i64 144, i1 false) %129 = getelementptr inbounds nuw i8, ptr %103, i64 4 %130 = load i32, ptr %129, align 4 diff --git a/bench/chibicc/optimized/parse.ll b/bench/chibicc/optimized/parse.ll index 269b870dbca..9d1c462b2c8 100644 --- a/bench/chibicc/optimized/parse.ll +++ b/bench/chibicc/optimized/parse.ll @@ -8427,6 +8427,7 @@ tailrecurse: ; preds = %if.end46, %entry if.then: ; preds = %tailrecurse %base = getelementptr inbounds nuw i8, ptr %ty.tr, i64 24 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %base, i64 0) ] %array_len = getelementptr inbounds nuw i8, ptr %ty.tr, i64 48 %1 = load i32, ptr %array_len, align 8 %cmp192 = icmp sgt i32 %1, 0 @@ -12719,14 +12720,14 @@ declare i32 @llvm.smax.i32(i32, i32) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #10 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #12 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #12 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -12739,8 +12740,8 @@ attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #8 = { nofree nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #11 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #13 = { nounwind } attributes #14 = { nounwind allocsize(0,1) } attributes #15 = { nounwind willreturn memory(read) } diff --git a/bench/clamav/optimized/gpt.c.ll b/bench/clamav/optimized/gpt.c.ll index 82f6da138cd..6d7c10a2c43 100644 --- a/bench/clamav/optimized/gpt.c.ll +++ b/bench/clamav/optimized/gpt.c.ll @@ -709,13 +709,15 @@ fmap_readn.exit.thread: ; preds = %32, %28, %fmap_read } ; Function Attrs: nounwind uwtable -define internal fastcc i32 @gpt_scan_partitions(ptr noundef nonnull %0, ptr nocapture noundef readonly byval(%struct.gpt_header) align 8 %1, i64 noundef range(i64 1, 0) %2) unnamed_addr #0 { +define internal fastcc i32 @gpt_scan_partitions(ptr noundef nonnull %0, ptr nocapture noundef byval(%struct.gpt_header) align 8 %1, i64 noundef range(i64 1, 0) %2) unnamed_addr #0 { %4 = alloca %struct.gpt_partition_entry, align 1 %5 = load i64, ptr %1, align 8 %6 = tail call i64 @llvm.bswap.i64(i64 %5) + store i64 %6, ptr %1, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 8 %8 = load i32, ptr %7, align 8 %9 = tail call i32 @llvm.bswap.i32(i32 %8) + store i32 %9, ptr %7, align 8 %10 = getelementptr inbounds nuw i8, ptr %1, i64 80 %11 = getelementptr inbounds nuw i8, ptr %1, i64 84 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.21) #7 diff --git a/bench/coreutils-rs/optimized/29af07t0g5n4ob25.ll b/bench/coreutils-rs/optimized/29af07t0g5n4ob25.ll index 88fafecca3b..4dd0dca86e6 100644 --- a/bench/coreutils-rs/optimized/29af07t0g5n4ob25.ll +++ b/bench/coreutils-rs/optimized/29af07t0g5n4ob25.ll @@ -392,7 +392,6 @@ define void @_ZN7uu_comm4comm17h56c35c3df2f4775bE(ptr noalias noundef align 8 de br label %97 97: ; preds = %.lr.ph, %144 - %.val167229 = phi i64 [ %68, %.lr.ph ], [ %149, %144 ] %98 = phi i1 [ %69, %.lr.ph ], [ %150, %144 ] %99 = phi i1 [ %67, %.lr.ph ], [ %148, %144 ] br i1 %99, label %100, label %101 @@ -441,8 +440,8 @@ define void @_ZN7uu_comm4comm17h56c35c3df2f4775bE(ptr noalias noundef align 8 de to label %190 unwind label %.loopexit.split-lp 115: ; preds = %.loopexit, %.loopexit.split-lp, %176, %156, %128 - %.val167 = phi i64 [ %.val167229, %176 ], [ %.val167229, %156 ], [ %.val167229, %128 ], [ %.val167229, %.loopexit ], [ %.val167.pre, %.loopexit.split-lp ] %.pn = phi { ptr, i32 } [ %177, %176 ], [ %157, %156 ], [ %129, %128 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.val167 = load i64, ptr %35, align 8, !range !43, !noundef !5 %116 = getelementptr inbounds nuw i8, ptr %35, i64 8 %.val168 = load ptr, ptr %116, align 8 invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..result..Result$LT$usize$C$std..io..error..Error$GT$$GT$17h1b49e9cb1fa1bba9E"(i64 %.val167, ptr %.val168) #14 @@ -456,7 +455,6 @@ define void @_ZN7uu_comm4comm17h56c35c3df2f4775bE(ptr noalias noundef align 8 de .loopexit.split-lp: ; preds = %._crit_edge, %117, %197, %199, %201 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - %.val167.pre = load i64, ptr %35, align 8, !range !43 br label %115 117: ; preds = %101 diff --git a/bench/cpython/optimized/_cursesmodule.ll b/bench/cpython/optimized/_cursesmodule.ll index d9e88002414..013a7611263 100644 --- a/bench/cpython/optimized/_cursesmodule.ll +++ b/bench/cpython/optimized/_cursesmodule.ll @@ -6540,9 +6540,9 @@ entry.split: ; preds = %entry %0 = getelementptr i8, ptr %self, i64 16 %self.val4 = load ptr, ptr %0, align 8 %tobool.not.i = icmp eq ptr %self.val4, null - br i1 %tobool.not.i, label %if.then.i, label %cond.end.i + br i1 %tobool.not.i, label %if.then.i, label %cond.true.i -cond.end.i: ; preds = %entry.split +cond.true.i: ; preds = %entry.split %_maxy.i = getelementptr inbounds nuw i8, ptr %self.val4, i64 4 %1 = load i16, ptr %_maxy.i, align 4 %conv.i = sext i16 %1 to i32 @@ -6552,13 +6552,13 @@ cond.end.i: ; preds = %entry.split %or.cond.i = or i1 %cmp6.i, %cmp3.i br i1 %or.cond.i, label %if.then.i, label %cond.end12.i -cond.end12.i: ; preds = %cond.end.i +cond.end12.i: ; preds = %cond.true.i %call.i = tail call zeroext i1 @is_linetouched(ptr noundef nonnull %self.val4, i32 noundef %call) #9 %conv16.i = zext i1 %call.i to i64 %call17.i = tail call ptr @PyBool_FromLong(i64 noundef %conv16.i) #9 br label %exit -if.then.i: ; preds = %cond.end.i, %entry.split +if.then.i: ; preds = %cond.true.i, %entry.split %2 = load ptr, ptr @PyExc_TypeError, align 8 tail call void @PyErr_SetString(ptr noundef %2, ptr noundef nonnull @.str.231) #9 br label %exit @@ -6929,6 +6929,11 @@ sw.default: ; preds = %entry if.then.i: ; preds = %sw.bb2 %2 = load ptr, ptr %destwin, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %sminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %smincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmaxrow, i64 32) ] %win3.i = getelementptr inbounds nuw i8, ptr %self, i64 16 %3 = load ptr, ptr %win3.i, align 8 %win4.i = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -6945,6 +6950,11 @@ if.then.i: ; preds = %sw.bb2 if.else.i: ; preds = %sw.bb %11 = load ptr, ptr %destwin, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %sminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %smincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmaxrow, i64 32) ] %win3.i4 = getelementptr inbounds nuw i8, ptr %self, i64 16 %12 = load ptr, ptr %win3.i4, align 8 %win4.i5 = getelementptr inbounds nuw i8, ptr %11, i64 16 @@ -7004,6 +7014,11 @@ sw.default: ; preds = %entry if.then.i: ; preds = %sw.bb2 %2 = load ptr, ptr %destwin, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %sminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %smincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmaxrow, i64 32) ] %win3.i = getelementptr inbounds nuw i8, ptr %self, i64 16 %3 = load ptr, ptr %win3.i, align 8 %win4.i = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -7020,6 +7035,11 @@ if.then.i: ; preds = %sw.bb2 if.else.i: ; preds = %sw.bb %11 = load ptr, ptr %destwin, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %sminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %smincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dminrow, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmincol, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %dmaxrow, i64 32) ] %win3.i4 = getelementptr inbounds nuw i8, ptr %self, i64 16 %12 = load ptr, ptr %win3.i4, align 8 %win4.i5 = getelementptr inbounds nuw i8, ptr %11, i64 16 @@ -11971,6 +11991,9 @@ sw.default: ; preds = %entry br label %exit sw.epilog: ; preds = %sw.bb2, %sw.bb + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %nlines, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ncols, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %begin_y, i64 32) ] %.b.i = load i1, ptr @initialised, align 4 br i1 %.b.i, label %if.end.i, label %if.then.i @@ -13556,6 +13579,15 @@ entry: br i1 %tobool.not, label %exit, label %if.end if.end: ; preds = %entry + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %str, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i1, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i2, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i3, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i4, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i5, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i6, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i7, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %i8, i64 32) ] %.b.i = load i1, ptr @initialised_setupterm, align 4 br i1 %.b.i, label %if.end.i, label %if.then.i @@ -14343,20 +14375,20 @@ declare void @PyStructSequence_SetItem(ptr noundef, i64 noundef, ptr noundef) lo ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #5 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #5 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7 - -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #8 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -14364,9 +14396,9 @@ attributes #2 = { mustprogress nofree nounwind willreturn memory(argmem: read) " attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #9 = { nounwind } attributes #10 = { nounwind willreturn memory(read) } diff --git a/bench/cpython/optimized/memoryobject.ll b/bench/cpython/optimized/memoryobject.ll index 2e7469966e4..f546b1910ce 100644 --- a/bench/cpython/optimized/memoryobject.ll +++ b/bench/cpython/optimized/memoryobject.ll @@ -4326,7 +4326,7 @@ return: ; preds = %if.end5, %if.then4, } ; Function Attrs: nounwind uwtable -define internal ptr @memory_item(ptr nocapture noundef readonly %_self, i64 noundef %index) #0 { +define internal ptr @memory_item(ptr noundef %_self, i64 noundef %index) #0 { entry: %view1 = getelementptr inbounds nuw i8, ptr %_self, i64 56 %flags = getelementptr inbounds nuw i8, ptr %_self, i64 40 @@ -8359,11 +8359,11 @@ if.end6: ; preds = %if.end %cmp9 = icmp slt i64 %call8, 0 %.old = load i8, ptr %destchar, align 1 %.fr = freeze i8 %.old - %cmp21.old = icmp eq i8 %.fr, 98 br i1 %cmp9, label %land.lhs.true, label %lor.lhs.false lor.lhs.false: ; preds = %if.end6 - br i1 %cmp21.old, label %if.end32, label %switch.early.test + %cmp21 = icmp eq i8 %.fr, 98 + br i1 %cmp21, label %if.end32, label %switch.early.test switch.early.test: ; preds = %lor.lhs.false %2 = load i8, ptr %srcchar, align 1 @@ -8374,20 +8374,24 @@ switch.early.test: ; preds = %lor.lhs.false ] land.lhs.true: ; preds = %if.end6 - br i1 %cmp21.old, label %if.end32, label %lor.lhs.false23 + switch i8 %.fr, label %if.then31 [ + i8 98, label %if.end32 + i8 99, label %if.end32 + i8 66, label %if.end32 + ] -lor.lhs.false23: ; preds = %switch.early.test, %land.lhs.true +lor.lhs.false23: ; preds = %switch.early.test switch i8 %.fr, label %if.then31 [ i8 99, label %if.end32 i8 66, label %if.end32 ] -if.then31: ; preds = %lor.lhs.false23 +if.then31: ; preds = %land.lhs.true, %lor.lhs.false23 %3 = load ptr, ptr @PyExc_TypeError, align 8 tail call void @PyErr_SetString(ptr noundef %3, ptr noundef nonnull @.str.75) #11 br label %out -if.end32: ; preds = %lor.lhs.false23, %lor.lhs.false23, %switch.early.test, %switch.early.test, %switch.early.test, %lor.lhs.false, %land.lhs.true +if.end32: ; preds = %land.lhs.true, %land.lhs.true, %land.lhs.true, %lor.lhs.false23, %lor.lhs.false23, %switch.early.test, %switch.early.test, %switch.early.test, %lor.lhs.false %len = getelementptr inbounds nuw i8, ptr %mv, i64 72 %4 = load i64, ptr %len, align 8 %rem = srem i64 %4, %call3 diff --git a/bench/csmith/optimized/StatementGoto.cpp.ll b/bench/csmith/optimized/StatementGoto.cpp.ll index e3ef6404cf7..4ecca19067d 100644 --- a/bench/csmith/optimized/StatementGoto.cpp.ll +++ b/bench/csmith/optimized/StatementGoto.cpp.ll @@ -2313,26 +2313,28 @@ define dso_local noundef zeroext i1 @_ZN13StatementGoto21has_init_skipped_varsEP br label %_ZNSt6vectorIP8VariableSaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEES8_NS6_IPKS1_S3_EET_SC_.exit _ZNSt6vectorIP8VariableSaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEES8_NS6_IPKS1_S3_EET_SC_.exit: ; preds = %11, %2 - %.pn = phi ptr [ %1, %2 ], [ %.019.fr, %11 ] + %.pn = phi ptr [ %1, %2 ], [ %.019, %11 ] %.019.in = getelementptr inbounds nuw i8, ptr %.pn, i64 24 %.019 = load ptr, ptr %.019.in, align 8 - %.019.fr = freeze ptr %.019 - %5 = icmp ne ptr %.019.fr, null - %6 = icmp ne ptr %.019.fr, %0 + %5 = icmp ne ptr %.019, null + %6 = icmp ne ptr %.019, %0 %7 = and i1 %5, %6 %8 = load ptr, ptr %4, align 8 br i1 %7, label %11, label %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader _ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader: ; preds = %_ZNSt6vectorIP8VariableSaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEES8_NS6_IPKS1_S3_EET_SC_.exit %9 = load ptr, ptr %3, align 8 - %10 = icmp ne ptr %8, %9 - %or.cond33.not = and i1 %6, %10 - br i1 %or.cond33.not, label %.lr.ph.split, label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23 + %.not = icmp eq ptr %8, %9 + br i1 %.not, label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23, label %.lr.ph + +.lr.ph: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader + %10 = icmp eq ptr %.019, %0 + br i1 %10, label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23, label %.lr.ph.split 11: ; preds = %_ZNSt6vectorIP8VariableSaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEES8_NS6_IPKS1_S3_EET_SC_.exit - %12 = getelementptr inbounds nuw i8, ptr %.019.fr, i64 80 + %12 = getelementptr inbounds nuw i8, ptr %.019, i64 80 %13 = load ptr, ptr %12, align 8 - %14 = getelementptr inbounds nuw i8, ptr %.019.fr, i64 88 + %14 = getelementptr inbounds nuw i8, ptr %.019, i64 88 %15 = load ptr, ptr %14, align 8 %16 = load ptr, ptr %3, align 8 %17 = ptrtoint ptr %8 to i64 @@ -2342,7 +2344,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader: ; preds = %_ZNSt6vector invoke void @_ZNSt6vectorIP8VariableSaIS1_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEEEvS8_T_S9_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr %20, ptr %13, ptr %15) to label %_ZNSt6vectorIP8VariableSaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEvEES8_NS6_IPKS1_S3_EET_SC_.exit unwind label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split-lp -_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split: ; preds = %.lr.ph.split +_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit: ; preds = %.lr.ph.split %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit @@ -2352,8 +2354,8 @@ _ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split-lp: ; preds = %11 cleanup br label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit -_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split-lp - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split-lp ], [ %lpad.loopexit, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split ] +_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split-lp, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit ], [ %lpad.loopexit.split-lp, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split-lp ] %21 = load ptr, ptr %3, align 8 %.not.i.i.i21 = icmp eq ptr %21, null br i1 %.not.i.i.i21, label %_ZNSt6vectorIP8VariableSaIS1_EED2Ev.exit, label %22 @@ -2366,7 +2368,7 @@ _ZNSt6vectorIP8VariableSaIS1_EED2Ev.exit: ; preds = %_ZNSt6vectorIPK8Var resume { ptr, i32 } %lpad.phi _ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit: ; preds = %37 - %23 = add nuw i64 %.01834, 1 + %23 = add nuw i64 %.01832, 1 %24 = load ptr, ptr %4, align 8 %25 = ptrtoint ptr %24 to i64 %26 = ptrtoint ptr %.pre.pre to i64 @@ -2375,16 +2377,16 @@ _ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit: ; preds = %37 %29 = icmp ult i64 %23, %28 br i1 %29, label %.lr.ph.split, label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit, !llvm.loop !17 -.lr.ph.split: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit - %30 = phi ptr [ %.pre.pre, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit ], [ %9, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader ] - %.01834 = phi i64 [ %23, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit ], [ 0, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader ] - %31 = getelementptr inbounds ptr, ptr %30, i64 %.01834 +.lr.ph.split: ; preds = %.lr.ph, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit + %30 = phi ptr [ %.pre.pre, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit ], [ %9, %.lr.ph ] + %.01832 = phi i64 [ %23, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit ], [ 0, %.lr.ph ] + %31 = getelementptr inbounds ptr, ptr %30, i64 %.01832 %32 = load ptr, ptr %31, align 8 %33 = load ptr, ptr %32, align 8 %34 = getelementptr inbounds nuw i8, ptr %33, i64 32 %35 = load ptr, ptr %34, align 8 %36 = invoke noundef zeroext i1 %35(ptr noundef nonnull align 8 dereferenceable(200) %32, ptr noundef %0) - to label %37 unwind label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit.split + to label %37 unwind label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit.loopexit 37: ; preds = %.lr.ph.split %.pre.pre = load ptr, ptr %3, align 8 @@ -2394,9 +2396,9 @@ _ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit: ; preds = %37, %_ZNSt6vect %.lcssa.ph = xor i1 %36, true br label %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23 -_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23: ; preds = %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader - %38 = phi ptr [ %9, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader ], [ %.pre.pre, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit ] - %.lcssa = phi i1 [ %10, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader ], [ %.lcssa.ph, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit ] +_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23: ; preds = %.lr.ph, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader + %38 = phi ptr [ %9, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader ], [ %.pre.pre, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit ], [ %9, %.lr.ph ] + %.lcssa = phi i1 [ false, %_ZNSt6vectorIPK8VariableSaIS2_EE5clearEv.exit.preheader ], [ %.lcssa.ph, %_ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit23.loopexit ], [ true, %.lr.ph ] %.not.i.i.i24 = icmp eq ptr %38, null br i1 %.not.i.i.i24, label %_ZNSt6vectorIP8VariableSaIS1_EED2Ev.exit25, label %39 @@ -4604,14 +4606,14 @@ define internal void @_GLOBAL__sub_I_StatementGoto.cpp() #13 section ".text.star ret void } -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #14 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #14 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #14 +declare i64 @llvm.umax.i64(i64, i64) #15 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #15 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umin.i64(i64, i64) #15 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 @@ -4633,8 +4635,8 @@ attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(arg attributes #11 = { mustprogress nofree nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #13 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #15 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #16 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #17 = { noreturn nounwind } attributes #18 = { noreturn } diff --git a/bench/curl/optimized/libcurl_la-ftp.ll b/bench/curl/optimized/libcurl_la-ftp.ll index 7a00b1a5e23..a24efd4e897 100644 --- a/bench/curl/optimized/libcurl_la-ftp.ll +++ b/bench/curl/optimized/libcurl_la-ftp.ll @@ -4974,26 +4974,25 @@ return: ; preds = %if.then143, %if.end define internal fastcc i32 @ftp_state_stor_resp(ptr noundef %data, i32 noundef range(i32 1, 0) %ftpcode, i8 noundef zeroext %instate) unnamed_addr #0 { entry: %connected = alloca i8, align 1 + %conn1 = getelementptr i8, ptr %data, i64 32 %cmp = icmp sgt i32 %ftpcode, 399 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry tail call void (ptr, ptr, ...) @Curl_failf(ptr noundef %data, ptr noundef nonnull @.str.110, i32 noundef %ftpcode) #10 - %0 = getelementptr i8, ptr %data, i64 32 - %data.val13 = load ptr, ptr %0, align 8 + %data.val13 = load ptr, ptr %conn1, align 8 %state.i = getelementptr inbounds nuw i8, ptr %data.val13, i64 1102 store i8 0, ptr %state.i, align 2 br label %return if.end: ; preds = %entry - %conn1 = getelementptr inbounds nuw i8, ptr %data, i64 32 - %1 = load ptr, ptr %conn1, align 8 - %state_saved = getelementptr inbounds nuw i8, ptr %1, i64 1103 + %0 = load ptr, ptr %conn1, align 8 + %state_saved = getelementptr inbounds nuw i8, ptr %0, i64 1103 store i8 %instate, ptr %state_saved, align 1 %ftp_use_port = getelementptr inbounds nuw i8, ptr %data, i64 2706 %bf.load = load i64, ptr %ftp_use_port, align 2 - %2 = and i64 %bf.load, 8192 - %tobool.not = icmp eq i64 %2, 0 + %1 = and i64 %bf.load, 8192 + %tobool.not = icmp eq i64 %1, 0 br i1 %tobool.not, label %if.end21, label %if.then2 if.then2: ; preds = %if.end @@ -5005,14 +5004,14 @@ if.then2: ; preds = %if.end br i1 %tobool3.not, label %if.end5, label %return if.end5: ; preds = %if.then2 - %3 = load i8, ptr %connected, align 1 - %tobool6 = trunc i8 %3 to i1 + %2 = load i8, ptr %connected, align 1 + %tobool6 = trunc i8 %2 to i1 br i1 %tobool6, label %return, label %land.lhs.true land.lhs.true: ; preds = %if.end5 %bf.load11 = load i64, ptr %ftp_use_port, align 2 - %4 = and i64 %bf.load11, 536870912 - %tobool15.not = icmp eq i64 %4, 0 + %3 = and i64 %bf.load11, 536870912 + %tobool15.not = icmp eq i64 %3, 0 br i1 %tobool15.not, label %do.end, label %if.then16 if.then16: ; preds = %land.lhs.true @@ -5020,7 +5019,7 @@ if.then16: ; preds = %land.lhs.true br label %do.end do.end: ; preds = %land.lhs.true, %if.then16 - %wait_data_conn = getelementptr inbounds nuw i8, ptr %1, i64 1106 + %wait_data_conn = getelementptr inbounds nuw i8, ptr %0, i64 1106 %bf.load18 = load i8, ptr %wait_data_conn, align 2 %bf.set = or i8 %bf.load18, 32 store i8 %bf.set, ptr %wait_data_conn, align 2 diff --git a/bench/curl/optimized/libcurl_la-smtp.ll b/bench/curl/optimized/libcurl_la-smtp.ll index ff205017370..8c433b85fa8 100644 --- a/bench/curl/optimized/libcurl_la-smtp.ll +++ b/bench/curl/optimized/libcurl_la-smtp.ll @@ -88,13 +88,13 @@ entry: %host.i.i.i = alloca %struct.hostname, align 8 %host39.i.i.i = alloca %struct.hostname, align 8 store i8 0, ptr %done, align 1 + %p.i = getelementptr inbounds nuw i8, ptr %data, i64 392 %arrayidx.i = getelementptr inbounds nuw i8, ptr %data, i64 1864 %0 = load ptr, ptr %arrayidx.i, align 8 %tobool.not.i = icmp eq ptr %0, null br i1 %tobool.not.i, label %if.end, label %smtp_parse_custom_request.exit smtp_parse_custom_request.exit: ; preds = %entry - %p.i = getelementptr inbounds nuw i8, ptr %data, i64 392 %1 = load ptr, ptr %p.i, align 8 %custom1.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %call.i = tail call i32 @Curl_urldecode(ptr noundef nonnull %0, i64 noundef 0, ptr noundef nonnull %custom1.i, ptr noundef null, i32 noundef 3) #8 @@ -108,8 +108,7 @@ if.end: ; preds = %entry, %smtp_parse_ %call.i5 = tail call i32 @Curl_pgrsSetDownloadCounter(ptr noundef nonnull %data, i64 noundef 0) #8 tail call void @Curl_pgrsSetUploadSize(ptr noundef nonnull %data, i64 noundef -1) #8 tail call void @Curl_pgrsSetDownloadSize(ptr noundef nonnull %data, i64 noundef -1) #8 - %p.i.i = getelementptr inbounds nuw i8, ptr %data, i64 392 - %2 = load ptr, ptr %p.i.i, align 8 + %2 = load ptr, ptr %p.i, align 8 %no_body.i.i = getelementptr inbounds nuw i8, ptr %data, i64 411 %bf.load.i.i = load i16, ptr %no_body.i.i, align 1 %3 = and i16 %bf.load.i.i, 4096 @@ -506,7 +505,7 @@ if.end160.thread.i.i.i: ; preds = %land.lhs.true147.i. br label %50 if.then149.i.i.i: ; preds = %land.lhs.true147.i.i.i - %48 = load ptr, ptr %p.i.i, align 8 + %48 = load ptr, ptr %p.i, align 8 %rcpt150.i.i.i = getelementptr inbounds nuw i8, ptr %48, i64 16 %rcpt.0107.i.i.i = load ptr, ptr %rcpt150.i.i.i, align 8 %tobool151108.i.i.i = icmp eq ptr %rcpt.0107.i.i.i, null @@ -645,7 +644,7 @@ land.lhs.true.i: ; preds = %smtp_perform.exit.i br i1 %tobool2.i, label %if.then.i8, label %return if.then.i8: ; preds = %land.lhs.true.i - %64 = load ptr, ptr %p.i.i, align 8 + %64 = load ptr, ptr %p.i, align 8 %65 = load i32, ptr %64, align 8 %cmp.not.i.i = icmp eq i32 %65, 0 br i1 %cmp.not.i.i, label %return, label %if.then.i10.i diff --git a/bench/darktable/optimized/introspection_demosaic.c.ll b/bench/darktable/optimized/introspection_demosaic.c.ll index de9a44b25b3..9e22e8c1ea3 100644 --- a/bench/darktable/optimized/introspection_demosaic.c.ll +++ b/bench/darktable/optimized/introspection_demosaic.c.ll @@ -7119,6 +7119,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde br i1 %2197, label %.loopexit253, label %.preheader252 .preheader252: ; preds = %359 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %361 = load i32, ptr %4, align 4, !tbaa !25 %invariant.op301 = add i32 %361, 600 %362 = load i32, ptr %53, align 4, !tbaa !27 @@ -7130,6 +7131,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde br i1 %2198, label %.loopexit251, label %.preheader250 .preheader250: ; preds = %.loopexit253 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %364 = load i32, ptr %4, align 4, !tbaa !25 %invariant.op305 = add i32 %364, 601 %365 = load i32, ptr %53, align 4, !tbaa !27 @@ -7140,6 +7142,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde br i1 %2199, label %.loopexit249, label %.preheader248 .preheader248: ; preds = %.loopexit251 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %366 = load i32, ptr %4, align 4, !tbaa !25 %invariant.op309 = add i32 %366, 600 %367 = load i32, ptr %53, align 4, !tbaa !27 @@ -7436,6 +7439,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde %567 = call i64 @llvm.smax.i64(i64 %563, i64 %566) %568 = trunc i64 %567 to i32 %569 = add i32 %568, %562 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %570 = load i32, ptr %4, align 4, !tbaa !25 %571 = add nsw i32 %570, %559 %572 = load i32, ptr %53, align 4, !tbaa !27 @@ -7486,6 +7490,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde br label %655 612: ; preds = %607 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %613 = load i8, ptr %602, align 1, !tbaa !105 %614 = icmp eq i8 %579, %613 br i1 %614, label %648, label %.preheader323 @@ -7551,6 +7556,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde br i1 %657, label %.loopexit238, label %607 658: ; preds = %548 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %659 = load i32, ptr %4, align 4, !tbaa !25 %660 = add nsw i32 %659, %559 %661 = load i32, ptr %53, align 4, !tbaa !27 @@ -8183,6 +8189,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde br i1 %1224, label %.preheader257, label %.critedge .preheader257: ; preds = %1221 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] %1226 = load i32, ptr %4, align 4, !tbaa !25 %invariant.op = add i32 %1226, 600 %1227 = load i32, ptr %53, align 4, !tbaa !27 @@ -8332,6 +8339,7 @@ define internal fastcc void @xtrans_markesteijn_interpolate(ptr nocapture nounde 1337: ; preds = %1334 %1338 = sext i32 %1223 to i64 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %53, i64 32) ] br label %1339 1339: ; preds = %1513, %1337 diff --git a/bench/darktable/optimized/introspection_retouch.c.ll b/bench/darktable/optimized/introspection_retouch.c.ll index 4e8adb4a821..57c495eb54a 100644 --- a/bench/darktable/optimized/introspection_retouch.c.ll +++ b/bench/darktable/optimized/introspection_retouch.c.ll @@ -10418,14 +10418,15 @@ define internal fastcc void @_retouch_fill(ptr nocapture noundef %0, ptr nocaptu %12 = load i32, ptr %11, align 4, !tbaa !218 %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 %14 = load i32, ptr %13, align 4, !tbaa !218 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %3, i64 32) ] %15 = icmp sgt i32 %12, 0 br i1 %15, label %16, label %.loopexit7 16: ; preds = %10 - %17 = load i32, ptr %1, align 4, !tbaa !217 - %18 = load i32, ptr %3, align 4, !tbaa !217 - %19 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %20 = load i32, ptr %19, align 4, !tbaa !215 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %18 = load i32, ptr %1, align 4, !tbaa !217 + %19 = load i32, ptr %3, align 4, !tbaa !217 + %20 = load i32, ptr %17, align 4, !tbaa !215 %21 = getelementptr inbounds nuw i8, ptr %3, i64 4 %22 = load i32, ptr %21, align 4, !tbaa !215 %23 = zext nneg i32 %12 to i64 @@ -10445,7 +10446,7 @@ define internal fastcc void @_retouch_fill(ptr nocapture noundef %0, ptr nocaptu %37 = insertelement <8 x float> poison, float %4, i64 0 %38 = shufflevector <8 x float> %37, <8 x float> poison, <8 x i32> zeroinitializer %39 = icmp eq i64 %36, %23 - %40 = sub i32 %18, %17 + %40 = sub i32 %19, %18 br label %41 41: ; preds = %.loopexit, %16 @@ -10587,15 +10588,16 @@ define internal fastcc void @rt_copy_mask_to_alpha(ptr nocapture noundef %0, ptr %12 = load i32, ptr %11, align 4, !tbaa !218 %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 %14 = load i32, ptr %13, align 4, !tbaa !218 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %4, i64 32) ] %15 = icmp sgt i32 %12, 0 %16 = sext i32 %2 to i64 br i1 %15, label %17, label %.loopexit13 17: ; preds = %10 - %18 = load i32, ptr %1, align 4, !tbaa !217 - %19 = load i32, ptr %4, align 4, !tbaa !217 - %20 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %21 = load i32, ptr %20, align 4, !tbaa !215 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %19 = load i32, ptr %1, align 4, !tbaa !217 + %20 = load i32, ptr %4, align 4, !tbaa !217 + %21 = load i32, ptr %18, align 4, !tbaa !215 %22 = getelementptr inbounds nuw i8, ptr %4, i64 4 %23 = load i32, ptr %22, align 4, !tbaa !215 %24 = zext nneg i32 %12 to i64 @@ -10605,7 +10607,7 @@ define internal fastcc void @rt_copy_mask_to_alpha(ptr nocapture noundef %0, ptr %28 = and i32 %12, 2147483644 %29 = icmp eq i32 %26, 0 %30 = sub i32 %23, %21 - %31 = sub i32 %19, %18 + %31 = sub i32 %20, %19 br i1 %27, label %.split.us, label %.split .split.us: ; preds = %17 diff --git a/bench/delta-rs/optimized/c3ex4j3d7dkyaj3.ll b/bench/delta-rs/optimized/c3ex4j3d7dkyaj3.ll index f189e0decfb..dd91c619220 100644 --- a/bench/delta-rs/optimized/c3ex4j3d7dkyaj3.ll +++ b/bench/delta-rs/optimized/c3ex4j3d7dkyaj3.ll @@ -9469,12 +9469,7 @@ define internal fastcc void @"_ZN4core3ptr312drop_in_place$LT$object_store..util i8 5, label %25 ] -common.ret.sink.split: ; preds = %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17hd9cf192f9135ddc7E.exit", %5 - %.sink = phi ptr [ %6, %5 ], [ %36, %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17hd9cf192f9135ddc7E.exit" ] - tail call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfeea24355e442b03E.llvm.2651239618181311204"(ptr noalias noundef nonnull align 8 dereferenceable(16) %.sink) - br label %common.ret - -common.ret: ; preds = %common.ret.sink.split, %1 +common.ret: ; preds = %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17h3db199be60ad1618E.exit", %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17h3db199be60ad1618E.exit7", %1 ret void 5: ; preds = %1 @@ -9486,7 +9481,7 @@ common.ret: ; preds = %common.ret.sink.spl %9 = load ptr, ptr %8, align 8, !alias.scope !1736, !nonnull !4, !align !31, !noundef !4 %10 = load ptr, ptr %9, align 8, !invariant.load !4, !noalias !1736, !nonnull !4 invoke void %10(ptr noundef nonnull align 1 %7) - to label %common.ret.sink.split unwind label %11, !noalias !1736 + to label %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17h3db199be60ad1618E.exit" unwind label %11, !noalias !1736 11: ; preds = %5 %12 = landingpad { ptr, i32 } @@ -9504,6 +9499,10 @@ common.resume: ; preds = %41, %"_ZN4core3ptr4 %common.resume.op = phi { ptr, i32 } [ %12, %11 ], [ %.pn2.pn, %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17hd9cf192f9135ddc7E.exit13" ], [ %42, %41 ] resume { ptr, i32 } %common.resume.op +"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17h3db199be60ad1618E.exit": ; preds = %5 + tail call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfeea24355e442b03E.llvm.2651239618181311204"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) + br label %common.ret + 15: ; preds = %1 %16 = getelementptr inbounds nuw i8, ptr %0, i64 64 tail call void @llvm.experimental.noalias.scope.decl(metadata !1737) @@ -9553,7 +9552,7 @@ common.resume: ; preds = %41, %"_ZN4core3ptr4 %39 = load ptr, ptr %38, align 8, !alias.scope !1757, !nonnull !4, !align !31, !noundef !4 %40 = load ptr, ptr %39, align 8, !invariant.load !4, !noalias !1757, !nonnull !4 invoke void %40(ptr noundef nonnull align 1 %37) - to label %common.ret.sink.split unwind label %41, !noalias !1757 + to label %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17h3db199be60ad1618E.exit7" unwind label %41, !noalias !1757 41: ; preds = %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17hd9cf192f9135ddc7E.exit" %42 = landingpad { ptr, i32 } @@ -9567,6 +9566,10 @@ common.resume: ; preds = %41, %"_ZN4core3ptr4 tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #17 unreachable +"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17h3db199be60ad1618E.exit7": ; preds = %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17hd9cf192f9135ddc7E.exit" + tail call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfeea24355e442b03E.llvm.2651239618181311204"(ptr noalias noundef nonnull align 8 dereferenceable(16) %36) + br label %common.ret + 45: ; preds = %15 %46 = landingpad { ptr, i32 } cleanup diff --git a/bench/delta-rs/optimized/rqh7tdav00zdgx4.ll b/bench/delta-rs/optimized/rqh7tdav00zdgx4.ll index 8eaa093ea0f..7bac96de0cc 100644 --- a/bench/delta-rs/optimized/rqh7tdav00zdgx4.ll +++ b/bench/delta-rs/optimized/rqh7tdav00zdgx4.ll @@ -6540,8 +6540,8 @@ define hidden void @_ZN14deltalake_core7storage18url_prefix_handler17h7a23558b11 "_ZN5alloc3vec10partial_eq117_$LT$impl$u20$core..cmp..PartialEq$LT$alloc..vec..Vec$LT$U$C$A2$GT$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A1$GT$$GT$2eq17hc88314558f090f1fE.exit": ; preds = %14 %17 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %.val23 = load ptr, ptr %17, align 8, !nonnull !9, !noundef !9 %18 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %.val23 = load ptr, ptr %17, align 8, !nonnull !9, !noundef !9 %.val = load ptr, ptr %18, align 8, !nonnull !9, !noundef !9 %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.val, ptr nonnull readonly align 1 %.val23, i64 %.val22), !alias.scope !1169 %19 = icmp eq i32 %bcmp.i.i, 0 @@ -7367,12 +7367,7 @@ define internal fastcc void @"_ZN4core3ptr312drop_in_place$LT$object_store..util i8 5, label %25 ] -common.ret.sink.split: ; preds = %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17h1d52bc23863ba8f0E.exit", %5 - %.sink = phi ptr [ %6, %5 ], [ %36, %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17h1d52bc23863ba8f0E.exit" ] - tail call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hefa4f78d2434ee2aE.llvm.6150823513714300492"(ptr noalias noundef nonnull align 8 dereferenceable(16) %.sink) - br label %common.ret - -common.ret: ; preds = %common.ret.sink.split, %1 +common.ret: ; preds = %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17hab85087a8768b65bE.exit", %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17hab85087a8768b65bE.exit7", %1 ret void 5: ; preds = %1 @@ -7384,7 +7379,7 @@ common.ret: ; preds = %common.ret.sink.spl %9 = load ptr, ptr %8, align 8, !alias.scope !1364, !nonnull !9, !align !10, !noundef !9 %10 = load ptr, ptr %9, align 8, !invariant.load !9, !noalias !1364, !nonnull !9 invoke void %10(ptr noundef nonnull align 1 %7) - to label %common.ret.sink.split unwind label %11, !noalias !1364 + to label %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17hab85087a8768b65bE.exit" unwind label %11, !noalias !1364 11: ; preds = %5 %12 = landingpad { ptr, i32 } @@ -7402,6 +7397,10 @@ common.resume: ; preds = %41, %"_ZN4core3ptr4 %common.resume.op = phi { ptr, i32 } [ %12, %11 ], [ %.pn2.pn, %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17h1d52bc23863ba8f0E.exit13" ], [ %42, %41 ] resume { ptr, i32 } %common.resume.op +"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17hab85087a8768b65bE.exit": ; preds = %5 + tail call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hefa4f78d2434ee2aE.llvm.6150823513714300492"(ptr noalias noundef nonnull align 8 dereferenceable(16) %6) + br label %common.ret + 15: ; preds = %1 %16 = getelementptr inbounds nuw i8, ptr %0, i64 64 tail call void @llvm.experimental.noalias.scope.decl(metadata !1365) @@ -7451,7 +7450,7 @@ common.resume: ; preds = %41, %"_ZN4core3ptr4 %39 = load ptr, ptr %38, align 8, !alias.scope !1385, !nonnull !9, !align !10, !noundef !9 %40 = load ptr, ptr %39, align 8, !invariant.load !9, !noalias !1385, !nonnull !9 invoke void %40(ptr noundef nonnull align 1 %37) - to label %common.ret.sink.split unwind label %41, !noalias !1385 + to label %"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17hab85087a8768b65bE.exit7" unwind label %41, !noalias !1385 41: ; preds = %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17h1d52bc23863ba8f0E.exit" %42 = landingpad { ptr, i32 } @@ -7465,6 +7464,10 @@ common.resume: ; preds = %41, %"_ZN4core3ptr4 tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #23 unreachable +"_ZN4core3ptr220drop_in_place$LT$core..pin..Pin$LT$alloc..boxed..Box$LT$dyn$u20$futures_core..stream..Stream$u2b$Item$u20$$u3d$$u20$core..result..Result$LT$bytes..bytes..Bytes$C$object_store..Error$GT$$u2b$core..marker..Send$GT$$GT$$GT$17hab85087a8768b65bE.exit7": ; preds = %"_ZN4core3ptr40drop_in_place$LT$bytes..bytes..Bytes$GT$17h1d52bc23863ba8f0E.exit" + tail call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hefa4f78d2434ee2aE.llvm.6150823513714300492"(ptr noalias noundef nonnull align 8 dereferenceable(16) %36) + br label %common.ret + 45: ; preds = %15 %46 = landingpad { ptr, i32 } cleanup diff --git a/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll b/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll index f4ea4476f1c..bde898c7270 100644 --- a/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll +++ b/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll @@ -236,8 +236,8 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$ "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E.exit.i.i.i.i": ; preds = %23 %26 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 8 - %.val3.i.i.i.i = load ptr, ptr %26, align 8, !alias.scope !59, !noalias !64, !nonnull !4, !noundef !4 %27 = getelementptr inbounds i8, ptr %9, i64 -48 + %.val3.i.i.i.i = load ptr, ptr %26, align 8, !alias.scope !59, !noalias !64, !nonnull !4, !noundef !4 %.val.i.i.i.i = load ptr, ptr %27, align 8, !alias.scope !62, !noalias !63, !nonnull !4, !noundef !4 %bcmp.i.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.val.i.i.i.i, ptr nonnull readonly align 1 %.val3.i.i.i.i, i64 %.val2.i.i.i.i), !alias.scope !65, !noalias !69 %28 = icmp eq i32 %bcmp.i.i.i.i.i, 0 @@ -253,8 +253,8 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$ "_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17hbc8ecb96583b806aE.llvm.1394800311566639068.exit.i.i.i.i.i": ; preds = %29 %32 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 32 - %.val7.i.i.i.i = load ptr, ptr %32, align 8, !alias.scope !59, !noalias !64, !nonnull !4, !noundef !4 %33 = getelementptr inbounds i8, ptr %9, i64 -24 + %.val7.i.i.i.i = load ptr, ptr %32, align 8, !alias.scope !59, !noalias !64, !nonnull !4, !noundef !4 %.val5.i.i.i.i = load ptr, ptr %33, align 8, !alias.scope !62, !noalias !63, !nonnull !4, !noundef !4 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !70 %34 = getelementptr inbounds i8, ptr %.val5.i.i.i.i, i64 %.val6.i.i.i.i @@ -767,7 +767,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw15Bucket$LT$T$GT$15from_bas } ; Function Attrs: inlinehint nonlazybind uwtable -define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hd4e7a112f639b3cdE.llvm.10274694778451236312"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %2) unnamed_addr #3 personality ptr @rust_eh_personality { +define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hd4e7a112f639b3cdE.llvm.10274694778451236312"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(48) %2) unnamed_addr #3 personality ptr @rust_eh_personality { %4 = alloca { { ptr, ptr }, { ptr, ptr }, i64, i64, i64 }, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !119) %5 = lshr i64 %1, 57 @@ -787,10 +787,10 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hd4e7 %15 = lshr i128 %13, 64 %16 = trunc nuw i128 %15 to i64 %17 = inttoptr i64 %16 to ptr - %18 = getelementptr inbounds nuw i8, ptr %2, i64 40 - %.val8.i.i.i = load i64, ptr %18, align 8 - %19 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %.val7.i.i.i = load ptr, ptr %19, align 8, !nonnull !4 + %18 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %19 = getelementptr inbounds nuw i8, ptr %2, i64 40 + %.val8.i.i.i = load i64, ptr %19, align 8 + %.val7.i.i.i = load ptr, ptr %18, align 8, !nonnull !4 %20 = getelementptr inbounds i8, ptr %.val7.i.i.i, i64 %.val8.i.i.i br label %21 @@ -928,10 +928,10 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E.exit.i.i": ; preds = %23 %26 = getelementptr inbounds nuw i8, ptr %.val, i64 8 - %.val3.i.i = load ptr, ptr %26, align 8, !alias.scope !154, !noalias !156, !nonnull !4, !noundef !4 %27 = getelementptr inbounds i8, ptr %9, i64 -48 + %.val3.i.i = load ptr, ptr %26, align 8, !alias.scope !154, !noalias !156, !nonnull !4, !noundef !4 %.val.i.i = load ptr, ptr %27, align 8, !alias.scope !156, !noalias !154, !nonnull !4, !noundef !4 - %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.val.i.i, ptr nonnull readonly align 1 %.val3.i.i, i64 %.val2.i.i), !alias.scope !157, !noalias !161 + %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.val.i.i, ptr nonnull readonly align 1 %.val3.i.i, i64 %.val2.i.i), !alias.scope !157 %28 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %28, label %29, label %"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$GT$11rustc_entry28_$u7b$$u7b$closure$u7d$$u7d$17heec192a577351b4aE.exit" @@ -945,16 +945,16 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find "_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17hbc8ecb96583b806aE.llvm.1394800311566639068.exit.i.i.i": ; preds = %29 %32 = getelementptr inbounds nuw i8, ptr %.val, i64 32 - %.val7.i.i = load ptr, ptr %32, align 8, !alias.scope !154, !noalias !156, !nonnull !4, !noundef !4 %33 = getelementptr inbounds i8, ptr %9, i64 -24 + %.val7.i.i = load ptr, ptr %32, align 8, !alias.scope !154, !noalias !156, !nonnull !4, !noundef !4 %.val5.i.i = load ptr, ptr %33, align 8, !alias.scope !156, !noalias !154, !nonnull !4, !noundef !4 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !162 + call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !161 %34 = getelementptr inbounds i8, ptr %.val5.i.i, i64 %.val6.i.i %35 = getelementptr inbounds i8, ptr %.val7.i.i, i64 %.val6.i.i - call void @"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$3new17hcaca47f46a7c0cb9E"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr }, { ptr, ptr }, i64, i64, i64 }) align 8 dereferenceable(56) %3, ptr noundef nonnull readonly align 1 %.val5.i.i, ptr noundef nonnull readonly %34, ptr noundef nonnull readonly align 1 %.val7.i.i, ptr noundef nonnull readonly %35), !noalias !161 - %36 = call noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fold17h126e39bd83611248E.llvm.1394800311566639068(ptr noalias noundef nonnull align 8 dereferenceable(56) %3), !noalias !161 + call void @"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$3new17hcaca47f46a7c0cb9E"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr }, { ptr, ptr }, i64, i64, i64 }) align 8 dereferenceable(56) %3, ptr noundef nonnull readonly align 1 %.val5.i.i, ptr noundef nonnull readonly %34, ptr noundef nonnull readonly align 1 %.val7.i.i, ptr noundef nonnull readonly %35) + %36 = call noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fold17h126e39bd83611248E.llvm.1394800311566639068(ptr noalias noundef nonnull align 8 dereferenceable(56) %3) %37 = xor i1 %36, true - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !162 + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !161 br label %"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$GT$11rustc_entry28_$u7b$$u7b$closure$u7d$$u7d$17heec192a577351b4aE.exit" "_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..HashMap$LT$K$C$V$C$S$C$A$GT$$GT$11rustc_entry28_$u7b$$u7b$closure$u7d$$u7d$17heec192a577351b4aE.exit": ; preds = %2, %19, %23, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E.exit.i.i", %29, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17hbc8ecb96583b806aE.llvm.1394800311566639068.exit.i.i.i" @@ -1142,7 +1142,7 @@ attributes #25 = { cold noreturn nounwind } !66 = distinct !{!66, !67, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E: argument 0"} !67 = distinct !{!67, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E"} !68 = distinct !{!68, !67, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E: argument 1"} -!69 = !{!57, !60, !54, !50, !45, !48} +!69 = !{!50, !45, !48} !70 = !{!71, !73, !57, !60, !54, !50, !45, !48} !71 = distinct !{!71, !72, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE: argument 0"} !72 = distinct !{!72, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE"} @@ -1216,7 +1216,7 @@ attributes #25 = { cold noreturn nounwind } !140 = distinct !{!140, !141, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E: argument 0"} !141 = distinct !{!141, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E"} !142 = distinct !{!142, !141, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E: argument 1"} -!143 = !{!132, !136, !128, !137, !120, !123} +!143 = !{!137, !120, !123} !144 = !{!145, !147, !132, !136, !128, !137, !120, !123} !145 = distinct !{!145, !146, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE: argument 0"} !146 = distinct !{!146, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE"} @@ -1234,8 +1234,7 @@ attributes #25 = { cold noreturn nounwind } !158 = distinct !{!158, !159, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E: argument 0"} !159 = distinct !{!159, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E"} !160 = distinct !{!160, !159, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E: argument 1"} -!161 = !{!152, !155, !149} -!162 = !{!163, !165, !152, !155, !149} -!163 = distinct !{!163, !164, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE: argument 0"} -!164 = distinct !{!164, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE"} -!165 = distinct !{!165, !164, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE: argument 1"} +!161 = !{!162, !164, !152, !155, !149} +!162 = distinct !{!162, !163, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE: argument 0"} +!163 = distinct !{!163, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE"} +!164 = distinct !{!164, !163, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h781d2f0a335a696eE: argument 1"} diff --git a/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll b/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll index e576850c492..38fe3dba56a 100644 --- a/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll +++ b/bench/diesel-rs/optimized/4evqpcg6dxygah01.ll @@ -2779,7 +2779,7 @@ define void @"_ZN17all_about_updates1_121_$LT$impl$u20$diesel..query_builder..up } ; Function Attrs: nonlazybind uwtable -define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$all_about_updates..update_with_option..PostForm$GT$12as_changeset17h1ef7a5fe6bd57aafE"(ptr noalias nocapture noundef writeonly sret({ { ptr, i64 }, { ptr, i64 } }) align 8 dereferenceable(32) initializes((0, 32)) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #0 personality ptr @rust_eh_personality { +define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$all_about_updates..update_with_option..PostForm$GT$12as_changeset17h1ef7a5fe6bd57aafE"(ptr noalias nocapture noundef writeonly sret({ { ptr, i64 }, { ptr, i64 } }) align 8 dereferenceable(32) initializes((0, 32)) %0, ptr noalias nocapture noundef align 8 dereferenceable(32) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = load ptr, ptr %1, align 8, !align !168, !noundef !9 %4 = icmp eq ptr %3, null br i1 %4, label %12, label %5 @@ -2820,7 +2820,7 @@ define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diese br i1 %24, label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i", label %25 25: ; preds = %23 - %26 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h7b04bb07f3008016E"(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0, i64 noundef %.sroa.5.0), !noalias !443 + %26 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h7b04bb07f3008016E"(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0, i64 noundef %.sroa.5.0), !noalias !440 %27 = extractvalue { ptr, i64 } %26, 0 %28 = extractvalue { ptr, i64 } %26, 1 br label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" @@ -2832,7 +2832,7 @@ define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diese br i1 %29, label %"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE.exit", label %30 30: ; preds = %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" - %31 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h0275eab74fdbdf97E"(ptr noalias noundef nonnull readonly align 1 %.sroa.04.0, i64 noundef %.sroa.55.0), !noalias !443 + %31 = tail call { ptr, i64 } @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h0275eab74fdbdf97E"(ptr noalias noundef nonnull readonly align 1 %.sroa.04.0, i64 noundef %.sroa.55.0), !noalias !440 %32 = extractvalue { ptr, i64 } %31, 0 %33 = extractvalue { ptr, i64 } %31, 1 br label %"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE.exit" @@ -2840,13 +2840,13 @@ define void @"_ZN17all_about_updates18update_with_option1_141_$LT$impl$u20$diese "_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE.exit": ; preds = %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i", %30 %.sroa.02.0.i2.i = phi ptr [ %32, %30 ], [ null, %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" ] %.sroa.33.0.i3.i = phi i64 [ %33, %30 ], [ undef, %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438.exit.i" ] - store ptr %.sroa.02.0.i.i, ptr %0, align 8, !alias.scope !440, !noalias !445 + store ptr %.sroa.02.0.i.i, ptr %0, align 8, !alias.scope !440, !noalias !443 %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.33.0.i.i, ptr %34, align 8, !alias.scope !440, !noalias !445 + store i64 %.sroa.33.0.i.i, ptr %34, align 8, !alias.scope !440, !noalias !443 %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %.sroa.02.0.i2.i, ptr %35, align 8, !alias.scope !440, !noalias !445 + store ptr %.sroa.02.0.i2.i, ptr %35, align 8, !alias.scope !440, !noalias !443 %36 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %.sroa.33.0.i3.i, ptr %36, align 8, !alias.scope !440, !noalias !445 + store i64 %.sroa.33.0.i3.i, ptr %36, align 8, !alias.scope !440, !noalias !443 ret void } @@ -2877,7 +2877,7 @@ define { ptr, ptr } @"_ZN17all_about_updates18update_with_option1_145_$LT$impl$u br i1 %13, label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h296a56459d25f7deE.llvm.12703545329642850438.exit.i", label %14 14: ; preds = %12 - %15 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hc6e54cd8c9d4dfeeE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) dereferenceable_or_null(16) %.07), !noalias !446 + %15 = tail call noundef align 8 dereferenceable(16) ptr @"_ZN137_$LT$diesel..expression..operators..Eq$LT$Left$C$Right$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hc6e54cd8c9d4dfeeE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) dereferenceable_or_null(16) %.07), !noalias !445 br label %"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h296a56459d25f7deE.llvm.12703545329642850438.exit.i" "_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h296a56459d25f7deE.llvm.12703545329642850438.exit.i": ; preds = %14, %12 @@ -3527,9 +3527,8 @@ attributes #15 = { noreturn } !440 = !{!441} !441 = distinct !{!441, !442, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE: argument 0"} !442 = distinct !{!442, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE"} -!443 = !{!441, !444} +!443 = !{!444} !444 = distinct !{!444, !442, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17h0b9e71c3760be6ceE: argument 1"} -!445 = !{!444} -!446 = !{!447} -!447 = distinct !{!447, !448, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E: argument 1"} -!448 = distinct !{!448, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E"} +!445 = !{!446} +!446 = distinct !{!446, !447, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E: argument 1"} +!447 = distinct !{!447, !"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query_builder..update_statement..changeset..AsChangeset$u20$for$u20$$LP$T0$C$T1$RP$$GT$12as_changeset17hfc757bb5597d52f6E"} diff --git a/bench/double_conversion/optimized/bignum.cc.ll b/bench/double_conversion/optimized/bignum.cc.ll index 15bc44a8990..8b7404d48e1 100644 --- a/bench/double_conversion/optimized/bignum.cc.ll +++ b/bench/double_conversion/optimized/bignum.cc.ll @@ -45,8 +45,8 @@ if.end: ; preds = %if.then, %entry ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: write) uwtable -define void @_ZN17double_conversion6Bignum12AssignUInt64Em(ptr nocapture noundef nonnull writeonly align 4 dereferenceable(516) initializes((0, 4)) %this, i64 noundef %value) local_unnamed_addr #2 align 2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: write, inaccessiblemem: write) uwtable +define void @_ZN17double_conversion6Bignum12AssignUInt64Em(ptr nocapture noundef nonnull align 4 dereferenceable(516) initializes((0, 4)) %this, i64 noundef %value) local_unnamed_addr #2 align 2 { entry: store i16 0, ptr %this, align 4 %exponent_.i = getelementptr inbounds nuw i8, ptr %this, i64 2 @@ -255,12 +255,12 @@ _ZN17double_conversion6Bignum9AddUInt64Em.exit33: ; preds = %_ZN17double_convers land.rhs.lr.ph.i: ; preds = %_ZN17double_conversion6Bignum9AddUInt64Em.exit33 %bigits_buffer_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 4 + %7 = zext nneg i16 %.pr.i to i64 br label %land.rhs.i land.rhs.i: ; preds = %while.body.i, %land.rhs.lr.ph.i - %7 = phi i16 [ %.pr.i, %land.rhs.lr.ph.i ], [ %dec.i, %while.body.i ] - %conv.i35 = zext nneg i16 %7 to i64 - %sub.i36 = add nuw nsw i64 %conv.i35, 4294967295 + %indvars.iv50 = phi i64 [ %indvars.iv.next51, %while.body.i ], [ %7, %land.rhs.lr.ph.i ] + %sub.i36 = add nuw nsw i64 %indvars.iv50, 4294967295 %idxprom.i.i = and i64 %sub.i36, 4294967295 %arrayidx.i.i37 = getelementptr inbounds nuw [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %idxprom.i.i %8 = load i32, ptr %arrayidx.i.i37, align 4 @@ -268,9 +268,10 @@ land.rhs.i: ; preds = %while.body.i, %land br i1 %cmp4.i, label %while.body.i, label %_ZN17double_conversion6Bignum5ClampEv.exit while.body.i: ; preds = %land.rhs.i - %dec.i = add nsw i16 %7, -1 - store i16 %dec.i, ptr %this, align 4 - %cmp.i38 = icmp sgt i16 %7, 1 + %indvars.iv.next51 = add nsw i64 %indvars.iv50, -1 + %9 = trunc nuw nsw i64 %indvars.iv.next51 to i16 + store i16 %9, ptr %this, align 4 + %cmp.i38 = icmp sgt i64 %indvars.iv50, 1 br i1 %cmp.i38, label %land.rhs.i, label %if.then.i, !llvm.loop !9 while.end.i: ; preds = %_ZN17double_conversion6Bignum9AddUInt64Em.exit33 @@ -1689,7 +1690,7 @@ _ZN17double_conversion6Bignum5ClampEv.exit: ; preds = %land.rhs.i, %while. declare void @abort() local_unnamed_addr #5 ; Function Attrs: mustprogress nofree nounwind uwtable -define void @_ZN17double_conversion6Bignum17AssignPowerUInt16Eti(ptr nocapture noundef nonnull align 4 dereferenceable(516) initializes((0, 4)) %this, i16 noundef zeroext %base, i32 noundef %power_exponent) local_unnamed_addr #4 align 2 { +define void @_ZN17double_conversion6Bignum17AssignPowerUInt16Eti(ptr noundef nonnull align 4 dereferenceable(516) initializes((0, 4)) %this, i16 noundef zeroext %base, i32 noundef %power_exponent) local_unnamed_addr #4 align 2 { entry: %cmp = icmp eq i32 %power_exponent, 0 br i1 %cmp, label %if.then, label %if.end @@ -2834,7 +2835,7 @@ declare i16 @llvm.smin.i16(i16, i16) #8 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress nofree norecurse nosync nounwind memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { mustprogress nofree norecurse nosync nounwind memory(argmem: write, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nofree nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { cold nofree noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/eastl/optimized/TestSegmentedVector.cpp.ll b/bench/eastl/optimized/TestSegmentedVector.cpp.ll index ae172659c57..1043a21f480 100644 --- a/bench/eastl/optimized/TestSegmentedVector.cpp.ll +++ b/bench/eastl/optimized/TestSegmentedVector.cpp.ll @@ -2451,6 +2451,8 @@ while.end: ; preds = %_ZN5eastl9allocator %add.ptr.idx = mul i64 %10, 24 %11 = getelementptr i8, ptr %segment.0.lcssa, i64 %add.ptr.idx %add.ptr.ptr = getelementptr i8, ptr %11, i64 16 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject16sMagicErrorCountE, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject8sTOCountE, i64 64) ] %cmp4.not20 = icmp eq i64 %10, 0 br i1 %cmp4.not20, label %delete.notnull.i12, label %for.body.preheader @@ -3901,9 +3903,9 @@ _ZNK5eastl16segmented_vectorIiLm4ENS_9allocatorEE4sizeEv.exit360: ; preds = %cal %retval.0.i.i337 = phi ptr [ %add.ptr.i.i341, %if.then2.i.i338 ], [ %mData6.i.i336, %call.i.i.i.i.i.noexc347 ] store i32 46, ptr %retval.0.i.i337, align 4 %104 = load i64, ptr %mSegmentCount.i249, align 8 + %105 = getelementptr inbounds nuw i8, ptr %103, i64 8 %sub.i356 = shl i64 %104, 2 %mul.i357 = add i64 %sub.i356, -4 - %105 = getelementptr inbounds nuw i8, ptr %103, i64 8 %106 = load i64, ptr %105, align 8 %add.i358 = add i64 %mul.i357, %106 %107 = icmp eq i64 %add.i358, 5 @@ -4231,6 +4233,8 @@ while.end: ; preds = %_ZN5eastl9allocator %add.ptr.idx = mul i64 %10, 24 %11 = getelementptr i8, ptr %segment.0.lcssa, i64 %add.ptr.idx %add.ptr.ptr = getelementptr i8, ptr %11, i64 16 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject16sMagicErrorCountE, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject8sTOCountE, i64 64) ] %cmp4.not20 = icmp eq i64 %10, 0 br i1 %cmp4.not20, label %delete.notnull.i12, label %for.body.preheader diff --git a/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll b/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll index d32196c87c7..7b66ee1c268 100644 --- a/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll +++ b/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll @@ -105,7 +105,6 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map %4 = getelementptr inbounds i8, ptr %3, i64 -8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = load ptr, ptr %0, align 8, !nonnull !4, !align !5, !noundef !4 - tail call void @llvm.experimental.noalias.scope.decl(metadata !14) %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 %8 = load i64, ptr %7, align 8, !alias.scope !14, !noalias !17, !noundef !4 %9 = icmp ult i64 %5, %8 @@ -436,7 +435,7 @@ attributes #12 = { cold noreturn nounwind } !16 = distinct !{!16, !"_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.16079354848027093366"} !17 = !{!18} !18 = distinct !{!18, !16, !"_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.16079354848027093366: argument 1"} -!19 = !{!20, !15} +!19 = !{!20} !20 = distinct !{!20, !21, !"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.16079354848027093366: argument 0"} !21 = distinct !{!21, !"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.16079354848027093366"} !22 = !{!23, !25} diff --git a/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll b/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll index 7c4ab4af911..dbbf5c5ab20 100644 --- a/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll +++ b/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll @@ -67,11 +67,11 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN100_$LT$index br i1 %31, label %34, label %32, !prof !44 32: ; preds = %23 - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %29, i64 noundef %30, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.302fcb1e5dd85ace1084fdb313415a8e.6.llvm.13994044477760586293) #12 + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %29, i64 noundef %30, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.302fcb1e5dd85ace1084fdb313415a8e.6.llvm.13994044477760586293) #13 unreachable 33: ; preds = %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit.i", %3 - call void @_ZN4core6option13expect_failed17h7f842a57ad883afaE(ptr noalias noundef nonnull readonly align 1 @anon.302fcb1e5dd85ace1084fdb313415a8e.0.llvm.13994044477760586293, i64 noundef 23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #12 + call void @_ZN4core6option13expect_failed17h7f842a57ad883afaE(ptr noalias noundef nonnull readonly align 1 @anon.302fcb1e5dd85ace1084fdb313415a8e.0.llvm.13994044477760586293, i64 noundef 23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #13 unreachable 34: ; preds = %23 @@ -331,7 +331,7 @@ define hidden noundef align 8 dereferenceable_or_null(40) ptr @"_ZN8indexmap3map br label %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit.thread" 34: ; preds = %22 - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %28, i64 noundef %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.302fcb1e5dd85ace1084fdb313415a8e.6.llvm.13994044477760586293) #12 + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %28, i64 noundef %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.302fcb1e5dd85ace1084fdb313415a8e.6.llvm.13994044477760586293) #13 unreachable "_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit.thread": ; preds = %2, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit", %31 @@ -360,7 +360,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden void @_ZN3egg8language8Language8for_each17h09f1a25c9e40ae37E.llvm.13994044477760586293(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, ptr noalias nocapture noundef align 8 dereferenceable(8) %1, ptr noalias nocapture noundef nonnull readnone align 1 %2) unnamed_addr #5 personality ptr @rust_eh_personality { %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8, !alias.scope !145, !noundef !16 @@ -377,8 +377,8 @@ define hidden void @_ZN3egg8language8Language8for_each17h09f1a25c9e40ae37E.llvm. ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define hidden noundef i64 @_ZN3egg8language8Language4fold17hfa704471984cbdf4E(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, i64 noundef %1) unnamed_addr #3 personality ptr @rust_eh_personality { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable +define hidden noundef i64 @_ZN3egg8language8Language4fold17hfa704471984cbdf4E(ptr noalias noundef readonly align 8 dereferenceable(32) %0, i64 noundef %1) unnamed_addr #6 personality ptr @rust_eh_personality { _ZN3egg8language8Language8for_each17h09f1a25c9e40ae37E.llvm.13994044477760586293.exit: %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = load i64, ptr %2, align 8, !alias.scope !151, !noalias !156, !noundef !16 @@ -387,45 +387,46 @@ _ZN3egg8language8Language8for_each17h09f1a25c9e40ae37E.llvm.13994044477760586293 } ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6option13expect_failed17h7f842a57ad883afaE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #6 +declare void @_ZN4core6option13expect_failed17h7f842a57ad883afaE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.fshl.i64(i64, i64, i64) #7 +declare i64 @llvm.fshl.i64(i64, i64, i64) #8 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #8 +declare void @llvm.assume(i1 noundef) #9 ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #6 +declare void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: inlinehint nonlazybind uwtable -declare hidden { i64, i64 } @"_ZN9hashbrown3raw5inner22RawTableInner$LT$A$GT$10find_inner17h9d329d41497f1ee0E.llvm.3488692421967456325"(ptr noalias noundef readonly align 8 dereferenceable(32), i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #10 +declare hidden { i64, i64 } @"_ZN9hashbrown3raw5inner22RawTableInner$LT$A$GT$10find_inner17h9d329d41497f1ee0E.llvm.3488692421967456325"(ptr noalias noundef readonly align 8 dereferenceable(32), i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #11 +declare void @llvm.experimental.noalias.scope.decl(metadata) #12 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { 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(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #12 = { noreturn } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #6 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #13 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll b/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll index fa244119643..2dafb2dd1be 100644 --- a/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll +++ b/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll @@ -177,7 +177,6 @@ define noundef nonnull align 8 dereferenceable(40) ptr @_ZN3egg3run16BackoffSche %44 = getelementptr inbounds i64, ptr %40, i64 %43 %45 = getelementptr inbounds i8, ptr %44, i64 -8 %46 = load i64, ptr %45, align 8, !noalias !47, !noundef !14 - call void @llvm.experimental.noalias.scope.decl(metadata !53) %47 = load i64, ptr %32, align 8, !alias.scope !53, !noalias !56, !noundef !14 %48 = icmp ult i64 %46, %47 br i1 %48, label %"_ZN8indexmap3map4core3raw26OccupiedEntry$LT$K$C$V$GT$8into_mut17h05f0c6143d412a40E.exit.i", label %49, !prof !58 @@ -193,17 +192,16 @@ define noundef nonnull align 8 dereferenceable(40) ptr @_ZN3egg3run16BackoffSche 52: ; preds = %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12contains_key17h470a3ec433032820E.exit.thread" %53 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %54 = load i64, ptr %53, align 8, !noundef !14 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %56 = load i64, ptr %55, align 8, !noundef !14 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %55 = load i64, ptr %53, align 8, !noundef !14 + %56 = load i64, ptr %54, align 8, !noundef !14 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !62 %.sroa.63.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false) store i64 %56, ptr %.sroa.63.0..sroa_idx, align 8, !noalias !63 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 32 - store i64 %54, ptr %.sroa.7.0..sroa_idx, align 8, !noalias !63 + store i64 %55, ptr %.sroa.7.0..sroa_idx, align 8, !noalias !63 %57 = call noundef i64 @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$4push17h109105af211dc453E.llvm.3488692421967456325"(ptr noalias noundef nonnull align 8 dereferenceable(56) %0, i64 noundef %29, i32 noundef %.sink.i.i, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %5), !noalias !64 - call void @llvm.experimental.noalias.scope.decl(metadata !67) %58 = load i64, ptr %32, align 8, !alias.scope !67, !noalias !70, !noundef !14 %59 = icmp ult i64 %57, %58 br i1 %59, label %"_ZN8indexmap3map4core24VacantEntry$LT$K$C$V$GT$6insert17h659361e6e1c76466E.llvm.3488692421967456325.exit.i", label %60, !prof !58 @@ -847,7 +845,7 @@ attributes #12 = { noreturn } !56 = !{!57, !48, !50, !52} !57 = distinct !{!57, !55, !"_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.16079354848027093366: argument 1"} !58 = !{!"branch_weights", !"expected", i32 2000, i32 1} -!59 = !{!60, !54, !48, !50, !52} +!59 = !{!60, !48, !50, !52} !60 = distinct !{!60, !61, !"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.16079354848027093366: argument 0"} !61 = distinct !{!61, !"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.16079354848027093366"} !62 = !{!50, !52} @@ -861,7 +859,7 @@ attributes #12 = { noreturn } !70 = !{!71, !65, !72, !50, !52} !71 = distinct !{!71, !69, !"_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.3488692421967456325: argument 1"} !72 = distinct !{!72, !66, !"_ZN8indexmap3map4core24VacantEntry$LT$K$C$V$GT$6insert17h659361e6e1c76466E.llvm.3488692421967456325: argument 1"} -!73 = !{!74, !68, !65, !72, !50, !52} +!73 = !{!74, !65, !72, !50, !52} !74 = distinct !{!74, !75, !"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.3488692421967456325: argument 0"} !75 = distinct !{!75, !"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.3488692421967456325"} !76 = !{!77} diff --git a/bench/flac/optimized/fixed_intrin_avx2.c.ll b/bench/flac/optimized/fixed_intrin_avx2.c.ll index 72a91f938ae..10a4ab7ce6e 100644 --- a/bench/flac/optimized/fixed_intrin_avx2.c.ll +++ b/bench/flac/optimized/fixed_intrin_avx2.c.ll @@ -50,6 +50,9 @@ for.body: ; preds = %entry, %for.body br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !4 for.end: ; preds = %for.body + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %prev_err0_scalar, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %prev_err1_scalar, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %prev_err2_scalar, i64 64) ] %cmp70200 = icmp sgt i32 %data_len, 3 br i1 %cmp70200, label %for.body72.lr.ph, label %for.end177 @@ -189,7 +192,7 @@ cond.true304: ; preds = %if.else, %if.else28 %mul306 = fmul reassoc nsz arcp double %conv305, 0x3FE62E42FEFA39EF %conv307 = uitofp i32 %data_len to double %div308 = fdiv reassoc nsz arcp double %mul306, %conv307 - %call309 = tail call reassoc nsz arcp double @log(double noundef %div308) #3 + %call309 = tail call reassoc nsz arcp double @log(double noundef %div308) #4 %div310 = fmul reassoc nsz arcp double %call309, 0x3FF71547652B82FE %35 = fptrunc double %div310 to float br label %cond.end312 @@ -206,7 +209,7 @@ cond.true318: ; preds = %cond.end312 %mul320 = fmul reassoc nsz arcp double %conv319, 0x3FE62E42FEFA39EF %conv321 = uitofp i32 %data_len to double %div322 = fdiv reassoc nsz arcp double %mul320, %conv321 - %call323 = tail call reassoc nsz arcp double @log(double noundef %div322) #3 + %call323 = tail call reassoc nsz arcp double @log(double noundef %div322) #4 %div324 = fmul reassoc nsz arcp double %call323, 0x3FF71547652B82FE %36 = fptrunc double %div324 to float br label %cond.end326 @@ -223,7 +226,7 @@ cond.true332: ; preds = %cond.end326 %mul334 = fmul reassoc nsz arcp double %conv333, 0x3FE62E42FEFA39EF %conv335 = uitofp i32 %data_len to double %div336 = fdiv reassoc nsz arcp double %mul334, %conv335 - %call337 = tail call reassoc nsz arcp double @log(double noundef %div336) #3 + %call337 = tail call reassoc nsz arcp double @log(double noundef %div336) #4 %div338 = fmul reassoc nsz arcp double %call337, 0x3FF71547652B82FE %37 = fptrunc double %div338 to float br label %cond.end340 @@ -240,7 +243,7 @@ cond.true346: ; preds = %cond.end340 %mul348 = fmul reassoc nsz arcp double %conv347, 0x3FE62E42FEFA39EF %conv349 = uitofp i32 %data_len to double %div350 = fdiv reassoc nsz arcp double %mul348, %conv349 - %call351 = tail call reassoc nsz arcp double @log(double noundef %div350) #3 + %call351 = tail call reassoc nsz arcp double @log(double noundef %div350) #4 %div352 = fmul reassoc nsz arcp double %call351, 0x3FF71547652B82FE %38 = fptrunc double %div352 to float br label %cond.end354 @@ -257,7 +260,7 @@ cond.true360: ; preds = %cond.end354 %mul362 = fmul reassoc nsz arcp double %conv361, 0x3FE62E42FEFA39EF %conv363 = uitofp i32 %data_len to double %div364 = fdiv reassoc nsz arcp double %mul362, %conv363 - %call365 = tail call reassoc nsz arcp double @log(double noundef %div364) #3 + %call365 = tail call reassoc nsz arcp double @log(double noundef %div364) #4 %div366 = fmul reassoc nsz arcp double %call365, 0x3FF71547652B82FE %39 = fptrunc double %div366 to float br label %cond.end368 @@ -392,6 +395,9 @@ for.body191: ; preds = %for.cond188.prehead br i1 %exitcond522.not, label %for.end260, label %for.body191, !llvm.loop !8 for.end260: ; preds = %for.body191 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %prev_err0_scalar, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %prev_err1_scalar, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %prev_err2_scalar, i64 64) ] %cmp270467 = icmp sgt i32 %data_len, 3 br i1 %cmp270467, label %for.body272.lr.ph, label %for.end392 @@ -649,7 +655,7 @@ cond.true767: ; preds = %if.then %mul769 = fmul reassoc nsz arcp double %conv768, 0x3FE62E42FEFA39EF %conv770 = uitofp i32 %data_len to double %div771 = fdiv reassoc nsz arcp double %mul769, %conv770 - %call772 = tail call reassoc nsz arcp double @log(double noundef %div771) #3 + %call772 = tail call reassoc nsz arcp double @log(double noundef %div771) #4 %div773 = fmul reassoc nsz arcp double %call772, 0x3FF71547652B82FE %61 = fptrunc double %div773 to float br label %if.end780 @@ -676,7 +682,7 @@ cond.true790: ; preds = %if.then783 %mul792 = fmul reassoc nsz arcp double %conv791, 0x3FE62E42FEFA39EF %conv793 = uitofp i32 %data_len to double %div794 = fdiv reassoc nsz arcp double %mul792, %conv793 - %call795 = tail call reassoc nsz arcp double @log(double noundef %div794) #3 + %call795 = tail call reassoc nsz arcp double @log(double noundef %div794) #4 %div796 = fmul reassoc nsz arcp double %call795, 0x3FF71547652B82FE %62 = fptrunc double %div796 to float br label %cond.end798 @@ -710,7 +716,7 @@ cond.true814: ; preds = %if.then807 %mul816 = fmul reassoc nsz arcp double %conv815, 0x3FE62E42FEFA39EF %conv817 = uitofp i32 %data_len to double %div818 = fdiv reassoc nsz arcp double %mul816, %conv817 - %call819 = tail call reassoc nsz arcp double @log(double noundef %div818) #3 + %call819 = tail call reassoc nsz arcp double @log(double noundef %div818) #4 %div820 = fmul reassoc nsz arcp double %call819, 0x3FF71547652B82FE %63 = fptrunc double %div820 to float br label %if.end828 @@ -736,7 +742,7 @@ cond.true838: ; preds = %if.then831 %mul840 = fmul reassoc nsz arcp double %conv839, 0x3FE62E42FEFA39EF %conv841 = uitofp i32 %data_len to double %div842 = fdiv reassoc nsz arcp double %mul840, %conv841 - %call843 = tail call reassoc nsz arcp double @log(double noundef %div842) #3 + %call843 = tail call reassoc nsz arcp double @log(double noundef %div842) #4 %div844 = fmul reassoc nsz arcp double %call843, 0x3FF71547652B82FE %64 = fptrunc double %div844 to float br label %if.end852 @@ -761,7 +767,7 @@ cond.true862: ; preds = %if.then855 %mul864 = fmul reassoc nsz arcp double %conv863, 0x3FE62E42FEFA39EF %conv865 = uitofp i32 %data_len to double %div866 = fdiv reassoc nsz arcp double %mul864, %conv865 - %call867 = tail call reassoc nsz arcp double @log(double noundef %div866) #3 + %call867 = tail call reassoc nsz arcp double @log(double noundef %div866) #4 %div868 = fmul reassoc nsz arcp double %call867, 0x3FF71547652B82FE %65 = fptrunc double %div868 to float br label %if.end876 @@ -780,13 +786,17 @@ declare i64 @llvm.umin.i64(i64, i64) #2 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <4 x i64> @llvm.abs.v4i64(<4 x i64>, i1 immarg) #2 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #3 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.abs.i64(i64, i1 immarg) #2 attributes #0 = { nofree nounwind sspstrong memory(write, argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="256" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #3 = { nounwind } +attributes #3 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #4 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/flac/optimized/replaygain_analysis.c.ll b/bench/flac/optimized/replaygain_analysis.c.ll index 64340d0f24c..b6fda1b573b 100644 --- a/bench/flac/optimized/replaygain_analysis.c.ll +++ b/bench/flac/optimized/replaygain_analysis.c.ll @@ -81,8 +81,8 @@ declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #1 define dso_local range(i32 0, 2) i32 @InitGainAnalysis(i64 noundef %samplefreq) local_unnamed_addr #2 { entry: %0 = load ptr, ptr @replaygainfilter, align 8 - tail call void @free(ptr noundef %0) #13 - %call.i.i = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #14 + tail call void @free(ptr noundef %0) #14 + %call.i.i = tail call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #15 %tobool.not.i.i = icmp eq ptr %call.i.i, null br i1 %tobool.not.i.i, label %CreateGainFilter.exit.thread.i, label %while.body.i.i.outer @@ -127,7 +127,7 @@ while.body26.i.i: ; preds = %while.cond23.prehea br i1 %cmp24.i.i, label %while.body26.i.i, label %while.body.i.i.outer, !llvm.loop !7 while.end27.i.i: ; preds = %for.end.i.i - tail call void @free(ptr noundef %call.i.i) #13 + tail call void @free(ptr noundef %call.i.i) #14 br label %CreateGainFilter.exit.thread.i CreateGainFilter.exit.thread.i: ; preds = %while.end27.i.i, %entry @@ -149,14 +149,14 @@ CreateGainFilter.exit.i: ; preds = %for.body.i.i %add.i.i = add i32 %conv.i, 10 %conv.i.i = zext i32 %add.i.i to i64 %mul.i8.i = shl nuw nsw i64 %conv.i.i, 2 - %call.i.i.i = tail call ptr @realloc(ptr noundef %3, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #15 + %call.i.i.i = tail call ptr @realloc(ptr noundef %3, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #16 %cmp.i.i.i = icmp ne i32 %add.i.i, 0 %cmp1.i.i.i = icmp eq ptr %call.i.i.i, null %or.cond.i.i.i = and i1 %cmp1.i.i.i, %cmp.i.i.i br i1 %or.cond.i.i.i, label %ReallocateWindowBuffer.exit.thread.i, label %ReallocateWindowBuffer.exit.i ReallocateWindowBuffer.exit.thread.i: ; preds = %CreateGainFilter.exit.i - tail call void @free(ptr noundef %3) #13 + tail call void @free(ptr noundef %3) #14 store ptr null, ptr @lstepbuf, align 8 br label %return @@ -166,13 +166,13 @@ ReallocateWindowBuffer.exit.i: ; preds = %CreateGainFilter.ex lor.lhs.false.i: ; preds = %ReallocateWindowBuffer.exit.i %4 = load ptr, ptr @rstepbuf, align 8 - %call.i.i12.i = tail call ptr @realloc(ptr noundef %4, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #15 + %call.i.i12.i = tail call ptr @realloc(ptr noundef %4, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #16 %cmp1.i.i14.i = icmp eq ptr %call.i.i12.i, null %or.cond.i.i15.i = and i1 %cmp.i.i.i, %cmp1.i.i14.i br i1 %or.cond.i.i15.i, label %ReallocateWindowBuffer.exit17.thread.i, label %ReallocateWindowBuffer.exit17.i ReallocateWindowBuffer.exit17.thread.i: ; preds = %lor.lhs.false.i - tail call void @free(ptr noundef %4) #13 + tail call void @free(ptr noundef %4) #14 store ptr null, ptr @rstepbuf, align 8 br label %return @@ -182,13 +182,13 @@ ReallocateWindowBuffer.exit17.i: ; preds = %lor.lhs.false.i lor.lhs.false5.i: ; preds = %ReallocateWindowBuffer.exit17.i %5 = load ptr, ptr @loutbuf, align 8 - %call.i.i21.i = tail call ptr @realloc(ptr noundef %5, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #15 + %call.i.i21.i = tail call ptr @realloc(ptr noundef %5, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #16 %cmp1.i.i23.i = icmp eq ptr %call.i.i21.i, null %or.cond.i.i24.i = and i1 %cmp.i.i.i, %cmp1.i.i23.i br i1 %or.cond.i.i24.i, label %ReallocateWindowBuffer.exit26.thread.i, label %ReallocateWindowBuffer.exit26.i ReallocateWindowBuffer.exit26.thread.i: ; preds = %lor.lhs.false5.i - tail call void @free(ptr noundef %5) #13 + tail call void @free(ptr noundef %5) #14 store ptr null, ptr @loutbuf, align 8 br label %return @@ -198,13 +198,13 @@ ReallocateWindowBuffer.exit26.i: ; preds = %lor.lhs.false5.i lor.lhs.false8.i: ; preds = %ReallocateWindowBuffer.exit26.i %6 = load ptr, ptr @routbuf, align 8 - %call.i.i30.i = tail call ptr @realloc(ptr noundef %6, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #15 + %call.i.i30.i = tail call ptr @realloc(ptr noundef %6, i64 noundef range(i64 0, 17179869181) %mul.i8.i) #16 %cmp1.i.i32.i = icmp eq ptr %call.i.i30.i, null %or.cond.i.i33.i = and i1 %cmp.i.i.i, %cmp1.i.i32.i br i1 %or.cond.i.i33.i, label %ReallocateWindowBuffer.exit35.thread.i, label %ReallocateWindowBuffer.exit35.i ReallocateWindowBuffer.exit35.thread.i: ; preds = %lor.lhs.false8.i - tail call void @free(ptr noundef %6) #13 + tail call void @free(ptr noundef %6) #14 store ptr null, ptr @routbuf, align 8 br label %return @@ -350,7 +350,7 @@ if.end43: ; preds = %if.then28, %if.else %curleft.0 = phi ptr [ %add.ptr39, %if.else ], [ %add.ptr, %if.then28 ] %curright.0 = phi ptr [ %add.ptr42, %if.else ], [ %add.ptr29, %if.then28 ] %cmp19.not.i = icmp eq i64 %7, %conv21 - br i1 %cmp19.not.i, label %for.end86, label %for.body.lr.ph.i + br i1 %cmp19.not.i, label %filter.exit166.thread, label %for.body.lr.ph.i for.body.lr.ph.i: ; preds = %if.then28, %if.end43 %cursamples.0180 = phi i64 [ %cond, %if.end43 ], [ %sub30, %if.then28 ] @@ -455,6 +455,10 @@ for.end.i99: ; preds = %for.body4.i85 %exitcond23.not.i105 = icmp eq i64 %inc13.i102, %cursamples.0180 br i1 %exitcond23.not.i105, label %filter.exit106, label %for.body.i79, !llvm.loop !11 +filter.exit166.thread: ; preds = %if.end43 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @lsum, i64 64) ] + br label %for.end86 + filter.exit106: ; preds = %for.end.i99 %30 = load ptr, ptr @lout, align 8 %add.ptr52 = getelementptr float, ptr %30, i64 %7 @@ -552,6 +556,7 @@ for.end.i159: ; preds = %for.body4.i145 br i1 %exitcond23.not.i165, label %filter.exit166, label %for.body.i139, !llvm.loop !11 filter.exit166: ; preds = %for.end.i159 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @lsum, i64 64) ] %cmp63230 = icmp sgt i64 %cursamples.0180, 0 br i1 %cmp63230, label %for.body65.lr.ph, label %for.end86 @@ -585,8 +590,8 @@ for.cond61.for.end86_crit_edge: ; preds = %for.body65 store double %add83, ptr @rsum, align 8 br label %for.end86 -for.end86: ; preds = %if.end43, %for.cond61.for.end86_crit_edge, %filter.exit166 - %cursamples.0181200210223249 = phi i64 [ %cursamples.0180, %for.cond61.for.end86_crit_edge ], [ %cursamples.0180, %filter.exit166 ], [ 0, %if.end43 ] +for.end86: ; preds = %filter.exit166.thread, %for.cond61.for.end86_crit_edge, %filter.exit166 + %cursamples.0181200210223249 = phi i64 [ 0, %filter.exit166.thread ], [ %cursamples.0180, %for.cond61.for.end86_crit_edge ], [ %cursamples.0180, %filter.exit166 ] %sub87 = sub nsw i64 %batchsamples.0, %cursamples.0181200210223249 %add88 = add nsw i64 %cursamples.0181200210223249, %cursamplepos.0 %add89 = add i64 %cursamples.0181200210223249, %7 @@ -601,7 +606,7 @@ if.then93: ; preds = %for.end86 %conv95 = uitofp i32 %6 to double %div96 = fdiv double %add94, %conv95 %54 = tail call double @llvm.fmuladd.f64(double %div96, double 5.000000e-01, double 1.000000e-37) - %call = tail call double @log10(double noundef %54) #13 + %call = tail call double @log10(double noundef %54) #14 %mul98 = fmul double %call, 1.000000e+03 %conv99 = fptosi double %mul98 to i32 %spec.store.select = tail call i32 @llvm.smax.i32(i32 %conv99, i32 0) @@ -873,6 +878,9 @@ declare i64 @llvm.smax.i64(i64, i64) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #12 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #13 + attributes #0 = { nofree norecurse nosync nounwind sspstrong memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind sspstrong uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -886,9 +894,10 @@ attributes #9 = { nofree norecurse nosync nounwind sspstrong memory(read, argmem attributes #10 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #13 = { nounwind } -attributes #14 = { nounwind allocsize(0) } -attributes #15 = { nounwind allocsize(1) } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #14 = { nounwind } +attributes #15 = { nounwind allocsize(0) } +attributes #16 = { nounwind allocsize(1) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/flatbuffers/optimized/binary_annotator.cpp.ll b/bench/flatbuffers/optimized/binary_annotator.cpp.ll index 6d1d6e36588..f6600b9cd03 100644 --- a/bench/flatbuffers/optimized/binary_annotator.cpp.ll +++ b/bench/flatbuffers/optimized/binary_annotator.cpp.ll @@ -13570,11 +13570,12 @@ ehcleanup402: ; preds = %lpad397, %lpad393, br label %ehcleanup677 invoke.cont404: ; preds = %if.end369 + %binary_.i1122 = getelementptr inbounds nuw i8, ptr %this, i64 24 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %binary_.i1122, i64 0) ] %cmp4131992.not = icmp eq i64 %vector_length.sroa.0.0.ph, 0 br i1 %cmp4131992.not, label %sw.epilog, label %for.body414.lr.ph for.body414.lr.ph: ; preds = %invoke.cont404 - %binary_.i1122 = getelementptr inbounds nuw i8, ptr %this, i64 24 %274 = load ptr, ptr %binary_.i1122, align 8 %add.ptr.i1123 = getelementptr inbounds i8, ptr %274, i64 %add372 %275 = load i16, ptr %add.ptr.i1123, align 2 @@ -32115,15 +32116,15 @@ declare i64 @llvm.abs.i64(i64, i1 immarg) #25 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #26 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #27 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #25 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #25 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #27 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #28 diff --git a/bench/flatbuffers/optimized/idl_gen_cpp.cpp.ll b/bench/flatbuffers/optimized/idl_gen_cpp.cpp.ll index 07b08a593df..c1ac42752b8 100644 --- a/bench/flatbuffers/optimized/idl_gen_cpp.cpp.ll +++ b/bench/flatbuffers/optimized/idl_gen_cpp.cpp.ll @@ -62583,13 +62583,13 @@ invoke.cont53: ; preds = %cond.false.i130, %_ %cmp.i.i.i = icmp eq i32 %47, 14 %cmp1.i.i.i = icmp eq i32 %47, 18 %48 = or i1 %cmp.i.i.i, %cmp1.i.i.i - %cmp.i135 = icmp eq i32 %46, 15 - %or.cond.i = select i1 %48, i1 %cmp.i135, i1 false + %cmp.i136 = icmp eq i32 %46, 15 + %or.cond.i = select i1 %48, i1 %cmp.i136, i1 false br i1 %or.cond.i, label %land.lhs.true2.i, label %lor.rhs59 land.lhs.true2.i: ; preds = %invoke.cont53 - %struct_def.i.i136 = getelementptr inbounds nuw i8, ptr %45, i64 208 - %49 = load ptr, ptr %struct_def.i.i136, align 8, !noalias !392 + %struct_def.i.i135 = getelementptr inbounds nuw i8, ptr %45, i64 208 + %49 = load ptr, ptr %struct_def.i.i135, align 8, !noalias !392 %fixed.i137 = getelementptr inbounds nuw i8, ptr %49, i64 272 %50 = load i8, ptr %fixed.i137, align 8 %tobool.i138 = trunc i8 %50 to i1 @@ -67238,13 +67238,13 @@ cond.end141: ; preds = %cond.false139, %con %cmp.i.i.i = icmp eq i32 %80, 14 %cmp1.i.i.i = icmp eq i32 %80, 18 %81 = or i1 %cmp.i.i.i, %cmp1.i.i.i - %cmp.i261 = icmp eq i32 %79, 15 - %or.cond.i = select i1 %81, i1 %cmp.i261, i1 false + %cmp.i262 = icmp eq i32 %79, 15 + %or.cond.i = select i1 %81, i1 %cmp.i262, i1 false br i1 %or.cond.i, label %land.lhs.true2.i, label %invoke.cont144 land.lhs.true2.i: ; preds = %cond.end141 - %struct_def.i.i262 = getelementptr inbounds nuw i8, ptr %78, i64 208 - %82 = load ptr, ptr %struct_def.i.i262, align 8, !noalias !422 + %struct_def.i.i261 = getelementptr inbounds nuw i8, ptr %78, i64 208 + %82 = load ptr, ptr %struct_def.i.i261, align 8, !noalias !422 %fixed.i263 = getelementptr inbounds nuw i8, ptr %82, i64 272 %83 = load i8, ptr %fixed.i263, align 8 %tobool.i264 = trunc i8 %83 to i1 @@ -69173,6 +69173,7 @@ if.else196.critedge: ; preds = %invoke.cont116, %_Z if.else196: ; preds = %if.else196.critedge, %cond.false.i %48 = load i32, ptr %element, align 4, !noalias !428 + %struct_def.i.i = getelementptr inbounds nuw i8, ptr %field, i64 208 %49 = load i32, ptr %value, align 8 %cmp.i.i.i = icmp eq i32 %49, 14 %cmp1.i.i.i = icmp eq i32 %49, 18 @@ -69182,7 +69183,6 @@ if.else196: ; preds = %if.else196.critedge br i1 %or.cond.i, label %land.lhs.true2.i, label %if.end231 land.lhs.true2.i: ; preds = %if.else196 - %struct_def.i.i = getelementptr inbounds nuw i8, ptr %field, i64 208 %51 = load ptr, ptr %struct_def.i.i, align 8, !noalias !428 %fixed.i = getelementptr inbounds nuw i8, ptr %51, i64 272 %52 = load i8, ptr %fixed.i, align 8 @@ -69332,8 +69332,7 @@ invoke.cont254: ; preds = %invoke.cont242 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp235) #23 call void @llvm.experimental.noalias.scope.decl(metadata !431) %63 = load i32, ptr %element, align 4, !noalias !431 - %struct_def.i = getelementptr inbounds nuw i8, ptr %field, i64 208 - %64 = load ptr, ptr %struct_def.i, align 8, !noalias !431 + %64 = load ptr, ptr %struct_def.i.i, align 8, !noalias !431 %65 = load ptr, ptr %enum_def, align 8, !noalias !431 %fixed_length.i = getelementptr inbounds nuw i8, ptr %field, i64 224 %66 = load i16, ptr %fixed_length.i, align 8, !noalias !431 diff --git a/bench/fmt/optimized/ostream-test.cc.ll b/bench/fmt/optimized/ostream-test.cc.ll index 4c9486c9766..082bce01385 100644 --- a/bench/fmt/optimized/ostream-test.cc.ll +++ b/bench/fmt/optimized/ostream-test.cc.ll @@ -6855,8 +6855,8 @@ invoke.cont: ; preds = %.noexc if.then.i.i: ; preds = %invoke.cont %line_.i = getelementptr inbounds nuw i8, ptr %this, i64 16 - %2 = load i32, ptr %line_.i, align 8 %file_.i = getelementptr inbounds nuw i8, ptr %this, i64 8 + %2 = load i32, ptr %line_.i, align 8 %3 = load ptr, ptr %file_.i, align 8 %call.i.i56 = invoke noundef ptr @_ZN7testing8internal18GetFailureReporterEv() to label %call.i.i5.noexc unwind label %lpad3 @@ -16743,6 +16743,12 @@ do.body: ; preds = %if.end21, %if.then1 %dec.i.i3284 = phi i64 [ %decode.sroa.3.0.copyload.promoted, %if.then13 ], [ %dec.i.i32, %if.end21 ] %buf_ptr.0 = phi ptr [ %buf, %if.then13 ], [ %cond15.i64, %if.end21 ] %p.2 = phi ptr [ %p.0, %if.then13 ], [ %add.ptr25, %if.end21 ] + %19 = load i8, ptr %buf_ptr.0, align 1 + %conv.i.i18 = zext i8 %19 to i32 + %shr.i.i19 = lshr i32 %conv.i.i18, 3 + %idxprom.i.i20 = zext nneg i32 %shr.i.i19 to i64 + %arrayidx.i.i21 = getelementptr inbounds nuw [32 x i8], ptr @.str.239, i64 0, i64 %idxprom.i.i20 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i21, i64 8) ] %cmp.not.i.not.i30 = icmp eq i64 %dec.i.i3284, 0 br i1 %cmp.not.i.not.i30, label %_ZZN3fmt3v106detail18for_each_codepointIZNS1_16code_point_indexENS0_17basic_string_viewIcEEmEUljS4_E_EEvS4_T_ENKUlPKcS8_E_clES8_S8_.exit70.thread, label %if.end21 @@ -16753,26 +16759,21 @@ _ZZN3fmt3v106detail18for_each_codepointIZNS1_16code_point_indexENS0_17basic_stri br label %if.end31 if.end21: ; preds = %do.body - %19 = load i8, ptr %buf_ptr.0, align 1 - %conv.i.i18 = zext i8 %19 to i32 - %shr.i.i19 = lshr i32 %conv.i.i18, 3 - %idxprom.i.i20 = zext nneg i32 %shr.i.i19 to i64 - %arrayidx.i.i21 = getelementptr inbounds nuw [32 x i8], ptr @.str.239, i64 0, i64 %idxprom.i.i20 %20 = load i8, ptr %arrayidx.i.i21, align 1 %idx.ext.i.i22 = sext i8 %20 to i64 %arrayidx54.i.i29 = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.shifte, i64 0, i64 %idx.ext.i.i22 - %21 = load i32, ptr %arrayidx54.i.i29, align 4 %arrayidx27.i.i28 = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.mins, i64 0, i64 %idx.ext.i.i22 - %22 = load i32, ptr %arrayidx27.i.i28, align 4 %arrayidx24.i.i27 = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.shiftc, i64 0, i64 %idx.ext.i.i22 - %23 = load i32, ptr %arrayidx24.i.i27, align 4 %arrayidx18.i.i26 = getelementptr inbounds nuw i8, ptr %buf_ptr.0, i64 3 - %24 = load i8, ptr %arrayidx18.i.i26, align 1 %arrayidx13.i.i25 = getelementptr inbounds nuw i8, ptr %buf_ptr.0, i64 2 - %25 = load i8, ptr %arrayidx13.i.i25, align 1 %arrayidx9.i.i24 = getelementptr inbounds nuw i8, ptr %buf_ptr.0, i64 1 - %26 = load i8, ptr %arrayidx9.i.i24, align 1 %arrayidx8.i.i23 = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.masks, i64 0, i64 %idx.ext.i.i22 + %21 = load i32, ptr %arrayidx54.i.i29, align 4 + %22 = load i32, ptr %arrayidx27.i.i28, align 4 + %23 = load i32, ptr %arrayidx24.i.i27, align 4 + %24 = load i8, ptr %arrayidx18.i.i26, align 1 + %25 = load i8, ptr %arrayidx13.i.i25, align 1 + %26 = load i8, ptr %arrayidx9.i.i24, align 1 %27 = load i32, ptr %arrayidx8.i.i23, align 4 %dec.i.i32 = add i64 %dec.i.i3284, -1 store i64 %dec.i.i32, ptr %decode.sroa.3.0.copyload, align 8 diff --git a/bench/freetype/optimized/sdf.c.ll b/bench/freetype/optimized/sdf.c.ll index 8028bf73aa8..e996c5d61af 100644 --- a/bench/freetype/optimized/sdf.c.ll +++ b/bench/freetype/optimized/sdf.c.ll @@ -521,16 +521,17 @@ define internal i32 @bsdf_raster_render(ptr noundef readonly %0, ptr noundef rea %3 = alloca i32, align 4 %4 = alloca %struct.BSDF_Worker_, align 8 store i32 0, ptr %3, align 4 + store ptr null, ptr %4, align 8 %5 = icmp ne ptr %0, null %6 = icmp ne ptr %1, null %or.cond = and i1 %5, %6 - br i1 %or.cond, label %7, label %.thread + br i1 %or.cond, label %7, label %thread-pre-split.sink.split 7: ; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %1, i64 16 %9 = load i32, ptr %8, align 8 %.not = icmp eq i32 %9, 8 - br i1 %.not, label %10, label %.thread + br i1 %.not, label %10, label %thread-pre-split.sink.split 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -539,19 +540,19 @@ define internal i32 @bsdf_raster_render(ptr noundef readonly %0, ptr noundef rea %14 = icmp ne ptr %12, null %15 = icmp ne ptr %13, null %or.cond3 = select i1 %14, i1 %15, i1 false - br i1 %or.cond3, label %16, label %.thread + br i1 %or.cond3, label %16, label %thread-pre-split.sink.split 16: ; preds = %10 %17 = load ptr, ptr %0, align 8 %.not32 = icmp eq ptr %17, null - br i1 %.not32, label %.thread, label %18 + br i1 %.not32, label %thread-pre-split.sink.split, label %18 18: ; preds = %16 %19 = getelementptr inbounds nuw i8, ptr %1, i64 96 %20 = load i32, ptr %19, align 8 %21 = add i32 %20, -33 %or.cond38 = icmp ult i32 %21, -31 - br i1 %or.cond38, label %.thread, label %22 + br i1 %or.cond38, label %thread-pre-split.sink.split, label %22 22: ; preds = %18 %23 = getelementptr inbounds nuw i8, ptr %13, i64 4 @@ -564,7 +565,7 @@ define internal i32 @bsdf_raster_render(ptr noundef readonly %0, ptr noundef rea store ptr %29, ptr %4, align 8 %30 = load i32, ptr %3, align 4 %.not33 = icmp eq i32 %30, 0 - br i1 %.not33, label %31, label %44 + br i1 %.not33, label %31, label %45 31: ; preds = %22 %32 = load i32, ptr %23, align 4 @@ -578,38 +579,51 @@ define internal i32 @bsdf_raster_render(ptr noundef readonly %0, ptr noundef rea %37 = call fastcc i32 @bsdf_init_distance_map(ptr noundef %12, ptr noundef %4) store i32 %37, ptr %3, align 4 %.not34 = icmp eq i32 %37, 0 - br i1 %.not34, label %38, label %44 + br i1 %.not34, label %38, label %thread-pre-split 38: ; preds = %31 %39 = call fastcc i32 @bsdf_approximate_edge(ptr noundef %4) store i32 %39, ptr %3, align 4 %.not35 = icmp eq i32 %39, 0 - br i1 %.not35, label %40, label %44 + br i1 %.not35, label %40, label %thread-pre-split 40: ; preds = %38 %41 = call fastcc i32 @edt8(ptr noundef %4) store i32 %41, ptr %3, align 4 %.not36 = icmp eq i32 %41, 0 - br i1 %.not36, label %42, label %44 + br i1 %.not36, label %42, label %thread-pre-split 42: ; preds = %40 %43 = call fastcc i32 @finalize_sdf(ptr noundef %4, ptr noundef %13) - store i32 %43, ptr %3, align 4 - br label %44 + br label %thread-pre-split.sink.split -44: ; preds = %42, %40, %38, %31, %22 - %45 = phi i32 [ %43, %42 ], [ %41, %40 ], [ %39, %38 ], [ %37, %31 ], [ %30, %22 ] - %.not37 = icmp eq ptr %29, null - br i1 %.not37, label %.thread, label %46 +thread-pre-split.sink.split: ; preds = %18, %16, %10, %7, %2, %42 + %.sink = phi i32 [ %43, %42 ], [ 6, %2 ], [ 97, %7 ], [ 6, %10 ], [ 32, %16 ], [ 6, %18 ] + %.0.ph.ph = phi ptr [ %17, %42 ], [ null, %2 ], [ null, %7 ], [ null, %10 ], [ null, %16 ], [ %17, %18 ] + store i32 %.sink, ptr %3, align 4 + br label %thread-pre-split -46: ; preds = %44 - call void @ft_mem_free(ptr noundef nonnull %17, ptr noundef nonnull %29) #11 +thread-pre-split: ; preds = %thread-pre-split.sink.split, %31, %38, %40 + %44 = phi i32 [ %41, %40 ], [ %39, %38 ], [ %37, %31 ], [ %.sink, %thread-pre-split.sink.split ] + %.0.ph = phi ptr [ %17, %40 ], [ %17, %38 ], [ %17, %31 ], [ %.0.ph.ph, %thread-pre-split.sink.split ] + %.pr = load ptr, ptr %4, align 8 + br label %45 + +45: ; preds = %thread-pre-split, %22 + %46 = phi i32 [ %44, %thread-pre-split ], [ %30, %22 ] + %47 = phi ptr [ %.pr, %thread-pre-split ], [ %29, %22 ] + %.0 = phi ptr [ %.0.ph, %thread-pre-split ], [ %17, %22 ] + %.not37 = icmp eq ptr %47, null + br i1 %.not37, label %49, label %48 + +48: ; preds = %45 + call void @ft_mem_free(ptr noundef %.0, ptr noundef nonnull %47) #11 %.pre = load i32, ptr %3, align 4 - br label %.thread + br label %49 -.thread: ; preds = %18, %16, %10, %7, %2, %46, %44 - %47 = phi i32 [ %.pre, %46 ], [ %45, %44 ], [ 6, %2 ], [ 97, %7 ], [ 6, %10 ], [ 32, %16 ], [ 6, %18 ] - ret i32 %47 +49: ; preds = %48, %45 + %50 = phi i32 [ %.pre, %48 ], [ %46, %45 ] + ret i32 %50 } ; Function Attrs: nounwind uwtable @@ -1519,7 +1533,7 @@ bsdf_is_edge.exit.thread46: ; preds = %84, %16 } ; Function Attrs: nounwind uwtable -define internal fastcc range(i32 0, 7) i32 @edt8(ptr nocapture noundef nonnull readonly %0) unnamed_addr #2 { +define internal fastcc range(i32 0, 7) i32 @edt8(ptr noundef nonnull %0) unnamed_addr #2 { %2 = alloca %struct.FT_Vector_, align 8 %3 = alloca %struct.FT_Vector_, align 8 %4 = alloca %struct.FT_Vector_, align 8 @@ -3934,7 +3948,7 @@ declare hidden ptr @ft_mem_qalloc(ptr noundef, i64 noundef, ptr noundef) local_u declare i32 @FT_Outline_Decompose(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3 ; Function Attrs: nounwind uwtable -define internal i32 @sdf_move_to(ptr noundef readonly %0, ptr nocapture noundef %1) #2 { +define internal i32 @sdf_move_to(ptr noundef readonly %0, ptr noundef %1) #2 { %3 = alloca i32, align 4 %.not = icmp eq ptr %0, null br i1 %.not, label %13, label %4 @@ -4163,7 +4177,7 @@ sdf_line_to.exit: ; preds = %sdf_edge_new.exit.t } ; Function Attrs: nounwind uwtable -define internal i32 @sdf_cubic_to(ptr noundef readonly %0, ptr noundef readonly %1, ptr noundef readonly %2, ptr nocapture noundef readonly %3) #2 { +define internal i32 @sdf_cubic_to(ptr noundef readonly %0, ptr noundef readonly %1, ptr noundef readonly %2, ptr noundef %3) #2 { %5 = alloca i32, align 4 %6 = icmp ne ptr %1, null %7 = icmp ne ptr %0, null diff --git a/bench/g2o/optimized/estimate_propagator.cpp.ll b/bench/g2o/optimized/estimate_propagator.cpp.ll index a25f8388692..388f57bd4ec 100644 --- a/bench/g2o/optimized/estimate_propagator.cpp.ll +++ b/bench/g2o/optimized/estimate_propagator.cpp.ll @@ -2582,20 +2582,19 @@ _ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimateProp ._crit_edge: ; preds = %28, %_ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimatePropagator17AdjacencyMapEntryEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS3_ENS6_20VertexIDHashFunctionENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_allocate_bucketsEm.exit %29 = load ptr, ptr %0, align 8 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %31 = icmp eq ptr %29, %30 - br i1 %31, label %_ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimatePropagator17AdjacencyMapEntryEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS3_ENS6_20VertexIDHashFunctionENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit, label %32 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %32 = icmp eq ptr %29, %31 + br i1 %32, label %_ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimatePropagator17AdjacencyMapEntryEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS3_ENS6_20VertexIDHashFunctionENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit, label %33 -32: ; preds = %._crit_edge - %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %34 = load i64, ptr %33, align 8 +33: ; preds = %._crit_edge + %34 = load i64, ptr %30, align 8 %35 = shl i64 %34, 3 tail call void @_ZdlPvm(ptr noundef %29, i64 noundef %35) #22 br label %_ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimatePropagator17AdjacencyMapEntryEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS3_ENS6_20VertexIDHashFunctionENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit -_ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimatePropagator17AdjacencyMapEntryEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS3_ENS6_20VertexIDHashFunctionENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %32 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %1, ptr %36, align 8 +_ZNSt10_HashtableIPN3g2o16OptimizableGraph6VertexESt4pairIKS3_NS0_18EstimatePropagator17AdjacencyMapEntryEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS3_ENS6_20VertexIDHashFunctionENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %33 + store i64 %1, ptr %30, align 8 store ptr %.0.i, ptr %0, align 8 ret void } diff --git a/bench/g2o/optimized/hyper_graph.cpp.ll b/bench/g2o/optimized/hyper_graph.cpp.ll index 0d67b5a9a76..4d638280169 100644 --- a/bench/g2o/optimized/hyper_graph.cpp.ll +++ b/bench/g2o/optimized/hyper_graph.cpp.ll @@ -195,7 +195,7 @@ define void @_ZN3g2o10HyperGraph4EdgeC2Ei(ptr nocapture noundef nonnull writeonl } ; Function Attrs: mustprogress nounwind uwtable -define void @_ZN3g2o10HyperGraph4EdgeD2Ev(ptr nocapture noundef nonnull align 8 dereferenceable(36) initializes((0, 8)) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN3g2o10HyperGraph4EdgeD2Ev(ptr noundef nonnull align 8 dereferenceable(36) initializes((0, 8)) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { store ptr getelementptr inbounds nuw inrange(-16, 32) (i8, ptr @_ZTVN3g2o10HyperGraph4EdgeE, i64 16), ptr %0, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8 @@ -2633,20 +2633,19 @@ _ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Se ._crit_edge: ; preds = %29, %_ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm.exit %30 = load ptr, ptr %0, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %32 = icmp eq ptr %30, %31 - br i1 %32, label %_ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit, label %33 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %33 = icmp eq ptr %30, %32 + br i1 %33, label %_ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit, label %34 -33: ; preds = %._crit_edge - %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %35 = load i64, ptr %34, align 8 +34: ; preds = %._crit_edge + %35 = load i64, ptr %31, align 8 %36 = shl i64 %35, 3 tail call void @_ZdlPvm(ptr noundef %30, i64 noundef %36) #20 br label %_ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit -_ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %33 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %1, ptr %37, align 8 +_ZNSt10_HashtableIiSt4pairIKiPN3g2o10HyperGraph6VertexEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %34 + store i64 %1, ptr %31, align 8 store ptr %.0.i, ptr %0, align 8 ret void } @@ -3103,20 +3102,19 @@ _ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8 ._crit_edge: ; preds = %29, %_ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm.exit %30 = load ptr, ptr %0, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %32 = icmp eq ptr %30, %31 - br i1 %32, label %_ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv.exit, label %33 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %33 = icmp eq ptr %30, %32 + br i1 %33, label %_ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv.exit, label %34 -33: ; preds = %._crit_edge - %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %35 = load i64, ptr %34, align 8 +34: ; preds = %._crit_edge + %35 = load i64, ptr %31, align 8 %36 = shl i64 %35, 3 tail call void @_ZdlPvm(ptr noundef %30, i64 noundef %36) #20 br label %_ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv.exit -_ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %33 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %1, ptr %37, align 8 +_ZNSt10_HashtableIPN3g2o10HyperGraph6VertexES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %34 + store i64 %1, ptr %31, align 8 store ptr %.0.i, ptr %0, align 8 ret void } diff --git a/bench/g2o/optimized/marginal_covariance_cholesky.cpp.ll b/bench/g2o/optimized/marginal_covariance_cholesky.cpp.ll index 510b71aa779..07abd8533c0 100644 --- a/bench/g2o/optimized/marginal_covariance_cholesky.cpp.ll +++ b/bench/g2o/optimized/marginal_covariance_cholesky.cpp.ll @@ -1594,29 +1594,29 @@ _ZNSt12_Vector_baseISt3mapIiPN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEESt4lessIi .body21.sink.split: ; preds = %55, %28 %.sink36 = phi ptr [ %30, %28 ], [ %57, %55 ] %.pn.ph = phi { ptr, i32 } [ %29, %28 ], [ %56, %55 ] - %58 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %59 = load ptr, ptr %58, align 8 - %60 = ptrtoint ptr %59 to i64 - %61 = ptrtoint ptr %.sink36 to i64 - %62 = sub i64 %60, %61 - tail call void @_ZdlPvm(ptr noundef nonnull %.sink36, i64 noundef %62) #23 + %.sink37.in = getelementptr inbounds nuw i8, ptr %0, i64 40 + %.sink37 = load ptr, ptr %.sink37.in, align 8 + %58 = ptrtoint ptr %.sink37 to i64 + %59 = ptrtoint ptr %.sink36 to i64 + %60 = sub i64 %58, %59 + tail call void @_ZdlPvm(ptr noundef nonnull %.sink36, i64 noundef %60) #23 br label %.body21 .body21: ; preds = %.body21.sink.split, %55, %28 %.pn = phi { ptr, i32 } [ %29, %28 ], [ %56, %55 ], [ %.pn.ph, %.body21.sink.split ] - %63 = load ptr, ptr %0, align 8 - %.not.i.i.i27 = icmp eq ptr %63, null + %61 = load ptr, ptr %0, align 8 + %.not.i.i.i27 = icmp eq ptr %61, null br i1 %.not.i.i.i27, label %.body, label %.body.sink.split .body.sink.split: ; preds = %.body21, %16 - %.sink43 = phi ptr [ %18, %16 ], [ %63, %.body21 ] + %.sink42 = phi ptr [ %18, %16 ], [ %61, %.body21 ] %.pn.pn.ph = phi { ptr, i32 } [ %17, %16 ], [ %.pn, %.body21 ] - %64 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %65 = load ptr, ptr %64, align 8 - %66 = ptrtoint ptr %65 to i64 - %67 = ptrtoint ptr %.sink43 to i64 - %68 = sub i64 %66, %67 - tail call void @_ZdlPvm(ptr noundef nonnull %.sink43, i64 noundef %68) #23 + %.sink43.in = getelementptr inbounds nuw i8, ptr %0, i64 16 + %.sink43 = load ptr, ptr %.sink43.in, align 8 + %62 = ptrtoint ptr %.sink43 to i64 + %63 = ptrtoint ptr %.sink42 to i64 + %64 = sub i64 %62, %63 + tail call void @_ZdlPvm(ptr noundef nonnull %.sink42, i64 noundef %64) #23 br label %.body .body: ; preds = %.body.sink.split, %.body21, %16 @@ -3341,20 +3341,19 @@ _ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4 ._crit_edge: ; preds = %29, %_ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm.exit %30 = load ptr, ptr %0, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %32 = icmp eq ptr %30, %31 - br i1 %32, label %_ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit, label %33 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %33 = icmp eq ptr %30, %32 + br i1 %33, label %_ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit, label %34 -33: ; preds = %._crit_edge - %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %35 = load i64, ptr %34, align 8 +34: ; preds = %._crit_edge + %35 = load i64, ptr %31, align 8 %36 = shl i64 %35, 3 tail call void @_ZdlPvm(ptr noundef %30, i64 noundef %36) #23 br label %_ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit -_ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %33 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %1, ptr %37, align 8 +_ZNSt10_HashtableIiSt4pairIKidESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit: ; preds = %._crit_edge, %34 + store i64 %1, ptr %31, align 8 store ptr %.0.i, ptr %0, align 8 ret void } diff --git a/bench/git/optimized/path.ll b/bench/git/optimized/path.ll index 4d1db113956..c99f962a253 100644 --- a/bench/git/optimized/path.ll +++ b/bench/git/optimized/path.ll @@ -1457,27 +1457,30 @@ if.then2: ; preds = %if.end %conv = trunc i64 %call to i32 %invariant.gep = getelementptr i8, ptr %path, i64 -1 %cmp36 = icmp sgt i32 %conv, 1 - br i1 %cmp36, label %land.rhs, label %if.end10 + br i1 %cmp36, label %land.rhs.preheader, label %if.end10 -land.rhs: ; preds = %if.then2, %while.body - %len.037 = phi i32 [ %dec, %while.body ], [ %conv, %if.then2 ] - %0 = zext nneg i32 %len.037 to i64 - %gep = getelementptr i8, ptr %invariant.gep, i64 %0 +land.rhs.preheader: ; preds = %if.then2 + %0 = and i64 %call, 2147483647 + br label %land.rhs + +land.rhs: ; preds = %land.rhs.preheader, %while.body + %indvars.iv = phi i64 [ %0, %land.rhs.preheader ], [ %indvars.iv.next, %while.body ] + %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv %1 = load i8, ptr %gep, align 1 %cmp5 = icmp eq i8 %1, 47 br i1 %cmp5, label %while.body, label %while.end while.body: ; preds = %land.rhs - %dec = add nsw i32 %len.037, -1 - %cmp = icmp sgt i32 %len.037, 2 + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %cmp = icmp sgt i64 %indvars.iv, 2 br i1 %cmp, label %land.rhs, label %if.end10, !llvm.loop !11 while.end: ; preds = %land.rhs - %cmp7 = icmp samesign ugt i32 %len.037, 4095 + %cmp7 = icmp samesign ugt i64 %indvars.iv, 4095 br i1 %cmp7, label %return, label %if.end10 if.end10: ; preds = %while.body, %if.then2, %while.end - %len.035 = phi i32 [ %len.037, %while.end ], [ %conv, %if.then2 ], [ 1, %while.body ] + %len.035 = phi i64 [ %indvars.iv, %while.end ], [ %call, %if.then2 ], [ %indvars.iv.next, %while.body ] store i64 0, ptr getelementptr inbounds nuw (i8, ptr @enter_repo.used_path, i64 8), align 8 %2 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @enter_repo.used_path, i64 16), align 8 %cmp3.not.i = icmp eq ptr %2, @strbuf_slopbuf @@ -1498,7 +1501,8 @@ if.then4.i24: ; preds = %strbuf_setlen.exit br label %strbuf_setlen.exit25 strbuf_setlen.exit25: ; preds = %strbuf_setlen.exit, %if.then4.i24 - %conv11 = sext i32 %len.035 to i64 + %sext = shl i64 %len.035, 32 + %conv11 = ashr exact i64 %sext, 32 tail call void @strbuf_add(ptr noundef nonnull @enter_repo.used_path, ptr noundef nonnull %path, i64 noundef %conv11) #26 tail call void @strbuf_add(ptr noundef nonnull @enter_repo.validated_path, ptr noundef nonnull %path, i64 noundef %conv11) #26 %4 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @enter_repo.used_path, i64 16), align 8 @@ -1518,14 +1522,14 @@ if.end21: ; preds = %if.then17 if.end24: ; preds = %if.end21, %strbuf_setlen.exit25 %st_mode = getelementptr inbounds nuw i8, ptr %st, i64 24 - %.pre43 = load i64, ptr getelementptr inbounds nuw (i8, ptr @enter_repo.used_path, i64 8), align 8 + %.pre47 = load i64, ptr getelementptr inbounds nuw (i8, ptr @enter_repo.used_path, i64 8), align 8 br label %for.body for.body: ; preds = %if.end24, %strbuf_setlen.exit30 - %6 = phi i64 [ %.pre43, %if.end24 ], [ %14, %strbuf_setlen.exit30 ] - %indvars.iv = phi i64 [ 0, %if.end24 ], [ %indvars.iv.next, %strbuf_setlen.exit30 ] - %arrayidx26 = getelementptr inbounds nuw [5 x ptr], ptr @enter_repo.suffix, i64 0, i64 %indvars.iv - %7 = load ptr, ptr %arrayidx26, align 8 + %6 = phi i64 [ %.pre47, %if.end24 ], [ %14, %strbuf_setlen.exit30 ] + %indvars.iv44 = phi i64 [ 0, %if.end24 ], [ %indvars.iv.next45, %strbuf_setlen.exit30 ] + %arrayidx2639 = phi ptr [ @enter_repo.suffix, %if.end24 ], [ %arrayidx26, %strbuf_setlen.exit30 ] + %7 = load ptr, ptr %arrayidx2639, align 8 %call.i = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #28 tail call void @strbuf_add(ptr noundef nonnull @enter_repo.used_path, ptr noundef %7, i64 noundef %call.i) #26 %8 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @enter_repo.used_path, i64 16), align 8 @@ -1572,8 +1576,9 @@ if.then4.i29: ; preds = %if.end.i strbuf_setlen.exit30: ; preds = %if.end.i, %if.then4.i29 %14 = phi i64 [ %6, %if.end.i ], [ %.pre, %if.then4.i29 ] - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %cond = icmp eq i64 %indvars.iv.next, 4 + %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 + %arrayidx26 = getelementptr inbounds nuw [5 x ptr], ptr @enter_repo.suffix, i64 0, i64 %indvars.iv.next45 + %cond = icmp eq i64 %indvars.iv.next45, 4 br i1 %cond, label %return, label %for.body, !llvm.loop !12 if.end49: ; preds = %land.lhs.true38, %land.lhs.true diff --git a/bench/graphviz/optimized/labels.c.ll b/bench/graphviz/optimized/labels.c.ll index 03fa923c061..7abdbfee54b 100644 --- a/bench/graphviz/optimized/labels.c.ll +++ b/bench/graphviz/optimized/labels.c.ll @@ -309,6 +309,7 @@ agxblen.exit.i57: ; preds = %121 agxbdisown.exit59: ; preds = %agxblen.exit.i57, %131 %.0.i58 = phi ptr [ %132, %131 ], [ %125, %agxblen.exit.i57 ] + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 32, i1 false) %133 = load i64, ptr %13, align 8 %134 = add i64 %133, 1 %135 = load ptr, ptr %12, align 8 @@ -1221,11 +1222,11 @@ define void @emit_label(ptr noundef %0, i32 noundef %1, ptr noundef %2) local_un .lr.ph: ; preds = %43 %45 = getelementptr inbounds nuw i8, ptr %5, i64 344 - %46 = load i16, ptr %45, align 8 - %47 = and i16 %46, 512 - %.not = icmp eq i16 %47, 0 - %48 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %49 = load double, ptr %48, align 8 + %46 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %47 = load i16, ptr %45, align 8 + %48 = and i16 %47, 512 + %.not = icmp eq i16 %48, 0 + %49 = load double, ptr %46, align 8 %50 = fsub double %.sink, %49 %51 = fsub double %50, %24 %.sroa.4.1 = select i1 %.not, double %50, double %51 diff --git a/bench/hyperscan/optimized/fdr.c.ll b/bench/hyperscan/optimized/fdr.c.ll index 6ba66cb5b01..78f439f2c4a 100644 --- a/bench/hyperscan/optimized/fdr.c.ll +++ b/bench/hyperscan/optimized/fdr.c.ll @@ -654,13 +654,15 @@ for.cond.i814.us: ; preds = %lor.lhs.false57.i12 for.body.i1242.us: ; preds = %for.cond.i814.us %idx.ext44.i1243.us = zext i32 %j.i741.1.us to i64 %add.ptr45.i1244.us = getelementptr inbounds nuw i8, ptr %49, i64 %idx.ext44.i1243.us + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr45.i1244.us, i64 64) ] + %add.ptr48.i1247.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i1244.us, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr48.i1247.us, i64 64) ] %add.ptr54.i1253.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i1244.us, i64 24 %62 = load i64, ptr %add.ptr54.i1253.us, align 8 %cmp55.i1254.not.us = icmp eq i64 %62, %or18.i792.us br i1 %cmp55.i1254.not.us, label %lor.lhs.false57.i1255.us, label %for.cond69.i819.us.preheader lor.lhs.false57.i1255.us: ; preds = %for.body.i1242.us - %add.ptr48.i1247.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i1244.us, i64 8 %63 = load i64, ptr %add.ptr48.i1247.us, align 8 %64 = load i64, ptr %add.ptr45.i1244.us, align 8 %add.ptr51.i1250.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i1244.us, i64 16 @@ -1916,13 +1918,15 @@ for.cond.i268.us: ; preds = %lor.lhs.false57.i70 for.body.i696.us: ; preds = %for.cond.i268.us %idx.ext44.i697.us = zext i32 %j.i195.1.us to i64 %add.ptr45.i698.us = getelementptr inbounds nuw i8, ptr %248, i64 %idx.ext44.i697.us + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr45.i698.us, i64 64) ] + %add.ptr48.i701.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i698.us, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr48.i701.us, i64 64) ] %add.ptr54.i707.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i698.us, i64 24 %261 = load i64, ptr %add.ptr54.i707.us, align 8 %cmp55.i708.not.us = icmp eq i64 %261, %or18.i246.us br i1 %cmp55.i708.not.us, label %lor.lhs.false57.i709.us, label %for.cond69.i273.us.preheader lor.lhs.false57.i709.us: ; preds = %for.body.i696.us - %add.ptr48.i701.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i698.us, i64 8 %262 = load i64, ptr %add.ptr48.i701.us, align 8 %263 = load i64, ptr %add.ptr45.i698.us, align 8 %add.ptr51.i704.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i698.us, i64 16 @@ -3098,13 +3102,15 @@ for.cond.i.us: ; preds = %lor.lhs.false57.i.u for.body.i.us: ; preds = %for.cond.i.us %idx.ext44.i.us = zext i32 %j.i.1.us to i64 %add.ptr45.i.us = getelementptr inbounds nuw i8, ptr %431, i64 %idx.ext44.i.us + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr45.i.us, i64 64) ] + %add.ptr48.i.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i.us, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr48.i.us, i64 64) ] %add.ptr54.i.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i.us, i64 24 %444 = load i64, ptr %add.ptr54.i.us, align 8 %cmp55.i.not.us = icmp eq i64 %444, %or18.i.us br i1 %cmp55.i.not.us, label %lor.lhs.false57.i.us, label %for.cond69.i.us.preheader lor.lhs.false57.i.us: ; preds = %for.body.i.us - %add.ptr48.i.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i.us, i64 8 %445 = load i64, ptr %add.ptr48.i.us, align 8 %446 = load i64, ptr %add.ptr45.i.us, align 8 %add.ptr51.i.us = getelementptr inbounds nuw i8, ptr %add.ptr45.i.us, i64 16 diff --git a/bench/hyperscan/optimized/shortcut_literal.cpp.ll b/bench/hyperscan/optimized/shortcut_literal.cpp.ll index 04c9a9e72a5..666e75de2e9 100644 --- a/bench/hyperscan/optimized/shortcut_literal.cpp.ll +++ b/bench/hyperscan/optimized/shortcut_literal.cpp.ll @@ -917,11 +917,11 @@ entry: %0 = load ptr, ptr %_M_finish.i.i.i, align 8, !noalias !8 %_M_first3.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 128 %1 = load ptr, ptr %_M_first3.i.i.i.i, align 8, !noalias !8 + %_M_node5.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 144 %cmp.i.i.i = icmp eq ptr %0, %1 br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZNSt5stackImSt5dequeImSaImEEE3topEv.exit if.then.i.i.i: ; preds = %entry - %_M_node5.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 144 %2 = load ptr, ptr %_M_node5.i.i.i.i, align 8, !noalias !8 %add.ptr.i.i.i = getelementptr inbounds i8, ptr %2, i64 -8 %3 = load ptr, ptr %add.ptr.i.i.i, align 8 @@ -945,10 +945,9 @@ if.then.i.i: ; preds = %_ZNSt5stackImSt5deq if.else.i.i: ; preds = %_ZNSt5stackImSt5dequeImSaImEEE3topEv.exit call void @_ZdlPv(ptr noundef %8) #19 - %_M_node.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 144 - %9 = load ptr, ptr %_M_node.i.i.i, align 8 + %9 = load ptr, ptr %_M_node5.i.i.i.i, align 8 %add.ptr.i.i.i2 = getelementptr inbounds i8, ptr %9, i64 -8 - store ptr %add.ptr.i.i.i2, ptr %_M_node.i.i.i, align 8 + store ptr %add.ptr.i.i.i2, ptr %_M_node5.i.i.i.i, align 8 %10 = load ptr, ptr %add.ptr.i.i.i2, align 8 store ptr %10, ptr %_M_first3.i.i.i.i, align 8 %add.ptr.i.i.i.i3 = getelementptr inbounds nuw i8, ptr %10, i64 512 diff --git a/bench/imgui/optimized/imgui_demo.cpp.ll b/bench/imgui/optimized/imgui_demo.cpp.ll index 4d1c8db616f..bb7a4132b31 100644 --- a/bench/imgui/optimized/imgui_demo.cpp.ll +++ b/bench/imgui/optimized/imgui_demo.cpp.ll @@ -15288,6 +15288,7 @@ for.body249: ; preds = %do.end237, %if.end2 call void @_ZN5ImGui6PushIDEi(i32 noundef %n246.0305) %call250 = call noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef nonnull @.str.1018, ptr noundef nonnull align 4 dereferenceable(8) %button_sz) %call252 = call <2 x float> @_ZN5ImGui14GetItemRectMaxEv() + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ItemSpacing, i64 32) ] %add258 = add nuw nsw i32 %n246.0305, 1 %cmp259.not = icmp eq i32 %n246.0305, 19 br i1 %cmp259.not, label %if.end263.thread, label %land.lhs.true260 @@ -15297,8 +15298,8 @@ if.end263.thread: ; preds = %for.body249 br label %for.end266 land.lhs.true260: ; preds = %for.body249 - %ref.tmp251.sroa.0.0.vec.extract = extractelement <2 x float> %call252, i64 0 %37 = load float, ptr %ItemSpacing, align 4 + %ref.tmp251.sroa.0.0.vec.extract = extractelement <2 x float> %call252, i64 0 %add255 = fadd float %ref.tmp251.sroa.0.0.vec.extract, %37 %38 = load float, ptr %button_sz, align 4 %add257 = fadd float %add255, %38 @@ -26735,26 +26736,26 @@ declare void @llvm.va_start.p0(ptr) #25 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn declare void @llvm.va_end.p0(ptr) #25 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #26 + ; Function Attrs: nofree nounwind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #26 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #27 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #27 +declare i32 @llvm.smax.i32(i32, i32) #28 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #28 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #29 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #28 - -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #29 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #29 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.usub.sat.i32(i32, i32) #27 +declare i32 @llvm.usub.sat.i32(i32, i32) #28 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #27 +declare i32 @llvm.umax.i32(i32, i32) #28 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -26782,10 +26783,10 @@ attributes #22 = { mustprogress nofree nounwind willreturn allockind("alloc,unin attributes #23 = { mustprogress nofree nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #24 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #25 = { mustprogress nocallback nofree nosync nounwind willreturn } -attributes #26 = { nofree nounwind willreturn memory(argmem: read) } -attributes #27 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #28 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #29 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #26 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #27 = { nofree nounwind willreturn memory(argmem: read) } +attributes #28 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #29 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #30 = { nounwind } attributes #31 = { nounwind willreturn memory(read) } attributes #32 = { noreturn nounwind } diff --git a/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll b/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll index e7b1c2fcc54..1d617d30075 100644 --- a/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll +++ b/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll @@ -3112,7 +3112,6 @@ common.resume: ; preds = %"_ZN4core3ptr73drop %230 = load i64, ptr %.sroa.576.0..sroa_idx, align 8, !noundef !4 %.val121 = load ptr, ptr %22, align 8, !nonnull !4, !align !5, !noundef !4 %231 = getelementptr inbounds nuw i8, ptr %.val121, i64 56 - call void @llvm.experimental.noalias.scope.decl(metadata !520) %232 = getelementptr inbounds nuw i8, ptr %.val121, i64 80 %233 = load i64, ptr %232, align 8, !alias.scope !520, !noalias !523, !noundef !4 %234 = getelementptr inbounds nuw i8, ptr %.val121, i64 72 @@ -3138,11 +3137,12 @@ common.resume: ; preds = %"_ZN4core3ptr73drop %.val.i.i = load ptr, ptr %231, align 8, !alias.scope !520, !noalias !523, !nonnull !4, !noundef !4 %240 = add i64 %233, -1 %241 = getelementptr inbounds [0 x i64], ptr %.val.i.i, i64 0, i64 %240 - %242 = load i64, ptr %241, align 8, !noalias !526, !noundef !4 + %242 = load i64, ptr %241, align 8, !noalias !523, !noundef !4 br label %_ZN3csv11byte_record6Bounds3end17h4453fd335d968684E.exit8.i _ZN3csv11byte_record6Bounds3end17h4453fd335d968684E.exit8.i: ; preds = %239, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hc4f148022b2f004fE.exit.i.i" %..sroa.5.0.i2.i = phi i64 [ %242, %239 ], [ 0, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hc4f148022b2f004fE.exit.i.i" ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %231, i64 0) ] %243 = add i64 %..sroa.5.0.i2.i, %230 %244 = getelementptr i8, ptr %.val121, i64 48 %245 = load i64, ptr %244, align 8, !noalias !523, !noundef !4 @@ -3173,9 +3173,9 @@ _ZN3csv11byte_record6Bounds3end17h4453fd335d968684E.exit8.i: ; preds = %239, %"_ "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE.exit.i": ; preds = %250 %253 = getelementptr inbounds i8, ptr %.val.i, i64 %..sroa.5.0.i2.i - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %253, ptr nonnull readonly align 1 %229, i64 %230, i1 false), !alias.scope !527, !noalias !531 - %254 = load i64, ptr %232, align 8, !alias.scope !533, !noalias !523, !noundef !4 - %255 = load i64, ptr %234, align 8, !alias.scope !533, !noalias !523, !noundef !4 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %253, ptr nonnull readonly align 1 %229, i64 %230, i1 false), !alias.scope !526, !noalias !530 + %254 = load i64, ptr %232, align 8, !alias.scope !532, !noalias !523, !noundef !4 + %255 = load i64, ptr %234, align 8, !alias.scope !532, !noalias !523, !noundef !4 %.not.i9.i = icmp ult i64 %254, %255 br i1 %.not.i9.i, label %260, label %256 @@ -3191,15 +3191,15 @@ _ZN3csv11byte_record6Bounds6expand17h52ac7e725671a19eE.exit.i.i: ; preds = %256 to label %.noexc155 unwind label %.loopexit.split-lp.loopexit .noexc155: ; preds = %_ZN3csv11byte_record6Bounds6expand17h52ac7e725671a19eE.exit.i.i - %.pre.i.i = load i64, ptr %232, align 8, !alias.scope !533, !noalias !523 - %.val1.pre.i.i = load i64, ptr %234, align 8, !alias.scope !533, !noalias !523 + %.pre.i.i = load i64, ptr %232, align 8, !alias.scope !532, !noalias !523 + %.val1.pre.i.i = load i64, ptr %234, align 8, !alias.scope !532, !noalias !523 br label %260 260: ; preds = %.noexc155, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE.exit.i" %.val1.i.i = phi i64 [ %255, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE.exit.i" ], [ %.val1.pre.i.i, %.noexc155 ] %261 = phi i64 [ %254, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE.exit.i" ], [ %.pre.i.i, %.noexc155 ] %262 = icmp ult i64 %261, %.val1.i.i - br i1 %262, label %272, label %263, !prof !536 + br i1 %262, label %272, label %263, !prof !535 263: ; preds = %260 invoke void @_ZN4core9panicking18panic_bounds_check17h326a19b32dc06d6dE(i64 noundef %261, i64 noundef %.val1.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7f594b1cc0dc9c97352e1e787ce274d2.5) #19 @@ -3238,36 +3238,36 @@ _ZN3csv11byte_record10ByteRecord13expand_fields17h5a8b01154a42d1a0E.exit.i: ; pr br label %199 272: ; preds = %260 - %.val.i10.i = load ptr, ptr %231, align 8, !alias.scope !533, !noalias !523, !nonnull !4, !noundef !4 + %.val.i10.i = load ptr, ptr %231, align 8, !alias.scope !532, !noalias !523, !nonnull !4, !noundef !4 %273 = getelementptr inbounds [0 x i64], ptr %.val.i10.i, i64 0, i64 %261 store i64 %243, ptr %273, align 8, !noalias !523 - %274 = load i64, ptr %232, align 8, !alias.scope !533, !noalias !523, !noundef !4 + %274 = load i64, ptr %232, align 8, !alias.scope !532, !noalias !523, !noundef !4 %275 = add i64 %274, 1 - store i64 %275, ptr %232, align 8, !alias.scope !533, !noalias !523 + store i64 %275, ptr %232, align 8, !alias.scope !532, !noalias !523 %276 = icmp eq ptr %208, %191 br i1 %276, label %._crit_edge, label %.lr.ph "_ZN4core3ptr49drop_in_place$LT$csv..byte_record..ByteRecord$GT$17h30830cce557d706aE.exit": ; preds = %"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$csv..byte_record..ByteRecordInner$GT$$GT$17h4438329835290fbdE.llvm.9135219245553044050.exit.i" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !537 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !536 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a6f3122bc871979E.llvm.9135219245553044050"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %23) to label %.noexc159 unwind label %142 .noexc159: ; preds = %"_ZN4core3ptr49drop_in_place$LT$csv..byte_record..ByteRecord$GT$17h30830cce557d706aE.exit" %277 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %278 = load i64, ptr %277, align 8, !range !22, !noalias !537, !noundef !4 + %278 = load i64, ptr %277, align 8, !range !22, !noalias !536, !noundef !4 %.not.i.i.i.i = icmp eq i64 %278, 0 br i1 %.not.i.i.i.i, label %283, label %279 279: ; preds = %.noexc159 - %280 = load ptr, ptr %4, align 8, !noalias !537, !nonnull !4, !noundef !4 + %280 = load ptr, ptr %4, align 8, !noalias !536, !nonnull !4, !noundef !4 %281 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %282 = load i64, ptr %281, align 8, !noalias !537, !noundef !4 + %282 = load i64, ptr %281, align 8, !noalias !536, !noundef !4 invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.9135219245553044050"(ptr noalias noundef nonnull readonly align 1 %.sroa.576.0..sroa_idx, ptr noundef nonnull %280, i64 noundef %278, i64 noundef %282) to label %283 unwind label %142 283: ; preds = %.noexc159, %279 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !537 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !536 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) call void @"_ZN4core3ptr79drop_in_place$LT$alloc..vec..Vec$LT$arrow_cast..display..ArrayFormatter$GT$$GT$17h84d390cc70627d55E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24) br label %284 @@ -4115,23 +4115,22 @@ attributes #21 = { nounwind } !523 = !{!524} !524 = distinct !{!524, !525, !"_ZN3csv11byte_record10ByteRecord10push_field17h0cc57479ef87b612E: argument 0"} !525 = distinct !{!525, !"_ZN3csv11byte_record10ByteRecord10push_field17h0cc57479ef87b612E"} -!526 = !{!521, !524} -!527 = !{!528, !530} -!528 = distinct !{!528, !529, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE: argument 0"} -!529 = distinct !{!529, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE"} -!530 = distinct !{!530, !529, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE: argument 1"} -!531 = !{!532} -!532 = distinct !{!532, !529, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE: argument 2"} -!533 = !{!534} -!534 = distinct !{!534, !535, !"_ZN3csv11byte_record6Bounds3add17h31e6f7e99210d6f5E: argument 0"} -!535 = distinct !{!535, !"_ZN3csv11byte_record6Bounds3add17h31e6f7e99210d6f5E"} -!536 = !{!"branch_weights", !"expected", i32 2000, i32 1} -!537 = !{!538, !540, !542, !544} -!538 = distinct !{!538, !539, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7fa299f6aedf61a4E.llvm.9135219245553044050: argument 0"} -!539 = distinct !{!539, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7fa299f6aedf61a4E.llvm.9135219245553044050"} -!540 = distinct !{!540, !541, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h254db327b8d07824E.llvm.9135219245553044050: argument 0"} -!541 = distinct !{!541, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h254db327b8d07824E.llvm.9135219245553044050"} -!542 = distinct !{!542, !543, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE: argument 0"} -!543 = distinct !{!543, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE"} -!544 = distinct !{!544, !545, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he5d25177cc006e74E: argument 0"} -!545 = distinct !{!545, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he5d25177cc006e74E"} +!526 = !{!527, !529} +!527 = distinct !{!527, !528, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE: argument 0"} +!528 = distinct !{!528, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE"} +!529 = distinct !{!529, !528, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE: argument 1"} +!530 = !{!531} +!531 = distinct !{!531, !528, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE: argument 2"} +!532 = !{!533} +!533 = distinct !{!533, !534, !"_ZN3csv11byte_record6Bounds3add17h31e6f7e99210d6f5E: argument 0"} +!534 = distinct !{!534, !"_ZN3csv11byte_record6Bounds3add17h31e6f7e99210d6f5E"} +!535 = !{!"branch_weights", !"expected", i32 2000, i32 1} +!536 = !{!537, !539, !541, !543} +!537 = distinct !{!537, !538, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7fa299f6aedf61a4E.llvm.9135219245553044050: argument 0"} +!538 = distinct !{!538, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7fa299f6aedf61a4E.llvm.9135219245553044050"} +!539 = distinct !{!539, !540, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h254db327b8d07824E.llvm.9135219245553044050: argument 0"} +!540 = distinct !{!540, !"_ZN4core3ptr53drop_in_place$LT$alloc..raw_vec..RawVec$LT$u8$GT$$GT$17h254db327b8d07824E.llvm.9135219245553044050"} +!541 = distinct !{!541, !542, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE: argument 0"} +!542 = distinct !{!542, !"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h9e32ce5b3990e24aE"} +!543 = distinct !{!543, !544, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he5d25177cc006e74E: argument 0"} +!544 = distinct !{!544, !"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he5d25177cc006e74E"} diff --git a/bench/jemalloc/optimized/eset.ll b/bench/jemalloc/optimized/eset.ll index 44f80c8e083..bffd9f33d65 100644 --- a/bench/jemalloc/optimized/eset.ll +++ b/bench/jemalloc/optimized/eset.ll @@ -395,6 +395,7 @@ cond.false.i: ; preds = %if.then.i if.end.i: ; preds = %sz_psz2ind.exit.i %div2.i26.i.i = lshr i64 %retval.i.0.i, 6 %arrayidx.i.i.i = getelementptr inbounds nuw i64, ptr %eset, i64 %div2.i26.i.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i.i, i64 64) ] %6 = load i64, ptr %arrayidx.i.i.i, align 8 %rem3.i.i.i = and i64 %retval.i.0.i, 63 %notmask.i.i = shl nsw i64 -1, %rem3.i.i.i @@ -483,6 +484,7 @@ for.inc.i: ; preds = %if.end46.i %add.i = add nuw nsw i64 %conv1056.i, 1 %div2.i26.i26.i = lshr i64 %add.i, 6 %arrayidx.i.i27.i = getelementptr inbounds nuw i64, ptr %eset, i64 %div2.i26.i26.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i27.i, i64 64) ] %14 = load i64, ptr %arrayidx.i.i27.i, align 8 %rem3.i.i28.i = and i64 %add.i, 63 %notmask.i29.i = shl nsw i64 -1, %rem3.i.i28.i @@ -571,6 +573,7 @@ sz_psz2ind.exit.i22: ; preds = %if.end.i.i13, %sz_p %retval.i.0.i23 = phi i32 [ %add13.i.i21, %if.end.i.i13 ], [ 199, %sz_psz2ind.exit71.i ] %div2.i26.i.i24 = lshr i64 %retval.i36.0.i, 6 %arrayidx.i.i.i25 = getelementptr inbounds nuw i64, ptr %eset, i64 %div2.i26.i.i24 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i.i25, i64 64) ] %28 = load i64, ptr %arrayidx.i.i.i25, align 8 %rem3.i.i.i26 = and i64 %retval.i36.0.i, 63 %notmask.i.i27 = shl nsw i64 -1, %rem3.i.i.i26 @@ -640,6 +643,7 @@ for.inc.i40: ; preds = %do.end8.i %add33.i = add nuw nsw i64 %idxprom.i, 1 %div2.i26.i29.i = lshr i64 %add33.i, 6 %arrayidx.i.i30.i = getelementptr inbounds nuw i64, ptr %eset, i64 %div2.i26.i29.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i30.i, i64 64) ] %35 = load i64, ptr %arrayidx.i.i30.i, align 8 %rem3.i.i31.i = and i64 %add33.i, 63 %notmask.i32.i = shl nsw i64 -1, %rem3.i.i31.i diff --git a/bench/jq/optimized/regparse.ll b/bench/jq/optimized/regparse.ll index 1ef8ac6a658..59db785f3b9 100644 --- a/bench/jq/optimized/regparse.ll +++ b/bench/jq/optimized/regparse.ll @@ -7095,8 +7095,8 @@ define internal fastcc i32 @prs_branch(ptr nocapture noundef nonnull writeonly i br i1 %19, label %onig_node_free.exit, label %20 20: ; preds = %17 - tail call fastcc void @node_free_body(ptr noundef nonnull %18) - tail call void @free(ptr noundef nonnull %18) #25 + call fastcc void @node_free_body(ptr noundef nonnull %18) + call void @free(ptr noundef nonnull %18) #25 br label %onig_node_free.exit 21: ; preds = %14 @@ -7116,12 +7116,12 @@ define internal fastcc i32 @prs_branch(ptr nocapture noundef nonnull writeonly i 28: ; preds = %23 %29 = load ptr, ptr %8, align 8 - %calloc.i.i = tail call noalias noundef dereferenceable_or_null(72) ptr @calloc(i64 1, i64 72) + %calloc.i.i = call noalias noundef dereferenceable_or_null(72) ptr @calloc(i64 1, i64 72) %30 = icmp eq ptr %calloc.i.i, null br i1 %30, label %31, label %35 -.thread: ; preds = %53 - store ptr null, ptr %.060, align 8 +.thread: ; preds = %54 + store ptr null, ptr %.061, align 8 br label %33 31: ; preds = %28 @@ -7131,8 +7131,8 @@ define internal fastcc i32 @prs_branch(ptr nocapture noundef nonnull writeonly i 33: ; preds = %.thread, %31 %34 = phi ptr [ %43, %.thread ], [ %29, %31 ] - tail call fastcc void @node_free_body(ptr noundef nonnull %34) - tail call void @free(ptr noundef nonnull %34) #25 + call fastcc void @node_free_body(ptr noundef nonnull %34) + call void @free(ptr noundef nonnull %34) #25 br label %onig_node_free.exit 35: ; preds = %28 @@ -7142,12 +7142,12 @@ define internal fastcc i32 @prs_branch(ptr nocapture noundef nonnull writeonly i store ptr %calloc.i.i, ptr %0, align 8 br label %37 -37: ; preds = %35, %58 - %calloc.i.i.pn = phi ptr [ %calloc.i.i, %35 ], [ %calloc.i.i52.pn, %58 ] - %.14059 = phi i32 [ %15, %35 ], [ %41, %58 ] - %.060 = getelementptr inbounds nuw i8, ptr %calloc.i.i.pn, i64 24 - %38 = icmp ne i32 %.14059, %2 - %39 = icmp ne i32 %.14059, 13 +37: ; preds = %35, %.loopexit + %calloc.i.i.pn = phi ptr [ %calloc.i.i, %35 ], [ %calloc.i.i52.pn, %.loopexit ] + %.14060 = phi i32 [ %15, %35 ], [ %41, %.loopexit ] + %.061 = getelementptr inbounds nuw i8, ptr %calloc.i.i.pn, i64 24 + %38 = icmp ne i32 %.14060, %2 + %39 = icmp ne i32 %.14060, 13 %or.cond3 = and i1 %38, %39 br i1 %or.cond3, label %40, label %.critedge @@ -7158,50 +7158,53 @@ define internal fastcc i32 @prs_branch(ptr nocapture noundef nonnull writeonly i br i1 %42, label %44, label %45 44: ; preds = %40 - tail call void @onig_node_free(ptr noundef %43) + call void @onig_node_free(ptr noundef %43) br label %onig_node_free.exit 45: ; preds = %40 %46 = load i32, ptr %43, align 8 %47 = icmp eq i32 %46, 7 - br i1 %47, label %48, label %53 + br i1 %47, label %48, label %54 48: ; preds = %45 - store ptr %43, ptr %.060, align 8 - br label %49 - -49: ; preds = %49, %48 - %50 = phi ptr [ %52, %49 ], [ %43, %48 ] - %51 = getelementptr inbounds nuw i8, ptr %50, i64 24 - %52 = load ptr, ptr %51, align 8 - %.not50 = icmp eq ptr %52, null - br i1 %.not50, label %.loopexit, label %49, !llvm.loop !44 + store ptr %43, ptr %.061, align 8 + %49 = getelementptr inbounds nuw i8, ptr %43, i64 24 + %50 = load ptr, ptr %49, align 8 + %.not5059 = icmp eq ptr %50, null + br i1 %.not5059, label %.loopexit, label %.lr.ph + +.lr.ph: ; preds = %48, %.lr.ph + %51 = phi ptr [ %53, %.lr.ph ], [ %50, %48 ] + %52 = getelementptr inbounds nuw i8, ptr %51, i64 24 + %53 = load ptr, ptr %52, align 8 + %.not50 = icmp eq ptr %53, null + br i1 %.not50, label %..loopexit_crit_edge, label %.lr.ph, !llvm.loop !44 -53: ; preds = %45 - %calloc.i.i52 = tail call noalias noundef dereferenceable_or_null(72) ptr @calloc(i64 1, i64 72) - %54 = icmp eq ptr %calloc.i.i52, null - br i1 %54, label %.thread, label %55 +54: ; preds = %45 + %calloc.i.i52 = call noalias noundef dereferenceable_or_null(72) ptr @calloc(i64 1, i64 72) + %55 = icmp eq ptr %calloc.i.i52, null + br i1 %55, label %.thread, label %56 -55: ; preds = %53 +56: ; preds = %54 store i32 7, ptr %calloc.i.i52, align 8 - %56 = getelementptr inbounds nuw i8, ptr %calloc.i.i52, i64 16 - store ptr %43, ptr %56, align 8 - %57 = getelementptr inbounds nuw i8, ptr %calloc.i.i52, i64 24 - store ptr null, ptr %57, align 8 - store ptr %calloc.i.i52, ptr %.060, align 8 - br label %58 + %57 = getelementptr inbounds nuw i8, ptr %calloc.i.i52, i64 16 + store ptr %43, ptr %57, align 8 + %58 = getelementptr inbounds nuw i8, ptr %calloc.i.i52, i64 24 + store ptr null, ptr %58, align 8 + store ptr %calloc.i.i52, ptr %.061, align 8 + br label %.loopexit -.loopexit: ; preds = %49 - store ptr %50, ptr %8, align 8 - br label %58 +..loopexit_crit_edge: ; preds = %.lr.ph + store ptr %51, ptr %8, align 8 + br label %.loopexit -58: ; preds = %.loopexit, %55 - %calloc.i.i52.pn = phi ptr [ %calloc.i.i52, %55 ], [ %50, %.loopexit ] +.loopexit: ; preds = %48, %..loopexit_crit_edge, %56 + %calloc.i.i52.pn = phi ptr [ %calloc.i.i52, %56 ], [ %51, %..loopexit_crit_edge ], [ %43, %48 ] %.not = icmp eq i32 %41, 0 br i1 %.not, label %.critedge, label %37, !llvm.loop !45 -.critedge: ; preds = %58, %37, %26 - %.039 = phi i32 [ %15, %26 ], [ 0, %58 ], [ %.14059, %37 ] +.critedge: ; preds = %.loopexit, %37, %26 + %.039 = phi i32 [ %15, %26 ], [ 0, %.loopexit ], [ %.14060, %37 ] %59 = load i32, ptr %9, align 8 %60 = add i32 %59, -1 store i32 %60, ptr %9, align 8 @@ -7213,7 +7216,7 @@ onig_node_free.exit: ; preds = %33, %31, %20, %17, } ; Function Attrs: nounwind uwtable -define internal fastcc i32 @prs_exp(ptr nocapture noundef nonnull initializes((0, 8)) %0, ptr noundef nonnull %1, i32 noundef range(i32 0, 16) %2, ptr nocapture noundef nonnull %3, ptr noundef %4, ptr noundef %5, i32 noundef range(i32 0, 2) %6) unnamed_addr #2 { +define internal fastcc i32 @prs_exp(ptr noundef nonnull initializes((0, 8)) %0, ptr noundef nonnull %1, i32 noundef range(i32 0, 16) %2, ptr nocapture noundef nonnull %3, ptr noundef %4, ptr noundef %5, i32 noundef range(i32 0, 2) %6) unnamed_addr #2 { %8 = alloca [2 x ptr], align 16 %9 = alloca [14 x i8], align 1 %10 = alloca [1 x i8], align 1 @@ -12884,8 +12887,8 @@ str_node_can_be_split.exit: ; preds = %17 %32 = sub i64 %30, %31 %.not85 = icmp sgt i64 %32, %27 %33 = icmp ugt ptr %28, %29 - %or.cond86 = and i1 %.not85, %33 - br i1 %or.cond86, label %34, label %str_node_can_be_split.exit.thread + %or.cond92 = and i1 %.not85, %33 + br i1 %or.cond92, label %34, label %str_node_can_be_split.exit.thread 34: ; preds = %str_node_can_be_split.exit %35 = load ptr, ptr %18, align 8 @@ -13018,12 +13021,12 @@ quantifier_type_num.exit: ; preds = %60, %63, %68, %71, br i1 %89, label %quantifier_type_num.exit75, label %.thread quantifier_type_num.exit75.sink.split: ; preds = %85, %80 - %.sink88 = phi i32 [ 1, %80 ], [ 4, %85 ] + %.sink87 = phi i32 [ 1, %80 ], [ 4, %85 ] %.sink = phi i32 [ %79, %80 ], [ 3, %85 ] %90 = getelementptr inbounds nuw i8, ptr %1, i64 28 %91 = load i32, ptr %90, align 4 %switch.selectcmp.i67 = icmp eq i32 %91, -1 - %switch.select.i68 = select i1 %switch.selectcmp.i67, i32 %.sink88, i32 -1 + %switch.select.i68 = select i1 %switch.selectcmp.i67, i32 %.sink87, i32 -1 %switch.selectcmp15.i69 = icmp eq i32 %91, 1 %switch.select16.i70 = select i1 %switch.selectcmp15.i69, i32 %.sink, i32 %switch.select.i68 br label %quantifier_type_num.exit75 diff --git a/bench/jsonnet/optimized/vm.cpp.ll b/bench/jsonnet/optimized/vm.cpp.ll index 8d0681305b0..4334824e69a 100644 --- a/bench/jsonnet/optimized/vm.cpp.ll +++ b/bench/jsonnet/optimized/vm.cpp.ll @@ -3377,6 +3377,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn .noexc495: ; preds = %.noexc494 %.sroa.0.0.copyload.i = load i32, ptr %253, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx, i64 0) ] %513 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i489 = icmp eq i32 %513, 0 br i1 %.not.i.i489, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %514 @@ -4661,6 +4662,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i.i: ; preds = %_ZN7jso .noexc22.i: ; preds = %.noexc21.i %.sroa.0.0.copyload.i.i = load i32, ptr %253, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx, i64 0) ] %910 = and i32 %.sroa.0.0.copyload.i.i, 16 %.not.i.i.i522 = icmp eq i32 %910, 0 br i1 %.not.i.i.i522, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i, label %911 @@ -5476,6 +5478,7 @@ _ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE to label %_ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE13_M_deallocateEPS4_m.exit.i unwind label %.loopexit.split-lp3136.loopexit _ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE13_M_deallocateEPS4_m.exit.i: ; preds = %_ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE11_M_allocateEm.exit.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %416, i64 0) ] %.pre6094.pre = load ptr, ptr %417, align 8 %.pre6093.pre = load ptr, ptr %416, align 8 store ptr %428, ptr %10, align 8 @@ -5706,6 +5709,7 @@ _ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE to label %_ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE13_M_deallocateEPS4_m.exit.i1652 unwind label %.loopexit.split-lp3141.loopexit.split-lp.loopexit.split-lp.loopexit _ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE13_M_deallocateEPS4_m.exit.i1652: ; preds = %_ZNSt12_Vector_baseIN7jsonnet8internal12_GLOBAL__N_111HeapClosure5ParamESaIS4_EE11_M_allocateEm.exit.i1643 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %492, i64 0) ] %.pre6087.pre = load ptr, ptr %493, align 8 %.pre6086.pre = load ptr, ptr %492, align 8 store ptr %504, ptr %12, align 8 @@ -6038,6 +6042,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i.i: ; preds = %_ZN7jso .noexc1677: ; preds = %.noexc1676 %.sroa.0.0.copyload.i.i = load i32, ptr %198, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %199, i64 0) ] %600 = and i32 %.sroa.0.0.copyload.i.i, 16 %.not.i.i.i1670 = icmp eq i32 %600, 0 br i1 %.not.i.i.i1670, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i, label %601 @@ -6338,14 +6343,15 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i.i1689: ; preds = %_ZN .noexc15.i: ; preds = %.noexc14.i %.sroa.0.0.copyload.i.i1691 = load i32, ptr %198, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %199, i64 0) ] %713 = and i32 %.sroa.0.0.copyload.i.i1691, 16 - %.not.i.i.i1692 = icmp eq i32 %713, 0 - br i1 %.not.i.i.i1692, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i1696, label %714 + %.not.i.i.i1693 = icmp eq i32 %713, 0 + br i1 %.not.i.i.i1693, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i1696, label %714 714: ; preds = %.noexc15.i - %.val18.i.i1693 = load i8, ptr %223, align 8 + %.val18.i.i1694 = load i8, ptr %223, align 8 %.sroa.28.0.copyload.i.i1695 = load ptr, ptr %199, align 8 - invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i.i1693, ptr noundef %.sroa.28.0.copyload.i.i1695) + invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i.i1694, ptr noundef %.sroa.28.0.copyload.i.i1695) to label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i1696 unwind label %.loopexit.split-lp.loopexit.split-lp.i.loopexit _ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i1696: ; preds = %714, %.noexc15.i @@ -6921,6 +6927,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn %.val20.i = load ptr, ptr %197, align 8 call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val19.i, ptr %.val20.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %.sroa.0.0.copyload.i = load i32, ptr %198, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %199, i64 0) ] %942 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i1765 = icmp eq i32 %942, 0 br i1 %.not.i.i1765, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %943 @@ -8588,14 +8595,15 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i1890: ; preds = %_ZN7j .noexc1944: ; preds = %.noexc1943 %.sroa.0.0.copyload.i1893 = load i32, ptr %198, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %199, i64 0) ] %1511 = and i32 %.sroa.0.0.copyload.i1893, 16 - %.not.i.i1894 = icmp eq i32 %1511, 0 - br i1 %.not.i.i1894, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i1898, label %1512 + %.not.i.i1895 = icmp eq i32 %1511, 0 + br i1 %.not.i.i1895, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i1898, label %1512 1512: ; preds = %.noexc1944 - %.val18.i1895 = load i8, ptr %223, align 8 + %.val18.i1896 = load i8, ptr %223, align 8 %.sroa.28.0.copyload.i1897 = load ptr, ptr %199, align 8 - invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i1895, ptr noundef %.sroa.28.0.copyload.i1897) + invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i1896, ptr noundef %.sroa.28.0.copyload.i1897) to label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i1898 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit _ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i1898: ; preds = %1512, %.noexc1944 @@ -10887,14 +10895,15 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i.i2138: ; preds = %_ZN %.val18.i.i2140 = load ptr, ptr %197, align 8 call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val17.i.i2139, ptr %.val18.i.i2140, ptr noundef nonnull align 8 dereferenceable(480) %0) %.sroa.0.0.copyload.i.i2141 = load i32, ptr %198, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %199, i64 0) ] %2304 = and i32 %.sroa.0.0.copyload.i.i2141, 16 - %.not.i.i.i2142 = icmp eq i32 %2304, 0 - br i1 %.not.i.i.i2142, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i2146, label %2305 + %.not.i.i.i2143 = icmp eq i32 %2304, 0 + br i1 %.not.i.i.i2143, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i2146, label %2305 2305: ; preds = %2303 - %.val16.i.i2143 = load i8, ptr %223, align 8 + %.val16.i.i2144 = load i8, ptr %223, align 8 %.sroa.28.0.copyload.i.i2145 = load ptr, ptr %199, align 8 - call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val16.i.i2143, ptr noundef %.sroa.28.0.copyload.i.i2145) + call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val16.i.i2144, ptr noundef %.sroa.28.0.copyload.i.i2145) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i2146 _ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i.i2146: ; preds = %2305, %2303 @@ -20652,6 +20661,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn .noexc96: ; preds = %.noexc95 %.sroa.0.0.copyload.i = load i32, ptr %95, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %157 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %157, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %158 @@ -20971,14 +20981,15 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i109: ; preds = %_ZN7js .noexc152: ; preds = %.noexc151 %.sroa.0.0.copyload.i112 = load i32, ptr %95, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %275 = and i32 %.sroa.0.0.copyload.i112, 16 - %.not.i.i113 = icmp eq i32 %275, 0 - br i1 %.not.i.i113, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i117, label %276 + %.not.i.i114 = icmp eq i32 %275, 0 + br i1 %.not.i.i114, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i117, label %276 276: ; preds = %.noexc152 - %.val18.i114 = load i8, ptr %90, align 8 + %.val18.i115 = load i8, ptr %90, align 8 %.sroa.28.0.copyload.i116 = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 - invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i114, ptr noundef %.sroa.28.0.copyload.i116) + invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i115, ptr noundef %.sroa.28.0.copyload.i116) to label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i117 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit _ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i117: ; preds = %276, %.noexc152 @@ -26916,6 +26927,7 @@ _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE4findERKS4_m.exit: ; pr _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE4findERKS4_m.exit.thread59: ; preds = %62, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE4findERKS4_m.exit %.027.i.i61 = phi i64 [ %96, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE4findERKS4_m.exit ], [ %.02971, %62 ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %60, i64 0) ] %98 = icmp ugt i64 %.027.i.i61, %63 br i1 %98, label %99, label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE7replaceEmmPKDim.exit.i @@ -31742,13 +31754,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val16.i, ptr %.val17.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %73 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload.i = load i32, ptr %73, align 8 + %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %74 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %74, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %75 75: ; preds = %70 %.val15.i = load i8, ptr %51, align 8 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload.i = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val15.i, ptr noundef %.sroa.28.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i @@ -34294,7 +34307,7 @@ _ZNSt6vectorIZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS2_10HeapEntityEE } ; Function Attrs: mustprogress uwtable -define internal fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr readonly %.16.val, ptr readnone %.24.val, ptr nocapture noundef nonnull readonly align 8 dereferenceable(64) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { +define internal fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.16.val, ptr readnone %.24.val, ptr noundef nonnull align 8 dereferenceable(64) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { %.not2 = icmp eq ptr %.16.val, %.24.val br i1 %.not2, label %._crit_edge, label %.lr.ph @@ -34311,8 +34324,8 @@ define internal fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_ br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %6 6: ; preds = %3 - %.val36.i = load i8, ptr %2, align 8 %.sroa.212.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.01.03, i64 96 + %.val36.i = load i8, ptr %2, align 8 %.sroa.212.0.copyload.i = load ptr, ptr %.sroa.212.0..sroa_idx.i, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val36.i, ptr noundef %.sroa.212.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i @@ -34320,13 +34333,14 @@ define internal fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_ _ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i: ; preds = %6, %3 %7 = getelementptr inbounds nuw i8, ptr %.sroa.01.03, i64 104 %.sroa.0.0.copyload.i = load i32, ptr %7, align 8 + %.sroa.29.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.01.03, i64 112 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.29.0..sroa_idx.i, i64 0) ] %8 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i42.i = icmp eq i32 %8, 0 br i1 %.not.i42.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit43.i, label %9 9: ; preds = %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i %.val35.i = load i8, ptr %2, align 8 - %.sroa.29.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.01.03, i64 112 %.sroa.29.0.copyload.i = load ptr, ptr %.sroa.29.0..sroa_idx.i, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val35.i, ptr noundef %.sroa.29.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit43.i @@ -35243,13 +35257,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val16.i, ptr %.val17.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %70 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload.i = load i32, ptr %70, align 8 + %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %71 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %71, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %72 72: ; preds = %67 %.val15.i = load i8, ptr %48, align 8 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload.i = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val15.i, ptr noundef %.sroa.28.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i @@ -36501,13 +36516,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit: ; preds = %_ZN7jsonnet tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val19, ptr %.val20, ptr noundef nonnull align 8 dereferenceable(64) %0) %63 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload = load i32, ptr %63, align 8 + %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx, i64 0) ] %64 = and i32 %.sroa.0.0.copyload, 16 %.not.i = icmp eq i32 %64, 0 br i1 %.not.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit, label %65 65: ; preds = %60 %.val18 = load i8, ptr %41, align 8 - %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload = load ptr, ptr %.sroa.28.0..sroa_idx, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18, ptr noundef %.sroa.28.0.copyload) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit @@ -37642,13 +37658,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn .noexc10: ; preds = %.noexc9 %64 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload.i = load i32, ptr %64, align 8 + %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %65 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %65, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %66 66: ; preds = %.noexc10 %.val20.i = load i8, ptr %42, align 8 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload.i = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 invoke fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val20.i, ptr noundef %.sroa.28.0.copyload.i) to label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i unwind label %.loopexit.split-lp.loopexit.split-lp @@ -38603,7 +38620,7 @@ _ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE6appendERKS4_.exit26: ; declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #0 ; Function Attrs: mustprogress uwtable -define internal fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9joinArrayERbRSt6vectorIPNS1_9HeapThunkESaIS6_EERKNS1_5ValueEjSC_(ptr nocapture noundef nonnull readonly align 8 dereferenceable(480) %0, ptr nocapture noundef nonnull align 1 dereferenceable(1) %1, ptr nocapture noundef nonnull align 8 dereferenceable(24) %2, ptr nocapture readonly %.8.val, i32 noundef %3, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %4) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { +define internal fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9joinArrayERbRSt6vectorIPNS1_9HeapThunkESaIS6_EERKNS1_5ValueEjSC_(ptr nocapture noundef nonnull readonly align 8 dereferenceable(480) %0, ptr nocapture noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr nocapture readonly %.8.val, i32 noundef %3, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %4) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { %6 = alloca %"class.std::__cxx11::basic_stringstream", align 8 %7 = alloca %"class.std::__cxx11::basic_string", align 8 %8 = alloca %"class.std::__cxx11::basic_string", align 8 @@ -38728,7 +38745,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_111Interpreter9makeErrorERKNS0_13LocationRangeE } ; Function Attrs: mustprogress uwtable -define internal fastcc void @_ZNSt6vectorIPN7jsonnet8internal12_GLOBAL__N_19HeapThunkESaIS4_EE6insertIN9__gnu_cxx17__normal_iteratorIPS4_S6_EEvEESB_NS9_IPKS4_S6_EET_SF_(ptr nocapture noundef nonnull align 8 dereferenceable(24) %0, ptr %1, ptr %2, ptr %3) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { +define internal fastcc void @_ZNSt6vectorIPN7jsonnet8internal12_GLOBAL__N_19HeapThunkESaIS4_EE6insertIN9__gnu_cxx17__normal_iteratorIPS4_S6_EEvEESB_NS9_IPKS4_S6_EET_SF_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %1, ptr %2, ptr %3) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 { %.val10 = load ptr, ptr %0, align 8 %5 = ptrtoint ptr %1 to i64 %6 = ptrtoint ptr %.val10 to i64 @@ -53523,13 +53540,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val19.i, ptr %.val20.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %60 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload.i = load i32, ptr %60, align 8 + %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %61 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %61, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %62 62: ; preds = %57 %.val18.i = load i8, ptr %38, align 8 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload.i = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i, ptr noundef %.sroa.28.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i @@ -62550,13 +62568,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit: ; preds = %_ZN7jsonnet tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val19, ptr %.val20, ptr noundef nonnull align 8 dereferenceable(64) %0) %64 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload = load i32, ptr %64, align 8 + %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx, i64 0) ] %65 = and i32 %.sroa.0.0.copyload, 16 %.not.i = icmp eq i32 %65, 0 br i1 %.not.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit, label %66 66: ; preds = %61 %.val18 = load i8, ptr %42, align 8 - %.sroa.28.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload = load ptr, ptr %.sroa.28.0..sroa_idx, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18, ptr noundef %.sroa.28.0.copyload) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit @@ -63502,13 +63521,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val18.i, ptr %.val19.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %146 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload.i = load i32, ptr %146, align 8 + %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %147 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %147, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %148 148: ; preds = %143 %.val17.i = load i8, ptr %124, align 8 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload.i = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val17.i, ptr noundef %.sroa.28.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i @@ -66007,6 +66027,7 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn %.val20.i = load ptr, ptr %26, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val19.i, ptr %.val20.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %.sroa.0.0.copyload.i = load i32, ptr %27, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %91 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %91, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %92 @@ -66575,13 +66596,14 @@ _ZN7jsonnet8internal12_GLOBAL__N_14Heap9checkHeapEv.exit.i: ; preds = %_ZN7jsonn tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_15Stack4markERNS1_4HeapE(ptr %.val19.i, ptr %.val20.i, ptr noundef nonnull align 8 dereferenceable(480) %0) %60 = getelementptr inbounds nuw i8, ptr %0, i64 64 %.sroa.0.0.copyload.i = load i32, ptr %60, align 8 + %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.28.0..sroa_idx.i, i64 0) ] %61 = and i32 %.sroa.0.0.copyload.i, 16 %.not.i.i = icmp eq i32 %61, 0 br i1 %.not.i.i, label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i, label %62 62: ; preds = %57 %.val18.i = load i8, ptr %38, align 8 - %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %.sroa.28.0.copyload.i = load ptr, ptr %.sroa.28.0..sroa_idx.i, align 8 tail call fastcc void @_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromEPNS1_10HeapEntityE(i8 %.val18.i, ptr noundef %.sroa.28.0.copyload.i) br label %_ZN7jsonnet8internal12_GLOBAL__N_14Heap8markFromENS1_5ValueE.exit.i diff --git a/bench/libevent/optimized/evutil_rand.c.ll b/bench/libevent/optimized/evutil_rand.c.ll index 810d1ddfb0a..8b9ad97673e 100644 --- a/bench/libevent/optimized/evutil_rand.c.ll +++ b/bench/libevent/optimized/evutil_rand.c.ll @@ -25,13 +25,13 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local range(i32 -1, 1) i32 @evutil_secure_rng_global_setup_locks_(i32 noundef %enable_locks) local_unnamed_addr #0 { entry: %0 = load ptr, ptr @arc4rand_lock, align 8 - %call = tail call ptr @evthread_setup_global_lock_(ptr noundef %0, i32 noundef 0, i32 noundef %enable_locks) #7 + %call = tail call ptr @evthread_setup_global_lock_(ptr noundef %0, i32 noundef 0, i32 noundef %enable_locks) #8 store ptr %call, ptr @arc4rand_lock, align 8 %tobool.not = icmp eq ptr %call, null br i1 %tobool.not, label %if.then, label %return if.then: ; preds = %entry - tail call void (ptr, ...) @event_warn(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #7 + tail call void (ptr, ...) @event_warn(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #8 br label %return return: ; preds = %entry, %if.then @@ -56,7 +56,7 @@ do.end.thread: ; preds = %entry do.end: ; preds = %entry %1 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 24), align 8 - %call = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #7 + %call = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #8 %.pr = load ptr, ptr @arc4rand_lock, align 8 store ptr %fname, ptr @arc4random_urandom_filename, align 8 %tobool2.not = icmp eq ptr %.pr, null @@ -64,7 +64,7 @@ do.end: ; preds = %entry if.then3: ; preds = %do.end %2 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %call4 = tail call i32 %2(i32 noundef 0, ptr noundef nonnull %.pr) #7 + %call4 = tail call i32 %2(i32 noundef 0, ptr noundef nonnull %.pr) #8 br label %do.end6 do.end6: ; preds = %do.end.thread, %do.end, %if.then3 @@ -80,7 +80,7 @@ entry: if.then: ; preds = %entry %1 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 24), align 8 - %call = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #7 + %call = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #8 br label %do.end do.end: ; preds = %entry, %if.then @@ -91,7 +91,7 @@ do.end: ; preds = %entry, %if.then if.then5: ; preds = %do.end %3 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %call6 = tail call i32 %3(i32 noundef 0, ptr noundef nonnull %2) #7 + %call6 = tail call i32 %3(i32 noundef 0, ptr noundef nonnull %2) #8 br label %do.end8 do.end8: ; preds = %do.end, %if.then5 @@ -137,7 +137,7 @@ for.body.i.i: ; preds = %for.cond.i.i, %if.e %len.05.i.i = phi i64 [ 0, %if.end ], [ %add.i.i, %for.cond.i.i ] %arrayidx.i.i = getelementptr inbounds nuw [32 x i8], ptr %buf.i.i, i64 0, i64 %len.05.i.i %sub.i.i = sub nuw nsw i64 32, %len.05.i.i - %call.i.i = call i64 @getrandom(ptr noundef nonnull %arrayidx.i.i, i64 noundef %sub.i.i, i32 noundef 0) #7 + %call.i.i = call i64 @getrandom(ptr noundef nonnull %arrayidx.i.i, i64 noundef %sub.i.i, i32 noundef 0) #8 %cmp1.i.i = icmp slt i64 %call.i.i, 0 br i1 %cmp1.i.i, label %arc4_seed_getrandom.exit.i, label %for.cond.i.i @@ -173,7 +173,7 @@ for.body.i.i.i: ; preds = %for.body.i.i.i, %fo 4: ; preds = %for.body.i.i.i store i8 %add.i.i.i, ptr @rs, align 1 store i8 %add.i.i.i, ptr getelementptr inbounds nuw (i8, ptr @rs, i64 1), align 1 - call void @evutil_memclear_(ptr noundef nonnull %buf.i.i, i64 noundef 32) #7 + call void @evutil_memclear_(ptr noundef nonnull %buf.i.i, i64 noundef 32) #8 br label %arc4_seed_getrandom.exit.i arc4_seed_getrandom.exit.i: ; preds = %for.body.i.i, %4 @@ -183,18 +183,19 @@ arc4_seed_getrandom.exit.i: ; preds = %for.body.i.i, %4 %tobool.not.i.i = icmp eq ptr %6, null br i1 %tobool.not.i.i, label %for.body.i4.i, label %arc4_seed_urandom.exit.i -for.cond.i7.i: ; preds = %for.body.i4.i +for.cond.i6.i: ; preds = %for.body.i4.i %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 + %arrayidx.i7.i = getelementptr inbounds nuw [4 x ptr], ptr @arc4_seed_urandom.filenames, i64 0, i64 %indvars.iv.next.i.i %tobool1.not.i.i = icmp eq i64 %indvars.iv.next.i.i, 3 br i1 %tobool1.not.i.i, label %arc4_seed_urandom.exit.thread44.i, label %for.body.i4.i, !llvm.loop !9 -for.body.i4.i: ; preds = %arc4_seed_getrandom.exit.i, %for.cond.i7.i - %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %for.cond.i7.i ], [ 0, %arc4_seed_getrandom.exit.i ] - %arrayidx.i5.i = getelementptr inbounds nuw [4 x ptr], ptr @arc4_seed_urandom.filenames, i64 0, i64 %indvars.iv.i.i - %7 = load ptr, ptr %arrayidx.i5.i, align 8 +for.body.i4.i: ; preds = %arc4_seed_getrandom.exit.i, %for.cond.i6.i + %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %for.cond.i6.i ], [ 0, %arc4_seed_getrandom.exit.i ] + %arrayidx5.i.i = phi ptr [ %arrayidx.i7.i, %for.cond.i6.i ], [ @arc4_seed_urandom.filenames, %arc4_seed_getrandom.exit.i ] + %7 = load ptr, ptr %arrayidx5.i.i, align 8 %call4.i.i = call fastcc i32 @arc4_seed_urandom_helper_(ptr noundef %7) - %cmp.i6.i = icmp eq i32 %call4.i.i, 0 - br i1 %cmp.i6.i, label %arc4_seed_urandom.exit.thread.i, label %for.cond.i7.i + %cmp.i5.i = icmp eq i32 %call4.i.i, 0 + br i1 %cmp.i5.i, label %arc4_seed_urandom.exit.thread.i, label %for.cond.i6.i arc4_seed_urandom.exit.i: ; preds = %arc4_seed_getrandom.exit.i %call.i2.i = call fastcc i32 @arc4_seed_urandom_helper_(ptr noundef %6) @@ -205,8 +206,8 @@ arc4_seed_urandom.exit.i: ; preds = %arc4_seed_getrandom arc4_seed_urandom.exit.thread.i: ; preds = %for.body.i4.i, %arc4_seed_urandom.exit.i br label %arc4_seed_urandom.exit.thread44.i -arc4_seed_urandom.exit.thread44.i: ; preds = %for.cond.i7.i, %arc4_seed_urandom.exit.thread.i, %arc4_seed_urandom.exit.i - %8 = phi i32 [ 1, %arc4_seed_urandom.exit.thread.i ], [ %5, %arc4_seed_urandom.exit.i ], [ %5, %for.cond.i7.i ] +arc4_seed_urandom.exit.thread44.i: ; preds = %for.cond.i6.i, %arc4_seed_urandom.exit.thread.i, %arc4_seed_urandom.exit.i + %8 = phi i32 [ 1, %arc4_seed_urandom.exit.thread.i ], [ %5, %arc4_seed_urandom.exit.i ], [ %5, %for.cond.i6.i ] %9 = load ptr, ptr @arc4random_urandom_filename, align 8 %cmp5.i = icmp eq ptr %9, null br i1 %cmp5.i, label %land.lhs.true.i, label %arc4_seed.exit @@ -218,14 +219,14 @@ land.lhs.true.i: ; preds = %arc4_seed_urandom.e for.body.i9.i: ; preds = %arc4_addrandom.exit.i35.i, %land.lhs.true.i %bytes.018.i.i = phi i32 [ 0, %land.lhs.true.i ], [ %add.i36.i, %arc4_addrandom.exit.i35.i ] - %call.i10.i = call i32 @evutil_open_closeonexec_(ptr noundef nonnull @.str.5, i32 noundef 0, i32 noundef 0) #7 + %call.i10.i = call i32 @evutil_open_closeonexec_(ptr noundef nonnull @.str.5, i32 noundef 0, i32 noundef 0) #8 %cmp1.i11.i = icmp slt i32 %call.i10.i, 0 br i1 %cmp1.i11.i, label %if.end9.sink.split.i, label %if.end.i.i if.end.i.i: ; preds = %for.body.i9.i - %call2.i.i = call i64 @read(i32 noundef %call.i10.i, ptr noundef nonnull %buf.i8.i, i64 noundef 128) #7 + %call2.i.i = call i64 @read(i32 noundef %call.i10.i, ptr noundef nonnull %buf.i8.i, i64 noundef 128) #8 %conv.i.i = trunc i64 %call2.i.i to i32 - %call3.i.i = call i32 @close(i32 noundef %call.i10.i) #7 + %call3.i.i = call i32 @close(i32 noundef %call.i10.i) #8 %cmp4.i.i = icmp slt i32 %conv.i.i, 1 br i1 %cmp4.i.i, label %if.end9.sink.split.i, label %if.end7.i.i @@ -239,12 +240,12 @@ for.body12.i.i: ; preds = %for.inc.i.i, %if.en %nybbles.017.i.i = phi i32 [ 0, %if.end7.i.i ], [ %nybbles.1.i.i, %for.inc.i.i ] %arrayidx.i13.i = getelementptr inbounds nuw [128 x i8], ptr %buf.i8.i, i64 0, i64 %indvars.iv.i12.i %10 = load i8, ptr %arrayidx.i13.i, align 1 - %call13.i.i = call i32 @EVUTIL_ISXDIGIT_(i8 noundef signext %10) #7 + %call13.i.i = call i32 @EVUTIL_ISXDIGIT_(i8 noundef signext %10) #8 %tobool.not.i14.i = icmp eq i32 %call13.i.i, 0 br i1 %tobool.not.i14.i, label %for.inc.i.i, label %if.then14.i.i if.then14.i.i: ; preds = %for.body12.i.i - %call17.i.i = call i32 @evutil_hex_char_to_int_(i8 noundef signext %10) #7 + %call17.i.i = call i32 @evutil_hex_char_to_int_(i8 noundef signext %10) #8 %and.i.i = and i32 %nybbles.017.i.i, 1 %tobool18.not.i.i = icmp eq i32 %and.i.i, 0 %call17.tr.i.i = trunc i32 %call17.i.i to i8 @@ -321,8 +322,8 @@ arc4_addrandom.exit.i35.i: ; preds = %for.body.i.i19.i br i1 %cmp.i37.i, label %for.body.i9.i, label %18, !llvm.loop !11 18: ; preds = %arc4_addrandom.exit.i35.i - call void @evutil_memclear_(ptr noundef nonnull %entropy.i.i, i64 noundef 64) #7 - call void @evutil_memclear_(ptr noundef nonnull %buf.i8.i, i64 noundef 128) #7 + call void @evutil_memclear_(ptr noundef nonnull %entropy.i.i, i64 noundef 64) #8 + call void @evutil_memclear_(ptr noundef nonnull %buf.i8.i, i64 noundef 128) #8 br label %if.end9.sink.split.i if.end9.sink.split.i: ; preds = %for.end.i16.i, %if.end.i.i, %for.body.i9.i, %18 @@ -440,11 +441,11 @@ entry: if.then.i.i: ; preds = %entry %1 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 24), align 8 - %call.i.i = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #7 + %call.i.i = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #8 br label %do.end.i.i do.end.i.i: ; preds = %if.then.i.i, %entry - %call.i.i.i = tail call i32 @getpid() #7 + %call.i.i.i = tail call i32 @getpid() #8 %2 = load i32, ptr @arc4_count, align 4 %cmp.i.i.i = icmp sgt i32 %2, 0 %.b.i.i.i = load i1, ptr @rs_initialized, align 4 @@ -513,7 +514,7 @@ do.body7.i.i: ; preds = %if.end5.i.i, %arc4_ if.then9.i.i: ; preds = %do.body7.i.i %12 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %call10.i.i = tail call i32 %12(i32 noundef 0, ptr noundef nonnull %11) #7 + %call10.i.i = tail call i32 %12(i32 noundef 0, ptr noundef nonnull %11) #8 br label %ev_arc4random_buf.exit ev_arc4random_buf.exit: ; preds = %do.body7.i.i, %if.then9.i.i @@ -531,7 +532,7 @@ entry: if.then.i: ; preds = %entry %1 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 24), align 8 - %call.i = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #7 + %call.i = tail call i32 %1(i32 noundef 0, ptr noundef nonnull %0) #8 br label %do.end.i do.end.i: ; preds = %if.then.i, %entry @@ -543,6 +544,7 @@ if.then2.i: ; preds = %do.end.i br label %if.end4.i if.end4.i: ; preds = %if.then2.i, %do.end.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @rs, i64 8) ] %cmp8.i.not = icmp eq i64 %n, 0 br i1 %cmp8.i.not, label %do.body5.i, label %for.body.preheader.i @@ -601,7 +603,7 @@ do.body5.i: ; preds = %for.cond.do.body5_c if.then7.i: ; preds = %do.body5.i %9 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @evthread_lock_fns_, i64 32), align 8 - %call8.i = tail call i32 %9(i32 noundef 0, ptr noundef nonnull %8) #7 + %call8.i = tail call i32 %9(i32 noundef 0, ptr noundef nonnull %8) #8 br label %arc4random_addrandom.exit arc4random_addrandom.exit: ; preds = %do.body5.i, %if.then7.i @@ -621,7 +623,7 @@ land.lhs.true.i: ; preds = %entry br i1 %tobool1.not.i, label %do.end.i, label %if.then2.i if.then2.i: ; preds = %land.lhs.true.i - tail call void %1(ptr noundef nonnull %0, i32 noundef 0) #7 + tail call void %1(ptr noundef nonnull %0, i32 noundef 0) #8 br label %do.end.i do.end.i: ; preds = %if.then2.i, %land.lhs.true.i @@ -640,7 +642,7 @@ declare void @evutil_memclear_(ptr noundef, i64 noundef) local_unnamed_addr #1 define internal fastcc range(i32 -1, 1) i32 @arc4_seed_urandom_helper_(ptr noundef nonnull %fname) unnamed_addr #0 { entry: %buf = alloca [32 x i8], align 16 - %call = tail call i32 @evutil_open_closeonexec_(ptr noundef nonnull %fname, i32 noundef 0, i32 noundef 0) #7 + %call = tail call i32 @evutil_open_closeonexec_(ptr noundef nonnull %fname, i32 noundef 0, i32 noundef 0) #8 %cmp = icmp slt i32 %call, 0 br i1 %cmp, label %return, label %while.body.i @@ -653,16 +655,16 @@ while.body.i: ; preds = %entry, %while.cond. %numread.08.i = phi i64 [ %add.i, %while.cond.i ], [ 0, %entry ] %add.ptr.i = getelementptr inbounds nuw i8, ptr %buf, i64 %numread.08.i %sub.i = sub nuw nsw i64 32, %numread.08.i - %call.i = call i64 @read(i32 noundef range(i32 0, -2147483648) %call, ptr noundef nonnull %add.ptr.i, i64 noundef %sub.i) #7 + %call.i = call i64 @read(i32 noundef range(i32 0, -2147483648) %call, ptr noundef nonnull %add.ptr.i, i64 noundef %sub.i) #8 %or.cond = icmp slt i64 %call.i, 1 br i1 %or.cond, label %read_all.exit.thread, label %while.cond.i read_all.exit.thread: ; preds = %while.body.i - %call25 = tail call i32 @close(i32 noundef %call) #7 + %call25 = tail call i32 @close(i32 noundef %call) #8 br label %return read_all.exit: ; preds = %while.cond.i - %call2 = tail call i32 @close(i32 noundef %call) #7 + %call2 = tail call i32 @close(i32 noundef %call) #8 %cmp3.not = icmp eq i64 %add.i, 32 br i1 %cmp3.not, label %if.end5, label %return @@ -698,7 +700,7 @@ for.body.i: ; preds = %for.body.i, %if.end arc4_addrandom.exit: ; preds = %for.body.i store i8 %add.i3, ptr @rs, align 1 store i8 %add.i3, ptr getelementptr inbounds nuw (i8, ptr @rs, i64 1), align 1 - call void @evutil_memclear_(ptr noundef nonnull %buf, i64 noundef 32) #7 + call void @evutil_memclear_(ptr noundef nonnull %buf, i64 noundef 32) #8 br label %return return: ; preds = %read_all.exit.thread, %read_all.exit, %entry, %arc4_addrandom.exit @@ -726,11 +728,14 @@ declare i32 @getpid() local_unnamed_addr #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #5 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #7 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -738,8 +743,9 @@ attributes #2 = { nofree "frame-pointer"="all" "no-trapping-math"="true" "stack- attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nounwind } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/libjpeg-turbo/optimized/jdmainct.c.ll b/bench/libjpeg-turbo/optimized/jdmainct.c.ll index 9bf85fa18b6..bb57a009dd1 100644 --- a/bench/libjpeg-turbo/optimized/jdmainct.c.ll +++ b/bench/libjpeg-turbo/optimized/jdmainct.c.ll @@ -20,14 +20,14 @@ define void @jinit_d_main_controller(ptr noundef %0, i32 noundef %1) local_unnam store i32 %8, ptr %10, align 4 %11 = load ptr, ptr %0, align 8 %12 = load ptr, ptr %11, align 8 - tail call void %12(ptr noundef nonnull %0) #2 + tail call void %12(ptr noundef nonnull %0) #3 br label %13 13: ; preds = %5, %2 %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 %15 = load ptr, ptr %14, align 8 %16 = load ptr, ptr %15, align 8 - %17 = tail call ptr %16(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 152) #2 + %17 = tail call ptr %16(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 152) #3 %18 = getelementptr inbounds nuw i8, ptr %0, i64 552 store ptr %17, ptr %18, align 8 store ptr @start_pass_main, ptr %17, align 8 @@ -40,7 +40,7 @@ define void @jinit_d_main_controller(ptr noundef %0, i32 noundef %1) local_unnam store i32 4, ptr %21, align 8 %22 = load ptr, ptr %0, align 8 %23 = load ptr, ptr %22, align 8 - tail call void %23(ptr noundef nonnull %0) #2 + tail call void %23(ptr noundef nonnull %0) #3 br label %24 24: ; preds = %19, %13 @@ -63,7 +63,7 @@ define void @jinit_d_main_controller(ptr noundef %0, i32 noundef %1) local_unnam store i32 47, ptr %35, align 8 %36 = load ptr, ptr %0, align 8 %37 = load ptr, ptr %36, align 8 - tail call void %37(ptr noundef nonnull %0) #2 + tail call void %37(ptr noundef nonnull %0) #3 %.pre = load i32, ptr %29, align 8 br label %38 @@ -77,7 +77,7 @@ define void @jinit_d_main_controller(ptr noundef %0, i32 noundef %1) local_unnam %45 = shl nsw i32 %44, 1 %46 = sext i32 %45 to i64 %47 = shl nsw i64 %46, 3 - %48 = tail call ptr %42(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %47) #2 + %48 = tail call ptr %42(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %47) #3 %49 = getelementptr inbounds nuw i8, ptr %40, i64 120 store ptr %48, ptr %49, align 8 %50 = load i32, ptr %43, align 8 @@ -111,7 +111,7 @@ define void @jinit_d_main_controller(ptr noundef %0, i32 noundef %1) local_unnam %70 = shl nsw i32 %69, 1 %71 = sext i32 %70 to i64 %72 = shl nsw i64 %71, 3 - %73 = tail call ptr %68(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %72) #2 + %73 = tail call ptr %68(ptr noundef nonnull %0, i32 noundef 1, i64 noundef %72) #3 %74 = sext i32 %66 to i64 %75 = getelementptr inbounds ptr, ptr %73, i64 %74 %76 = load ptr, ptr %49, align 8 @@ -171,7 +171,7 @@ alloc_funny_pointers.exit: ; preds = %59, %38 %110 = load i32, ptr %109, align 4 %111 = mul i32 %110, %102 %112 = mul nsw i32 %105, %.038 - %113 = tail call ptr %108(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %111, i32 noundef %112) #2 + %113 = tail call ptr %108(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %111, i32 noundef %112) #3 %114 = getelementptr inbounds nuw [10 x ptr], ptr %97, i64 0, i64 %indvars.iv store ptr %113, ptr %114, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -344,7 +344,7 @@ make_funny_pointers.exit: ; preds = %._crit_edge.i, %11 store i32 4, ptr %80, align 8 %81 = load ptr, ptr %0, align 8 %82 = load ptr, ptr %81, align 8 - tail call void %82(ptr noundef nonnull %0) #2 + tail call void %82(ptr noundef nonnull %0) #3 br label %83 83: ; preds = %78, %76, %73 @@ -371,7 +371,7 @@ define internal void @process_data_context_main(ptr noundef %0, ptr noundef %1, %17 = sext i32 %16 to i64 %18 = getelementptr inbounds [2 x ptr], ptr %14, i64 0, i64 %17 %19 = load ptr, ptr %18, align 8 - %20 = tail call i32 %13(ptr noundef nonnull %0, ptr noundef %19) #2 + %20 = tail call i32 %13(ptr noundef nonnull %0, ptr noundef %19) #3 %.not49 = icmp eq i32 %20, 0 br i1 %.not49, label %182, label %21 @@ -406,7 +406,7 @@ define internal void @process_data_context_main(ptr noundef %0, ptr noundef %1, %39 = getelementptr inbounds nuw i8, ptr %6, i64 116 %40 = getelementptr inbounds nuw i8, ptr %6, i64 144 %41 = load i32, ptr %40, align 8 - tail call void %32(ptr noundef nonnull %0, ptr noundef %38, ptr noundef nonnull %39, i32 noundef %41, ptr noundef %1, ptr noundef %2, i32 noundef %3) #2 + tail call void %32(ptr noundef nonnull %0, ptr noundef %38, ptr noundef nonnull %39, i32 noundef %41, ptr noundef %1, ptr noundef %2, i32 noundef %3) #3 %42 = load i32, ptr %39, align 4 %43 = load i32, ptr %40, align 8 %44 = icmp ult i32 %42, %43 @@ -474,14 +474,15 @@ define internal void @process_data_context_main(ptr noundef %0, ptr noundef %1, br label %85 85: ; preds = %81, %68 - %86 = icmp sgt i32 %75, 0 - br i1 %86, label %.lr.ph.i, label %._crit_edge.i + %86 = load i32, ptr %67, align 8 + %87 = sext i32 %86 to i64 + %88 = getelementptr inbounds [2 x ptr], ptr %66, i64 0, i64 %87 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %88, i64 0) ] + %89 = icmp sgt i32 %75, 0 + br i1 %89, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %85 - %87 = load i32, ptr %67, align 8 - %88 = sext i32 %87 to i64 - %89 = getelementptr inbounds [2 x ptr], ptr %66, i64 0, i64 %88 - %90 = load ptr, ptr %89, align 8 + %90 = load ptr, ptr %88, align 8 %91 = getelementptr inbounds nuw ptr, ptr %90, i64 %indvars.iv39.i %92 = load ptr, ptr %91, align 8 %93 = shl nuw i32 %75, 1 @@ -528,7 +529,7 @@ set_bottom_pointers.exit: ; preds = %._crit_edge.i, %58, %111 = getelementptr inbounds nuw i8, ptr %6, i64 116 %112 = getelementptr inbounds nuw i8, ptr %6, i64 144 %113 = load i32, ptr %112, align 8 - tail call void %104(ptr noundef nonnull %0, ptr noundef %110, ptr noundef nonnull %111, i32 noundef %113, ptr noundef %1, ptr noundef %2, i32 noundef %3) #2 + tail call void %104(ptr noundef nonnull %0, ptr noundef %110, ptr noundef nonnull %111, i32 noundef %113, ptr noundef %1, ptr noundef %2, i32 noundef %3) #3 %114 = load i32, ptr %111, align 4 %115 = load i32, ptr %112, align 8 %116 = icmp ult i32 %114, %115 @@ -657,7 +658,7 @@ define internal void @process_data_simple_main(ptr noundef %0, ptr noundef %1, p %12 = getelementptr inbounds nuw i8, ptr %11, i64 24 %13 = load ptr, ptr %12, align 8 %14 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %15 = tail call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %14) #2 + %15 = tail call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %14) #3 %.not18 = icmp eq i32 %15, 0 br i1 %.not18, label %28, label %16 @@ -674,7 +675,7 @@ define internal void @process_data_simple_main(ptr noundef %0, ptr noundef %1, p %23 = load ptr, ptr %22, align 8 %24 = getelementptr inbounds nuw i8, ptr %6, i64 32 %25 = getelementptr inbounds nuw i8, ptr %6, i64 116 - tail call void %23(ptr noundef nonnull %0, ptr noundef nonnull %24, ptr noundef nonnull %25, i32 noundef %19, ptr noundef %1, ptr noundef %2, i32 noundef %3) #2 + tail call void %23(ptr noundef nonnull %0, ptr noundef nonnull %24, ptr noundef nonnull %25, i32 noundef %19, ptr noundef %1, ptr noundef %2, i32 noundef %3) #3 %26 = load i32, ptr %25, align 4 %.not19 = icmp ult i32 %26, %19 br i1 %.not19, label %28, label %27 @@ -694,16 +695,20 @@ define internal void @process_data_crank_post(ptr noundef %0, ptr noundef %1, pt %6 = load ptr, ptr %5, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 %8 = load ptr, ptr %7, align 8 - tail call void %8(ptr noundef %0, ptr noundef null, ptr noundef null, i32 noundef 0, ptr noundef %1, ptr noundef %2, i32 noundef %3) #2 + tail call void %8(ptr noundef %0, ptr noundef null, ptr noundef null, i32 noundef 0, ptr noundef %1, ptr noundef %2, i32 noundef %3) #3 ret void } +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #1 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #1 +declare i32 @llvm.smax.i32(i32, i32) #2 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind } +attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #3 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/libjpeg-turbo/optimized/jdsample.c.ll b/bench/libjpeg-turbo/optimized/jdsample.c.ll index 773eec713ba..2ca21c9cd15 100644 --- a/bench/libjpeg-turbo/optimized/jdsample.c.ll +++ b/bench/libjpeg-turbo/optimized/jdsample.c.ll @@ -20,7 +20,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { store i32 %7, ptr %9, align 4 %10 = load ptr, ptr %0, align 8 %11 = load ptr, ptr %10, align 8 - tail call void %11(ptr noundef nonnull %0) #7 + tail call void %11(ptr noundef nonnull %0) #8 br label %12 12: ; preds = %4, %1 @@ -35,7 +35,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 %19 = load ptr, ptr %18, align 8 %20 = load ptr, ptr %19, align 8 - %21 = tail call ptr %20(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 272) #7 + %21 = tail call ptr %20(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 272) #8 %22 = getelementptr inbounds nuw i8, ptr %0, i64 608 store ptr %21, ptr %22, align 8 store ptr @start_pass_upsample, ptr %21, align 8 @@ -63,7 +63,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { store i32 25, ptr %33, align 8 %34 = load ptr, ptr %0, align 8 %35 = load ptr, ptr %34, align 8 - tail call void %35(ptr noundef nonnull %0) #7 + tail call void %35(ptr noundef nonnull %0) #8 br label %36 36: ; preds = %31, %28 @@ -146,7 +146,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { br i1 %88, label %89, label %94 89: ; preds = %85 - %90 = tail call i32 @jsimd_can_h2v1_fancy_upsample() #7 + %90 = tail call i32 @jsimd_can_h2v1_fancy_upsample() #8 %.not119 = icmp eq i32 %90, 0 %91 = getelementptr inbounds nuw [10 x ptr], ptr %54, i64 0, i64 %indvars.iv br i1 %.not119, label %93, label %92 @@ -160,7 +160,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { br label %138 94: ; preds = %85, %84 - %95 = tail call i32 @jsimd_can_h2v1_upsample() #7 + %95 = tail call i32 @jsimd_can_h2v1_upsample() #8 %.not118 = icmp eq i32 %95, 0 %96 = getelementptr inbounds nuw [10 x ptr], ptr %54, i64 0, i64 %indvars.iv br i1 %.not118, label %98, label %97 @@ -201,7 +201,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { br i1 %110, label %111, label %114 111: ; preds = %107 - %112 = tail call i32 @jsimd_can_h2v2_fancy_upsample() #7 + %112 = tail call i32 @jsimd_can_h2v2_fancy_upsample() #8 %.not117 = icmp eq i32 %112, 0 %113 = getelementptr inbounds nuw [10 x ptr], ptr %54, i64 0, i64 %indvars.iv %h2v2_fancy_upsample.jsimd_h2v2_fancy_upsample = select i1 %.not117, ptr @h2v2_fancy_upsample, ptr @jsimd_h2v2_fancy_upsample @@ -210,7 +210,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { br label %138 114: ; preds = %107, %106 - %115 = tail call i32 @jsimd_can_h2v2_upsample() #7 + %115 = tail call i32 @jsimd_can_h2v2_upsample() #8 %.not116 = icmp eq i32 %115, 0 %116 = getelementptr inbounds nuw [10 x ptr], ptr %54, i64 0, i64 %indvars.iv br i1 %.not116, label %118, label %117 @@ -252,7 +252,7 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { store i32 38, ptr %135, align 8 %136 = load ptr, ptr %0, align 8 %137 = load ptr, ptr %136, align 8 - tail call void %137(ptr noundef nonnull %0) #7 + tail call void %137(ptr noundef nonnull %0) #8 br label %138 138: ; preds = %97, %98, %92, %93, %117, %118, %111, %133, %127, %103 @@ -270,10 +270,10 @@ define void @jinit_upsampler(ptr noundef %0) local_unnamed_addr #0 { %147 = zext i32 %146 to i64 %148 = load i32, ptr %51, align 8 %149 = sext i32 %148 to i64 - %150 = tail call i64 @jround_up(i64 noundef %147, i64 noundef %149) #7 + %150 = tail call i64 @jround_up(i64 noundef %147, i64 noundef %149) #8 %151 = trunc i64 %150 to i32 %152 = load i32, ptr %52, align 4 - %153 = tail call ptr %145(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %151, i32 noundef %152) #7 + %153 = tail call ptr %145(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %151, i32 noundef %152) #8 br label %.critedge.sink.split .critedge.sink.split: ; preds = %78, %61, %142 @@ -349,7 +349,7 @@ define internal void @sep_upsample(ptr noundef %0, ptr nocapture noundef readonl %32 = zext i32 %31 to i64 %33 = getelementptr inbounds nuw ptr, ptr %27, i64 %32 %34 = getelementptr inbounds nuw ptr, ptr %22, i64 %indvars.iv - tail call void %25(ptr noundef nonnull %0, ptr noundef %.04552, ptr noundef %33, ptr noundef nonnull %34) #7 + tail call void %25(ptr noundef nonnull %0, ptr noundef %.04552, ptr noundef %33, ptr noundef nonnull %34) #8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %35 = getelementptr inbounds nuw i8, ptr %.04552, i64 96 %36 = load i32, ptr %15, align 8 @@ -379,7 +379,7 @@ define internal void @sep_upsample(ptr noundef %0, ptr nocapture noundef readonl %51 = getelementptr inbounds nuw i8, ptr %9, i64 40 %52 = zext i32 %45 to i64 %53 = getelementptr inbounds nuw ptr, ptr %4, i64 %52 - tail call void %50(ptr noundef nonnull %0, ptr noundef nonnull %51, i32 noundef %40, ptr noundef %53, i32 noundef %.1) #7 + tail call void %50(ptr noundef nonnull %0, ptr noundef nonnull %51, i32 noundef %40, ptr noundef %53, i32 noundef %.1) #8 %54 = load i32, ptr %5, align 4 %55 = add i32 %54, %.1 store i32 %55, ptr %5, align 4 @@ -517,8 +517,8 @@ declare i32 @jsimd_can_h2v1_upsample() local_unnamed_addr #3 declare void @jsimd_h2v1_upsample(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3 -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal void @h2v1_upsample(ptr nocapture noundef readonly %0, ptr nocapture readnone %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3) #4 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define internal void @h2v1_upsample(ptr nocapture noundef readonly %0, ptr nocapture readnone %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3) #5 { %5 = load ptr, ptr %3, align 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 412 %7 = load i32, ptr %6, align 4 @@ -572,8 +572,8 @@ define internal void @h2v1_upsample(ptr nocapture noundef readonly %0, ptr nocap ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal void @h1v2_fancy_upsample(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3) #4 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define internal void @h1v2_fancy_upsample(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3) #5 { %5 = load ptr, ptr %3, align 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 412 %7 = load i32, ptr %6, align 4 @@ -615,9 +615,9 @@ define internal void @h1v2_fancy_upsample(ptr nocapture noundef readonly %0, ptr .lr.ph.preheader: ; preds = %.preheader.split %19 = getelementptr inbounds ptr, ptr %5, i64 %indvars.iv - %20 = load ptr, ptr %19, align 8 %.028.in.v = select i1 %18, i64 -8, i64 8 %.028.in = getelementptr i8, ptr %14, i64 %.028.in.v + %20 = load ptr, ptr %19, align 8 %.028 = load ptr, ptr %.028.in, align 8 %21 = load ptr, ptr %14, align 8 br label %.lr.ph @@ -853,7 +853,7 @@ define internal void @h2v2_upsample(ptr nocapture noundef readonly %0, ptr nocap ._crit_edge: ; preds = %._crit_edge.loopexit, %10 %23 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ 0, %10 ] %24 = or disjoint i32 %indvars34, 1 - tail call void @jcopy_sample_rows(ptr noundef %5, i32 noundef %indvars34, ptr noundef %5, i32 noundef %24, i32 noundef 1, i32 noundef %23) #7 + tail call void @jcopy_sample_rows(ptr noundef %5, i32 noundef %indvars34, ptr noundef %5, i32 noundef %24, i32 noundef 1, i32 noundef %23) #8 %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 %25 = load i32, ptr %6, align 4 @@ -934,7 +934,7 @@ define internal void @int_upsample(ptr nocapture noundef readonly %0, ptr nocapt ._crit_edge.split.us.us.us: ; preds = %._crit_edge.split.us.us.us.loopexit, %.lr.ph.split.us.split.us %38 = phi i32 [ %.pre72, %._crit_edge.split.us.us.us.loopexit ], [ 0, %.lr.ph.split.us.split.us ] %39 = add nuw nsw i32 %indvars69, 1 - tail call void @jcopy_sample_rows(ptr noundef %7, i32 noundef %indvars69, ptr noundef %7, i32 noundef %39, i32 noundef %24, i32 noundef %38) #7 + tail call void @jcopy_sample_rows(ptr noundef %7, i32 noundef %indvars69, ptr noundef %7, i32 noundef %39, i32 noundef %24, i32 noundef %38) #8 %indvars.iv.next68 = add nuw nsw i64 %indvars.iv67, 1 %indvars.iv.next66 = add nuw nsw i64 %indvars.iv65, %30 %40 = load i32, ptr %19, align 4 @@ -1003,7 +1003,7 @@ define internal void @int_upsample(ptr nocapture noundef readonly %0, ptr nocapt 62: ; preds = %.lr.ph.split.split.us %63 = add nuw nsw i32 %.042.us45, 1 - tail call void @jcopy_sample_rows(ptr noundef %7, i32 noundef %.042.us45, ptr noundef %7, i32 noundef %63, i32 noundef %24, i32 noundef 0) #7 + tail call void @jcopy_sample_rows(ptr noundef %7, i32 noundef %.042.us45, ptr noundef %7, i32 noundef %63, i32 noundef %24, i32 noundef 0) #8 %64 = add nuw nsw i32 %.042.us45, %18 %65 = load i32, ptr %19, align 4 %66 = icmp slt i32 %64, %65 @@ -1038,19 +1038,20 @@ declare i64 @jround_up(i64 noundef, i64 noundef) local_unnamed_addr #3 declare void @jcopy_sample_rows(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #6 +declare i32 @llvm.umin.i32(i32, i32) #7 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nounwind } +attributes #5 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #8 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/libquic/optimized/quic_session.cc.ll b/bench/libquic/optimized/quic_session.cc.ll index 3eaf66eb13b..ff51d1ffe5c 100644 --- a/bench/libquic/optimized/quic_session.cc.ll +++ b/bench/libquic/optimized/quic_session.cc.ll @@ -3857,13 +3857,14 @@ if.end25: ; preds = %entry %.fr = freeze i32 %7 %cmp.i = icmp slt i32 %.fr, 0 %8 = getelementptr inbounds nuw i8, ptr %this, i64 712 + %_M_before_begin.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 728 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %_M_before_begin.i.i.i.i, i64 0) ] %idx.ext.i = zext nneg i32 %.fr to i64 %add.ptr.i10 = getelementptr inbounds nuw %"class.base::ManualConstructor", ptr %8, i64 %idx.ext.i %retval.sroa.0.0.i11 = select i1 %cmp.i, ptr null, ptr %add.ptr.i10 br i1 %cmp.i, label %for.cond.us.preheader, label %for.cond.outer for.cond.us.preheader: ; preds = %if.end25 - %_M_before_begin.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 728 %9 = load ptr, ptr %_M_before_begin.i.i.i.i, align 8 %cmp.i.i.i.us74 = icmp eq ptr %9, null br i1 %cmp.i.i.i.us74, label %for.end, label %for.body.us @@ -3930,13 +3931,14 @@ for.end: ; preds = %if.then.i.i, %_ZN4b %.fr67 = freeze i32 %15 %cmp.i16 = icmp slt i32 %.fr67, 0 %16 = getelementptr inbounds nuw i8, ptr %this, i64 776 + %_M_before_begin.i.i.i.i17 = getelementptr inbounds nuw i8, ptr %this, i64 792 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %_M_before_begin.i.i.i.i17, i64 0) ] %idx.ext.i23 = zext nneg i32 %.fr67 to i64 %add.ptr.i24 = getelementptr inbounds nuw %"class.base::ManualConstructor", ptr %16, i64 %idx.ext.i23 %retval.sroa.0.0.i25 = select i1 %cmp.i16, ptr null, ptr %add.ptr.i24 br i1 %cmp.i16, label %for.cond36.us.preheader, label %for.cond36.outer for.cond36.us.preheader: ; preds = %for.end - %_M_before_begin.i.i.i.i17 = getelementptr inbounds nuw i8, ptr %this, i64 792 %17 = load ptr, ptr %_M_before_begin.i.i.i.i17, align 8 %cmp.i.i.i38.us78 = icmp eq ptr %17, null br i1 %cmp.i.i.i38.us78, label %for.end44, label %for.body38.us @@ -5694,13 +5696,14 @@ entry: %.fr = freeze i32 %0 %cmp.i = icmp slt i32 %.fr, 0 %1 = getelementptr inbounds nuw i8, ptr %this, i64 712 + %_M_before_begin.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 728 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %_M_before_begin.i.i.i.i, i64 0) ] %idx.ext.i = zext nneg i32 %.fr to i64 %add.ptr.i = getelementptr inbounds nuw %"class.base::ManualConstructor", ptr %1, i64 %idx.ext.i %retval.sroa.0.0.i4 = select i1 %cmp.i, ptr null, ptr %add.ptr.i br i1 %cmp.i, label %for.cond.us.preheader, label %for.cond.outer for.cond.us.preheader: ; preds = %entry - %_M_before_begin.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 728 %2 = load ptr, ptr %_M_before_begin.i.i.i.i, align 8 %cmp.i.i.i.us82 = icmp eq ptr %2, null br i1 %cmp.i.i.i.us82, label %for.end, label %for.body.us @@ -5779,13 +5782,14 @@ for.end: ; preds = %if.then.i.i, %_ZN4b %.fr66 = freeze i32 %8 %cmp.i9 = icmp slt i32 %.fr66, 0 %9 = getelementptr inbounds nuw i8, ptr %this, i64 776 + %_M_before_begin.i.i.i.i10 = getelementptr inbounds nuw i8, ptr %this, i64 792 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %_M_before_begin.i.i.i.i10, i64 0) ] %idx.ext.i16 = zext nneg i32 %.fr66 to i64 %add.ptr.i17 = getelementptr inbounds nuw %"class.base::ManualConstructor", ptr %9, i64 %idx.ext.i16 %retval.sroa.0.0.i18 = select i1 %cmp.i9, ptr null, ptr %add.ptr.i17 br i1 %cmp.i9, label %for.cond13.us.preheader, label %for.cond13.outer for.cond13.us.preheader: ; preds = %for.end - %_M_before_begin.i.i.i.i10 = getelementptr inbounds nuw i8, ptr %this, i64 792 %10 = load ptr, ptr %_M_before_begin.i.i.i.i10, align 8 %cmp.i.i.i31.us86 = icmp eq ptr %10, null br i1 %cmp.i.i.i31.us86, label %return, label %for.body15.us diff --git a/bench/libsodium/optimized/libsodium_la-argon2-fill-block-ref.ll b/bench/libsodium/optimized/libsodium_la-argon2-fill-block-ref.ll index c755cedfd3d..350066415d1 100644 --- a/bench/libsodium/optimized/libsodium_la-argon2-fill-block-ref.ll +++ b/bench/libsodium/optimized/libsodium_la-argon2-fill-block-ref.ll @@ -5,7 +5,7 @@ target triple = "x86_64-unknown-linux-gnu" %struct.block_ = type { [128 x i64] } -; Function Attrs: nofree norecurse nosync nounwind ssp memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind ssp memory(readwrite, inaccessiblemem: write) uwtable define hidden void @_sodium_argon2_fill_segment_ref(ptr noundef readonly %instance, i64 %position.coerce0, i64 %position.coerce1) local_unnamed_addr #0 { entry: %blockR.i = alloca %struct.block_, align 8 @@ -128,6 +128,7 @@ if.end9: ; preds = %if.end6.if.end9_cri %or.cond1 = select i1 %cmp11, i1 %cmp16, i1 false %spec.select39 = select i1 %or.cond1, i32 2, i32 0 %lane_length = getelementptr inbounds nuw i8, ptr %instance, i64 32 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %lane_length, i64 32) ] %14 = trunc i64 %position.coerce1 to i32 %conv21 = and i32 %14, 255 %segment_length = getelementptr inbounds nuw i8, ptr %instance, i64 28 @@ -1698,12 +1699,16 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 -attributes #0 = { nofree norecurse nosync nounwind ssp memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + +attributes #0 = { nofree norecurse nosync nounwind ssp memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind ssp memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/libsodium/optimized/libsodium_la-poly1305_donna.ll b/bench/libsodium/optimized/libsodium_la-poly1305_donna.ll index 05d8ce7eaae..9fd8756c677 100644 --- a/bench/libsodium/optimized/libsodium_la-poly1305_donna.ll +++ b/bench/libsodium/optimized/libsodium_la-poly1305_donna.ll @@ -44,6 +44,8 @@ if.end15.i: if.then17.i: ; preds = %if.end15.i %and.i2 = and i64 %inlen, -16 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %state, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx6.i, i64 64) ] %arrayidx9.i = getelementptr inbounds nuw i8, ptr %state, i64 32 %arrayidx11.i = getelementptr inbounds nuw i8, ptr %state, i64 40 %mul12.i = mul nuw nsw i64 %and8.i, 20 @@ -66,7 +68,7 @@ while.body.i: ; preds = %while.body.i, %if.t %arrayidx15.val.i = load i64, ptr %arrayidx15.i, align 1 %and.i7 = and i64 %m.addr.0.val.i, 17592186044415 %add.i8 = add nuw nsw i64 %and.i7, %h0.059.i - %or.i9 = tail call i64 @llvm.fshl.i64(i64 %arrayidx15.val.i, i64 %m.addr.0.val.i, i64 20) + %or.i9 = call i64 @llvm.fshl.i64(i64 %arrayidx15.val.i, i64 %m.addr.0.val.i, i64 20) %and17.i = and i64 %or.i9, 17592186044415 %add18.i = add nuw nsw i64 %and17.i, %h1.058.i %shr19.i = lshr i64 %arrayidx15.val.i, 24 @@ -160,7 +162,7 @@ define internal i32 @crypto_onetimeauth_poly1305_donna_verify(ptr noundef %h, pt entry: %correct = alloca [16 x i8], align 16 %call = call i32 @crypto_onetimeauth_poly1305_donna(ptr noundef nonnull %correct, ptr noundef %in, i64 noundef %inlen, ptr noundef %k) - %call2 = call i32 @crypto_verify_16(ptr noundef %h, ptr noundef nonnull %correct) #6 + %call2 = call i32 @crypto_verify_16(ptr noundef %h, ptr noundef nonnull %correct) #7 ret i32 %call2 } @@ -197,7 +199,7 @@ entry: ret i32 0 } -; Function Attrs: nofree norecurse nosync nounwind ssp memory(argmem: readwrite) uwtable +; Function Attrs: nofree norecurse nosync nounwind ssp memory(argmem: readwrite, inaccessiblemem: write) uwtable define internal noundef i32 @crypto_onetimeauth_poly1305_donna_update(ptr nocapture noundef %state, ptr nocapture noundef readonly %in, i64 noundef %inlen) #2 { entry: %leftover.i = getelementptr inbounds nuw i8, ptr %state, i64 64 @@ -398,11 +400,11 @@ if.end: ; preds = %for.end, %entry store i64 %or64, ptr %mac, align 1 %arrayidx69 = getelementptr i8, ptr %mac, i64 8 store i64 %or67, ptr %arrayidx69, align 1 - tail call void @sodium_memzero(ptr noundef nonnull %st, i64 noundef 96) #6 + tail call void @sodium_memzero(ptr noundef nonnull %st, i64 noundef 96) #7 ret void } -; Function Attrs: nofree norecurse nosync nounwind ssp memory(argmem: readwrite) uwtable +; Function Attrs: nofree norecurse nosync nounwind ssp memory(argmem: readwrite, inaccessiblemem: write) uwtable define internal fastcc void @poly1305_blocks(ptr nocapture noundef %st, ptr nocapture noundef readonly %m, i64 noundef range(i64 0, -15) %bytes) unnamed_addr #2 { entry: %final = getelementptr inbounds nuw i8, ptr %st, i64 88 @@ -420,9 +422,9 @@ entry: while.body.lr.ph: ; preds = %entry %arrayidx6 = getelementptr i8, ptr %st, i64 16 + %arrayidx4 = getelementptr i8, ptr %st, i64 8 %4 = load i64, ptr %arrayidx6, align 8 %mul12 = mul i64 %4, 20 - %arrayidx4 = getelementptr i8, ptr %st, i64 8 %5 = load i64, ptr %arrayidx4, align 8 %mul = mul i64 %5, 20 %6 = load i64, ptr %st, align 8 @@ -509,19 +511,23 @@ declare i32 @crypto_verify_16(ptr noundef, ptr noundef) local_unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.fshl.i64(i64, i64, i64) #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #4 attributes #0 = { nounwind ssp uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind ssp willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nofree norecurse nosync nounwind ssp memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #2 = { nofree norecurse nosync nounwind ssp memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nounwind } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/libwebp/optimized/buffer_dec.c.ll b/bench/libwebp/optimized/buffer_dec.c.ll index 2c014d72d4b..0680dab07f0 100644 --- a/bench/libwebp/optimized/buffer_dec.c.ll +++ b/bench/libwebp/optimized/buffer_dec.c.ll @@ -117,7 +117,7 @@ define hidden range(i32 0, 3) i32 @WebPAllocateDecBuffer(i32 noundef %0, i32 nou %22 = getelementptr inbounds nuw i8, ptr %2, i64 16 %23 = load i32, ptr %22, align 4 %24 = and i32 %23, -2 - %25 = tail call i32 @WebPCheckCropDimensions(i32 noundef %0, i32 noundef %1, i32 noundef %21, i32 noundef %24, i32 noundef %16, i32 noundef %18) #8 + %25 = tail call i32 @WebPCheckCropDimensions(i32 noundef %0, i32 noundef %1, i32 noundef %21, i32 noundef %24, i32 noundef %16, i32 noundef %18) #9 %.not48 = icmp eq i32 %25, 0 br i1 %.not48, label %WebPFlipBuffer.exit, label %26 @@ -136,7 +136,7 @@ define hidden range(i32 0, 3) i32 @WebPAllocateDecBuffer(i32 noundef %0, i32 nou %32 = getelementptr inbounds nuw i8, ptr %2, i64 36 %33 = load i32, ptr %32, align 4 store i32 %33, ptr %6, align 4 - %34 = call i32 @WebPRescalerGetScaledDimensions(i32 noundef %.1, i32 noundef %.138, ptr noundef nonnull %5, ptr noundef nonnull %6) #8 + %34 = call i32 @WebPRescalerGetScaledDimensions(i32 noundef %.1, i32 noundef %.138, ptr noundef nonnull %5, ptr noundef nonnull %6) #9 %.not50 = icmp eq i32 %34, 0 br i1 %.not50, label %WebPFlipBuffer.exit, label %35 @@ -213,7 +213,7 @@ define hidden range(i32 0, 3) i32 @WebPAllocateDecBuffer(i32 noundef %0, i32 nou %79 = shl nuw nsw i64 %.072.i, 1 %80 = add nuw nsw i64 %.073.i, %66 %81 = add nuw i64 %80, %79 - %82 = call ptr @WebPSafeMalloc(i64 noundef %81, i64 noundef 1) #8 + %82 = call ptr @WebPSafeMalloc(i64 noundef %81, i64 noundef 1) #9 %83 = icmp eq ptr %82, null br i1 %83, label %WebPFlipBuffer.exit, label %84 @@ -389,7 +389,7 @@ define void @WebPFreeDecBuffer(ptr noundef %0) local_unnamed_addr #1 { 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 112 %8 = load ptr, ptr %7, align 8 - tail call void @WebPSafeFree(ptr noundef %8) #8 + tail call void @WebPSafeFree(ptr noundef %8) #9 br label %9 9: ; preds = %6, %2 @@ -456,7 +456,7 @@ define hidden void @WebPGrabDecBuffer(ptr noundef %0, ptr noundef writeonly %1) } ; Function Attrs: nounwind uwtable -define hidden range(i32 0, 3) i32 @WebPCopyDecBufferPixels(ptr nocapture noundef readonly %0, ptr nocapture noundef initializes((4, 12)) %1) local_unnamed_addr #1 { +define hidden range(i32 0, 3) i32 @WebPCopyDecBufferPixels(ptr nocapture noundef readonly %0, ptr noundef initializes((4, 12)) %1) local_unnamed_addr #1 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 4 %4 = load i32, ptr %3, align 4 %5 = getelementptr inbounds nuw i8, ptr %1, i64 4 @@ -489,7 +489,7 @@ define hidden range(i32 0, 3) i32 @WebPCopyDecBufferPixels(ptr nocapture noundef %25 = load i8, ptr %24, align 1 %26 = zext i8 %25 to i32 %27 = mul nsw i32 %17, %26 - tail call void @WebPCopyPlane(ptr noundef %15, i32 noundef %20, ptr noundef %16, i32 noundef %22, i32 noundef %27, i32 noundef %7) #8 + tail call void @WebPCopyPlane(ptr noundef %15, i32 noundef %20, ptr noundef %16, i32 noundef %22, i32 noundef %27, i32 noundef %7) #9 br label %73 28: ; preds = %10 @@ -497,7 +497,7 @@ define hidden range(i32 0, 3) i32 @WebPCopyDecBufferPixels(ptr nocapture noundef %30 = load i32, ptr %29, align 8 %31 = getelementptr inbounds nuw i8, ptr %1, i64 48 %32 = load i32, ptr %31, align 8 - tail call void @WebPCopyPlane(ptr noundef %15, i32 noundef %30, ptr noundef %16, i32 noundef %32, i32 noundef %17, i32 noundef %7) #8 + tail call void @WebPCopyPlane(ptr noundef %15, i32 noundef %30, ptr noundef %16, i32 noundef %32, i32 noundef %17, i32 noundef %7) #9 %33 = getelementptr inbounds nuw i8, ptr %0, i64 24 %34 = load ptr, ptr %33, align 8 %35 = getelementptr inbounds nuw i8, ptr %0, i64 52 @@ -512,7 +512,7 @@ define hidden range(i32 0, 3) i32 @WebPCopyDecBufferPixels(ptr nocapture noundef %44 = load i32, ptr %6, align 8 %45 = add nsw i32 %44, 1 %46 = sdiv i32 %45, 2 - tail call void @WebPCopyPlane(ptr noundef %34, i32 noundef %36, ptr noundef %38, i32 noundef %40, i32 noundef %43, i32 noundef %46) #8 + tail call void @WebPCopyPlane(ptr noundef %34, i32 noundef %36, ptr noundef %38, i32 noundef %40, i32 noundef %43, i32 noundef %46) #9 %47 = getelementptr inbounds nuw i8, ptr %0, i64 32 %48 = load ptr, ptr %47, align 8 %49 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -527,7 +527,7 @@ define hidden range(i32 0, 3) i32 @WebPCopyDecBufferPixels(ptr nocapture noundef %58 = load i32, ptr %6, align 8 %59 = add nsw i32 %58, 1 %60 = sdiv i32 %59, 2 - tail call void @WebPCopyPlane(ptr noundef %48, i32 noundef %50, ptr noundef %52, i32 noundef %54, i32 noundef %57, i32 noundef %60) #8 + tail call void @WebPCopyPlane(ptr noundef %48, i32 noundef %50, ptr noundef %52, i32 noundef %54, i32 noundef %57, i32 noundef %60) #9 %61 = load i32, ptr %0, align 8 switch i32 %61, label %WebPIsAlphaMode.exit [ i32 12, label %WebPIsAlphaMode.exit.thread @@ -553,7 +553,7 @@ WebPIsAlphaMode.exit.thread: ; preds = %28, %28, %28, %28, %70 = load i32, ptr %69, align 4 %71 = load i32, ptr %3, align 4 %72 = load i32, ptr %6, align 8 - tail call void @WebPCopyPlane(ptr noundef %64, i32 noundef %66, ptr noundef %68, i32 noundef %70, i32 noundef %71, i32 noundef %72) #8 + tail call void @WebPCopyPlane(ptr noundef %64, i32 noundef %66, ptr noundef %68, i32 noundef %70, i32 noundef %71, i32 noundef %72) #9 br label %73 73: ; preds = %18, %WebPIsAlphaMode.exit.thread, %WebPIsAlphaMode.exit, %2 @@ -561,8 +561,8 @@ WebPIsAlphaMode.exit.thread: ; preds = %28, %28, %28, %28, ret i32 %.0 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define internal fastcc range(i32 0, 3) i32 @CheckDecBuffer(ptr nocapture noundef readonly %0) unnamed_addr #6 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable +define internal fastcc range(i32 0, 3) i32 @CheckDecBuffer(ptr noundef %0) unnamed_addr #6 { %2 = load i32, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %0, i64 4 %4 = load i32, ptr %3, align 4 @@ -699,7 +699,7 @@ define internal fastcc range(i32 0, 3) i32 @CheckDecBuffer(ptr nocapture noundef declare void @WebPCopyPlane(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define hidden range(i32 0, 2) i32 @WebPAvoidSlowMemory(ptr nocapture noundef readonly %0, ptr noundef readonly %1) local_unnamed_addr #6 { +define hidden range(i32 0, 2) i32 @WebPAvoidSlowMemory(ptr nocapture noundef readonly %0, ptr noundef readonly %1) local_unnamed_addr #7 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 12 %4 = load i32, ptr %3, align 4 %5 = icmp sgt i32 %4, 1 @@ -728,7 +728,7 @@ define hidden range(i32 0, 2) i32 @WebPAvoidSlowMemory(ptr nocapture noundef rea declare ptr @WebPSafeMalloc(i64 noundef, i64 noundef) local_unnamed_addr #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.abs.i32(i32, i1 immarg) #7 +declare i32 @llvm.abs.i32(i32, i1 immarg) #8 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -736,9 +736,10 @@ attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect attributes #3 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nounwind } +attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/lua/optimized/ltable.ll b/bench/lua/optimized/ltable.ll index 00da34a9046..e002b1eae92 100644 --- a/bench/lua/optimized/ltable.ll +++ b/bench/lua/optimized/ltable.ll @@ -109,7 +109,7 @@ if.else.i31: ; preds = %cond.end.i br i1 %cmp12.i, label %if.then17.i, label %if.end18.i if.then17.i: ; preds = %if.else.i31 - tail call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str) #11 + tail call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str) #12 unreachable if.end18.i: ; preds = %if.else.i31 @@ -264,19 +264,19 @@ if.then.i: ; preds = %setlimittosize.exit br label %setnodevector.exit if.else.i: ; preds = %setlimittosize.exit - %call.i = tail call i32 @luaO_ceillog2(i32 noundef %nhsize) #12 + %call.i = tail call i32 @luaO_ceillog2(i32 noundef %nhsize) #13 %cmp2.i = icmp ugt i32 %call.i, 30 br i1 %cmp2.i, label %if.then3.i, label %if.end.i if.then3.i: ; preds = %if.else.i - tail call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str.1) #11 + tail call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str.1) #12 unreachable if.end.i: ; preds = %if.else.i %shl.i = shl nuw nsw i32 1, %call.i %3 = zext nneg i32 %call.i to i64 %mul.i = shl nuw nsw i64 24, %3 - %call5.i = tail call ptr @luaM_malloc_(ptr noundef %L, i64 noundef %mul.i, i32 noundef 0) #12 + %call5.i = tail call ptr @luaM_malloc_(ptr noundef %L, i64 noundef %mul.i, i32 noundef 0) #13 %node6.i = getelementptr inbounds nuw i8, ptr %newt, i64 24 store ptr %call5.i, ptr %node6.i, align 8 %wide.trip.count.i = zext nneg i32 %shl.i to i64 @@ -460,7 +460,7 @@ if.end10: ; preds = %setnodevector.exit. %25 = load ptr, ptr %array11, align 8 %mul = shl nuw nsw i64 %conv12.pre-phi, 4 %mul14 = shl nuw nsw i64 %conv13.pre-phi, 4 - %call15 = tail call ptr @luaM_realloc_(ptr noundef %L, ptr noundef %25, i64 noundef %mul, i64 noundef %mul14) #12 + %call15 = tail call ptr @luaM_realloc_(ptr noundef %L, ptr noundef %25, i64 noundef %mul, i64 noundef %mul14) #13 %cmp16 = icmp eq ptr %call15, null %cmp18 = icmp ne i32 %newasize, 0 %26 = and i1 %cmp18, %cmp16 @@ -468,7 +468,7 @@ if.end10: ; preds = %setnodevector.exit. if.then23: ; preds = %if.end10 call fastcc void @freehash(ptr noundef %L, ptr noundef nonnull %newt) - tail call void @luaD_throw(ptr noundef %L, i32 noundef 4) #11 + tail call void @luaD_throw(ptr noundef %L, i32 noundef 4) #12 unreachable if.end24: ; preds = %if.end10 @@ -554,7 +554,7 @@ reinsert.exit: ; preds = %for.inc.i, %for.end if.then.i70: ; preds = %reinsert.exit %conv1.i = sext i32 %shl.i59 to i64 %mul.i75 = mul nsw i64 %conv1.i, 24 - tail call void @luaM_free_(ptr noundef %L, ptr noundef %28, i64 noundef %mul.i75) #12 + tail call void @luaM_free_(ptr noundef %L, ptr noundef %28, i64 noundef %mul.i75) #13 br label %freehash.exit freehash.exit: ; preds = %reinsert.exit, %if.then.i70 @@ -698,7 +698,7 @@ if.then: ; preds = %entry %shl = shl nuw i32 1, %conv %conv1 = sext i32 %shl to i64 %mul = mul nsw i64 %conv1, 24 - tail call void @luaM_free_(ptr noundef %L, ptr noundef %1, i64 noundef %mul) #12 + tail call void @luaM_free_(ptr noundef %L, ptr noundef %1, i64 noundef %mul) #13 br label %if.end if.end: ; preds = %if.then, %entry @@ -732,7 +732,7 @@ cond.end: ; preds = %entry, %cond.false ; Function Attrs: nounwind uwtable define hidden ptr @luaH_new(ptr noundef %L) local_unnamed_addr #1 { entry: - %call = tail call ptr @luaC_newobj(ptr noundef %L, i32 noundef 5, i64 noundef 56) #12 + %call = tail call ptr @luaC_newobj(ptr noundef %L, i32 noundef 5, i64 noundef 56) #13 %metatable = getelementptr inbounds nuw i8, ptr %call, i64 40 store ptr null, ptr %metatable, align 8 %flags = getelementptr inbounds nuw i8, ptr %call, i64 10 @@ -769,7 +769,7 @@ if.then.i: ; preds = %entry %shl.i = shl nuw i32 1, %conv.i %conv1.i = sext i32 %shl.i to i64 %mul.i = mul nsw i64 %conv1.i, 24 - tail call void @luaM_free_(ptr noundef %L, ptr noundef %1, i64 noundef %mul.i) #12 + tail call void @luaM_free_(ptr noundef %L, ptr noundef %1, i64 noundef %mul.i) #13 br label %freehash.exit freehash.exit: ; preds = %entry, %if.then.i @@ -803,8 +803,8 @@ luaH_realasize.exit: ; preds = %freehash.exit, %if. %retval.0.i = phi i32 [ %inc.i, %if.else.i ], [ %.pre.i, %freehash.exit ] %conv = zext i32 %retval.0.i to i64 %mul = shl nuw nsw i64 %conv, 4 - tail call void @luaM_free_(ptr noundef %L, ptr noundef %3, i64 noundef %mul) #12 - tail call void @luaM_free_(ptr noundef %L, ptr noundef nonnull %t, i64 noundef 56) #12 + tail call void @luaM_free_(ptr noundef %L, ptr noundef %3, i64 noundef %mul) #13 + tail call void @luaM_free_(ptr noundef %L, ptr noundef nonnull %t, i64 noundef 56) #13 ret void } @@ -1045,7 +1045,7 @@ sw.bb32.i.us: ; preds = %if.end.i.us %2 = load ptr, ptr %key, align 8 %key_val34.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 %3 = load ptr, ptr %key_val34.i.us, align 8 - %call.i.us = tail call i32 @luaS_eqlngstr(ptr noundef %2, ptr noundef %3) #12 + %call.i.us = tail call i32 @luaS_eqlngstr(ptr noundef %2, ptr noundef %3) #13 br label %equalkey.exit.us sw.bb27.i.us: ; preds = %if.end.i.us @@ -1167,7 +1167,7 @@ sw.bb32.i: ; preds = %if.end.i %26 = load ptr, ptr %key, align 8 %key_val34.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 %27 = load ptr, ptr %key_val34.i, align 8 - %call.i = tail call i32 @luaS_eqlngstr(ptr noundef %26, ptr noundef %27) #12 + %call.i = tail call i32 @luaS_eqlngstr(ptr noundef %26, ptr noundef %27) #13 br label %equalkey.exit sw.default.i: ; preds = %if.end.i, %land.lhs.true.i @@ -1345,7 +1345,7 @@ return.sink.split.i: ; preds = %if.then10.i, %sw.bb sw.bb5: ; preds = %entry %19 = load double, ptr %key, align 8 - %call7 = call i32 @luaV_flttointeger(double noundef %19, ptr noundef nonnull %k, i32 noundef 0) #12 + %call7 = call i32 @luaV_flttointeger(double noundef %19, ptr noundef nonnull %k, i32 noundef 0) #13 %tobool.not = icmp eq i32 %call7, 0 br i1 %tobool.not, label %sw.default, label %if.then @@ -1489,7 +1489,7 @@ entry: br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - tail call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str.2) #11 + tail call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str.2) #12 unreachable if.else: ; preds = %entry @@ -1498,7 +1498,7 @@ if.else: ; preds = %entry if.then9: ; preds = %if.else %2 = load double, ptr %key, align 8 - %call = call i32 @luaV_flttointeger(double noundef %2, ptr noundef nonnull %k, i32 noundef 0) #12 + %call = call i32 @luaV_flttointeger(double noundef %2, ptr noundef nonnull %k, i32 noundef 0) #13 %tobool10.not = icmp eq i32 %call, 0 br i1 %tobool10.not, label %if.else14, label %if.then11 @@ -1513,7 +1513,7 @@ if.else14: ; preds = %if.then9 br i1 %cmp15, label %if.then21, label %if.end24 if.then21: ; preds = %if.else14 - call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str.3) #11 + call void (ptr, ptr, ...) @luaG_runerror(ptr noundef %L, ptr noundef nonnull @.str.3) #12 unreachable if.end24: ; preds = %if.else, %if.else14, %if.then11 @@ -1688,7 +1688,7 @@ if.then6.i: ; preds = %if.then.i93 if.then.i.i: ; preds = %if.then6.i %conv.i.i.i = trunc nuw i64 %26 to i32 - %call1.i.i = call i32 @luaO_ceillog2(i32 noundef %conv.i.i.i) #12 + %call1.i.i = call i32 @luaO_ceillog2(i32 noundef %conv.i.i.i) #13 %idxprom.i.i = sext i32 %call1.i.i to i64 %arrayidx.i.i = getelementptr inbounds i32, ptr %nums.i, i64 %idxprom.i.i %28 = load i32, ptr %arrayidx.i.i, align 4 @@ -1727,7 +1727,7 @@ if.then.i: ; preds = %numusehash.exit if.then.i81: ; preds = %if.then.i %conv.i.i = trunc nuw i64 %31 to i32 - %call1.i82 = call i32 @luaO_ceillog2(i32 noundef %conv.i.i) #12 + %call1.i82 = call i32 @luaO_ceillog2(i32 noundef %conv.i.i) #13 %idxprom.i83 = sext i32 %call1.i82 to i64 %arrayidx.i84 = getelementptr inbounds i32, ptr %nums.i, i64 %idxprom.i83 %33 = load i32, ptr %arrayidx.i84, align 4 @@ -1903,7 +1903,7 @@ land.lhs.true: ; preds = %cond.true br i1 %tobool108.not, label %cond.end111, label %cond.true109 cond.true109: ; preds = %land.lhs.true - call void @luaC_barrierback_(ptr noundef %L, ptr noundef nonnull %t) #12 + call void @luaC_barrierback_(ptr noundef %L, ptr noundef nonnull %t) #13 br label %cond.end111 cond.end111: ; preds = %if.end94, %cond.true109, %land.lhs.true, %cond.true @@ -1943,8 +1943,8 @@ luaH_finishset.exit: ; preds = %if.then.i, %if.else ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable -define hidden i64 @luaH_getn(ptr nocapture noundef %t) local_unnamed_addr #5 { +; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable +define hidden i64 @luaH_getn(ptr noundef %t) local_unnamed_addr #7 { entry: %alimit = getelementptr inbounds nuw i8, ptr %t, i64 12 %0 = load i32, ptr %alimit, align 4 @@ -2561,7 +2561,7 @@ sw.bb1: ; preds = %entry %node = getelementptr inbounds nuw i8, ptr %t, i64 24 %7 = load ptr, ptr %node, align 8 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i.i) - %call.i = call double @frexp(double noundef %6, ptr noundef nonnull %i.i) #12 + %call.i = call double @frexp(double noundef %6, ptr noundef nonnull %i.i) #13 %mul.i = fmul double %call.i, 0x41E0000000000000 %cmp.i30 = fcmp oge double %mul.i, 0xC3E0000000000000 %cmp1.i = fcmp olt double %mul.i, 0x43E0000000000000 @@ -2611,7 +2611,7 @@ sw.bb15: ; preds = %entry %14 = load ptr, ptr %key, align 8 %node18 = getelementptr inbounds nuw i8, ptr %t, i64 24 %15 = load ptr, ptr %node18, align 8 - %call19 = tail call i32 @luaS_hashlongstr(ptr noundef %14) #12 + %call19 = tail call i32 @luaS_hashlongstr(ptr noundef %14) #13 %lsizenode20 = getelementptr inbounds nuw i8, ptr %t, i64 11 %16 = load i8, ptr %lsizenode20, align 1 %conv21 = zext nneg i8 %16 to i32 @@ -2696,29 +2696,29 @@ return: ; preds = %sw.default, %sw.bb5 declare hidden i32 @luaS_hashlongstr(ptr noundef) local_unnamed_addr #3 ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: write) -declare double @frexp(double noundef, ptr nocapture noundef) local_unnamed_addr #7 +declare double @frexp(double noundef, ptr nocapture noundef) local_unnamed_addr #8 declare hidden i32 @luaS_eqlngstr(ptr noundef, ptr noundef) local_unnamed_addr #3 declare hidden void @luaC_barrierback_(ptr noundef, ptr noundef) local_unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.ctpop.i32(i32) #8 +declare i32 @llvm.ctpop.i32(i32) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #8 +declare i32 @llvm.umax.i32(i32, i32) #9 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #8 +declare i32 @llvm.smax.i32(i32, i32) #9 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -2727,12 +2727,13 @@ attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect attributes #4 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress nofree nounwind willreturn memory(argmem: write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #9 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #11 = { noreturn nounwind } -attributes #12 = { nounwind } +attributes #7 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { mustprogress nofree nounwind willreturn memory(argmem: write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #12 = { noreturn nounwind } +attributes #13 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/lvgl/optimized/lv_tlsf.ll b/bench/lvgl/optimized/lv_tlsf.ll index ad291714ca8..08dc342c312 100644 --- a/bench/lvgl/optimized/lv_tlsf.ll +++ b/bench/lvgl/optimized/lv_tlsf.ll @@ -3,7 +3,7 @@ source_filename = "bench/lvgl/original/lv_tlsf.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: write) uwtable define noundef i32 @lv_tlsf_check(ptr noundef readonly %0) local_unnamed_addr #0 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 %3 = load i32, ptr %2, align 8, !tbaa !3 @@ -224,7 +224,7 @@ define void @lv_tlsf_walk_pool(ptr noundef %0, ptr noundef readonly %1, ptr noun %12 = trunc i64 %.0.val15 to i32 %13 = and i32 %12, 1 %14 = xor i32 %13, 1 - tail call void %4(ptr noundef nonnull %10, i64 noundef %11, i32 noundef %14, ptr noundef %2) #11 + tail call void %4(ptr noundef nonnull %10, i64 noundef %11, i32 noundef %14, ptr noundef %2) #13 %.val.i = load i64, ptr %7, align 8, !tbaa !15 %15 = icmp ugt i64 %.val.i, 3 br i1 %15, label %block_next.exit, label %.preheader.i @@ -266,7 +266,7 @@ define range(i64 0, -3) i64 @lv_tlsf_block_size(ptr noundef readonly %0) local_u } ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable -define noundef i32 @lv_tlsf_check_pool(ptr noundef %0) local_unnamed_addr #0 { +define noundef i32 @lv_tlsf_check_pool(ptr noundef %0) local_unnamed_addr #4 { %2 = ptrtoint ptr %0 to i64 %3 = add i64 %2, -8 %.not1117.i = icmp eq i64 %3, 0 @@ -306,7 +306,7 @@ lv_tlsf_walk_pool.exit: ; preds = %.lr.ph.i, %block_ne } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef i64 @lv_tlsf_size() local_unnamed_addr #2 { @@ -339,7 +339,7 @@ define noundef i64 @lv_tlsf_alloc_overhead() local_unnamed_addr #2 { } ; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define noundef ptr @lv_tlsf_add_pool(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #5 { +define noundef ptr @lv_tlsf_add_pool(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #6 { %4 = and i64 %2, -8 %5 = ptrtoint ptr %1 to i64 %6 = and i64 %5, 7 @@ -424,7 +424,7 @@ block_link_next.exit: ; preds = %mapping_insert.exit } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @lv_tlsf_remove_pool(ptr noundef %0, ptr noundef %1) local_unnamed_addr #6 { +define void @lv_tlsf_remove_pool(ptr noundef %0, ptr noundef %1) local_unnamed_addr #7 { %3 = ptrtoint ptr %1 to i64 %4 = add i64 %3, -8 %5 = inttoptr i64 %4 to ptr @@ -554,7 +554,7 @@ remove_free_block.exit: ; preds = %39, %48, %50, %57 } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: write) uwtable -define noundef ptr @lv_tlsf_create(ptr noundef %0) local_unnamed_addr #7 { +define noundef ptr @lv_tlsf_create(ptr noundef %0) local_unnamed_addr #8 { %2 = ptrtoint ptr %0 to i64 %3 = and i64 %2, 7 %.not = icmp eq i64 %3, 0 @@ -593,7 +593,7 @@ control_constructor.exit: ; preds = %12, %1 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define noundef ptr @lv_tlsf_create_with_pool(ptr noundef %0, i64 noundef %1) local_unnamed_addr #6 { +define noundef ptr @lv_tlsf_create_with_pool(ptr noundef %0, i64 noundef %1) local_unnamed_addr #7 { %3 = ptrtoint ptr %0 to i64 %4 = and i64 %3, 7 %.not.i = icmp eq i64 %4, 0 @@ -722,8 +722,8 @@ define nonnull ptr @lv_tlsf_get_pool(ptr noundef readnone %0) local_unnamed_addr ret ptr %2 } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define ptr @lv_tlsf_malloc(ptr noundef %0, i64 noundef %1) local_unnamed_addr #6 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define ptr @lv_tlsf_malloc(ptr noundef %0, i64 noundef %1) local_unnamed_addr #9 { %.not.i = icmp eq i64 %1, 0 br i1 %.not.i, label %adjust_request_size.exit, label %3 @@ -743,7 +743,7 @@ adjust_request_size.exit: ; preds = %2, %3 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal fastcc ptr @block_locate_free(ptr noundef %0, i64 noundef range(i64 0, 65536) %1) unnamed_addr #6 { +define internal fastcc ptr @block_locate_free(ptr noundef %0, i64 noundef range(i64 0, 65536) %1) unnamed_addr #7 { %.not = icmp eq i64 %1, 0 br i1 %.not, label %remove_free_block.exit, label %3 @@ -885,8 +885,8 @@ remove_free_block.exit: ; preds = %28, %2, %mapping_se ret ptr %.029 } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal fastcc ptr @block_prepare_used(ptr noundef %0, ptr noundef %1, i64 noundef range(i64 0, 65536) %2) unnamed_addr #6 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define internal fastcc ptr @block_prepare_used(ptr noundef %0, ptr noundef %1, i64 noundef range(i64 0, 65536) %2) unnamed_addr #9 { %.not = icmp eq ptr %1, null br i1 %.not, label %94, label %4 @@ -1073,8 +1073,8 @@ block_mark_as_used.exit: ; preds = %block_trim_free.exi ret ptr %.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define ptr @lv_tlsf_memalign(ptr noundef %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #6 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define ptr @lv_tlsf_memalign(ptr noundef %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #9 { %.not.i = icmp eq i64 %2, 0 br i1 %.not.i, label %adjust_request_size.exit, label %4 @@ -1312,7 +1312,7 @@ block_trim_free_leading.exit: ; preds = %block_insert.exit.i } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define range(i64 4, 1) i64 @lv_tlsf_free(ptr noundef %0, ptr noundef %1) local_unnamed_addr #6 { +define range(i64 4, 1) i64 @lv_tlsf_free(ptr noundef %0, ptr noundef %1) local_unnamed_addr #7 { %.not = icmp eq ptr %1, null br i1 %.not, label %122, label %3 @@ -1563,7 +1563,7 @@ block_insert.exit: ; preds = %104 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal fastcc noundef ptr @block_merge_next(ptr noundef %0, ptr noundef returned %1) unnamed_addr #6 { +define internal fastcc noundef ptr @block_merge_next(ptr noundef %0, ptr noundef returned %1) unnamed_addr #7 { %3 = getelementptr i8, ptr %1, i64 8 %.val.i = load i64, ptr %3, align 8, !tbaa !15 %4 = icmp ugt i64 %.val.i, 3 @@ -1793,7 +1793,7 @@ adjust_request_size.exit: ; preds = %block_next.exit, %3 46: ; preds = %44 %47 = tail call i64 @llvm.umin.i64(i64 %2, i64 %21) - %48 = tail call ptr @lv_memcpy(ptr noundef nonnull %45, ptr noundef nonnull %1, i64 noundef %47) #11 + %48 = tail call ptr @lv_memcpy(ptr noundef nonnull %45, ptr noundef nonnull %1, i64 noundef %47) #13 %49 = tail call i64 @lv_tlsf_free(ptr noundef %0, ptr noundef nonnull %1) br label %block_trim_used.exit @@ -1946,35 +1946,37 @@ block_trim_used.exit: ; preds = %adjust_request_size ret ptr %.1 } -declare ptr @lv_memcpy(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #8 +declare ptr @lv_memcpy(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #10 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.ctlz.i32(i32, i1 immarg) #9 +declare i32 @llvm.ctlz.i32(i32, i1 immarg) #11 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.cttz.i32(i32, i1 immarg) #9 +declare i32 @llvm.cttz.i32(i32, i1 immarg) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #10 +declare i64 @llvm.umax.i64(i64, i64) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctpop.i64(i64) #10 +declare i64 @llvm.ctpop.i64(i64) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #10 +declare i64 @llvm.umin.i64(i64, i64) #12 -attributes #0 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: 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 #0 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: write) 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 = { mustprogress nofree norecurse nosync nounwind willreturn memory(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 #3 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: 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 #6 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: 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 #7 = { nofree norecurse nosync nounwind memory(argmem: write) 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 #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #11 = { nounwind } +attributes #4 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: 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 #7 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: 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 #8 = { nofree norecurse nosync nounwind memory(argmem: write) 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 #9 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) 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 #10 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/meilisearch-rs/optimized/4spgntyrk3g2e624.ll b/bench/meilisearch-rs/optimized/4spgntyrk3g2e624.ll index 3c442074036..34ce81ecb2d 100644 --- a/bench/meilisearch-rs/optimized/4spgntyrk3g2e624.ll +++ b/bench/meilisearch-rs/optimized/4spgntyrk3g2e624.ll @@ -34,34 +34,30 @@ define hidden void @"_ZN4core3ptr103drop_in_place$LT$milli..update..settings..Se } ; Function Attrs: nounwind nonlazybind uwtable -define hidden void @"_ZN4core3ptr167drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$$GT$$GT$17hc5511059b3a37873E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - tail call void @llvm.experimental.noalias.scope.decl(metadata !6) +define hidden void @"_ZN4core3ptr167drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$$GT$$GT$17hc5511059b3a37873E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !alias.scope !6, !nonnull !5, !noundef !5 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 640, i64 noundef 8) #23, !noalias !6 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 640, i64 noundef 8) #23 ret void } ; Function Attrs: nounwind nonlazybind uwtable -define hidden void @"_ZN4core3ptr168drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$GT$$GT$$GT$17h64c672eb252f4ba0E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - tail call void @llvm.experimental.noalias.scope.decl(metadata !9) +define hidden void @"_ZN4core3ptr168drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$GT$$GT$$GT$17h64c672eb252f4ba0E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !alias.scope !9, !nonnull !5, !noundef !5 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 376, i64 noundef 8) #23, !noalias !9 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 376, i64 noundef 8) #23 ret void } ; Function Attrs: nounwind nonlazybind uwtable -define hidden void @"_ZN4core3ptr176drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$meilisearch_types..facet_values_sort..FacetValuesSort$GT$$GT$$GT$17h0281fb89be717ac2E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - tail call void @llvm.experimental.noalias.scope.decl(metadata !12) +define hidden void @"_ZN4core3ptr176drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$meilisearch_types..facet_values_sort..FacetValuesSort$GT$$GT$$GT$17h0281fb89be717ac2E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !alias.scope !12, !nonnull !5, !noundef !5 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 384, i64 noundef 8) #23, !noalias !12 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 384, i64 noundef 8) #23 ret void } ; Function Attrs: nounwind nonlazybind uwtable -define hidden void @"_ZN4core3ptr205drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$milli..update..settings..Setting$LT$milli..vector..settings..EmbeddingSettings$GT$$GT$$GT$$GT$17he59f6adedd40bf71E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - tail call void @llvm.experimental.noalias.scope.decl(metadata !15) +define hidden void @"_ZN4core3ptr205drop_in_place$LT$alloc..boxed..Box$LT$alloc..collections..btree..node..InternalNode$LT$alloc..string..String$C$milli..update..settings..Setting$LT$milli..vector..settings..EmbeddingSettings$GT$$GT$$GT$$GT$17he59f6adedd40bf71E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !alias.scope !15, !nonnull !5, !noundef !5 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 3632, i64 noundef 8) #23, !noalias !15 + tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 3632, i64 noundef 8) #23 ret void } @@ -1987,11 +1983,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17h433752c0168e9576E.exit.i.i: ; %93 = getelementptr inbounds nuw ptr, ptr %92, i64 %60 %94 = shl nuw nsw i64 %63, 3 %95 = add nuw nsw i64 %94, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %93, ptr noundef nonnull align 8 dereferenceable(1) %92, i64 %95, i1 false), !alias.scope !175, !noalias !152 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %93, ptr noundef nonnull align 8 dereferenceable(1) %92, i64 %95, i1 false), !alias.scope !175 %96 = getelementptr inbounds nuw i8, ptr %49, i64 544 %97 = getelementptr inbounds nuw ptr, ptr %96, i64 %73 %98 = shl nuw nsw i64 %60, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %92, ptr noundef nonnull readonly align 8 dereferenceable(1) %97, i64 %98, i1 false), !alias.scope !178, !noalias !152 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %92, ptr noundef nonnull readonly align 8 dereferenceable(1) %97, i64 %98, i1 false), !alias.scope !178 br label %99 99: ; preds = %99, %_ZN5alloc11collections5btree4node13move_to_slice17h433752c0168e9576E.exit.i.i @@ -2495,11 +2491,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17h99908208a70d8de4E.exit.i.i: ; %91 = getelementptr inbounds nuw ptr, ptr %90, i64 %67 %92 = shl nuw nsw i64 %70, 3 %93 = add nuw nsw i64 %92, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(1) %90, i64 %93, i1 false), !alias.scope !289, !noalias !279 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(1) %90, i64 %93, i1 false), !alias.scope !289 %94 = getelementptr inbounds nuw i8, ptr %57, i64 280 %95 = getelementptr inbounds nuw ptr, ptr %94, i64 %78 %96 = shl nuw nsw i64 %67, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %90, ptr noundef nonnull readonly align 8 dereferenceable(1) %95, i64 %96, i1 false), !alias.scope !292, !noalias !279 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %90, ptr noundef nonnull readonly align 8 dereferenceable(1) %95, i64 %96, i1 false), !alias.scope !292 br label %97 97: ; preds = %97, %_ZN5alloc11collections5btree4node13move_to_slice17h99908208a70d8de4E.exit.i.i @@ -2965,11 +2961,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17h3a52ae849d54f1adE.exit.i.i: ; %95 = getelementptr inbounds nuw ptr, ptr %94, i64 %60 %96 = shl nuw nsw i64 %63, 3 %97 = add nuw nsw i64 %96, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %95, ptr noundef nonnull align 8 dereferenceable(1) %94, i64 %97, i1 false), !alias.scope !388, !noalias !365 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %95, ptr noundef nonnull align 8 dereferenceable(1) %94, i64 %97, i1 false), !alias.scope !388 %98 = getelementptr inbounds nuw i8, ptr %49, i64 3536 %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %74 %100 = shl nuw nsw i64 %60, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %94, ptr noundef nonnull readonly align 8 dereferenceable(1) %99, i64 %100, i1 false), !alias.scope !391, !noalias !365 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %94, ptr noundef nonnull readonly align 8 dereferenceable(1) %99, i64 %100, i1 false), !alias.scope !391 br label %101 101: ; preds = %101, %_ZN5alloc11collections5btree4node13move_to_slice17h3a52ae849d54f1adE.exit.i.i @@ -3464,11 +3460,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17hda64d34a0a01d709E.exit.i.i: ; %86 = getelementptr inbounds nuw ptr, ptr %85, i64 %52 %87 = shl nuw nsw i64 %55, 3 %88 = add nuw nsw i64 %87, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %86, ptr noundef nonnull align 8 dereferenceable(1) %85, i64 %88, i1 false), !alias.scope !497, !noalias !476 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %86, ptr noundef nonnull align 8 dereferenceable(1) %85, i64 %88, i1 false), !alias.scope !497 %89 = getelementptr inbounds nuw i8, ptr %42, i64 288 %90 = getelementptr inbounds nuw ptr, ptr %89, i64 %65 %91 = shl nuw nsw i64 %52, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %85, ptr noundef nonnull readonly align 8 dereferenceable(1) %90, i64 %91, i1 false), !alias.scope !500, !noalias !476 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %85, ptr noundef nonnull readonly align 8 dereferenceable(1) %90, i64 %91, i1 false), !alias.scope !500 br label %92 92: ; preds = %92, %_ZN5alloc11collections5btree4node13move_to_slice17hda64d34a0a01d709E.exit.i.i @@ -4766,28 +4762,28 @@ define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allo } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3f5842f977e1c748E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #14 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3f5842f977e1c748E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 640, i64 noundef 8) #23 ret void } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60f3b7cc8e131590E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #14 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60f3b7cc8e131590E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 376, i64 noundef 8) #23 ret void } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8bbe07c7677b6cabE.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #14 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8bbe07c7677b6cabE.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 384, i64 noundef 8) #23 ret void } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfb7fa2ed819f6944E.llvm.10555397350879664896"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #14 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfb7fa2ed819f6944E.llvm.10555397350879664896"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 3632, i64 noundef 8) #23 ret void @@ -5160,12 +5156,12 @@ attributes #27 = { noreturn nounwind } !179 = distinct !{!179, !180, !"_ZN5alloc11collections5btree4node13move_to_slice17h433752c0168e9576E: argument 0"} !180 = distinct !{!180, !"_ZN5alloc11collections5btree4node13move_to_slice17h433752c0168e9576E"} !181 = distinct !{!181, !180, !"_ZN5alloc11collections5btree4node13move_to_slice17h433752c0168e9576E: argument 1"} -!182 = !{!183, !185, !153} +!182 = !{!183, !185} !183 = distinct !{!183, !184, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17ha494647ab20ebb55E: argument 0"} !184 = distinct !{!184, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17ha494647ab20ebb55E"} !185 = distinct !{!185, !186, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h9625386d0f134dd4E: argument 0"} !186 = distinct !{!186, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h9625386d0f134dd4E"} -!187 = !{!185, !153} +!187 = !{!185} !188 = !{!189} !189 = distinct !{!189, !190, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h1decd51b400af87dE: argument 0"} !190 = distinct !{!190, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h1decd51b400af87dE"} @@ -5274,12 +5270,12 @@ attributes #27 = { noreturn nounwind } !293 = distinct !{!293, !294, !"_ZN5alloc11collections5btree4node13move_to_slice17h99908208a70d8de4E: argument 0"} !294 = distinct !{!294, !"_ZN5alloc11collections5btree4node13move_to_slice17h99908208a70d8de4E"} !295 = distinct !{!295, !294, !"_ZN5alloc11collections5btree4node13move_to_slice17h99908208a70d8de4E: argument 1"} -!296 = !{!297, !299, !280} +!296 = !{!297, !299} !297 = distinct !{!297, !298, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17hb96292d233a25935E: argument 0"} !298 = distinct !{!298, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17hb96292d233a25935E"} !299 = distinct !{!299, !300, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h64df2668550c0cd9E: argument 0"} !300 = distinct !{!300, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h64df2668550c0cd9E"} -!301 = !{!299, !280} +!301 = !{!299} !302 = !{!303} !303 = distinct !{!303, !304, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h9ae1063907165d93E: argument 0"} !304 = distinct !{!304, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h9ae1063907165d93E"} @@ -5373,12 +5369,12 @@ attributes #27 = { noreturn nounwind } !392 = distinct !{!392, !393, !"_ZN5alloc11collections5btree4node13move_to_slice17h3a52ae849d54f1adE: argument 0"} !393 = distinct !{!393, !"_ZN5alloc11collections5btree4node13move_to_slice17h3a52ae849d54f1adE"} !394 = distinct !{!394, !393, !"_ZN5alloc11collections5btree4node13move_to_slice17h3a52ae849d54f1adE: argument 1"} -!395 = !{!396, !398, !366} +!395 = !{!396, !398} !396 = distinct !{!396, !397, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17h00314d6eac710cc9E: argument 0"} !397 = distinct !{!397, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17h00314d6eac710cc9E"} !398 = distinct !{!398, !399, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h6ee44fdf0703dacbE: argument 0"} !399 = distinct !{!399, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h6ee44fdf0703dacbE"} -!400 = !{!398, !366} +!400 = !{!398} !401 = !{!402} !402 = distinct !{!402, !403, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17he3250b69d772f300E: argument 0"} !403 = distinct !{!403, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17he3250b69d772f300E"} @@ -5482,12 +5478,12 @@ attributes #27 = { noreturn nounwind } !501 = distinct !{!501, !502, !"_ZN5alloc11collections5btree4node13move_to_slice17hda64d34a0a01d709E: argument 0"} !502 = distinct !{!502, !"_ZN5alloc11collections5btree4node13move_to_slice17hda64d34a0a01d709E"} !503 = distinct !{!503, !502, !"_ZN5alloc11collections5btree4node13move_to_slice17hda64d34a0a01d709E: argument 1"} -!504 = !{!505, !507, !477} +!504 = !{!505, !507} !505 = distinct !{!505, !506, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17hcac391ad1aef732eE: argument 0"} !506 = distinct !{!506, !"_ZN5alloc11collections5btree4node180Handle$LT$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$7descend17hcac391ad1aef732eE"} !507 = distinct !{!507, !508, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h5d03bb41a5871c2eE: argument 0"} !508 = distinct !{!508, !"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$19correct_parent_link17h5d03bb41a5871c2eE"} -!509 = !{!507, !477} +!509 = !{!507} !510 = !{!511} !511 = distinct !{!511, !512, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h19e427c87324b5acE: argument 0"} !512 = distinct !{!512, !"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h19e427c87324b5acE"} diff --git a/bench/memcached/optimized/memcached-memcached.ll b/bench/memcached/optimized/memcached-memcached.ll index 8965a0f3b5b..0c0a4099bd2 100644 --- a/bench/memcached/optimized/memcached-memcached.ll +++ b/bench/memcached/optimized/memcached-memcached.ll @@ -9779,9 +9779,9 @@ entry: %time_delta = getelementptr inbounds nuw i8, ptr %data, i64 24 %current_time = getelementptr inbounds nuw i8, ptr %data, i64 40 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %time_delta, i8 0, i64 20, i1 false) - %call2528 = call i32 @restart_get_kv(ptr noundef %ctx, ptr noundef nonnull %key, ptr noundef nonnull %val) #36 - %cmp2629 = icmp eq i32 %call2528, 0 - br i1 %cmp2629, label %while.body.lr.ph.lr.ph, label %if.then138 + %call2629 = call i32 @restart_get_kv(ptr noundef %ctx, ptr noundef nonnull %key, ptr noundef nonnull %val) #36 + %cmp2730 = icmp eq i32 %call2629, 0 + br i1 %cmp2730, label %while.body.lr.ph.lr.ph, label %if.then138 while.body.lr.ph.lr.ph: ; preds = %entry %slab_config = getelementptr inbounds nuw i8, ptr %data, i64 16 @@ -9789,7 +9789,7 @@ while.body.lr.ph.lr.ph: ; preds = %entry br label %while.body.lr.ph while.body.lr.ph: ; preds = %while.body.lr.ph.lr.ph, %while.cond.outer.backedge - %lines_seen.0.ph30 = phi i32 [ 0, %while.body.lr.ph.lr.ph ], [ %inc12, %while.cond.outer.backedge ] + %lines_seen.0.ph31 = phi i32 [ 0, %while.body.lr.ph.lr.ph ], [ %inc12, %while.cond.outer.backedge ] br label %while.body while.body: ; preds = %while.body.lr.ph, %if.then @@ -9802,14 +9802,15 @@ while.body: ; preds = %while.body.lr.ph, % land.rhs: ; preds = %while.body, %while.body7 %indvars.iv = phi i64 [ 0, %while.body ], [ %indvars.iv.next, %while.body7 ] - %arrayidx = getelementptr inbounds nuw [18 x ptr], ptr @__const._mc_meta_load_cb.opts, i64 0, i64 %indvars.iv - %1 = load ptr, ptr %arrayidx, align 8 + %arrayidx25 = phi ptr [ @__const._mc_meta_load_cb.opts, %while.body ], [ %arrayidx, %while.body7 ] + %1 = load ptr, ptr %arrayidx25, align 8 %call5 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %1) #43 %cmp6.not = icmp eq i32 %call5, 0 br i1 %cmp6.not, label %if.end, label %while.body7 while.body7: ; preds = %land.rhs %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %arrayidx = getelementptr inbounds nuw [18 x ptr], ptr @__const._mc_meta_load_cb.opts, i64 0, i64 %indvars.iv.next %cond = icmp eq i64 %indvars.iv.next, 17 br i1 %cond, label %if.then, label %land.rhs, !llvm.loop !27 @@ -9822,7 +9823,7 @@ if.then: ; preds = %while.body7 if.end: ; preds = %land.rhs %3 = trunc nuw nsw i64 %indvars.iv to i32 - %inc12 = add nuw nsw i32 %lines_seen.0.ph30, 1 + %inc12 = add nuw nsw i32 %lines_seen.0.ph31, 1 %4 = load ptr, ptr %val, align 8 %call13 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %4, ptr noundef nonnull dereferenceable(6) @.str.471) #43 %cmp14 = icmp eq i32 %call13, 0 @@ -10026,9 +10027,9 @@ sw.epilog: ; preds = %sw.bb112 br i1 %cmp119, label %while.cond.outer.backedge, label %if.then132 while.cond.outer.backedge: ; preds = %sw.default, %if.else127, %if.else109, %if.else103, %if.else98, %if.else93, %if.else88, %if.else83, %lor.lhs.false71, %lor.lhs.false61, %lor.lhs.false51, %lor.lhs.false45, %lor.lhs.false39, %lor.lhs.false33, %lor.lhs.false, %sw.bb, %sw.epilog, %sw.bb55 - %call25 = call i32 @restart_get_kv(ptr noundef %ctx, ptr noundef nonnull %key, ptr noundef nonnull %val) #36 - %cmp26 = icmp eq i32 %call25, 0 - br i1 %cmp26, label %while.body.lr.ph, label %while.end135, !llvm.loop !28 + %call26 = call i32 @restart_get_kv(ptr noundef %ctx, ptr noundef nonnull %key, ptr noundef nonnull %val) #36 + %cmp27 = icmp eq i32 %call26, 0 + br i1 %cmp27, label %while.body.lr.ph, label %while.end135, !llvm.loop !28 if.then132: ; preds = %sw.bb55, %sw.bb80, %sw.bb85, %sw.bb90, %sw.bb95, %sw.bb100, %sw.bb106, %sw.bb112, %sw.bb124, %lor.lhs.false, %sw.bb26, %lor.lhs.false33, %sw.bb31, %lor.lhs.false39, %sw.bb37, %lor.lhs.false45, %sw.bb43, %lor.lhs.false51, %sw.bb49, %lor.lhs.false61, %sw.bb60, %lor.lhs.false71, %sw.bb69, %sw.epilog, %if.then23 %33 = load ptr, ptr @stderr, align 8 @@ -10039,7 +10040,7 @@ if.then132: ; preds = %sw.bb55, %sw.bb80, while.end135: ; preds = %while.cond.outer.backedge, %if.then, %if.then132 %reuse_mmap.1 = phi i32 [ -1, %if.then132 ], [ 0, %if.then ], [ 0, %while.cond.outer.backedge ] - %lines_seen.1 = phi i32 [ %inc12, %if.then132 ], [ %lines_seen.0.ph30, %if.then ], [ %inc12, %while.cond.outer.backedge ] + %lines_seen.1 = phi i32 [ %inc12, %if.then132 ], [ %lines_seen.0.ph31, %if.then ], [ %inc12, %while.cond.outer.backedge ] %cmp136 = icmp slt i32 %lines_seen.1, 17 br i1 %cmp136, label %if.then138, label %if.end140 @@ -10553,8 +10554,8 @@ if.then17: ; preds = %while.end br i1 %tobool3970.not, label %return, label %while.body40.preheader while.body40.preheader: ; preds = %if.then17 - %data18 = getelementptr inbounds nuw i8, ptr %s_it, i64 48 %nkey19 = getelementptr inbounds nuw i8, ptr %s_it, i64 41 + %data18 = getelementptr inbounds nuw i8, ptr %s_it, i64 48 %8 = load i8, ptr %nkey19, align 1 %idx.ext21 = zext i8 %8 to i64 %add.ptr22 = getelementptr inbounds nuw i8, ptr %data18, i64 %idx.ext21 @@ -10800,7 +10801,7 @@ declare void @complete_nread_ascii(ptr noundef) local_unnamed_addr #2 declare void @complete_nread_binary(ptr noundef) local_unnamed_addr #2 -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable define internal fastcc i32 @_transmit_pre(ptr nocapture noundef readonly %c, ptr nocapture noundef nonnull writeonly %iovs, i32 noundef range(i32 0, 2) %iovused, i1 noundef zeroext %one_resp) unnamed_addr #30 { entry: %resp_head = getelementptr inbounds nuw i8, ptr %c, i64 200 @@ -10843,20 +10844,21 @@ if.end: ; preds = %while.body if.then4: ; preds = %if.end %iov = getelementptr inbounds nuw i8, ptr %resp.1, i64 48 - %cmp34183.not = icmp eq i8 %0, 0 - br i1 %cmp34183.not, label %if.end129, label %for.body.lr.ph - -for.body.lr.ph: ; preds = %if.then4 %idxprom = zext i8 %2 to i64 %arrayidx = getelementptr inbounds nuw [4 x %struct.iovec], ptr %iov, i64 0, i64 %idxprom %3 = load ptr, ptr %arrayidx, align 8 - %data = getelementptr inbounds nuw i8, ptr %3, i64 48 %nkey = getelementptr inbounds nuw i8, ptr %3, i64 41 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %nkey, i64 8) ] + %cmp34183.not = icmp eq i8 %0, 0 + br i1 %cmp34183.not, label %if.end129, label %for.body.lr.ph + +for.body.lr.ph: ; preds = %if.then4 %4 = load i8, ptr %nkey, align 1 + %it_flags = getelementptr inbounds nuw i8, ptr %3, i64 38 + %data = getelementptr inbounds nuw i8, ptr %3, i64 48 %idx.ext = zext i8 %4 to i64 %add.ptr = getelementptr inbounds nuw i8, ptr %data, i64 %idx.ext %add.ptr12 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 1 - %it_flags = getelementptr inbounds nuw i8, ptr %3, i64 38 %5 = load i16, ptr %it_flags, align 2 %conv18 = zext i16 %5 to i32 %and = lshr i32 %conv18, 6 @@ -11903,26 +11905,26 @@ declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr ; Function Attrs: nofree nounwind declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #32 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #33 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #33 +declare i32 @llvm.smin.i32(i32, i32) #34 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #33 +declare i32 @llvm.umin.i32(i32, i32) #34 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #33 +declare i32 @llvm.smax.i32(i32, i32) #34 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #34 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #35 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #34 - -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #35 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #35 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.usub.sat.i64(i64, i64) #33 +declare i64 @llvm.usub.sat.i64(i64, i64) #34 attributes #0 = { mustprogress nofree norecurse nounwind willreturn memory(readwrite, argmem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -11954,12 +11956,12 @@ attributes #26 = { nofree "frame-pointer"="all" "no-trapping-math"="true" "stack attributes #27 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #28 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #29 = { cold nofree noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #30 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #30 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #31 = { mustprogress nocallback nofree nosync nounwind willreturn } attributes #32 = { nofree nounwind } -attributes #33 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #34 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #35 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #33 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #34 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #35 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #36 = { nounwind } attributes #37 = { nounwind allocsize(0) } attributes #38 = { cold } diff --git a/bench/meshlab/optimized/qualitymapperdialog.cpp.ll b/bench/meshlab/optimized/qualitymapperdialog.cpp.ll index 875990be122..74c6053ba33 100644 --- a/bench/meshlab/optimized/qualitymapperdialog.cpp.ll +++ b/bench/meshlab/optimized/qualitymapperdialog.cpp.ll @@ -9064,6 +9064,7 @@ _ZN9QtPrivate8RefCount5derefEv.exit.thread2.i.i70: ; preds = %_ZN9QtPrivate8RefC unreachable 164: ; preds = %143, %_ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %27, i64 0) ] %.pre293 = load ptr, ptr %28, align 8 %.pre = load ptr, ptr %27, align 8 %165 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 @@ -9442,6 +9443,7 @@ _ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i177: ; preds = %_ZN9QtP br label %_ZN9QtPrivate17QForeachContainerI5QListIP8TFHandleEED2Ev.exit75.sink.split 321: ; preds = %307, %_ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i177 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %221, i64 0) ] %.pre297 = load ptr, ptr %228, align 8 %.pre296 = load ptr, ptr %221, align 8 %322 = getelementptr inbounds nuw i8, ptr %.pre296, i64 8 @@ -9757,6 +9759,7 @@ _ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i199: ; preds = %_ZN9QtP br label %_ZN9QtPrivate17QForeachContainerI5QListIP8TFHandleEED2Ev.exit75.sink.split 453: ; preds = %439, %_ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i199 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %353, i64 0) ] %.pre301 = load ptr, ptr %360, align 8 %.pre300 = load ptr, ptr %353, align 8 %454 = getelementptr inbounds nuw i8, ptr %.pre300, i64 8 @@ -10072,6 +10075,7 @@ _ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i221: ; preds = %_ZN9QtP br label %_ZN9QtPrivate17QForeachContainerI5QListIP8TFHandleEED2Ev.exit75.sink.split 585: ; preds = %571, %_ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i221 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %485, i64 0) ] %.pre305 = load ptr, ptr %492, align 8 %.pre304 = load ptr, ptr %485, align 8 %586 = getelementptr inbounds nuw i8, ptr %.pre304, i64 8 @@ -10994,6 +10998,7 @@ _ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i: ; preds = %_ZN9QtPriv br label %196 128: ; preds = %114, %_ZN5QListIP13QGraphicsItemE18detach_helper_growEii.exit.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %36, i64 0) ] %.pre49 = load ptr, ptr %43, align 8 %.pre = load ptr, ptr %36, align 8 %129 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 @@ -16266,6 +16271,7 @@ _ZN9QtPrivate21qMakeForeachContainerIR5QListIP8TFHandleEEENS_17QForeachContainer to label %61 unwind label %.split.us 61: ; preds = %.lr.ph.split.us.preheader + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %8, i64 0) ] %.pre23 = load ptr, ptr %9, align 8 %.pre22 = load ptr, ptr %8, align 8 %62 = getelementptr inbounds nuw i8, ptr %.pre22, i64 8 @@ -16333,6 +16339,7 @@ _ZN9QtPrivate17QForeachContainerI5QListIP8TFHandleEED2Ev.exit: ; preds = %.crite resume { ptr, i32 } %.us-phi 77: ; preds = %.lr.ph.split.preheader + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %8, i64 0) ] %.pre21 = load ptr, ptr %9, align 8 %.pre = load ptr, ptr %8, align 8 %78 = getelementptr inbounds nuw i8, ptr %.pre, i64 8 diff --git a/bench/meshoptimizer/optimized/indexgenerator.cpp.ll b/bench/meshoptimizer/optimized/indexgenerator.cpp.ll index c7b6f8f817f..9faa68b329f 100644 --- a/bench/meshoptimizer/optimized/indexgenerator.cpp.ll +++ b/bench/meshoptimizer/optimized/indexgenerator.cpp.ll @@ -302,7 +302,7 @@ terminate.lpad: ; preds = %for.body } ; Function Attrs: mustprogress uwtable -define dso_local range(i64 0, 4294967296) i64 @meshopt_generateVertexRemapMulti(ptr nocapture noundef %destination, ptr noundef readonly %indices, i64 noundef %index_count, i64 noundef %vertex_count, ptr nocapture noundef readonly %streams, i64 noundef %stream_count) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 { +define dso_local range(i64 0, 4294967296) i64 @meshopt_generateVertexRemapMulti(ptr nocapture noundef %destination, ptr noundef readonly %indices, i64 noundef %index_count, i64 noundef %vertex_count, ptr noundef %streams, i64 noundef %stream_count) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 { entry: %allocator = alloca %class.meshopt_Allocator, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(200) %allocator, i8 0, i64 200, i1 false) @@ -446,6 +446,7 @@ for.body.i.i: ; preds = %cond.end, %_ZN7mesh %h.08.i.i = phi i32 [ %h.addr.0.lcssa.i.i.i, %_ZN7meshoptL11hashUpdate4EjPKhm.exit.i.i ], [ 0, %cond.end ] %i.07.i.i = phi i64 [ %inc.i.i, %_ZN7meshoptL11hashUpdate4EjPKhm.exit.i.i ], [ 0, %cond.end ] %arrayidx.i.i = getelementptr inbounds %struct.meshopt_Stream, ptr %streams, i64 %i.07.i.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i, i64 0) ] %size.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i.i, i64 8 %10 = load i64, ptr %size.i.i, align 8 %cmp9.i.i.i = icmp ugt i64 %10, 3 @@ -1043,7 +1044,7 @@ _ZN17meshopt_AllocatorD2Ev.exit: ; preds = %for.cond.i } ; Function Attrs: mustprogress uwtable -define dso_local void @meshopt_generateShadowIndexBufferMulti(ptr nocapture noundef writeonly %destination, ptr nocapture noundef readonly %indices, i64 noundef %index_count, i64 noundef %vertex_count, ptr nocapture noundef readonly %streams, i64 noundef %stream_count) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 { +define dso_local void @meshopt_generateShadowIndexBufferMulti(ptr nocapture noundef writeonly %destination, ptr nocapture noundef readonly %indices, i64 noundef %index_count, i64 noundef %vertex_count, ptr noundef %streams, i64 noundef %stream_count) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 { entry: %allocator = alloca %class.meshopt_Allocator, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(200) %allocator, i8 0, i64 200, i1 false) @@ -1136,6 +1137,7 @@ for.body.i.i: ; preds = %for.body11, %_ZN7me %h.08.i.i = phi i32 [ %h.addr.0.lcssa.i.i.i, %_ZN7meshoptL11hashUpdate4EjPKhm.exit.i.i ], [ 0, %for.body11 ] %i.07.i.i = phi i64 [ %inc.i.i, %_ZN7meshoptL11hashUpdate4EjPKhm.exit.i.i ], [ 0, %for.body11 ] %arrayidx.i.i = getelementptr inbounds %struct.meshopt_Stream, ptr %streams, i64 %i.07.i.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx.i.i, i64 0) ] %size.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i.i, i64 8 %9 = load i64, ptr %size.i.i, align 8 %cmp9.i.i.i = icmp ugt i64 %9, 3 diff --git a/bench/meshoptimizer/optimized/vcacheanalyzer.cpp.ll b/bench/meshoptimizer/optimized/vcacheanalyzer.cpp.ll index a6dd255c0b1..38f7c8a79e6 100644 --- a/bench/meshoptimizer/optimized/vcacheanalyzer.cpp.ll +++ b/bench/meshoptimizer/optimized/vcacheanalyzer.cpp.ll @@ -162,28 +162,31 @@ for.body: ; preds = %for.body.lr.ph, %fo %timestamp.062 = phi i32 [ %timestamp.3, %for.end ], [ %add, %for.body.lr.ph ] %i.061 = phi i64 [ %add54, %for.end ], [ 0, %for.body.lr.ph ] %arrayidx = getelementptr inbounds i32, ptr %indices, i64 %i.061 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx, i64 32) ] + %arrayidx3 = getelementptr i8, ptr %arrayidx, i64 4 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx3, i64 32) ] + %arrayidx5 = getelementptr i8, ptr %arrayidx, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx5, i64 32) ] %cmp18 = icmp eq i32 %primgroup_offset.063, %primgroup_size %or.cond = select i1 %tobool.not, i1 %cmp18, i1 false br i1 %or.cond, label %if.then, label %lor.lhs.false lor.lhs.false: ; preds = %for.body - %arrayidx5 = getelementptr i8, ptr %arrayidx, i64 8 %5 = load i32, ptr %arrayidx5, align 4 + %6 = load i32, ptr %arrayidx3, align 4 + %7 = load i32, ptr %arrayidx, align 4 %idxprom13 = zext i32 %5 to i64 %arrayidx14 = getelementptr inbounds nuw i32, ptr %call.i53, i64 %idxprom13 - %6 = load i32, ptr %arrayidx14, align 4 - %sub15 = sub i32 %timestamp.062, %6 - %cmp16 = icmp ugt i32 %sub15, %cache_size - %arrayidx3 = getelementptr i8, ptr %arrayidx, i64 4 - %7 = load i32, ptr %arrayidx3, align 4 - %idxprom8 = zext i32 %7 to i64 + %idxprom8 = zext i32 %6 to i64 %arrayidx9 = getelementptr inbounds nuw i32, ptr %call.i53, i64 %idxprom8 - %8 = load i32, ptr %arrayidx9, align 4 - %sub10 = sub i32 %timestamp.062, %8 - %cmp11 = icmp ugt i32 %sub10, %cache_size - %9 = load i32, ptr %arrayidx, align 4 - %idxprom = zext i32 %9 to i64 + %idxprom = zext i32 %7 to i64 %arrayidx6 = getelementptr inbounds nuw i32, ptr %call.i53, i64 %idxprom + %8 = load i32, ptr %arrayidx14, align 4 + %sub15 = sub i32 %timestamp.062, %8 + %cmp16 = icmp ugt i32 %sub15, %cache_size + %9 = load i32, ptr %arrayidx9, align 4 + %sub10 = sub i32 %timestamp.062, %9 + %cmp11 = icmp ugt i32 %sub10, %cache_size %10 = load i32, ptr %arrayidx6, align 4 %sub = sub i32 %timestamp.062, %10 %cmp7 = icmp ugt i32 %sub, %cache_size @@ -206,7 +209,7 @@ if.then: ; preds = %for.body, %lor.lhs. lpad: ; preds = %entry %11 = landingpad { ptr, i32 } cleanup - call void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %allocator) #7 + call void @_ZN17meshopt_AllocatorD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %allocator) #8 resume { ptr, i32 } %11 if.end: ; preds = %if.then, %lor.lhs.false @@ -295,7 +298,7 @@ terminate.lpad.i: ; preds = %for.body.i %17 = landingpad { ptr, i32 } catch ptr null %18 = extractvalue { ptr, i32 } %17, 0 - tail call void @__clang_call_terminate(ptr %18) #8 + tail call void @__clang_call_terminate(ptr %18) #9 unreachable _ZN17meshopt_AllocatorD2Ev.exit: ; preds = %for.cond.i @@ -350,14 +353,14 @@ terminate.lpad: ; preds = %for.body %3 = landingpad { ptr, i32 } catch ptr null %4 = extractvalue { ptr, i32 } %3, 0 - tail call void @__clang_call_terminate(ptr %4) #8 + tail call void @__clang_call_terminate(ptr %4) #9 unreachable } ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #3 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #7 - tail call void @_ZSt9terminatev() #8 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #8 + tail call void @_ZSt9terminatev() #9 unreachable } @@ -372,6 +375,9 @@ declare void @_ZdlPv(ptr noundef) #5 ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_Znwm(i64 noundef) #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #2 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -379,8 +385,9 @@ attributes #3 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-m attributes #4 = { cold nofree noreturn } attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind } -attributes #8 = { noreturn nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nounwind } +attributes #9 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll b/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll index c740a8113f8..dd15094a61f 100644 --- a/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll +++ b/bench/mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll @@ -1793,7 +1793,7 @@ define hidden void @"_ZN4core3ptr126drop_in_place$LT$alloc..sync..Arc$LT$crossbe } ; Function Attrs: nonlazybind uwtable -define hidden void @"_ZN4core3ptr144drop_in_place$LT$alloc..boxed..Box$LT$moka..common..deque..DeqNode$LT$moka..common..concurrent..KeyDate$LT$$LP$usize$C$usize$RP$$GT$$GT$$GT$$GT$17he07241d0a0046033E.llvm.3998950267652723875"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #0 personality ptr @rust_eh_personality { +define hidden void @"_ZN4core3ptr144drop_in_place$LT$alloc..boxed..Box$LT$moka..common..deque..DeqNode$LT$moka..common..concurrent..KeyDate$LT$$LP$usize$C$usize$RP$$GT$$GT$$GT$$GT$17he07241d0a0046033E.llvm.3998950267652723875"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !noundef !9 tail call void @llvm.experimental.noalias.scope.decl(metadata !240) tail call void @llvm.experimental.noalias.scope.decl(metadata !243) @@ -1814,7 +1814,7 @@ define hidden void @"_ZN4core3ptr144drop_in_place$LT$alloc..boxed..Box$LT$moka.. cleanup %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 invoke void @"_ZN4core3ptr94drop_in_place$LT$triomphe..arc..Arc$LT$moka..common..concurrent..entry_info..EntryInfo$GT$$GT$17h89616983217475abE.llvm.14689451251361528239"(ptr noalias noundef nonnull align 8 dereferenceable(8) %9) #36 - to label %21 unwind label %17 + to label %22 unwind label %17 "_ZN4core3ptr66drop_in_place$LT$alloc..sync..Arc$LT$$LP$usize$C$usize$RP$$GT$$GT$17hf53f4971760d06a4E.llvm.14689451251361528239.exit.i.i": ; preds = %6, %1 %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1843,15 +1843,17 @@ define hidden void @"_ZN4core3ptr144drop_in_place$LT$alloc..boxed..Box$LT$moka.. 19: ; preds = %.noexc, %14 %20 = landingpad { ptr, i32 } cleanup - br label %21 + br label %22 "_ZN4core3ptr119drop_in_place$LT$moka..common..deque..DeqNode$LT$moka..common..concurrent..KeyDate$LT$$LP$usize$C$usize$RP$$GT$$GT$$GT$17hffe544757c5e02d8E.exit": ; preds = %"_ZN4core3ptr66drop_in_place$LT$alloc..sync..Arc$LT$$LP$usize$C$usize$RP$$GT$$GT$17hf53f4971760d06a4E.llvm.14689451251361528239.exit.i.i", %.noexc - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 32, i64 noundef 8) #32, !noalias !261 + %21 = load ptr, ptr %0, align 8, !alias.scope !261, !nonnull !9, !noundef !9 + tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef 32, i64 noundef 8) #32 ret void -21: ; preds = %19, %7 +22: ; preds = %19, %7 %eh.lpad-body = phi { ptr, i32 } [ %20, %19 ], [ %8, %7 ] - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 32, i64 noundef 8) #32, !noalias !264 + %23 = load ptr, ptr %0, align 8, !alias.scope !264, !nonnull !9, !noundef !9 + tail call void @__rust_dealloc(ptr noundef nonnull %23, i64 noundef 32, i64 noundef 8) #32 resume { ptr, i32 } %eh.lpad-body } @@ -1872,7 +1874,7 @@ define hidden void @"_ZN4core3ptr146drop_in_place$LT$lock_api..mutex..MutexGuard } ; Function Attrs: nonlazybind uwtable -define hidden void @"_ZN4core3ptr148drop_in_place$LT$alloc..boxed..Box$LT$moka..common..deque..DeqNode$LT$moka..common..concurrent..KeyHashDate$LT$$LP$usize$C$usize$RP$$GT$$GT$$GT$$GT$17h11600bf058949a64E.llvm.3998950267652723875"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #0 personality ptr @rust_eh_personality { +define hidden void @"_ZN4core3ptr148drop_in_place$LT$alloc..boxed..Box$LT$moka..common..deque..DeqNode$LT$moka..common..concurrent..KeyHashDate$LT$$LP$usize$C$usize$RP$$GT$$GT$$GT$$GT$17h11600bf058949a64E.llvm.3998950267652723875"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !noundef !9 tail call void @llvm.experimental.noalias.scope.decl(metadata !270) tail call void @llvm.experimental.noalias.scope.decl(metadata !273) @@ -1893,7 +1895,7 @@ define hidden void @"_ZN4core3ptr148drop_in_place$LT$alloc..boxed..Box$LT$moka.. cleanup %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 invoke void @"_ZN4core3ptr94drop_in_place$LT$triomphe..arc..Arc$LT$moka..common..concurrent..entry_info..EntryInfo$GT$$GT$17h89616983217475abE.llvm.14689451251361528239"(ptr noalias noundef nonnull align 8 dereferenceable(8) %9) #36 - to label %21 unwind label %17 + to label %22 unwind label %17 "_ZN4core3ptr66drop_in_place$LT$alloc..sync..Arc$LT$$LP$usize$C$usize$RP$$GT$$GT$17hf53f4971760d06a4E.llvm.14689451251361528239.exit.i.i": ; preds = %6, %1 %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1922,15 +1924,17 @@ define hidden void @"_ZN4core3ptr148drop_in_place$LT$alloc..boxed..Box$LT$moka.. 19: ; preds = %.noexc, %14 %20 = landingpad { ptr, i32 } cleanup - br label %21 + br label %22 "_ZN4core3ptr123drop_in_place$LT$moka..common..deque..DeqNode$LT$moka..common..concurrent..KeyHashDate$LT$$LP$usize$C$usize$RP$$GT$$GT$$GT$17h947396d0e91e23e6E.exit": ; preds = %"_ZN4core3ptr66drop_in_place$LT$alloc..sync..Arc$LT$$LP$usize$C$usize$RP$$GT$$GT$17hf53f4971760d06a4E.llvm.14689451251361528239.exit.i.i", %.noexc - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 40, i64 noundef 8) #32, !noalias !291 + %21 = load ptr, ptr %0, align 8, !alias.scope !291, !nonnull !9, !noundef !9 + tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef 40, i64 noundef 8) #32 ret void -21: ; preds = %19, %7 +22: ; preds = %19, %7 %eh.lpad-body = phi { ptr, i32 } [ %20, %19 ], [ %8, %7 ] - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 40, i64 noundef 8) #32, !noalias !294 + %23 = load ptr, ptr %0, align 8, !alias.scope !294, !nonnull !9, !noundef !9 + tail call void @__rust_dealloc(ptr noundef nonnull %23, i64 noundef 40, i64 noundef 8) #32 resume { ptr, i32 } %eh.lpad-body } @@ -9200,7 +9204,7 @@ common.resume: ; preds = %49, %13 50: ; preds = %49 %51 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #37 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #37 unreachable } @@ -13694,14 +13698,14 @@ _ZN15crossbeam_epoch8internal5Local5unpin17h7d37cf07c3b2d8d6E.llvm.3998950267652 } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h036bb7424c234386E.llvm.3998950267652723875"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #14 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h036bb7424c234386E.llvm.3998950267652723875"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !nonnull !9, !noundef !9 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 32, i64 noundef 8) #32 ret void } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc9cc3ccb15129f95E.llvm.3998950267652723875"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #14 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc9cc3ccb15129f95E.llvm.3998950267652723875"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #14 { %2 = load ptr, ptr %0, align 8, !nonnull !9, !noundef !9 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 40, i64 noundef 8) #32 ret void diff --git a/bench/mold/optimized/arch-arm64.cc.ll b/bench/mold/optimized/arch-arm64.cc.ll index c6d418dd86e..aeb28e1d50b 100644 --- a/bench/mold/optimized/arch-arm64.cc.ll +++ b/bench/mold/optimized/arch-arm64.cc.ll @@ -3357,6 +3357,9 @@ init: ; preds = %init.check br label %init.end init.end: ; preds = %init, %init.check, %entry + %buf2 = getelementptr inbounds nuw i8, ptr %ctx, i64 3368 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %buf2, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %this, i64 0) ] %symbols = getelementptr inbounds nuw i8, ptr %this, i64 56 %2 = load ptr, ptr %symbols, align 8 %_M_finish.i = getelementptr inbounds nuw i8, ptr %this, i64 64 @@ -3366,17 +3369,16 @@ init.end: ; preds = %init, %init.check, for.body.preheader: ; preds = %init.end %4 = load ptr, ptr %this, align 8 + %5 = load ptr, ptr %buf2, align 8 %sh_addr = getelementptr inbounds nuw i8, ptr %4, i64 40 - %x.0.copyload.i8 = load i64, ptr %sh_addr, align 1 %offset = getelementptr inbounds nuw i8, ptr %this, i64 8 - %5 = load i64, ptr %offset, align 8 - %add = add i64 %x.0.copyload.i8, %5 - %buf2 = getelementptr inbounds nuw i8, ptr %ctx, i64 3368 - %6 = load ptr, ptr %buf2, align 8 %sh_offset = getelementptr inbounds nuw i8, ptr %4, i64 48 + %x.0.copyload.i8 = load i64, ptr %sh_addr, align 1 + %6 = load i64, ptr %offset, align 8 + %add = add i64 %x.0.copyload.i8, %6 %x.0.copyload.i = load i64, ptr %sh_offset, align 1 - %add.ptr = getelementptr inbounds i8, ptr %6, i64 %x.0.copyload.i - %add.ptr3 = getelementptr inbounds i8, ptr %add.ptr, i64 %5 + %add.ptr = getelementptr inbounds i8, ptr %5, i64 %x.0.copyload.i + %add.ptr3 = getelementptr inbounds i8, ptr %add.ptr, i64 %6 br label %for.body for.body: ; preds = %for.body.preheader, %for.body diff --git a/bench/mold/optimized/arch-loongarch.cc.LOONGARCH32.cc.ll b/bench/mold/optimized/arch-loongarch.cc.LOONGARCH32.cc.ll index 6093c206e06..3b5147a75ab 100644 --- a/bench/mold/optimized/arch-loongarch.cc.LOONGARCH32.cc.ll +++ b/bench/mold/optimized/arch-loongarch.cc.LOONGARCH32.cc.ll @@ -2240,7 +2240,7 @@ return: ; preds = %if.end39, %_ZNSt11c declare void @_ZN4mold3elf12InputSectionINS0_11LOONGARCH32EE16apply_dyn_absrelERNS0_7ContextIS2_EERNS0_6SymbolIS2_EERKNS0_6ElfRelIS2_EEPhmlmPPSB_(ptr noundef nonnull align 8 dereferenceable(118), ptr noundef nonnull align 8 dereferenceable(4568), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0 ; Function Attrs: mustprogress nounwind -define internal fastcc void @"_ZZN4mold3elf12InputSectionINS0_11LOONGARCH32EE17apply_reloc_allocERNS0_7ContextIS2_EEPhENK3$_1clElll"(ptr nocapture noundef nonnull readonly align 8 dereferenceable(40) %this, i64 noundef %val, i64 noundef range(i64 -4194304, -131071) %lo, i64 noundef range(i64 131072, 4194305) %hi) unnamed_addr #4 align 2 { +define internal fastcc void @"_ZZN4mold3elf12InputSectionINS0_11LOONGARCH32EE17apply_reloc_allocERNS0_7ContextIS2_EEPhENK3$_1clElll"(ptr noundef nonnull align 8 dereferenceable(40) %this, i64 noundef %val, i64 noundef range(i64 -4194304, -131071) %lo, i64 noundef range(i64 131072, 4194305) %hi) unnamed_addr #4 align 2 { entry: %ref.tmp.i.i.i = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp = alloca %"class.mold::Error", align 8 @@ -3486,6 +3486,11 @@ init: ; preds = %init.check br label %init.end init.end: ; preds = %init, %init.check, %entry + %buf2 = getelementptr inbounds nuw i8, ptr %ctx, i64 3368 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %buf2, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %this, i64 0) ] + %offset = getelementptr inbounds nuw i8, ptr %this, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %offset, i64 64) ] %symbols = getelementptr inbounds nuw i8, ptr %this, i64 56 %2 = load ptr, ptr %symbols, align 8 %_M_finish.i = getelementptr inbounds nuw i8, ptr %this, i64 64 @@ -3494,16 +3499,14 @@ init.end: ; preds = %init, %init.check, br i1 %cmp.i16, label %for.end, label %for.body.preheader for.body.preheader: ; preds = %init.end - %offset = getelementptr inbounds nuw i8, ptr %this, i64 8 %4 = load i64, ptr %offset, align 8 %5 = load ptr, ptr %this, align 8 + %6 = load ptr, ptr %buf2, align 8 %sh_addr = getelementptr inbounds nuw i8, ptr %5, i64 36 + %sh_offset = getelementptr inbounds nuw i8, ptr %5, i64 40 %x.0.copyload.i9 = load i32, ptr %sh_addr, align 1 %conv = zext i32 %x.0.copyload.i9 to i64 %add = add nsw i64 %4, %conv - %buf2 = getelementptr inbounds nuw i8, ptr %ctx, i64 3368 - %6 = load ptr, ptr %buf2, align 8 - %sh_offset = getelementptr inbounds nuw i8, ptr %5, i64 40 %x.0.copyload.i = load i32, ptr %sh_offset, align 1 %idx.ext = zext i32 %x.0.copyload.i to i64 %add.ptr = getelementptr inbounds nuw i8, ptr %6, i64 %idx.ext diff --git a/bench/msdfgen/optimized/main.cpp.ll b/bench/msdfgen/optimized/main.cpp.ll index 98d05c23b3f..2e23d7e20b8 100644 --- a/bench/msdfgen/optimized/main.cpp.ll +++ b/bench/msdfgen/optimized/main.cpp.ll @@ -3451,6 +3451,7 @@ sw.bb47.i: ; preds = %if.else12.i, %if.th br i1 %tobool50.not.i, label %if.then1680, label %if.end52.i if.end52.i: ; preds = %sw.bb47.i + %height58.i = getelementptr inbounds nuw i8, ptr %ref.tmp1674, i64 12 switch i32 %format.2, label %default.unreachable1897 [ i32 6, label %if.then54.i i32 7, label %if.then63.i @@ -3459,7 +3460,6 @@ if.end52.i: ; preds = %sw.bb47.i if.then54.i: ; preds = %if.end52.i %309 = load i32, ptr %279, align 8 - %height58.i = getelementptr inbounds nuw i8, ptr %ref.tmp1674, i64 12 %310 = load i32, ptr %height58.i, align 4 %mul59.i = mul nsw i32 %310, %309 %cmp2.i.i = icmp sgt i32 %mul59.i, 0 @@ -3488,8 +3488,7 @@ for.body.i.i: ; preds = %for.body.i.i, %for. if.then63.i: ; preds = %if.end52.i %315 = load ptr, ptr %ref.tmp1674, align 8 %316 = load i32, ptr %279, align 8 - %height67.i = getelementptr inbounds nuw i8, ptr %ref.tmp1674, i64 12 - %317 = load i32, ptr %height67.i, align 4 + %317 = load i32, ptr %height58.i, align 4 %mul68.i = mul nsw i32 %317, %316 %conv.i143.i = sext i32 %mul68.i to i64 %call.i144.i = call i64 @fwrite(ptr noundef %315, i64 noundef 4, i64 noundef %conv.i143.i, ptr noundef nonnull %call49.i) @@ -3497,8 +3496,7 @@ if.then63.i: ; preds = %if.end52.i if.then72.i: ; preds = %if.end52.i %318 = load i32, ptr %279, align 8 - %height76.i = getelementptr inbounds nuw i8, ptr %ref.tmp1674, i64 12 - %319 = load i32, ptr %height76.i, align 4 + %319 = load i32, ptr %height58.i, align 4 %mul77.i = mul nsw i32 %319, %318 %cmp5.i145.i = icmp sgt i32 %mul77.i, 0 br i1 %cmp5.i145.i, label %for.body.i146.preheader.i, label %if.end1683.sink.split @@ -4072,6 +4070,7 @@ sw.bb47.i968: ; preds = %if.else12.i1165, %i br i1 %tobool50.not.i970, label %if.then1764, label %if.end52.i971 if.end52.i971: ; preds = %sw.bb47.i968 + %height58.i1004 = getelementptr inbounds nuw i8, ptr %ref.tmp1758, i64 12 switch i32 %format.8, label %default.unreachable1899 [ i32 6, label %if.then54.i1002 i32 7, label %if.then63.i996 @@ -4081,7 +4080,6 @@ if.end52.i971: ; preds = %sw.bb47.i968 if.then54.i1002: ; preds = %if.end52.i971 %378 = load i32, ptr %348, align 8 %mul57.i = mul nsw i32 %378, 3 - %height58.i1004 = getelementptr inbounds nuw i8, ptr %ref.tmp1758, i64 12 %379 = load i32, ptr %height58.i1004, align 4 %mul59.i1005 = mul nsw i32 %mul57.i, %379 %cmp2.i.i1006 = icmp sgt i32 %mul59.i1005, 0 @@ -4111,8 +4109,7 @@ if.then63.i996: ; preds = %if.end52.i971 %384 = load ptr, ptr %ref.tmp1758, align 8 %385 = load i32, ptr %348, align 8 %mul66.i = mul nsw i32 %385, 3 - %height67.i998 = getelementptr inbounds nuw i8, ptr %ref.tmp1758, i64 12 - %386 = load i32, ptr %height67.i998, align 4 + %386 = load i32, ptr %height58.i1004, align 4 %mul68.i999 = mul nsw i32 %mul66.i, %386 %conv.i143.i1000 = sext i32 %mul68.i999 to i64 %call.i144.i1001 = call i64 @fwrite(ptr noundef %384, i64 noundef 4, i64 noundef %conv.i143.i1000, ptr noundef nonnull %call49.i969) @@ -4121,8 +4118,7 @@ if.then63.i996: ; preds = %if.end52.i971 if.then72.i972: ; preds = %if.end52.i971 %387 = load i32, ptr %348, align 8 %mul75.i = mul nsw i32 %387, 3 - %height76.i974 = getelementptr inbounds nuw i8, ptr %ref.tmp1758, i64 12 - %388 = load i32, ptr %height76.i974, align 4 + %388 = load i32, ptr %height58.i1004, align 4 %mul77.i975 = mul nsw i32 %mul75.i, %388 %cmp5.i145.i976 = icmp sgt i32 %mul77.i975, 0 br i1 %cmp5.i145.i976, label %for.body.i146.preheader.i980, label %if.end1767.sink.split @@ -4698,6 +4694,7 @@ sw.bb47.i1298: ; preds = %if.else12.i1499, %i br i1 %tobool50.not.i1300, label %if.then1850, label %if.end52.i1301 if.end52.i1301: ; preds = %sw.bb47.i1298 + %height58.i1337 = getelementptr inbounds nuw i8, ptr %ref.tmp1844, i64 12 switch i32 %format.14, label %default.unreachable1901 [ i32 6, label %if.then54.i1334 i32 7, label %if.then63.i1327 @@ -4707,7 +4704,6 @@ if.end52.i1301: ; preds = %sw.bb47.i1298 if.then54.i1334: ; preds = %if.end52.i1301 %447 = load i32, ptr %417, align 8 %mul57.i1336 = shl nsw i32 %447, 2 - %height58.i1337 = getelementptr inbounds nuw i8, ptr %ref.tmp1844, i64 12 %448 = load i32, ptr %height58.i1337, align 4 %mul59.i1338 = mul nsw i32 %mul57.i1336, %448 %cmp2.i.i1339 = icmp sgt i32 %mul59.i1338, 0 @@ -4737,8 +4733,7 @@ if.then63.i1327: ; preds = %if.end52.i1301 %453 = load ptr, ptr %ref.tmp1844, align 8 %454 = load i32, ptr %417, align 8 %mul66.i1329 = shl nsw i32 %454, 2 - %height67.i1330 = getelementptr inbounds nuw i8, ptr %ref.tmp1844, i64 12 - %455 = load i32, ptr %height67.i1330, align 4 + %455 = load i32, ptr %height58.i1337, align 4 %mul68.i1331 = mul nsw i32 %mul66.i1329, %455 %conv.i143.i1332 = sext i32 %mul68.i1331 to i64 %call.i144.i1333 = call i64 @fwrite(ptr noundef %453, i64 noundef 4, i64 noundef %conv.i143.i1332, ptr noundef nonnull %call49.i1299) @@ -4747,8 +4742,7 @@ if.then63.i1327: ; preds = %if.end52.i1301 if.then72.i1302: ; preds = %if.end52.i1301 %456 = load i32, ptr %417, align 8 %mul75.i1304 = shl nsw i32 %456, 2 - %height76.i1305 = getelementptr inbounds nuw i8, ptr %ref.tmp1844, i64 12 - %457 = load i32, ptr %height76.i1305, align 4 + %457 = load i32, ptr %height58.i1337, align 4 %mul77.i1306 = mul nsw i32 %mul75.i1304, %457 %cmp5.i145.i1307 = icmp sgt i32 %mul77.i1306, 0 br i1 %cmp5.i145.i1307, label %for.body.i146.preheader.i1311, label %if.end1853.sink.split diff --git a/bench/msdfgen/optimized/sdf-error-estimation.cpp.ll b/bench/msdfgen/optimized/sdf-error-estimation.cpp.ll index 518e137eae5..669ad5ac766 100644 --- a/bench/msdfgen/optimized/sdf-error-estimation.cpp.ll +++ b/bench/msdfgen/optimized/sdf-error-estimation.cpp.ll @@ -399,6 +399,7 @@ invoke.cont49: ; preds = %land.lhs.true %mul2.i90 = fmul double %bt.0, %conv1.i %11 = tail call double @llvm.fmuladd.f64(double %sub.i, double %conv.i89, double %mul2.i90) %conv3.i = fptrunc double %11 to float + store float %conv3.i, ptr %rv, align 4 %arrayidx32 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 4 %12 = load float, ptr %arrayidx32, align 4 %arrayidx35 = getelementptr inbounds nuw i8, ptr %add.ptr.i88, i64 4 @@ -409,6 +410,7 @@ invoke.cont49: ; preds = %land.lhs.true %14 = tail call double @llvm.fmuladd.f64(double %sub.i, double %conv.i102, double %mul2.i104) %conv3.i105 = fptrunc double %14 to float %arrayidx37 = getelementptr inbounds nuw i8, ptr %rv, i64 4 + store float %conv3.i105, ptr %arrayidx37, align 4 %arrayidx40 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %15 = load float, ptr %arrayidx40, align 4 %arrayidx43 = getelementptr inbounds nuw i8, ptr %add.ptr.i88, i64 8 @@ -419,6 +421,7 @@ invoke.cont49: ; preds = %land.lhs.true %17 = tail call double @llvm.fmuladd.f64(double %sub.i, double %conv.i117, double %mul2.i119) %conv3.i120 = fptrunc double %17 to float %arrayidx45 = getelementptr inbounds nuw i8, ptr %rv, i64 8 + store float %conv3.i120, ptr %arrayidx45, align 4 %cmp.i.i = fcmp olt float %conv3.i105, %conv3.i %cond.i.i = select i1 %cmp.i.i, float %conv3.i105, float %conv3.i %cmp.i3.i = fcmp olt float %conv3.i, %conv3.i105 @@ -468,6 +471,8 @@ lpad22: ; preds = %lpad22.loopexit.spl if.end55: ; preds = %_ZNSt6vectorIN7msdfgen8Scanline12IntersectionESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %invoke.cont49 %19 = phi ptr [ %incdec.ptr.i.i, %_ZNSt6vectorIN7msdfgen8Scanline12IntersectionESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ null, %invoke.cont49 ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %rv, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx37, i64 32) ] %cmp57262 = icmp sgt i32 %8, 1 br i1 %cmp57262, label %for.body.lr.ph, label %for.end237 @@ -913,6 +918,7 @@ invoke.cont49: ; preds = %land.lhs.true %mul2.i90 = fmul double %bt.0, %conv1.i %11 = tail call double @llvm.fmuladd.f64(double %sub.i, double %conv.i89, double %mul2.i90) %conv3.i = fptrunc double %11 to float + store float %conv3.i, ptr %rv, align 4 %arrayidx32 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 4 %12 = load float, ptr %arrayidx32, align 4 %arrayidx35 = getelementptr inbounds nuw i8, ptr %add.ptr.i88, i64 4 @@ -923,6 +929,7 @@ invoke.cont49: ; preds = %land.lhs.true %14 = tail call double @llvm.fmuladd.f64(double %sub.i, double %conv.i102, double %mul2.i104) %conv3.i105 = fptrunc double %14 to float %arrayidx37 = getelementptr inbounds nuw i8, ptr %rv, i64 4 + store float %conv3.i105, ptr %arrayidx37, align 4 %arrayidx40 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %15 = load float, ptr %arrayidx40, align 4 %arrayidx43 = getelementptr inbounds nuw i8, ptr %add.ptr.i88, i64 8 @@ -933,6 +940,7 @@ invoke.cont49: ; preds = %land.lhs.true %17 = tail call double @llvm.fmuladd.f64(double %sub.i, double %conv.i117, double %mul2.i119) %conv3.i120 = fptrunc double %17 to float %arrayidx45 = getelementptr inbounds nuw i8, ptr %rv, i64 8 + store float %conv3.i120, ptr %arrayidx45, align 4 %cmp.i.i = fcmp olt float %conv3.i105, %conv3.i %cond.i.i = select i1 %cmp.i.i, float %conv3.i105, float %conv3.i %cmp.i3.i = fcmp olt float %conv3.i, %conv3.i105 @@ -982,6 +990,8 @@ lpad22: ; preds = %lpad22.loopexit.spl if.end55: ; preds = %_ZNSt6vectorIN7msdfgen8Scanline12IntersectionESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, %invoke.cont49 %19 = phi ptr [ %incdec.ptr.i.i, %_ZNSt6vectorIN7msdfgen8Scanline12IntersectionESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i ], [ null, %invoke.cont49 ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %rv, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx37, i64 32) ] %cmp57262 = icmp sgt i32 %8, 1 br i1 %cmp57262, label %for.body.lr.ph, label %for.end237 diff --git a/bench/ncnn/optimized/pixelshuffle.cpp.ll b/bench/ncnn/optimized/pixelshuffle.cpp.ll index 57e2409a558..46c148cb2f3 100644 --- a/bench/ncnn/optimized/pixelshuffle.cpp.ll +++ b/bench/ncnn/optimized/pixelshuffle.cpp.ll @@ -125,12 +125,16 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn12PixelShuffle7forwardERK %.0108160 = phi i32 [ %99, %._crit_edge ], [ 0, %.preheader.preheader ] %58 = icmp slt i32 %57, 1 %brmerge = or i1 %58, %36 - br i1 %brmerge, label %._crit_edge, label %.lr.ph.split.us + br i1 %brmerge, label %._crit_edge, label %.lr.ph.split.us.preheader -.lr.ph.split.us: ; preds = %.preheader, %._crit_edge154.us - %59 = phi i32 [ %82, %._crit_edge154.us ], [ %56, %.preheader ] - %60 = phi i32 [ %83, %._crit_edge154.us ], [ %57, %.preheader ] - %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge154.us ], [ 0, %.preheader ] +.lr.ph.split.us.preheader: ; preds = %.preheader + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] + br label %.lr.ph.split.us + +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %._crit_edge154.us + %59 = phi i32 [ %82, %._crit_edge154.us ], [ %56, %.lr.ph.split.us.preheader ] + %60 = phi i32 [ %83, %._crit_edge154.us ], [ %57, %.lr.ph.split.us.preheader ] + %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge154.us ], [ 0, %.lr.ph.split.us.preheader ] %61 = load i32, ptr %34, align 4 %62 = icmp eq i32 %61, 0 br i1 %62, label %69, label %63 @@ -161,13 +165,13 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn12PixelShuffle7forwardERK br label %._crit_edge154.us .lr.ph.us.us.preheader: ; preds = %.lr.ph153.us - %75 = load ptr, ptr %1, align 8 - %76 = load i64, ptr %35, align 8 + %75 = load i64, ptr %35, align 8 + %76 = load ptr, ptr %1, align 8 %77 = sext i32 %.0106.us to i64 - %78 = mul i64 %76, %77 + %78 = mul i64 %75, %77 %79 = load i64, ptr %11, align 8 %80 = mul i64 %78, %79 - %81 = getelementptr inbounds i8, ptr %75, i64 %80 + %81 = getelementptr inbounds i8, ptr %76, i64 %80 br label %.lr.ph.us.us ._crit_edge154.us: ; preds = %._crit_edge.us.us, %.lr.ph153.split.us158.preheader @@ -233,14 +237,14 @@ declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZN4ncnn12PixelShuffleD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %0) unnamed_addr #2 comdat align 2 { - tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #5 + tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #6 ret void } ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZN4ncnn12PixelShuffleD0Ev(ptr noundef nonnull align 8 dereferenceable(216) %0) unnamed_addr #2 comdat align 2 { - tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %0) #5 - tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 216) #6 + tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %0) #6 + tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 216) #7 ret void } @@ -262,13 +266,17 @@ declare void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(208 ; Function Attrs: nobuiltin nounwind declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + attributes #0 = { mustprogress uwtable "approx-func-fp-math"="true" "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #1 = { "approx-func-fp-math"="true" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #2 = { mustprogress nounwind uwtable "approx-func-fp-math"="true" "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #3 = { nounwind "approx-func-fp-math"="true" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #4 = { nobuiltin nounwind "approx-func-fp-math"="true" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } -attributes #5 = { nounwind } -attributes #6 = { builtin nounwind } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nounwind } +attributes #7 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/ncnn/optimized/roipooling.cpp.ll b/bench/ncnn/optimized/roipooling.cpp.ll index 5a7d87f4a1f..da75e024091 100644 --- a/bench/ncnn/optimized/roipooling.cpp.ll +++ b/bench/ncnn/optimized/roipooling.cpp.ll @@ -128,6 +128,8 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn10ROIPooling7forwardERKSt %73 = sext i32 %7 to i64 %74 = sext i32 %9 to i64 %wide.trip.count = zext nneg i32 %13 to i64 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %15, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %25, i64 64) ] br label %.lr.ph288.split .lr.ph288.split: ; preds = %.lr.ph288.split.preheader, %._crit_edge266 @@ -144,16 +146,16 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn10ROIPooling7forwardERKSt %84 = getelementptr inbounds i8, ptr %79, i64 %83 %85 = icmp sgt i32 %78, 0 %86 = icmp sgt i32 %77, 0 - %or.cond = select i1 %85, i1 %86, i1 false - br i1 %or.cond, label %.preheader234.preheader, label %._crit_edge266 + %or.cond325 = select i1 %85, i1 %86, i1 false + br i1 %or.cond325, label %.preheader234.preheader, label %._crit_edge266 .preheader234.preheader: ; preds = %.lr.ph288.split - %87 = load ptr, ptr %15, align 8 - %88 = load i64, ptr %25, align 8 - %89 = mul i64 %88, %indvars.iv309 + %87 = load i64, ptr %25, align 8 + %88 = load ptr, ptr %15, align 8 + %89 = mul i64 %87, %indvars.iv309 %90 = load i64, ptr %69, align 8 %91 = mul i64 %89, %90 - %92 = getelementptr inbounds i8, ptr %87, i64 %91 + %92 = getelementptr inbounds i8, ptr %88, i64 %91 br label %.preheader234 .preheader234: ; preds = %.preheader234.preheader, %._crit_edge @@ -228,8 +230,8 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn10ROIPooling7forwardERKSt 138: ; preds = %116, %133 %139 = phi fast float [ %137, %133 ], [ 0.000000e+00, %116 ] %140 = icmp slt i32 %129, %.sroa.speculated219 - %or.cond322 = select i1 %111, i1 %140, i1 false - br i1 %or.cond322, label %.preheader.us.preheader, label %._crit_edge239 + %or.cond = select i1 %111, i1 %140, i1 false + br i1 %or.cond, label %.preheader.us.preheader, label %._crit_edge239 .preheader.us.preheader: ; preds = %138 %141 = zext nneg i32 %129 to i64 @@ -312,14 +314,14 @@ declare float @llvm.ceil.f32(float) #2 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZN4ncnn10ROIPoolingD2Ev(ptr noundef nonnull align 8 dereferenceable(220) %0) unnamed_addr #3 comdat align 2 { - tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #7 + tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(208) %0) #8 ret void } ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZN4ncnn10ROIPoolingD0Ev(ptr noundef nonnull align 8 dereferenceable(220) %0) unnamed_addr #3 comdat align 2 { - tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(220) %0) #7 - tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 224) #8 + tail call void @_ZN4ncnn5LayerD2Ev(ptr noundef nonnull align 8 dereferenceable(220) %0) #8 + tail call void @_ZdlPvm(ptr noundef nonnull %0, i64 noundef 224) #9 ret void } @@ -350,6 +352,9 @@ declare i32 @llvm.smax.i32(i32, i32) #6 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smin.i64(i64, i64) #6 @@ -360,8 +365,9 @@ attributes #3 = { mustprogress nounwind uwtable "approx-func-fp-math"="true" "fr attributes #4 = { nounwind "approx-func-fp-math"="true" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #5 = { nobuiltin nounwind "approx-func-fp-math"="true" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nounwind } -attributes #8 = { builtin nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nounwind } +attributes #9 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/ninja/optimized/graph.cc.ll b/bench/ninja/optimized/graph.cc.ll index bc4b2c0d66f..e2c0129b53f 100644 --- a/bench/ninja/optimized/graph.cc.ll +++ b/bench/ninja/optimized/graph.cc.ll @@ -5228,6 +5228,9 @@ _ZStmiRKSt15_Deque_iteratorIP4NodeRS1_PS1_El.exit71: ; preds = %412, %418 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !220 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !220 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9), !noalias !217 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %43, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.4172.0..sroa_idx, i64 0) ] %450 = ptrtoint ptr %3 to i64 %451 = ptrtoint ptr %2 to i64 %452 = sub i64 %450, %451 @@ -5362,6 +5365,9 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPP4NodeSt6vectorIS3_SaIS3_EEEElEvRT_ store ptr %.sroa.3180.0, ptr %68, align 8 store ptr %.sroa.5.0, ptr %342, align 8 store ptr %.sroa.7185.0, ptr %59, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %43, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.4172.0..sroa_idx, i64 0) ] %511 = icmp sgt i64 %374, 0 br i1 %511, label %.lr.ph.i.i.i103.preheader, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPP4NodeSt6vectorIS3_SaIS3_EEEESt15_Deque_iteratorIS3_RS3_S4_EET0_T_SD_SC_.exit diff --git a/bench/nlohmann_json/optimized/unit-element_access1.cpp.ll b/bench/nlohmann_json/optimized/unit-element_access1.cpp.ll index 66ef899334b..62822e633b7 100644 --- a/bench/nlohmann_json/optimized/unit-element_access1.cpp.ll +++ b/bench/nlohmann_json/optimized/unit-element_access1.cpp.ll @@ -5744,6 +5744,7 @@ _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_str %m_value.i.i.i1104 = getelementptr inbounds nuw i8, ptr %j, i64 8 %409 = load ptr, ptr %m_value.i.i.i1104, align 8, !noalias !27 %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %409, i64 8 + store ptr %add.ptr.i.i.i.i.i, ptr %m_it.i.i.i1101, align 8, !alias.scope !27 %call.i4.i.i.i.i = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i) #26 store ptr %call.i4.i.i.i.i, ptr %m_it.i.i.i1101, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i @@ -5861,6 +5862,7 @@ _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_st %m_value.i.i.i1131 = getelementptr inbounds nuw i8, ptr %j_const, i64 8 %422 = load ptr, ptr %m_value.i.i.i1131, align 8, !noalias !30 %add.ptr.i.i.i.i.i1132 = getelementptr inbounds nuw i8, ptr %422, i64 8 + store ptr %add.ptr.i.i.i.i.i1132, ptr %m_it.i.i.i1125, align 8, !alias.scope !30 %call.i4.i.i.i.i1133 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i1132) #26 store ptr %call.i4.i.i.i.i1133, ptr %m_it.i.i.i1125, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i @@ -22388,6 +22390,7 @@ invoke.cont7811: ; preds = %invoke.cont7809 _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE3endEv.exit.thread.i3636: ; preds = %invoke.cont7811 %2156 = load ptr, ptr %m_value.i.i.i3609, align 8, !noalias !223 %add.ptr.i.i.i.i.i3638 = getelementptr inbounds nuw i8, ptr %2156, i64 8 + store ptr %add.ptr.i.i.i.i.i3638, ptr %m_it.i.i.i3628, align 8, !alias.scope !223 %call.i4.i.i.i.i3639 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3638) #26 store ptr %call.i4.i.i.i.i3639, ptr %m_it.i.i.i3628, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3635 @@ -22698,6 +22701,7 @@ invoke.cont7904: ; preds = %invoke.cont7902 _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE4cendEv.exit.thread.i3676: ; preds = %invoke.cont7904 %2189 = load ptr, ptr %m_value.i.i.i3649, align 8, !noalias !231 %add.ptr.i.i.i.i.i3678 = getelementptr inbounds nuw i8, ptr %2189, i64 8 + store ptr %add.ptr.i.i.i.i.i3678, ptr %m_it.i.i.i3668, align 8, !alias.scope !231 %call.i4.i.i.i.i3679 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3678) #26 store ptr %call.i4.i.i.i.i3679, ptr %m_it.i.i.i3668, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3675 @@ -22932,6 +22936,7 @@ _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_str %m_value.i.i.i3718 = getelementptr inbounds nuw i8, ptr %j7952, i64 8 %2213 = load ptr, ptr %m_value.i.i.i3718, align 8, !noalias !238 %add.ptr.i.i.i.i.i3719 = getelementptr inbounds nuw i8, ptr %2213, i64 8 + store ptr %add.ptr.i.i.i.i.i3719, ptr %m_it.i.i.i3709, align 8, !alias.scope !238 %call.i4.i.i.i.i3720 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3719) #26 store ptr %call.i4.i.i.i.i3720, ptr %m_it.i.i.i3709, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3716 @@ -23077,6 +23082,7 @@ _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_st %m_value.i.i.i3761 = getelementptr inbounds nuw i8, ptr %j7982, i64 8 %2230 = load ptr, ptr %m_value.i.i.i3761, align 8, !noalias !244 %add.ptr.i.i.i.i.i3762 = getelementptr inbounds nuw i8, ptr %2230, i64 8 + store ptr %add.ptr.i.i.i.i.i3762, ptr %m_it.i.i.i3752, align 8, !alias.scope !244 %call.i4.i.i.i.i3763 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3762) #26 store ptr %call.i4.i.i.i.i3763, ptr %m_it.i.i.i3752, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3759 @@ -23293,6 +23299,7 @@ invoke.cont8043: ; preds = %invoke.cont8037 _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE3endEv.exit.thread.i3807: ; preds = %invoke.cont8043 %2254 = load ptr, ptr %m_value.i.i3777, align 8, !noalias !250 %add.ptr.i.i.i.i.i3809 = getelementptr inbounds nuw i8, ptr %2254, i64 8 + store ptr %add.ptr.i.i.i.i.i3809, ptr %m_it.i.i.i3799, align 8, !alias.scope !250 %call.i4.i.i.i.i3810 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3809) #26 store ptr %call.i4.i.i.i.i3810, ptr %m_it.i.i.i3799, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3806 @@ -23426,6 +23433,7 @@ invoke.cont8073: ; preds = %invoke.cont8067 _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE4cendEv.exit.thread.i3850: ; preds = %invoke.cont8073 %2270 = load ptr, ptr %m_value.i.i3820, align 8, !noalias !256 %add.ptr.i.i.i.i.i3852 = getelementptr inbounds nuw i8, ptr %2270, i64 8 + store ptr %add.ptr.i.i.i.i.i3852, ptr %m_it.i.i.i3842, align 8, !alias.scope !256 %call.i4.i.i.i.i3853 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3852) #26 store ptr %call.i4.i.i.i.i3853, ptr %m_it.i.i.i3842, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3849 @@ -23640,6 +23648,7 @@ invoke.cont8115: ; preds = %invoke.cont8109 _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE3endEv.exit.thread.i3897: ; preds = %invoke.cont8115 %2294 = load ptr, ptr %m_value.i.i3867, align 8, !noalias !262 %add.ptr.i.i.i.i.i3899 = getelementptr inbounds nuw i8, ptr %2294, i64 8 + store ptr %add.ptr.i.i.i.i.i3899, ptr %m_it.i.i.i3889, align 8, !alias.scope !262 %call.i4.i.i.i.i3900 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3899) #26 store ptr %call.i4.i.i.i.i3900, ptr %m_it.i.i.i3889, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3896 @@ -23773,6 +23782,7 @@ invoke.cont8145: ; preds = %invoke.cont8139 _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE4cendEv.exit.thread.i3940: ; preds = %invoke.cont8145 %2310 = load ptr, ptr %m_value.i.i3910, align 8, !noalias !268 %add.ptr.i.i.i.i.i3942 = getelementptr inbounds nuw i8, ptr %2310, i64 8 + store ptr %add.ptr.i.i.i.i.i3942, ptr %m_it.i.i.i3932, align 8, !alias.scope !268 %call.i4.i.i.i.i3943 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3942) #26 store ptr %call.i4.i.i.i.i3943, ptr %m_it.i.i.i3932, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3939 @@ -23987,6 +23997,7 @@ invoke.cont8187: ; preds = %invoke.cont8181 _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE3endEv.exit.thread.i3987: ; preds = %invoke.cont8187 %2334 = load ptr, ptr %m_value.i.i3957, align 8, !noalias !274 %add.ptr.i.i.i.i.i3989 = getelementptr inbounds nuw i8, ptr %2334, i64 8 + store ptr %add.ptr.i.i.i.i.i3989, ptr %m_it.i.i.i3979, align 8, !alias.scope !274 %call.i4.i.i.i.i3990 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3989) #26 store ptr %call.i4.i.i.i.i3990, ptr %m_it.i.i.i3979, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i3986 @@ -24120,6 +24131,7 @@ invoke.cont8217: ; preds = %invoke.cont8211 _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE4cendEv.exit.thread.i4030: ; preds = %invoke.cont8217 %2350 = load ptr, ptr %m_value.i.i4000, align 8, !noalias !280 %add.ptr.i.i.i.i.i4032 = getelementptr inbounds nuw i8, ptr %2350, i64 8 + store ptr %add.ptr.i.i.i.i.i4032, ptr %m_it.i.i.i4022, align 8, !alias.scope !280 %call.i4.i.i.i.i4033 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i4032) #26 store ptr %call.i4.i.i.i.i4033, ptr %m_it.i.i.i4022, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i4029 @@ -24334,6 +24346,7 @@ invoke.cont8259: ; preds = %invoke.cont8253 _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE3endEv.exit.thread.i4076: ; preds = %invoke.cont8259 %2374 = load ptr, ptr %m_value.i.i4047, align 8, !noalias !286 %add.ptr.i.i.i.i.i4078 = getelementptr inbounds nuw i8, ptr %2374, i64 8 + store ptr %add.ptr.i.i.i.i.i4078, ptr %m_it.i.i.i4068, align 8, !alias.scope !286 %call.i4.i.i.i.i4079 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i4078) #26 store ptr %call.i4.i.i.i.i4079, ptr %m_it.i.i.i4068, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i4075 @@ -24467,6 +24480,7 @@ invoke.cont8289: ; preds = %invoke.cont8283 _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES3_IhSaIhEEvE4cendEv.exit.thread.i4118: ; preds = %invoke.cont8289 %2390 = load ptr, ptr %m_value.i.i4089, align 8, !noalias !292 %add.ptr.i.i.i.i.i4120 = getelementptr inbounds nuw i8, ptr %2390, i64 8 + store ptr %add.ptr.i.i.i.i.i4120, ptr %m_it.i.i.i4110, align 8, !alias.scope !292 %call.i4.i.i.i.i4121 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i4120) #26 store ptr %call.i4.i.i.i.i4121, ptr %m_it.i.i.i4110, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i4117 diff --git a/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll b/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll index 239101f3009..72b51107b10 100644 --- a/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll +++ b/bench/nlohmann_json/optimized/unit-element_access2.cpp.ll @@ -21234,6 +21234,7 @@ _ZN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_str %m_value.i.i.i3347 = getelementptr inbounds nuw i8, ptr %j, i64 8 %1647 = load ptr, ptr %m_value.i.i.i3347, align 8, !noalias !198 %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %1647, i64 8 + store ptr %add.ptr.i.i.i.i.i, ptr %m_it.i.i.i3344, align 8, !alias.scope !198 %call.i4.i.i.i.i = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i) #28 store ptr %call.i4.i.i.i.i, ptr %m_it.i.i.i3344, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implINS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i @@ -21309,6 +21310,7 @@ _ZNK8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_st %m_value.i.i.i3366 = getelementptr inbounds nuw i8, ptr %j_const, i64 8 %1656 = load ptr, ptr %m_value.i.i.i3366, align 8, !noalias !201 %add.ptr.i.i.i.i.i3367 = getelementptr inbounds nuw i8, ptr %1656, i64 8 + store ptr %add.ptr.i.i.i.i.i3367, ptr %m_it.i.i.i3360, align 8, !alias.scope !201 %call.i4.i.i.i.i3368 = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i.i.i.i.i3367) #28 store ptr %call.i4.i.i.i.i3368, ptr %m_it.i.i.i3360, align 8 br label %_ZN8nlohmann16json_abi_v3_11_36detail9iter_implIKNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEvEEEmmEv.exit.i diff --git a/bench/node/optimized/libnode.node_builtins.ll b/bench/node/optimized/libnode.node_builtins.ll index 42c03146fec..5e6e971d695 100644 --- a/bench/node/optimized/libnode.node_builtins.ll +++ b/bench/node/optimized/libnode.node_builtins.ll @@ -2958,13 +2958,13 @@ for.body: ; preds = %entry, %for.inc %2 = extractvalue { i64, ptr } %call10, 0 %3 = load i64, ptr %__begin2.sroa.0.015, align 8 %.sroa.speculated.i.i = call i64 @llvm.umin.i64(i64 %3, i64 %call9) + %_M_str.i.i = getelementptr inbounds nuw i8, ptr %__begin2.sroa.0.015, i64 8 %.sroa.speculated.i1.i = call i64 @llvm.umin.i64(i64 %2, i64 %.sroa.speculated.i.i) %cmp.i2.i.i = icmp eq i64 %.sroa.speculated.i1.i, 0 br i1 %cmp.i2.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE7compareEmmS2_.exit, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %for.body %4 = extractvalue { i64, ptr } %call10, 1 - %_M_str.i.i = getelementptr inbounds nuw i8, ptr %__begin2.sroa.0.015, i64 8 %5 = load ptr, ptr %_M_str.i.i, align 8 %bcmp = call i32 @bcmp(ptr %5, ptr %4, i64 %.sroa.speculated.i1.i) %cmp.i.i7 = icmp eq i32 %bcmp, 0 @@ -2979,11 +2979,10 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE7compareEmmS2_.exit: ; preds = %fo if.end: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE7compareEmmS2_.exit %call13 = call noundef ptr @_ZN2v87Context10GetIsolateEv(ptr noundef nonnull align 1 dereferenceable(1) %context.coerce) #23 call void @_ZN2v88TryCatchC1EPNS_7IsolateE(ptr noundef nonnull align 8 dereferenceable(41) %bootstrapCatch, ptr noundef %call13) #23 - %_M_str.i = getelementptr inbounds nuw i8, ptr %__begin2.sroa.0.015, i64 8 - %6 = load ptr, ptr %_M_str.i, align 8 + %6 = load ptr, ptr %_M_str.i.i, align 8 %call19 = call ptr @_ZN4node8builtins13BuiltinLoader16LookupAndCompileEN2v85LocalINS2_7ContextEEEPKcPNS_5RealmE(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr nonnull %context.coerce, ptr noundef %6, ptr noundef null) %call24 = call noundef zeroext i1 @_ZNK2v88TryCatch9HasCaughtEv(ptr noundef nonnull align 8 dereferenceable(41) %bootstrapCatch) #23 - %7 = load ptr, ptr %_M_str.i, align 8 + %7 = load ptr, ptr %_M_str.i.i, align 8 br i1 %call24, label %if.then25, label %if.else if.then25: ; preds = %if.end @@ -3290,7 +3289,7 @@ for.end: ; preds = %for.body, %_ZNSt13u } ; Function Attrs: mustprogress nounwind uwtable -define dso_local void @_ZN4node8builtins13BuiltinLoader20GetBuiltinCategoriesEN2v85LocalINS2_4NameEEERKNS2_20PropertyCallbackInfoINS2_5ValueEEE(ptr nocapture readnone %property.coerce, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %info) #3 align 2 { +define dso_local void @_ZN4node8builtins13BuiltinLoader20GetBuiltinCategoriesEN2v85LocalINS2_4NameEEERKNS2_20PropertyCallbackInfoINS2_5ValueEEE(ptr nocapture readnone %property.coerce, ptr noundef nonnull align 8 dereferenceable(8) %info) #3 align 2 { entry: %builtin_categories = alloca %"struct.node::builtins::BuiltinLoader::BuiltinCategories", align 8 %ref.tmp = alloca %"class.std::__cxx11::basic_string", align 8 @@ -3403,16 +3402,16 @@ if.then.i.i21: ; preds = %if.end72 _ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22: ; preds = %if.end72, %if.then.i.i21 %call95 = call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call8, ptr %call2.i, ptr %call.i19, ptr nonnull %call64) #23 %tobool.i = trunc i16 %call95 to i1 - br i1 %tobool.i, label %if.else.i, label %cleanup + br i1 %tobool.i, label %if.end98, label %cleanup -if.else.i: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22 +if.end98: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22 %16 = load ptr, ptr %info, align 8 %arrayidx.i = getelementptr inbounds nuw i8, ptr %16, i64 32 %17 = load i64, ptr %call8, align 8 store i64 %17, ptr %arrayidx.i, align 8 br label %cleanup -cleanup: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22, %if.end57, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit, %if.end, %if.else.i +cleanup: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22, %if.end57, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit, %if.end, %if.end98 %_M_parent.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %builtin_categories, i64 64 %18 = load ptr, ptr %_M_parent.i.i.i.i.i, align 8 call void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %cannot_be_required20, ptr noundef %18) @@ -3510,7 +3509,7 @@ cleanup: ; preds = %_ZN4node9ToV8ValueE } ; Function Attrs: mustprogress nounwind uwtable -define dso_local void @_ZN4node8builtins13BuiltinLoader13GetCacheUsageERKN2v820FunctionCallbackInfoINS2_5ValueEEE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(20) %args) #3 align 2 { +define dso_local void @_ZN4node8builtins13BuiltinLoader13GetCacheUsageERKN2v820FunctionCallbackInfoINS2_5ValueEEE(ptr noundef nonnull align 8 dereferenceable(20) %args) #3 align 2 { entry: %0 = load ptr, ptr %args, align 8 %arrayidx.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -3600,16 +3599,16 @@ if.then.i.i21: ; preds = %if.end97 _ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22: ; preds = %if.end97, %if.then.i.i21 %call120 = tail call i16 @_ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_(ptr noundef nonnull align 1 dereferenceable(1) %call5, ptr %call2, ptr %call.i19, ptr nonnull %call89) #23 %tobool.i = trunc i16 %call120 to i1 - br i1 %tobool.i, label %if.else.i, label %return + br i1 %tobool.i, label %if.end123, label %return -if.else.i: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22 +if.end123: ; preds = %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22 %14 = load ptr, ptr %args, align 8 %arrayidx.i = getelementptr inbounds nuw i8, ptr %14, i64 24 %15 = load i64, ptr %call5, align 8 store i64 %15, ptr %arrayidx.i, align 8 br label %return -return: ; preds = %if.else.i, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22, %if.end83, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit18, %if.end43, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit, %entry +return: ; preds = %if.end123, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit22, %if.end83, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit18, %if.end43, %_ZN4node13OneByteStringEPN2v87IsolateEPKci.exit, %entry ret void } @@ -4102,7 +4101,7 @@ _ZN2v811ReturnValueINS_5ValueEE3SetINS_6StringEEEvNS_5LocalIT_EE.exit: ; preds = } ; Function Attrs: mustprogress nounwind uwtable -define dso_local void @_ZN4node8builtins13BuiltinLoader15CompileFunctionERKN2v820FunctionCallbackInfoINS2_5ValueEEE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(20) %args) #3 align 2 { +define dso_local void @_ZN4node8builtins13BuiltinLoader15CompileFunctionERKN2v820FunctionCallbackInfoINS2_5ValueEEE(ptr noundef nonnull align 8 dereferenceable(20) %args) #3 align 2 { entry: %id_v = alloca %"class.node::Utf8Value", align 8 %0 = load ptr, ptr %args, align 8 @@ -4213,16 +4212,16 @@ _ZNK2v820FunctionCallbackInfoINS_5ValueEEixEi.exit: ; preds = %if.end.i, %if.the %call31 = call ptr %31(ptr noundef nonnull align 8 dereferenceable(872) %retval.0.i.i) #23 %call38 = call ptr @_ZN4node8builtins13BuiltinLoader16LookupAndCompileEN2v85LocalINS2_7ContextEEEPKcPNS_5RealmE(ptr noundef nonnull align 8 dereferenceable(48) %builtin_loader_.i, ptr %call31, ptr noundef %29, ptr noundef nonnull %retval.0.i.i) %cmp.i.i.not = icmp eq ptr %call38, null - br i1 %cmp.i.i.not, label %if.end52, label %if.else.i + br i1 %cmp.i.i.not, label %if.end52, label %if.then44 -if.else.i: ; preds = %_ZNK2v820FunctionCallbackInfoINS_5ValueEEixEi.exit +if.then44: ; preds = %_ZNK2v820FunctionCallbackInfoINS_5ValueEEixEi.exit %32 = load ptr, ptr %args, align 8 %arrayidx.i = getelementptr inbounds nuw i8, ptr %32, i64 24 %33 = load i64, ptr %call38, align 8 store i64 %33, ptr %arrayidx.i, align 8 br label %if.end52 -if.end52: ; preds = %if.else.i, %_ZNK2v820FunctionCallbackInfoINS_5ValueEEixEi.exit +if.end52: ; preds = %if.then44, %_ZNK2v820FunctionCallbackInfoINS_5ValueEEixEi.exit %34 = load ptr, ptr %buf_.i, align 8 %cmp.i.i.i.i17 = icmp ne ptr %34, null %buf_st_.i.i.i = getelementptr inbounds nuw i8, ptr %id_v, i64 24 diff --git a/bench/nori/optimized/imagepanel.cpp.ll b/bench/nori/optimized/imagepanel.cpp.ll index db36ff2e5d8..ca7d1bb6d87 100644 --- a/bench/nori/optimized/imagepanel.cpp.ll +++ b/bench/nori/optimized/imagepanel.cpp.ll @@ -121,17 +121,18 @@ _ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge: %33 = fptosi float %32 to i32 %.sroa.speculated.i = tail call i32 @llvm.smax.i32(i32 %33, i32 0) %34 = add nuw nsw i32 %.sroa.speculated.i, 1 - %35 = icmp sgt i32 %26, -1 - br i1 %35, label %36, label %53 - -36: ; preds = %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge - %37 = getelementptr inbounds nuw i8, ptr %0, i64 152 - %38 = load ptr, ptr %37, align 8 - %39 = ptrtoint ptr %38 to i64 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %41 = load ptr, ptr %40, align 8 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 152 + %37 = load ptr, ptr %36, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %35, i64 0) ] + %38 = icmp sgt i32 %26, -1 + br i1 %38, label %39, label %53 + +39: ; preds = %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge + %40 = ptrtoint ptr %37 to i64 + %41 = load ptr, ptr %35, align 8 %42 = ptrtoint ptr %41 to i64 - %43 = sub i64 %39, %42 + %43 = sub i64 %40, %42 %44 = sdiv exact i64 %43, 40 %45 = trunc i64 %44 to i32 %46 = add i32 %.sroa.speculated.i, %45 @@ -147,8 +148,8 @@ _ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge: %spec.select = select i1 %or.cond61.not, i1 true, i1 %52 br label %53 -53: ; preds = %36, %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge - %.not78 = phi i1 [ true, %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge ], [ %spec.select, %36 ] +53: ; preds = %39, %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge + %.not78 = phi i1 [ true, %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge ], [ %spec.select, %39 ] %54 = tail call noundef float @llvm.floor.f32(float %24) %55 = fsub float %24, %54 %56 = sitofp i32 %19 to float @@ -467,7 +468,7 @@ define linkonce_odr hidden void @_ZN7nanogui10ImagePanelD2Ev(ptr noundef nonnull %8 = landingpad { ptr, i32 } catch ptr null %9 = extractvalue { ptr, i32 } %8, 0 - tail call void @__clang_call_terminate(ptr %9) #15 + tail call void @__clang_call_terminate(ptr %9) #16 unreachable _ZNSt8functionIFviEED2Ev.exit: ; preds = %1, %4 @@ -481,7 +482,7 @@ _ZNSt8functionIFviEED2Ev.exit: ; preds = %1, %4 .lr.ph.i.i.i.i: ; preds = %_ZNSt8functionIFviEED2Ev.exit, %.lr.ph.i.i.i.i %.05.i.i.i.i = phi ptr [ %15, %.lr.ph.i.i.i.i ], [ %11, %_ZNSt8functionIFviEED2Ev.exit ] %14 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #16 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #17 %15 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 40 %.not.i.i.i.i = icmp eq ptr %15, %13 br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i, !llvm.loop !7 @@ -496,11 +497,11 @@ _ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_ br i1 %.not.i.i.i, label %_ZNSt6vectorISt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS7_EED2Ev.exit, label %17 17: ; preds = %_ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_EvT_S9_RSaIT0_E.exit.i - tail call void @_ZdlPv(ptr noundef nonnull %16) #17 + tail call void @_ZdlPv(ptr noundef nonnull %16) #18 br label %_ZNSt6vectorISt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS7_EED2Ev.exit _ZNSt6vectorISt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESaIS7_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_EvT_S9_RSaIT0_E.exit.i, %17 - tail call void @_ZN7nanogui6WidgetD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %0) #16 + tail call void @_ZN7nanogui6WidgetD2Ev(ptr noundef nonnull align 8 dereferenceable(140) %0) #17 ret void } @@ -521,7 +522,7 @@ define linkonce_odr hidden void @_ZN7nanogui10ImagePanelD0Ev(ptr noundef nonnull %8 = landingpad { ptr, i32 } catch ptr null %9 = extractvalue { ptr, i32 } %8, 0 - tail call void @__clang_call_terminate(ptr %9) #15 + tail call void @__clang_call_terminate(ptr %9) #16 unreachable _ZNSt8functionIFviEED2Ev.exit.i: ; preds = %4, %1 @@ -535,7 +536,7 @@ _ZNSt8functionIFviEED2Ev.exit.i: ; preds = %4, %1 .lr.ph.i.i.i.i.i: ; preds = %_ZNSt8functionIFviEED2Ev.exit.i, %.lr.ph.i.i.i.i.i %.05.i.i.i.i.i = phi ptr [ %15, %.lr.ph.i.i.i.i.i ], [ %11, %_ZNSt8functionIFviEED2Ev.exit.i ] %14 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i, i64 8 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #16 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #17 %15 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i, i64 40 %.not.i.i.i.i.i = icmp eq ptr %15, %13 br i1 %.not.i.i.i.i.i, label %_ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i.i, label %.lr.ph.i.i.i.i.i, !llvm.loop !7 @@ -550,12 +551,12 @@ _ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_ br i1 %.not.i.i.i.i, label %_ZN7nanogui10ImagePanelD2Ev.exit, label %17 17: ; preds = %_ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_EvT_S9_RSaIT0_E.exit.i.i - tail call void @_ZdlPv(ptr noundef nonnull %16) #17 + tail call void @_ZdlPv(ptr noundef nonnull %16) #18 br label %_ZN7nanogui10ImagePanelD2Ev.exit _ZN7nanogui10ImagePanelD2Ev.exit: ; preds = %_ZSt8_DestroyIPSt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEES7_EvT_S9_RSaIT0_E.exit.i.i, %17 - tail call void @_ZN7nanogui6WidgetD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %0) #16 - tail call void @_ZdlPv(ptr noundef nonnull %0) #17 + tail call void @_ZN7nanogui6WidgetD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %0) #17 + tail call void @_ZdlPv(ptr noundef nonnull %0) #18 ret void } @@ -587,8 +588,8 @@ declare i32 @__gxx_personality_v0(...) ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #9 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #16 - tail call void @_ZSt9terminatev() #15 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #17 + tail call void @_ZSt9terminatev() #16 unreachable } @@ -615,6 +616,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #15 + attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="nehalem" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="nehalem" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="nehalem" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } @@ -630,9 +634,10 @@ attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"=" attributes #12 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #14 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { noreturn nounwind } -attributes #16 = { nounwind } -attributes #17 = { builtin nounwind } +attributes #15 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #16 = { noreturn nounwind } +attributes #17 = { nounwind } +attributes #18 = { builtin nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/nori/optimized/tabwidget.cpp.ll b/bench/nori/optimized/tabwidget.cpp.ll index bd7787031b4..e21398dbeca 100644 --- a/bench/nori/optimized/tabwidget.cpp.ll +++ b/bench/nori/optimized/tabwidget.cpp.ll @@ -1752,7 +1752,9 @@ _ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge: ; preds = %_ZNK7nanogui13Tab 94: ; preds = %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge, %_ZNK7nanogui13TabWidgetBase15tab_at_positionERKNS_5ArrayIiLm2EEEb.exit %.0 = phi i8 [ 1, %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge ], [ 0, %_ZNK7nanogui13TabWidgetBase15tab_at_positionERKNS_5ArrayIiLm2EEEb.exit ] %95 = getelementptr inbounds nuw i8, ptr %0, i64 256 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %95, i64 32) ] %96 = getelementptr inbounds nuw i8, ptr %0, i64 268 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %96, i64 32) ] %97 = getelementptr inbounds nuw i8, ptr %0, i64 272 %98 = getelementptr inbounds nuw i8, ptr %0, i64 368 %99 = getelementptr inbounds nuw i8, ptr %0, i64 384 @@ -1763,11 +1765,11 @@ _ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge: ; preds = %_ZNK7nanogui13Tab br i1 %or.cond, label %102, label %170 102: ; preds = %94 - %103 = load i32, ptr %95, align 8 - %.not45 = icmp eq i32 %103, -1 - %104 = load i32, ptr %96, align 4 + %103 = load i32, ptr %96, align 4 + %104 = load i32, ptr %95, align 8 + %.not45 = icmp eq i32 %104, -1 %105 = load i32, ptr %97, align 8 - %106 = icmp eq i32 %104, %105 + %106 = icmp eq i32 %103, %105 %.not145 = select i1 %.not45, i1 true, i1 %106 %107 = icmp ne i32 %.sroa.0111.0.extract.trunc, -1 %or.cond3 = and i1 %3, %107 diff --git a/bench/ocio/optimized/GradingBSplineCurve.cpp.ll b/bench/ocio/optimized/GradingBSplineCurve.cpp.ll index 2c4e49763e6..092ad1b9220 100644 --- a/bench/ocio/optimized/GradingBSplineCurve.cpp.ll +++ b/bench/ocio/optimized/GradingBSplineCurve.cpp.ll @@ -5438,7 +5438,10 @@ if.end: ; preds = %entry %add.ptr.i63 = getelementptr inbounds i32, ptr %3, i64 %conv4 %5 = load i32, ptr %add.ptr.i63, align 4 %m_knotsArray = getelementptr inbounds nuw i8, ptr %this, i64 80 + %conv14 = sext i32 %5 to i64 %6 = load ptr, ptr %m_knotsArray, align 8 + %add.ptr.i64 = getelementptr inbounds float, ptr %6, i64 %conv14 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr.i64, i64 32) ] %add17 = add nsw i32 %5, %4 %7 = sext i32 %add17 to i64 %8 = getelementptr float, ptr %6, i64 %7 @@ -5458,30 +5461,29 @@ if.end: ; preds = %entry %14 = load float, ptr %add.ptr.i67, align 4 %add.ptr.i68 = getelementptr i8, ptr %add.ptr.i66, i64 -4 %15 = load float, ptr %add.ptr.i68, align 4 + %mul36 = mul nsw i32 %div, 3 + %add37 = add nsw i32 %2, %mul36 + %16 = sext i32 %add37 to i64 + %17 = getelementptr float, ptr %10, i64 %16 + %add.ptr.i69 = getelementptr i8, ptr %17, i64 -4 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr.i69, i64 32) ] %cmp49 = fcmp ugt float %y, %11 br i1 %cmp49, label %if.else, label %if.then50 if.then50: ; preds = %if.end - %conv14 = sext i32 %5 to i64 - %add.ptr.i64 = getelementptr inbounds float, ptr %6, i64 %conv14 - %16 = load float, ptr %add.ptr.i64, align 4 - %17 = load float, ptr %13, align 4 - %18 = tail call noundef float @llvm.fabs.f32(float %17) - %cmp63 = fcmp olt float %18, 0x3EE4F8B580000000 + %18 = load float, ptr %add.ptr.i64, align 4 + %19 = load float, ptr %13, align 4 + %20 = tail call noundef float @llvm.fabs.f32(float %19) + %cmp63 = fcmp olt float %20, 0x3EE4F8B580000000 %sub64 = fsub float %y, %11 - %div65 = fdiv float %sub64, %17 - %add66 = fadd float %16, %div65 - %cond = select i1 %cmp63, float %16, float %add66 + %div65 = fdiv float %sub64, %19 + %add66 = fadd float %18, %div65 + %cond = select i1 %cmp63, float %18, float %add66 br label %return if.else: ; preds = %if.end - %add.ptr.i70 = getelementptr i8, ptr %8, i64 -8 - %mul36 = mul nsw i32 %div, 3 - %add37 = add nsw i32 %2, %mul36 - %19 = sext i32 %add37 to i64 - %20 = getelementptr float, ptr %10, i64 %19 - %add.ptr.i69 = getelementptr i8, ptr %20, i64 -4 %21 = load float, ptr %add.ptr.i69, align 4 + %add.ptr.i70 = getelementptr i8, ptr %8, i64 -8 %22 = load float, ptr %add.ptr.i70, align 4 %sub46 = fsub float %9, %22 %23 = tail call float @llvm.fmuladd.f32(float %14, float %sub46, float %15) diff --git a/bench/ocio/optimized/XMLReaderHelper.cpp.ll b/bench/ocio/optimized/XMLReaderHelper.cpp.ll index cac3d956e45..91ae269c363 100644 --- a/bench/ocio/optimized/XMLReaderHelper.cpp.ll +++ b/bench/ocio/optimized/XMLReaderHelper.cpp.ll @@ -2472,7 +2472,6 @@ while.body.lr.ph: ; preds = %invoke.cont br label %while.body while.body: ; preds = %while.body.lr.ph, %_ZNSt6vectorIdSaIdEE9push_backERKd.exit - %1 = phi ptr [ null, %while.body.lr.ph ], [ %9, %_ZNSt6vectorIdSaIdEE9push_backERKd.exit ] %pos.026 = phi i64 [ %retval.0.i, %while.body.lr.ph ], [ %pos.1, %_ZNSt6vectorIdSaIdEE9push_backERKd.exit ] %call5.i.i.i.i.i132325 = phi ptr [ null, %while.body.lr.ph ], [ %call5.i.i.i.i.i1322, %_ZNSt6vectorIdSaIdEE9push_backERKd.exit ] store double 0.000000e+00, ptr %num, align 8 @@ -2486,8 +2485,8 @@ if.end.i.i: ; preds = %while.body while.cond.i.i: ; preds = %while.body.i.i, %if.end.i.i %pos.addr.0.i.i = phi i64 [ %pos.026, %if.end.i.i ], [ %inc.i.i, %while.body.i.i ] %ptr.0.i.i = phi ptr [ %add.ptr.i.i, %if.end.i.i ], [ %incdec.ptr.i.i, %while.body.i.i ] - %2 = load i8, ptr %ptr.0.i.i, align 1 - switch i8 %2, label %_ZN19OpenColorIO_v2_4dev18FindNextTokenStartEPKcmm.exit.i [ + %1 = load i8, ptr %ptr.0.i.i, align 1 + switch i8 %1, label %_ZN19OpenColorIO_v2_4dev18FindNextTokenStartEPKcmm.exit.i [ i8 32, label %while.body.i.i i8 13, label %while.body.i.i i8 11, label %while.body.i.i @@ -2518,8 +2517,8 @@ if.end.i19.i: ; preds = %if.then.i while.cond.i21.i: ; preds = %while.body.i24.i, %if.end.i19.i %pos.addr.0.i22.i = phi i64 [ %pos.addr.0.i.i, %if.end.i19.i ], [ %inc.i26.i, %while.body.i24.i ] %ptr.0.i23.i = phi ptr [ %add.ptr.i20.i, %if.end.i19.i ], [ %incdec.ptr.i25.i, %while.body.i24.i ] - %3 = load i8, ptr %ptr.0.i23.i, align 1 - switch i8 %3, label %while.body.i24.i [ + %2 = load i8, ptr %ptr.0.i23.i, align 1 + switch i8 %2, label %while.body.i24.i [ i8 32, label %_ZN19OpenColorIO_v2_4dev9FindDelimEPKcmm.exit.i i8 13, label %_ZN19OpenColorIO_v2_4dev9FindDelimEPKcmm.exit.i i8 11, label %_ZN19OpenColorIO_v2_4dev9FindDelimEPKcmm.exit.i @@ -2554,8 +2553,8 @@ if.end.i30.i: ; preds = %.noexc5 while.cond.i32.i: ; preds = %while.body.i35.i, %if.end.i30.i %pos.addr.0.i33.i = phi i64 [ %pos.addr.0.i22.i, %if.end.i30.i ], [ %inc.i37.i, %while.body.i35.i ] %ptr.0.i34.i = phi ptr [ %add.ptr.i31.i, %if.end.i30.i ], [ %incdec.ptr.i36.i, %while.body.i35.i ] - %4 = load i8, ptr %ptr.0.i34.i, align 1 - switch i8 %4, label %invoke.cont1 [ + %3 = load i8, ptr %ptr.0.i34.i, align 1 + switch i8 %3, label %invoke.cont1 [ i8 32, label %while.body.i35.i i8 13, label %while.body.i35.i i8 11, label %while.body.i35.i @@ -2573,19 +2572,20 @@ while.body.i35.i: ; preds = %while.cond.i32.i, % invoke.cont1: ; preds = %while.body.i.i, %while.body.i35.i, %while.cond.i32.i, %.noexc5, %_ZN19OpenColorIO_v2_4dev18FindNextTokenStartEPKcmm.exit.i, %_ZN19OpenColorIO_v2_4dev9FindDelimEPKcmm.exit.thread.i, %while.body %pos.1 = phi i64 [ %len, %_ZN19OpenColorIO_v2_4dev18FindNextTokenStartEPKcmm.exit.i ], [ %len, %.noexc5 ], [ %len, %while.body ], [ %len, %_ZN19OpenColorIO_v2_4dev9FindDelimEPKcmm.exit.thread.i ], [ %pos.addr.0.i33.i, %while.cond.i32.i ], [ %len, %while.body.i35.i ], [ %len, %while.body.i.i ] + %4 = load ptr, ptr %_M_finish.i, align 8 %5 = load ptr, ptr %_M_end_of_storage.i, align 8 - %cmp.not.i6 = icmp eq ptr %1, %5 + %cmp.not.i6 = icmp eq ptr %4, %5 br i1 %cmp.not.i6, label %if.else.i, label %if.then.i7 if.then.i7: ; preds = %invoke.cont1 %6 = load double, ptr %num, align 8 - store double %6, ptr %1, align 8 - %incdec.ptr.i8 = getelementptr inbounds nuw i8, ptr %1, i64 8 + store double %6, ptr %4, align 8 + %incdec.ptr.i8 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %incdec.ptr.i8, ptr %_M_finish.i, align 8 br label %_ZNSt6vectorIdSaIdEE9push_backERKd.exit if.else.i: ; preds = %invoke.cont1 - %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %1 to i64 + %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %4 to i64 %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %call5.i.i.i.i.i132325 to i64 %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i %cmp.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i, 9223372036854775800 @@ -2639,7 +2639,6 @@ _ZNSt6vectorIdSaIdEE17_M_realloc_insertIJRKdEEEvN9__gnu_cxx17__normal_iteratorIP br label %_ZNSt6vectorIdSaIdEE9push_backERKd.exit _ZNSt6vectorIdSaIdEE9push_backERKd.exit: ; preds = %if.then.i7, %_ZNSt6vectorIdSaIdEE17_M_realloc_insertIJRKdEEEvN9__gnu_cxx17__normal_iteratorIPdS1_EEDpOT_.exit.i - %9 = phi ptr [ %incdec.ptr.i8, %if.then.i7 ], [ %incdec.ptr.i.i11, %_ZNSt6vectorIdSaIdEE17_M_realloc_insertIJRKdEEEvN9__gnu_cxx17__normal_iteratorIPdS1_EEDpOT_.exit.i ] %call5.i.i.i.i.i1322 = phi ptr [ %call5.i.i.i.i.i132325, %if.then.i7 ], [ %call5.i.i.i.i.i13, %_ZNSt6vectorIdSaIdEE17_M_realloc_insertIJRKdEEEvN9__gnu_cxx17__normal_iteratorIPdS1_EEDpOT_.exit.i ] %cmp.not = icmp eq i64 %pos.1, %len br i1 %cmp.not, label %nrvo.skipdtor, label %while.body @@ -2656,12 +2655,12 @@ lpad.loopexit.split-lp: ; preds = %if.then.i.i.i lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit18, %lpad.loopexit ], [ %lpad.loopexit.split-lp19, %lpad.loopexit.split-lp ] - %10 = load ptr, ptr %agg.result, align 8 - %tobool.not.i.i.i14 = icmp eq ptr %10, null + %9 = load ptr, ptr %agg.result, align 8 + %tobool.not.i.i.i14 = icmp eq ptr %9, null br i1 %tobool.not.i.i.i14, label %_ZNSt6vectorIdSaIdEED2Ev.exit, label %if.then.i.i.i15 if.then.i.i.i15: ; preds = %lpad - call void @_ZdlPv(ptr noundef nonnull %10) #32 + call void @_ZdlPv(ptr noundef nonnull %9) #32 br label %_ZNSt6vectorIdSaIdEED2Ev.exit _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %lpad, %if.then.i.i.i15 diff --git a/bench/openexr/optimized/ImfDwaCompressor.cpp.ll b/bench/openexr/optimized/ImfDwaCompressor.cpp.ll index 6231b7021ac..ecde78ab844 100644 --- a/bench/openexr/optimized/ImfDwaCompressor.cpp.ll +++ b/bench/openexr/optimized/ImfDwaCompressor.cpp.ll @@ -1586,16 +1586,17 @@ for.body347.lr.ph: ; preds = %for.end338 for.body347: ; preds = %for.body347.lr.ph, %for.inc425 %indvars.iv492 = phi i64 [ %28, %for.body347.lr.ph ], [ %indvars.iv.next493, %for.inc425 ] + %223 = load ptr, ptr %_rowPtrs, align 8 + %add.ptr.i268 = getelementptr inbounds %"class.std::vector.24", ptr %223, i64 %comp318.0428 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr.i268, i64 0) ] br i1 %cmp443410, label %for.body361.preheader, label %for.inc425 for.body361.preheader: ; preds = %for.body347 + %224 = load ptr, ptr %add.ptr.i268, align 8 + %add.ptr.i269 = getelementptr inbounds nuw ptr, ptr %224, i64 %indvars.iv492 %and354 = shl i64 %indvars.iv492, 3 %mul355 = and i64 %and354, 56 %arrayidx357 = getelementptr inbounds nuw i16, ptr %222, i64 %mul355 - %223 = load ptr, ptr %_rowPtrs, align 8 - %add.ptr.i268 = getelementptr inbounds %"class.std::vector.24", ptr %223, i64 %comp318.0428 - %224 = load ptr, ptr %add.ptr.i268, align 8 - %add.ptr.i269 = getelementptr inbounds nuw ptr, ptr %224, i64 %indvars.iv492 %225 = load ptr, ptr %add.ptr.i269, align 8 br label %for.body361 @@ -1676,11 +1677,12 @@ for.body509.lr.ph: ; preds = %if.end500 for.body509: ; preds = %for.body509.lr.ph, %for.inc537 %indvars.iv496 = phi i64 [ %28, %for.body509.lr.ph ], [ %indvars.iv.next497, %for.inc537 ] + %260 = load ptr, ptr %_rowPtrs, align 8 + %add.ptr.i272 = getelementptr inbounds %"class.std::vector.24", ptr %260, i64 %comp318.0428 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %add.ptr.i272, i64 0) ] br i1 %cmp527421, label %for.body528.preheader, label %for.inc537 for.body528.preheader: ; preds = %for.body509 - %260 = load ptr, ptr %_rowPtrs, align 8 - %add.ptr.i272 = getelementptr inbounds %"class.std::vector.24", ptr %260, i64 %comp318.0428 %261 = load ptr, ptr %add.ptr.i272, align 8 %add.ptr.i273 = getelementptr inbounds nuw ptr, ptr %261, i64 %indvars.iv496 %262 = load ptr, ptr %add.ptr.i273, align 8 @@ -3146,19 +3148,19 @@ _ZN9Imath_3_24halfC2Ef.exit277.us: ; preds = %if.end.i.i272.us, % %129 = load i16, ptr %arrayidx5.i.i287.us, align 2 %conv6.i.i288.us = zext i16 %129 to i32 %add.i.i289.us = add nuw nsw i32 %conv6.i.i288.us, %conv2.i.i284.us - %cmp11.not.i290.us = icmp eq i32 %add.i.i289.us, 0 - br i1 %cmp11.not.i290.us, label %invoke.cont259.us, label %for.body.preheader.i291.us + %cmp11.not.i291.us = icmp eq i32 %add.i.i289.us, 0 + br i1 %cmp11.not.i291.us, label %invoke.cont259.us, label %for.body.preheader.i292.us -for.body.preheader.i291.us: ; preds = %_ZN9Imath_3_24halfC2Ef.exit277.us - %arrayidx.i292.us = getelementptr inbounds nuw [65536 x i32], ptr @_ZN7Imf_3_2L17closestDataOffsetE, i64 0, i64 %idxprom.i.i.i278.us - %130 = load i32, ptr %arrayidx.i292.us, align 4 +for.body.preheader.i292.us: ; preds = %_ZN9Imath_3_24halfC2Ef.exit277.us + %arrayidx.i290.us = getelementptr inbounds nuw [65536 x i32], ptr @_ZN7Imf_3_2L17closestDataOffsetE, i64 0, i64 %idxprom.i.i.i278.us + %130 = load i32, ptr %arrayidx.i290.us, align 4 %idx.ext.i293.us = zext i32 %130 to i64 %add.ptr.i294.us = getelementptr inbounds nuw i16, ptr @_ZN7Imf_3_2L11closestDataE, i64 %idx.ext.i293.us br label %for.body.i295.us -for.body.i295.us: ; preds = %for.cond.i302.us, %for.body.preheader.i291.us - %targetNumSetBits.013.in.i296.us = phi i32 [ %targetNumSetBits.013.i303.us, %for.cond.i302.us ], [ %add.i.i289.us, %for.body.preheader.i291.us ] - %closest.012.i297.us = phi ptr [ %incdec.ptr.i304.us, %for.cond.i302.us ], [ %add.ptr.i294.us, %for.body.preheader.i291.us ] +for.body.i295.us: ; preds = %for.cond.i302.us, %for.body.preheader.i292.us + %targetNumSetBits.013.in.i296.us = phi i32 [ %targetNumSetBits.013.i303.us, %for.cond.i302.us ], [ %add.i.i289.us, %for.body.preheader.i292.us ] + %closest.012.i297.us = phi ptr [ %incdec.ptr.i304.us, %for.cond.i302.us ], [ %add.ptr.i294.us, %for.body.preheader.i292.us ] %131 = load i16, ptr %closest.012.i297.us, align 2 %idxprom.i.i4.i298.us = zext i16 %131 to i64 %arrayidx.i.i5.i299.us = getelementptr inbounds nuw %union.imath_half_uif, ptr %118, i64 %idxprom.i.i4.i298.us @@ -3571,7 +3573,7 @@ eh.resume: ; preds = %if.then.i.i.i343, % resume { ptr, i32 } %.pn } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(read, inaccessiblemem: write) uwtable define hidden i16 @_ZN7Imf_3_213DwaCompressor19LossyDctEncoderBase8quantizeEN9Imath_3_24halfEf(ptr nocapture noundef nonnull readnone align 8 dereferenceable(640) %this, i16 %src.coerce, float noundef %errorTolerance) local_unnamed_addr #15 align 2 personality ptr @__gxx_personality_v0 { entry: %0 = load ptr, ptr @imath_half_to_float_table, align 8 @@ -20058,7 +20060,7 @@ attributes #11 = { cold nofree noreturn } attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) } attributes #13 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #14 = { mustprogress nofree norecurse nosync nounwind memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #15 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #15 = { mustprogress nofree norecurse nosync nounwind memory(read, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #16 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #17 = { mustprogress nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #18 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openexr/optimized/ImfTiledOutputFile.cpp.ll b/bench/openexr/optimized/ImfTiledOutputFile.cpp.ll index e9b6492bf74..c11ae17a338 100644 --- a/bench/openexr/optimized/ImfTiledOutputFile.cpp.ll +++ b/bench/openexr/optimized/ImfTiledOutputFile.cpp.ll @@ -7654,13 +7654,17 @@ for.cond25.preheader: ; preds = %for.cond25.preheade %17 = getelementptr i8, ptr %16, i64 240 %slices.val2031 = load ptr, ptr %17, align 8 %cmp2836.not = icmp eq ptr %slices.val2031, %slices.val30 - br i1 %cmp2836.not, label %for.inc62, label %for.body29 + br i1 %cmp2836.not, label %for.inc62, label %for.body29.lr.ph -for.body29: ; preds = %for.cond25.preheader, %for.inc - %slices.val39 = phi ptr [ %slices.val, %for.inc ], [ %slices.val30, %for.cond25.preheader ] - %18 = phi ptr [ %43, %for.inc ], [ %16, %for.cond25.preheader ] - %conv38 = phi i64 [ %conv, %for.inc ], [ 0, %for.cond25.preheader ] - %i.037 = phi i32 [ %inc, %for.inc ], [ 0, %for.cond25.preheader ] +for.body29.lr.ph: ; preds = %for.cond25.preheader + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %tileRange, i64 32) ] + br label %for.body29 + +for.body29: ; preds = %for.body29.lr.ph, %for.inc + %slices.val39 = phi ptr [ %slices.val30, %for.body29.lr.ph ], [ %slices.val, %for.inc ] + %18 = phi ptr [ %16, %for.body29.lr.ph ], [ %43, %for.inc ] + %conv38 = phi i64 [ 0, %for.body29.lr.ph ], [ %conv, %for.inc ] + %i.037 = phi i32 [ 0, %for.body29.lr.ph ], [ %inc, %for.inc ] %add.ptr.i = getelementptr inbounds nuw %"struct.Imf_3_2::(anonymous namespace)::TOutSliceInfo", ptr %slices.val39, i64 %conv38 %zero = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 32 %19 = load i8, ptr %zero, align 8 @@ -7740,11 +7744,11 @@ invoke.cont112: ; preds = %if.then109 if.else: ; preds = %for.body29 %yTileCoords = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 40 - %32 = load i32, ptr %yTileCoords, align 8 - %33 = load i32, ptr %y14, align 4 - %mul38 = mul nsw i32 %33, %32 %xTileCoords = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 36 - %34 = load i32, ptr %xTileCoords, align 4 + %32 = load i32, ptr %yTileCoords, align 8 + %33 = load i32, ptr %xTileCoords, align 4 + %34 = load i32, ptr %y14, align 4 + %mul38 = mul nsw i32 %34, %32 %35 = load i32, ptr %tileRange, align 4 %base42 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 %36 = load ptr, ptr %base42, align 8 @@ -7755,7 +7759,7 @@ if.else: ; preds = %for.body29 %38 = load i64, ptr %yStride, align 8 %mul45 = mul i64 %38, %conv44 %add46 = add i64 %mul45, %37 - %mul18 = sub i32 1, %34 + %mul18 = sub i32 1, %33 %sub49 = mul i32 %35, %mul18 %conv50 = sext i32 %sub49 to i64 %xStride = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 16 diff --git a/bench/openexr/optimized/internal_huf.c.ll b/bench/openexr/optimized/internal_huf.c.ll index 566473dd93d..041052657cb 100644 --- a/bench/openexr/optimized/internal_huf.c.ll +++ b/bench/openexr/optimized/internal_huf.c.ll @@ -1569,16 +1569,15 @@ land.rhs.i.i.preheader: ; preds = %for.inc73.i.i, %for br label %land.rhs.i.i land.rhs.i.i: ; preds = %land.rhs.i.i.preheader, %while.body.i144.i - %minIdx.058.i.i = phi i32 [ %dec.i.i, %while.body.i144.i ], [ 14, %land.rhs.i.i.preheader ] - %idxprom79.i.i = zext nneg i32 %minIdx.058.i.i to i64 - %arrayidx80.i.i = getelementptr inbounds nuw [60 x i64], ptr %_ljBase.i.i, i64 0, i64 %idxprom79.i.i + %indvars.iv = phi i64 [ %indvars.iv.next, %while.body.i144.i ], [ 14, %land.rhs.i.i.preheader ] + %arrayidx80.i.i = getelementptr inbounds nuw [60 x i64], ptr %_ljBase.i.i, i64 0, i64 %indvars.iv %51 = load i64, ptr %arrayidx80.i.i, align 8 %cmp81.i.i = icmp eq i64 %51, -1 br i1 %cmp81.i.i, label %while.body.i144.i, label %if.then31 while.body.i144.i: ; preds = %land.rhs.i.i - %dec.i.i = add nsw i32 %minIdx.058.i.i, -1 - %cmp76.i.i = icmp ugt i32 %minIdx.058.i.i, 1 + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %cmp76.i.i = icmp ugt i64 %indvars.iv, 1 br i1 %cmp76.i.i, label %land.rhs.i.i, label %if.then31, !llvm.loop !30 fasthuf_initialize.exit.thread.sink.split: ; preds = %if.else65.i.i, %if.then221.i, %if.then90.i, %if.then63.i, %if.then45.i, %if.then.i @@ -1622,7 +1621,7 @@ if.else: ; preds = %if.end22 br i1 %cmp.not68.i, label %if.else.for.end.i_crit_edge, label %for.body.lr.ph.i if.else.for.end.i_crit_edge: ; preds = %if.else - %.pre88 = ptrtoint ptr %add.ptr17 to i64 + %.pre89 = ptrtoint ptr %add.ptr17 to i64 br label %for.end.i for.body.lr.ph.i: ; preds = %if.else @@ -1716,7 +1715,7 @@ if.else.i45: ; preds = %getBits.exit.i br i1 %cmp22.i, label %if.then24.i, label %if.else.i45.for.inc.i_crit_edge if.else.i45.for.inc.i_crit_edge: ; preds = %if.else.i45 - %.pre89 = add i32 %im.addr.072.i, 1 + %.pre90 = add i32 %im.addr.072.i, 1 br label %for.inc.i if.then24.i: ; preds = %if.else.i45 @@ -1737,7 +1736,7 @@ while.body38.i: ; preds = %if.then24.i, %while br i1 %tobool37.not.i, label %for.inc.i, label %while.body38.i, !llvm.loop !33 for.inc.i: ; preds = %while.body38.i, %while.body.i, %if.else.i45.for.inc.i_crit_edge - %inc46.i.pre-phi = phi i32 [ %.pre89, %if.else.i45.for.inc.i_crit_edge ], [ %inc.i, %while.body.i ], [ %inc39.i50, %while.body38.i ] + %inc46.i.pre-phi = phi i32 [ %.pre90, %if.else.i45.for.inc.i_crit_edge ], [ %inc.i, %while.body.i ], [ %inc39.i50, %while.body38.i ] %p.1.i = phi ptr [ %in.0.lcssa.i.i, %if.else.i45.for.inc.i_crit_edge ], [ %in.0.lcssa.i29.i, %while.body.i ], [ %in.0.lcssa.i.i, %while.body38.i ] %c.1.i = phi i64 [ %c.3.i, %if.else.i45.for.inc.i_crit_edge ], [ %c.5.i, %while.body.i ], [ %c.3.i, %while.body38.i ] %lc.1.i = phi i32 [ %sub.i.i41, %if.else.i45.for.inc.i_crit_edge ], [ %sub.i30.i, %while.body.i ], [ %sub.i.i41, %while.body38.i ] @@ -1745,7 +1744,7 @@ for.inc.i: ; preds = %while.body38.i, %wh br i1 %cmp.not.i, label %for.end.i, label %for.body.i, !llvm.loop !34 for.end.i: ; preds = %for.inc.i, %if.else.for.end.i_crit_edge - %.pre-phi = phi i64 [ %.pre88, %if.else.for.end.i_crit_edge ], [ %54, %for.inc.i ] + %.pre-phi = phi i64 [ %.pre89, %if.else.for.end.i_crit_edge ], [ %54, %for.inc.i ] %p.0.lcssa.i = phi ptr [ %add.ptr17, %if.else.for.end.i_crit_edge ], [ %p.1.i, %for.inc.i ] %sub47.neg.i = add i64 %sub41, %.pre-phi call void @llvm.lifetime.start.p0(i64 472, ptr nonnull %n.i.i) @@ -1862,7 +1861,7 @@ return: ; preds = %for.inc.i64, %fasth } ; Function Attrs: nounwind uwtable -define internal fastcc range(i32 0, 24) i32 @fasthuf_decode(ptr noundef %pctxt, ptr nocapture noundef readonly %fhd, ptr nocapture noundef readonly %src, i64 noundef range(i64 0, 4294967296) %numSrcBits, ptr nocapture noundef %dst, i64 noundef %numDstElems) unnamed_addr #2 { +define internal fastcc range(i32 0, 24) i32 @fasthuf_decode(ptr noundef %pctxt, ptr nocapture noundef readonly %fhd, ptr noundef %src, i64 noundef range(i64 0, 4294967296) %numSrcBits, ptr nocapture noundef %dst, i64 noundef %numDstElems) unnamed_addr #2 { entry: %sub = add nsw i64 %numSrcBits, -128 %cmp156.not = icmp eq i64 %numDstElems, 0 diff --git a/bench/openjdk/optimized/vmError_posix.ll b/bench/openjdk/optimized/vmError_posix.ll index b2837f3761f..02c2eaab2b0 100644 --- a/bench/openjdk/optimized/vmError_posix.ll +++ b/bench/openjdk/optimized/vmError_posix.ll @@ -98,14 +98,15 @@ define hidden void @_ZN7VMError32install_secondary_signal_handlerEv() local_unna 3: ; preds = %0, %3 %indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %3 ] - %4 = getelementptr inbounds nuw [6 x i32], ptr @_ZZN7VMError32install_secondary_signal_handlerEvE17signals_to_handle, i64 0, i64 %indvars.iv + %4 = phi ptr [ @_ZZN7VMError32install_secondary_signal_handlerEvE17signals_to_handle, %0 ], [ %7, %3 ] %5 = load i32, ptr %4, align 4 %6 = call noundef i32 @_ZN12PosixSignals32install_sigaction_signal_handlerEP9sigactionS1_iPFviP9siginfo_tPvE(ptr noundef nonnull %1, ptr noundef nonnull %2, i32 noundef %5, ptr noundef nonnull @_ZL13crash_handleriP9siginfo_tPv) #7 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %7 = getelementptr inbounds nuw [6 x i32], ptr @_ZZN7VMError32install_secondary_signal_handlerEvE17signals_to_handle, i64 0, i64 %indvars.iv.next %.not = icmp eq i64 %indvars.iv.next, 5 - br i1 %.not, label %7, label %3, !llvm.loop !6 + br i1 %.not, label %8, label %3, !llvm.loop !6 -7: ; preds = %3 +8: ; preds = %3 ret void } diff --git a/bench/openmpi/optimized/rmaps_base_map_job.ll b/bench/openmpi/optimized/rmaps_base_map_job.ll index 5276c3e1ea3..46e5639f029 100644 --- a/bench/openmpi/optimized/rmaps_base_map_job.ll +++ b/bench/openmpi/optimized/rmaps_base_map_job.ll @@ -3588,6 +3588,7 @@ pmix_pointer_array_get_item.exit: ; preds = %65, %100 %139 = getelementptr inbounds nuw i8, ptr %8, i64 120 %140 = getelementptr inbounds nuw i8, ptr %8, i64 240 %141 = load ptr, ptr %140, align 8 + %.0.in349 = getelementptr inbounds nuw i8, ptr %141, i64 120 %.not255351 = icmp eq ptr %141, %139 br i1 %2, label %142, label %266 @@ -3605,12 +3606,13 @@ pmix_pointer_array_get_item.exit: ; preds = %65, %100 br label %149 .loopexit303: ; preds = %..loopexit_crit_edge.us, %.loopexit, %pmix_pointer_array_get_item.exit267.lr.ph.split, %154 + %.0.in = getelementptr inbounds nuw i8, ptr %.0353, i64 120 %.not255 = icmp eq ptr %.0353, %139 br i1 %.not255, label %._crit_edge356, label %149, !llvm.loop !20 149: ; preds = %.lr.ph355, %.loopexit303 + %.0353.in = phi ptr [ %.0.in349, %.lr.ph355 ], [ %.0.in, %.loopexit303 ] %.0215352 = phi ptr [ %141, %.lr.ph355 ], [ %.0353, %.loopexit303 ] - %.0353.in = getelementptr inbounds nuw i8, ptr %.0215352, i64 120 %.0353 = load ptr, ptr %.0353.in, align 8 %150 = call i32 @pthread_mutex_lock(ptr noundef nonnull %.0215352) #14 %151 = icmp eq i32 %150, 35 @@ -3858,8 +3860,8 @@ pmix_pointer_array_get_item.exit267: ; preds = %pmix_pointer_array_ br label %.preheader308 .preheader308: ; preds = %.preheader308.lr.ph, %.loopexit307 + %.1336.in = phi ptr [ %.0.in349, %.preheader308.lr.ph ], [ %.1.in, %.loopexit307 ] %.1216335 = phi ptr [ %141, %.preheader308.lr.ph ], [ %.1336, %.loopexit307 ] - %.1336.in = getelementptr inbounds nuw i8, ptr %.1216335, i64 120 %.1336 = load ptr, ptr %.1336.in, align 8 %273 = getelementptr inbounds nuw i8, ptr %.1216335, i64 208 %274 = load ptr, ptr %273, align 8 @@ -4097,6 +4099,7 @@ pmix_obj_run_destructors.exit283: ; preds = %.lr.ph.i280, %374 br i1 %394, label %pmix_pointer_array_get_item.exit278, label %.loopexit307, !llvm.loop !26 .loopexit307: ; preds = %._crit_edge330, %.preheader308, %303, %._crit_edge326 + %.1.in = getelementptr inbounds nuw i8, ptr %.1336, i64 120 %.not251 = icmp eq ptr %.1336, %139 br i1 %.not251, label %._crit_edge337, label %.preheader308, !llvm.loop !27 diff --git a/bench/openvdb/optimized/RayTracer.cc.ll b/bench/openvdb/optimized/RayTracer.cc.ll index b99661f657d..012e2694553 100644 --- a/bench/openvdb/optimized/RayTracer.cc.ll +++ b/bench/openvdb/optimized/RayTracer.cc.ll @@ -46073,6 +46073,7 @@ land.rhs: ; preds = %do.cond %38 = load ptr, ptr %37, align 8 %retval.0.i.i = select i1 %cmp.i.i.i35, ptr %38, ptr %35 %call2.i36 = call noundef zeroext i1 @_ZN3tbb6detail2r128is_group_execution_cancelledERNS0_2d118task_group_contextE(ptr noundef nonnull align 8 dereferenceable(128) %retval.0.i.i) + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %my_size.i, i64 8) ] br i1 %call2.i36, label %if.end36, label %do.bodythread-pre-split, !llvm.loop !385 if.end36: ; preds = %land.rhs, %do.cond, %if.then @@ -85312,6 +85313,7 @@ land.rhs: ; preds = %do.cond %38 = load ptr, ptr %37, align 8 %retval.0.i.i = select i1 %cmp.i.i.i35, ptr %38, ptr %35 %call2.i36 = call noundef zeroext i1 @_ZN3tbb6detail2r128is_group_execution_cancelledERNS0_2d118task_group_contextE(ptr noundef nonnull align 8 dereferenceable(128) %retval.0.i.i) + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %my_size.i, i64 8) ] br i1 %call2.i36, label %if.end31, label %do.bodythread-pre-split, !llvm.loop !568 if.end31: ; preds = %land.rhs, %do.cond, %if.then @@ -88362,6 +88364,7 @@ land.rhs: ; preds = %do.cond %45 = load ptr, ptr %44, align 8 %retval.0.i.i = select i1 %cmp.i.i.i40, ptr %45, ptr %42 %call2.i41 = call noundef zeroext i1 @_ZN3tbb6detail2r128is_group_execution_cancelledERNS0_2d118task_group_contextE(ptr noundef nonnull align 8 dereferenceable(128) %retval.0.i.i) + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %my_size.i, i64 8) ] br i1 %call2.i41, label %if.end31, label %do.bodythread-pre-split, !llvm.loop !578 if.end31: ; preds = %land.rhs, %do.cond, %if.then @@ -91000,6 +91003,7 @@ land.rhs: ; preds = %do.cond %45 = load ptr, ptr %44, align 8 %retval.0.i.i = select i1 %cmp.i.i.i40, ptr %45, ptr %42 %call2.i41 = call noundef zeroext i1 @_ZN3tbb6detail2r128is_group_execution_cancelledERNS0_2d118task_group_contextE(ptr noundef nonnull align 8 dereferenceable(128) %retval.0.i.i) + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %my_size.i, i64 8) ] br i1 %call2.i41, label %if.end31, label %do.bodythread-pre-split, !llvm.loop !597 if.end31: ; preds = %land.rhs, %do.cond, %if.then @@ -91086,6 +91090,9 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #23 ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #24 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #25 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.cttz.i64(i64, i1 immarg) #22 @@ -91110,9 +91117,6 @@ declare i64 @llvm.ctpop.i64(i64) #22 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #22 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #25 - attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/pbrt-v4/optimized/pspec.cpp.ll b/bench/pbrt-v4/optimized/pspec.cpp.ll index ad3e5689307..87612a78535 100644 --- a/bench/pbrt-v4/optimized/pspec.cpp.ll +++ b/bench/pbrt-v4/optimized/pspec.cpp.ll @@ -3206,13 +3206,14 @@ delete.notnull.i31.i.i: ; preds = %sw.bb7.i.i store i64 0, ptr %nStored.le.i.i.i.i.i.i, align 8, !noalias !7 %ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 48 %238 = load ptr, ptr %ptr.i.i.i.i.i, align 8, !noalias !7 + %nAlloc.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %nAlloc.i.i.i.i.i, i64 64) ] %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %238, null br i1 %tobool.not.i.i.i.i.i.i.i.i, label %return.sink.split.i.i, label %if.end.i.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i.i: ; preds = %delete.notnull.i31.i.i - %X.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 40 - %nAlloc.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 56 %239 = load i64, ptr %nAlloc.i.i.i.i.i, align 8, !noalias !7 + %X.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 40 %mul.i.i.i.i.i.i330 = shl i64 %239, 5 %240 = load ptr, ptr %X.i.i.i.i, align 8, !noalias !7 %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %240, align 8, !noalias !7 @@ -3246,13 +3247,14 @@ _ZNSt6vectorIfSaIfEED2Ev.exit.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i store i64 0, ptr %nStored.le.i.i.i.i.i.i.i.i, align 8, !noalias !7 %ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 48 %245 = load ptr, ptr %ptr.i.i.i.i.i.i.i, align 8, !noalias !7 + %nAlloc.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 56 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %nAlloc.i.i.i.i.i.i.i, i64 64) ] %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %245, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %return.sink.split.i.i, label %if.end.i.i.i.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit.i.i.i.i.i - %X.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 40 - %nAlloc.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 56 %246 = load i64, ptr %nAlloc.i.i.i.i.i.i.i, align 8, !noalias !7 + %X.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %234, i64 40 %mul.i.i.i.i.i.i.i.i = shl i64 %246, 5 %247 = load ptr, ptr %X.i.i.i.i.i.i, align 8, !noalias !7 %vtable.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %247, align 8, !noalias !7 @@ -8287,6 +8289,7 @@ entry: %0 = load i32, ptr %sampleIndex, align 8 %dimension = getelementptr inbounds nuw i8, ptr %this, i64 36 %1 = load i32, ptr %dimension, align 4 + %div = sdiv i32 %1, 2 %cmp = icmp sgt i32 %1, 9 %pixel = getelementptr inbounds nuw i8, ptr %this, i64 24 %agg.tmp.sroa.0.0.copyload = load i64, ptr %pixel, align 8 @@ -8387,6 +8390,12 @@ _ZN4pbrt18PermutationElementEjjj.exit: ; preds = %do.body.i if.end: ; preds = %entry, %_ZN4pbrt18PermutationElementEjjj.exit %index.0 = phi i32 [ %rem.i, %_ZN4pbrt18PermutationElementEjjj.exit ], [ %0, %entry ] + %rem.i3 = srem i32 %div, 5 + %rem1.i = srem i32 %index.0, 65536 + %idxprom.i = sext i32 %rem.i3 to i64 + %idxprom2.i = sext i32 %rem1.i to i64 + %arrayidx3.i = getelementptr inbounds [5 x [65536 x [2 x i32]]], ptr @_ZN4pbrt14pmj02bnSamplesE, i64 0, i64 %idxprom.i, i64 %idxprom2.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx3.i, i64 32) ] %cmp.i = icmp sgt i32 %1, -1 %4 = and i64 %agg.tmp.sroa.0.0.copyload, -9223372034707292160 %5 = icmp eq i64 %4, 0 @@ -8398,17 +8407,11 @@ land.rhs.i: ; preds = %if.end unreachable _ZN4pbrt9BlueNoiseEiNS_6Point2IiEE.exit18: ; preds = %if.end - %div51 = lshr i32 %1, 1 - %rem.i3 = urem i32 %div51, 5 - %idxprom.i = zext nneg i32 %rem.i3 to i64 - %rem1.i = srem i32 %index.0, 65536 - %idxprom2.i = sext i32 %rem1.i to i64 - %arrayidx3.i = getelementptr inbounds [5 x [65536 x [2 x i32]]], ptr @_ZN4pbrt14pmj02bnSamplesE, i64 0, i64 %idxprom.i, i64 %idxprom2.i %6 = load i32, ptr %arrayidx3.i, align 8 + %arrayidx10.i = getelementptr inbounds nuw i8, ptr %arrayidx3.i, i64 4 %conv.i = uitofp i32 %6 to double %mul.i4 = fmul double %conv.i, 0x3DF0000000000000 %conv5.i = fptrunc double %mul.i4 to float - %arrayidx10.i = getelementptr inbounds nuw i8, ptr %arrayidx3.i, i64 4 %7 = load i32, ptr %arrayidx10.i, align 4 %conv11.i = uitofp i32 %7 to double %mul12.i = fmul double %conv11.i, 0x3DF0000000000000 @@ -8813,14 +8816,14 @@ define linkonce_odr dso_local noundef float @_ZNK4pbrt13HaltonSampler15SampleDim entry: %randomize = getelementptr inbounds nuw i8, ptr %this, i64 4 %0 = load i32, ptr %randomize, align 4 + %haltonIndex9 = getelementptr inbounds nuw i8, ptr %this, i64 40 switch i32 %0, label %do.end [ i32 0, label %if.then i32 1, label %if.then4 ] if.then: ; preds = %entry - %haltonIndex = getelementptr inbounds nuw i8, ptr %this, i64 40 - %1 = load i64, ptr %haltonIndex, align 8 + %1 = load i64, ptr %haltonIndex9, align 8 %idxprom.i = sext i32 %dimension to i64 %arrayidx.i = getelementptr inbounds [1000 x i32], ptr @_ZN4pbrt6PrimesE, i64 0, i64 %idxprom.i %2 = load i32, ptr %arrayidx.i, align 4 @@ -8858,6 +8861,8 @@ _ZN4pbrt14RadicalInverseEim.exit: ; preds = %if.then, %while.end br label %return if.then4: ; preds = %entry + %digitPermutations = getelementptr inbounds nuw i8, ptr %this, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %digitPermutations, i64 0) ] %conv = sext i32 %dimension to i64 %arrayidx.i7 = getelementptr inbounds [1000 x i32], ptr @_ZN4pbrt6PrimesE, i64 0, i64 %conv %6 = load i32, ptr %arrayidx.i7, align 4 @@ -8873,13 +8878,11 @@ if.then4: ; preds = %entry br i1 %cmp15.i, label %while.body.lr.ph.i, label %_ZN4pbrt23ScrambledRadicalInverseEimRKNS_16DigitPermutationE.exit while.body.lr.ph.i: ; preds = %if.then4 - %digitPermutations = getelementptr inbounds nuw i8, ptr %this, i64 8 %7 = load ptr, ptr %digitPermutations, align 8 %ptr.i = getelementptr inbounds nuw i8, ptr %7, i64 8 %8 = load ptr, ptr %ptr.i, align 8 %arrayidx.i5 = getelementptr inbounds %"class.pbrt::DigitPermutation", ptr %8, i64 %conv - %haltonIndex5 = getelementptr inbounds nuw i8, ptr %this, i64 40 - %9 = load i64, ptr %haltonIndex5, align 8 + %9 = load i64, ptr %haltonIndex9, align 8 %permutations.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i5, i64 8 %10 = load ptr, ptr %permutations.i.i, align 8 %11 = load i32, ptr %arrayidx.i5, align 8 @@ -8923,7 +8926,6 @@ _ZN4pbrt23ScrambledRadicalInverseEimRKNS_16DigitPermutationE.exit: ; preds = %if br label %return do.end: ; preds = %entry - %haltonIndex9 = getelementptr inbounds nuw i8, ptr %this, i64 40 %16 = load i64, ptr %haltonIndex9, align 8 %shl = shl i32 %dimension, 4 %add = or disjoint i32 %shl, 1 @@ -12291,15 +12293,15 @@ declare void @llvm.experimental.noalias.scope.decl(metadata) #29 ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #30 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #31 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #27 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #27 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #31 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #27 diff --git a/bench/pbrt-v4/optimized/subsurface.cpp.ll b/bench/pbrt-v4/optimized/subsurface.cpp.ll index 5eb0c0e9b61..6f4d1e57261 100644 --- a/bench/pbrt-v4/optimized/subsurface.cpp.ll +++ b/bench/pbrt-v4/optimized/subsurface.cpp.ll @@ -4437,8 +4437,19 @@ invoke.cont141.i.i.i.i: ; preds = %if.then131.i.i.i.i if.end147.i.i.i.i: ; preds = %invoke.cont141.i.i.i.i, %if.then131.i.i.i.i %ray.sroa.14.0.i.i.i.i = phi i64 [ %72, %invoke.cont141.i.i.i.i ], [ 0, %if.then131.i.i.i.i ] - %73 = load i8, ptr %set.i.i.i.i.i, align 4 - %tobool.i.i254.i.i.i.i = trunc i8 %73 to i1 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ssi.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp.sroa.0.sroa.2.0.this.sroa_idx.i.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp.sroa.0.sroa.3.0.this.sroa_idx.i.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp.sroa.0.sroa.4.0.this.sroa_idx.i.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp.sroa.0.sroa.5.0.this.sroa_idx.i.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp.sroa.0.sroa.6.0.this.sroa_idx.i.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %n.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp14.sroa.2.0.n.sroa_idx.i.i.i.i.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ns.i.i.i.i.i, i64 32) ] + %73 = getelementptr inbounds nuw i8, ptr %call.val, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %73, i64 0) ] + %74 = load i8, ptr %set.i.i.i.i.i, align 4 + %tobool.i.i254.i.i.i.i = trunc i8 %74 to i1 br i1 %tobool.i.i254.i.i.i.i, label %invoke.cont158.i.i.i.i, label %land.rhs.i.i255.i.i.i.i land.rhs.i.i255.i.i.i.i: ; preds = %if.end147.i.i.i.i @@ -4446,10 +4457,9 @@ land.rhs.i.i255.i.i.i.i: ; preds = %if.end147.i.i.i.i unreachable invoke.cont158.i.i.i.i: ; preds = %if.end147.i.i.i.i - %74 = load i32, ptr %depth.i.i.i.i, align 8 - %add.i.i.i.i = add nsw i32 %74, 1 - %75 = getelementptr inbounds nuw i8, ptr %call.val, i64 8 - %76 = load ptr, ptr %75, align 8 + %75 = load i32, ptr %depth.i.i.i.i, align 8 + %add.i.i.i.i = add nsw i32 %75, 1 + %76 = load ptr, ptr %73, align 8 %agg.tmp152.sroa.2.0.copyload.i.i.i.i = load float, ptr %agg.tmp.sroa.2.0.ns.sroa_idx.i.i.i.i.i, align 4 %agg.tmp152.sroa.0.0.copyload.i.i.i.i = load <2 x float>, ptr %ns.i.i.i.i.i, align 4 %agg.tmp150.sroa.2.0.copyload.i.i.i.i = load float, ptr %agg.tmp14.sroa.2.0.n.sroa_idx.i.i.i.i.i, align 8 @@ -5597,6 +5607,10 @@ return: ; preds = %if.then24, %invoke. ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local { <2 x float>, <2 x float> } @_ZNK4pbrt4BSDF1fINS_21NormalizedFresnelBxDFEEENS_15SampledSpectrumENS_7Vector3IfEES5_NS_13TransportModeE(ptr noundef nonnull align 8 dereferenceable(44) %this, <2 x float> %woRender.coerce0, float %woRender.coerce1, <2 x float> %wiRender.coerce0, float %wiRender.coerce1, i32 noundef %mode) local_unnamed_addr #8 comdat align 2 { entry: + %shadingFrame.i = getelementptr inbounds nuw i8, ptr %this, i64 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %shadingFrame.i, i64 32) ] + %agg.tmp2.sroa.2.0.x.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.tmp2.sroa.2.0.x.sroa_idx.i.i, i64 32) ] %z.i.i = getelementptr inbounds nuw i8, ptr %this, i64 32 %agg.tmp7.sroa.0.0.copyload.i.i = load <2 x float>, ptr %z.i.i, align 8 %agg.tmp7.sroa.2.0.z.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 40 @@ -5613,11 +5627,11 @@ entry: br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry - %agg.tmp2.sroa.2.0.x.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %agg.tmp2.sroa.2.0.copyload.i.i = load float, ptr %agg.tmp2.sroa.2.0.x.sroa_idx.i.i, align 8 - %mul6.i.i.i12 = fmul float %woRender.coerce1, %agg.tmp2.sroa.2.0.copyload.i.i - %shadingFrame.i = getelementptr inbounds nuw i8, ptr %this, i64 8 %agg.tmp2.sroa.0.0.copyload.i.i = load <2 x float>, ptr %shadingFrame.i, align 8 + %agg.tmp4.sroa.2.0.y.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 28 + %y.i.i = getelementptr inbounds nuw i8, ptr %this, i64 20 + %mul6.i.i.i12 = fmul float %woRender.coerce1, %agg.tmp2.sroa.2.0.copyload.i.i %1 = fmul <2 x float> %woRender.coerce0, %agg.tmp2.sroa.0.0.copyload.i.i %mul.i.i.i7 = extractelement <2 x float> %1, i64 0 %w.sroa.0.4.vec.extract.i.i.i = extractelement <2 x float> %agg.tmp2.sroa.0.0.copyload.i.i, i64 1 @@ -5625,10 +5639,8 @@ if.end: ; preds = %entry %add.i.i.i11 = fadd float %mul.i.i.i7, %mul4.i.i.i10 %add7.i.i.i13 = fadd float %mul6.i.i.i12, %add.i.i.i11 %retval.sroa.0.0.vec.insert.i.i36 = insertelement <2 x float> poison, float %add7.i.i.i13, i64 0 - %agg.tmp4.sroa.2.0.y.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %this, i64 28 %agg.tmp4.sroa.2.0.copyload.i.i = load float, ptr %agg.tmp4.sroa.2.0.y.sroa_idx.i.i, align 4 %mul6.i10.i.i23 = fmul float %woRender.coerce1, %agg.tmp4.sroa.2.0.copyload.i.i - %y.i.i = getelementptr inbounds nuw i8, ptr %this, i64 20 %agg.tmp4.sroa.0.0.copyload.i.i = load <2 x float>, ptr %y.i.i, align 4 %2 = fmul <2 x float> %woRender.coerce0, %agg.tmp4.sroa.0.0.copyload.i.i %mul.i5.i.i19 = extractelement <2 x float> %2, i64 0 diff --git a/bench/proj/optimized/molodensky.cpp.ll b/bench/proj/optimized/molodensky.cpp.ll index 5226005bca2..5f3b215f463 100644 --- a/bench/proj/optimized/molodensky.cpp.ll +++ b/bench/proj/optimized/molodensky.cpp.ll @@ -61,7 +61,7 @@ define hidden noundef ptr @pj_molodensky(ptr noundef %0) local_unnamed_addr #0 { ; Function Attrs: mustprogress uwtable define hidden noundef ptr @_Z39pj_projection_specific_setup_molodenskyP8PJconsts(ptr noundef %0) local_unnamed_addr #0 { - %2 = tail call noalias dereferenceable_or_null(48) ptr @calloc(i64 noundef 1, i64 noundef 48) #8 + %2 = tail call noalias dereferenceable_or_null(48) ptr @calloc(i64 noundef 1, i64 noundef 48) #9 %3 = icmp eq ptr %2, null br i1 %3, label %4, label %6 @@ -235,6 +235,8 @@ define internal void @_ZL24pj_molodensky_forward_4dR8PJ_COORDP8PJconsts(ptr noca %.sink.i.sroa.phi12 = phi ptr [ %.sink.i.sroa.gep13, %11 ], [ %.sink.i.sroa.gep14, %10 ] %.sink.i = phi ptr [ %4, %11 ], [ %3, %10 ] %.sroa.0.0.copyload = load double, ptr %.sink.i, align 8, !noalias !4 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sink.i.sroa.phi, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sink.i.sroa.phi12, i64 64) ] %13 = fcmp oeq double %.sroa.0.0.copyload, 0x7FF0000000000000 br i1 %13, label %14, label %16 @@ -296,8 +298,8 @@ define internal void @_ZL24pj_molodensky_reverse_4dR8PJ_COORDP8PJconsts(ptr noca br i1 %.not.i, label %13, label %12 12: ; preds = %2 - %.sink27.i.sroa.gep15 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %.sink27.i.sroa.gep12 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %.sink27.i.sroa.gep15 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %.sink27.i.sroa.gep12 = getelementptr inbounds nuw i8, ptr %3, i64 8 store double %.sroa.010.0.copyload, ptr %4, align 8, !noalias !7 %.sroa.7.0..sroa_idx11.i = getelementptr inbounds nuw i8, ptr %4, i64 8 store double %.sroa.2.0.copyload, ptr %.sroa.7.0..sroa_idx11.i, align 8, !noalias !7 @@ -307,8 +309,8 @@ define internal void @_ZL24pj_molodensky_reverse_4dR8PJ_COORDP8PJconsts(ptr noca br label %14 13: ; preds = %2 - %.sink27.i.sroa.gep14 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %.sink27.i.sroa.gep = getelementptr inbounds nuw i8, ptr %5, i64 16 + %.sink27.i.sroa.gep14 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %.sink27.i.sroa.gep = getelementptr inbounds nuw i8, ptr %5, i64 8 store double %.sroa.010.0.copyload, ptr %6, align 8, !noalias !7 %.sroa.7.0..sroa_idx13.i = getelementptr inbounds nuw i8, ptr %6, i64 8 store double %.sroa.2.0.copyload, ptr %.sroa.7.0..sroa_idx13.i, align 8, !noalias !7 @@ -321,12 +323,13 @@ define internal void @_ZL24pj_molodensky_reverse_4dR8PJ_COORDP8PJconsts(ptr noca %.sink27.i.sroa.phi = phi ptr [ %.sink27.i.sroa.gep, %13 ], [ %.sink27.i.sroa.gep12, %12 ] %.sink27.i.sroa.phi13 = phi ptr [ %.sink27.i.sroa.gep14, %13 ], [ %.sink27.i.sroa.gep15, %12 ] %.sink27.i = phi ptr [ %5, %13 ], [ %3, %12 ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sink27.i.sroa.phi, i64 64) ] %.sroa.0.0.i = load double, ptr %.sink27.i, align 8, !noalias !7 %15 = fcmp oeq double %.sroa.0.0.i, 0x7FF0000000000000 br i1 %15, label %16, label %18 16: ; preds = %14 - %17 = tail call i32 @proj_errno_set(ptr noundef nonnull %1, i32 noundef 2050), !noalias !7 + %17 = call i32 @proj_errno_set(ptr noundef nonnull %1, i32 noundef 2050), !noalias !7 call void @_Z16proj_coord_errorv(ptr dead_on_unwind nonnull writable sret(%union.PJ_COORD) align 8 %7), !noalias !7 %.sroa.0.0.copyload3 = load double, ptr %7, align 8 %.sroa.3.0..sroa_idx4 = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -336,8 +339,8 @@ define internal void @_ZL24pj_molodensky_reverse_4dR8PJ_COORDP8PJconsts(ptr noca br label %_ZL24pj_molodensky_reverse_3d6PJ_XYZP8PJconsts.exit 18: ; preds = %14 - %.sroa.5.0.copyload6.i = load double, ptr %.sink27.i.sroa.phi, align 8, !noalias !7 - %.sroa.4.0.copyload4.i = load double, ptr %.sink27.i.sroa.phi13, align 8, !noalias !7 + %.sroa.5.0.copyload6.i = load double, ptr %.sink27.i.sroa.phi13, align 8, !noalias !7 + %.sroa.4.0.copyload4.i = load double, ptr %.sink27.i.sroa.phi, align 8, !noalias !7 %19 = fsub double %.sroa.2.0.copyload, %.sroa.4.0.copyload4.i %20 = fsub double %.sroa.010.0.copyload, %.sroa.0.0.i %21 = fsub double %.sroa.311.0.copyload, %.sroa.5.0.copyload6.i @@ -568,7 +571,7 @@ define internal { double, double } @_ZL24pj_molodensky_reverse_2d5PJ_XYP8PJconst br i1 %.not.i, label %14, label %13 13: ; preds = %3 - %.sink27.i.sroa.gep17 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %.sink27.i.sroa.gep14 = getelementptr inbounds nuw i8, ptr %4, i64 8 store double %0, ptr %5, align 8, !noalias !13 %.sroa.7.0..sroa_idx11.i = getelementptr inbounds nuw i8, ptr %5, i64 8 store double %1, ptr %.sroa.7.0..sroa_idx11.i, align 8, !noalias !13 @@ -578,7 +581,7 @@ define internal { double, double } @_ZL24pj_molodensky_reverse_2d5PJ_XYP8PJconst br label %15 14: ; preds = %3 - %.sink27.i.sroa.gep16 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %.sink27.i.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 8 store double %0, ptr %7, align 8, !noalias !13 %.sroa.7.0..sroa_idx13.i = getelementptr inbounds nuw i8, ptr %7, i64 8 store double %1, ptr %.sroa.7.0..sroa_idx13.i, align 8, !noalias !13 @@ -588,14 +591,15 @@ define internal { double, double } @_ZL24pj_molodensky_reverse_2d5PJ_XYP8PJconst br label %15 15: ; preds = %14, %13 - %.sink27.i.sroa.phi15 = phi ptr [ %.sink27.i.sroa.gep16, %14 ], [ %.sink27.i.sroa.gep17, %13 ] + %.sink27.i.sroa.phi = phi ptr [ %.sink27.i.sroa.gep, %14 ], [ %.sink27.i.sroa.gep14, %13 ] %.sink27.i = phi ptr [ %6, %14 ], [ %4, %13 ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sink27.i.sroa.phi, i64 64) ] %.sroa.0.0.i = load double, ptr %.sink27.i, align 8, !noalias !13 %16 = fcmp oeq double %.sroa.0.0.i, 0x7FF0000000000000 br i1 %16, label %17, label %19 17: ; preds = %15 - %18 = tail call i32 @proj_errno_set(ptr noundef nonnull %2, i32 noundef 2050), !noalias !13 + %18 = call i32 @proj_errno_set(ptr noundef nonnull %2, i32 noundef 2050), !noalias !13 call void @_Z16proj_coord_errorv(ptr dead_on_unwind nonnull writable sret(%union.PJ_COORD) align 8 %8), !noalias !13 %.sroa.011.0.copyload = load double, ptr %8, align 8 %.sroa.312.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 @@ -603,7 +607,7 @@ define internal { double, double } @_ZL24pj_molodensky_reverse_2d5PJ_XYP8PJconst br label %_ZL24pj_molodensky_reverse_3d6PJ_XYZP8PJconsts.exit 19: ; preds = %15 - %.sroa.4.0.copyload4.i = load double, ptr %.sink27.i.sroa.phi15, align 8, !noalias !13 + %.sroa.4.0.copyload4.i = load double, ptr %.sink27.i.sroa.phi, align 8, !noalias !13 %20 = fsub double %1, %.sroa.4.0.copyload4.i %21 = fsub double %0, %.sroa.0.0.i br label %_ZL24pj_molodensky_reverse_3d6PJ_XYZP8PJconsts.exit @@ -633,12 +637,12 @@ define internal fastcc void @_ZL20calc_abridged_params6PJ_LPZP8PJconsts(ptr dead %4 = getelementptr inbounds nuw i8, ptr %2, i64 88 %5 = load ptr, ptr %4, align 8 %6 = load double, ptr %1, align 8 - %7 = tail call double @sin(double noundef %6) #9 - %8 = tail call double @cos(double noundef %6) #9 + %7 = tail call double @sin(double noundef %6) #10 + %8 = tail call double @cos(double noundef %6) #10 %9 = getelementptr inbounds nuw i8, ptr %1, i64 8 %10 = load double, ptr %9, align 8 - %11 = tail call double @sin(double noundef %10) #9 - %12 = tail call double @cos(double noundef %10) #9 + %11 = tail call double @sin(double noundef %10) #10 + %12 = tail call double @cos(double noundef %10) #10 %13 = load double, ptr %5, align 8 %14 = getelementptr inbounds nuw i8, ptr %5, i64 8 %15 = load double, ptr %14, align 8 @@ -653,11 +657,11 @@ define internal fastcc void @_ZL20calc_abridged_params6PJ_LPZP8PJconsts(ptr dead %24 = getelementptr inbounds nuw i8, ptr %2, i64 272 %25 = load double, ptr %24, align 8 %26 = fmul double %10, 2.000000e+00 - %27 = tail call double @sin(double noundef %26) #9 + %27 = tail call double @sin(double noundef %26) #10 %28 = load double, ptr %22, align 8 %29 = getelementptr inbounds nuw i8, ptr %2, i64 216 %30 = load double, ptr %29, align 8 - %31 = tail call double @sin(double noundef %10) #9 + %31 = tail call double @sin(double noundef %10) #10 %32 = fcmp oeq double %30, 0.000000e+00 br i1 %32, label %_ZL2RMddd.exit, label %33 @@ -677,7 +681,7 @@ define internal fastcc void @_ZL20calc_abridged_params6PJ_LPZP8PJconsts(ptr dead br i1 %40, label %42, label %45 42: ; preds = %38 - %43 = tail call double @sqrt(double noundef %41) #9 + %43 = tail call double @sqrt(double noundef %41) #10 %44 = fdiv double %28, %43 br label %_ZL2RMddd.exit @@ -686,7 +690,7 @@ define internal fastcc void @_ZL20calc_abridged_params6PJ_LPZP8PJconsts(ptr dead %47 = fneg double %31 %48 = fmul double %30, %47 %49 = tail call double @llvm.fmuladd.f64(double %48, double %31, double 1.000000e+00) - %50 = tail call double @pow(double noundef %49, double noundef 1.500000e+00) #9 + %50 = tail call double @pow(double noundef %49, double noundef 1.500000e+00) #10 %51 = fdiv double %46, %50 br label %_ZL2RMddd.exit @@ -694,7 +698,7 @@ _ZL2RMddd.exit: ; preds = %3, %35, %42, %45 %.0.i = phi double [ %37, %35 ], [ %44, %42 ], [ %51, %45 ], [ %28, %3 ] %52 = load double, ptr %22, align 8 %53 = load double, ptr %29, align 8 - %54 = tail call double @sin(double noundef %10) #9 + %54 = tail call double @sin(double noundef %10) #10 %55 = fcmp oeq double %53, 0.000000e+00 br i1 %55, label %_ZL2RNddd.exit, label %56 @@ -702,7 +706,7 @@ _ZL2RMddd.exit: ; preds = %3, %35, %42, %45 %57 = fneg double %54 %58 = fmul double %53, %57 %59 = tail call double @llvm.fmuladd.f64(double %58, double %54, double 1.000000e+00) - %60 = tail call double @sqrt(double noundef %59) #9 + %60 = tail call double @sqrt(double noundef %59) #10 %61 = fdiv double %52, %60 br label %_ZL2RNddd.exit @@ -751,16 +755,16 @@ _ZL2RNddd.exit: ; preds = %_ZL2RMddd.exit, %56 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(readwrite, inaccessiblemem: write) uwtable -define internal fastcc void @_ZL20calc_standard_params6PJ_LPZP8PJconsts(ptr dead_on_unwind noalias nocapture nonnull writable writeonly align 8 initializes((0, 24)) %0, ptr nocapture noundef byval(%struct.PJ_LPZ) align 8 %1, ptr nocapture noundef readonly %2) unnamed_addr #4 { +define internal fastcc void @_ZL20calc_standard_params6PJ_LPZP8PJconsts(ptr dead_on_unwind noalias nocapture nonnull writable writeonly align 8 initializes((0, 24)) %0, ptr nocapture noundef byval(%struct.PJ_LPZ) align 8 %1, ptr noundef %2) unnamed_addr #4 { %4 = getelementptr inbounds nuw i8, ptr %2, i64 88 %5 = load ptr, ptr %4, align 8 %6 = load double, ptr %1, align 8 - %7 = tail call double @sin(double noundef %6) #9 - %8 = tail call double @cos(double noundef %6) #9 + %7 = tail call double @sin(double noundef %6) #10 + %8 = tail call double @cos(double noundef %6) #10 %9 = getelementptr inbounds nuw i8, ptr %1, i64 8 %10 = load double, ptr %9, align 8 - %11 = tail call double @sin(double noundef %10) #9 - %12 = tail call double @cos(double noundef %10) #9 + %11 = tail call double @sin(double noundef %10) #10 + %12 = tail call double @cos(double noundef %10) #10 %13 = getelementptr inbounds nuw i8, ptr %2, i64 272 %14 = load double, ptr %13, align 8 %15 = getelementptr inbounds nuw i8, ptr %2, i64 168 @@ -776,7 +780,7 @@ define internal fastcc void @_ZL20calc_standard_params6PJ_LPZP8PJconsts(ptr dead %25 = load double, ptr %24, align 8 %26 = getelementptr inbounds nuw i8, ptr %2, i64 216 %27 = load double, ptr %26, align 8 - %28 = tail call double @sin(double noundef %10) #9 + %28 = tail call double @sin(double noundef %10) #10 %29 = fcmp oeq double %27, 0.000000e+00 br i1 %29, label %_ZL2RMddd.exit, label %30 @@ -796,7 +800,7 @@ define internal fastcc void @_ZL20calc_standard_params6PJ_LPZP8PJconsts(ptr dead br i1 %37, label %39, label %42 39: ; preds = %35 - %40 = tail call double @sqrt(double noundef %38) #9 + %40 = tail call double @sqrt(double noundef %38) #10 %41 = fdiv double %16, %40 br label %_ZL2RMddd.exit @@ -805,14 +809,14 @@ define internal fastcc void @_ZL20calc_standard_params6PJ_LPZP8PJconsts(ptr dead %44 = fneg double %28 %45 = fmul double %27, %44 %46 = tail call double @llvm.fmuladd.f64(double %45, double %28, double 1.000000e+00) - %47 = tail call double @pow(double noundef %46, double noundef 1.500000e+00) #9 + %47 = tail call double @pow(double noundef %46, double noundef 1.500000e+00) #10 %48 = fdiv double %43, %47 br label %_ZL2RMddd.exit _ZL2RMddd.exit: ; preds = %3, %32, %39, %42 %.0.i = phi double [ %34, %32 ], [ %41, %39 ], [ %48, %42 ], [ %16, %3 ] %49 = load double, ptr %26, align 8 - %50 = tail call double @sin(double noundef %10) #9 + %50 = tail call double @sin(double noundef %10) #10 %51 = fcmp oeq double %49, 0.000000e+00 br i1 %51, label %_ZL2RNddd.exit, label %52 @@ -820,7 +824,7 @@ _ZL2RMddd.exit: ; preds = %3, %32, %39, %42 %53 = fneg double %50 %54 = fmul double %49, %53 %55 = tail call double @llvm.fmuladd.f64(double %54, double %50, double 1.000000e+00) - %56 = tail call double @sqrt(double noundef %55) #9 + %56 = tail call double @sqrt(double noundef %55) #10 %57 = fdiv double %16, %56 br label %_ZL2RNddd.exit @@ -915,11 +919,14 @@ declare double @sqrt(double noundef) local_unnamed_addr #5 ; Function Attrs: mustprogress nofree nounwind willreturn memory(write) declare double @pow(double noundef, double noundef) local_unnamed_addr #5 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #7 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #7 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -928,9 +935,10 @@ attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #4 = { mustprogress nofree nounwind willreturn memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { nounwind allocsize(0,1) } -attributes #9 = { nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { nounwind allocsize(0,1) } +attributes #10 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/pybind11/optimized/eigen_tensor_avoid_stl_array.cpp.ll b/bench/pybind11/optimized/eigen_tensor_avoid_stl_array.cpp.ll index b6cef859e5c..259db52b5aa 100644 --- a/bench/pybind11/optimized/eigen_tensor_avoid_stl_array.cpp.ll +++ b/bench/pybind11/optimized/eigen_tensor_avoid_stl_array.cpp.ll @@ -39028,13 +39028,14 @@ _ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_5arrayIlLm3EEE.exit.i: ; preds = %.crit 15: ; preds = %_ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_5arrayIlLm3EEE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %16 = load ptr, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %.not.i.i.i = icmp eq ptr %16, null br i1 %.not.i.i.i, label %_ZN5Eigen8internal14TensorExecutorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIS4_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceELb1ELNS0_15TiledEvaluationE0EE3runERSA_RKSB_.exit, label %_ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i _ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i: ; preds = %15 %.sroa.17.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48.copyload.i = load i64, ptr %.sroa.15.48..sroa_idx.i, align 8 %.sroa.12.48.copyload.i = load i64, ptr %4, align 8 %17 = load ptr, ptr %1, align 8 @@ -43533,8 +43534,8 @@ _ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41: ; preds = %.c .noexc49: ; preds = %_ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) %125 = load ptr, ptr %0, align 8 - %.not.i.i.i.i42 = icmp eq ptr %125, null - br i1 %.not.i.i.i.i42, label %_ZN5Eigen6TensorIdLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIdLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split + %.not.i.i.i.i44 = icmp eq ptr %125, null + br i1 %.not.i.i.i.i44, label %_ZN5Eigen6TensorIdLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIdLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split _ZN5Eigen6TensorIdLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split: ; preds = %.noexc49, %.noexc33 %.sink = phi ptr [ %114, %.noexc33 ], [ %125, %.noexc49 ] @@ -44798,8 +44799,8 @@ _ZN5Eigen6TensorIiLi3ELi0ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41: ; preds = %.c .noexc49: ; preds = %_ZN5Eigen6TensorIiLi3ELi0ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) %125 = load ptr, ptr %0, align 8 - %.not.i.i.i.i42 = icmp eq ptr %125, null - br i1 %.not.i.i.i.i42, label %_ZN5Eigen6TensorIiLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIiLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split + %.not.i.i.i.i44 = icmp eq ptr %125, null + br i1 %.not.i.i.i.i44, label %_ZN5Eigen6TensorIiLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIiLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split _ZN5Eigen6TensorIiLi3ELi0ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split: ; preds = %.noexc49, %.noexc33 %.sink = phi ptr [ %112, %.noexc33 ], [ %125, %.noexc49 ] @@ -47305,13 +47306,14 @@ _ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_5arrayIlLm3EEE.exit.i: ; preds = %.crit 15: ; preds = %_ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_5arrayIlLm3EEE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %16 = load ptr, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %.not.i.i.i = icmp eq ptr %16, null br i1 %.not.i.i.i, label %_ZN5Eigen8internal14TensorExecutorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIS4_Li16ENS_11MakePointerEEEEENS_13DefaultDeviceELb1ELNS0_15TiledEvaluationE0EE3runERSA_RKSB_.exit, label %_ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIS3_Li16ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i _ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIS3_Li16ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i: ; preds = %15 %.sroa.17.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48.copyload.i = load i64, ptr %.sroa.15.48..sroa_idx.i, align 8 %.sroa.12.48.copyload.i = load i64, ptr %4, align 8 %17 = load ptr, ptr %1, align 8 @@ -47784,13 +47786,14 @@ _ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_5arrayIlLm3EEE.exit.i: ; preds = %.crit 15: ; preds = %_ZN5Eigen6TensorIdLi3ELi0ElE6resizeERKNS_5arrayIlLm3EEE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %16 = load ptr, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %.not.i.i.i = icmp eq ptr %16, null br i1 %.not.i.i.i, label %_ZN5Eigen8internal14TensorExecutorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIKS4_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceELb1ELNS0_15TiledEvaluationE0EE3runERSB_RKSC_.exit, label %_ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIKS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i _ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi0ElEEKNS_9TensorMapIKS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i: ; preds = %15 %.sroa.17.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48.copyload.i = load i64, ptr %.sroa.15.48..sroa_idx.i, align 8 %.sroa.12.48.copyload.i = load i64, ptr %4, align 8 %17 = load ptr, ptr %1, align 8 @@ -57539,13 +57542,14 @@ _ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_5arrayIlLm3EEE.exit.i: ; preds = %.crit 15: ; preds = %_ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_5arrayIlLm3EEE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %16 = load ptr, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %.not.i.i.i = icmp eq ptr %16, null br i1 %.not.i.i.i, label %_ZN5Eigen8internal14TensorExecutorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIS4_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceELb1ELNS0_15TiledEvaluationE0EE3runERSA_RKSB_.exit, label %_ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i _ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i: ; preds = %15 %.sroa.17.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48.copyload.i = load i64, ptr %.sroa.15.48..sroa_idx.i, align 8 %.sroa.12.48.copyload.i = load i64, ptr %4, align 8 %17 = load ptr, ptr %1, align 8 @@ -61993,8 +61997,8 @@ _ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41: ; preds = %.c .noexc49: ; preds = %_ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) %125 = load ptr, ptr %0, align 8 - %.not.i.i.i.i42 = icmp eq ptr %125, null - br i1 %.not.i.i.i.i42, label %_ZN5Eigen6TensorIdLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIdLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split + %.not.i.i.i.i44 = icmp eq ptr %125, null + br i1 %.not.i.i.i.i44, label %_ZN5Eigen6TensorIdLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIdLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split _ZN5Eigen6TensorIdLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split: ; preds = %.noexc49, %.noexc33 %.sink = phi ptr [ %112, %.noexc33 ], [ %125, %.noexc49 ] @@ -62964,8 +62968,8 @@ _ZN5Eigen6TensorIiLi3ELi1ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41: ; preds = %.c .noexc49: ; preds = %_ZN5Eigen6TensorIiLi3ELi1ElE6resizeERKNS_6DSizesIlLi3EEE.exit.i41 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) %125 = load ptr, ptr %0, align 8 - %.not.i.i.i.i42 = icmp eq ptr %125, null - br i1 %.not.i.i.i.i42, label %_ZN5Eigen6TensorIiLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIiLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split + %.not.i.i.i.i44 = icmp eq ptr %125, null + br i1 %.not.i.i.i.i44, label %_ZN5Eigen6TensorIiLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit, label %_ZN5Eigen6TensorIiLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split _ZN5Eigen6TensorIiLi3ELi1ElEaSINS_9TensorMapIKS1_Li16ENS_11MakePointerEEEEERS1_RKT_.exit.sink.split: ; preds = %.noexc49, %.noexc33 %.sink = phi ptr [ %112, %.noexc33 ], [ %125, %.noexc49 ] @@ -65298,13 +65302,14 @@ _ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_5arrayIlLm3EEE.exit.i: ; preds = %.crit 15: ; preds = %_ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_5arrayIlLm3EEE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %16 = load ptr, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %.not.i.i.i = icmp eq ptr %16, null br i1 %.not.i.i.i, label %_ZN5Eigen8internal14TensorExecutorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIS4_Li16ENS_11MakePointerEEEEENS_13DefaultDeviceELb1ELNS0_15TiledEvaluationE0EE3runERSA_RKSB_.exit, label %_ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIS3_Li16ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i _ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIS3_Li16ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i: ; preds = %15 %.sroa.17.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48.copyload.i = load i64, ptr %.sroa.15.48..sroa_idx.i, align 8 %.sroa.12.48.copyload.i = load i64, ptr %4, align 8 %17 = load ptr, ptr %1, align 8 @@ -65777,13 +65782,14 @@ _ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_5arrayIlLm3EEE.exit.i: ; preds = %.crit 15: ; preds = %_ZN5Eigen6TensorIdLi3ELi1ElE6resizeERKNS_5arrayIlLm3EEE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) %16 = load ptr, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %.not.i.i.i = icmp eq ptr %16, null br i1 %.not.i.i.i, label %_ZN5Eigen8internal14TensorExecutorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIKS4_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceELb1ELNS0_15TiledEvaluationE0EE3runERSB_RKSC_.exit, label %_ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIKS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i _ZN5Eigen15TensorEvaluatorIKNS_14TensorAssignOpINS_6TensorIdLi3ELi1ElEEKNS_9TensorMapIKS3_Li0ENS_11MakePointerEEEEENS_13DefaultDeviceEE20evalSubExprsIfNeededEPd.exit.i: ; preds = %15 %.sroa.17.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + %.sroa.17.48.copyload.i = load i64, ptr %.sroa.17.48..sroa_idx.i, align 8 %.sroa.15.48.copyload.i = load i64, ptr %.sroa.15.48..sroa_idx.i, align 8 %.sroa.12.48.copyload.i = load i64, ptr %4, align 8 %17 = load ptr, ptr %1, align 8 diff --git a/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll b/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll index 0a328693cd3..7a79820e451 100644 --- a/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll +++ b/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll @@ -112,7 +112,7 @@ common.resume: ; preds = %16, %19, %6 16: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1901a67b92b931bbE.exit" %17 = landingpad { ptr, i32 } cleanup - store i8 0, ptr %12, align 1 + store i8 0, ptr %12, align 1, !noalias !10 %18 = icmp eq i64 %14, 0 br i1 %18, label %common.resume, label %19 @@ -121,15 +121,15 @@ common.resume: ; preds = %16, %19, %6 br label %common.resume 20: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1901a67b92b931bbE.exit" - store i8 0, ptr %12, align 1 + store i8 0, ptr %12, align 1, !noalias !13 %21 = icmp eq i64 %14, 0 - br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit4", label %22 + br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit2", label %22 22: ; preds = %20 tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef range(i64 1, 0) %14, i64 noundef 1) #12 - br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit4" + br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit2" -"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit4": ; preds = %20, %22 +"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit2": ; preds = %20, %22 store ptr %15, ptr @_ZN8pyo3_ffi8datetime18PyDateTimeAPI_impl17hab7e42c407a85f3aE, align 8 ret void } @@ -248,3 +248,9 @@ attributes #12 = { nounwind } !7 = distinct !{!7, !"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1901a67b92b931bbE"} !8 = !{i64 0, i64 -9223372036854775807} !9 = !{i64 1} +!10 = !{!11} +!11 = distinct !{!11, !12, !"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE: argument 0"} +!12 = distinct !{!12, !"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE"} +!13 = !{!14} +!14 = distinct !{!14, !15, !"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE: argument 0"} +!15 = distinct !{!15, !"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE"} diff --git a/bench/qdrant-rs/optimized/4x6lbqvtsqiieqxe.ll b/bench/qdrant-rs/optimized/4x6lbqvtsqiieqxe.ll index c7692c53c12..e2d4ff2296b 100644 --- a/bench/qdrant-rs/optimized/4x6lbqvtsqiieqxe.ll +++ b/bench/qdrant-rs/optimized/4x6lbqvtsqiieqxe.ll @@ -19,8 +19,8 @@ define hidden noundef zeroext i1 @"_ZN103_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as 3: ; preds = %2 %.pn3.in.i3 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.pn3.i4 = load ptr, ptr %.pn3.in.i3, align 8, !alias.scope !8, !nonnull !7, !noundef !7 %.pn3.in.i = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.pn3.i4 = load ptr, ptr %.pn3.in.i3, align 8, !alias.scope !8, !nonnull !7, !noundef !7 %.pn3.i = load ptr, ptr %.pn3.in.i, align 8, !alias.scope !4, !nonnull !7, !noundef !7 %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.pn3.i, ptr nonnull readonly align 1 %.pn3.i4, i64 %.pn1.i), !alias.scope !11 %4 = icmp eq i32 %bcmp.i.i, 0 @@ -52,7 +52,7 @@ define hidden noundef nonnull align 8 dereferenceable(24) ptr @"_ZN51_$LT$T$u20$ } ; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read) uwtable -define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17h8785b3f1268fffa5E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #3 { +define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17h8785b3f1268fffa5E"(ptr noalias noundef readonly align 8 dereferenceable(24) %0, ptr noalias noundef readonly align 8 dereferenceable(24) %1) unnamed_addr #3 { tail call void @llvm.experimental.noalias.scope.decl(metadata !22) tail call void @llvm.experimental.noalias.scope.decl(metadata !25) %.pn1.in.i.i = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -64,10 +64,10 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ 3: ; preds = %2 %.pn3.in.i3.i = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.pn3.i4.i = load ptr, ptr %.pn3.in.i3.i, align 8, !alias.scope !30, !noalias !22, !nonnull !7, !noundef !7 %.pn3.in.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.pn3.i4.i = load ptr, ptr %.pn3.in.i3.i, align 8, !alias.scope !30, !noalias !22, !nonnull !7, !noundef !7 %.pn3.i.i = load ptr, ptr %.pn3.in.i.i, align 8, !alias.scope !27, !noalias !25, !nonnull !7, !noundef !7 - %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.pn3.i.i, ptr nonnull readonly align 1 %.pn3.i4.i, i64 %.pn1.i.i), !alias.scope !33, !noalias !40 + %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.pn3.i.i, ptr nonnull readonly align 1 %.pn3.i4.i, i64 %.pn1.i.i), !alias.scope !33 %4 = icmp eq i32 %bcmp.i.i.i, 0 br label %"_ZN103_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..cmp..PartialEq$LT$alloc..borrow..Cow$LT$C$GT$$GT$$GT$2eq17ha76889d9a28119fdE.llvm.11089804546878178133.exit" @@ -115,9 +115,9 @@ define hidden noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice. ; Function Attrs: nonlazybind uwtable define { ptr, i64 } @_ZN6common5panic12downcast_str17ha4c46e5ff8048777E(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #7 { - %2 = load ptr, ptr %0, align 8, !nonnull !7, !align !41, !noundef !7 + %2 = load ptr, ptr %0, align 8, !nonnull !7, !align !40, !noundef !7 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %4 = load ptr, ptr %3, align 8, !nonnull !7, !align !42, !noundef !7 + %4 = load ptr, ptr %3, align 8, !nonnull !7, !align !41, !noundef !7 %5 = getelementptr i8, ptr %4, i64 24 %.val = load ptr, ptr %5, align 8 %6 = tail call noundef i128 %.val(ptr noundef nonnull align 1 %2) @@ -157,23 +157,23 @@ define noundef nonnull align 8 dereferenceable(8) ptr @"_ZN77_$LT$common..defaul %4 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) store ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", ptr %4, align 8 - %5 = load atomic i32, ptr getelementptr inbounds nuw (i8, ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", i64 16) acquire, align 8, !noalias !43 + %5 = load atomic i32, ptr getelementptr inbounds nuw (i8, ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", i64 16) acquire, align 8, !noalias !42 %6 = icmp eq i32 %5, 4 br i1 %6, label %_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE.exit, label %7 7: ; preds = %1 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !43 - store ptr %4, ptr %3, align 8, !noalias !43 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !43 - store ptr %3, ptr %2, align 8, !noalias !43 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !42 + store ptr %4, ptr %3, align 8, !noalias !42 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !42 + store ptr %3, ptr %2, align 8, !noalias !42 call void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E(ptr noundef nonnull align 4 getelementptr inbounds nuw (i8, ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", i64 16), i1 noundef zeroext false, ptr noalias noundef nonnull align 8 dereferenceable(8) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2e3be23e0a2f7be1ddaeadb6f174a148.14) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2), !noalias !43 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !43 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2), !noalias !42 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !42 br label %_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE.exit _ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE.exit: ; preds = %1, %7 - %8 = load ptr, ptr %4, align 8, !nonnull !7, !align !42, !noundef !7 - %9 = load i64, ptr %8, align 8, !range !46, !noundef !7 + %8 = load ptr, ptr %4, align 8, !nonnull !7, !align !41, !noundef !7 + %9 = load i64, ptr %8, align 8, !range !45, !noundef !7 %10 = icmp ne i64 %9, 0 call void @llvm.assume(i1 %10) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) @@ -188,23 +188,23 @@ define void @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$lazy_static %4 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) store ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", ptr %4, align 8 - %5 = load atomic i32, ptr getelementptr inbounds nuw (i8, ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", i64 16) acquire, align 8, !noalias !47 + %5 = load atomic i32, ptr getelementptr inbounds nuw (i8, ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", i64 16) acquire, align 8, !noalias !46 %6 = icmp eq i32 %5, 4 br i1 %6, label %"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref17h0da44dc4cec4468cE.exit", label %7 7: ; preds = %1 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !47 - store ptr %4, ptr %3, align 8, !noalias !47 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !47 - store ptr %3, ptr %2, align 8, !noalias !47 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !46 + store ptr %4, ptr %3, align 8, !noalias !46 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !46 + store ptr %3, ptr %2, align 8, !noalias !46 call void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E(ptr noundef nonnull align 4 getelementptr inbounds nuw (i8, ptr @"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref11__stability4LAZY17h586e3e9400ebdea2E", i64 16), i1 noundef zeroext false, ptr noalias noundef nonnull align 8 dereferenceable(8) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2e3be23e0a2f7be1ddaeadb6f174a148.14) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2), !noalias !47 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !47 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2), !noalias !46 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !46 br label %"_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref17h0da44dc4cec4468cE.exit" "_ZN77_$LT$common..defaults..POOL_KEEP_LIMIT$u20$as$u20$core..ops..deref..Deref$GT$5deref17h0da44dc4cec4468cE.exit": ; preds = %1, %7 - %8 = load ptr, ptr %4, align 8, !nonnull !7, !align !42, !noundef !7 - %9 = load i64, ptr %8, align 8, !range !46, !noundef !7 + %8 = load ptr, ptr %4, align 8, !nonnull !7, !align !41, !noundef !7 + %9 = load i64, ptr %8, align 8, !range !45, !noundef !7 %10 = icmp ne i64 %9, 0 call void @llvm.assume(i1 %10) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) @@ -289,13 +289,12 @@ attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessi !37 = distinct !{!37, !38, !"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h0a6f45b168ae3f7aE.llvm.11089804546878178133: argument 0"} !38 = distinct !{!38, !"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h0a6f45b168ae3f7aE.llvm.11089804546878178133"} !39 = distinct !{!39, !38, !"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h0a6f45b168ae3f7aE.llvm.11089804546878178133: argument 1"} -!40 = !{!23, !26} -!41 = !{i64 1} -!42 = !{i64 8} -!43 = !{!44} -!44 = distinct !{!44, !45, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE: argument 0"} -!45 = distinct !{!45, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE"} -!46 = !{i64 0, i64 2} -!47 = !{!48} -!48 = distinct !{!48, !49, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE: argument 0"} -!49 = distinct !{!49, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE"} +!40 = !{i64 1} +!41 = !{i64 8} +!42 = !{!43} +!43 = distinct !{!43, !44, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE: argument 0"} +!44 = distinct !{!44, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE"} +!45 = !{i64 0, i64 2} +!46 = !{!47} +!47 = distinct !{!47, !48, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE: argument 0"} +!48 = distinct !{!48, !"_ZN3std4sync4once4Once9call_once17h7627a5435cc978bcE"} diff --git a/bench/quest/optimized/QuEST_common.c.ll b/bench/quest/optimized/QuEST_common.c.ll index 7b07450d138..44296d0e9a3 100644 --- a/bench/quest/optimized/QuEST_common.c.ll +++ b/bench/quest/optimized/QuEST_common.c.ll @@ -564,28 +564,29 @@ declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readon declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #12 ; Function Attrs: nofree nounwind uwtable -define void @reportQuregParams(ptr nocapture noundef readonly byval(%struct.Qureg) align 8 %0) local_unnamed_addr #14 { - %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 +define void @reportQuregParams(ptr noundef byval(%struct.Qureg) align 8 %0) local_unnamed_addr #14 { + %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i32, ptr %2, align 8 - %4 = icmp eq i32 %3, 0 - br i1 %4, label %5, label %17 - -5: ; preds = %1 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %7 = load i32, ptr %6, align 8 - %8 = zext nneg i32 %7 to i64 - %9 = shl nuw i64 1, %8 - %10 = getelementptr inbounds nuw i8, ptr %0, i64 36 - %11 = load i32, ptr %10, align 4 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %5 = load i32, ptr %4, align 8 + %6 = icmp eq i32 %5, 0 + br i1 %6, label %7, label %18 + +7: ; preds = %1 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 36 + %9 = zext nneg i32 %3 to i64 + %10 = shl nuw i64 1, %9 + %11 = load i32, ptr %8, align 4 %12 = sext i32 %11 to i64 - %13 = sdiv i64 %9, %12 + %13 = sdiv i64 %10, %12 %puts = tail call i32 @puts(ptr nonnull dereferenceable(1) @str) - %14 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %7) - %15 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i64 noundef %9) - %16 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i64 noundef %13) - br label %17 + %14 = load i32, ptr %2, align 8 + %15 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %14) + %16 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i64 noundef %10) + %17 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i64 noundef %13) + br label %18 -17: ; preds = %5, %1 +18: ; preds = %7, %1 ret void } diff --git a/bench/rayon-rs/optimized/4ht8xefeo0zr8mzr.ll b/bench/rayon-rs/optimized/4ht8xefeo0zr8mzr.ll index 8e98806910e..ce51d060009 100644 --- a/bench/rayon-rs/optimized/4ht8xefeo0zr8mzr.ll +++ b/bench/rayon-rs/optimized/4ht8xefeo0zr8mzr.ll @@ -837,11 +837,11 @@ define void @_ZN10rayon_core5scope9ScopeBase12job_panicked17ha07ba80861f6462eE(p br i1 %19, label %"_ZN4core3ptr91drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$17h93e5c1defc8d1675E.exit", label %20 20: ; preds = %15 - %.val.i = load ptr, ptr %8, align 8, !noundef !4 - %.val1.i = load ptr, ptr %16, align 8, !nonnull !4, !align !5, !noundef !4 - %21 = load ptr, ptr %.val1.i, align 8, !invariant.load !4, !nonnull !4 + %.val.i = load ptr, ptr %8, align 8, !noalias !92, !noundef !4 + %.val1.i = load ptr, ptr %16, align 8, !noalias !92, !nonnull !4, !align !5, !noundef !4 + %21 = load ptr, ptr %.val1.i, align 8, !invariant.load !4, !noalias !92, !nonnull !4 invoke void %21(ptr noundef nonnull align 1 %.val.i) - to label %32 unwind label %22 + to label %32 unwind label %22, !noalias !92 22: ; preds = %20 %23 = landingpad { ptr, i32 } @@ -849,32 +849,32 @@ define void @_ZN10rayon_core5scope9ScopeBase12job_panicked17ha07ba80861f6462eE(p %24 = icmp ne ptr %.val.i, null tail call void @llvm.assume(i1 %24) %25 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 8 - %26 = load i64, ptr %25, align 8, !range !20, !invariant.load !4 + %26 = load i64, ptr %25, align 8, !range !20, !invariant.load !4, !noalias !92 %27 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 16 - %28 = load i64, ptr %27, align 8, !range !21, !invariant.load !4 + %28 = load i64, ptr %27, align 8, !range !21, !invariant.load !4, !noalias !92 %29 = icmp ult i64 %28, -9223372036854775807 tail call void @llvm.assume(i1 %29) %30 = icmp eq i64 %26, 0 br i1 %30, label %41, label %31 31: ; preds = %22 - tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef range(i64 1, 0) %26, i64 noundef range(i64 0, -9223372036854775807) %28) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef range(i64 1, 0) %26, i64 noundef range(i64 0, -9223372036854775807) %28) #18, !noalias !92 br label %41 32: ; preds = %20 %33 = icmp ne ptr %.val.i, null tail call void @llvm.assume(i1 %33) %34 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 8 - %35 = load i64, ptr %34, align 8, !range !20, !invariant.load !4 + %35 = load i64, ptr %34, align 8, !range !20, !invariant.load !4, !noalias !92 %36 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 16 - %37 = load i64, ptr %36, align 8, !range !21, !invariant.load !4 + %37 = load i64, ptr %36, align 8, !range !21, !invariant.load !4, !noalias !92 %38 = icmp ult i64 %37, -9223372036854775807 tail call void @llvm.assume(i1 %38) %39 = icmp eq i64 %35, 0 br i1 %39, label %42, label %40 40: ; preds = %32 - tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef range(i64 1, 0) %35, i64 noundef range(i64 0, -9223372036854775807) %37) #18 + tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef range(i64 1, 0) %35, i64 noundef range(i64 0, -9223372036854775807) %37) #18, !noalias !92 br label %42 41: ; preds = %31, %22 @@ -1319,3 +1319,6 @@ attributes #21 = { cold noreturn nounwind } !89 = !{!87, !90} !90 = distinct !{!90, !88, !"_ZN10rayon_core5scope9ScopeBase3new17h6c8fd810c126050fE: argument 1"} !91 = !{!90} +!92 = !{!93} +!93 = distinct !{!93, !94, !"_ZN4core3ptr116drop_in_place$LT$alloc..boxed..Box$LT$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h802ca3b7982e1e54E: argument 0"} +!94 = distinct !{!94, !"_ZN4core3ptr116drop_in_place$LT$alloc..boxed..Box$LT$alloc..boxed..Box$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$GT$$GT$$GT$17h802ca3b7982e1e54E"} diff --git a/bench/recastnavigation/optimized/DetourCrowd.cpp.ll b/bench/recastnavigation/optimized/DetourCrowd.cpp.ll index 5d2b0dc204a..9abe8e2543c 100644 --- a/bench/recastnavigation/optimized/DetourCrowd.cpp.ll +++ b/bench/recastnavigation/optimized/DetourCrowd.cpp.ll @@ -43,7 +43,7 @@ define void @_Z11dtFreeCrowdP7dtCrowd(ptr noundef %0) local_unnamed_addr #0 { br i1 %.not, label %3, label %2 2: ; preds = %1 - tail call void @_ZN7dtCrowdD1Ev(ptr noundef nonnull align 8 dereferenceable(5072) %0) #17 + tail call void @_ZN7dtCrowdD1Ev(ptr noundef nonnull align 8 dereferenceable(5072) %0) #18 tail call void @_Z6dtFreePv(ptr noundef nonnull %0) br label %3 @@ -83,7 +83,7 @@ define void @_ZN7dtCrowdC2Ev(ptr noundef nonnull align 8 dereferenceable(5072) i 10: ; preds = %5 %11 = landingpad { ptr, i32 } cleanup - tail call void @_ZN11dtPathQueueD1Ev(ptr noundef nonnull align 8 dereferenceable(600) %3) #17 + tail call void @_ZN11dtPathQueueD1Ev(ptr noundef nonnull align 8 dereferenceable(600) %3) #18 resume { ptr, i32 } %11 } @@ -103,14 +103,14 @@ define void @_ZN7dtCrowdD2Ev(ptr noundef nonnull align 8 dereferenceable(5072) % 2: ; preds = %1 %3 = getelementptr inbounds nuw i8, ptr %0, i64 32 - tail call void @_ZN11dtPathQueueD1Ev(ptr noundef nonnull align 8 dereferenceable(600) %3) #17 + tail call void @_ZN11dtPathQueueD1Ev(ptr noundef nonnull align 8 dereferenceable(600) %3) #18 ret void 4: ; preds = %1 %5 = landingpad { ptr, i32 } catch ptr null %6 = extractvalue { ptr, i32 } %5, 0 - tail call void @__clang_call_terminate(ptr %6) #18 + tail call void @__clang_call_terminate(ptr %6) #19 unreachable } @@ -129,9 +129,9 @@ define void @_ZN7dtCrowd5purgeEv(ptr nocapture noundef nonnull align 8 dereferen %6 = load ptr, ptr %4, align 8 %7 = getelementptr inbounds nuw %struct.dtCrowdAgent, ptr %6, i64 %indvars.iv %8 = getelementptr inbounds nuw i8, ptr %7, i64 48 - tail call void @_ZN15dtLocalBoundaryD1Ev(ptr noundef nonnull align 4 dereferenceable(308) %8) #17 + tail call void @_ZN15dtLocalBoundaryD1Ev(ptr noundef nonnull align 4 dereferenceable(308) %8) #18 %9 = getelementptr inbounds nuw i8, ptr %7, i64 8 - tail call void @_ZN14dtPathCorridorD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #17 + tail call void @_ZN14dtPathCorridorD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #18 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %10 = load i32, ptr %0, align 8 %11 = sext i32 %10 to i64 @@ -173,8 +173,8 @@ define void @_ZN7dtCrowd5purgeEv(ptr nocapture noundef nonnull align 8 dereferen ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #4 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #17 - tail call void @_ZSt9terminatev() #18 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #18 + tail call void @_ZSt9terminatev() #19 unreachable } @@ -333,7 +333,7 @@ define noundef zeroext i1 @_ZN7dtCrowd4initEifP9dtNavMesh(ptr noundef nonnull al 73: ; preds = %.lr.ph %74 = landingpad { ptr, i32 } cleanup - tail call void @_ZN14dtPathCorridorD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %71) #17 + tail call void @_ZN14dtPathCorridorD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %71) #18 resume { ptr, i32 } %74 _ZN12dtCrowdAgentC2Ev.exit: ; preds = %.lr.ph @@ -1711,16 +1711,16 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %122, %123 br i1 %or.cond.i, label %.sink.split.i, label %_ZN7dtCrowd23requestMoveTargetReplanEijPKf.exit .sink.split.i: ; preds = %134 - %137 = getelementptr inbounds nuw i8, ptr %22, i64 600 - %138 = getelementptr inbounds nuw i8, ptr %22, i64 596 - %139 = load i32, ptr %138, align 4 + %137 = getelementptr inbounds nuw i8, ptr %22, i64 596 + %138 = getelementptr inbounds nuw i8, ptr %22, i64 600 + %139 = load i32, ptr %137, align 4 %140 = load ptr, ptr %10, align 8 %141 = and i64 %33, 2147483647 %142 = getelementptr inbounds nuw %struct.dtCrowdAgent, ptr %140, i64 %141 %143 = getelementptr inbounds nuw i8, ptr %142, i64 596 store i32 %139, ptr %143, align 4 %144 = getelementptr inbounds nuw i8, ptr %142, i64 600 - %145 = load float, ptr %137, align 4 + %145 = load float, ptr %138, align 4 store float %145, ptr %144, align 4 %146 = getelementptr inbounds nuw i8, ptr %22, i64 604 %147 = load float, ptr %146, align 4 @@ -1967,10 +1967,12 @@ _ZL13getNeighboursPKfffPK12dtCrowdAgentP16dtCrowdNeighbouriPPS1_iP15dtProximityG br i1 %127, label %_ZL12addNeighbourifP16dtCrowdNeighbourii.exit.i, label %128 128: ; preds = %121 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %69, i64 32) ] %129 = load float, ptr %119, align 4 %130 = getelementptr inbounds nuw i8, ptr %126, i64 420 %131 = load float, ptr %130, align 4 %132 = fsub float %129, %131 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %76, i64 32) ] %133 = call noundef float @llvm.fabs.f32(float %132) %134 = getelementptr inbounds nuw i8, ptr %126, i64 484 %135 = load float, ptr %134, align 4 @@ -1981,15 +1983,15 @@ _ZL13getNeighboursPKfffPK12dtCrowdAgentP16dtCrowdNeighbouriPPS1_iP15dtProximityG 139: ; preds = %128 %140 = load float, ptr %76, align 4 - %141 = getelementptr inbounds nuw i8, ptr %126, i64 424 - %142 = load float, ptr %141, align 4 - %143 = fsub float %140, %142 - %144 = getelementptr inbounds nuw i8, ptr %126, i64 416 - %145 = load float, ptr %69, align 4 - %146 = load float, ptr %144, align 4 - %147 = fsub float %145, %146 + %141 = load float, ptr %69, align 4 + %142 = getelementptr inbounds nuw i8, ptr %126, i64 424 + %143 = getelementptr inbounds nuw i8, ptr %126, i64 416 + %144 = load float, ptr %142, align 4 + %145 = fsub float %140, %144 + %146 = load float, ptr %143, align 4 + %147 = fsub float %141, %146 %148 = call float @llvm.fmuladd.f32(float %147, float %147, float 0.000000e+00) - %149 = call noundef float @llvm.fmuladd.f32(float %143, float %143, float %148) + %149 = call noundef float @llvm.fmuladd.f32(float %145, float %145, float %148) %150 = fcmp ogt float %149, %120 br i1 %150, label %_ZL12addNeighbourifP16dtCrowdNeighbourii.exit.i, label %151 @@ -2735,7 +2737,7 @@ _ZL17getDistanceToGoalPK12dtCrowdAgentf.exit: ; preds = %_ZL24calcSmoothStee %591 = load ptr, ptr %338, align 8 br label %592 -592: ; preds = %._crit_edge468, %590 +592: ; preds = %590, %._crit_edge468 %.0346 = phi ptr [ %591, %590 ], [ null, %._crit_edge468 ] %593 = getelementptr inbounds nuw i8, ptr %528, i64 509 %594 = load i8, ptr %593, align 1 @@ -3282,17 +3284,20 @@ declare noundef i32 @_ZNK15dtProximityGrid10queryItemsEffffPti(ptr noundef nonnu ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare float @llvm.fabs.f32(float) #14 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #15 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #15 +declare i32 @llvm.smin.i32(i32, i32) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.sqrt.f32(float) #15 +declare float @llvm.sqrt.f32(float) #16 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #17 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #16 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #17 attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -3309,10 +3314,11 @@ attributes #11 = { mustprogress nofree norecurse nosync nounwind willreturn memo attributes #12 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #13 = { mustprogress nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #14 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #17 = { nounwind } -attributes #18 = { noreturn nounwind } +attributes #15 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #16 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #17 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #18 = { nounwind } +attributes #19 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/regex-rs/optimized/12jtvy3iayrg5nam.ll b/bench/regex-rs/optimized/12jtvy3iayrg5nam.ll index c8d50d2ca35..1b682d48828 100644 --- a/bench/regex-rs/optimized/12jtvy3iayrg5nam.ll +++ b/bench/regex-rs/optimized/12jtvy3iayrg5nam.ll @@ -424,7 +424,7 @@ define hidden void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..ast..ClassSetI } ; Function Attrs: nonlazybind uwtable -define hidden void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$regex_syntax..ast..ClassBracketed$GT$$GT$17h0e2e85edbf9e6afeE.llvm.16653392013706621149"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { +define hidden void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$regex_syntax..ast..ClassBracketed$GT$$GT$17h0e2e85edbf9e6afeE.llvm.16653392013706621149"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #1 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !noundef !7 %3 = getelementptr inbounds nuw i8, ptr %2, i64 48 invoke void @"_ZN69_$LT$regex_syntax..ast..ClassSet$u20$as$u20$core..ops..drop..Drop$GT$4drop17h38fdbb33aa3b38ebE"(ptr noalias noundef nonnull align 8 dereferenceable(160) %3) @@ -454,11 +454,11 @@ define hidden void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$regex_s 13: ; preds = %4 invoke void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..ast..ClassSetItem$GT$17h75bd48fbf438fdd5E.llvm.15241997999693184539"(ptr noalias noundef nonnull align 8 dereferenceable(160) %3) #35 - to label %19 unwind label %15 + to label %20 unwind label %15 14: ; preds = %4 invoke void @"_ZN4core3ptr56drop_in_place$LT$regex_syntax..ast..ClassSetBinaryOp$GT$17hc0146bac5a5d2320E.llvm.15241997999693184539"(ptr noalias noundef nonnull align 8 dereferenceable(160) %3) #35 - to label %19 unwind label %15 + to label %20 unwind label %15 15: ; preds = %14, %13 %16 = landingpad { ptr, i32 } @@ -469,15 +469,17 @@ define hidden void @"_ZN4core3ptr79drop_in_place$LT$alloc..boxed..Box$LT$regex_s 17: ; preds = %12, %11 %18 = landingpad { ptr, i32 } cleanup - br label %19 + br label %20 "_ZN4core3ptr54drop_in_place$LT$regex_syntax..ast..ClassBracketed$GT$17h4684b329539f8b3cE.exit": ; preds = %11, %12 - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 216, i64 noundef 8) #36, !noalias !48 + %19 = load ptr, ptr %0, align 8, !alias.scope !48, !nonnull !7, !noundef !7 + tail call void @__rust_dealloc(ptr noundef nonnull %19, i64 noundef 216, i64 noundef 8) #36 ret void -19: ; preds = %17, %14, %13 +20: ; preds = %17, %14, %13 %eh.lpad-body = phi { ptr, i32 } [ %18, %17 ], [ %5, %14 ], [ %5, %13 ] - tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 216, i64 noundef 8) #36, !noalias !51 + %21 = load ptr, ptr %0, align 8, !alias.scope !51, !nonnull !7, !noundef !7 + tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef 216, i64 noundef 8) #36 resume { ptr, i32 } %eh.lpad-body } @@ -1018,7 +1020,7 @@ define hidden noalias noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17t } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2e50e65a6d215717E.llvm.16653392013706621149"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0) unnamed_addr #8 { +define hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2e50e65a6d215717E.llvm.16653392013706621149"(ptr noalias noundef align 8 dereferenceable(8) %0) unnamed_addr #8 { %2 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 216, i64 noundef 8) #36 ret void @@ -5040,6 +5042,7 @@ _ZN12regex_syntax3hir7literal3Seq9singleton17h72802fcc184ebda0E.exit: ; preds = br i1 %21, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf227888ce4bcc3c2E.exit.thread", label %.lr.ph .lr.ph: ; preds = %_ZN12regex_syntax3hir7literal3Seq9singleton17h72802fcc184ebda0E.exit + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.42.0..sroa_idx.i, i64 0) ] %22 = getelementptr inbounds nuw i8, ptr %6, i64 8 %23 = getelementptr inbounds nuw i8, ptr %6, i64 16 %24 = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -5231,6 +5234,7 @@ _ZN12regex_syntax3hir7literal3Seq9singleton17h72802fcc184ebda0E.exit: ; preds = br i1 %21, label %"_ZN98_$LT$core..iter..adapters..rev..Rev$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3f29910a10a55ec0E.exit.thread", label %.lr.ph .lr.ph: ; preds = %_ZN12regex_syntax3hir7literal3Seq9singleton17h72802fcc184ebda0E.exit + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.42.0..sroa_idx.i, i64 0) ] %22 = getelementptr inbounds nuw i8, ptr %6, i64 8 %23 = getelementptr inbounds nuw i8, ptr %6, i64 16 %24 = getelementptr inbounds nuw i8, ptr %5, i64 8 diff --git a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll index 0b8dc768270..d6cb7e3c94e 100644 --- a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll +++ b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll @@ -1050,7 +1050,7 @@ _ZN4ring2ec7suite_b3ops15PublicScalarOps19elem_equals_vartime17hd61349d7740fa831 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable -define void @_ZN4ring2ec7suite_b5ecdsa12verification14split_rs_fixed17he1e47c4bedf8b8e4E(ptr noalias nocapture noundef writeonly sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) initializes((0, 8)) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %2) unnamed_addr #9 { +define void @_ZN4ring2ec7suite_b5ecdsa12verification14split_rs_fixed17he1e47c4bedf8b8e4E(ptr noalias nocapture noundef writeonly sret({ ptr, [3 x i64] }) align 8 dereferenceable(32) initializes((0, 8)) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1, ptr noalias noundef align 8 dereferenceable(24) %2) unnamed_addr #9 { tail call void @llvm.experimental.noalias.scope.decl(metadata !200) %4 = load ptr, ptr %1, align 8, !alias.scope !200, !nonnull !4, !align !9, !noundef !4 %5 = getelementptr inbounds nuw i8, ptr %4, i64 24 @@ -1061,46 +1061,48 @@ define void @_ZN4ring2ec7suite_b5ecdsa12verification14split_rs_fixed17he1e47c4be %10 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %9, i64 %7) %11 = extractvalue { i64, i1 } %10, 0 %12 = extractvalue { i64, i1 } %10, 1 - %13 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %14 = load i64, ptr %13, align 8, !alias.scope !206 - %15 = icmp ugt i64 %11, %14 - %or.cond.i = select i1 %12, i1 true, i1 %15 - br i1 %or.cond.i, label %22, label %16 + br i1 %12, label %23, label %13 -16: ; preds = %3 - %17 = load ptr, ptr %2, align 8, !alias.scope !206, !nonnull !4, !align !5, !noundef !4 +13: ; preds = %3 + %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %15 = load i64, ptr %14, align 8, !alias.scope !206, !noundef !4 + %16 = icmp ugt i64 %11, %15 + br i1 %16, label %23, label %17 + +17: ; preds = %13 + %18 = load ptr, ptr %2, align 8, !alias.scope !206, !nonnull !4, !align !5, !noundef !4 store i64 %11, ptr %8, align 8, !alias.scope !206 - %18 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %11, i64 %7) - %19 = extractvalue { i64, i1 } %18, 0 - %20 = extractvalue { i64, i1 } %18, 1 - %21 = icmp ugt i64 %19, %14 - %or.cond.i14 = select i1 %20, i1 true, i1 %21 - br i1 %or.cond.i14, label %28, label %23 - -22: ; preds = %3 + %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %11, i64 %7) + %20 = extractvalue { i64, i1 } %19, 0 + %21 = extractvalue { i64, i1 } %19, 1 + %22 = icmp ugt i64 %20, %15 + %or.cond = or i1 %21, %22 + br i1 %or.cond, label %29, label %24 + +23: ; preds = %3, %13 store ptr null, ptr %0, align 8 - br label %29 - -23: ; preds = %16 - %24 = sub nuw i64 %11, %9 - %25 = getelementptr inbounds i8, ptr %17, i64 %9 - %26 = sub nuw i64 %19, %11 - %27 = getelementptr inbounds i8, ptr %17, i64 %11 - store i64 %19, ptr %8, align 8, !alias.scope !209 + br label %30 + +24: ; preds = %17 + %25 = getelementptr inbounds i8, ptr %18, i64 %9 + %26 = sub nuw i64 %11, %9 + %27 = sub nuw i64 %20, %11 + %28 = getelementptr inbounds i8, ptr %18, i64 %11 + store i64 %20, ptr %8, align 8, !alias.scope !209 store ptr %25, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %24, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %26, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.513.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %27, ptr %.sroa.513.0..sroa_idx, align 8 + store ptr %28, ptr %.sroa.513.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %26, ptr %.sroa.6.0..sroa_idx, align 8 - br label %29 + store i64 %27, ptr %.sroa.6.0..sroa_idx, align 8 + br label %30 -28: ; preds = %16 +29: ; preds = %17 store ptr null, ptr %0, align 8 - br label %29 + br label %30 -29: ; preds = %28, %23, %22 +30: ; preds = %29, %24, %23 ret void } @@ -1302,7 +1304,7 @@ define hidden void @_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc } ; Function Attrs: nonlazybind uwtable -define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31dc8bca06E(ptr noalias nocapture noundef writeonly sret({ i64, [6 x i64] }) align 8 dereferenceable(56) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %2) unnamed_addr #2 { +define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31dc8bca06E(ptr noalias nocapture noundef writeonly sret({ i64, [6 x i64] }) align 8 dereferenceable(56) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %1, ptr noalias noundef align 8 dereferenceable(24) %2) unnamed_addr #2 { %4 = alloca { [6 x i64], {}, {} }, align 8 %5 = alloca { [6 x i64], {}, {} }, align 8 %6 = alloca { [6 x i64], {}, {} }, align 8 @@ -1316,10 +1318,10 @@ define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31 %14 = extractvalue { i64, i1 } %13, 0 %15 = extractvalue { i64, i1 } %13, 1 %16 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %17 = load i64, ptr %16, align 8, !alias.scope !266 + %17 = load i64, ptr %16, align 8 %18 = icmp ugt i64 %14, %17 - %or.cond.i = select i1 %15, i1 true, i1 %18 - br i1 %or.cond.i, label %28, label %19 + %or.cond = select i1 %15, i1 true, i1 %18 + br i1 %or.cond, label %28, label %19 19: ; preds = %3 %20 = load ptr, ptr %2, align 8, !alias.scope !266, !nonnull !4, !align !5, !noundef !4 diff --git a/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll b/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll index 5349b55c428..5017aa338d3 100644 --- a/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll +++ b/bench/ripgrep-rs/optimized/1en8ulv4lf1lnd4m.ll @@ -1472,9 +1472,12 @@ define void @"_ZN81_$LT$grep_printer..color..UserColorSpec$u20$as$u20$core..str. %.sroa.4128 = alloca [2 x i64], align 8 %7 = alloca { i64, [3 x i64] }, align 8 %8 = alloca { [3 x i64], i64, [2 x i64] }, align 8 + %.sroa.574 = alloca [2 x i64], align 8 %9 = alloca { i64, [3 x i64] }, align 8 %10 = alloca { [3 x i64], i64, [2 x i64] }, align 8 + %.sroa.554 = alloca [2 x i64], align 8 %11 = alloca { [3 x i64], i64, [2 x i64] }, align 8 + %.sroa.532 = alloca [2 x i64], align 8 %12 = alloca { [3 x i64], i64, [2 x i64] }, align 8 %13 = alloca { [3 x i64], i64, [2 x i64] }, align 8 %14 = alloca { { i64, i64, { { ptr, i64 }, i64, i64, i64, [4 x i8], i32 }, i8, i8, [6 x i8] } }, align 8 @@ -1631,6 +1634,7 @@ default.unreachable: ; preds = %51 br label %82 64: ; preds = %53 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.554) %65 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0decea5e8c6e3a6dE"(i64 noundef %2, i1 noundef zeroext false) to label %100 unwind label %72 @@ -1748,9 +1752,13 @@ default.unreachable: ; preds = %51 store i64 %2, ptr %.sroa.052.sroa.5.0..sroa_idx, align 8 %.sroa.453.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 -9223372036854775804, ptr %.sroa.453.0..sroa_idx, align 8 + %.sroa.554.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.554.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.554, i64 16, i1 false) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.554) br label %91 104: ; preds = %56 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.574) %105 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0decea5e8c6e3a6dE"(i64 noundef %2, i1 noundef zeroext false) to label %120 unwind label %72 @@ -1816,9 +1824,13 @@ default.unreachable: ; preds = %51 store i64 %2, ptr %.sroa.072.sroa.5.0..sroa_idx, align 8 %.sroa.473.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 -9223372036854775804, ptr %.sroa.473.0..sroa_idx, align 8 + %.sroa.574.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.574.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.574, i64 16, i1 false) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.574) br label %91 124: ; preds = %59 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.532) %125 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0decea5e8c6e3a6dE"(i64 noundef %2, i1 noundef zeroext false) to label %140 unwind label %72 @@ -1877,6 +1889,9 @@ default.unreachable: ; preds = %51 store i64 %2, ptr %.sroa.030.sroa.5.0..sroa_idx, align 8 %.sroa.431.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 -9223372036854775804, ptr %.sroa.431.0..sroa_idx, align 8 + %.sroa.532.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.532.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.532, i64 16, i1 false) + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.532) br label %91 144: ; preds = %72, %27 diff --git a/bench/ripgrep-rs/optimized/1rzxgyr0fo8f0ob1.ll b/bench/ripgrep-rs/optimized/1rzxgyr0fo8f0ob1.ll index 9b163292e03..00301271fc5 100644 --- a/bench/ripgrep-rs/optimized/1rzxgyr0fo8f0ob1.ll +++ b/bench/ripgrep-rs/optimized/1rzxgyr0fo8f0ob1.ll @@ -250,7 +250,7 @@ define { ptr, i64 } @_ZN13grep_searcher11line_buffer10LineBuffer6buffer17h8f688a } ; Function Attrs: nonlazybind uwtable -define { ptr, i64 } @_ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE(ptr noalias nocapture noundef readonly align 8 dereferenceable(104) %0) unnamed_addr #2 { +define { ptr, i64 } @_ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE(ptr noalias noundef align 8 dereferenceable(104) %0) unnamed_addr #2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 88 %3 = load i64, ptr %2, align 8, !noundef !18 %4 = getelementptr inbounds nuw i8, ptr %0, i64 64 @@ -354,7 +354,6 @@ define noundef ptr @_ZN13grep_searcher11line_buffer10LineBuffer15ensure_capacity %3 = alloca [1 x { ptr, ptr }], align 8 %4 = alloca { { { i64, ptr, {} }, i64 } }, align 8 %5 = alloca i64, align 8 - tail call void @llvm.experimental.noalias.scope.decl(metadata !37) %6 = getelementptr inbounds nuw i8, ptr %0, i64 88 %7 = load i64, ptr %6, align 8, !alias.scope !37, !noundef !18 %8 = getelementptr inbounds nuw i8, ptr %0, i64 64 @@ -363,7 +362,7 @@ define noundef ptr @_ZN13grep_searcher11line_buffer10LineBuffer15ensure_capacity br i1 %10, label %11, label %_ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE.exit 11: ; preds = %1 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hdaca407d67a34612E(i64 noundef %7, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.063a6eda66e372215699932fa5a1275a.21) #12, !noalias !37 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hdaca407d67a34612E(i64 noundef %7, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.063a6eda66e372215699932fa5a1275a.21) #12 unreachable _ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE.exit: ; preds = %1 @@ -448,12 +447,11 @@ _ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE.exi "_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17ha747805b17fd1d65E.exit": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h8de0378bf96c9949E.llvm.12743913752286771008.exit.i", %34 %35 = phi i64 [ %32, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h8de0378bf96c9949E.llvm.12743913752286771008.exit.i" ], [ %.pre11, %34 ] %36 = phi i64 [ %7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h8de0378bf96c9949E.llvm.12743913752286771008.exit.i" ], [ %.pre, %34 ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !58) %37 = icmp ugt i64 %36, %35 br i1 %37, label %38, label %_ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE.exit6 38: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17ha747805b17fd1d65E.exit" - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hdaca407d67a34612E(i64 noundef %36, i64 noundef %35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.063a6eda66e372215699932fa5a1275a.21) #12, !noalias !58 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hdaca407d67a34612E(i64 noundef %36, i64 noundef %35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.063a6eda66e372215699932fa5a1275a.21) #12 unreachable _ZN13grep_searcher11line_buffer10LineBuffer11free_buffer17h3180c133324235abE.exit6: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17ha747805b17fd1d65E.exit" diff --git a/bench/ripgrep-rs/optimized/3xecgmndlg4aprp5.ll b/bench/ripgrep-rs/optimized/3xecgmndlg4aprp5.ll index 8eefd1b357b..dc1c7740baf 100644 --- a/bench/ripgrep-rs/optimized/3xecgmndlg4aprp5.ll +++ b/bench/ripgrep-rs/optimized/3xecgmndlg4aprp5.ll @@ -1398,21 +1398,21 @@ _ZN5alloc3fmt6format17hf6ddbaba453730d3E.exit217: ; preds = %434 467: ; preds = %464 %468 = landingpad { ptr, i32 } cleanup - call void @__rust_dealloc(ptr noundef nonnull %460, i64 noundef %.val178, i64 noundef 1) #13, !noalias !135 + call void @__rust_dealloc(ptr noundef nonnull %460, i64 noundef %.val178, i64 noundef 1) #13 br label %.body228.thread _ZN12regex_syntax3hir3Hir7literal17h01fb2dff5d6815b1E.exit: ; preds = %466, %.noexc227 - %469 = load i64, ptr %245, align 8, !alias.scope !142, !noalias !145, !noundef !4 - %470 = load i64, ptr %49, align 8, !alias.scope !142, !noalias !145, !noundef !4 + %469 = load i64, ptr %245, align 8, !alias.scope !135, !noalias !138, !noundef !4 + %470 = load i64, ptr %49, align 8, !alias.scope !135, !noalias !138, !noundef !4 %471 = icmp eq i64 %469, %470 br i1 %471, label %472, label %477 472: ; preds = %_ZN12regex_syntax3hir3Hir7literal17h01fb2dff5d6815b1E.exit invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hd8b94c2e03c0a7d6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %49, i64 noundef %469) - to label %._crit_edge.i230 unwind label %473, !noalias !145 + to label %._crit_edge.i230 unwind label %473, !noalias !138 ._crit_edge.i230: ; preds = %472 - %.pre.i231 = load i64, ptr %245, align 8, !alias.scope !142, !noalias !145 + %.pre.i231 = load i64, ptr %245, align 8, !alias.scope !135, !noalias !138 br label %477 473: ; preds = %472 @@ -1429,11 +1429,11 @@ _ZN12regex_syntax3hir3Hir7literal17h01fb2dff5d6815b1E.exit: ; preds = %466, %.no 477: ; preds = %._crit_edge.i230, %_ZN12regex_syntax3hir3Hir7literal17h01fb2dff5d6815b1E.exit %478 = phi i64 [ %.pre.i231, %._crit_edge.i230 ], [ %469, %_ZN12regex_syntax3hir3Hir7literal17h01fb2dff5d6815b1E.exit ] - %479 = load ptr, ptr %244, align 8, !alias.scope !142, !noalias !145, !nonnull !4, !noundef !4 + %479 = load ptr, ptr %244, align 8, !alias.scope !135, !noalias !138, !nonnull !4, !noundef !4 %480 = getelementptr inbounds { { i64, [4 x i64] }, ptr }, ptr %479, i64 %478 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %480, ptr noundef nonnull align 8 dereferenceable(48) %48, i64 48, i1 false) %481 = add i64 %478, 1 - store i64 %481, ptr %245, align 8, !alias.scope !142, !noalias !145 + store i64 %481, ptr %245, align 8, !alias.scope !135, !noalias !138 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %48) %482 = icmp eq ptr %457, %246 br i1 %482, label %._crit_edge, label %456 @@ -1729,15 +1729,8 @@ attributes #13 = { nounwind } !132 = !{!133} !133 = distinct !{!133, !131, !"_ZN12regex_syntax3hir3Hir7literal17h01fb2dff5d6815b1E: argument 1"} !134 = !{!130, !133} -!135 = !{!136, !138, !140} -!136 = distinct !{!136, !137, !"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf851cd81d9bebd7dE.llvm.8519985026491776260: argument 0"} -!137 = distinct !{!137, !"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf851cd81d9bebd7dE.llvm.8519985026491776260"} -!138 = distinct !{!138, !139, !"_ZN4core3ptr58drop_in_place$LT$alloc..boxed..Box$LT$$u5b$u8$u5d$$GT$$GT$17hf82b76fa0a8846a6E.llvm.8519985026491776260: argument 0"} -!139 = distinct !{!139, !"_ZN4core3ptr58drop_in_place$LT$alloc..boxed..Box$LT$$u5b$u8$u5d$$GT$$GT$17hf82b76fa0a8846a6E.llvm.8519985026491776260"} -!140 = distinct !{!140, !141, !"_ZN4core3ptr47drop_in_place$LT$regex_syntax..hir..Literal$GT$17hac0038cb0cc360b2E: argument 0"} -!141 = distinct !{!141, !"_ZN4core3ptr47drop_in_place$LT$regex_syntax..hir..Literal$GT$17hac0038cb0cc360b2E"} -!142 = !{!143} -!143 = distinct !{!143, !144, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h6dde89e9a4b78feeE: argument 0"} -!144 = distinct !{!144, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h6dde89e9a4b78feeE"} -!145 = !{!146} -!146 = distinct !{!146, !144, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h6dde89e9a4b78feeE: argument 1"} +!135 = !{!136} +!136 = distinct !{!136, !137, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h6dde89e9a4b78feeE: argument 0"} +!137 = distinct !{!137, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h6dde89e9a4b78feeE"} +!138 = !{!139} +!139 = distinct !{!139, !137, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h6dde89e9a4b78feeE: argument 1"} diff --git a/bench/ropey-rs/optimized/1pm5yglvzoctacuo.ll b/bench/ropey-rs/optimized/1pm5yglvzoctacuo.ll index bd6c8fed562..466c4e95949 100644 --- a/bench/ropey-rs/optimized/1pm5yglvzoctacuo.ll +++ b/bench/ropey-rs/optimized/1pm5yglvzoctacuo.ll @@ -520,7 +520,7 @@ define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$4push17hdd02d0c64248e16cE.ll } ; Function Attrs: inlinehint nonlazybind uwtable -define internal fastcc noundef i64 @_ZN5ropey4crlf15find_good_split17h00e2bcb1aee4718fE(i64 noundef %0, ptr noalias nocapture noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #2 { +define internal fastcc noundef i64 @_ZN5ropey4crlf15find_good_split17h00e2bcb1aee4718fE(i64 noundef %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #2 { tail call void @llvm.experimental.noalias.scope.decl(metadata !67) %4 = icmp eq i64 %0, 0 %5 = icmp eq i64 %0, %2 @@ -611,8 +611,7 @@ _ZN5ropey4crlf8is_break17hbb99524973515bbeE.exit14.backedge: ; preds = %28, %23 br i1 %41, label %_ZN5ropey4crlf8is_break17hbb99524973515bbeE.exit17.backedge, label %43 42: ; preds = %.lr.ph34 - %umax = tail call i64 @llvm.umax.i64(i64 %2, i64 %.sroa.04.130) - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %umax, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c936418fd5a4ec51dbfb54016c8106a4.53) #21, !noalias !74 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.04.133, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c936418fd5a4ec51dbfb54016c8106a4.53) #21, !noalias !74 unreachable 43: ; preds = %38 @@ -3644,9 +3643,6 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #20 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #20 - 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 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/rust-analyzer-rs/optimized/43nczfbfdd1c6gc3.ll b/bench/rust-analyzer-rs/optimized/43nczfbfdd1c6gc3.ll index d89f93f37d3..53fe3f87594 100644 --- a/bench/rust-analyzer-rs/optimized/43nczfbfdd1c6gc3.ll +++ b/bench/rust-analyzer-rs/optimized/43nczfbfdd1c6gc3.ll @@ -369,7 +369,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h4d7653b662bc8b18 %3 = getelementptr inbounds nuw i8, ptr %2, i64 8 %4 = getelementptr inbounds nuw i8, ptr %2, i64 40 invoke void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h456d885ccf2b13ebE(ptr noalias noundef nonnull align 8 dereferenceable(32) %3, ptr noalias noundef nonnull readonly align 1 %4, i64 noundef 48, i64 noundef 16) - to label %"_ZN4core3ptr92drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$cfg..CfgOptions$GT$$GT$$GT$17h71a310fafd080e5eE.exit" unwind label %5 + to label %"_ZN4core3ptr92drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$cfg..CfgOptions$GT$$GT$$GT$17h71a310fafd080e5eE.exit" unwind label %5, !noalias !66 5: ; preds = %1 %6 = landingpad { ptr, i32 } @@ -592,3 +592,6 @@ attributes #16 = { nounwind } !63 = distinct !{!63, !62, !"_ZN105_$LT$std..collections..hash..set..IntoIter$LT$K$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h0697bc662ecf908dE.llvm.17615631831202531237: argument 1"} !64 = !{!63} !65 = !{!61} +!66 = !{!67} +!67 = distinct !{!67, !68, !"_ZN4core3ptr92drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$cfg..CfgOptions$GT$$GT$$GT$17h71a310fafd080e5eE: argument 0"} +!68 = distinct !{!68, !"_ZN4core3ptr92drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$cfg..CfgOptions$GT$$GT$$GT$17h71a310fafd080e5eE"} diff --git a/bench/rust-analyzer-rs/optimized/4s35iu99nk8vtuto.ll b/bench/rust-analyzer-rs/optimized/4s35iu99nk8vtuto.ll index 25c962f592a..a423c71a7a4 100644 --- a/bench/rust-analyzer-rs/optimized/4s35iu99nk8vtuto.ll +++ b/bench/rust-analyzer-rs/optimized/4s35iu99nk8vtuto.ll @@ -2662,12 +2662,12 @@ _ZN5rowan6cursor8NodeData6inc_rc17h79dd31861126988eE.llvm.3712155024907033177.ex 172: ; preds = %"_ZN79_$LT$syntax..ast..generated..nodes..Literal$u20$as$u20$syntax..ast..AstNode$GT$4cast17h14ad986240d14d3eE.exit" store ptr %163, ptr %36, align 8, !noalias !658 %173 = load i64, ptr %163, align 8, !range !30, !noundef !4 - %switch.not.not.i.i197 = icmp eq i64 %173, 0 - br i1 %switch.not.not.i.i197, label %186, label %174 + %switch.not.not.i.i198 = icmp eq i64 %173, 0 + br i1 %switch.not.not.i.i198, label %186, label %174 174: ; preds = %172 - %.sroa.3.0.in.i.i.i198 = getelementptr inbounds nuw i8, ptr %163, i64 8 - %.sroa.3.0.i.i.i199 = load ptr, ptr %.sroa.3.0.in.i.i.i198, align 8, !nonnull !4, !noundef !4 + %.sroa.3.0.in.i.i.i197 = getelementptr inbounds nuw i8, ptr %163, i64 8 + %.sroa.3.0.i.i.i199 = load ptr, ptr %.sroa.3.0.in.i.i.i197, align 8, !nonnull !4, !noundef !4 %175 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i.i.i199, i64 8 %176 = load i64, ptr %175, align 8, !noundef !4 %177 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i.i.i199, i64 16 @@ -8058,11 +8058,11 @@ _ZN6syntax10validation21validate_numeric_name9int_token17he2955e0a5476c1a0E.exit 60: ; preds = %_ZN6syntax10validation21validate_numeric_name9int_token17he2955e0a5476c1a0E.exit %61 = load i64, ptr %.1.i, align 8, !range !30, !noundef !4 + %.sroa.3.0.in.i.i = getelementptr inbounds nuw i8, ptr %.1.i, i64 8 %switch.not.not.i = icmp eq i64 %61, 0 br i1 %switch.not.not.i, label %73, label %62 62: ; preds = %60 - %.sroa.3.0.in.i.i = getelementptr inbounds nuw i8, ptr %.1.i, i64 8 %.sroa.3.0.i.i = load ptr, ptr %.sroa.3.0.in.i.i, align 8, !nonnull !4, !noundef !4 %63 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i.i, i64 8 %64 = load i64, ptr %63, align 8, !noundef !4 @@ -8181,8 +8181,7 @@ _ZN6syntax10validation21validate_numeric_name9int_token17he2955e0a5476c1a0E.exit .noexc13: ; preds = %..noexc13_crit_edge, %121 %126 = phi i64 [ %61, %121 ], [ %.pre, %..noexc13_crit_edge ] %.0.i.i11 = phi i32 [ %123, %121 ], [ %125, %..noexc13_crit_edge ] - %.sroa.3.0.in.i.i.i = getelementptr inbounds nuw i8, ptr %.1.i, i64 8 - %.sroa.3.0.i.i.i = load ptr, ptr %.sroa.3.0.in.i.i.i, align 8, !noalias !2127, !nonnull !4, !noundef !4 + %.sroa.3.0.i.i.i = load ptr, ptr %.sroa.3.0.in.i.i, align 8, !noalias !2127, !nonnull !4, !noundef !4 %switch.i.i.i = icmp eq i64 %126, 0 br i1 %switch.i.i.i, label %127, label %129 diff --git a/bench/slurm/optimized/sort.ll b/bench/slurm/optimized/sort.ll index 2f5fc40f53d..abf79c48e4b 100644 --- a/bench/slurm/optimized/sort.ll +++ b/bench/slurm/optimized/sort.ll @@ -17,13 +17,13 @@ define dso_local void @sort_job_list(ptr noundef %0) local_unnamed_addr #0 { br i1 %3, label %4, label %6 4: ; preds = %1 - %5 = tail call ptr @xstrdup(ptr noundef nonnull @.str) #7 + %5 = tail call ptr @xstrdup(ptr noundef nonnull @.str) #8 store ptr %5, ptr getelementptr inbounds nuw (i8, ptr @params, i64 64), align 8 br label %6 6: ; preds = %4, %1 %7 = phi ptr [ %5, %4 ], [ %2, %1 ] - %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #8 + %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #9 %9 = trunc i64 %8 to i32 %10 = icmp sgt i32 %9, 0 br i1 %10, label %.lr.ph.preheader, label %._crit_edge @@ -113,13 +113,13 @@ define dso_local void @sort_job_list(ptr noundef %0) local_unnamed_addr #0 { 33: ; preds = %15 %34 = sext i8 %14 to i32 - %35 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.1, i32 noundef %34) #7 - tail call void @exit(i32 noundef 1) #9 + %35 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.1, i32 noundef %34) #8 + tail call void @exit(i32 noundef 1) #10 unreachable .backedge.sink.split: ; preds = %15, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20 %_sort_by_cluster_name.sink = phi ptr [ @_sort_by_job_id, %20 ], [ @_sort_by_nice_level, %21 ], [ @_sort_by_qos_name, %22 ], [ @_sort_by_account, %23 ], [ @_sort_by_partition, %24 ], [ @_sort_by_username, %25 ], [ @_sort_by_age_prio, %26 ], [ @_sort_by_fairshare_prio, %27 ], [ @_sort_by_jobsize_prio, %28 ], [ @_sort_by_partition_prio, %29 ], [ @_sort_by_qos_prio, %30 ], [ @_sort_by_tres_prio, %31 ], [ @_sort_by_job_prio, %32 ], [ @_sort_by_cluster_name, %15 ] - tail call void @list_sort(ptr noundef %0, ptr noundef nonnull %_sort_by_cluster_name.sink) #7 + tail call void @list_sort(ptr noundef %0, ptr noundef nonnull %_sort_by_cluster_name.sink) #8 br label %.backedge .backedge: ; preds = %.backedge.sink.split, %.lr.ph @@ -145,7 +145,7 @@ define internal i32 @_sort_by_cluster_name(ptr nocapture noundef readonly %0, pt %5 = load ptr, ptr %4, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 %7 = load ptr, ptr %6, align 8 - %8 = tail call i32 @xstrcmp(ptr noundef %5, ptr noundef %7) #7 + %8 = tail call i32 @xstrcmp(ptr noundef %5, ptr noundef %7) #8 %.b3 = load i1, ptr @sort_descend, align 1 %9 = sub nsw i32 0, %8 %10 = select i1 %.b3, i32 %9, i32 %8 @@ -167,8 +167,8 @@ define internal range(i32 -1, 2) i32 @_sort_by_job_id(ptr nocapture noundef read ret i32 %10 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define internal range(i32 -1, 2) i32 @_sort_by_nice_level(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define internal range(i32 -1, 2) i32 @_sort_by_nice_level(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { %.val = load ptr, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %4 = load ptr, ptr %3, align 8 @@ -201,7 +201,7 @@ define internal i32 @_sort_by_qos_name(ptr nocapture noundef readonly %0, ptr no %5 = load ptr, ptr %4, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 48 %7 = load ptr, ptr %6, align 8 - %8 = tail call i32 @xstrcmp(ptr noundef %5, ptr noundef %7) #7 + %8 = tail call i32 @xstrcmp(ptr noundef %5, ptr noundef %7) #8 %.b3 = load i1, ptr @sort_descend, align 1 %9 = sub nsw i32 0, %8 %10 = select i1 %.b3, i32 %9, i32 %8 @@ -214,7 +214,7 @@ define internal i32 @_sort_by_account(ptr nocapture noundef readonly %0, ptr noc %3 = load ptr, ptr %1, align 8 %4 = load ptr, ptr %.val, align 8 %5 = load ptr, ptr %3, align 8 - %6 = tail call i32 @xstrcmp(ptr noundef %4, ptr noundef %5) #7 + %6 = tail call i32 @xstrcmp(ptr noundef %4, ptr noundef %5) #8 %.b3 = load i1, ptr @sort_descend, align 1 %7 = sub nsw i32 0, %6 %8 = select i1 %.b3, i32 %7, i32 %6 @@ -229,7 +229,7 @@ define internal i32 @_sort_by_partition(ptr nocapture noundef readonly %0, ptr n %5 = load ptr, ptr %4, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 32 %7 = load ptr, ptr %6, align 8 - %8 = tail call i32 @xstrcmp(ptr noundef %5, ptr noundef %7) #7 + %8 = tail call i32 @xstrcmp(ptr noundef %5, ptr noundef %7) #8 %.b3 = load i1, ptr @sort_descend, align 1 %9 = sub nsw i32 0, %8 %10 = select i1 %.b3, i32 %9, i32 %8 @@ -242,19 +242,19 @@ define internal i32 @_sort_by_username(ptr nocapture noundef readonly %0, ptr no %3 = load ptr, ptr %1, align 8 %4 = getelementptr inbounds nuw i8, ptr %.val, i64 56 %5 = load i32, ptr %4, align 8 - %6 = tail call ptr @uid_to_string_cached(i32 noundef %5) #7 + %6 = tail call ptr @uid_to_string_cached(i32 noundef %5) #8 %7 = getelementptr inbounds nuw i8, ptr %3, i64 56 %8 = load i32, ptr %7, align 8 - %9 = tail call ptr @uid_to_string_cached(i32 noundef %8) #7 - %10 = tail call i32 @xstrcmp(ptr noundef %6, ptr noundef %9) #7 + %9 = tail call ptr @uid_to_string_cached(i32 noundef %8) #8 + %10 = tail call i32 @xstrcmp(ptr noundef %6, ptr noundef %9) #8 %.b5 = load i1, ptr @sort_descend, align 1 %11 = sub nsw i32 0, %10 %12 = select i1 %.b5, i32 %11, i32 %10 ret i32 %12 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define internal i32 @_sort_by_age_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define internal i32 @_sort_by_age_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { %.val = load ptr, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %4 = load ptr, ptr %3, align 8 @@ -287,8 +287,8 @@ define internal i32 @_sort_by_age_prio(ptr nocapture noundef readonly %0, ptr no ret i32 %21 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define internal i32 @_sort_by_fairshare_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define internal i32 @_sort_by_fairshare_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { %.val = load ptr, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %4 = load ptr, ptr %3, align 8 @@ -321,8 +321,8 @@ define internal i32 @_sort_by_fairshare_prio(ptr nocapture noundef readonly %0, ret i32 %21 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define internal i32 @_sort_by_jobsize_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define internal i32 @_sort_by_jobsize_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { %.val = load ptr, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %4 = load ptr, ptr %3, align 8 @@ -355,8 +355,8 @@ define internal i32 @_sort_by_jobsize_prio(ptr nocapture noundef readonly %0, pt ret i32 %21 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define internal i32 @_sort_by_partition_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define internal i32 @_sort_by_partition_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { %.val = load ptr, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %4 = load ptr, ptr %3, align 8 @@ -389,8 +389,8 @@ define internal i32 @_sort_by_partition_prio(ptr nocapture noundef readonly %0, ret i32 %21 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define internal i32 @_sort_by_qos_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #3 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define internal i32 @_sort_by_qos_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { %.val = load ptr, ptr %0, align 8 %3 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %4 = load ptr, ptr %3, align 8 @@ -424,7 +424,7 @@ define internal i32 @_sort_by_qos_prio(ptr nocapture noundef readonly %0, ptr no } ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable -define internal i32 @_sort_by_tres_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #4 { +define internal i32 @_sort_by_tres_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #5 { %.val = load ptr, ptr %0, align 8 %3 = load ptr, ptr %1, align 8 %4 = getelementptr inbounds nuw i8, ptr %.val, i64 40 @@ -501,8 +501,8 @@ define internal i32 @_sort_by_tres_prio(ptr nocapture noundef readonly %0, ptr n define internal i32 @_sort_by_job_prio(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) #0 { %.val = load ptr, ptr %0, align 8 %3 = load ptr, ptr %1, align 8 - %4 = tail call double @get_priority_from_factors(ptr noundef %.val) #7 - %5 = tail call double @get_priority_from_factors(ptr noundef %3) #7 + %4 = tail call double @get_priority_from_factors(ptr noundef %.val) #8 + %5 = tail call double @get_priority_from_factors(ptr noundef %3) #8 %6 = fsub double %4, %5 %7 = tail call double @llvm.fabs.f64(double %6) %or.cond.i = fcmp olt double %7, 1.000000e-05 @@ -519,7 +519,7 @@ define internal i32 @_sort_by_job_prio(ptr nocapture noundef readonly %0, ptr no declare i32 @error(ptr noundef, ...) local_unnamed_addr #1 ; Function Attrs: nofree noreturn nounwind -declare void @exit(i32 noundef) local_unnamed_addr #5 +declare void @exit(i32 noundef) local_unnamed_addr #6 declare i32 @xstrcmp(ptr noundef, ptr noundef) local_unnamed_addr #1 @@ -528,24 +528,25 @@ declare ptr @uid_to_string_cached(i32 noundef) local_unnamed_addr #1 declare double @get_priority_from_factors(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.scmp.i32.i32(i32, i32) #6 +declare i32 @llvm.scmp.i32.i32(i32, i32) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fabs.f64(double) #6 +declare double @llvm.fabs.f64(double) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.ucmp.i32.i32(i32, i32) #6 +declare i32 @llvm.ucmp.i32.i32(i32, i32) #7 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nofree noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nounwind } -attributes #8 = { nounwind willreturn memory(read) } -attributes #9 = { cold noreturn nounwind } +attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #5 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nofree noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #8 = { nounwind } +attributes #9 = { nounwind willreturn memory(read) } +attributes #10 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6} diff --git a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll index f2d38b23440..ad9098dbcc2 100644 --- a/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll +++ b/bench/soc-simulator/optimized/Vmycpu_top___024root__DepSet_hcf0db31f__0.ll @@ -2204,7 +2204,7 @@ define dso_local void @_Z31Vmycpu_top___024root___eval_nbaP20Vmycpu_top___024roo ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: write) uwtable define dso_local void @_Z42Vmycpu_top___024root___nba_sequent__TOP__0P20Vmycpu_top___024root(ptr noundef %0) local_unnamed_addr #6 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 72 %3 = getelementptr inbounds nuw i8, ptr %0, i64 97 @@ -5916,6 +5916,7 @@ define dso_local void @_Z42Vmycpu_top___024root___nba_sequent__TOP__0P20Vmycpu_t 2287: ; preds = %2284 %2288 = getelementptr inbounds nuw i8, ptr %0, i64 209 store i8 0, ptr %2288, align 1 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %2233, i64 8) ] %2289 = trunc i32 %2230 to i8 %2290 = and i8 %2289, 63 %narrow = add nuw nsw i8 %2235, 1 @@ -6071,6 +6072,7 @@ define dso_local void @_Z42Vmycpu_top___024root___nba_sequent__TOP__0P20Vmycpu_t %2374 = and i32 %2373, 63 %2375 = zext nneg i32 %2374 to i64 %2376 = getelementptr inbounds nuw [64 x i8], ptr %2370, i64 0, i64 %2375 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %2376, i64 8) ] %2377 = load i8, ptr %2376, align 1 %2378 = and i8 %2377, 1 %narrow5415 = add nuw nsw i8 %2378, 3 @@ -12390,6 +12392,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.fshl.i32(i32, i32, i32) #10 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #11 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.abs.i32(i32, i1 immarg) #10 @@ -12399,11 +12404,12 @@ attributes #2 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-w attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #8 = { alwaysinline mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.linker.options = !{} !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/stat-rs/optimized/u5boppws0o3vklz.ll b/bench/stat-rs/optimized/u5boppws0o3vklz.ll index 8a20a84c5b6..020c7e59daf 100644 --- a/bench/stat-rs/optimized/u5boppws0o3vklz.ll +++ b/bench/stat-rs/optimized/u5boppws0o3vklz.ll @@ -302,7 +302,7 @@ define hidden void @_ZN4core9panicking13assert_failed17h2b3cead4b1add94aE(i8 nou %7 = alloca [8 x i8], align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hda4754f94c1c1cb1E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 + call void @_ZN4core9panicking19assert_failed_inner17hda4754f94c1c1cb1E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.4, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #17 unreachable } @@ -312,7 +312,7 @@ define hidden void @_ZN4core9panicking13assert_failed17hbed56fd62690c35eE(i8 nou %7 = alloca [8 x i8], align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hda4754f94c1c1cb1E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.5, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 + call void @_ZN4core9panicking19assert_failed_inner17hda4754f94c1c1cb1E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.5, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #17 unreachable } @@ -322,7 +322,7 @@ define hidden void @_ZN4core9panicking13assert_failed17hf081ce9b4479f97bE(i8 nou %7 = alloca [8 x i8], align 8 store ptr %1, ptr %7, align 8 store ptr %2, ptr %6, align 8 - call void @_ZN4core9panicking19assert_failed_inner17hda4754f94c1c1cb1E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.6, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #16 + call void @_ZN4core9panicking19assert_failed_inner17hda4754f94c1c1cb1E(i8 noundef %0, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.6, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #17 unreachable } @@ -380,7 +380,7 @@ define void @_ZN6statrs12distribution9empirical9Empirical8from_vec17he70968d9300 "_ZN4core3ptr63drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$f64$GT$$GT$17h680bc2e5c26cf7ebE.exit": ; preds = %14, %12 %.pn = phi { ptr, i32 } [ %13, %12 ], [ %15, %14 ] - invoke void @"_ZN4core3ptr63drop_in_place$LT$statrs..distribution..empirical..Empirical$GT$17h9ef890906a473163E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %6) #17 + invoke void @"_ZN4core3ptr63drop_in_place$LT$statrs..distribution..empirical..Empirical$GT$17h9ef890906a473163E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %6) #18 to label %52 unwind label %50 12: ; preds = %._crit_edge @@ -484,7 +484,7 @@ _ZN6statrs12distribution9empirical9Empirical3add17h3a4e38c3843363f8E.exit: ; pre 50: ; preds = %14, %"_ZN4core3ptr63drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$f64$GT$$GT$17h680bc2e5c26cf7ebE.exit" %51 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #18 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #19 unreachable 52: ; preds = %"_ZN4core3ptr63drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$f64$GT$$GT$17h680bc2e5c26cf7ebE.exit" @@ -653,7 +653,7 @@ define void @_ZN6statrs12distribution9empirical9Empirical6remove17h6f5827aef5888 store double 0.000000e+00, ptr %40, align 8 br label %.sink.split -.sink.split: ; preds = %42, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6remove17h4585fad56757f5c7E.exit", %10, %39 +.sink.split: ; preds = %10, %42, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6remove17h4585fad56757f5c7E.exit", %39 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) br label %41 @@ -769,7 +769,7 @@ define noundef double @_ZN6statrs12distribution9empirical9Empirical13__inverse_c br i1 %30, label %31, label %"_ZN105_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Min$LT$f64$GT$$GT$3min17h6384d7247f98af28E.exit" 31: ; preds = %20 - call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.22) #16, !noalias !182 + call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.22) #17, !noalias !182 unreachable "_ZN105_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Min$LT$f64$GT$$GT$3min17h6384d7247f98af28E.exit": ; preds = %20 @@ -813,7 +813,7 @@ define noundef double @_ZN6statrs12distribution9empirical9Empirical13__inverse_c br i1 %43, label %44, label %"_ZN105_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Max$LT$f64$GT$$GT$3max17h4d1b16fe5a950952E.exit" 44: ; preds = %33 - call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.21) #16, !noalias !190 + call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.21) #17, !noalias !190 unreachable "_ZN105_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Max$LT$f64$GT$$GT$3max17h4d1b16fe5a950952E.exit": ; preds = %33 @@ -1247,7 +1247,7 @@ define noundef double @"_ZN105_$LT$statrs..distribution..empirical..Empirical$u2 br i1 %12, label %13, label %14 13: ; preds = %1 - call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.21) #16 + call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.21) #17 unreachable 14: ; preds = %1 @@ -1293,7 +1293,7 @@ define noundef double @"_ZN105_$LT$statrs..distribution..empirical..Empirical$u2 br i1 %12, label %13, label %14 13: ; preds = %1 - call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.22) #16 + call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.22) #17 unreachable 14: ; preds = %1 @@ -1302,11 +1302,11 @@ define noundef double @"_ZN105_$LT$statrs..distribution..empirical..Empirical$u2 ret double %15 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define { i64, double } @"_ZN114_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Distribution$LT$f64$GT$$GT$4mean17h83904312eb8dcb6fE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #5 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable +define { i64, double } @"_ZN114_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Distribution$LT$f64$GT$$GT$4mean17h83904312eb8dcb6fE"(ptr noalias noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #5 { %.sroa.01.0.copyload = load i64, ptr %0, align 8 - %switch = icmp eq i64 %.sroa.01.0.copyload, 0 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 + %switch = icmp eq i64 %.sroa.01.0.copyload, 0 %.sroa.4.0.copyload = load double, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.3.0 = select i1 %switch, double undef, double %.sroa.4.0.copyload %2 = insertvalue { i64, double } poison, i64 %.sroa.01.0.copyload, 0 @@ -1314,11 +1314,11 @@ define { i64, double } @"_ZN114_$LT$statrs..distribution..empirical..Empirical$u ret { i64, double } %3 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define { i64, double } @"_ZN114_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Distribution$LT$f64$GT$$GT$8variance17h8b1342ac836bdc2dE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #5 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable +define { i64, double } @"_ZN114_$LT$statrs..distribution..empirical..Empirical$u20$as$u20$statrs..statistics..traits..Distribution$LT$f64$GT$$GT$8variance17h8b1342ac836bdc2dE"(ptr noalias noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #5 { %.sroa.03.0.copyload = load i64, ptr %0, align 8 - %switch = icmp eq i64 %.sroa.03.0.copyload, 0 %.sroa.44.0..sroa.0.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 + %switch = icmp eq i64 %.sroa.03.0.copyload, 0 %.sroa.44.0.copyload = load double, ptr %.sroa.44.0..sroa.0.0..sroa_idx, align 8 %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load double, ptr %2, align 8 @@ -1530,7 +1530,7 @@ define void @_ZN6statrs8generate10log_spaced17h21fef67d00b51230E(ptr dead_on_unw br i1 %18, label %34, label %19, !prof !229 19: ; preds = %9 - invoke void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %11, i64 noundef %.val7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.24) #16 + invoke void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %11, i64 noundef %.val7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.280f6df5e89f5494383d88c85348df53.24) #17 to label %.noexc unwind label %32 .noexc: ; preds = %19 @@ -1546,12 +1546,12 @@ define void @_ZN6statrs8generate10log_spaced17h21fef67d00b51230E(ptr dead_on_unw 23: ; preds = %4 %24 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %25 = tail call noalias noundef align 8 dereferenceable_or_null(8) ptr @__rust_alloc(i64 noundef 8, i64 noundef range(i64 1, -9223372036854775807) 8) #19 + %25 = tail call noalias noundef align 8 dereferenceable_or_null(8) ptr @__rust_alloc(i64 noundef 8, i64 noundef range(i64 1, -9223372036854775807) 8) #20 %26 = icmp eq ptr %25, null br i1 %26, label %27, label %_ZN5alloc5alloc15exchange_malloc17hf45cfb43b91670a0E.exit 27: ; preds = %23 - tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 8) #16 + tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 8) #17 unreachable _ZN5alloc5alloc15exchange_malloc17hf45cfb43b91670a0E.exit: ; preds = %23 @@ -1570,7 +1570,7 @@ _ZN5alloc5alloc15exchange_malloc17hf45cfb43b91670a0E.exit: ; preds = %23 32: ; preds = %19 %33 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$f64$GT$$GT$17h6cda13727dc6c8d4E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #17 + invoke void @"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$f64$GT$$GT$17h6cda13727dc6c8d4E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #18 to label %40 unwind label %38 34: ; preds = %9 @@ -1587,7 +1587,7 @@ _ZN5alloc5alloc15exchange_malloc17hf45cfb43b91670a0E.exit: ; preds = %23 38: ; preds = %32 %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #18 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #19 unreachable 40: ; preds = %32 @@ -1912,8 +1912,8 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: ret i1 %9 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define { i64, double } @"_ZN91_$LT$statrs..generate..InfiniteSquare$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8e706ad5c559e44E"(ptr noalias nocapture noundef align 8 dereferenceable(56) %0) unnamed_addr #6 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define { i64, double } @"_ZN91_$LT$statrs..generate..InfiniteSquare$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf8e706ad5c559e44E"(ptr noalias noundef align 8 dereferenceable(56) %0) unnamed_addr #7 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = load double, ptr %2, align 8, !alias.scope !250, !noundef !4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2166,8 +2166,8 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: ret i1 %9 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define { i64, double } @"_ZN93_$LT$statrs..generate..InfiniteSawtooth$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h46be7f22642e2298E"(ptr noalias nocapture noundef align 8 dereferenceable(40) %0) unnamed_addr #6 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define { i64, double } @"_ZN93_$LT$statrs..generate..InfiniteSawtooth$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h46be7f22642e2298E"(ptr noalias noundef align 8 dereferenceable(40) %0) unnamed_addr #7 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = load double, ptr %2, align 8, !alias.scope !262, !noundef !4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -2198,13 +2198,13 @@ define { i64, double } @"_ZN93_$LT$statrs..generate..InfiniteSawtooth$u20$as$u20 } ; 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: nonlazybind uwtable declare noundef 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 nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt5write17hc090a2ffd6b28c4aE(ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias nocapture noundef align 8 dereferenceable(48)) unnamed_addr #4 @@ -2225,13 +2225,13 @@ declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$ declare void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef, i64 noundef) unnamed_addr #2 ; Function Attrs: nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable -declare noalias noundef ptr @__rust_alloc(i64 noundef, i64 allocalign noundef) unnamed_addr #9 +declare noalias noundef ptr @__rust_alloc(i64 noundef, i64 allocalign noundef) unnamed_addr #10 ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #2 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #10 +declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #11 ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$5entry17h09ac46b4a13b1794E"(ptr dead_on_unwind noalias nocapture noundef writable sret([40 x i8]) align 8 dereferenceable(40), ptr noalias noundef align 8 dereferenceable(24), double noundef) unnamed_addr #4 @@ -2246,7 +2246,7 @@ declare noundef zeroext i1 @"_ZN4core3fmt5float53_$LT$impl$u20$core..fmt..LowerE declare void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.pow.f64(double, double) #11 +declare double @llvm.pow.f64(double, double) #12 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h2e880a1339a7dd5fE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #4 @@ -2255,7 +2255,7 @@ declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$ declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha4fa670c8a21dceaE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.sin.f64(double) #11 +declare double @llvm.sin.f64(double) #12 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha3a9da29e33329beE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #4 @@ -2267,10 +2267,10 @@ declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$ declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hd53376cd17995808E"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #13 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #12 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 ; Function Attrs: nonlazybind uwtable declare hidden noundef align 8 dereferenceable(8) ptr @"_ZN5alloc11collections5btree3map5entry28VacantEntry$LT$K$C$V$C$A$GT$6insert17hc4822ea9d064d93fE"(ptr noalias nocapture noundef align 8 dereferenceable(40), i64 noundef) unnamed_addr #4 @@ -2306,34 +2306,35 @@ declare hidden void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20 declare hidden void @"_ZN4core3ptr63drop_in_place$LT$statrs..distribution..empirical..Empirical$GT$17h9ef890906a473163E"(ptr noalias noundef align 8 dereferenceable(56)) unnamed_addr #4 ; 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 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #14 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #15 +declare i64 @llvm.umin.i64(i64, i64) #16 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #9 = { nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #10 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { noreturn } -attributes #17 = { cold } -attributes #18 = { cold noreturn nounwind } -attributes #19 = { nounwind } +attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "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 speculatable willreturn memory(none) } +attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #15 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #16 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #17 = { noreturn } +attributes #18 = { cold } +attributes #19 = { cold noreturn nounwind } +attributes #20 = { nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/stb/optimized/stb_connected_components.c.ll b/bench/stb/optimized/stb_connected_components.c.ll index b8d9e4a47f2..dc259454527 100644 --- a/bench/stb/optimized/stb_connected_components.c.ll +++ b/bench/stb/optimized/stb_connected_components.c.ll @@ -404,8 +404,8 @@ for.end135: ; preds = %for.inc133 ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc__build_all_connections_for_cluster(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy) local_unnamed_addr #3 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc__build_all_connections_for_cluster(ptr noundef %g, i32 noundef %cx, i32 noundef %cy) local_unnamed_addr #3 { entry: %connected = alloca [64 x [8 x i8]], align 16 %num_adj = alloca [512 x i8], align 16 @@ -616,8 +616,8 @@ for.end154: ; preds = %for.body132, %if.en ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc__add_connections_to_adjacent_cluster(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy, i32 noundef %dx, i32 noundef %dy) local_unnamed_addr #3 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc__add_connections_to_adjacent_cluster(ptr noundef %g, i32 noundef %cx, i32 noundef %cy, i32 noundef %dx, i32 noundef %dy) local_unnamed_addr #3 { entry: %connected = alloca [64 x [8 x i8]], align 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %connected, i8 0, i64 512, i1 false) @@ -809,8 +809,8 @@ for.end: ; preds = %stbcc__add_clump_co ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc__add_connections_to_adjacent_cluster_with_rebuild(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy, i32 noundef %dx, i32 noundef %dy) local_unnamed_addr #3 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc__add_connections_to_adjacent_cluster_with_rebuild(ptr noundef %g, i32 noundef %cx, i32 noundef %cy, i32 noundef %dx, i32 noundef %dy) local_unnamed_addr #3 { entry: %cmp = icmp sgt i32 %cx, -1 br i1 %cmp, label %land.lhs.true, label %if.end9 @@ -850,8 +850,8 @@ if.end9: ; preds = %if.then, %if.then8, ret void } -; Function Attrs: nofree nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc_update_grid(ptr nocapture noundef %g, i32 noundef %x, i32 noundef %y, i32 noundef %solid) local_unnamed_addr #2 { +; Function Attrs: nofree nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc_update_grid(ptr noundef %g, i32 noundef %x, i32 noundef %y, i32 noundef %solid) local_unnamed_addr #5 { entry: %tobool.not = icmp eq i32 %solid, 0 %map = getelementptr inbounds nuw i8, ptr %g, i64 20 @@ -1043,7 +1043,7 @@ if.end55: ; preds = %entry, %if.then54, } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc__remove_connections_to_adjacent_cluster(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy, i32 noundef %dx, i32 noundef %dy) local_unnamed_addr #3 { +define void @stbcc__remove_connections_to_adjacent_cluster(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy, i32 noundef %dx, i32 noundef %dy) local_unnamed_addr #6 { entry: %disconnected = alloca [64 x [8 x i8]], align 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %disconnected, i8 0, i64 512, i1 false) @@ -1241,8 +1241,8 @@ for.end: ; preds = %if.end108, %if.else ret void } -; Function Attrs: nofree nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc__build_clumps_for_cluster(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy) local_unnamed_addr #2 { +; Function Attrs: nofree nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc__build_clumps_for_cluster(ptr nocapture noundef %g, i32 noundef %cx, i32 noundef %cy) local_unnamed_addr #5 { entry: %cbi = alloca %struct.stbcc__cluster_build_info, align 2 %mul = shl i32 %cx, 5 @@ -1862,7 +1862,7 @@ for.end597: ; preds = %for.body582, %for.e } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define void @stbcc_update_batch_begin(ptr nocapture noundef writeonly initializes((16, 20)) %g) local_unnamed_addr #5 { +define void @stbcc_update_batch_begin(ptr nocapture noundef writeonly initializes((16, 20)) %g) local_unnamed_addr #7 { entry: %in_batched_update = getelementptr inbounds nuw i8, ptr %g, i64 16 store i32 1, ptr %in_batched_update, align 4 @@ -1879,13 +1879,13 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable -define noundef i64 @stbcc_grid_sizeof() local_unnamed_addr #6 { +define noundef i64 @stbcc_grid_sizeof() local_unnamed_addr #8 { entry: ret i64 6688788 } -; Function Attrs: nofree nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc_init_grid(ptr nocapture noundef initializes((0, 20)) %g, ptr nocapture noundef readonly %map, i32 noundef %w, i32 noundef %h) local_unnamed_addr #2 { +; Function Attrs: nofree nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc_init_grid(ptr noundef initializes((0, 20)) %g, ptr nocapture noundef readonly %map, i32 noundef %w, i32 noundef %h) local_unnamed_addr #5 { entry: store i32 %w, ptr %g, align 4 %h2 = getelementptr inbounds nuw i8, ptr %g, i64 4 @@ -2022,8 +2022,8 @@ for.end58: ; preds = %for.inc56, %for.con ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define void @stbcc__add_clump_connection(ptr nocapture noundef %g, i32 noundef %x1, i32 noundef %y1, i32 noundef %x2, i32 noundef %y2) local_unnamed_addr #7 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @stbcc__add_clump_connection(ptr noundef %g, i32 noundef %x1, i32 noundef %y1, i32 noundef %x2, i32 noundef %y2) local_unnamed_addr #9 { entry: %shr = ashr i32 %x1, 5 %shr1 = ashr i32 %y1, 5 @@ -2083,7 +2083,7 @@ if.end: ; preds = %if.else, %if.then } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @stbcc__remove_clump_connection(ptr nocapture noundef %g, i32 noundef %x1, i32 noundef %y1, i32 noundef %x2, i32 noundef %y2) local_unnamed_addr #3 { +define void @stbcc__remove_clump_connection(ptr nocapture noundef %g, i32 noundef %x1, i32 noundef %y1, i32 noundef %x2, i32 noundef %y2) local_unnamed_addr #6 { entry: %shr = ashr i32 %x1, 5 %shr1 = ashr i32 %y1, 5 @@ -2230,7 +2230,7 @@ return: ; preds = %entry, %if.end } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define void @stbcc__switch_root(ptr nocapture noundef writeonly %cbi, i32 noundef %x, i32 noundef %y, i16 %p.coerce) local_unnamed_addr #5 { +define void @stbcc__switch_root(ptr nocapture noundef writeonly %cbi, i32 noundef %x, i32 noundef %y, i16 %p.coerce) local_unnamed_addr #7 { entry: %p.sroa.3.0.extract.shift = lshr i16 %p.coerce, 8 %p.sroa.3.0.extract.trunc = zext nneg i16 %p.sroa.3.0.extract.shift to i64 @@ -2252,17 +2252,19 @@ entry: } ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #8 +declare i32 @llvm.umin.i32(i32, i32) #10 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #2 = { nofree nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #5 = { nofree nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/stb/optimized/stb_voxel_render.c.ll b/bench/stb/optimized/stb_voxel_render.c.ll index 1fddfac37a8..33049feb2bb 100644 --- a/bench/stb/optimized/stb_voxel_render.c.ll +++ b/bench/stb/optimized/stb_voxel_render.c.ll @@ -1146,8 +1146,8 @@ if.end: ; preds = %if.then, %entry ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @stbvox_make_mesh_for_block(ptr nocapture noundef %mm, i24 %pos.coerce, i32 noundef %v_off, ptr nocapture noundef readonly %vmesh) local_unnamed_addr #7 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define void @stbvox_make_mesh_for_block(ptr noundef %mm, i24 %pos.coerce, i32 noundef %v_off, ptr nocapture noundef readonly %vmesh) local_unnamed_addr #8 { entry: %y_stride_in_bytes = getelementptr inbounds nuw i8, ptr %mm, i64 384 %0 = load i32, ptr %y_stride_in_bytes, align 8 @@ -1321,8 +1321,8 @@ if.end165: ; preds = %if.then161, %if.end ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @stbvox_make_mesh_for_block_with_geo(ptr noundef %mm, i24 %pos.coerce, i32 noundef %v_off) local_unnamed_addr #7 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define void @stbvox_make_mesh_for_block_with_geo(ptr noundef %mm, i24 %pos.coerce, i32 noundef %v_off) local_unnamed_addr #8 { entry: %nbt = alloca [6 x i8], align 1 %ngeo = alloca [6 x i8], align 1 @@ -2555,8 +2555,8 @@ if.end1462: ; preds = %if.end493, %if.end1 ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @stbvox_make_mesh_for_column(ptr noundef %mm, i32 noundef %x, i32 noundef %y, i32 noundef %z0) local_unnamed_addr #7 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define void @stbvox_make_mesh_for_column(ptr noundef %mm, i32 noundef %x, i32 noundef %y, i32 noundef %z0) local_unnamed_addr #8 { entry: %x_stride_in_bytes = getelementptr inbounds nuw i8, ptr %mm, i64 380 %0 = load i32, ptr %x_stride_in_bytes, align 4 @@ -2923,7 +2923,7 @@ if.end241: ; preds = %for.inc, %for.inc17 } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @stbvox_bring_up_to_date(ptr nocapture noundef %mm) local_unnamed_addr #8 { +define void @stbvox_bring_up_to_date(ptr nocapture noundef %mm) local_unnamed_addr #9 { entry: %config_dirty = getelementptr inbounds nuw i8, ptr %mm, i64 388 %0 = load i32, ptr %config_dirty, align 4 @@ -2948,8 +2948,8 @@ if.end: ; preds = %if.then, %entry ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define range(i32 0, 2) i32 @stbvox_make_mesh(ptr noundef initializes((604, 608)) %mm) local_unnamed_addr #7 { +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define range(i32 0, 2) i32 @stbvox_make_mesh(ptr noundef initializes((604, 608)) %mm) local_unnamed_addr #8 { entry: %config_dirty.i = getelementptr inbounds nuw i8, ptr %mm, i64 388 %0 = load i32, ptr %config_dirty.i, align 4 @@ -3092,7 +3092,7 @@ return: ; preds = %while.body, %for.in } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, argmem: write, inaccessiblemem: none) uwtable -define void @stbvox_init_mesh_maker(ptr nocapture noundef writeonly initializes((0, 1856)) %mm) local_unnamed_addr #9 { +define void @stbvox_init_mesh_maker(ptr nocapture noundef writeonly initializes((0, 1856)) %mm) local_unnamed_addr #10 { entry: tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1856) %mm, i8 0, i64 1856, i1 false) br label %for.body.i @@ -3132,7 +3132,7 @@ stbvox_build_default_palette.exit: ; preds = %for.body.i } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define i32 @stbvox_get_buffer_count(ptr nocapture noundef %mm) local_unnamed_addr #10 { +define i32 @stbvox_get_buffer_count(ptr nocapture noundef %mm) local_unnamed_addr #11 { entry: %config_dirty.i = getelementptr inbounds nuw i8, ptr %mm, i64 388 %0 = load i32, ptr %config_dirty.i, align 4 @@ -3163,7 +3163,7 @@ stbvox_bring_up_to_date.exit: ; preds = %entry.stbvox_bring_ } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define i32 @stbvox_get_buffer_size_per_quad(ptr nocapture noundef readonly %mm, i32 noundef %n) local_unnamed_addr #11 { +define i32 @stbvox_get_buffer_size_per_quad(ptr nocapture noundef readonly %mm, i32 noundef %n) local_unnamed_addr #12 { entry: %output_size = getelementptr inbounds nuw i8, ptr %mm, i64 776 %idxprom = sext i32 %n to i64 @@ -3173,7 +3173,7 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define void @stbvox_reset_buffers(ptr nocapture noundef writeonly initializes((608, 656), (704, 752)) %mm) local_unnamed_addr #12 { +define void @stbvox_reset_buffers(ptr nocapture noundef writeonly initializes((608, 656), (704, 752)) %mm) local_unnamed_addr #13 { entry: %output_cur = getelementptr inbounds nuw i8, ptr %mm, i64 608 %output_buffer = getelementptr inbounds nuw i8, ptr %mm, i64 704 @@ -3183,7 +3183,7 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define void @stbvox_set_buffer(ptr nocapture noundef %mm, i32 noundef %mesh, i32 noundef %slot, ptr noundef %buffer, i64 noundef %len) local_unnamed_addr #10 { +define void @stbvox_set_buffer(ptr nocapture noundef %mm, i32 noundef %mesh, i32 noundef %slot, ptr noundef %buffer, i64 noundef %len) local_unnamed_addr #11 { entry: %config_dirty.i = getelementptr inbounds nuw i8, ptr %mm, i64 388 %0 = load i32, ptr %config_dirty.i, align 4 @@ -3225,7 +3225,7 @@ stbvox_bring_up_to_date.exit: ; preds = %entry, %if.then.i } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define void @stbvox_set_default_mesh(ptr nocapture noundef writeonly initializes((392, 396)) %mm, i32 noundef %mesh) local_unnamed_addr #12 { +define void @stbvox_set_default_mesh(ptr nocapture noundef writeonly initializes((392, 396)) %mm, i32 noundef %mesh) local_unnamed_addr #13 { entry: %default_mesh = getelementptr inbounds nuw i8, ptr %mm, i64 392 store i32 %mesh, ptr %default_mesh, align 8 @@ -3233,7 +3233,7 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable -define i32 @stbvox_get_quad_count(ptr nocapture noundef readonly %mm, i32 noundef %mesh) local_unnamed_addr #11 { +define i32 @stbvox_get_quad_count(ptr nocapture noundef readonly %mm, i32 noundef %mesh) local_unnamed_addr #12 { entry: %output_cur = getelementptr inbounds nuw i8, ptr %mm, i64 608 %idxprom = sext i32 %mesh to i64 @@ -3255,13 +3255,13 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable -define noundef ptr @stbvox_get_input_description(ptr noundef readnone returned %mm) local_unnamed_addr #13 { +define noundef ptr @stbvox_get_input_description(ptr noundef readnone returned %mm) local_unnamed_addr #14 { entry: ret ptr %mm } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define void @stbvox_set_input_range(ptr nocapture noundef writeonly initializes((344, 380)) %mm, i32 noundef %x0, i32 noundef %y0, i32 noundef %z0, i32 noundef %x1, i32 noundef %y1, i32 noundef %z1) local_unnamed_addr #12 { +define void @stbvox_set_input_range(ptr nocapture noundef writeonly initializes((344, 380)) %mm, i32 noundef %x0, i32 noundef %y0, i32 noundef %z0, i32 noundef %x1, i32 noundef %y1, i32 noundef %z1) local_unnamed_addr #13 { entry: %x01 = getelementptr inbounds nuw i8, ptr %mm, i64 356 store i32 %x0, ptr %x01, align 4 @@ -3285,7 +3285,7 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define void @stbvox_get_transform(ptr nocapture noundef readonly %mm, ptr nocapture noundef writeonly initializes((0, 36)) %transform) local_unnamed_addr #10 { +define void @stbvox_get_transform(ptr nocapture noundef readonly %mm, ptr nocapture noundef writeonly initializes((0, 36)) %transform) local_unnamed_addr #11 { entry: store float 1.000000e+00, ptr %transform, align 4 %arrayidx3 = getelementptr inbounds nuw i8, ptr %transform, i64 4 @@ -3326,7 +3326,7 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define void @stbvox_get_bounds(ptr nocapture noundef readonly %mm, ptr nocapture noundef writeonly initializes((0, 24)) %bounds) local_unnamed_addr #10 { +define void @stbvox_get_bounds(ptr nocapture noundef readonly %mm, ptr nocapture noundef writeonly initializes((0, 24)) %bounds) local_unnamed_addr #11 { entry: %pos_x = getelementptr inbounds nuw i8, ptr %mm, i64 592 %0 = load i32, ptr %pos_x, align 8 @@ -3376,7 +3376,7 @@ entry: } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define void @stbvox_set_mesh_coordinates(ptr nocapture noundef writeonly initializes((592, 604)) %mm, i32 noundef %x, i32 noundef %y, i32 noundef %z) local_unnamed_addr #12 { +define void @stbvox_set_mesh_coordinates(ptr nocapture noundef writeonly initializes((592, 604)) %mm, i32 noundef %x, i32 noundef %y, i32 noundef %z) local_unnamed_addr #13 { entry: %pos_x = getelementptr inbounds nuw i8, ptr %mm, i64 592 store i32 %x, ptr %pos_x, align 8 @@ -3388,7 +3388,7 @@ entry: } ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: write, inaccessiblemem: none) uwtable -define void @stbvox_set_input_stride(ptr nocapture noundef writeonly initializes((380, 388)) %mm, i32 noundef %x_stride_in_bytes, i32 noundef %y_stride_in_bytes) local_unnamed_addr #14 { +define void @stbvox_set_input_stride(ptr nocapture noundef writeonly initializes((380, 388)) %mm, i32 noundef %x_stride_in_bytes, i32 noundef %y_stride_in_bytes) local_unnamed_addr #15 { entry: %x_stride_in_bytes1 = getelementptr inbounds nuw i8, ptr %mm, i64 380 store i32 %x_stride_in_bytes, ptr %x_stride_in_bytes1, align 4 @@ -3455,13 +3455,14 @@ attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memor attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #7 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nofree norecurse nosync nounwind memory(readwrite, argmem: write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nofree norecurse nosync nounwind memory(read, argmem: write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nofree norecurse nosync nounwind memory(readwrite, argmem: write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #12 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #13 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #14 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #15 = { nofree norecurse nosync nounwind memory(read, argmem: write, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/stockfish/optimized/search.ll b/bench/stockfish/optimized/search.ll index 67947ec54c3..3d28f9389b4 100644 --- a/bench/stockfish/optimized/search.ll +++ b/bench/stockfish/optimized/search.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" } %"struct.std::ios_base::_Words" = type { ptr, i64 } %"class.std::locale" = type { ptr } +%"class.Stockfish::PRNG" = type { i64 } %"struct.std::nothrow_t" = type { i8 } %"class.Stockfish::Option" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, i64, %"class.std::function" } %"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string::_Alloc_hider", i64, %union.anon } @@ -162,7 +163,7 @@ $_ZTIN9Stockfish6Search14ISearchManagerE = comdat any @_ZTSN9Stockfish6Search14ISearchManagerE = linkonce_odr dso_local constant [36 x i8] c"N9Stockfish6Search14ISearchManagerE\00", comdat, align 1 @_ZTIN9Stockfish6Search14ISearchManagerE = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTSN9Stockfish6Search14ISearchManagerE }, comdat, align 8 @_ZTIN9Stockfish6Search13SearchManagerE = dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTSN9Stockfish6Search13SearchManagerE, ptr @_ZTIN9Stockfish6Search14ISearchManagerE }, align 8 -@_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng.0 = internal unnamed_addr global i64 0, align 8 +@_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng = internal global %"class.Stockfish::PRNG" zeroinitializer, align 8 @_ZGVZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng = internal global i64 0, align 8 @.str.26 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @.str.28 = private unnamed_addr constant [12 x i8] c"info depth \00", align 1 @@ -4749,7 +4750,7 @@ define internal fastcc i16 @_ZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vec 8: ; preds = %6 %9 = tail call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #20 %10 = sdiv i64 %9, 1000000 - store i64 %10, ptr @_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng.0, align 8 + store i64 %10, ptr @_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng, align 8 tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng) #20 br label %11 @@ -4767,7 +4768,7 @@ define internal fastcc i16 @_ZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vec br i1 %.not29, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %11 - %_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng.promoted = load i64, ptr @_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng.0, align 8 + %_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng.promoted = load i64, ptr @_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng, align 8 %20 = fptosi double %19 to i32 %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %22 @@ -4787,6 +4788,7 @@ define internal fastcc i16 @_ZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vec %32 = xor i64 %31, %30 %33 = lshr i64 %32, 27 %34 = xor i64 %33, %32 + store i64 %34, ptr @_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng, align 8 %35 = trunc i64 %34 to i32 %36 = mul i32 %35, 1332534557 %37 = urem i32 %36, %20 @@ -4811,13 +4813,9 @@ define internal fastcc i16 @_ZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vec %.1 = phi i32 [ %44, %45 ], [ %.028, %22 ] %50 = add nuw i64 %.02227, 1 %exitcond.not = icmp eq i64 %50, %2 - br i1 %exitcond.not, label %._crit_edge.loopexit, label %22, !llvm.loop !27 + br i1 %exitcond.not, label %._crit_edge, label %22, !llvm.loop !27 -._crit_edge.loopexit: ; preds = %49 - store i64 %34, ptr @_ZZN9Stockfish12_GLOBAL__N_15Skill9pick_bestERKSt6vectorINS_6Search8RootMoveESaIS4_EEmE3rng.0, align 8 - br label %._crit_edge - -._crit_edge: ; preds = %._crit_edge.loopexit, %11 +._crit_edge: ; preds = %49, %11 %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.0.0.copyload = load i16, ptr %51, align 8 ret i16 %.sroa.0.0.copyload diff --git a/bench/sundials/optimized/sundials_band.c.ll b/bench/sundials/optimized/sundials_band.c.ll index 77834326e55..e0dafd8e010 100644 --- a/bench/sundials/optimized/sundials_band.c.ll +++ b/bench/sundials/optimized/sundials_band.c.ll @@ -3,7 +3,7 @@ source_filename = "bench/sundials/original/sundials_band.c.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable define i64 @SUNDlsMat_BandGBTRF(ptr nocapture noundef readonly %0, ptr nocapture noundef writeonly %1) local_unnamed_addr #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 72 %4 = load ptr, ptr %3, align 8 @@ -19,7 +19,7 @@ define i64 @SUNDlsMat_BandGBTRF(ptr nocapture noundef readonly %0, ptr nocapture ret i64 %13 } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable define i64 @SUNDlsMat_bandGBTRF(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #0 { %7 = icmp sgt i64 %4, %2 %8 = icmp sgt i64 %1, 0 @@ -194,7 +194,7 @@ define i64 @SUNDlsMat_bandGBTRF(ptr nocapture noundef readonly %0, i64 noundef % ret i64 %.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable define i64 @BandGBTRF(ptr nocapture noundef readonly %0, ptr nocapture noundef writeonly %1) local_unnamed_addr #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 72 %4 = load ptr, ptr %3, align 8 @@ -503,7 +503,7 @@ SUNDlsMat_bandGBTRS.exit: ; preds = %._crit_edge.i, %.pr } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @SUNDlsMat_BandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #0 { +define void @SUNDlsMat_BandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #2 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 72 %6 = load ptr, ptr %5, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 72 @@ -555,7 +555,7 @@ SUNDlsMat_bandCopy.exit: ; preds = %._crit_edge.i, %4, } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @SUNDlsMat_bandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6) local_unnamed_addr #0 { +define void @SUNDlsMat_bandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6) local_unnamed_addr #2 { %8 = add i64 %6, %5 %9 = icmp sgt i64 %2, 0 br i1 %9, label %.lr.ph24, label %._crit_edge25 @@ -597,7 +597,7 @@ define void @SUNDlsMat_bandCopy(ptr nocapture noundef readonly %0, ptr nocapture } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @BandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #0 { +define void @BandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #2 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 72 %6 = load ptr, ptr %5, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 72 @@ -649,7 +649,7 @@ SUNDlsMat_bandCopy.exit: ; preds = %._crit_edge.i, %4, } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @SUNDlsMat_BandScale(double noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 { +define void @SUNDlsMat_BandScale(double noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #2 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 72 %4 = load ptr, ptr %3, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -697,7 +697,7 @@ SUNDlsMat_bandScale.exit: ; preds = %._crit_edge.i, %2, } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @SUNDlsMat_bandScale(double noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5) local_unnamed_addr #0 { +define void @SUNDlsMat_bandScale(double noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5) local_unnamed_addr #2 { %7 = add i64 %4, %3 %8 = icmp sgt i64 %2, 0 br i1 %8, label %.lr.ph19, label %._crit_edge20 @@ -735,7 +735,7 @@ define void @SUNDlsMat_bandScale(double noundef %0, ptr nocapture noundef readon } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @BandScale(double noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 { +define void @BandScale(double noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #2 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 72 %4 = load ptr, ptr %3, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -955,17 +955,17 @@ SUNDlsMat_bandMatvec.exit: ; preds = %._crit_edge.i, %3 ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable define i64 @bandGBTRF(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #0 { %7 = tail call i64 @SUNDlsMat_bandGBTRF(ptr noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5) ret i64 %7 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fabs.f64(double) #2 +declare double @llvm.fabs.f64(double) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fmuladd.f64(double, double, double) #2 +declare double @llvm.fmuladd.f64(double, double, double) #3 ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define void @bandGBTRS(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef %5) local_unnamed_addr #1 { @@ -1060,7 +1060,7 @@ SUNDlsMat_bandGBTRS.exit: ; preds = %._crit_edge.i, %.pr } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @bandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6) local_unnamed_addr #0 { +define void @bandCopy(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6) local_unnamed_addr #2 { %8 = add i64 %6, %5 %9 = icmp sgt i64 %2, 0 br i1 %9, label %.lr.ph24.i, label %SUNDlsMat_bandCopy.exit @@ -1102,7 +1102,7 @@ SUNDlsMat_bandCopy.exit: ; preds = %._crit_edge.i, %7, } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @bandScale(double noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5) local_unnamed_addr #0 { +define void @bandScale(double noundef %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5) local_unnamed_addr #2 { %7 = add i64 %4, %3 %8 = icmp sgt i64 %2, 0 br i1 %8, label %.lr.ph19.i, label %SUNDlsMat_bandScale.exit @@ -1140,7 +1140,7 @@ SUNDlsMat_bandScale.exit: ; preds = %._crit_edge.i, %6, } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @bandAddIdentity(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #0 { +define void @bandAddIdentity(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #2 { %4 = icmp sgt i64 %1, 0 br i1 %4, label %.lr.ph.i, label %SUNDlsMat_bandAddIdentity.exit @@ -1161,7 +1161,7 @@ SUNDlsMat_bandAddIdentity.exit: ; preds = %.lr.ph.i, %3 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @SUNDlsMat_bandAddIdentity(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #0 { +define void @SUNDlsMat_bandAddIdentity(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2) local_unnamed_addr #2 { %4 = icmp sgt i64 %1, 0 br i1 %4, label %.lr.ph, label %._crit_edge @@ -1233,19 +1233,20 @@ SUNDlsMat_bandMatvec.exit: ; preds = %._crit_edge.i, %7 } ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smax.i64(i64, i64) #3 +declare i64 @llvm.smax.i64(i64, i64) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #3 +declare i64 @llvm.smin.i64(i64, i64) #4 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 -attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/sundials/optimized/sundials_dense.c.ll b/bench/sundials/optimized/sundials_dense.c.ll index 0eab10fd41a..7c269a8fd42 100644 --- a/bench/sundials/optimized/sundials_dense.c.ll +++ b/bench/sundials/optimized/sundials_dense.c.ll @@ -716,7 +716,7 @@ define i64 @SUNDlsMat_DensePOTRF(ptr nocapture noundef readonly %0) local_unname br label %SUNDlsMat_densePOTRF.exit .lr.ph.preheader.i: ; preds = %.loopexit.i - %28 = tail call double @sqrt(double noundef %24) #6 + %28 = tail call double @sqrt(double noundef %24) #7 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i @@ -789,7 +789,7 @@ define i64 @SUNDlsMat_densePOTRF(ptr nocapture noundef readonly %0, i64 noundef br label %.loopexit40 .lr.ph.preheader: ; preds = %.loopexit - %25 = tail call double @sqrt(double noundef %21) #6 + %25 = tail call double @sqrt(double noundef %21) #7 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph @@ -866,7 +866,7 @@ define i64 @DensePOTRF(ptr nocapture noundef readonly %0) local_unnamed_addr #2 br label %SUNDlsMat_densePOTRF.exit .lr.ph.preheader.i: ; preds = %.loopexit.i - %28 = tail call double @sqrt(double noundef %24) #6 + %28 = tail call double @sqrt(double noundef %24) #7 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i @@ -1238,7 +1238,7 @@ define noundef i32 @SUNDlsMat_denseGEQRF(ptr nocapture noundef readonly %0, i64 br i1 %22, label %23, label %25 23: ; preds = %20 - %24 = tail call double @sqrt(double noundef %21) #6 + %24 = tail call double @sqrt(double noundef %21) #7 br label %25 25: ; preds = %20, %23 @@ -1356,8 +1356,8 @@ define noundef i32 @DenseGEQRF(ptr nocapture noundef readonly %0, ptr nocapture ret i32 0 } -; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable -define noundef i32 @SUNDlsMat_DenseORMQR(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3, ptr nocapture noundef %4) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable +define noundef i32 @SUNDlsMat_DenseORMQR(ptr nocapture noundef readonly %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3, ptr nocapture noundef %4) local_unnamed_addr #3 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 72 %7 = load ptr, ptr %6, align 8 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1458,8 +1458,8 @@ SUNDlsMat_denseORMQR.exit: ; preds = %.loopexit.i, %.preh ret i32 0 } -; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable -define noundef i32 @SUNDlsMat_denseORMQR(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef %5, ptr nocapture noundef %6) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable +define noundef i32 @SUNDlsMat_denseORMQR(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef %5, ptr nocapture noundef %6) local_unnamed_addr #3 { %8 = icmp sgt i64 %2, 0 br i1 %8, label %.lr.ph, label %.preheader53 @@ -1554,8 +1554,8 @@ define noundef i32 @SUNDlsMat_denseORMQR(ptr nocapture noundef readonly %0, i64 ret i32 0 } -; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable -define noundef i32 @DenseORMQR(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3, ptr nocapture noundef %4) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable +define noundef i32 @DenseORMQR(ptr nocapture noundef readonly %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3, ptr nocapture noundef %4) local_unnamed_addr #3 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 72 %7 = load ptr, ptr %6, align 8 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -2131,10 +2131,10 @@ SUNDlsMat_denseGETRF.exit: ; preds = %.loopexit75.i, %._c } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fabs.f64(double) #3 +declare double @llvm.fabs.f64(double) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fmuladd.f64(double, double, double) #3 +declare double @llvm.fmuladd.f64(double, double, double) #4 ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define void @denseGETRS(ptr nocapture noundef readonly %0, i64 noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3) local_unnamed_addr #1 { @@ -2283,7 +2283,7 @@ define i64 @densePOTRF(ptr nocapture noundef readonly %0, i64 noundef %1) local_ br label %SUNDlsMat_densePOTRF.exit .lr.ph.preheader.i: ; preds = %.loopexit.i - %25 = tail call double @sqrt(double noundef %21) #6 + %25 = tail call double @sqrt(double noundef %21) #7 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i @@ -2307,7 +2307,7 @@ SUNDlsMat_densePOTRF.exit: ; preds = %._crit_edge.i, %2, } ; Function Attrs: mustprogress nofree nounwind willreturn memory(write) -declare double @sqrt(double noundef) local_unnamed_addr #4 +declare double @sqrt(double noundef) local_unnamed_addr #5 ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define void @densePOTRS(ptr nocapture noundef readonly %0, i64 noundef %1, ptr nocapture noundef %2) local_unnamed_addr #1 { @@ -2410,8 +2410,8 @@ define noundef i32 @denseGEQRF(ptr nocapture noundef readonly %0, i64 noundef %1 ret i32 0 } -; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable -define noundef i32 @denseORMQR(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef %5, ptr nocapture noundef %6) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable +define noundef i32 @denseORMQR(ptr nocapture noundef readonly %0, i64 noundef %1, i64 noundef %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef %5, ptr nocapture noundef %6) local_unnamed_addr #3 { %8 = icmp sgt i64 %2, 0 br i1 %8, label %.lr.ph.i, label %.preheader53.i @@ -2655,15 +2655,16 @@ SUNDlsMat_denseMatvec.exit: ; preds = %._crit_edge.us.i, % } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nounwind } +attributes #3 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #5 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/tokio-rs/optimized/5cdni0zdopovrkgi.ll b/bench/tokio-rs/optimized/5cdni0zdopovrkgi.ll index daeb96589da..67168e2e937 100644 --- a/bench/tokio-rs/optimized/5cdni0zdopovrkgi.ll +++ b/bench/tokio-rs/optimized/5cdni0zdopovrkgi.ll @@ -3126,15 +3126,16 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer3new17hc9ccbb65ba5bda define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0ee2fE(ptr noundef nonnull align 8 %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = load i64, ptr %0, align 8, !noundef !5 %4 = icmp eq i64 %3, 0 - br i1 %4, label %5, label %9 + br i1 %4, label %5, label %10 5: ; preds = %2 store i64 -1, ptr %0, align 8 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %8 = load i64, ptr %7, align 8, !noundef !5 - %.not = icmp eq i64 %8, 0 - br i1 %.not, label %..critedge_crit_edge, label %10 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %9 = load i64, ptr %8, align 8, !noundef !5 + %.not = icmp eq i64 %9, 0 + br i1 %.not, label %..critedge_crit_edge, label %11 ..critedge_crit_edge: ; preds = %5 %.pre = load ptr, ptr %1, align 8 @@ -3142,14 +3143,13 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 %.pre22 = load ptr, ptr %.phi.trans.insert, align 8 br label %.critedge -9: ; preds = %2 +10: ; preds = %2 tail call void @_ZN4core4cell22panic_already_borrowed17h3ef59d0d58797532E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ba4985a049956e0df762c1765696dc31.60) #27 unreachable -10: ; preds = %5 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %12 = load ptr, ptr %11, align 8, !nonnull !5, !noundef !5 - %13 = add i64 %8, -1 +11: ; preds = %5 + %12 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + %13 = add i64 %9, -1 %14 = getelementptr inbounds [0 x { ptr, ptr }], ptr %12, i64 0, i64 %13 %15 = getelementptr inbounds nuw i8, ptr %14, i64 8 %16 = load ptr, ptr %15, align 8, !noundef !5 @@ -3159,14 +3159,14 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 %.pre21 = load ptr, ptr %1, align 8 br i1 %19, label %24, label %.critedge -.critedge: ; preds = %..critedge_crit_edge, %24, %29, %35, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit", %10 - %20 = phi ptr [ %.pre22, %..critedge_crit_edge ], [ %18, %24 ], [ %18, %29 ], [ %18, %35 ], [ %18, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit" ], [ %18, %10 ] - %21 = phi ptr [ %.pre, %..critedge_crit_edge ], [ %.pre21, %24 ], [ %.pre21, %29 ], [ %.pre21, %35 ], [ %.pre21, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit" ], [ %.pre21, %10 ] +.critedge: ; preds = %..critedge_crit_edge, %24, %29, %35, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit", %11 + %20 = phi ptr [ %.pre22, %..critedge_crit_edge ], [ %18, %24 ], [ %18, %29 ], [ %18, %35 ], [ %18, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit" ], [ %18, %11 ] + %21 = phi ptr [ %.pre, %..critedge_crit_edge ], [ %.pre21, %24 ], [ %.pre21, %29 ], [ %.pre21, %35 ], [ %.pre21, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit" ], [ %.pre21, %11 ] %22 = load ptr, ptr %21, align 8, !nonnull !5, !noundef !5 %23 = invoke { ptr, ptr } %22(ptr noundef %20) to label %49 unwind label %41 -24: ; preds = %10 +24: ; preds = %11 %25 = load ptr, ptr %14, align 8, !nonnull !5, !align !45, !noundef !5 tail call void @llvm.experimental.noalias.scope.decl(metadata !436) tail call void @llvm.experimental.noalias.scope.decl(metadata !439) @@ -3194,7 +3194,7 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 41: ; preds = %.critedge %42 = landingpad { ptr, i32 } cleanup - br label %72 + br label %71 "_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit": ; preds = %35 %43 = getelementptr inbounds nuw i8, ptr %25, i64 24 @@ -3205,7 +3205,7 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 br i1 %47, label %48, label %.critedge 48: ; preds = %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit", %63 - %storemerge.in = phi i64 [ 0, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit" ], [ %71, %63 ] + %storemerge.in = phi i64 [ 0, %"_ZN73_$LT$core..task..wake..RawWakerVTable$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1d424b7343833c28E.exit" ], [ %70, %63 ] store i64 %storemerge.in, ptr %0, align 8, !noalias !5 ret void @@ -3216,7 +3216,7 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 tail call void @llvm.assume(i1 %52) tail call void @llvm.experimental.noalias.scope.decl(metadata !441) tail call void @llvm.experimental.noalias.scope.decl(metadata !444) - %53 = load i64, ptr %7, align 8, !alias.scope !441, !noalias !444, !noundef !5 + %53 = load i64, ptr %8, align 8, !alias.scope !441, !noalias !444, !noundef !5 %54 = load i64, ptr %6, align 8, !alias.scope !441, !noalias !444, !noundef !5 %55 = icmp eq i64 %53, %54 br i1 %55, label %56, label %63 @@ -3226,7 +3226,7 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 to label %._crit_edge.i unwind label %57, !noalias !444 ._crit_edge.i: ; preds = %56 - %.pre.i = load i64, ptr %7, align 8, !alias.scope !441, !noalias !444 + %.pre.i = load i64, ptr %8, align 8, !alias.scope !441, !noalias !444 br label %63 57: ; preds = %56 @@ -3235,7 +3235,7 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 %59 = getelementptr inbounds nuw i8, ptr %50, i64 24 %60 = load ptr, ptr %59, align 8, !alias.scope !444, !noalias !446, !nonnull !5, !noundef !5 invoke void %60(ptr noundef %51) - to label %72 unwind label %61, !noalias !444 + to label %71 unwind label %61, !noalias !444 61: ; preds = %57 %62 = landingpad { ptr, i32 } @@ -3245,24 +3245,23 @@ define hidden void @_ZN5tokio7runtime9scheduler5defer5Defer5defer17hee69addc8ea0 63: ; preds = %._crit_edge.i, %49 %64 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %53, %49 ] - %65 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %66 = load ptr, ptr %65, align 8, !alias.scope !441, !noalias !444, !nonnull !5, !noundef !5 - %67 = getelementptr inbounds { ptr, ptr }, ptr %66, i64 %64 - store ptr %50, ptr %67, align 8, !noalias !444 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - store ptr %51, ptr %68, align 8 - %69 = load i64, ptr %7, align 8, !alias.scope !441, !noalias !444, !noundef !5 - %70 = add i64 %69, 1 - store i64 %70, ptr %7, align 8, !alias.scope !441, !noalias !444 + %65 = load ptr, ptr %7, align 8, !alias.scope !441, !noalias !444, !nonnull !5, !noundef !5 + %66 = getelementptr inbounds { ptr, ptr }, ptr %65, i64 %64 + store ptr %50, ptr %66, align 8, !noalias !444 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 8 + store ptr %51, ptr %67, align 8 + %68 = load i64, ptr %8, align 8, !alias.scope !441, !noalias !444, !noundef !5 + %69 = add i64 %68, 1 + store i64 %69, ptr %8, align 8, !alias.scope !441, !noalias !444 %storemerge.in.pre = load i64, ptr %0, align 8, !noalias !5 - %71 = add i64 %storemerge.in.pre, 1 + %70 = add i64 %storemerge.in.pre, 1 br label %48 -72: ; preds = %41, %57 +71: ; preds = %41, %57 %eh.lpad-body = phi { ptr, i32 } [ %42, %41 ], [ %58, %57 ] - %73 = load i64, ptr %0, align 8, !noalias !451, !noundef !5 - %74 = add i64 %73, 1 - store i64 %74, ptr %0, align 8, !noalias !451 + %72 = load i64, ptr %0, align 8, !noalias !451, !noundef !5 + %73 = add i64 %72, 1 + store i64 %73, ptr %0, align 8, !noalias !451 resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/tree-sitter-rs/optimized/29jobt8pkdzk3dof.ll b/bench/tree-sitter-rs/optimized/29jobt8pkdzk3dof.ll index 8cf58c3d0d2..f4ab8a622f7 100644 --- a/bench/tree-sitter-rs/optimized/29jobt8pkdzk3dof.ll +++ b/bench/tree-sitter-rs/optimized/29jobt8pkdzk3dof.ll @@ -201,7 +201,7 @@ define hidden void @"_ZN108_$LT$core..iter..adapters..filter..Filter$LT$I$C$P$GT ret void } -; Function Attrs: inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable define hidden noundef zeroext i1 @"_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h303d7ff60e1c8e56E.llvm.10232584350437833291"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #5 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !7 @@ -367,7 +367,7 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @"_ZN51_$LT$T$u20$ ret ptr %0 } -; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17h2cce8db86c74e07dE"(ptr noalias nocapture noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #9 { %4 = getelementptr inbounds nuw i8, ptr %2, i64 16 %5 = load i64, ptr %4, align 8, !alias.scope !118, !noundef !7 @@ -387,7 +387,7 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ } ; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: readwrite) uwtable -define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17ha4c375961a4b245cE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #10 { +define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17ha4c375961a4b245cE"(ptr noalias noundef readonly align 8 dereferenceable(16) %0, ptr noalias noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #10 { tail call void @llvm.experimental.noalias.scope.decl(metadata !128) tail call void @llvm.experimental.noalias.scope.decl(metadata !131) %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -400,7 +400,7 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ 7: ; preds = %2 %8 = load ptr, ptr %1, align 8, !alias.scope !131, !noalias !128, !nonnull !7, !align !28, !noundef !7 %9 = load ptr, ptr %0, align 8, !alias.scope !128, !noalias !131, !nonnull !7, !align !28, !noundef !7 - %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %9, ptr nonnull readonly align 1 %8, i64 %4), !alias.scope !133, !noalias !140 + %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %9, ptr nonnull readonly align 1 %8, i64 %4), !alias.scope !133 %10 = icmp eq i32 %bcmp.i.i.i, 0 br label %"_ZN4core3cmp5impls69_$LT$impl$u20$core..cmp..PartialEq$LT$$RF$B$GT$$u20$for$u20$$RF$A$GT$2eq17h303d7ff60e1c8e56E.llvm.10232584350437833291.exit" @@ -435,8 +435,8 @@ define hidden void @"_ZN86_$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..o define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17ha74b3cb5d391ff35E.llvm.10232584350437833291"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %1) unnamed_addr #3 personality ptr @rust_eh_personality { %3 = alloca [4 x i8], align 4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %5 = load ptr, ptr %4, align 8, !alias.scope !141, !nonnull !7, !noundef !7 - %.promoted = load ptr, ptr %0, align 8, !alias.scope !141 + %5 = load ptr, ptr %4, align 8, !alias.scope !140, !nonnull !7, !noundef !7 + %.promoted = load ptr, ptr %0, align 8, !alias.scope !140 %6 = icmp eq ptr %.promoted, %5 br i1 %6, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE.exit.thread", label %.lr.ph @@ -449,36 +449,36 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core.. 10: ; preds = %.lr.ph, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E.exit.thread9" %11 = phi ptr [ %.promoted, %.lr.ph ], [ %12, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E.exit.thread9" ] %12 = getelementptr inbounds nuw i8, ptr %11, i64 16 - store ptr %12, ptr %0, align 8, !alias.scope !141 - %13 = load ptr, ptr %11, align 8, !noalias !144, !nonnull !7, !align !28, !noundef !7 + store ptr %12, ptr %0, align 8, !alias.scope !140 + %13 = load ptr, ptr %11, align 8, !noalias !143, !nonnull !7, !align !28, !noundef !7 %14 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %15 = load i64, ptr %14, align 8, !noalias !144, !noundef !7 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3), !noalias !144 - store i32 0, ptr %3, align 4, !noalias !144 - %16 = call { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17h0195287417066071E.llvm.13317857278563473081(i32 noundef 95, ptr noalias noundef nonnull align 1 %3, i64 noundef 4), !noalias !144 + %15 = load i64, ptr %14, align 8, !noalias !143, !noundef !7 + call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3), !noalias !143 + store i32 0, ptr %3, align 4, !noalias !143 + %16 = call { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17h0195287417066071E.llvm.13317857278563473081(i32 noundef 95, ptr noalias noundef nonnull align 1 %3, i64 noundef 4), !noalias !143 %17 = extractvalue { ptr, i64 } %16, 1 %.not.i.i.i = icmp ult i64 %15, %17 br i1 %.not.i.i.i, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE.exit.thread.i.i", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE.exit.i.i" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE.exit.thread.i.i": ; preds = %10 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3), !noalias !144 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3), !noalias !143 br label %20 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE.exit.i.i": ; preds = %10 %18 = extractvalue { ptr, i64 } %16, 0 - %bcmp.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %18, ptr nonnull readonly align 1 %13, i64 %17), !alias.scope !151 + %bcmp.i.i.i.i = call i32 @bcmp(ptr nonnull readonly align 1 %18, ptr nonnull readonly align 1 %13, i64 %17), !alias.scope !150 %19 = icmp eq i32 %bcmp.i.i.i.i, 0 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3), !noalias !144 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3), !noalias !143 br i1 %19, label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E.exit.thread9", label %20 20: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE.exit.i.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE.exit.thread.i.i" - %21 = load i64, ptr %8, align 8, !alias.scope !158, !noalias !161, !noundef !7 + %21 = load i64, ptr %8, align 8, !alias.scope !157, !noalias !160, !noundef !7 %22 = icmp eq i64 %21, 0 br i1 %22, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE.exit.thread", label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E.exit" "_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E.exit": ; preds = %20 - %23 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hb73168977208b880E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11), !noalias !144 - %24 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8bbca0c6f4b1a54eE.llvm.17993675034718784294"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %7, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11), !noalias !144 + %23 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hb73168977208b880E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11), !noalias !143 + %24 = call noundef align 8 dereferenceable_or_null(16) ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h8bbca0c6f4b1a54eE.llvm.17993675034718784294"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %7, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11), !noalias !143 %25 = icmp eq ptr %24, null br i1 %25, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE.exit.thread", label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E.exit.thread9" @@ -561,11 +561,11 @@ attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { nofree norecurse nosync nounwind nonlazybind memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #9 = { mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #11 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #12 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -717,26 +717,25 @@ attributes #16 = { nocallback nofree nosync nounwind speculatable willreturn mem !137 = distinct !{!137, !138, !"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h256a3fdda6844c00E.llvm.10232584350437833291: argument 0"} !138 = distinct !{!138, !"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h256a3fdda6844c00E.llvm.10232584350437833291"} !139 = distinct !{!139, !138, !"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17h256a3fdda6844c00E.llvm.10232584350437833291: argument 1"} -!140 = !{!129, !132} -!141 = !{!142} -!142 = distinct !{!142, !143, !"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE: argument 0"} -!143 = distinct !{!143, !"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE"} -!144 = !{!145, !147, !148, !150} -!145 = distinct !{!145, !146, !"_ZN21tree_sitter_highlight22HighlightConfiguration27nonconformant_capture_names28_$u7b$$u7b$closure$u7d$$u7d$17hdf350134a36cbef9E.llvm.13317857278563473081: argument 0"} -!146 = distinct !{!146, !"_ZN21tree_sitter_highlight22HighlightConfiguration27nonconformant_capture_names28_$u7b$$u7b$closure$u7d$$u7d$17hdf350134a36cbef9E.llvm.13317857278563473081"} -!147 = distinct !{!147, !146, !"_ZN21tree_sitter_highlight22HighlightConfiguration27nonconformant_capture_names28_$u7b$$u7b$closure$u7d$$u7d$17hdf350134a36cbef9E.llvm.13317857278563473081: argument 1"} -!148 = distinct !{!148, !149, !"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E: argument 0"} -!149 = distinct !{!149, !"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E"} -!150 = distinct !{!150, !149, !"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E: argument 1"} -!151 = !{!152, !154, !155, !157} -!152 = distinct !{!152, !153, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hab73950af7f367c1E: argument 0"} -!153 = distinct !{!153, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hab73950af7f367c1E"} -!154 = distinct !{!154, !153, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hab73950af7f367c1E: argument 1"} -!155 = distinct !{!155, !156, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE: argument 0"} -!156 = distinct !{!156, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE"} -!157 = distinct !{!157, !156, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE: argument 1"} -!158 = !{!159} -!159 = distinct !{!159, !160, !"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h24af689c3821ae5cE: argument 0"} -!160 = distinct !{!160, !"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h24af689c3821ae5cE"} -!161 = !{!162, !145, !147, !148, !150} -!162 = distinct !{!162, !160, !"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h24af689c3821ae5cE: argument 1"} +!140 = !{!141} +!141 = distinct !{!141, !142, !"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE: argument 0"} +!142 = distinct !{!142, !"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hed4e98fafc7f99baE"} +!143 = !{!144, !146, !147, !149} +!144 = distinct !{!144, !145, !"_ZN21tree_sitter_highlight22HighlightConfiguration27nonconformant_capture_names28_$u7b$$u7b$closure$u7d$$u7d$17hdf350134a36cbef9E.llvm.13317857278563473081: argument 0"} +!145 = distinct !{!145, !"_ZN21tree_sitter_highlight22HighlightConfiguration27nonconformant_capture_names28_$u7b$$u7b$closure$u7d$$u7d$17hdf350134a36cbef9E.llvm.13317857278563473081"} +!146 = distinct !{!146, !145, !"_ZN21tree_sitter_highlight22HighlightConfiguration27nonconformant_capture_names28_$u7b$$u7b$closure$u7d$$u7d$17hdf350134a36cbef9E.llvm.13317857278563473081: argument 1"} +!147 = distinct !{!147, !148, !"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E: argument 0"} +!148 = distinct !{!148, !"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E"} +!149 = distinct !{!149, !148, !"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf428f40d88ade2f1E: argument 1"} +!150 = !{!151, !153, !154, !156} +!151 = distinct !{!151, !152, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hab73950af7f367c1E: argument 0"} +!152 = distinct !{!152, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hab73950af7f367c1E"} +!153 = distinct !{!153, !152, !"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hab73950af7f367c1E: argument 1"} +!154 = distinct !{!154, !155, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE: argument 0"} +!155 = distinct !{!155, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE"} +!156 = distinct !{!156, !155, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hda2e356b6236a3ccE: argument 1"} +!157 = !{!158} +!158 = distinct !{!158, !159, !"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h24af689c3821ae5cE: argument 0"} +!159 = distinct !{!159, !"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h24af689c3821ae5cE"} +!160 = !{!161, !144, !146, !147, !149} +!161 = distinct !{!161, !159, !"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$12contains_key17h24af689c3821ae5cE: argument 1"} diff --git a/bench/turborepo-rs/optimized/4vdzcrqmrfs3duezq953b12ub.ll b/bench/turborepo-rs/optimized/4vdzcrqmrfs3duezq953b12ub.ll index 18cb732cc14..b94b9181a47 100644 --- a/bench/turborepo-rs/optimized/4vdzcrqmrfs3duezq953b12ub.ll +++ b/bench/turborepo-rs/optimized/4vdzcrqmrfs3duezq953b12ub.ll @@ -92,7 +92,7 @@ define void @_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6Globa } ; Function Attrs: cold nonlazybind uwtable -define void @_RINvNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB8_6RawVecppE7reserve21do_reserve_and_handlehNtNtBa_5alloc6GlobalECslOtZNRIhnDi_7pidlock(ptr noalias nocapture noundef align 8 dereferenceable(16) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #1 personality ptr @rust_eh_personality { +define void @_RINvNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB8_6RawVecppE7reserve21do_reserve_and_handlehNtNtBa_5alloc6GlobalECslOtZNRIhnDi_7pidlock(ptr noalias noundef align 8 dereferenceable(16) %0, i64 noundef %1, i64 noundef %2) unnamed_addr #1 personality ptr @rust_eh_personality { tail call void @llvm.experimental.noalias.scope.decl(metadata !6) %4 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) %5 = extractvalue { i64, i1 } %4, 1 @@ -124,8 +124,8 @@ _RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhn br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i" 17: ; preds = %_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock.exit.i - %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !14 - %19 = tail call noalias noundef ptr @__rust_alloc(i64 noundef range(i64 1, 0) %.sroa.0.0.sroa.speculated.i17.i, i64 noundef range(i64 1, 0) %.sroa.0.0.i.i) #12, !noalias !14 + %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !18 + %19 = tail call noalias noundef ptr @__rust_alloc(i64 noundef range(i64 1, 0) %.sroa.0.0.sroa.speculated.i17.i, i64 noundef range(i64 1, 0) %.sroa.0.0.i.i) #12, !noalias !18 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i": ; preds = %17, %12 @@ -225,9 +225,9 @@ define void @_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE15try_allocate } ; Function Attrs: nonlazybind uwtable -define void @_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE8grow_oneCslOtZNRIhnDi_7pidlock(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #3 personality ptr @rust_eh_personality { +define void @_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE8grow_oneCslOtZNRIhnDi_7pidlock(ptr noalias noundef align 8 dereferenceable(16) %0) unnamed_addr #3 personality ptr @rust_eh_personality { %2 = load i64, ptr %0, align 8, !noundef !5 - tail call void @llvm.experimental.noalias.scope.decl(metadata !18) + tail call void @llvm.experimental.noalias.scope.decl(metadata !19) %3 = icmp eq i64 %2, -1 br i1 %3, label %18, label %4 @@ -249,15 +249,15 @@ _RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhn 9: ; preds = %_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock.exit.thread.i %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %11 = load ptr, ptr %10, align 8, !alias.scope !21, !noalias !24, !nonnull !5, !noundef !5 + %11 = load ptr, ptr %10, align 8, !alias.scope !22, !noalias !25, !nonnull !5, !noundef !5 %12 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17.i, %2 tail call void @llvm.assume(i1 %12) - %13 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %11, i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %.sroa.0.0.i.i, i64 noundef %.sroa.0.0.sroa.speculated.i17.i) #12, !noalias !26 + %13 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %11, i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %.sroa.0.0.i.i, i64 noundef %.sroa.0.0.sroa.speculated.i17.i) #12, !noalias !27 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i" 14: ; preds = %_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock.exit.i - %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !26 - %16 = tail call noalias noundef ptr @__rust_alloc(i64 noundef range(i64 1, 0) %.sroa.0.0.sroa.speculated.i17.i, i64 noundef range(i64 1, 0) %.sroa.0.0.i.i) #12, !noalias !26 + %15 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !31 + %16 = tail call noalias noundef ptr @__rust_alloc(i64 noundef range(i64 1, 0) %.sroa.0.0.sroa.speculated.i17.i, i64 noundef range(i64 1, 0) %.sroa.0.0.i.i) #12, !noalias !31 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i": ; preds = %14, %9 @@ -273,8 +273,8 @@ _RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhn 19: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i.i" %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sroa.06.0.i.i.pn.i.i, ptr %20, align 8, !alias.scope !18 - store i64 %.sroa.0.0.sroa.speculated.i17.i, ptr %0, align 8, !alias.scope !18 + store ptr %.sroa.06.0.i.i.pn.i.i, ptr %20, align 8, !alias.scope !19 + store i64 %.sroa.0.0.sroa.speculated.i17.i, ptr %0, align 8, !alias.scope !19 ret void } @@ -303,15 +303,15 @@ _RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhn 12: ; preds = %_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock.exit.thread %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %14 = load ptr, ptr %13, align 8, !alias.scope !30, !noalias !33, !nonnull !5, !noundef !5 + %14 = load ptr, ptr %13, align 8, !alias.scope !32, !noalias !35, !nonnull !5, !noundef !5 %15 = icmp uge i64 %.sroa.0.0.sroa.speculated.i17, %8 tail call void @llvm.assume(i1 %15) - %16 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %14, i64 noundef %8, i64 noundef range(i64 1, -9223372036854775807) %.sroa.0.0.i, i64 noundef %.sroa.0.0.sroa.speculated.i17) #12, !noalias !35 + %16 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %14, i64 noundef %8, i64 noundef range(i64 1, -9223372036854775807) %.sroa.0.0.i, i64 noundef %.sroa.0.0.sroa.speculated.i17) #12, !noalias !37 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i" 17: ; preds = %_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock.exit - %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !35 - %19 = tail call noalias noundef ptr @__rust_alloc(i64 noundef range(i64 1, 0) %.sroa.0.0.sroa.speculated.i17, i64 noundef range(i64 1, 0) %.sroa.0.0.i) #12, !noalias !35 + %18 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !37 + %19 = tail call noalias noundef ptr @__rust_alloc(i64 noundef range(i64 1, 0) %.sroa.0.0.sroa.speculated.i17, i64 noundef range(i64 1, 0) %.sroa.0.0.i) #12, !noalias !37 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h88f400c446b72260E.exit.i": ; preds = %17, %12 @@ -392,28 +392,30 @@ attributes #13 = { noreturn } !11 = distinct !{!11, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock"} !12 = !{!13} !13 = distinct !{!13, !11, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 0"} -!14 = !{!15, !17, !7} +!14 = !{!15, !17} !15 = distinct !{!15, !16, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 0"} !16 = distinct !{!16, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock"} !17 = distinct !{!17, !16, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 1"} -!18 = !{!19} -!19 = distinct !{!19, !20, !"_RNvMs1_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14grow_amortizedCslOtZNRIhnDi_7pidlock: argument 0"} -!20 = distinct !{!20, !"_RNvMs1_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14grow_amortizedCslOtZNRIhnDi_7pidlock"} -!21 = !{!22, !19} -!22 = distinct !{!22, !23, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 1"} -!23 = distinct !{!23, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock"} -!24 = !{!25} -!25 = distinct !{!25, !23, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 0"} -!26 = !{!27, !29, !19} -!27 = distinct !{!27, !28, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 0"} -!28 = distinct !{!28, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock"} -!29 = distinct !{!29, !28, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 1"} -!30 = !{!31} -!31 = distinct !{!31, !32, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 1"} -!32 = distinct !{!32, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock"} -!33 = !{!34} -!34 = distinct !{!34, !32, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 0"} -!35 = !{!36, !38} -!36 = distinct !{!36, !37, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 0"} -!37 = distinct !{!37, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock"} -!38 = distinct !{!38, !37, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 1"} +!18 = !{!15, !17, !7} +!19 = !{!20} +!20 = distinct !{!20, !21, !"_RNvMs1_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14grow_amortizedCslOtZNRIhnDi_7pidlock: argument 0"} +!21 = distinct !{!21, !"_RNvMs1_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14grow_amortizedCslOtZNRIhnDi_7pidlock"} +!22 = !{!23, !20} +!23 = distinct !{!23, !24, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 1"} +!24 = distinct !{!24, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock"} +!25 = !{!26} +!26 = distinct !{!26, !24, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 0"} +!27 = !{!28, !30} +!28 = distinct !{!28, !29, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 0"} +!29 = distinct !{!29, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock"} +!30 = distinct !{!30, !29, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 1"} +!31 = !{!28, !30, !20} +!32 = !{!33} +!33 = distinct !{!33, !34, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 1"} +!34 = distinct !{!34, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock"} +!35 = !{!36} +!36 = distinct !{!36, !34, !"_RNvMs0_NtCs68wO5nsWeTG_5alloc7raw_vecINtB5_6RawVechE14current_memoryCslOtZNRIhnDi_7pidlock: argument 0"} +!37 = !{!38, !40} +!38 = distinct !{!38, !39, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 0"} +!39 = distinct !{!39, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock"} +!40 = distinct !{!40, !39, !"_RINvNtCs68wO5nsWeTG_5alloc7raw_vec11finish_growNtNtB4_5alloc6GlobalECslOtZNRIhnDi_7pidlock: argument 1"} diff --git a/bench/typst-rs/optimized/w6iknwszr5npyaz.ll b/bench/typst-rs/optimized/w6iknwszr5npyaz.ll index f78c3d16e6d..9e1866312b6 100644 --- a/bench/typst-rs/optimized/w6iknwszr5npyaz.ll +++ b/bench/typst-rs/optimized/w6iknwszr5npyaz.ll @@ -1096,7 +1096,7 @@ define hidden void @"_ZN6flate27deflate7bufread23DeflateDecoder$LT$R$GT$3new17h2 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.llvm.7454132670541690561.exit.i.i.i": ; preds = %4 %7 = icmp ne ptr %.sroa.4.0.copyload, null tail call void @llvm.assume(i1 %7) - tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.4.0.copyload, i64 noundef %.sroa.5.0.copyload, i64 noundef 1) #19, !noalias !82 + tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.4.0.copyload, i64 noundef %.sroa.5.0.copyload, i64 noundef 1) #19 br label %"_ZN4core3ptr73drop_in_place$LT$flate2..bufreader..BufReader$LT$$RF$$u5b$u8$u5d$$GT$$GT$17hddab80b93377dd14E.exit" 8: ; preds = %2 @@ -1135,7 +1135,7 @@ define hidden void @"_ZN73_$LT$siphasher..sip128..Hasher$LT$S$GT$$u20$as$u20$cor br i1 %12, label %13, label %15 13: ; preds = %10 - %.0.copyload.i = load i32, ptr %1, align 1, !alias.scope !89 + %.0.copyload.i = load i32, ptr %1, align 1, !alias.scope !82 %14 = zext i32 %.0.copyload.i to i64 br label %15 @@ -1148,7 +1148,7 @@ define hidden void @"_ZN73_$LT$siphasher..sip128..Hasher$LT$S$GT$$u20$as$u20$cor 18: ; preds = %15 %19 = getelementptr i8, ptr %1, i64 %.017.i - %.0.copyload15.i = load i16, ptr %19, align 1, !alias.scope !89 + %.0.copyload15.i = load i16, ptr %19, align 1, !alias.scope !82 %20 = zext i16 %.0.copyload15.i to i64 %21 = shl nuw nsw i64 %.017.i, 3 %22 = shl nuw nsw i64 %20, %21 @@ -1164,7 +1164,7 @@ define hidden void @"_ZN73_$LT$siphasher..sip128..Hasher$LT$S$GT$$u20$as$u20$cor 27: ; preds = %25 %28 = getelementptr inbounds i8, ptr %1, i64 %.118.i - %29 = load i8, ptr %28, align 1, !alias.scope !89, !noundef !16 + %29 = load i8, ptr %28, align 1, !alias.scope !82, !noundef !16 %30 = zext i8 %29 to i64 %31 = shl nuw nsw i64 %.118.i, 3 %32 = and i64 %31, 56 @@ -1198,36 +1198,36 @@ _ZN9siphasher6sip1289u8to64_le17h147299064db59429E.exit: ; preds = %25, %27 %48 = getelementptr inbounds nuw i8, ptr %0, i64 16 %49 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.promoted20 = load i64, ptr %47, align 8 - %.promoted21 = load i64, ptr %48, align 8, !alias.scope !92 - %.promoted23 = load i64, ptr %49, align 8, !alias.scope !92 + %.promoted21 = load i64, ptr %48, align 8, !alias.scope !85 + %.promoted23 = load i64, ptr %49, align 8, !alias.scope !85 br label %105 50: ; preds = %_ZN9siphasher6sip1289u8to64_le17h147299064db59429E.exit %51 = getelementptr inbounds nuw i8, ptr %0, i64 24 %52 = load i64, ptr %51, align 8, !noundef !16 %53 = xor i64 %52, %40 - %54 = load i64, ptr %0, align 8, !alias.scope !95, !noundef !16 + %54 = load i64, ptr %0, align 8, !alias.scope !88, !noundef !16 %55 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %56 = load i64, ptr %55, align 8, !alias.scope !95, !noundef !16 + %56 = load i64, ptr %55, align 8, !alias.scope !88, !noundef !16 %57 = add i64 %56, %54 %58 = tail call i64 @llvm.fshl.i64(i64 %56, i64 %56, i64 13) %59 = xor i64 %58, %57 %60 = tail call i64 @llvm.fshl.i64(i64 %57, i64 %57, i64 32) %61 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %62 = load i64, ptr %61, align 8, !alias.scope !95, !noundef !16 + %62 = load i64, ptr %61, align 8, !alias.scope !88, !noundef !16 %63 = add i64 %62, %53 %64 = tail call i64 @llvm.fshl.i64(i64 %53, i64 %53, i64 16) %65 = xor i64 %63, %64 %66 = add i64 %65, %60 %67 = tail call i64 @llvm.fshl.i64(i64 %65, i64 %65, i64 21) %68 = xor i64 %67, %66 - store i64 %68, ptr %51, align 8, !alias.scope !95 + store i64 %68, ptr %51, align 8, !alias.scope !88 %69 = add i64 %63, %59 %70 = tail call i64 @llvm.fshl.i64(i64 %59, i64 %59, i64 17) %71 = xor i64 %69, %70 - store i64 %71, ptr %55, align 8, !alias.scope !95 + store i64 %71, ptr %55, align 8, !alias.scope !88 %72 = tail call i64 @llvm.fshl.i64(i64 %69, i64 %69, i64 32) - store i64 %72, ptr %61, align 8, !alias.scope !95 + store i64 %72, ptr %61, align 8, !alias.scope !88 %73 = xor i64 %66, %40 store i64 %73, ptr %0, align 8 br label %42 @@ -1238,8 +1238,8 @@ _ZN9siphasher6sip1289u8to64_le17h147299064db59429E.exit: ; preds = %25, %27 ._crit_edge: ; preds = %105 store i64 %121, ptr %47, align 8 - store i64 %124, ptr %48, align 8, !alias.scope !92 - store i64 %125, ptr %49, align 8, !alias.scope !92 + store i64 %124, ptr %48, align 8, !alias.scope !85 + store i64 %125, ptr %49, align 8, !alias.scope !85 store i64 %126, ptr %0, align 8 br label %76 @@ -1250,7 +1250,7 @@ _ZN9siphasher6sip1289u8to64_le17h147299064db59429E.exit: ; preds = %25, %27 78: ; preds = %76 %79 = getelementptr inbounds i8, ptr %1, i64 %.1.lcssa - %.0.copyload.i17 = load i32, ptr %79, align 1, !alias.scope !98 + %.0.copyload.i17 = load i32, ptr %79, align 1, !alias.scope !91 %80 = zext i32 %.0.copyload.i17 to i64 br label %81 @@ -1264,7 +1264,7 @@ _ZN9siphasher6sip1289u8to64_le17h147299064db59429E.exit: ; preds = %25, %27 84: ; preds = %81 %85 = getelementptr i8, ptr %1, i64 %.1.lcssa %86 = getelementptr i8, ptr %85, i64 %.017.i11 - %.0.copyload15.i16 = load i16, ptr %86, align 1, !alias.scope !98 + %.0.copyload15.i16 = load i16, ptr %86, align 1, !alias.scope !91 %87 = zext i16 %.0.copyload15.i16 to i64 %88 = shl nuw nsw i64 %.017.i11, 3 %89 = shl nuw nsw i64 %87, %88 @@ -1283,7 +1283,7 @@ _ZN9siphasher6sip1289u8to64_le17h147299064db59429E.exit: ; preds = %25, %27 %96 = icmp ult i64 %95, %2 tail call void @llvm.assume(i1 %96) %97 = getelementptr inbounds i8, ptr %1, i64 %95 - %98 = load i8, ptr %97, align 1, !alias.scope !98, !noundef !16 + %98 = load i8, ptr %97, align 1, !alias.scope !91, !noundef !16 %99 = zext i8 %98 to i64 %100 = shl nuw nsw i64 %.118.i13, 3 %101 = and i64 %100, 56 @@ -1361,28 +1361,28 @@ define hidden void @"_ZN9siphasher6sip12815Hasher$LT$S$GT$11short_write17hd2a6c1 %18 = getelementptr inbounds nuw i8, ptr %0, i64 24 %19 = load i64, ptr %18, align 8, !noundef !16 %20 = xor i64 %19, %15 - %21 = load i64, ptr %0, align 8, !alias.scope !101, !noundef !16 + %21 = load i64, ptr %0, align 8, !alias.scope !94, !noundef !16 %22 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %23 = load i64, ptr %22, align 8, !alias.scope !101, !noundef !16 + %23 = load i64, ptr %22, align 8, !alias.scope !94, !noundef !16 %24 = add i64 %23, %21 %25 = tail call i64 @llvm.fshl.i64(i64 %23, i64 %23, i64 13) %26 = xor i64 %25, %24 %27 = tail call i64 @llvm.fshl.i64(i64 %24, i64 %24, i64 32) %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %29 = load i64, ptr %28, align 8, !alias.scope !101, !noundef !16 + %29 = load i64, ptr %28, align 8, !alias.scope !94, !noundef !16 %30 = add i64 %29, %20 %31 = tail call i64 @llvm.fshl.i64(i64 %20, i64 %20, i64 16) %32 = xor i64 %30, %31 %33 = add i64 %32, %27 %34 = tail call i64 @llvm.fshl.i64(i64 %32, i64 %32, i64 21) %35 = xor i64 %34, %33 - store i64 %35, ptr %18, align 8, !alias.scope !101 + store i64 %35, ptr %18, align 8, !alias.scope !94 %36 = add i64 %30, %26 %37 = tail call i64 @llvm.fshl.i64(i64 %26, i64 %26, i64 17) %38 = xor i64 %36, %37 - store i64 %38, ptr %22, align 8, !alias.scope !101 + store i64 %38, ptr %22, align 8, !alias.scope !94 %39 = tail call i64 @llvm.fshl.i64(i64 %36, i64 %36, i64 32) - store i64 %39, ptr %28, align 8, !alias.scope !101 + store i64 %39, ptr %28, align 8, !alias.scope !94 %40 = xor i64 %33, %15 store i64 %40, ptr %0, align 8 %41 = add i64 %8, -4 @@ -1589,25 +1589,18 @@ attributes #21 = { cold noreturn nounwind } !79 = distinct !{!79, !80, !"_ZN5alloc5boxed12Box$LT$T$GT$3new17hb9125a77054bb3faE: argument 0"} !80 = distinct !{!80, !"_ZN5alloc5boxed12Box$LT$T$GT$3new17hb9125a77054bb3faE"} !81 = !{!76} -!82 = !{!83, !85, !87} -!83 = distinct !{!83, !84, !"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h99492bd189f87ad1E.llvm.7454132670541690561: argument 0"} -!84 = distinct !{!84, !"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h99492bd189f87ad1E.llvm.7454132670541690561"} -!85 = distinct !{!85, !86, !"_ZN4core3ptr58drop_in_place$LT$alloc..boxed..Box$LT$$u5b$u8$u5d$$GT$$GT$17hae48b6bb2e5421bbE.llvm.7454132670541690561: argument 0"} -!86 = distinct !{!86, !"_ZN4core3ptr58drop_in_place$LT$alloc..boxed..Box$LT$$u5b$u8$u5d$$GT$$GT$17hae48b6bb2e5421bbE.llvm.7454132670541690561"} -!87 = distinct !{!87, !88, !"_ZN4core3ptr73drop_in_place$LT$flate2..bufreader..BufReader$LT$$RF$$u5b$u8$u5d$$GT$$GT$17hddab80b93377dd14E: argument 0"} -!88 = distinct !{!88, !"_ZN4core3ptr73drop_in_place$LT$flate2..bufreader..BufReader$LT$$RF$$u5b$u8$u5d$$GT$$GT$17hddab80b93377dd14E"} -!89 = !{!90} -!90 = distinct !{!90, !91, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E: argument 0"} -!91 = distinct !{!91, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E"} -!92 = !{!93} -!93 = distinct !{!93, !94, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E: argument 0"} -!94 = distinct !{!94, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E"} -!95 = !{!96} -!96 = distinct !{!96, !97, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E: argument 0"} -!97 = distinct !{!97, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E"} -!98 = !{!99} -!99 = distinct !{!99, !100, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E: argument 0"} -!100 = distinct !{!100, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E"} -!101 = !{!102} -!102 = distinct !{!102, !103, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E: argument 0"} -!103 = distinct !{!103, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E"} +!82 = !{!83} +!83 = distinct !{!83, !84, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E: argument 0"} +!84 = distinct !{!84, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E"} +!85 = !{!86} +!86 = distinct !{!86, !87, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E: argument 0"} +!87 = distinct !{!87, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E"} +!88 = !{!89} +!89 = distinct !{!89, !90, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E: argument 0"} +!90 = distinct !{!90, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E"} +!91 = !{!92} +!92 = distinct !{!92, !93, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E: argument 0"} +!93 = distinct !{!93, !"_ZN9siphasher6sip1289u8to64_le17h147299064db59429E"} +!94 = !{!95} +!95 = distinct !{!95, !96, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E: argument 0"} +!96 = distinct !{!96, !"_ZN73_$LT$siphasher..sip128..Sip13Rounds$u20$as$u20$siphasher..sip128..Sip$GT$8c_rounds17h2d7d97b615b20868E"} diff --git a/bench/verilator/optimized/V3CCtors.cpp.ll b/bench/verilator/optimized/V3CCtors.cpp.ll index 6ab157e3330..a33252092d7 100644 --- a/bench/verilator/optimized/V3CCtors.cpp.ll +++ b/bench/verilator/optimized/V3CCtors.cpp.ll @@ -3451,6 +3451,7 @@ _ZN12AstCoverDecl12unlinkFrBackEP10VNRelinker.exit: ; preds = %66 br label %79 79: ; preds = %.noexc63, %_ZN12AstCoverDecl12unlinkFrBackEP10VNRelinker.exit + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %42, i64 0) ] %.not.i.i.i = icmp eq ptr %69, null br i1 %.not.i.i.i, label %_ZN15V3CCtorsBuilder3addEP7AstNode.exit, label %80 @@ -4287,18 +4288,18 @@ define linkonce_odr dso_local void @_ZN15V3CCtorsBuilder3addEP7AstNode(ptr nound br label %15 15: ; preds = %7, %2 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %17 = load ptr, ptr %16, align 8 %.not.i.i = icmp eq ptr %1, null - br i1 %.not.i.i, label %_ZN8AstCFunc9addStmtspEP7AstNode.exit, label %16 + br i1 %.not.i.i, label %_ZN8AstCFunc9addStmtspEP7AstNode.exit, label %18 -16: ; preds = %15 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %18 = load ptr, ptr %17, align 8 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 16 +18: ; preds = %15 + %19 = getelementptr inbounds nuw i8, ptr %17, i64 16 %20 = load ptr, ptr %19, align 8 tail call void @_ZN7AstNode7addOp3pEPS_(ptr noundef nonnull align 8 dereferenceable(328) %20, ptr noundef nonnull %1) br label %_ZN8AstCFunc9addStmtspEP7AstNode.exit -_ZN8AstCFunc9addStmtspEP7AstNode.exit: ; preds = %15, %16 +_ZN8AstCFunc9addStmtspEP7AstNode.exit: ; preds = %15, %18 %21 = load i32, ptr %4, align 8 %22 = add nsw i32 %21, 1 store i32 %22, ptr %4, align 8 diff --git a/bench/wasmtime-rs/optimized/456j0x8j3xyjpk7h.ll b/bench/wasmtime-rs/optimized/456j0x8j3xyjpk7h.ll index a48f9fcb74b..28ed562e3f7 100644 --- a/bench/wasmtime-rs/optimized/456j0x8j3xyjpk7h.ll +++ b/bench/wasmtime-rs/optimized/456j0x8j3xyjpk7h.ll @@ -25,8 +25,8 @@ target triple = "x86_64-unknown-linux-gnu" @anon.1a7ccdd092acc2f28badb7d7120aa20f.23 = private unnamed_addr constant <{ ptr, [8 x i8] }> <{ ptr @anon.1a7ccdd092acc2f28badb7d7120aa20f.22, [8 x i8] c"7\00\00\00\00\00\00\00" }>, align 8 @anon.1a7ccdd092acc2f28badb7d7120aa20f.24 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1a7ccdd092acc2f28badb7d7120aa20f.4, [16 x i8] c"+\00\00\00\00\00\00\00\93\01\00\00\09\00\00\00" }>, align 8 -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define hidden i8 @_ZN22cranelift_codegen_meta4cdsl8settings7Setting12default_byte17h6a4fda673b87e699E(ptr nocapture readonly align 8 %0) unnamed_addr #0 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable +define hidden i8 @_ZN22cranelift_codegen_meta4cdsl8settings7Setting12default_byte17h6a4fda673b87e699E(ptr align 8 %0) unnamed_addr #0 { %2 = load i64, ptr %0, align 8, !range !3, !noundef !4 %3 = xor i64 %2, -9223372036854775808 %4 = icmp ult i64 %3, 3 @@ -76,7 +76,7 @@ define { i64, i64 } @"_ZN149_$LT$cranelift_codegen_meta..cdsl..settings..PresetT } ; Function Attrs: nonlazybind uwtable -define hidden void @_ZN22cranelift_codegen_meta4cdsl8settings6Preset6layout17h24a05eec02a9e7e1E(ptr nocapture writeonly sret({ { i64, ptr, {} }, i64 }) align 8 %0, ptr align 8 %1, ptr nocapture readonly align 8 %2) unnamed_addr #2 personality ptr @rust_eh_personality { +define hidden void @_ZN22cranelift_codegen_meta4cdsl8settings6Preset6layout17h24a05eec02a9e7e1E(ptr nocapture writeonly sret({ { i64, ptr, {} }, i64 }) align 8 %0, ptr align 8 %1, ptr align 8 %2) unnamed_addr #2 personality ptr @rust_eh_personality { %4 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, [1 x i64] } }, align 8 %5 = alloca { ptr, ptr, {} }, align 8 %6 = alloca { i64, { { i8, i8 } }, [6 x i8] }, align 8 @@ -114,10 +114,10 @@ define hidden void @_ZN22cranelift_codegen_meta4cdsl8settings6Preset6layout17h24 store ptr %16, ptr %5, align 8 %18 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %17, ptr %18, align 8 - %19 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %21 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %22 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %19 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %20 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %21 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %22 = getelementptr inbounds nuw i8, ptr %7, i64 16 br label %23 23: ; preds = %52, %15 @@ -134,12 +134,12 @@ define hidden void @_ZN22cranelift_codegen_meta4cdsl8settings6Preset6layout17h24 28: ; preds = %25 %29 = load i64, ptr %24, align 8, !noundef !4 - %30 = load i64, ptr %19, align 8, !noundef !4 + %30 = load i64, ptr %20, align 8, !noundef !4 %31 = icmp ult i64 %29, %30 br i1 %31, label %32, label %42, !prof !6 32: ; preds = %28 - %33 = load ptr, ptr %20, align 8, !nonnull !4, !noundef !4 + %33 = load ptr, ptr %19, align 8, !nonnull !4, !noundef !4 %34 = getelementptr inbounds [0 x { { i64, [2 x i64] }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, i8, [7 x i8] }], ptr %33, i64 0, i64 %29 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) %35 = load i64, ptr %34, align 8, !range !3, !noundef !4 @@ -173,7 +173,9 @@ define hidden void @_ZN22cranelift_codegen_meta4cdsl8settings6Preset6layout17h24 %45 = getelementptr inbounds nuw i8, ptr %34, i64 9 %46 = load i8, ptr %45, align 1, !noundef !4 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) - %47 = load i64, ptr %21, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %45, i64 8) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %45, i64 8) ] + %47 = load i64, ptr %22, align 8, !noundef !4 %48 = getelementptr inbounds nuw i8, ptr %34, i64 72 %49 = load i8, ptr %48, align 8, !noundef !4 %50 = zext i8 %49 to i64 @@ -187,7 +189,7 @@ define hidden void @_ZN22cranelift_codegen_meta4cdsl8settings6Preset6layout17h24 52: ; preds = %44 %53 = and i8 %46, 7 %54 = shl nuw i8 1, %53 - %55 = load ptr, ptr %22, align 8, !nonnull !4 + %55 = load ptr, ptr %21, align 8, !nonnull !4 %56 = getelementptr inbounds nuw { i8, i8 }, ptr %55, i64 %50 %57 = load i8, ptr %56, align 1, !noundef !4 %58 = or i8 %57, %54 @@ -255,7 +257,7 @@ define void @"_ZN157_$LT$cranelift_codegen_meta..cdsl..settings..PredicateNode$u } ; Function Attrs: nonlazybind uwtable -define void @"_ZN224_$LT$cranelift_codegen_meta..cdsl..settings..PredicateNode$u20$as$u20$core..convert..From$LT$$LP$cranelift_codegen_meta..cdsl..settings..BoolSettingIndex$C$$RF$cranelift_codegen_meta..cdsl..settings..SettingGroup$RP$$GT$$GT$4from17h1919f8d11f3cd613E"(ptr nocapture writeonly sret({ i64, [4 x i64] }) align 8 %0, i64 %1, ptr nocapture readonly align 8 %2) unnamed_addr #2 { +define void @"_ZN224_$LT$cranelift_codegen_meta..cdsl..settings..PredicateNode$u20$as$u20$core..convert..From$LT$$LP$cranelift_codegen_meta..cdsl..settings..BoolSettingIndex$C$$RF$cranelift_codegen_meta..cdsl..settings..SettingGroup$RP$$GT$$GT$4from17h1919f8d11f3cd613E"(ptr nocapture writeonly sret({ i64, [4 x i64] }) align 8 %0, i64 %1, ptr align 8 %2) unnamed_addr #2 { %4 = getelementptr inbounds nuw i8, ptr %2, i64 16 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = icmp ult i64 %1, %5 @@ -591,8 +593,8 @@ define hidden noundef i64 @_ZN22cranelift_codegen_meta4cdsl8settings19SettingGro 13: ; preds = %6 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 32, i1 false) - %14 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %15 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 40 br label %.backedge .backedge: ; preds = %.backedge.backedge, %13 @@ -638,7 +640,7 @@ define hidden noundef i64 @_ZN22cranelift_codegen_meta4cdsl8settings19SettingGro %27 = getelementptr inbounds nuw i8, ptr %7, i64 48 store i64 %4, ptr %27, align 8 call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h2ad6a34f879a8696E"(ptr nonnull align 8 %23, ptr nonnull align 8 %7) - %28 = load i64, ptr %14, align 8, !noundef !4 + %28 = load i64, ptr %15, align 8, !noundef !4 %29 = add i64 %28, -1 ret i64 %29 @@ -650,12 +652,12 @@ define hidden noundef i64 @_ZN22cranelift_codegen_meta4cdsl8settings19SettingGro br label %.backedge 31: ; preds = %18 - %32 = load i64, ptr %14, align 8, !noundef !4 + %32 = load i64, ptr %15, align 8, !noundef !4 %33 = icmp ult i64 %20, %32 br i1 %33, label %34, label %42, !prof !6 34: ; preds = %31 - %35 = load ptr, ptr %15, align 8, !nonnull !4, !noundef !4 + %35 = load ptr, ptr %14, align 8, !nonnull !4, !noundef !4 %36 = getelementptr inbounds [0 x { { { i64, ptr, {} }, i64 }, { ptr, i64 }, { ptr, i64 } }], ptr %35, i64 0, i64 %20 %37 = getelementptr inbounds nuw i8, ptr %36, i64 8 %38 = load ptr, ptr %37, align 8, !nonnull !4, !noundef !4 @@ -1340,7 +1342,7 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #12 -attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/wireshark/optimized/packet-btmesh.c.ll b/bench/wireshark/optimized/packet-btmesh.c.ll index fe85bb87b9d..f297342bd8d 100644 --- a/bench/wireshark/optimized/packet-btmesh.c.ll +++ b/bench/wireshark/optimized/packet-btmesh.c.ll @@ -11951,20 +11951,18 @@ find_characteristic_id.exit.i: ; preds = %22, %find_character br i1 %exitcond.i.i, label %find_btmesh_property_characteristic_idx.exit.thread, label %find_characteristic_id.exit.i, !llvm.loop !36 find_btmesh_property_characteristic_idx.exit: ; preds = %find_characteristic_id.exit.i - %25 = trunc nuw nsw i64 %indvars.iv.i.i to i32 - switch i32 %25, label %26 [ - i32 -1, label %find_btmesh_property_characteristic_idx.exit.thread - i32 89, label %32 - ] + %.not34 = icmp eq i64 %indvars.iv.i.i, 89 + br i1 %.not34, label %32, label %25 -26: ; preds = %find_btmesh_property_characteristic_idx.exit +25: ; preds = %find_btmesh_property_characteristic_idx.exit %sext = shl i64 %indvars.iv.i.i, 32 - %27 = ashr exact i64 %sext, 32 - %28 = getelementptr [90 x %struct.bt_gatt_characteristic_t], ptr @bt_gatt_characteristics, i64 0, i64 %27, i32 1 - %29 = load i16, ptr %28, align 2 + %26 = ashr exact i64 %sext, 32 + %27 = getelementptr [90 x %struct.bt_gatt_characteristic_t], ptr @bt_gatt_characteristics, i64 0, i64 %26, i32 1 + %28 = trunc nuw nsw i64 %indvars.iv.i.i to i32 + %29 = load i16, ptr %27, align 2 %30 = zext i16 %29 to i32 %31 = tail call ptr @proto_tree_add_item(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %2, i32 noundef %3, i32 noundef %30, i32 noundef 0) #16 - tail call fastcc void @dissect_btmesh_property_idx(ptr noundef %2, ptr noundef %0, i32 noundef %3, i32 noundef %25) + tail call fastcc void @dissect_btmesh_property_idx(ptr noundef %2, ptr noundef %0, i32 noundef %3, i32 noundef %28) br label %37 32: ; preds = %find_btmesh_property_characteristic_idx.exit @@ -11972,13 +11970,13 @@ find_btmesh_property_characteristic_idx.exit: ; preds = %find_characteristic %34 = trunc i32 %.030 to i16 br label %37 -find_btmesh_property_characteristic_idx.exit.thread: ; preds = %.lr.ph.i, %22, %find_btmesh_property_characteristic_idx.exit +find_btmesh_property_characteristic_idx.exit.thread: ; preds = %.lr.ph.i, %22 %35 = tail call ptr @proto_tree_add_item(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %2, i32 noundef %3, i32 noundef %.030, i32 noundef 0) #16 %36 = trunc i32 %.030 to i16 br label %37 -37: ; preds = %26, %32, %find_btmesh_property_characteristic_idx.exit.thread - %.0 = phi i16 [ %29, %26 ], [ %34, %32 ], [ %36, %find_btmesh_property_characteristic_idx.exit.thread ] +37: ; preds = %25, %32, %find_btmesh_property_characteristic_idx.exit.thread + %.0 = phi i16 [ %29, %25 ], [ %34, %32 ], [ %36, %find_btmesh_property_characteristic_idx.exit.thread ] ret i16 %.0 } diff --git a/bench/wireshark/optimized/packet-h265.c.ll b/bench/wireshark/optimized/packet-h265.c.ll index c2fea52538e..ef3b97f0e49 100644 --- a/bench/wireshark/optimized/packet-h265.c.ll +++ b/bench/wireshark/optimized/packet-h265.c.ll @@ -1885,10 +1885,14 @@ dissect_h265_st_ref_pic_set.exit: ; preds = %.lr.ph73.i, %._crit %188 = add nuw i8 %.1288, 1 %189 = zext i8 %188 to i32 %190 = icmp ult i8 %188, %129 - br i1 %190, label %.lr.ph, label %._crit_edge, !llvm.loop !16 + br i1 %190, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !16 -._crit_edge: ; preds = %dissect_h265_st_ref_pic_set.exit, %.preheader284 - %191 = phi i32 [ %.pre304, %.preheader284 ], [ %187, %dissect_h265_st_ref_pic_set.exit ] +._crit_edge.loopexit: ; preds = %dissect_h265_st_ref_pic_set.exit + store i32 %187, ptr %7, align 1 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader284 + %191 = phi i32 [ %.pre304, %.preheader284 ], [ %187, %._crit_edge.loopexit ] %192 = tail call zeroext i8 @tvb_get_bits8(ptr noundef %1, i32 noundef %191, i32 noundef 1) #8 %193 = load i32, ptr @hf_h265_long_term_ref_pics_present_flag, align 4 %194 = tail call ptr @proto_tree_add_bits_item(ptr noundef %0, i32 noundef %193, ptr noundef %1, i32 noundef %191, i32 noundef 1, i32 noundef 0) #8 @@ -1935,6 +1939,7 @@ dissect_h265_st_ref_pic_set.exit: ; preds = %.lr.ph73.i, %._crit %218 = load i32, ptr @hf_h265_vui_parameters_present_flag, align 4 %219 = tail call ptr @proto_tree_add_bits_item(ptr noundef %0, i32 noundef %218, ptr noundef %1, i32 noundef %216, i32 noundef 1, i32 noundef 0) #8 %220 = add i32 %210, 3 + store i32 %220, ptr %7, align 4 %.not231 = icmp eq i8 %217, 0 br i1 %.not231, label %369, label %221 @@ -2178,6 +2183,7 @@ dissect_h265_vui_parameters.exit: ; preds = %342, %348 %393 = load i32, ptr @hf_h265_sps_extension_4bits, align 4 %394 = tail call ptr @proto_tree_add_bits_item(ptr noundef %0, i32 noundef %393, ptr noundef %1, i32 noundef %391, i32 noundef 4, i32 noundef 0) #8 %395 = add i32 %370, 9 + store i32 %395, ptr %7, align 4 %396 = icmp eq i8 %376, 0 %397 = icmp eq i8 %380, 0 %398 = icmp eq i8 %384, 0 @@ -2213,6 +2219,7 @@ dissect_h265_vui_parameters.exit: ; preds = %342, %348 %426 = load i32, ptr @hf_h265_cabac_bypass_alignment_enabled_flag, align 4 %427 = tail call ptr @proto_tree_add_bits_item(ptr noundef %0, i32 noundef %426, ptr noundef %1, i32 noundef %425, i32 noundef 1, i32 noundef 0) #8 %428 = add i32 %370, 18 + store i32 %428, ptr %7, align 4 br i1 %397, label %436, label %430 429: ; preds = %375 @@ -2224,6 +2231,7 @@ dissect_h265_vui_parameters.exit: ; preds = %342, %348 %433 = load i32, ptr @ett_h265_sps_multilayer_extension, align 4 %434 = tail call ptr @proto_tree_add_subtree(ptr noundef %0, ptr noundef %1, i32 noundef %432, i32 noundef 1, i32 noundef %433, ptr noundef null, ptr noundef nonnull @.str.680) #8 %435 = tail call ptr @proto_tree_add_expert(ptr noundef %434, ptr noundef %2, ptr noundef nonnull @ei_h265_undecoded, ptr noundef %1, i32 noundef %432, i32 noundef -1) #8 + store i32 %431, ptr %7, align 4 br i1 %398, label %443, label %438 436: ; preds = %401, %429 @@ -2240,6 +2248,7 @@ dissect_h265_vui_parameters.exit: ; preds = %342, %348 %440 = load i32, ptr @ett_h265_sps_3d_extension, align 4 %441 = tail call ptr @proto_tree_add_subtree(ptr noundef %0, ptr noundef %1, i32 noundef %.pre-phi, i32 noundef 1, i32 noundef %440, ptr noundef null, ptr noundef nonnull @.str.681) #8 %442 = tail call ptr @proto_tree_add_expert(ptr noundef %441, ptr noundef %2, ptr noundef nonnull @ei_h265_undecoded, ptr noundef %1, i32 noundef %.pre-phi, i32 noundef -1) #8 + store i32 %439, ptr %7, align 4 br i1 %399, label %489, label %445 443: ; preds = %430, %436 diff --git a/bench/wolfssl/optimized/aes.c.ll b/bench/wolfssl/optimized/aes.c.ll index 96fe7fca9fc..69e27e8b81b 100644 --- a/bench/wolfssl/optimized/aes.c.ll +++ b/bench/wolfssl/optimized/aes.c.ll @@ -3780,8 +3780,8 @@ return: ; preds = %while.body, %xorbuf ret i32 %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define void @GenerateM0(ptr noundef initializes((16, 32)) %gcm) local_unnamed_addr #4 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define void @GenerateM0(ptr noundef initializes((16, 32)) %gcm) local_unnamed_addr #5 { entry: %M0 = getelementptr inbounds nuw i8, ptr %gcm, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %M0, i8 0, i64 16, i1 false) @@ -3953,6 +3953,7 @@ for.body.i.i115: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i123, label %xorbuf.exit125, label %for.body.i.i115, !llvm.loop !12 xorbuf.exit125.loopexit479: ; preds = %xorbuf.exit + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx17, i64 8) ] %.pre485 = load i8, ptr %arrayidx31, align 1 %.pre484 = load i8, ptr %arrayidx17, align 1 %xor1516.i100 = xor i8 %.pre485, %.pre484 @@ -4002,6 +4003,7 @@ for.body.i.i149: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i157, label %xorbuf.exit159, label %for.body.i.i149, !llvm.loop !12 xorbuf.exit159.loopexit477: ; preds = %xorbuf.exit125 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx11, i64 8) ] %.pre487 = load i8, ptr %arrayidx39, align 1 %.pre486 = load i8, ptr %arrayidx11, align 1 %xor1516.i134 = xor i8 %.pre487, %.pre486 @@ -4049,6 +4051,7 @@ for.body.i.i183: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i191, label %xorbuf.exit193, label %for.body.i.i183, !llvm.loop !12 xorbuf.exit193.loopexit475: ; preds = %xorbuf.exit159 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx23, i64 8) ] %.pre489 = load i8, ptr %arrayidx47, align 1 %.pre488 = load i8, ptr %arrayidx23, align 1 %xor1516.i168 = xor i8 %.pre489, %.pre488 @@ -4096,6 +4099,7 @@ for.body.i.i217: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i225, label %xorbuf.exit227, label %for.body.i.i217, !llvm.loop !12 xorbuf.exit227.loopexit473: ; preds = %xorbuf.exit193 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx17, i64 8) ] %.pre491 = load i8, ptr %arrayidx55, align 1 %.pre490 = load i8, ptr %arrayidx17, align 1 %xor1516.i202 = xor i8 %.pre491, %.pre490 @@ -4143,6 +4147,7 @@ for.body.i.i251: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i259, label %xorbuf.exit261, label %for.body.i.i251, !llvm.loop !12 xorbuf.exit261.loopexit471: ; preds = %xorbuf.exit227 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx11, i64 8) ] %.pre493 = load i8, ptr %arrayidx63, align 1 %.pre492 = load i8, ptr %arrayidx11, align 1 %xor1516.i236 = xor i8 %.pre493, %.pre492 @@ -4190,6 +4195,7 @@ for.body.i.i285: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i293, label %xorbuf.exit295, label %for.body.i.i285, !llvm.loop !12 xorbuf.exit295.loopexit469: ; preds = %xorbuf.exit261 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx23, i64 8) ] %.pre495 = load i8, ptr %arrayidx71, align 1 %.pre494 = load i8, ptr %arrayidx23, align 1 %xor1516.i270 = xor i8 %.pre495, %.pre494 @@ -4239,6 +4245,7 @@ for.body.i.i319: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i327, label %xorbuf.exit329, label %for.body.i.i319, !llvm.loop !12 xorbuf.exit329.loopexit467: ; preds = %xorbuf.exit295 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx5, i64 8) ] %.pre497 = load i8, ptr %arrayidx79, align 1 %.pre496 = load i8, ptr %arrayidx5, align 1 %xor1516.i304 = xor i8 %.pre497, %.pre496 @@ -4286,6 +4293,7 @@ for.body.i.i353: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i361, label %xorbuf.exit363, label %for.body.i.i353, !llvm.loop !12 xorbuf.exit363.loopexit465: ; preds = %xorbuf.exit329 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx31, i64 8) ] %.pre499 = load i8, ptr %arrayidx87, align 1 %.pre498 = load i8, ptr %arrayidx31, align 1 %xor1516.i338 = xor i8 %.pre499, %.pre498 @@ -4333,6 +4341,7 @@ for.body.i.i387: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i395, label %xorbuf.exit397, label %for.body.i.i387, !llvm.loop !12 xorbuf.exit397.loopexit463: ; preds = %xorbuf.exit363 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx39, i64 8) ] %.pre501 = load i8, ptr %arrayidx95, align 1 %.pre500 = load i8, ptr %arrayidx39, align 1 %xor1516.i372 = xor i8 %.pre501, %.pre500 @@ -4380,6 +4389,7 @@ for.body.i.i421: ; preds = %while.cond.preheade br i1 %exitcond.not.i.i429, label %for.body.preheader, label %for.body.i.i421, !llvm.loop !12 xorbuf.exit431.loopexit461: ; preds = %xorbuf.exit397 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %arrayidx47, i64 8) ] %.pre503 = load i8, ptr %arrayidx103, align 1 %.pre502 = load i8, ptr %arrayidx47, align 1 %xor1516.i406 = xor i8 %.pre503, %.pre502 @@ -4815,7 +4825,7 @@ for.end: ; preds = %for.body } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define range(i32 -226, 1) i32 @wc_AesGcmEncrypt(ptr noundef %aes, ptr noundef %out, ptr noundef %in, i32 noundef %sz, ptr noundef %iv, i32 noundef %ivSz, ptr noundef %authTag, i32 noundef %authTagSz, ptr noundef %authIn, i32 noundef %authInSz) local_unnamed_addr #5 { +define range(i32 -226, 1) i32 @wc_AesGcmEncrypt(ptr noundef %aes, ptr noundef %out, ptr noundef %in, i32 noundef %sz, ptr noundef %iv, i32 noundef %ivSz, ptr noundef %authTag, i32 noundef %authTagSz, ptr noundef %authIn, i32 noundef %authInSz) local_unnamed_addr #6 { entry: %counter.i = alloca [16 x i8], align 16 %initialCounter.i = alloca [16 x i8], align 16 @@ -5144,7 +5154,7 @@ return: ; preds = %entry, %AES_GCM_enc } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define range(i32 -226, 1) i32 @wc_AesGcmDecrypt(ptr noundef %aes, ptr noundef %out, ptr noundef %in, i32 noundef %sz, ptr noundef %iv, i32 noundef %ivSz, ptr noundef readonly %authTag, i32 noundef %authTagSz, ptr noundef %authIn, i32 noundef %authInSz) local_unnamed_addr #5 { +define range(i32 -226, 1) i32 @wc_AesGcmDecrypt(ptr noundef %aes, ptr noundef %out, ptr noundef %in, i32 noundef %sz, ptr noundef %iv, i32 noundef %ivSz, ptr noundef readonly %authTag, i32 noundef %authTagSz, ptr noundef %authIn, i32 noundef %authInSz) local_unnamed_addr #6 { entry: %counter.i = alloca [16 x i8], align 16 %scratch.i = alloca [16 x i8], align 16 @@ -5471,7 +5481,7 @@ if.end9: ; preds = %lor.lhs.false2, %en } ; Function Attrs: nounwind uwtable -define i32 @wc_AesGcmSetIV(ptr noundef %aes, i32 noundef %ivSz, ptr noundef readonly %ivFixed, i32 noundef %ivFixedSz, ptr noundef %rng) local_unnamed_addr #6 { +define i32 @wc_AesGcmSetIV(ptr noundef %aes, i32 noundef %ivSz, ptr noundef readonly %ivFixed, i32 noundef %ivFixedSz, ptr noundef %rng) local_unnamed_addr #7 { entry: %cmp = icmp eq ptr %aes, null %cmp1 = icmp eq ptr %rng, null @@ -5511,7 +5521,7 @@ if.end16: ; preds = %if.then11, %if.then %idx.ext.pre-phi = phi i64 [ %conv, %if.then13 ], [ 0, %if.then11 ] %add.ptr = getelementptr inbounds nuw i8, ptr %reg, i64 %idx.ext.pre-phi %sub = sub i32 %ivSz, %ivFixedSz - %call15 = tail call i32 @wc_RNG_GenerateBlock(ptr noundef nonnull %rng, ptr noundef nonnull %add.ptr, i32 noundef %sub) #13 + %call15 = tail call i32 @wc_RNG_GenerateBlock(ptr noundef nonnull %rng, ptr noundef nonnull %add.ptr, i32 noundef %sub) #15 %cmp17 = icmp eq i32 %call15, 0 br i1 %cmp17, label %if.then19, label %if.end24 @@ -5531,10 +5541,10 @@ if.end24: ; preds = %lor.lhs.false2, %lo ret i32 %ret.125 } -declare i32 @wc_RNG_GenerateBlock(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7 +declare i32 @wc_RNG_GenerateBlock(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #8 ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define range(i32 -260, 1) i32 @wc_AesGcmEncrypt_ex(ptr noundef %aes, ptr noundef %out, ptr noundef %in, i32 noundef %sz, ptr noundef writeonly %ivOut, i32 noundef %ivOutSz, ptr noundef %authTag, i32 noundef %authTagSz, ptr noundef %authIn, i32 noundef %authInSz) local_unnamed_addr #5 { +define range(i32 -260, 1) i32 @wc_AesGcmEncrypt_ex(ptr noundef %aes, ptr noundef %out, ptr noundef %in, i32 noundef %sz, ptr noundef writeonly %ivOut, i32 noundef %ivOutSz, ptr noundef %authTag, i32 noundef %authTagSz, ptr noundef %authIn, i32 noundef %authInSz) local_unnamed_addr #6 { entry: %cmp = icmp eq ptr %aes, null br i1 %cmp, label %if.end39, label %lor.lhs.false @@ -5612,7 +5622,7 @@ if.end39: ; preds = %for.body.i, %for.co } ; Function Attrs: nounwind uwtable -define i32 @wc_Gmac(ptr noundef readonly %key, i32 noundef %keySz, ptr noundef writeonly %iv, i32 noundef %ivSz, ptr noundef %authIn, i32 noundef %authInSz, ptr noundef %authTag, i32 noundef %authTagSz, ptr noundef %rng) local_unnamed_addr #6 { +define i32 @wc_Gmac(ptr noundef readonly %key, i32 noundef %keySz, ptr noundef writeonly %iv, i32 noundef %ivSz, ptr noundef %authIn, i32 noundef %authInSz, ptr noundef %authTag, i32 noundef %authTagSz, ptr noundef %rng) local_unnamed_addr #7 { entry: %iv.i = alloca [16 x i8], align 16 %aes = alloca [1 x %struct.Aes], align 16 @@ -5673,7 +5683,7 @@ lor.lhs.false2.i: ; preds = %if.end15.i lor.lhs.false3.i: ; preds = %lor.lhs.false2.i, %lor.lhs.false2.i, %lor.lhs.false2.i %reg.i = getelementptr inbounds nuw i8, ptr %aes, i64 256 - %call15.i = call i32 @wc_RNG_GenerateBlock(ptr noundef nonnull %rng, ptr noundef nonnull %reg.i, i32 noundef %ivSz) #13 + %call15.i = call i32 @wc_RNG_GenerateBlock(ptr noundef nonnull %rng, ptr noundef nonnull %reg.i, i32 noundef %ivSz) #15 %cmp17.i = icmp eq i32 %call15.i, 0 br i1 %cmp17.i, label %if.then30.i, label %for.cond.preheader.i @@ -5726,7 +5736,7 @@ return: ; preds = %for.body.i, %entry, } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable -define range(i32 -173, 1) i32 @wc_AesInit(ptr noundef writeonly %aes, ptr noundef %heap, i32 noundef %devId) local_unnamed_addr #8 { +define range(i32 -173, 1) i32 @wc_AesInit(ptr noundef writeonly %aes, ptr noundef %heap, i32 noundef %devId) local_unnamed_addr #9 { entry: %cmp = icmp eq ptr %aes, null br i1 %cmp, label %return, label %if.end @@ -5744,13 +5754,13 @@ return: ; preds = %entry, %if.end } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable -define void @wc_AesFree(ptr nocapture noundef readnone %aes) local_unnamed_addr #9 { +define void @wc_AesFree(ptr nocapture noundef readnone %aes) local_unnamed_addr #10 { entry: ret void } ; Function Attrs: nofree norecurse nounwind uwtable -define range(i32 -226, 1) i32 @wc_GmacVerify(ptr noundef readonly %key, i32 noundef %keySz, ptr noundef %iv, i32 noundef %ivSz, ptr noundef %authIn, i32 noundef %authInSz, ptr noundef %authTag, i32 noundef %authTagSz) local_unnamed_addr #10 { +define range(i32 -226, 1) i32 @wc_GmacVerify(ptr noundef readonly %key, i32 noundef %keySz, ptr noundef %iv, i32 noundef %ivSz, ptr noundef %authIn, i32 noundef %authInSz, ptr noundef %authTag, i32 noundef %authTagSz) local_unnamed_addr #11 { entry: %iv.i = alloca [16 x i8], align 16 %aes = alloca [1 x %struct.Aes], align 16 @@ -5867,7 +5877,7 @@ return: ; preds = %entry, %wc_AesGcmSe } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define range(i32 -226, 1) i32 @wc_GmacUpdate(ptr noundef %gmac, ptr noundef %iv, i32 noundef %ivSz, ptr noundef %authIn, i32 noundef %authInSz, ptr noundef %authTag, i32 noundef %authTagSz) local_unnamed_addr #5 { +define range(i32 -226, 1) i32 @wc_GmacUpdate(ptr noundef %gmac, ptr noundef %iv, i32 noundef %ivSz, ptr noundef %authIn, i32 noundef %authInSz, ptr noundef %authTag, i32 noundef %authTagSz) local_unnamed_addr #6 { entry: %cmp = icmp eq ptr %gmac, null br i1 %cmp, label %return, label %if.end @@ -5917,37 +5927,42 @@ return: ; preds = %return.sink.split, } ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i8 @llvm.fshl.i8(i8, i8, i8) #11 +declare i8 @llvm.fshl.i8(i8, i8, i8) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.fshl.i64(i64, i64, i64) #11 +declare i64 @llvm.fshl.i64(i64, i64, i64) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.bswap.i32(i32) #11 +declare i32 @llvm.bswap.i32(i32) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #11 +declare i32 @llvm.umin.i32(i32, i32) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #13 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #12 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 + +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #14 attributes #0 = { nofree norecurse nounwind memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #4 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nofree norecurse nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { nounwind } +attributes #5 = { nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #11 = { nofree norecurse nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #15 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/wolfssl/optimized/coding.c.ll b/bench/wolfssl/optimized/coding.c.ll index 9b646d3e4d6..b6963bc124f 100644 --- a/bench/wolfssl/optimized/coding.c.ll +++ b/bench/wolfssl/optimized/coding.c.ll @@ -6,8 +6,8 @@ target triple = "x86_64-unknown-linux-gnu" @base64Decode = internal unnamed_addr constant [80 x i8] c">\FF\FF\FF?456789:;<=\FF\FF\FF\FF\FF\FF\FF\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\FF\FF\FF\FF\FF\FF\1A\1B\1C\1D\1E\1F !\22#$%&'()*+,-./0123", align 64 @base64Encode = internal unnamed_addr constant [64 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", align 16 -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i32 -154, 1) i32 @Base64_SkipNewline(ptr nocapture noundef readonly %in, ptr nocapture noundef %inLen, ptr nocapture noundef %outJ) local_unnamed_addr #0 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define range(i32 -154, 1) i32 @Base64_SkipNewline(ptr nocapture noundef readonly %in, ptr nocapture noundef %inLen, ptr noundef %outJ) local_unnamed_addr #0 { entry: %0 = load i32, ptr %inLen, align 4 %cmp = icmp eq i32 %0, 0 @@ -113,7 +113,7 @@ return: ; preds = %while.body45, %if.e } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i32 -173, 1) i32 @Base64_Decode(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef writeonly %out, ptr nocapture noundef %outLen) local_unnamed_addr #0 { +define range(i32 -173, 1) i32 @Base64_Decode(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef writeonly %out, ptr nocapture noundef %outLen) local_unnamed_addr #1 { entry: %add = add i32 %inLen, 63 %div62 = lshr i32 %add, 6 @@ -712,14 +712,14 @@ return: ; preds = %if.end31.i209, %if. } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i32 -202, 1) i32 @Base64_Encode(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen) local_unnamed_addr #0 { +define range(i32 -202, 1) i32 @Base64_Encode(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen) local_unnamed_addr #1 { entry: %call = tail call fastcc i32 @DoBase64_Encode(ptr noundef %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen, i32 noundef 0) ret i32 %call } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define internal fastcc range(i32 -202, 1) i32 @DoBase64_Encode(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef writeonly %out, ptr noundef %outLen, i32 noundef range(i32 0, 3) %escaped) unnamed_addr #0 { +define internal fastcc range(i32 -202, 1) i32 @DoBase64_Encode(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef writeonly %out, ptr noundef %outLen, i32 noundef range(i32 0, 3) %escaped) unnamed_addr #1 { entry: %cmp = icmp eq ptr %out, null %sub = add i32 %inLen, 2 @@ -1779,20 +1779,21 @@ return: ; preds = %39, %if.end158, %if } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i32 -202, 1) i32 @Base64_EncodeEsc(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen) local_unnamed_addr #0 { +define range(i32 -202, 1) i32 @Base64_EncodeEsc(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen) local_unnamed_addr #1 { entry: %call = tail call fastcc i32 @DoBase64_Encode(ptr noundef %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen, i32 noundef 1) ret i32 %call } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i32 -202, 1) i32 @Base64_Encode_NoNl(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen) local_unnamed_addr #0 { +define range(i32 -202, 1) i32 @Base64_Encode_NoNl(ptr nocapture noundef readonly %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen) local_unnamed_addr #1 { entry: %call = tail call fastcc i32 @DoBase64_Encode(ptr noundef %in, i32 noundef %inLen, ptr noundef %out, ptr noundef %outLen, i32 noundef 2) ret i32 %call } -attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/yalantinglibs/optimized/binary_json_conformance_suite.cc.ll b/bench/yalantinglibs/optimized/binary_json_conformance_suite.cc.ll index 856708ccdfa..78cfc4494f5 100644 --- a/bench/yalantinglibs/optimized/binary_json_conformance_suite.cc.ll +++ b/bench/yalantinglibs/optimized/binary_json_conformance_suite.cc.ll @@ -6280,6 +6280,7 @@ sw.bb._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKN br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.i land.rhs.i.i: ; preds = %sw.bb.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %second, i64 0) ] %cmp.i.i.i146 = icmp eq i64 %121, 0 %.pre105.i = load ptr, ptr %ref.tmp.i142, align 8 br i1 %cmp.i.i.i146, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.i, label %if.end.i.i.i @@ -6328,6 +6329,7 @@ sw.bb1._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERK br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit17.i land.rhs.i13.i: ; preds = %sw.bb1.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %second, i64 0) ] %cmp.i.i14.i = icmp eq i64 %127, 0 %.pre103.i = load ptr, ptr %ref.tmp2.i, align 8 br i1 %cmp.i.i14.i, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit17.i, label %if.end.i.i15.i @@ -6387,6 +6389,7 @@ sw.bb4._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERK br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit31.i land.rhs.i27.i: ; preds = %.noexc + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %second, i64 0) ] %cmp.i.i28.i = icmp eq i64 %133, 0 %.pre101.i = load ptr, ptr %ref.tmp5.i, align 8 br i1 %cmp.i.i28.i, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit31.i, label %if.end.i.i29.i @@ -6447,6 +6450,7 @@ sw.bb7._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERK br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit48.i land.rhs.i44.i: ; preds = %sw.bb7.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %second, i64 0) ] %cmp.i.i45.i = icmp eq i64 %139, 0 %.pre99.i = load ptr, ptr %ref.tmp8.i, align 8 br i1 %cmp.i.i45.i, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit48.i, label %if.end.i.i46.i @@ -6507,6 +6511,7 @@ sw.bb10._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeER br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit65.i land.rhs.i61.i: ; preds = %sw.bb10.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %second, i64 0) ] %cmp.i.i62.i = icmp eq i64 %145, 0 %.pre97.i = load ptr, ptr %ref.tmp11.i, align 8 br i1 %cmp.i.i62.i, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit65.i, label %if.end.i.i63.i @@ -6601,6 +6606,7 @@ invoke.cont18._ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__ br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit80.i land.rhs.i76.i: ; preds = %invoke.cont18.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %second, i64 0) ] %cmp.i.i77.i = icmp eq i64 %154, 0 %.pre95.i = load ptr, ptr %ref.tmp14.i, align 8 br i1 %cmp.i.i77.i, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit80.i, label %if.end.i.i78.i @@ -6990,6 +6996,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i2779: br i1 %cmp4.not.i2781, label %if.end7.i2751, label %if.then5.i2782 if.then5.i2782: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i2779 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ref.tmp.i1574, i64 0) ], !noalias !81 %sub3.i.i3144 = sub i64 9223372036854775807, %180 %cmp.i.i3145 = icmp ult i64 %sub3.i.i3144, %179 br i1 %cmp.i.i3145, label %if.then.i.i.i.i2776.invoke, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i3146 @@ -7379,6 +7386,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i: ; pr br i1 %cmp4.not.i, label %if.end7.i, label %if.then5.i if.then5.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ref.tmp.i181, i64 0) ] %sub3.i.i = sub i64 9223372036854775807, %210 %cmp.i.i2719 = icmp ult i64 %sub3.i.i, %209 br i1 %cmp.i.i2719, label %if.then.i.i.i.i1564.invoke, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i @@ -7897,6 +7905,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i2990: br i1 %cmp4.not.i2992, label %if.end7.i2962, label %if.then5.i2993 if.then5.i2993: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i2990 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ref.tmp.i1675, i64 0) ], !noalias !97 %sub3.i.i3324 = sub i64 9223372036854775807, %247 %cmp.i.i3325 = icmp ult i64 %sub3.i.i3324, %246 br i1 %cmp.i.i3325, label %if.then.i.i.i.i2987.invoke, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i3326 @@ -8286,6 +8295,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i1653: br i1 %cmp4.not.i1655, label %if.end7.i1625, label %if.then5.i1656 if.then5.i1656: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14.i1653 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %ref.tmp.i202, i64 0) ] %sub3.i.i2879 = sub i64 9223372036854775807, %277 %cmp.i.i2880 = icmp ult i64 %sub3.i.i2879, %276 br i1 %cmp.i.i2880, label %if.then.i.i.i.i1650.invoke, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i2881 @@ -46920,6 +46930,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14: ; pred br i1 %cmp4.not, label %if.end7, label %if.then5 if.then5: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %__lhs, i64 0) ] %call3.i.i = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %__rhs, i64 noundef 0, i64 noundef 0, ptr noundef %2, i64 noundef %0) %7 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 tail call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %call3.i.i) #23 diff --git a/bench/yalantinglibs/optimized/conformance_struct_pb.cc.ll b/bench/yalantinglibs/optimized/conformance_struct_pb.cc.ll index 3388e38d90d..101e96ac36a 100644 --- a/bench/yalantinglibs/optimized/conformance_struct_pb.cc.ll +++ b/bench/yalantinglibs/optimized/conformance_struct_pb.cc.ll @@ -776,6 +776,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14: ; pred br i1 %cmp4.not, label %if.end7, label %if.then5 if.then5: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit14 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %__lhs, i64 0) ] %call3.i.i = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %__rhs, i64 noundef 0, i64 noundef 0, ptr noundef %2, i64 noundef %0) %7 = getelementptr inbounds nuw i8, ptr %agg.result, i64 16 tail call void @_ZNSaIcEC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %call3.i.i) #23 @@ -1608,6 +1609,7 @@ invoke.cont4: ; preds = %invoke.cont br i1 %cmp.i, label %land.rhs.i, label %if.else land.rhs.i: ; preds = %invoke.cont4 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %message_type, i64 0) ] %cmp.i.i = icmp eq i64 %0, 0 br i1 %cmp.i.i, label %if.then, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit @@ -4910,6 +4912,7 @@ _ZN9struct_pb13UnknownFieldsD2Ev.exit: ; preds = %invoke.cont54, %if. br i1 %cmp.i, label %land.rhs.i, label %if.then57 land.rhs.i: ; preds = %_ZN9struct_pb13UnknownFieldsD2Ev.exit + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %buf, i64 0) ] %cmp.i.i36 = icmp eq i64 %31, 0 br i1 %cmp.i.i36, label %if.end67, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit diff --git a/bench/yaml-cpp/optimized/ostream_wrapper.cpp.ll b/bench/yaml-cpp/optimized/ostream_wrapper.cpp.ll index 32360f8559d..cb51a826c5d 100644 --- a/bench/yaml-cpp/optimized/ostream_wrapper.cpp.ll +++ b/bench/yaml-cpp/optimized/ostream_wrapper.cpp.ll @@ -131,14 +131,15 @@ if.else: ; preds = %entry tail call void @_ZNSt6vectorIcSaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %.sroa.speculated) %call11 = tail call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #15 %call13 = tail call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %str) #15 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %this, i64 0) ] %tobool.not.i.i.i.i.i = icmp eq ptr %call13, %call11 br i1 %tobool.not.i.i.i.i.i, label %if.end, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.else + %4 = load ptr, ptr %this, align 8 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %call13 to i64 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %call11 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i - %4 = load ptr, ptr %this, align 8 %5 = load i64, ptr %m_pos, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %4, i64 %5 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i, ptr align 1 %call11, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) @@ -230,15 +231,15 @@ if.then.i.i.i.i: ; preds = %if.then %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 1 %sub.i.i.i.i = add i64 %sub, -1 %cmp.i.i.i.i.i.i = icmp eq i64 %sub.i.i.i.i, 0 - br i1 %cmp.i.i.i.i.i.i, label %_ZSt27__uninitialized_default_n_aIPcmcET_S1_T0_RSaIT1_E.exit.i, label %if.then.i.i.i.i.i.i.i.i + br i1 %cmp.i.i.i.i.i.i, label %_ZSt27__uninitialized_default_n_aIPcmcET_S1_T0_RSaIT1_E.exit.i, label %if.end.i.i.i.i.i.i -if.then.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i +if.end.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i %add.ptr.i.i.i.i.i.i = getelementptr i8, ptr %0, i64 %sub tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i.i, i8 0, i64 %sub.i.i.i.i, i1 false) br label %_ZSt27__uninitialized_default_n_aIPcmcET_S1_T0_RSaIT1_E.exit.i -_ZSt27__uninitialized_default_n_aIPcmcET_S1_T0_RSaIT1_E.exit.i: ; preds = %if.then.i.i.i.i.i.i.i.i, %if.then.i.i.i.i - %__first.addr.0.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %if.then.i.i.i.i ], [ %add.ptr.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i ] +_ZSt27__uninitialized_default_n_aIPcmcET_S1_T0_RSaIT1_E.exit.i: ; preds = %if.end.i.i.i.i.i.i, %if.then.i.i.i.i + %__first.addr.0.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %if.then.i.i.i.i ], [ %add.ptr.i.i.i.i.i.i, %if.end.i.i.i.i.i.i ] store ptr %__first.addr.0.i.i.i.i, ptr %_M_finish.i, align 8 br label %if.end6 @@ -259,14 +260,14 @@ _ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit.i: ; preds = %if.else.i store i8 0, ptr %add.ptr.i, align 1 %sub.i.i.i23.i = add nsw i64 %sub, -1 %cmp.i.i.i.i.i24.i = icmp eq i64 %sub.i.i.i23.i, 0 - br i1 %cmp.i.i.i.i.i24.i, label %try.cont.i, label %if.then.i.i.i.i.i.i.i25.i + br i1 %cmp.i.i.i.i.i24.i, label %try.cont.i, label %if.end.i.i.i.i.i25.i -if.then.i.i.i.i.i.i.i25.i: ; preds = %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit.i +if.end.i.i.i.i.i25.i: ; preds = %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit.i %incdec.ptr.i.i.i22.i = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 1 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i22.i, i8 0, i64 %sub.i.i.i23.i, i1 false) br label %try.cont.i -try.cont.i: ; preds = %if.then.i.i.i.i.i.i.i25.i, %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit.i +try.cont.i: ; preds = %if.end.i.i.i.i.i25.i, %_ZNKSt6vectorIcSaIcEE12_M_check_lenEmPKc.exit.i %cmp.i.i.i.i.not.i = icmp eq ptr %0, %1 br i1 %cmp.i.i.i.i.not.i, label %_ZNSt6vectorIcSaIcEE11_S_relocateEPcS2_S2_RS0_.exit.i, label %if.then.i.i.i.i.i @@ -362,6 +363,7 @@ if.else: ; preds = %entry %add6 = add i64 %add, %3 %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i, i64 %add6) tail call void @_ZNSt6vectorIcSaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %.sroa.speculated) + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %this, i64 0) ] %tobool.not.i.i.i.i.i = icmp eq i64 %size, 0 br i1 %tobool.not.i.i.i.i.i, label %for.end, label %if.end.thread18 diff --git a/bench/yaml-cpp/optimized/simplekey.cpp.ll b/bench/yaml-cpp/optimized/simplekey.cpp.ll index 90780dad6bc..0d7744b2200 100644 --- a/bench/yaml-cpp/optimized/simplekey.cpp.ll +++ b/bench/yaml-cpp/optimized/simplekey.cpp.ll @@ -179,8 +179,8 @@ if.end12: ; preds = %if.then9, %if.end7 ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZNK4YAML7Scanner27CanInsertPotentialSimpleKeyEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(480) %this) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define noundef zeroext i1 @_ZNK4YAML7Scanner27CanInsertPotentialSimpleKeyEv(ptr noundef nonnull align 8 dereferenceable(480) %this) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { entry: %m_simpleKeyAllowed = getelementptr inbounds nuw i8, ptr %this, i64 210 %0 = load i8, ptr %m_simpleKeyAllowed, align 2 @@ -251,8 +251,8 @@ return: ; preds = %_ZNKSt5stackIN4YAML ret i1 %retval.0 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZNK4YAML7Scanner21ExistsActiveSimpleKeyEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(480) %this) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable +define noundef zeroext i1 @_ZNK4YAML7Scanner21ExistsActiveSimpleKeyEv(ptr noundef nonnull align 8 dereferenceable(480) %this) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { entry: %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 264 %_M_start.i.i = getelementptr inbounds nuw i8, ptr %this, i64 232 @@ -628,7 +628,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex } ; Function Attrs: mustprogress nounwind uwtable -define void @_ZN4YAML7Scanner19InvalidateSimpleKeyEv(ptr nocapture noundef nonnull align 8 dereferenceable(480) %this) local_unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN4YAML7Scanner19InvalidateSimpleKeyEv(ptr noundef nonnull align 8 dereferenceable(480) %this) local_unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 { entry: %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 264 %_M_start.i.i = getelementptr inbounds nuw i8, ptr %this, i64 232 @@ -640,11 +640,11 @@ entry: if.end: ; preds = %entry %_M_first3.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 272 %2 = load ptr, ptr %_M_first3.i.i.i.i, align 8, !noalias !18 + %_M_node5.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 288 %cmp.i.i.i2 = icmp eq ptr %0, %2 br i1 %cmp.i.i.i2, label %if.then.i.i.i, label %_ZNSt5stackIN4YAML7Scanner9SimpleKeyESt5dequeIS2_SaIS2_EEE3topEv.exit if.then.i.i.i: ; preds = %if.end - %_M_node5.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 288 %3 = load ptr, ptr %_M_node5.i.i.i.i, align 8, !noalias !18 %add.ptr.i.i.i = getelementptr inbounds i8, ptr %3, i64 -8 %4 = load ptr, ptr %add.ptr.i.i.i, align 8 @@ -731,10 +731,9 @@ if.then.i.i: ; preds = %_ZN4YAML7Scanner9Si if.else.i.i: ; preds = %_ZN4YAML7Scanner9SimpleKey10InvalidateEv.exit tail call void @_ZdlPv(ptr noundef %17) #18 - %_M_node.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 288 - %18 = load ptr, ptr %_M_node.i.i.i, align 8 + %18 = load ptr, ptr %_M_node5.i.i.i.i, align 8 %add.ptr.i.i.i5 = getelementptr inbounds i8, ptr %18, i64 -8 - store ptr %add.ptr.i.i.i5, ptr %_M_node.i.i.i, align 8 + store ptr %add.ptr.i.i.i5, ptr %_M_node5.i.i.i.i, align 8 %19 = load ptr, ptr %add.ptr.i.i.i5, align 8 store ptr %19, ptr %_M_first3.i.i.i.i, align 8 %add.ptr.i.i.i.i6 = getelementptr inbounds nuw i8, ptr %19, i64 480 @@ -753,7 +752,7 @@ return: ; preds = %_ZNSt5stackIN4YAML7 } ; Function Attrs: mustprogress nounwind uwtable -define noundef zeroext i1 @_ZN4YAML7Scanner15VerifySimpleKeyEv(ptr nocapture noundef nonnull align 8 dereferenceable(480) %this) local_unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 { +define noundef zeroext i1 @_ZN4YAML7Scanner15VerifySimpleKeyEv(ptr noundef nonnull align 8 dereferenceable(480) %this) local_unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 { entry: %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 264 %_M_start.i.i = getelementptr inbounds nuw i8, ptr %this, i64 232 @@ -765,11 +764,11 @@ entry: if.end: ; preds = %entry %_M_first3.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 272 %2 = load ptr, ptr %_M_first3.i.i.i.i, align 8, !noalias !21 + %_M_node5.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 288 %cmp.i.i.i2 = icmp eq ptr %0, %2 br i1 %cmp.i.i.i2, label %if.then.i.i.i, label %_ZNSt5stackIN4YAML7Scanner9SimpleKeyESt5dequeIS2_SaIS2_EEE3topEv.exit if.then.i.i.i: ; preds = %if.end - %_M_node5.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 288 %3 = load ptr, ptr %_M_node5.i.i.i.i, align 8, !noalias !21 %add.ptr.i.i.i = getelementptr inbounds i8, ptr %3, i64 -8 %4 = load ptr, ptr %add.ptr.i.i.i, align 8 @@ -832,10 +831,9 @@ if.then.i.i: ; preds = %if.end6 if.else.i.i: ; preds = %if.end6 tail call void @_ZdlPv(ptr noundef %2) #18 - %_M_node.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 288 - %12 = load ptr, ptr %_M_node.i.i.i, align 8 + %12 = load ptr, ptr %_M_node5.i.i.i.i, align 8 %add.ptr.i.i.i5 = getelementptr inbounds i8, ptr %12, i64 -8 - store ptr %add.ptr.i.i.i5, ptr %_M_node.i.i.i, align 8 + store ptr %add.ptr.i.i.i5, ptr %_M_node5.i.i.i.i, align 8 %13 = load ptr, ptr %add.ptr.i.i.i5, align 8 store ptr %13, ptr %_M_first3.i.i.i.i, align 8 %add.ptr.i.i.i.i6 = getelementptr inbounds nuw i8, ptr %13, i64 480 @@ -1826,7 +1824,7 @@ attributes #3 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width attributes #4 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #8 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #9 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } diff --git a/bench/yoga/optimized/YGNode.cpp.ll b/bench/yoga/optimized/YGNode.cpp.ll index c2f71a2c835..becce834ab4 100644 --- a/bench/yoga/optimized/YGNode.cpp.ll +++ b/bench/yoga/optimized/YGNode.cpp.ll @@ -35,14 +35,14 @@ entry: %ref.tmp.i = alloca %"struct.facebook::yoga::Event::TypedData", align 8 %call = tail call ptr @YGConfigGetDefault() call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp.i) - %call.i = tail call noalias noundef nonnull dereferenceable(640) ptr @_Znwm(i64 noundef 640) #13 + %call.i = tail call noalias noundef nonnull dereferenceable(640) ptr @_Znwm(i64 noundef 640) #14 invoke void @_ZN8facebook4yoga4NodeC1EPKNS0_6ConfigE(ptr noundef nonnull align 8 dereferenceable(640) %call.i, ptr noundef %call) to label %YGNodeNewWithConfig.exit unwind label %lpad.i lpad.i: ; preds = %entry %0 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %call.i) #14 + tail call void @_ZdlPv(ptr noundef nonnull %call.i) #15 resume { ptr, i32 } %0 YGNodeNewWithConfig.exit: ; preds = %entry @@ -62,7 +62,7 @@ define noundef nonnull ptr @YGNodeNewWithConfig(ptr noundef %config) local_unnam entry: %ref.tmp.i = alloca %"class.facebook::yoga::Event::Data", align 8 %ref.tmp = alloca %"struct.facebook::yoga::Event::TypedData", align 8 - %call = tail call noalias noundef nonnull dereferenceable(640) ptr @_Znwm(i64 noundef 640) #13 + %call = tail call noalias noundef nonnull dereferenceable(640) ptr @_Znwm(i64 noundef 640) #14 invoke void @_ZN8facebook4yoga4NodeC1EPKNS0_6ConfigE(ptr noundef nonnull align 8 dereferenceable(640) %call, ptr noundef %config) to label %invoke.cont2 unwind label %lpad @@ -79,7 +79,7 @@ invoke.cont2: ; preds = %entry lpad: ; preds = %entry %0 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %call) #14 + tail call void @_ZdlPv(ptr noundef nonnull %call) #15 resume { ptr, i32 } %0 } @@ -102,7 +102,7 @@ define noundef nonnull ptr @YGNodeClone(ptr nocapture noundef readonly %oldNodeR entry: %ref.tmp.i = alloca %"class.facebook::yoga::Event::Data", align 8 %ref.tmp = alloca %"struct.facebook::yoga::Event::TypedData", align 8 - %call1 = tail call noalias noundef nonnull dereferenceable(640) ptr @_Znwm(i64 noundef 640) #13 + %call1 = tail call noalias noundef nonnull dereferenceable(640) ptr @_Znwm(i64 noundef 640) #14 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(640) %call1, ptr noundef nonnull align 8 dereferenceable(640) %oldNodeRef, i64 592, i1 false) %children_.i = getelementptr inbounds nuw i8, ptr %call1, i64 592 %children_2.i = getelementptr inbounds nuw i8, ptr %oldNodeRef, i64 592 @@ -129,14 +129,14 @@ cond.true.i.i.i.i.i: ; preds = %entry br i1 %cmp.i.i.i.i.i.i.i, label %if.then3.i.i.i.i.i.i.i, label %_ZNSt16allocator_traitsISaIPN8facebook4yoga4NodeEEE8allocateERS4_m.exit.i.i.i.i.i if.then3.i.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i.i - invoke void @_ZSt28__throw_bad_array_new_lengthv() #15 + invoke void @_ZSt28__throw_bad_array_new_lengthv() #16 to label %.noexc unwind label %lpad .noexc: ; preds = %if.then3.i.i.i.i.i.i.i unreachable _ZNSt16allocator_traitsISaIPN8facebook4yoga4NodeEEE8allocateERS4_m.exit.i.i.i.i.i: ; preds = %cond.true.i.i.i.i.i - %call5.i.i.i.i2.i6.i.i4 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i) #13 + %call5.i.i.i.i2.i6.i.i4 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i) #14 to label %if.then.i.i.i.i.i.i.i.i.i.i unwind label %lpad if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt16allocator_traitsISaIPN8facebook4yoga4NodeEEE8allocateERS4_m.exit.i.i.i.i.i @@ -169,7 +169,7 @@ invoke.cont: ; preds = %if.then.i.i.i.i.i.i lpad: ; preds = %_ZNSt16allocator_traitsISaIPN8facebook4yoga4NodeEEE8allocateERS4_m.exit.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i %3 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %call1) #14 + tail call void @_ZdlPv(ptr noundef nonnull %call1) #15 resume { ptr, i32 } %3 } @@ -216,7 +216,7 @@ for.body: ; preds = %for.body.preheader, br i1 %cmp.not.i.i.i, label %_ZNK8facebook4yoga4Node8getChildEm.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %for.body - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.4, i64 noundef %i.018, i64 noundef %sub.ptr.div.i.i.i.i) #15 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.4, i64 noundef %i.018, i64 noundef %sub.ptr.div.i.i.i.i) #16 unreachable _ZNK8facebook4yoga4Node8getChildEm.exit: ; preds = %for.body @@ -242,11 +242,11 @@ delete.notnull: ; preds = %_ZNK8facebook4yoga4 br i1 %tobool.not.i.i.i.i, label %delete.end, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %delete.notnull - call void @_ZdlPv(ptr noundef nonnull %7) #14 + call void @_ZdlPv(ptr noundef nonnull %7) #15 br label %delete.end delete.end: ; preds = %if.then.i.i.i.i, %delete.notnull - call void @_ZdlPv(ptr noundef nonnull %nodeRef) #14 + call void @_ZdlPv(ptr noundef nonnull %nodeRef) #15 ret void } @@ -489,11 +489,11 @@ delete.notnull: br i1 %tobool.not.i.i.i.i, label %delete.end, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %delete.notnull - call void @_ZdlPv(ptr noundef nonnull %1) #14 + call void @_ZdlPv(ptr noundef nonnull %1) #15 br label %delete.end delete.end: ; preds = %if.then.i.i.i.i, %delete.notnull - call void @_ZdlPv(ptr noundef nonnull %node) #14 + call void @_ZdlPv(ptr noundef nonnull %node) #15 ret void } @@ -662,7 +662,7 @@ for.body: ; preds = %for.body.lr.ph, %_Z br i1 %cmp.not.i.i.i19, label %_ZNK8facebook4yoga4Node8getChildEm.exit21, label %if.then.i.i.i20 if.then.i.i.i20: ; preds = %for.body - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.4, i64 noundef %i.031, i64 noundef %sub.ptr.div.i.i.i.i18) #15 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.4, i64 noundef %i.031, i64 noundef %sub.ptr.div.i.i.i.i18) #16 unreachable _ZNK8facebook4yoga4Node8getChildEm.exit21: ; preds = %for.body @@ -731,7 +731,7 @@ invoke.cont: ; preds = %if.end8 br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit, label %if.then.i.i.i25 if.then.i.i.i25: ; preds = %invoke.cont - call void @_ZdlPv(ptr noundef nonnull %7) #14 + call void @_ZdlPv(ptr noundef nonnull %7) #15 br label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit _ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit: ; preds = %invoke.cont, %if.then.i.i.i25 @@ -749,7 +749,7 @@ lpad: ; preds = %if.end8 br i1 %tobool.not.i.i.i26, label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit28, label %if.then.i.i.i27 if.then.i.i.i27: ; preds = %lpad - call void @_ZdlPv(ptr noundef nonnull %9) #14 + call void @_ZdlPv(ptr noundef nonnull %9) #15 br label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit28 _ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit28: ; preds = %lpad, %if.then.i.i.i27 @@ -773,7 +773,7 @@ if.end: ; preds = %entry br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.i if.then.i.i.i: ; preds = %if.end - tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.5) #15 + tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.5) #16 unreachable _ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.i: ; preds = %if.end @@ -787,7 +787,7 @@ _ZNSt12_Vector_baseIPN8facebook4yoga4NodeESaIS3_EE11_M_allocateEm.exit.thread.i. br label %invoke.cont if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.i - %call5.i.i.i.i1.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add.ptr.idx) #13 + %call5.i.i.i.i1.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %add.ptr.idx) #14 store ptr %call5.i.i.i.i1.i, ptr %childrenVector, align 8 %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i1.i, i64 %add.ptr.idx %_M_end_of_storage.i.i = getelementptr inbounds nuw i8, ptr %childrenVector, i64 16 @@ -899,7 +899,7 @@ invoke.cont21: ; preds = %for.end br i1 %tobool.not.i.i.i22, label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit, label %if.then.i.i.i23 if.then.i.i.i23: ; preds = %invoke.cont21 - call void @_ZdlPv(ptr noundef nonnull %5) #14 + call void @_ZdlPv(ptr noundef nonnull %5) #15 br label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit _ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EED2Ev.exit: ; preds = %invoke.cont21, %if.then.i.i.i23 @@ -914,7 +914,7 @@ lpad20: ; preds = %for.end br i1 %tobool.not.i.i.i25, label %ehcleanup, label %if.then.i.i.i26 if.then.i.i.i26: ; preds = %lpad20 - call void @_ZdlPv(ptr noundef nonnull %7) #14 + call void @_ZdlPv(ptr noundef nonnull %7) #15 br label %ehcleanup if.else: ; preds = %invoke.cont @@ -1117,7 +1117,7 @@ if.end82: ; preds = %for.end80.if.end82_ br i1 %tobool.not.i.i.i84, label %return, label %if.then.i.i.i85 if.then.i.i.i85: ; preds = %if.end82 - call void @_ZdlPv(ptr noundef nonnull %20) #14 + call void @_ZdlPv(ptr noundef nonnull %20) #15 br label %return return: ; preds = %if.then.i.i.i85, %if.end82, %entry @@ -1130,7 +1130,7 @@ ehcleanup: ; preds = %if.then.i.i.i26, %l br i1 %tobool.not.i.i.i88, label %eh.resume, label %if.then.i.i.i89 if.then.i.i.i89: ; preds = %ehcleanup - call void @_ZdlPv(ptr noundef nonnull %21) #14 + call void @_ZdlPv(ptr noundef nonnull %21) #15 br label %eh.resume eh.resume: ; preds = %if.then.i.i.i89, %ehcleanup @@ -1320,7 +1320,7 @@ entry: br i1 %0, label %switch.lookup, label %sw.epilog.i sw.epilog.i: ; preds = %entry - tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #15 + tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #16 unreachable switch.lookup: ; preds = %entry @@ -1333,7 +1333,7 @@ switch.lookup: ; preds = %entry br i1 %2, label %switch.lookup22, label %sw.epilog.i5 sw.epilog.i5: ; preds = %switch.lookup - tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #15 + tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #16 unreachable switch.lookup22: ; preds = %switch.lookup @@ -1346,22 +1346,23 @@ switch.lookup22: ; preds = %switch.lookup br i1 %4, label %switch.lookup19, label %sw.epilog.i11 sw.epilog.i11: ; preds = %switch.lookup22 - tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #15 + tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #16 unreachable switch.lookup19: ; preds = %switch.lookup22 + %conv.i7.mask = and i32 %lastWidthMode, 3 + %5 = zext nneg i32 %conv.i7.mask to i64 + %switch.gep20 = getelementptr inbounds nuw [3 x i32], ptr @switch.table.YGNodeCanUseCachedMeasurement.3, i64 0, i64 %5 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %switch.gep20, i64 32) ] %conv.i13 = trunc i32 %lastHeightMode to i8 - %5 = icmp ult i8 %conv.i13, 3 - br i1 %5, label %switch.lookup25, label %sw.epilog.i17 + %6 = icmp ult i8 %conv.i13, 3 + br i1 %6, label %switch.lookup25, label %sw.epilog.i17 sw.epilog.i17: ; preds = %switch.lookup19 - tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #15 + tail call void @_ZN8facebook4yoga16fatalWithMessageEPKc(ptr noundef nonnull @.str.6) #16 unreachable switch.lookup25: ; preds = %switch.lookup19 - %conv.i7.mask = and i32 %lastWidthMode, 3 - %6 = zext nneg i32 %conv.i7.mask to i64 - %switch.gep20 = getelementptr inbounds nuw [3 x i32], ptr @switch.table.YGNodeCanUseCachedMeasurement.3, i64 0, i64 %6 %switch.load21 = load i32, ptr %switch.gep20, align 4 %conv.i13.mask = and i32 %lastHeightMode, 3 %7 = zext nneg i32 %conv.i13.mask to i64 @@ -1412,11 +1413,11 @@ cond.true.i.i: ; preds = %if.then br i1 %cmp.i.i.i.i, label %if.then3.i.i.i.i, label %_ZNSt12_Vector_baseIPN8facebook4yoga4NodeESaIS3_EE11_M_allocateEm.exit.i if.then3.i.i.i.i: ; preds = %cond.true.i.i - tail call void @_ZSt28__throw_bad_array_new_lengthv() #15 + tail call void @_ZSt28__throw_bad_array_new_lengthv() #16 unreachable _ZNSt12_Vector_baseIPN8facebook4yoga4NodeESaIS3_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i - %call5.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #13 + %call5.i.i.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #14 %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %0, %1 br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEEEPS3_mT_SD_.exit, label %if.then.i.i.i.i.i.i.i.i.i @@ -1429,7 +1430,7 @@ _ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE20_M_allocate_and_copyIN9__gnu_cxx17_ br i1 %tobool.not.i, label %_ZNSt12_Vector_baseIPN8facebook4yoga4NodeESaIS3_EE13_M_deallocateEPS3_m.exit, label %if.then.i if.then.i: ; preds = %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEEEPS3_mT_SD_.exit - tail call void @_ZdlPv(ptr noundef nonnull %3) #14 + tail call void @_ZdlPv(ptr noundef nonnull %3) #15 br label %_ZNSt12_Vector_baseIPN8facebook4yoga4NodeESaIS3_EE13_M_deallocateEPS3_m.exit _ZNSt12_Vector_baseIPN8facebook4yoga4NodeESaIS3_EE13_M_deallocateEPS3_m.exit: ; preds = %_ZNSt6vectorIPN8facebook4yoga4NodeESaIS3_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEEEPS3_mT_SD_.exit, %if.then.i @@ -1513,6 +1514,9 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #12 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #13 + attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1526,9 +1530,10 @@ attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #10 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #13 = { builtin allocsize(0) } -attributes #14 = { builtin nounwind } -attributes #15 = { noreturn } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #14 = { builtin allocsize(0) } +attributes #15 = { builtin nounwind } +attributes #16 = { noreturn } !llvm.linker.options = !{} !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/zstd/optimized/zstd_ldm.c.ll b/bench/zstd/optimized/zstd_ldm.c.ll index 2943f8ede4f..e9bd7bf6de0 100644 --- a/bench/zstd/optimized/zstd_ldm.c.ll +++ b/bench/zstd/optimized/zstd_ldm.c.ll @@ -169,7 +169,7 @@ for.body: ; preds = %for.body.preheader, if.then: ; preds = %for.body %add.ptr10 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg - %call11 = tail call i64 @ZSTD_XXH64(ptr nocapture noundef %add.ptr10, i64 noundef %idx.ext, i64 noundef 0) #14 + %call11 = tail call i64 @ZSTD_XXH64(ptr nocapture noundef %add.ptr10, i64 noundef %idx.ext, i64 noundef 0) #15 %11 = trunc i64 %call11 to i32 %conv14 = and i32 %11, %sub12 %sub.ptr.lhs.cast16 = ptrtoint ptr %add.ptr10 to i64 @@ -376,7 +376,7 @@ done: ; preds = %if.then77, %if.then declare i64 @ZSTD_XXH64(ptr nocapture noundef, i64 noundef, i64 noundef) local_unnamed_addr #4 ; Function Attrs: nofree nounwind uwtable -define range(i64 -119, 1) i64 @ZSTD_ldm_generateSequences(ptr nocapture noundef %ldmState, ptr nocapture noundef %sequences, ptr nocapture noundef readonly %params, ptr noundef %src, i64 noundef %srcSize) local_unnamed_addr #5 { +define range(i64 -119, 1) i64 @ZSTD_ldm_generateSequences(ptr noundef %ldmState, ptr noundef %sequences, ptr nocapture noundef readonly %params, ptr noundef %src, i64 noundef %srcSize) local_unnamed_addr #5 { entry: %hashState.i = alloca %struct.ldmRollingHashState_t, align 8 %numSplits.i = alloca i32, align 4 @@ -622,7 +622,7 @@ for.body.i55: ; preds = %for.body.i55, %for. %arrayidx.i57 = getelementptr inbounds nuw i64, ptr %splitIndices.i, i64 %indvars.iv.i56 %25 = load i64, ptr %arrayidx.i57, align 8 %gep.i = getelementptr i8, ptr %invariant.gep.i, i64 %25 - %call48.i = tail call i64 @ZSTD_XXH64(ptr nocapture noundef %gep.i, i64 noundef %conv.i51, i64 noundef 0) #14 + %call48.i = tail call i64 @ZSTD_XXH64(ptr nocapture noundef %gep.i, i64 noundef %conv.i51, i64 noundef 0) #15 %26 = trunc i64 %call48.i to i32 %conv52.i = and i32 %26, %sub50.i %arrayidx54.i = getelementptr inbounds nuw %struct.ldmMatchCandidate_t, ptr %matchCandidates.i, i64 %indvars.iv.i56 @@ -1147,6 +1147,7 @@ for.end165.i: ; preds = %for.inc164.i, %for. br i1 %cmp166.i, label %for.inc210.sink.split.i, label %if.end171.i if.end171.i: ; preds = %for.end165.i + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %bestEntry.0.lcssa.i, i64 32) ] %53 = load i64, ptr %size, align 8 %54 = load i64, ptr %capacity, align 8 %cmp182.i = icmp eq i64 %53, %54 @@ -1462,7 +1463,7 @@ cond.true1.i: ; preds = %cond.false.i ZSTD_matchState_dictMode.exit: ; preds = %entry, %cond.false.i, %cond.true1.i %cond7.i = phi i32 [ 1, %entry ], [ %cond.i, %cond.true1.i ], [ 0, %cond.false.i ] - %call3 = tail call ptr @ZSTD_selectBlockCompressor(i32 noundef %1, i32 noundef %useRowMatchFinder, i32 noundef %cond7.i) #15 + %call3 = tail call ptr @ZSTD_selectBlockCompressor(i32 noundef %1, i32 noundef %useRowMatchFinder, i32 noundef %cond7.i) #16 %add.ptr = getelementptr inbounds i8, ptr %src, i64 %srcSize %6 = load i32, ptr %strategy, align 4 %cmp = icmp ugt i32 %6, 6 @@ -1494,7 +1495,7 @@ while.body.lr.ph: ; preds = %while.cond.preheade if.then: ; preds = %ZSTD_matchState_dictMode.exit %ldmSeqStore = getelementptr inbounds nuw i8, ptr %ms, i64 288 store ptr %rawSeqStore, ptr %ldmSeqStore, align 8 - %call5 = tail call i64 %call3(ptr noundef nonnull %ms, ptr noundef %seqStore, ptr noundef %rep, ptr noundef %src, i64 noundef %srcSize) #15 + %call5 = tail call i64 %call3(ptr noundef nonnull %ms, ptr noundef %seqStore, ptr noundef %rep, ptr noundef %src, i64 noundef %srcSize) #16 %posInSequence.i = getelementptr inbounds nuw i8, ptr %rawSeqStore, i64 16 %10 = load i64, ptr %posInSequence.i, align 8 %add.i = add i64 %10, %srcSize @@ -1683,15 +1684,15 @@ ZSTD_ldm_limitTableUpdate.exit: ; preds = %if.end12, %if.then. ] sw.bb.i: ; preds = %ZSTD_ldm_limitTableUpdate.exit - tail call void @ZSTD_fillHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0168, i32 noundef 0, i32 noundef 0) #15 + tail call void @ZSTD_fillHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0168, i32 noundef 0, i32 noundef 0) #16 br label %ZSTD_ldm_fillFastTables.exit sw.bb1.i: ; preds = %ZSTD_ldm_limitTableUpdate.exit - tail call void @ZSTD_fillDoubleHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0168, i32 noundef 0, i32 noundef 0) #15 + tail call void @ZSTD_fillDoubleHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0168, i32 noundef 0, i32 noundef 0) #16 br label %ZSTD_ldm_fillFastTables.exit ZSTD_ldm_fillFastTables.exit: ; preds = %ZSTD_ldm_limitTableUpdate.exit, %sw.bb.i, %sw.bb1.i - %call17 = tail call i64 %call3(ptr noundef nonnull %ms, ptr noundef %seqStore, ptr noundef %rep, ptr noundef %ip.0168, i64 noundef %retval.sroa.0.sroa.4.0.extract.shift.i) #15 + %call17 = tail call i64 %call3(ptr noundef nonnull %ms, ptr noundef %seqStore, ptr noundef %rep, ptr noundef %ip.0168, i64 noundef %retval.sroa.0.sroa.4.0.extract.shift.i) #16 %28 = load i64, ptr %rep, align 4 store i64 %28, ptr %scevgep, align 4 %add.ptr19 = getelementptr inbounds nuw i8, ptr %ip.0168, i64 %retval.sroa.0.sroa.4.0.extract.shift.i @@ -1877,17 +1878,17 @@ ZSTD_ldm_limitTableUpdate.exit144: ; preds = %while.end, %if.then ] sw.bb.i147: ; preds = %ZSTD_ldm_limitTableUpdate.exit144 - tail call void @ZSTD_fillHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0.lcssa, i32 noundef 0, i32 noundef 0) #15 + tail call void @ZSTD_fillHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0.lcssa, i32 noundef 0, i32 noundef 0) #16 br label %ZSTD_ldm_fillFastTables.exit148 sw.bb1.i146: ; preds = %ZSTD_ldm_limitTableUpdate.exit144 - tail call void @ZSTD_fillDoubleHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0.lcssa, i32 noundef 0, i32 noundef 0) #15 + tail call void @ZSTD_fillDoubleHashTable(ptr noundef nonnull %ms, ptr noundef %ip.0.lcssa, i32 noundef 0, i32 noundef 0) #16 br label %ZSTD_ldm_fillFastTables.exit148 ZSTD_ldm_fillFastTables.exit148: ; preds = %ZSTD_ldm_limitTableUpdate.exit144, %sw.bb.i147, %sw.bb1.i146 %sub.ptr.lhs.cast33 = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub35 = sub i64 %sub.ptr.lhs.cast33, %sub.ptr.lhs.cast.i131 - %call36 = tail call i64 %call3(ptr noundef nonnull %ms, ptr noundef %seqStore, ptr noundef %rep, ptr noundef %ip.0.lcssa, i64 noundef %sub.ptr.sub35) #15 + %call36 = tail call i64 %call3(ptr noundef nonnull %ms, ptr noundef %seqStore, ptr noundef %rep, ptr noundef %ip.0.lcssa, i64 noundef %sub.ptr.sub35) #16 br label %return return: ; preds = %if.then18.i, %lor.lhs.false.i, %ZSTD_ldm_fillFastTables.exit148 @@ -1913,14 +1914,17 @@ declare i32 @llvm.umin.i32(i32, i32) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umax.i32(i32, i32) #12 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #13 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.usub.sat.i32(i32, i32) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #13 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1935,9 +1939,10 @@ attributes #9 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protect attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) } attributes #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #14 = { nounwind willreturn memory(read) } -attributes #15 = { nounwind } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #15 = { nounwind willreturn memory(read) } +attributes #16 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/zxing/optimized/DMDetector.cpp.ll b/bench/zxing/optimized/DMDetector.cpp.ll index 22776503f2f..5a10859cb51 100644 --- a/bench/zxing/optimized/DMDetector.cpp.ll +++ b/bench/zxing/optimized/DMDetector.cpp.ll @@ -1057,6 +1057,7 @@ _ZNK5ZXing14RegressionLine6lengthEv.exit.i.i: ; preds = %437, %430 %465 = call noundef double @llvm.fmuladd.f64(double %462, double %462, double %464) %sqrt.i.i242.i.i = call noundef double @llvm.sqrt.f64(double %465) %466 = fadd double %sqrt.i.i242.i.i, -1.000000e+00 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %32, i64 64) ] %467 = fsub double %466, %402 %468 = call noundef double @llvm.fabs.f64(double %467) %469 = fdiv double %468, %402 @@ -4391,21 +4392,25 @@ _ZNSt6vectorIdSaIdEED2Ev.exit77: ; preds = %_ZNSt6vectorIdSaIdE %96 = tail call noundef double @llvm.fmuladd.f64(double %93, double %93, double %95) %sqrt.i = tail call noundef double @llvm.sqrt.f64(double %96) %97 = getelementptr inbounds nuw i8, ptr %0, i64 40 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %97, i64 64) ] %98 = getelementptr inbounds nuw i8, ptr %0, i64 48 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %98, i64 64) ] %99 = getelementptr inbounds nuw i8, ptr %0, i64 24 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %99, i64 64) ] %.sroa.3.0..sroa_idx.i.i.i79 = getelementptr inbounds nuw i8, ptr %0, i64 32 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %.sroa.3.0..sroa_idx.i.i.i79, i64 64) ] %100 = getelementptr inbounds nuw i8, ptr %0, i64 56 %.not208247 = icmp eq ptr %.sroa.0190.1.lcssa, %.sroa.8.0.lcssa br i1 %.not208247, label %_ZNSt6vectorIdSaIdEED2Ev.exit136, label %.lr.ph255 .lr.ph255: ; preds = %._crit_edge - %101 = load double, ptr %97, align 8 - %102 = fcmp ord double %101, 0.000000e+00 - %.sroa.0.0.copyload.i.i.i78 = load double, ptr %99, align 8 - %.sroa.0.0.i.i.i82 = select i1 %102, double %101, double %.sroa.0.0.copyload.i.i.i78 - %103 = load double, ptr %98, align 8 %.sroa.3.0.copyload.i.i.i80 = load double, ptr %.sroa.3.0..sroa_idx.i.i.i79, align 8 - %.sroa.3.0.i.i.i81 = select i1 %102, double %103, double %.sroa.3.0.copyload.i.i.i80 + %.sroa.0.0.copyload.i.i.i78 = load double, ptr %99, align 8 + %101 = load double, ptr %98, align 8 + %102 = load double, ptr %97, align 8 + %103 = fcmp ord double %102, 0.000000e+00 + %.sroa.0.0.i.i.i82 = select i1 %103, double %102, double %.sroa.0.0.copyload.i.i.i78 + %.sroa.3.0.i.i.i81 = select i1 %103, double %101, double %.sroa.3.0.copyload.i.i.i80 %104 = fmul double %88, %.sroa.3.0.i.i.i81 %105 = tail call noundef double @llvm.fmuladd.f64(double %.sroa.0.0.i.i.i82, double %83, double %104) %106 = load double, ptr %100, align 8