From 952bcaf6ba184c928f4d71ef85cfe180285e02ef Mon Sep 17 00:00:00 2001 From: fhahn <450489+fhahn@users.noreply.github.com> Date: Mon, 23 Dec 2024 04:57:08 +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 6448dd686a7962ffb59e13dbe6449a3e7361777e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 21:21:09 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/abc/optimized/bacWriteVer.c.ll | 7 +- bench/abc/optimized/cutMerge.c.ll | 5 +- .../cord_rep_btree_navigator_test.cc.ll | 25 +++-- .../optimized/encode_internal_avx2.cc.ll | 9 +- .../optimized/X3DImporter_Postprocess.cpp.ll | 39 ++++--- bench/assimp/optimized/XGLLoader.cpp.ll | 39 +++---- .../optimized/instantiate_predef_macros.ll | 46 ++++---- bench/boost/optimized/text_file_backend.ll | 4 + bench/box2d/optimized/b2_collision.cpp.ll | 27 ++--- bench/box2d/optimized/b2_gear_joint.cpp.ll | 18 ++-- bench/bullet3/optimized/btCollisionWorld.ll | 4 +- .../optimized/btMultiBodySliderConstraint.ll | 20 ++-- bench/c3c/optimized/bigint.c.ll | 93 ++++++++-------- bench/casadi/optimized/rank1.cpp.ll | 31 +++--- bench/casadi/optimized/symbolic_qr.cpp.ll | 13 +-- bench/ceres/optimized/cgnr_solver.cc.ll | 44 ++++---- bench/cmake/optimized/cmQtAutoRcc.cxx.ll | 1 + .../optimized/29af07t0g5n4ob25.ll | 4 +- .../optimized/2btly3o1576s0dhm.ll | 36 ++++--- bench/cpython/optimized/_cursesmodule.ll | 46 +++++--- bench/cpython/optimized/memoryobject.ll | 18 ++-- bench/csmith/optimized/StatementGoto.cpp.ll | 58 +++++----- bench/curl/optimized/libcurl_la-smtp.ll | 9 +- bench/cvc5/optimized/context_mm.cpp.ll | 13 ++- .../floatingpoint_literal_symfpu.cpp.ll | 16 +-- bench/delta-rs/optimized/c3ex4j3d7dkyaj3.ll | 19 ++-- bench/delta-rs/optimized/rqh7tdav00zdgx4.ll | 21 ++-- .../double_conversion/optimized/bignum.cc.ll | 21 ++-- bench/eastl/optimized/TestFixedVector.cpp.ll | 97 +++++++++-------- bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll | 3 +- bench/flac/optimized/fixed_intrin_avx2.c.ll | 28 +++-- bench/flac/optimized/fixed_intrin_sse2.c.ll | 21 ++-- .../flatbuffers/optimized/idl_gen_cpp.cpp.ll | 21 ++-- bench/freetype/optimized/sdf.c.ll | 62 ++++++----- .../g2o/optimized/estimate_propagator.cpp.ll | 17 ++- bench/g2o/optimized/hyper_graph.cpp.ll | 36 +++---- bench/git/optimized/block.ll | 5 +- bench/glslang/optimized/Pp.cpp.ll | 47 ++++---- bench/graphviz/optimized/labels.c.ll | 11 +- bench/gromacs/optimized/pme.cpp.ll | 8 +- ..._grpc_integrity_only_record_protocol.cc.ll | 29 ++--- bench/grpc/optimized/ev_poll_posix.cc.ll | 19 ++-- bench/hdf5/optimized/H5checksum.c.ll | 23 ++-- bench/hermes/optimized/GlobalObject.cpp.ll | 3 +- bench/hermes/optimized/TracingRuntime.cpp.ll | 31 +++--- bench/hermes/optimized/escape.cpp.ll | 33 +++--- .../optimized/shortcut_literal.cpp.ll | 7 +- .../hyperscan/optimized/stream_compress.c.ll | 47 ++++---- .../influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll | 70 ++++++------ bench/ipopt/optimized/IpMultiVectorMatrix.ll | 85 ++++++++------- bench/jemalloc/optimized/hpdata.ll | 43 ++++---- bench/jq/optimized/regparse.ll | 97 +++++++++-------- bench/jsonnet/optimized/rapidyaml.cpp.ll | 86 ++++++++------- bench/libevent/optimized/evutil_rand.c.ll | 19 ++-- bench/libjpeg-turbo/optimized/jccolor.c.ll | 61 +++++------ bench/libjpeg-turbo/optimized/jdsample.c.ll | 51 ++++----- bench/libquic/optimized/quic_utils.cc.ll | 33 +++--- bench/libquic/optimized/trees.c.ll | 30 +++--- bench/libwebp/optimized/buffer_dec.c.ll | 35 +++--- bench/libwebp/optimized/filters_sse2.c.ll | 15 +-- .../lightgbm/optimized/sample_strategy.cpp.ll | 87 +++++++-------- bench/linux/optimized/scsi_sysfs.ll | 92 ++++++++-------- .../FunctionPropertiesAnalysis.cpp.ll | 2 + bench/lua/optimized/ltable.ll | 77 ++++++------- bench/lvgl/optimized/lv_draw_sw_mask.ll | 73 ++++++------- bench/lvgl/optimized/lv_tlsf.ll | 68 ++++++------ .../optimized/4spgntyrk3g2e624.ll | 60 +++++------ .../optimized/memcached-memcached.ll | 57 +++++----- bench/meshlab/optimized/mesh.cpp.ll | 44 ++++---- .../mini-lsm-rs/optimized/1pvec8aj5zmr89ee.ll | 34 +++--- bench/mitsuba3/optimized/area.cpp.ll | 59 +++++----- bench/mitsuba3/optimized/string.cpp.ll | 53 ++++----- .../mold/optimized/subprocess.cc.ALPHA.cc.ll | 32 +++--- bench/msdfgen/optimized/main.cpp.ll | 24 ++--- bench/msdfgen/optimized/rasterization.cpp.ll | 34 +++--- .../optimized/sdf-error-estimation.cpp.ll | 6 ++ bench/ncnn/optimized/mvn.cpp.ll | 22 ++-- bench/nix/optimized/eval-cache.ll | 34 +++--- .../optimized/unit-element_access1.cpp.ll | 14 +++ bench/ocio/optimized/XMLReaderHelper.cpp.ll | 29 +++-- bench/openexr/optimized/ImfIDManifest.cpp.ll | 46 ++++---- bench/openexr/optimized/internal_huf.c.ll | 19 ++-- bench/openjdk/optimized/vmError_posix.ll | 7 +- bench/pbrt-v4/optimized/camera.cpp.ll | 10 +- bench/php/optimized/datetime.ll | 62 ++++++----- bench/php/optimized/pcre2_compile.ll | 17 +-- bench/postgres/optimized/command.ll | 37 +++---- bench/postgres/optimized/tablesync.ll | 18 ++-- bench/protobuf/optimized/importer.cc.ll | 21 ++-- .../optimized/HTTPConnectorWithFizz.cpp.ll | 71 ++++++------ bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll | 16 ++- bench/qdrant-rs/optimized/4x6lbqvtsqiieqxe.ll | 67 ++++++------ .../optimized/chebyshevinterpolation.ll | 25 +++-- .../optimized/nonlinearfittingmethods.ll | 39 ++++--- bench/quantlib/optimized/onefactorcopula.ll | 15 ++- bench/quest/optimized/QuEST_common.c.ll | 25 ++--- bench/quest/optimized/QuEST_cpu.c.ll | 47 +++++--- bench/rayon-rs/optimized/4ht8xefeo0zr8mzr.ll | 23 ++-- .../optimized/Sample_TempObstacles.cpp.ll | 12 ++- bench/regex-rs/optimized/12jtvy3iayrg5nam.ll | 18 ++-- 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 +- bench/slurm/optimized/sort.ll | 75 ++++++------- bench/snappy/optimized/snappy.cc.ll | 14 ++- bench/spike/optimized/fli_d.ll | 59 +++++----- 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/tokio-rs/optimized/5cdni0zdopovrkgi.ll | 65 ++++++----- .../optimized/4vdzcrqmrfs3duezq953b12ub.ll | 76 ++++++------- bench/typst-rs/optimized/w6iknwszr5npyaz.ll | 83 +++++++------- bench/velox/optimized/Split.cpp.ll | 16 ++- bench/velox/optimized/tz.cpp.ll | 30 +++--- bench/verilator/optimized/V3ParseImp.cpp.ll | 43 ++++---- .../wasmtime-rs/optimized/44oyxmdjsi7rdwcj.ll | 56 +++++----- .../wasmtime-rs/optimized/v5prf101dn49s3v.ll | 48 ++++----- bench/wireshark/optimized/packet-btmesh.c.ll | 24 ++--- bench/wireshark/optimized/packet-h265.c.ll | 15 ++- bench/xgboost/optimized/socket.cc.ll | 23 ++-- bench/yalantinglibs/optimized/tutorial.cpp.ll | 78 +++++++------- bench/yaml-cpp/optimized/simplekey.cpp.ll | 28 +++-- bench/yosys/optimized/preproc.ll | 41 ++++--- bench/zstd/optimized/hist.c.ll | 29 ++--- bench/zxing/optimized/zueci.c.ll | 45 ++++---- 129 files changed, 2382 insertions(+), 2188 deletions(-) diff --git a/bench/abc/optimized/bacWriteVer.c.ll b/bench/abc/optimized/bacWriteVer.c.ll index 5d2af8ea292..89ab0b8f0b2 100644 --- a/bench/abc/optimized/bacWriteVer.c.ll +++ b/bench/abc/optimized/bacWriteVer.c.ll @@ -105,8 +105,8 @@ define void @Psr_ManWriteVerilogArray(ptr nocapture noundef %0, ptr nocapture no br i1 %7, label %.lr.ph, label %.critedge .lr.ph: ; preds = %6 - %.not.not = icmp eq i32 %5, 0 %8 = getelementptr i8, ptr %2, i64 8 + %.not.not = icmp eq i32 %5, 0 %9 = add nsw i32 %4, -1 %10 = sext i32 %3 to i64 %sext20 = sext i32 %9 to i64 @@ -533,25 +533,28 @@ Ptr_TypeToName.exit.i.i: ; preds = %132, %switch.lookup %151 = add nsw i32 %Psr_BoxSignals.V.val.i.i, -3 %sext20.i.i.i = zext nneg i32 %151 to i64 %zext.i.i = zext nneg i32 %150 to i64 + %.val.i56.pre69.i.i = load ptr, ptr @Psr_BoxSignals.V.2, align 8 br label %.lr.ph.split.i.i.i .lr.ph.split.i.i.i: ; preds = %158, %.lr.ph.i54.i.i + %.val.i56.i.i = phi ptr [ %.val.i5670.i.i, %158 ], [ %.val.i56.pre69.i.i, %.lr.ph.i54.i.i ] %indvars.iv.i55.i.i = phi i64 [ %indvars.iv.next.i58.i.i, %158 ], [ 0, %.lr.ph.i54.i.i ] %152 = and i64 %indvars.iv.i55.i.i, 1 %.not14.i.i.i = icmp eq i64 %152, 0 br i1 %.not14.i.i.i, label %158, label %153 153: ; preds = %.lr.ph.split.i.i.i - %.val.i56.i.i = load ptr, ptr @Psr_BoxSignals.V.2, align 8 %154 = getelementptr inbounds nuw i32, ptr %.val.i56.i.i, i64 %indvars.iv.i55.i.i %155 = load i32, ptr %154, align 4 tail call fastcc void @Psr_ManWriteVerilogSignal(ptr noundef nonnull %11, ptr noundef nonnull readonly %31, i32 noundef %155) %156 = icmp eq i64 %indvars.iv.i55.i.i, %sext20.i.i.i %157 = select i1 %156, ptr @.str.1, ptr @.str.2 %fputs.i57.i.i = tail call i32 @fputs(ptr nonnull %157, ptr nonnull %11) + %.val.i56.pre.i.i = load ptr, ptr @Psr_BoxSignals.V.2, align 8 br label %158 158: ; preds = %153, %.lr.ph.split.i.i.i + %.val.i5670.i.i = phi ptr [ %.val.i56.pre.i.i, %153 ], [ %.val.i56.i.i, %.lr.ph.split.i.i.i ] %indvars.iv.next.i58.i.i = add nuw nsw i64 %indvars.iv.i55.i.i, 1 %159 = icmp eq i64 %indvars.iv.next.i58.i.i, %zext.i.i br i1 %159, label %Psr_ManWriteVerilogMux.exit.sink.split.i.i, label %.lr.ph.split.i.i.i, !llvm.loop !4 diff --git a/bench/abc/optimized/cutMerge.c.ll b/bench/abc/optimized/cutMerge.c.ll index 50c2aa168b7..a9f0b63285f 100644 --- a/bench/abc/optimized/cutMerge.c.ll +++ b/bench/abc/optimized/cutMerge.c.ll @@ -70,11 +70,11 @@ define noundef ptr @Cut_CutMergeTwo2(ptr noundef %0, ptr nocapture noundef reado br label %.loopexit.sink.split 30: ; preds = %3 - %.not = icmp ult i32 %8, 268435456 br i1 %10, label %.preheader166, label %.preheader173 .preheader173: ; preds = %30 - br i1 %.not, label %._crit_edge, label %.preheader172.lr.ph + %.not199 = icmp ult i32 %8, 268435456 + br i1 %.not199, label %._crit_edge, label %.preheader172.lr.ph .preheader172.lr.ph: ; preds = %.preheader173 %.promoted179 = load i32, ptr getelementptr inbounds nuw (i8, ptr @Cut_CutMergeTwo2.M, i64 8), align 8 @@ -88,6 +88,7 @@ define noundef ptr @Cut_CutMergeTwo2(ptr noundef %0, ptr nocapture noundef reado br label %.preheader172 .preheader166: ; preds = %30 + %.not = icmp ult i32 %8, 268435456 br i1 %.not, label %._crit_edge188, label %.preheader165.lr.ph .preheader165.lr.ph: ; preds = %.preheader166 diff --git a/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll b/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll index e0b1d181a08..9b9ed923a27 100644 --- a/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll +++ b/bench/abseil-cpp/optimized/cord_rep_btree_navigator_test.cc.ll @@ -4371,15 +4371,14 @@ invoke.cont.lr.ph: ; preds = %entry br label %invoke.cont invoke.cont: ; preds = %invoke.cont.lr.ph, %for.inc - %0 = phi ptr [ null, %invoke.cont.lr.ph ], [ %5, %for.inc ] %s.sroa.5.017 = phi ptr [ %data.coerce1, %invoke.cont.lr.ph ], [ %add.ptr.i, %for.inc ] %s.sroa.0.016 = phi i64 [ %data.coerce0, %invoke.cont.lr.ph ], [ %sub.i, %for.inc ] %call5.i.i.i.i.i.i41315 = phi ptr [ null, %invoke.cont.lr.ph ], [ %call5.i.i.i.i.i.i412, %for.inc ] %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %s.sroa.0.016, i64 %chunk_size) %cmp.i.i.i = icmp ult i64 %.sroa.speculated.i, 20 %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %.sroa.speculated.i, i64 4083) - %1 = add nuw nsw i64 %spec.store.select.i.i.i, 13 - %len.addr.0.i.i.i = select i1 %cmp.i.i.i, i64 32, i64 %1 + %0 = add nuw nsw i64 %spec.store.select.i.i.i, 13 + %len.addr.0.i.i.i = select i1 %cmp.i.i.i, i64 32, i64 %0 %cmp.i.i.i.i = icmp samesign ult i64 %len.addr.0.i.i.i, 513 %conv.i.neg.i.i.i = select i1 %cmp.i.i.i.i, i64 -8, i64 -64 %conv.i.i.i.i = select i1 %cmp.i.i.i.i, i64 8, i64 64 @@ -4390,8 +4389,8 @@ invoke.cont: ; preds = %invoke.cont.lr.ph, to label %invoke.cont2 unwind label %lpad.loopexit invoke.cont2: ; preds = %invoke.cont - %2 = getelementptr inbounds nuw i8, ptr %call4.i.i.i2, i64 8 - store i64 2, ptr %2, align 8 + %1 = getelementptr inbounds nuw i8, ptr %call4.i.i.i2, i64 8 + store i64 2, ptr %1, align 8 %cmp.i.i.i.i.i = icmp samesign ult i64 %and.i.i.i.i.i, 513 %.sink8.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 3, i64 6 %.sink.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 2, i64 58 @@ -4403,18 +4402,19 @@ invoke.cont2: ; preds = %invoke.cont store i64 %.sroa.speculated.i, ptr %call4.i.i.i2, align 8 %storage.i.i = getelementptr inbounds nuw i8, ptr %call4.i.i.i2, i64 13 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %storage.i.i, ptr align 1 %s.sroa.5.017, i64 %.sroa.speculated.i, i1 false) + %2 = load ptr, ptr %_M_finish.i.i, align 8 %3 = load ptr, ptr %_M_end_of_storage.i.i, align 8 - %cmp.not.i.i = icmp eq ptr %0, %3 + %cmp.not.i.i = icmp eq ptr %2, %3 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %invoke.cont2 - store ptr %call4.i.i.i2, ptr %0, align 8 - %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %call4.i.i.i2, ptr %2, align 8 + %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %2, i64 8 store ptr %incdec.ptr.i.i, ptr %_M_finish.i.i, align 8 br label %for.inc if.else.i.i: ; preds = %invoke.cont2 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %0 to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %call5.i.i.i.i.i.i41315 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 %cmp.i.i.i.i3 = icmp eq i64 %sub.ptr.sub.i.i.i.i.i, 9223372036854775800 @@ -4467,7 +4467,6 @@ _ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EE17_M_realloc_insertIJS3_EEEv br label %for.inc for.inc: ; preds = %_ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i, %if.then.i.i - %5 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %incdec.ptr.i.i, %if.then.i.i ] %call5.i.i.i.i.i.i412 = phi ptr [ %call5.i.i.i.i.i.i4, %_ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_.exit.i.i ], [ %call5.i.i.i.i.i.i41315, %if.then.i.i ] %add.ptr.i = getelementptr inbounds i8, ptr %s.sroa.5.017, i64 %chunk_size %sub.i = sub i64 %s.sroa.0.016, %chunk_size @@ -4486,12 +4485,12 @@ lpad.loopexit.split-lp: ; preds = %if.then.i.i.i.i lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit10, %lpad.loopexit ], [ %lpad.loopexit.split-lp11, %lpad.loopexit.split-lp ] - %6 = load ptr, ptr %agg.result, align 8 - %tobool.not.i.i.i = icmp eq ptr %6, null + %5 = load ptr, ptr %agg.result, align 8 + %tobool.not.i.i.i = icmp eq ptr %5, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %lpad - tail call void @_ZdlPv(ptr noundef nonnull %6) #32 + tail call void @_ZdlPv(ptr noundef nonnull %5) #32 br label %_ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EED2Ev.exit _ZNSt6vectorIPN4absl13cord_internal7CordRepESaIS3_EED2Ev.exit: ; preds = %lpad, %if.then.i.i.i diff --git a/bench/arrow/optimized/encode_internal_avx2.cc.ll b/bench/arrow/optimized/encode_internal_avx2.cc.ll index 9e586069730..fdb31dbac40 100644 --- a/bench/arrow/optimized/encode_internal_avx2.cc.ll +++ b/bench/arrow/optimized/encode_internal_avx2.cc.ll @@ -681,8 +681,8 @@ for.end: ; preds = %for.body, %entry ret i32 %mul10 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define void @_ZN5arrow7compute16EncoderVarBinary17DecodeHelper_avx2EjjjRKNS0_12RowTableImplEPNS0_14KeyColumnArrayE(i32 noundef %start_row, i32 noundef %num_rows, i32 noundef %varbinary_col_id, ptr nocapture noundef nonnull readonly align 8 dereferenceable(209) %rows, ptr nocapture noundef readonly %col) local_unnamed_addr #0 align 2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable +define void @_ZN5arrow7compute16EncoderVarBinary17DecodeHelper_avx2EjjjRKNS0_12RowTableImplEPNS0_14KeyColumnArrayE(i32 noundef %start_row, i32 noundef %num_rows, i32 noundef %varbinary_col_id, ptr nocapture noundef nonnull readonly align 8 dereferenceable(209) %rows, ptr nocapture noundef readonly %col) local_unnamed_addr #4 align 2 { entry: %cmp = icmp eq i32 %varbinary_col_id, 0 %arrayidx.i.i.i.i = getelementptr inbounds nuw i8, ptr %rows, i64 160 @@ -825,13 +825,14 @@ if.end: ; preds = %_ZZN5arrow7compute1 } ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #4 +declare i64 @llvm.umax.i64(i64, i64) #5 attributes #0 = { mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="256" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="haswell" "target-features"="+avx,+avx2,+bmi,+bmi2,+cmov,+crc32,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+rdrnd,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" } attributes #1 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="haswell" "target-features"="+avx,+avx2,+bmi,+bmi2,+cmov,+crc32,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+rdrnd,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" } attributes #2 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="256" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="haswell" "target-features"="+avx,+avx2,+bmi,+bmi2,+cmov,+crc32,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+rdrnd,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" } attributes #3 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="256" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="haswell" "target-features"="+avx,+avx2,+bmi,+bmi2,+cmov,+crc32,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+rdrnd,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" } -attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #4 = { mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="256" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="haswell" "target-features"="+avx,+avx2,+bmi,+bmi2,+cmov,+crc32,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+rdrnd,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/assimp/optimized/X3DImporter_Postprocess.cpp.ll b/bench/assimp/optimized/X3DImporter_Postprocess.cpp.ll index 5842237171b..6897e7bcea1 100644 --- a/bench/assimp/optimized/X3DImporter_Postprocess.cpp.ll +++ b/bench/assimp/optimized/X3DImporter_Postprocess.cpp.ll @@ -168,7 +168,7 @@ terminate.lpad: ; preds = %if.then declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #1 ; Function Attrs: mustprogress uwtable -define hidden void @_ZNK6Assimp11X3DImporter40PostprocessHelper_Matrix_GlobalToCurrentEv(ptr noalias nocapture writeonly sret(%class.aiMatrix4x4t) align 4 initializes((0, 64)) %agg.result, ptr nocapture noundef nonnull readonly align 8 dereferenceable(120) %this) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 { +define hidden void @_ZNK6Assimp11X3DImporter40PostprocessHelper_Matrix_GlobalToCurrentEv(ptr noalias nocapture sret(%class.aiMatrix4x4t) align 4 initializes((0, 64)) %agg.result, ptr nocapture noundef nonnull readonly align 8 dereferenceable(120) %this) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 { entry: %matr = alloca %"class.std::__cxx11::list", align 8 %_M_prev.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %matr, i64 8 @@ -192,7 +192,14 @@ entry: %mNodeElementCur = getelementptr inbounds nuw i8, ptr %this, i64 96 %0 = load ptr, ptr %mNodeElementCur, align 8 %cmp.not = icmp eq ptr %0, null - br i1 %cmp.not, label %_ZNSt7__cxx114listI12aiMatrix4x4tIfESaIS2_EED2Ev.exit13, label %do.body + br i1 %cmp.not, label %if.end5.thread, label %do.body + +if.end5.thread: ; preds = %entry + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.result, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %a2.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %b2.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %b3.i, i64 32) ] + br label %_ZNSt7__cxx114listI12aiMatrix4x4tIfESaIS2_EED2Ev.exit13 do.body: ; preds = %entry, %if.end %cur_node.0 = phi ptr [ %6, %if.end ], [ %0, %entry ] @@ -240,6 +247,10 @@ if.end: ; preds = %_ZNSt7__cxx114listI if.end5: ; preds = %if.end %.pre = load ptr, ptr %matr, align 8, !noalias !7 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %agg.result, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %a2.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %b2.i, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %b3.i, i64 32) ] %cmp.i.i.i.not52 = icmp eq ptr %matr, %.pre br i1 %cmp.i.i.i.not52, label %_ZNSt7__cxx114listI12aiMatrix4x4tIfESaIS2_EED2Ev.exit13, label %invoke.cont10.lr.ph @@ -400,7 +411,7 @@ while.body.i.i.i10: ; preds = %for.end, %while.bod %cmp.not.i.i.i12 = icmp eq ptr %87, %matr br i1 %cmp.not.i.i.i12, label %_ZNSt7__cxx114listI12aiMatrix4x4tIfESaIS2_EED2Ev.exit13, label %while.body.i.i.i10, !llvm.loop !4 -_ZNSt7__cxx114listI12aiMatrix4x4tIfESaIS2_EED2Ev.exit13: ; preds = %while.body.i.i.i10, %entry, %if.end5 +_ZNSt7__cxx114listI12aiMatrix4x4tIfESaIS2_EED2Ev.exit13: ; preds = %while.body.i.i.i10, %if.end5, %if.end5.thread ret void } @@ -4801,23 +4812,23 @@ entry: ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #18 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #19 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #19 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #19 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #20 +declare i64 @llvm.umax.i64(i64, i64) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #20 - -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #21 +declare i64 @llvm.umin.i64(i64, i64) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #20 +declare i32 @llvm.umin.i32(i32, i32) #21 attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree nounwind } @@ -4838,9 +4849,9 @@ attributes #15 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "sta attributes #16 = { 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 #17 = { 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 #18 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #19 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #20 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #21 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #19 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #20 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #21 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #22 = { noreturn nounwind } attributes #23 = { builtin allocsize(0) } attributes #24 = { nounwind } diff --git a/bench/assimp/optimized/XGLLoader.cpp.ll b/bench/assimp/optimized/XGLLoader.cpp.ll index d0d6d39d5d8..1c8d41c390f 100644 --- a/bench/assimp/optimized/XGLLoader.cpp.ll +++ b/bench/assimp/optimized/XGLLoader.cpp.ll @@ -1070,8 +1070,8 @@ _ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit: ; preds = %if.then.i.i.i br i1 %cmp.not.i.i.i.i, label %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit.thread, %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit - %.pr188 = phi ptr [ %call.i.i.i.i, %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit.thread ], [ %.pr.pre, %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit ] - %_M_use_count.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pr188, i64 8 + %.pr189 = phi ptr [ %call.i.i.i.i, %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit.thread ], [ %.pr.pre, %_ZNSt10shared_ptrIN6Assimp8IOStreamEEC2ERKS2_.exit ] + %_M_use_count.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pr189, i64 8 %19 = load i8, ptr @__libc_single_threaded, align 1 %tobool.i.not.i.i.i.i.i = icmp eq i8 %19, 0 br i1 %tobool.i.not.i.i.i.i.i, label %if.else.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i @@ -1631,29 +1631,30 @@ invoke.cont99: ; preds = %if.end93 store ptr %call100, ptr %mMeshes, align 8 %86 = load ptr, ptr %meshes_linear, align 8 %87 = load ptr, ptr %_M_finish.i.i, align 8 + %88 = load ptr, ptr %m_scene, align 8 %tobool.not.i.i.i.i.i122 = icmp eq ptr %87, %86 br i1 %tobool.not.i.i.i.i.i122, label %invoke.cont111, label %if.then.i.i.i.i.i123 if.then.i.i.i.i.i123: ; preds = %invoke.cont99 + %mMeshes108 = getelementptr inbounds nuw i8, ptr %88, i64 24 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %87 to i64 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %86 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 - %88 = load ptr, ptr %m_scene, align 8 - %mMeshes108 = getelementptr inbounds nuw i8, ptr %88, i64 24 %89 = load ptr, ptr %mMeshes108, align 8 call void @llvm.memmove.p0.p0.i64(ptr align 8 %89, ptr align 8 %86, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + %.pre185 = load ptr, ptr %m_scene, align 8 br label %invoke.cont111 invoke.cont111: ; preds = %if.then.i.i.i.i.i123, %invoke.cont99 - %90 = load ptr, ptr %_M_finish.i.i111, align 8 - %91 = load ptr, ptr %materials_linear, align 8 - %sub.ptr.lhs.cast.i125 = ptrtoint ptr %90 to i64 - %sub.ptr.rhs.cast.i126 = ptrtoint ptr %91 to i64 + %90 = phi ptr [ %.pre185, %if.then.i.i.i.i.i123 ], [ %88, %invoke.cont99 ] + %91 = load ptr, ptr %_M_finish.i.i111, align 8 + %92 = load ptr, ptr %materials_linear, align 8 + %sub.ptr.lhs.cast.i125 = ptrtoint ptr %91 to i64 + %sub.ptr.rhs.cast.i126 = ptrtoint ptr %92 to i64 %sub.ptr.sub.i127 = sub i64 %sub.ptr.lhs.cast.i125, %sub.ptr.rhs.cast.i126 %sub.ptr.div.i128 = lshr exact i64 %sub.ptr.sub.i127, 3 %conv114 = trunc i64 %sub.ptr.div.i128 to i32 - %92 = load ptr, ptr %m_scene, align 8 - %mNumMaterials = getelementptr inbounds nuw i8, ptr %92, i64 32 + %mNumMaterials = getelementptr inbounds nuw i8, ptr %90, i64 32 store i32 %conv114, ptr %mNumMaterials, align 8 %93 = load ptr, ptr %m_scene, align 8 %mNumMaterials117 = getelementptr inbounds nuw i8, ptr %93, i64 32 @@ -1673,11 +1674,11 @@ invoke.cont119: ; preds = %invoke.cont111 br i1 %tobool.not.i.i.i.i.i133, label %invoke.cont132, label %if.then.i.i.i.i.i134 if.then.i.i.i.i.i134: ; preds = %invoke.cont119 + %98 = load ptr, ptr %m_scene, align 8 + %mMaterials129 = getelementptr inbounds nuw i8, ptr %98, i64 40 %sub.ptr.lhs.cast.i.i.i.i.i130 = ptrtoint ptr %97 to i64 %sub.ptr.rhs.cast.i.i.i.i.i131 = ptrtoint ptr %96 to i64 %sub.ptr.sub.i.i.i.i.i132 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i130, %sub.ptr.rhs.cast.i.i.i.i.i131 - %98 = load ptr, ptr %m_scene, align 8 - %mMaterials129 = getelementptr inbounds nuw i8, ptr %98, i64 40 %99 = load ptr, ptr %mMaterials129, align 8 call void @llvm.memmove.p0.p0.i64(ptr align 8 %99, ptr align 8 %96, i64 %sub.ptr.sub.i.i.i.i.i132, i1 false) br label %invoke.cont132 @@ -11769,15 +11770,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 @@ -11798,14 +11799,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.not.i = icmp eq ptr %0, %1 br i1 %cmp.i.i.i.not.i, label %_ZNSt6vectorIcSaIcEE11_S_relocateEPcS2_S2_RS0_.exit.i, label %if.then.i.i.i30.i diff --git a/bench/boost/optimized/instantiate_predef_macros.ll b/bench/boost/optimized/instantiate_predef_macros.ll index e3445fd1d74..1033f154d45 100644 --- a/bench/boost/optimized/instantiate_predef_macros.ll +++ b/bench/boost/optimized/instantiate_predef_macros.ll @@ -8474,7 +8474,7 @@ define linkonce_odr hidden void @_ZNK5boost6spirit7classic11alternativeINS1_5chl 14: ; preds = %12, %3 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) #28 invoke void @_ZNK5boost6spirit7classic11char_parserINS1_5chlitINS_4wave8token_idEEEE5parseINS1_7scannerINS4_8cpplexer12lex_iteratorINSA_9lex_tokenINS4_4util13file_positionINSD_11flex_stringIcSt11char_traitsIcESaIcENSD_9CowStringINSD_22AllocatorStringStorageIcSI_EEPcEEEEEEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_15pt_match_policyISR_NS1_21node_val_data_factoryINS1_5nil_tEEESW_EENS1_13action_policyEEEEEEENS1_13parser_resultIS6_T_E4typeERKS13_(ptr dead_on_unwind nonnull writable sret(%"class.boost::spirit::classic::tree_match.157") align 8 %5, ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 8 dereferenceable(24) %2) - to label %15 unwind label %61 + to label %15 unwind label %60 15: ; preds = %14 %16 = load i64, ptr %5, align 8, !tbaa !220 @@ -8519,7 +8519,7 @@ _ZNSt6vectorIN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cppl %35 = getelementptr inbounds nuw i8, ptr %5, i64 8 %36 = load i8, ptr %35, align 8, !tbaa !225, !range !90, !noundef !91 %37 = trunc nuw i8 %36 to i1 - br i1 %37, label %38, label %59 + br i1 %37, label %38, label %_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit 38: ; preds = %_ZNSt6vectorIN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESaISQ_EED2Ev.exit.i %39 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -8579,41 +8579,38 @@ _ZN5boost4wave8cpplexer4impl10token_dataINS0_4util11flex_stringIcSt11char_traits %58 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) @_ZN5boost14singleton_poolINS_4wave8cpplexer4impl14token_data_tagELj80ENS_33default_user_allocator_new_deleteESt5mutexLj32ELj0EE7storageE) #28 br label %_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit -_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit: ; preds = %38, %41, %45, %_ZN5boost4wave8cpplexer4impl10token_dataINS0_4util11flex_stringIcSt11char_traitsIcESaIcENS4_9CowStringINS4_22AllocatorStringStorageIcS8_EEPcEEEENS4_13file_positionISE_EEEdlEPvm.exit.i - %.pre = load i64, ptr %0, align 8, !tbaa !28 - br label %59 - -59: ; preds = %_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit, %_ZNSt6vectorIN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESaISQ_EED2Ev.exit.i - %60 = phi i64 [ %.pre, %_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit ], [ %16, %_ZNSt6vectorIN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESaISQ_EED2Ev.exit.i ] +_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit: ; preds = %_ZN5boost4wave8cpplexer4impl10token_dataINS0_4util11flex_stringIcSt11char_traitsIcESaIcENS4_9CowStringINS4_22AllocatorStringStorageIcS8_EEPcEEEENS4_13file_positionISE_EEEdlEPvm.exit.i, %45, %41, %38, %_ZNSt6vectorIN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESaISQ_EED2Ev.exit.i call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #28 - %.not.not = icmp slt i64 %60, 0 - br i1 %.not.not, label %63, label %.critedge + %59 = load i64, ptr %0, align 8, !tbaa !28 + %.not.not = icmp slt i64 %59, 0 + br i1 %.not.not, label %62, label %.critedge -61: ; preds = %14 - %62 = landingpad { ptr, i32 } +60: ; preds = %14 + %61 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #28 br label %146 -63: ; preds = %59 - %64 = load ptr, ptr %17, align 8, !tbaa !32 - %65 = load ptr, ptr %19, align 8, !tbaa !30 - invoke void @_ZNSt12_Destroy_auxILb0EE9__destroyIPN5boost6spirit7classic9tree_nodeINS4_13node_val_dataINS2_4wave8cpplexer12lex_iteratorINS8_9lex_tokenINS7_4util13file_positionINSB_11flex_stringIcSt11char_traitsIcESaIcENSB_9CowStringINSB_22AllocatorStringStorageIcSG_EEPcEEEEEEEEEENS4_5nil_tEEEEEEEvT_SU_(ptr noundef %64, ptr noundef %65) +62: ; preds = %_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit + %63 = load ptr, ptr %17, align 8, !tbaa !32 + %64 = load ptr, ptr %19, align 8, !tbaa !30 + invoke void @_ZNSt12_Destroy_auxILb0EE9__destroyIPN5boost6spirit7classic9tree_nodeINS4_13node_val_dataINS2_4wave8cpplexer12lex_iteratorINS8_9lex_tokenINS7_4util13file_positionINSB_11flex_stringIcSt11char_traitsIcESaIcENSB_9CowStringINSB_22AllocatorStringStorageIcSG_EEPcEEEEEEEEEENS4_5nil_tEEEEEEEvT_SU_(ptr noundef %63, ptr noundef %64) to label %_ZSt8_DestroyIPN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESQ_EvT_SS_RSaIT0_E.exit.i.i21 unwind label %71 -_ZSt8_DestroyIPN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESQ_EvT_SS_RSaIT0_E.exit.i.i21: ; preds = %63 - %.not.i.i.i.i22 = icmp eq ptr %64, null +_ZSt8_DestroyIPN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESQ_EvT_SS_RSaIT0_E.exit.i.i21: ; preds = %62 + %65 = load ptr, ptr %17, align 8, !tbaa !32 + %.not.i.i.i.i22 = icmp eq ptr %65, null br i1 %.not.i.i.i.i22, label %_ZN5boost6spirit7classic10tree_matchINS_4wave8cpplexer12lex_iteratorINS4_9lex_tokenINS3_4util13file_positionINS7_11flex_stringIcSt11char_traitsIcESaIcENS7_9CowStringINS7_22AllocatorStringStorageIcSC_EEPcEEEEEEEEEENS1_21node_val_data_factoryINS1_5nil_tEEESN_ED2Ev.exit, label %66 66: ; preds = %_ZSt8_DestroyIPN5boost6spirit7classic9tree_nodeINS2_13node_val_dataINS0_4wave8cpplexer12lex_iteratorINS6_9lex_tokenINS5_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEENS2_5nil_tEEEEESQ_EvT_SS_RSaIT0_E.exit.i.i21 %67 = load ptr, ptr %20, align 8, !tbaa !42 %68 = ptrtoint ptr %67 to i64 - %69 = ptrtoint ptr %64 to i64 + %69 = ptrtoint ptr %65 to i64 %70 = sub i64 %68, %69 - call void @_ZdlPvm(ptr noundef nonnull %64, i64 noundef %70) #32 + call void @_ZdlPvm(ptr noundef nonnull %65, i64 noundef %70) #32 br label %_ZN5boost6spirit7classic10tree_matchINS_4wave8cpplexer12lex_iteratorINS4_9lex_tokenINS3_4util13file_positionINS7_11flex_stringIcSt11char_traitsIcESaIcENS7_9CowStringINS7_22AllocatorStringStorageIcSC_EEPcEEEEEEEEEENS1_21node_val_data_factoryINS1_5nil_tEEESN_ED2Ev.exit -71: ; preds = %63 +71: ; preds = %62 %72 = landingpad { ptr, i32 } catch ptr null %73 = extractvalue { ptr, i32 } %72, 0 @@ -8625,7 +8622,7 @@ _ZN5boost6spirit7classic10tree_matchINS_4wave8cpplexer12lex_iteratorINS4_9lex_to %75 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5boost6spirit10multi_passISt4pairINS_4wave8cpplexer4impl25lex_iterator_functor_shimINS4_9lex_tokenINS3_4util13file_positionINS8_11flex_stringIcSt11char_traitsIcESaIcENS8_9CowStringINS8_22AllocatorStringStorageIcSD_EEPcEEEEEEEEEEPNS4_19lex_input_interfaceISL_EEENS0_17iterator_policies14default_policyINSR_11ref_countedENSR_8no_checkENSR_19split_functor_inputENSR_15split_std_dequeEEEEaSERKSY_(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull align 8 dereferenceable(16) %4) to label %.critedge unwind label %144 -.critedge: ; preds = %_ZN5boost6spirit7classic10tree_matchINS_4wave8cpplexer12lex_iteratorINS4_9lex_tokenINS3_4util13file_positionINS7_11flex_stringIcSt11char_traitsIcESaIcENS7_9CowStringINS7_22AllocatorStringStorageIcSC_EEPcEEEEEEEEEENS1_21node_val_data_factoryINS1_5nil_tEEESN_ED2Ev.exit, %59 +.critedge: ; preds = %_ZN5boost6spirit7classic10tree_matchINS_4wave8cpplexer12lex_iteratorINS4_9lex_tokenINS3_4util13file_positionINS7_11flex_stringIcSt11char_traitsIcESaIcENS7_9CowStringINS7_22AllocatorStringStorageIcSC_EEPcEEEEEEEEEENS1_21node_val_data_factoryINS1_5nil_tEEESN_ED2Ev.exit, %_ZN5boost4wave8cpplexer9lex_tokenINS0_4util13file_positionINS3_11flex_stringIcSt11char_traitsIcESaIcENS3_9CowStringINS3_22AllocatorStringStorageIcS8_EEPcEEEEEEED2Ev.exit %76 = load ptr, ptr %4, align 8, !tbaa !17 %.not.i.i.i = icmp eq ptr %76, null br i1 %.not.i.i.i, label %_ZN5boost6spirit10multi_passISt4pairINS_4wave8cpplexer4impl25lex_iterator_functor_shimINS4_9lex_tokenINS3_4util13file_positionINS8_11flex_stringIcSt11char_traitsIcESaIcENS8_9CowStringINS8_22AllocatorStringStorageIcSD_EEPcEEEEEEEEEEPNS4_19lex_input_interfaceISL_EEENS0_17iterator_policies14default_policyINSR_11ref_countedENSR_8no_checkENSR_19split_functor_inputENSR_15split_std_dequeEEEED2Ev.exit, label %_ZN5boost6spirit17iterator_policies17multi_pass_uniqueISt4pairINS_4wave8cpplexer4impl25lex_iterator_functor_shimINS5_9lex_tokenINS4_4util13file_positionINS9_11flex_stringIcSt11char_traitsIcESaIcENS9_9CowStringINS9_22AllocatorStringStorageIcSE_EEPcEEEEEEEEEEPNS5_19lex_input_interfaceISM_EEENS1_11ref_counted6uniqueENS1_8no_check6uniqueENS1_19split_functor_input6uniqueISR_Lb1EEENS1_15split_std_deque6uniqueISM_EELb1ELb1ELb1EE7releaseINS0_10multi_passISR_NS1_14default_policyISS_SU_SW_SZ_EEEEEEbRT_.exit.i @@ -8807,8 +8804,8 @@ _ZN5boost6spirit7classic10tree_matchINS_4wave8cpplexer12lex_iteratorINS4_9lex_to cleanup br label %146 -146: ; preds = %144, %61 - %.pn16 = phi { ptr, i32 } [ %145, %144 ], [ %62, %61 ] +146: ; preds = %144, %60 + %.pn16 = phi { ptr, i32 } [ %145, %144 ], [ %61, %60 ] call void @_ZN5boost6spirit10multi_passISt4pairINS_4wave8cpplexer4impl25lex_iterator_functor_shimINS4_9lex_tokenINS3_4util13file_positionINS8_11flex_stringIcSt11char_traitsIcESaIcENS8_9CowStringINS8_22AllocatorStringStorageIcSD_EEPcEEEEEEEEEEPNS4_19lex_input_interfaceISL_EEENS0_17iterator_policies14default_policyINSR_11ref_countedENSR_8no_checkENSR_19split_functor_inputENSR_15split_std_dequeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #28 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #28 resume { ptr, i32 } %.pn16 @@ -13151,6 +13148,7 @@ _ZSt10_ConstructIN5boost4wave8cpplexer9lex_tokenINS1_4util13file_positionINS4_11 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull align 8 dereferenceable(16) %30, i64 16, i1 false) %40 = getelementptr inbounds nuw i8, ptr %.pre, i64 48 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %40, i8 0, i64 24, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %32, i8 0, i64 24, i1 false) %41 = load ptr, ptr %34, align 8, !tbaa !30 %42 = getelementptr inbounds nuw i8, ptr %41, i64 72 store ptr %42, ptr %34, align 8, !tbaa !30 diff --git a/bench/boost/optimized/text_file_backend.ll b/bench/boost/optimized/text_file_backend.ll index 91f4cda22db..21e09f00f5c 100644 --- a/bench/boost/optimized/text_file_backend.ll +++ b/bench/boost/optimized/text_file_backend.ll @@ -19263,6 +19263,7 @@ _ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit76: ; preds = %400, %406 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !513 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9), !noalias !513 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10), !noalias !510 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %438 = ptrtoint ptr %3 to i64 %439 = ptrtoint ptr %2 to i64 %440 = sub i64 %438, %439 @@ -19384,6 +19385,7 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11ch store ptr %.sroa.6181.0, ptr %67, align 8, !tbaa !17 store ptr %.sroa.8184.0, ptr %333, align 8, !tbaa !17 store ptr %.sroa.10187.0, ptr %58, align 8, !tbaa !17 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %492 = icmp sgt i64 %365, 0 br i1 %492, label %.lr.ph.i.i.i104.preheader, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt15_Deque_iteratorIcRcPcEET0_T_SG_SF_.exit @@ -28642,6 +28644,7 @@ _ZStmiRKSt15_Deque_iteratorIcRcPcEl.exit72: ; preds = %400, %406 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !856 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9), !noalias !856 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10), !noalias !853 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %438 = ptrtoint ptr %3 to i64 %439 = ptrtoint ptr %2 to i64 %440 = sub i64 %438, %439 @@ -28763,6 +28766,7 @@ _ZSt7advanceIPKclEvRT_T0_.exit97: ; preds = %_ZStmiRKSt15_Deque_ store ptr %.sroa.6178.0, ptr %67, align 8, !tbaa !17 store ptr %.sroa.8181.0, ptr %333, align 8, !tbaa !17 store ptr %.sroa.10184.0, ptr %58, align 8, !tbaa !17 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %492 = icmp sgt i64 %365, 0 br i1 %492, label %.lr.ph.i.i.i100.preheader, label %_ZSt4copyIPKcSt15_Deque_iteratorIcRcPcEET0_T_S7_S6_.exit 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_gear_joint.cpp.ll b/bench/box2d/optimized/b2_gear_joint.cpp.ll index cebdd387107..67ea12edf6c 100644 --- a/bench/box2d/optimized/b2_gear_joint.cpp.ll +++ b/bench/box2d/optimized/b2_gear_joint.cpp.ll @@ -59,6 +59,7 @@ entry: %m_bodyA = getelementptr inbounds nuw i8, ptr %this, i64 96 store ptr %5, ptr %m_bodyA, align 8 %cmp = icmp eq i32 %2, 1 + %m_localAxisC25 = getelementptr inbounds nuw i8, ptr %this, i64 200 br i1 %cmp, label %if.then, label %invoke.cont52 if.then: ; preds = %entry @@ -79,7 +80,6 @@ if.then: ; preds = %entry %11 = load float, ptr %m_referenceAngle, align 4 %m_referenceAngleA = getelementptr inbounds nuw i8, ptr %this, i64 216 store float %11, ptr %m_referenceAngleA, align 8 - %m_localAxisC25 = getelementptr inbounds nuw i8, ptr %this, i64 200 store float 0.000000e+00, ptr %m_localAxisC25, align 8 %y.i = getelementptr inbounds nuw i8, ptr %this, i64 204 store float 0.000000e+00, ptr %y.i, align 4 @@ -90,19 +90,19 @@ if.then: ; preds = %entry invoke.cont52: ; preds = %entry %xfC.sroa.4.0.m_xf15.sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 24 %xfC.sroa.4.0.copyload = load float, ptr %xfC.sroa.4.0.m_xf15.sroa_idx, align 4 - %m_xf15 = getelementptr inbounds nuw i8, ptr %4, i64 12 %xfC.sroa.3.0.m_xf15.sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 20 %xfC.sroa.3.0.copyload = load float, ptr %xfC.sroa.3.0.m_xf15.sroa_idx, align 4 %xfC.sroa.2.0.m_xf15.sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 16 %xfC.sroa.2.0.copyload = load float, ptr %xfC.sroa.2.0.m_xf15.sroa_idx, align 4 + %m_xf15 = getelementptr inbounds nuw i8, ptr %4, i64 12 %xfC.sroa.0.0.copyload = load float, ptr %m_xf15, align 4 %xfA.sroa.4.0.m_xf.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 %xfA.sroa.4.0.copyload = load float, ptr %xfA.sroa.4.0.m_xf.sroa_idx, align 4 - %m_xf = getelementptr inbounds nuw i8, ptr %5, i64 12 %xfA.sroa.3.0.m_xf.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 20 %xfA.sroa.3.0.copyload = load float, ptr %xfA.sroa.3.0.m_xf.sroa_idx, align 4 %xfA.sroa.2.0.m_xf.sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 16 %xfA.sroa.2.0.copyload = load float, ptr %xfA.sroa.2.0.m_xf.sroa_idx, align 4 + %m_xf = getelementptr inbounds nuw i8, ptr %5, i64 12 %xfA.sroa.0.0.copyload = load float, ptr %m_xf, align 4 %12 = load ptr, ptr %joint1, align 8 %m_localAnchorA30 = getelementptr inbounds nuw i8, ptr %12, i64 128 @@ -118,9 +118,8 @@ invoke.cont52: ; preds = %entry %m_referenceAngleA35 = getelementptr inbounds nuw i8, ptr %this, i64 216 store float %15, ptr %m_referenceAngleA35, align 8 %m_localXAxisA = getelementptr inbounds nuw i8, ptr %12, i64 144 - %m_localAxisC36 = getelementptr inbounds nuw i8, ptr %this, i64 200 %16 = load i64, ptr %m_localXAxisA, align 8 - store i64 %16, ptr %m_localAxisC36, align 8 + store i64 %16, ptr %m_localAxisC25, align 8 %17 = trunc i64 %13 to i32 %18 = bitcast i32 %17 to float %19 = lshr i64 %13, 32 @@ -170,6 +169,7 @@ if.end: ; preds = %invoke.cont52, %if. %m_bodyB = getelementptr inbounds nuw i8, ptr %this, i64 104 store ptr %40, ptr %m_bodyB, align 8 %cmp75 = icmp eq i32 %3, 1 + %m_localAxisD84 = getelementptr inbounds nuw i8, ptr %this, i64 208 br i1 %cmp75, label %if.then76, label %invoke.cont118 if.then76: ; preds = %if.end @@ -190,7 +190,6 @@ if.then76: ; preds = %if.end %46 = load float, ptr %m_referenceAngle83, align 4 %m_referenceAngleB = getelementptr inbounds nuw i8, ptr %this, i64 220 store float %46, ptr %m_referenceAngleB, align 4 - %m_localAxisD84 = getelementptr inbounds nuw i8, ptr %this, i64 208 store float 0.000000e+00, ptr %m_localAxisD84, align 8 %y.i42 = getelementptr inbounds nuw i8, ptr %this, i64 212 store float 0.000000e+00, ptr %y.i42, align 4 @@ -201,19 +200,19 @@ if.then76: ; preds = %if.end invoke.cont118: ; preds = %if.end %xfD.sroa.4.0.m_xf70.sroa_idx = getelementptr inbounds nuw i8, ptr %39, i64 24 %xfD.sroa.4.0.copyload = load float, ptr %xfD.sroa.4.0.m_xf70.sroa_idx, align 4 - %m_xf70 = getelementptr inbounds nuw i8, ptr %39, i64 12 %xfD.sroa.3.0.m_xf70.sroa_idx = getelementptr inbounds nuw i8, ptr %39, i64 20 %xfD.sroa.3.0.copyload = load float, ptr %xfD.sroa.3.0.m_xf70.sroa_idx, align 4 %xfD.sroa.2.0.m_xf70.sroa_idx = getelementptr inbounds nuw i8, ptr %39, i64 16 %xfD.sroa.2.0.copyload = load float, ptr %xfD.sroa.2.0.m_xf70.sroa_idx, align 4 + %m_xf70 = getelementptr inbounds nuw i8, ptr %39, i64 12 %xfD.sroa.0.0.copyload = load float, ptr %m_xf70, align 4 %xfB.sroa.4.0.m_xf65.sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 24 %xfB.sroa.4.0.copyload = load float, ptr %xfB.sroa.4.0.m_xf65.sroa_idx, align 4 - %m_xf65 = getelementptr inbounds nuw i8, ptr %40, i64 12 %xfB.sroa.3.0.m_xf65.sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 20 %xfB.sroa.3.0.copyload = load float, ptr %xfB.sroa.3.0.m_xf65.sroa_idx, align 4 %xfB.sroa.2.0.m_xf65.sroa_idx = getelementptr inbounds nuw i8, ptr %40, i64 16 %xfB.sroa.2.0.copyload = load float, ptr %xfB.sroa.2.0.m_xf65.sroa_idx, align 4 + %m_xf65 = getelementptr inbounds nuw i8, ptr %40, i64 12 %xfB.sroa.0.0.copyload = load float, ptr %m_xf65, align 4 %47 = load ptr, ptr %joint2, align 8 %m_localAnchorA92 = getelementptr inbounds nuw i8, ptr %47, i64 128 @@ -229,9 +228,8 @@ invoke.cont118: ; preds = %if.end %m_referenceAngleB97 = getelementptr inbounds nuw i8, ptr %this, i64 220 store float %50, ptr %m_referenceAngleB97, align 4 %m_localXAxisA98 = getelementptr inbounds nuw i8, ptr %47, i64 144 - %m_localAxisD99 = getelementptr inbounds nuw i8, ptr %this, i64 208 %51 = load i64, ptr %m_localXAxisA98, align 8 - store i64 %51, ptr %m_localAxisD99, align 8 + store i64 %51, ptr %m_localAxisD84, align 8 %52 = trunc i64 %48 to i32 %53 = bitcast i32 %52 to float %54 = lshr i64 %48, 32 diff --git a/bench/bullet3/optimized/btCollisionWorld.ll b/bench/bullet3/optimized/btCollisionWorld.ll index a3813489cfb..d01332ab4ff 100644 --- a/bench/bullet3/optimized/btCollisionWorld.ll +++ b/bench/bullet3/optimized/btCollisionWorld.ll @@ -5182,8 +5182,10 @@ for.body115: ; preds = %for.body115.lr.ph, %arrayidx.i196 = getelementptr inbounds nuw %struct.btFace, ptr %131, i64 %indvars.iv460 %m_size.i197 = getelementptr inbounds nuw i8, ptr %arrayidx.i196, i64 4 %132 = load i32, ptr %m_size.i197, align 4 + %tobool122.not = icmp ne i32 %132, 0 %cmp134435 = icmp sgt i32 %132, 0 - br i1 %cmp134435, label %for.body135.preheader, label %if.end159 + %or.cond = and i1 %tobool122.not, %cmp134435 + br i1 %or.cond, label %for.body135.preheader, label %if.end159 for.body135.preheader: ; preds = %for.body115 %m_data.i201 = getelementptr inbounds nuw i8, ptr %arrayidx.i196, i64 16 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/bigint.c.ll b/bench/c3c/optimized/bigint.c.ll index 77d55a9e39e..a7ab55f01cf 100644 --- a/bench/c3c/optimized/bigint.c.ll +++ b/bench/c3c/optimized/bigint.c.ll @@ -2603,7 +2603,7 @@ define dso_local zeroext i1 @int_fits(ptr nocapture noundef readonly byval(%stru i32 5, label %4 i32 4, label %5 i32 3, label %6 - i32 12, label %36 + i32 12, label %35 i32 11, label %7 i32 10, label %8 i32 9, label %9 @@ -2623,16 +2623,16 @@ define dso_local zeroext i1 @int_fits(ptr nocapture noundef readonly byval(%stru br label %12 7: ; preds = %2 - br label %36 + br label %35 8: ; preds = %2 - br label %36 + br label %35 9: ; preds = %2 - br label %36 + br label %35 10: ; preds = %2 - br label %36 + br label %35 11: ; preds = %2 tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.int_fits, ptr noundef nonnull @.str.2, i32 noundef 686) #20 @@ -2648,23 +2648,23 @@ define dso_local zeroext i1 @int_fits(ptr nocapture noundef readonly byval(%stru %15 = add i32 %14, -3 %16 = icmp ult i32 %15, 5 %17 = load i64, ptr %0, align 8 - br i1 %16, label %18, label %29 + %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br i1 %16, label %19, label %29 -18: ; preds = %12 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %20 = load i64, ptr %19, align 8 +19: ; preds = %12 + %20 = load i64, ptr %18, align 8 %.not.i = icmp sgt i64 %17, -1 %21 = icmp ugt i64 %17, %.sroa.038.0.ph %or.cond = or i1 %.not.i, %21 br i1 %or.cond, label %select.unfold62, label %22 -22: ; preds = %18 +22: ; preds = %19 %23 = icmp samesign ult i64 %17, %.sroa.038.0.ph %or.cond.not = icmp ult i64 %20, %.sroa.6.0.ph %or.cond80 = select i1 %23, i1 true, i1 %or.cond.not br i1 %or.cond80, label %i128_scomp.exit, label %i128_scomp.exit47.thread -select.unfold62: ; preds = %18 +select.unfold62: ; preds = %19 br i1 %.not.i, label %24, label %i128_scomp.exit47.thread 24: ; preds = %select.unfold62 @@ -2685,51 +2685,50 @@ i128_scomp.exit47.thread: ; preds = %22, %select.unfold6 br i1 %30, label %i128_scomp.exit, label %31 31: ; preds = %29 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %33 = load i64, ptr %32, align 8 - %34 = icmp samesign ult i64 %17, %.sroa.031.0.ph - %35 = icmp ule i64 %33, %.sroa.14.0.ph - %spec.select = select i1 %34, i1 true, i1 %35 + %32 = load i64, ptr %18, align 8 + %33 = icmp samesign ult i64 %17, %.sroa.031.0.ph + %34 = icmp ule i64 %32, %.sroa.14.0.ph + %spec.select = select i1 %33, i1 true, i1 %34 br label %i128_scomp.exit -36: ; preds = %2, %7, %8, %9, %10 +35: ; preds = %2, %7, %8, %9, %10 %.sroa.031.0 = phi i64 [ 0, %10 ], [ 0, %9 ], [ 0, %8 ], [ 0, %7 ], [ -1, %2 ] %.sroa.14.0 = phi i64 [ 255, %10 ], [ 65535, %9 ], [ 4294967295, %8 ], [ -1, %7 ], [ -1, %2 ] - %37 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %38 = load i32, ptr %37, align 8 - %39 = add i32 %38, -3 - %40 = icmp ult i32 %39, 5 - %41 = load i64, ptr %0, align 8 - br i1 %40, label %42, label %50 - -42: ; preds = %36 - %43 = icmp slt i64 %41, 0 - %44 = icmp ugt i64 %41, %.sroa.031.0 - %or.cond82 = or i1 %43, %44 - br i1 %or.cond82, label %i128_scomp.exit, label %45 - -45: ; preds = %42 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %47 = load i64, ptr %46, align 8 - %48 = icmp ult i64 %41, %.sroa.031.0 - %49 = icmp ule i64 %47, %.sroa.14.0 - %or.cond74.not = select i1 %48, i1 true, i1 %49 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %37 = load i32, ptr %36, align 8 + %38 = add i32 %37, -3 + %39 = icmp ult i32 %38, 5 + %40 = load i64, ptr %0, align 8 + br i1 %39, label %41, label %49 + +41: ; preds = %35 + %42 = icmp slt i64 %40, 0 + %43 = icmp ugt i64 %40, %.sroa.031.0 + %or.cond84 = or i1 %42, %43 + br i1 %or.cond84, label %i128_scomp.exit, label %44 + +44: ; preds = %41 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %46 = load i64, ptr %45, align 8 + %47 = icmp ult i64 %40, %.sroa.031.0 + %48 = icmp ule i64 %46, %.sroa.14.0 + %or.cond74.not = select i1 %47, i1 true, i1 %48 br label %i128_scomp.exit -50: ; preds = %36 - %51 = icmp ugt i64 %41, %.sroa.031.0 - br i1 %51, label %i128_scomp.exit, label %52 +49: ; preds = %35 + %50 = icmp ugt i64 %40, %.sroa.031.0 + br i1 %50, label %i128_scomp.exit, label %51 -52: ; preds = %50 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8 - %55 = icmp ult i64 %41, %.sroa.031.0 - %56 = icmp ule i64 %54, %.sroa.14.0 - %spec.select84 = select i1 %55, i1 true, i1 %56 +51: ; preds = %49 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %53 = load i64, ptr %52, align 8 + %54 = icmp ult i64 %40, %.sroa.031.0 + %55 = icmp ule i64 %53, %.sroa.14.0 + %spec.select83 = select i1 %54, i1 true, i1 %55 br label %i128_scomp.exit -i128_scomp.exit: ; preds = %52, %31, %50, %29, %45, %26, %i128_scomp.exit47.thread, %24, %22, %42 - %.0 = phi i1 [ false, %42 ], [ false, %22 ], [ true, %i128_scomp.exit47.thread ], [ false, %24 ], [ false, %26 ], [ %or.cond74.not, %45 ], [ false, %29 ], [ false, %50 ], [ %spec.select, %31 ], [ %spec.select84, %52 ] +i128_scomp.exit: ; preds = %51, %31, %49, %29, %44, %26, %i128_scomp.exit47.thread, %24, %22, %41 + %.0 = phi i1 [ false, %41 ], [ false, %22 ], [ true, %i128_scomp.exit47.thread ], [ false, %24 ], [ false, %26 ], [ %or.cond74.not, %44 ], [ false, %29 ], [ false, %49 ], [ %spec.select, %31 ], [ %spec.select83, %51 ] ret i1 %.0 } diff --git a/bench/casadi/optimized/rank1.cpp.ll b/bench/casadi/optimized/rank1.cpp.ll index a4bbdfd4885..c798fb0f1ae 100644 --- a/bench/casadi/optimized/rank1.cpp.ll +++ b/bench/casadi/optimized/rank1.cpp.ll @@ -1604,6 +1604,7 @@ _ZNK6casadi6MXNode3nnzEx.exit38: ; preds = %.noexc36 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #18 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #18 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #18 + %.pre = load ptr, ptr %2, align 8 br label %48 41: ; preds = %.noexc36, %_ZNK6casadi6MXNode3nnzEx.exit, %.noexc, %17, %_ZNK6casadi6MXNode3nnzEx.exit38 @@ -1628,21 +1629,21 @@ _ZNK6casadi6MXNode3nnzEx.exit38: ; preds = %.noexc36 br label %111 48: ; preds = %40, %4 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %50 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %51 = load ptr, ptr %50, align 8 - %52 = load ptr, ptr %49, align 8 - %.not.i.i.i.not = icmp eq ptr %51, %52 - br i1 %.not.i.i.i.not, label %53, label %_ZNK6casadi6MXNode3depEx.exit - -53: ; preds = %48 + %49 = phi ptr [ %.pre, %40 ], [ %13, %4 ] + %50 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %52 = load ptr, ptr %51, align 8 + %53 = load ptr, ptr %50, align 8 + %.not.i.i.i.not = icmp eq ptr %52, %53 + br i1 %.not.i.i.i.not, label %54, label %_ZNK6casadi6MXNode3depEx.exit + +54: ; preds = %48 call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.4, i64 noundef 0, i64 noundef 0) #19 unreachable _ZNK6casadi6MXNode3depEx.exit: ; preds = %48 - %54 = load ptr, ptr %2, align 8 - %55 = load i64, ptr %54, align 8 - %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6casadi2MX8sparsityEv(ptr noundef nonnull align 8 dereferenceable(8) %52) + %55 = load i64, ptr %49, align 8 + %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6casadi2MX8sparsityEv(ptr noundef nonnull align 8 dereferenceable(8) %53) %57 = call noundef i64 @_ZNK6casadi8Sparsity3nnzEv(ptr noundef nonnull align 8 dereferenceable(8) %56) call void @_ZNK6casadi13CodeGenerator4workB5cxx11Exx(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(3097) %1, i64 noundef %55, i64 noundef %57) %58 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -1656,8 +1657,8 @@ _ZNK6casadi6MXNode3depEx.exit: ; preds = %48 %63 = load ptr, ptr %2, align 8 %64 = getelementptr inbounds nuw i8, ptr %63, i64 16 %65 = load i64, ptr %64, align 8 - %66 = load ptr, ptr %50, align 8 - %67 = load ptr, ptr %49, align 8 + %66 = load ptr, ptr %51, align 8 + %67 = load ptr, ptr %50, align 8 %68 = ptrtoint ptr %66 to i64 %69 = ptrtoint ptr %67 to i64 %70 = sub i64 %68, %69 @@ -1689,8 +1690,8 @@ _ZNK6casadi13GenericMatrixINS_2MXEE3nnzEv.exit: ; preds = %.noexc42 %78 = load ptr, ptr %2, align 8 %79 = getelementptr inbounds nuw i8, ptr %78, i64 24 %80 = load i64, ptr %79, align 8 - %81 = load ptr, ptr %50, align 8 - %82 = load ptr, ptr %49, align 8 + %81 = load ptr, ptr %51, align 8 + %82 = load ptr, ptr %50, align 8 %83 = ptrtoint ptr %81 to i64 %84 = ptrtoint ptr %82 to i64 %85 = sub i64 %83, %84 diff --git a/bench/casadi/optimized/symbolic_qr.cpp.ll b/bench/casadi/optimized/symbolic_qr.cpp.ll index d951e262c9b..9e7773bd37b 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 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/cmake/optimized/cmQtAutoRcc.cxx.ll b/bench/cmake/optimized/cmQtAutoRcc.cxx.ll index 080860c6aa7..00d4fa5cb8b 100644 --- a/bench/cmake/optimized/cmQtAutoRcc.cxx.ll +++ b/bench/cmake/optimized/cmQtAutoRcc.cxx.ll @@ -3448,6 +3448,7 @@ _ZN12_GLOBAL__N_112cmQtAutoRccT11GenerateRccEv.exit.thread: ; preds = %660 to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit.i unwind label %732 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_.exit.i: ; preds = %670 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %671, i64 0) ] %.pre68.i = load ptr, ptr %42, align 8 %.pre67.i = load ptr, ptr %135, align 8 %.pre65.i = load ptr, ptr %133, align 8 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/coreutils-rs/optimized/2btly3o1576s0dhm.ll b/bench/coreutils-rs/optimized/2btly3o1576s0dhm.ll index 0050fdc191b..d6a13c49ee6 100644 --- a/bench/coreutils-rs/optimized/2btly3o1576s0dhm.ll +++ b/bench/coreutils-rs/optimized/2btly3o1576s0dhm.ll @@ -544,7 +544,7 @@ define hidden { ptr, i64 } @"_ZN86_$LT$clap_builder..builder..str..Str$u20$as$u2 } ; Function Attrs: nonlazybind uwtable -define hidden void @"_ZN94_$LT$uu_cut..searcher..Searcher$LT$M$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6e23b887daca6a2bE"(ptr noalias nocapture noundef writeonly sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef align 8 dereferenceable(32) %1) unnamed_addr #2 personality ptr @rust_eh_personality { +define hidden void @"_ZN94_$LT$uu_cut..searcher..Searcher$LT$M$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6e23b887daca6a2bE"(ptr noalias nocapture noundef writeonly sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(32) %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = getelementptr inbounds nuw i8, ptr %1, i64 16 %4 = load i64, ptr %3, align 8, !noundef !13 %5 = getelementptr inbounds nuw i8, ptr %1, i64 24 @@ -596,13 +596,14 @@ _ZN6memchr4arch7generic6memchr21search_slice_with_raw17hf16fe1276752952fE.llvm.1 .loopexit: ; preds = %25, %.lr.ph.i, %_ZN6memchr4arch7generic6memchr21search_slice_with_raw17hf16fe1276752952fE.llvm.18437011518490787362.exit.i %.sroa.6.0.ph = phi i64 [ %.016.i, %_ZN6memchr4arch7generic6memchr21search_slice_with_raw17hf16fe1276752952fE.llvm.18437011518490787362.exit.i ], [ %11, %25 ], [ %.017.i, %.lr.ph.i ] - %28 = add i64 %20, %6 - %29 = add i64 %.sroa.6.0.ph, %6 - store i64 %29, ptr %5, align 8 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %28, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %28 = load i64, ptr %5, align 8, !noundef !13 + %29 = add i64 %28, %20 + %30 = add i64 %28, %.sroa.6.0.ph + store i64 %30, ptr %5, align 8 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %29, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %30, ptr %32, align 8 br label %"_ZN79_$LT$uu_cut..matcher..WhitespaceMatcher$u20$as$u20$uu_cut..matcher..Matcher$GT$10next_match17h70b02bb3eb0d28cbE.exit" "_ZN79_$LT$uu_cut..matcher..WhitespaceMatcher$u20$as$u20$uu_cut..matcher..Matcher$GT$10next_match17h70b02bb3eb0d28cbE.exit": ; preds = %8, %.loopexit @@ -612,7 +613,7 @@ _ZN6memchr4arch7generic6memchr21search_slice_with_raw17hf16fe1276752952fE.llvm.1 } ; Function Attrs: nonlazybind uwtable -define hidden void @"_ZN94_$LT$uu_cut..searcher..Searcher$LT$M$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92485434d55b2249E"(ptr noalias nocapture noundef writeonly sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef align 8 dereferenceable(32) %1) unnamed_addr #2 { +define hidden void @"_ZN94_$LT$uu_cut..searcher..Searcher$LT$M$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92485434d55b2249E"(ptr noalias nocapture noundef writeonly sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(32) %1) unnamed_addr #2 { %3 = alloca { i64, [2 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) %4 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -631,7 +632,7 @@ define hidden void @"_ZN94_$LT$uu_cut..searcher..Searcher$LT$M$GT$$u20$as$u20$co call void @"_ZN74_$LT$uu_cut..matcher..ExactMatcher$u20$as$u20$uu_cut..matcher..Matcher$GT$10next_match17hd452d9749b1037e0E"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %12, ptr noalias noundef nonnull readonly align 1 %14, i64 noundef %13) %15 = load i64, ptr %3, align 8, !range !99, !noundef !13 %trunc = trunc nuw i64 %15 to i1 - br i1 %trunc, label %17, label %26 + br i1 %trunc, label %17, label %27 16: ; preds = %2 tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h6f35008186d11abeE(i64 noundef %7, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.61fab05b91fe711afd0fa8b31be1b8b0.11.llvm.4803845676742659809) #17 @@ -642,16 +643,17 @@ define hidden void @"_ZN94_$LT$uu_cut..searcher..Searcher$LT$M$GT$$u20$as$u20$co %19 = load i64, ptr %18, align 8, !noundef !13 %20 = getelementptr inbounds nuw i8, ptr %3, i64 16 %21 = load i64, ptr %20, align 8, !noundef !13 - %22 = add i64 %19, %7 - %23 = add i64 %21, %7 - store i64 %23, ptr %6, align 8 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %22, ptr %24, align 8 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %22 = load i64, ptr %6, align 8, !noundef !13 + %23 = add i64 %22, %19 + %24 = add i64 %22, %21 + store i64 %24, ptr %6, align 8 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %23, ptr %25, align 8 - br label %26 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %24, ptr %26, align 8 + br label %27 -26: ; preds = %9, %17 +27: ; preds = %9, %17 %storemerge = phi i64 [ 1, %17 ], [ 0, %9 ] store i64 %storemerge, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) diff --git a/bench/cpython/optimized/_cursesmodule.ll b/bench/cpython/optimized/_cursesmodule.ll index d9e88002414..2e68ba7d1fd 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,9 @@ 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) ] %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 +6948,9 @@ 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) ] %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 +7010,9 @@ 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) ] %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 +7029,9 @@ 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) ] %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 +11983,7 @@ 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) ] %.b.i = load i1, ptr @initialised, align 4 br i1 %.b.i, label %if.end.i, label %if.then.i @@ -13556,6 +13569,13 @@ 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) ] %.b.i = load i1, ptr @initialised_setupterm, align 4 br i1 %.b.i, label %if.end.i, label %if.then.i @@ -14343,20 +14363,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 +14384,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-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/cvc5/optimized/context_mm.cpp.ll b/bench/cvc5/optimized/context_mm.cpp.ll index d45c45529a3..aed1f493280 100644 --- a/bench/cvc5/optimized/context_mm.cpp.ll +++ b/bench/cvc5/optimized/context_mm.cpp.ll @@ -42,7 +42,7 @@ declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceabl declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #2 ; Function Attrs: mustprogress uwtable -define void @_ZN4cvc57context20ContextMemoryManager8newChunkEv(ptr nocapture noundef nonnull align 8 dereferenceable(200) %this) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN4cvc57context20ContextMemoryManager8newChunkEv(ptr noundef nonnull align 8 dereferenceable(200) %this) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %d_indexChunkList = getelementptr inbounds nuw i8, ptr %this, i64 120 %0 = load i32, ptr %d_indexChunkList, align 8 @@ -134,11 +134,11 @@ if.then5: ; preds = %_ZNSt6vectorIPcSaIS if.else: ; preds = %entry %_M_first3.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 80 %10 = load ptr, ptr %_M_first3.i.i.i, align 8, !noalias !4 + %_M_node5.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 96 %cmp.i.i3 = icmp eq ptr %1, %10 br i1 %cmp.i.i3, label %if.then.i.i5, label %_ZNSt5dequeIPcSaIS0_EE4backEv.exit if.then.i.i5: ; preds = %if.else - %_M_node5.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 96 %11 = load ptr, ptr %_M_node5.i.i.i, align 8, !noalias !4 %add.ptr.i.i6 = getelementptr inbounds i8, ptr %11, i64 -8 %12 = load ptr, ptr %add.ptr.i.i6, align 8 @@ -225,10 +225,9 @@ if.then.i13: ; preds = %_ZNSt6vectorIPcSaIS if.else.i15: ; preds = %_ZNSt6vectorIPcSaIS0_EE9push_backERKS0_.exit tail call void @_ZdlPv(ptr noundef %22) #22 - %_M_node.i.i = getelementptr inbounds nuw i8, ptr %this, i64 96 - %23 = load ptr, ptr %_M_node.i.i, align 8 + %23 = load ptr, ptr %_M_node5.i.i.i, align 8 %add.ptr.i.i16 = getelementptr inbounds i8, ptr %23, i64 -8 - store ptr %add.ptr.i.i16, ptr %_M_node.i.i, align 8 + store ptr %add.ptr.i.i16, ptr %_M_node5.i.i.i, align 8 %24 = load ptr, ptr %add.ptr.i.i16, align 8 store ptr %24, ptr %_M_first3.i.i.i, align 8 %add.ptr.i.i.i17 = getelementptr inbounds nuw i8, ptr %24, i64 512 @@ -466,7 +465,7 @@ _ZNSt11_Deque_baseIPcSaIS0_EED2Ev.exit: ; preds = %entry, %_ZNSt11_Deq } ; Function Attrs: mustprogress nounwind uwtable -define void @_ZN4cvc57context20ContextMemoryManagerD2Ev(ptr nocapture noundef nonnull align 8 dereferenceable(200) %this) unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN4cvc57context20ContextMemoryManagerD2Ev(ptr noundef nonnull align 8 dereferenceable(200) %this) unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 { entry: %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 8 %0 = load ptr, ptr %this, align 8 @@ -627,7 +626,7 @@ _ZNSt6vectorIPcSaIS0_EED2Ev.exit21: ; preds = %_ZNSt5dequeIPcSaIS0 declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #7 ; Function Attrs: mustprogress uwtable -define noundef ptr @_ZN4cvc57context20ContextMemoryManager7newDataEm(ptr nocapture noundef nonnull align 8 dereferenceable(200) %this, i64 noundef %size) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define noundef ptr @_ZN4cvc57context20ContextMemoryManager7newDataEm(ptr noundef nonnull align 8 dereferenceable(200) %this, i64 noundef %size) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp11 = alloca %"class.cvc5::internal::FatalStream", align 1 %d_nextFree = getelementptr inbounds nuw i8, ptr %this, i64 104 diff --git a/bench/cvc5/optimized/floatingpoint_literal_symfpu.cpp.ll b/bench/cvc5/optimized/floatingpoint_literal_symfpu.cpp.ll index 9dfd563e25d..8fd0298cc8e 100644 --- a/bench/cvc5/optimized/floatingpoint_literal_symfpu.cpp.ll +++ b/bench/cvc5/optimized/floatingpoint_literal_symfpu.cpp.ll @@ -25797,13 +25797,15 @@ entry: %ref.tmp26 = alloca %"class.symfpu::unpackedFloat", align 8 %0 = load i8, ptr %left, align 8 %tobool = trunc i8 %0 to i1 - %inf.i = getelementptr inbounds nuw i8, ptr %left, i64 1 - %1 = load i8, ptr %inf.i, align 1 - %tobool4 = trunc i8 %1 to i1 - %brmerge = select i1 %tobool, i1 true, i1 %tobool4 - br i1 %brmerge, label %lor.rhs21.sink.split, label %land.lhs.true + br i1 %tobool, label %lor.rhs21.sink.split, label %lor.end.thread -land.lhs.true: ; preds = %entry +lor.end.thread: ; preds = %entry + %inf.i20 = getelementptr inbounds nuw i8, ptr %left, i64 1 + %1 = load i8, ptr %inf.i20, align 1 + %tobool421 = trunc i8 %1 to i1 + br i1 %tobool421, label %lor.rhs21.sink.split, label %land.lhs.true + +land.lhs.true: ; preds = %lor.end.thread %2 = load i8, ptr %right, align 8 %tobool2 = trunc i8 %2 to i1 %zero.i22 = getelementptr inbounds nuw i8, ptr %right, i64 2 @@ -25816,7 +25818,7 @@ land.lhs.true: ; preds = %entry %tobool20 = trunc i8 %5 to i1 br i1 %tobool20, label %lor.end24, label %lor.rhs21 -lor.rhs21.sink.split: ; preds = %entry +lor.rhs21.sink.split: ; preds = %entry, %lor.end.thread store i8 1, ptr %isNan, align 1 br label %lor.rhs21 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/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/TestFixedVector.cpp.ll b/bench/eastl/optimized/TestFixedVector.cpp.ll index 2e4d05914d0..f8acdd3f130 100644 --- a/bench/eastl/optimized/TestFixedVector.cpp.ll +++ b/bench/eastl/optimized/TestFixedVector.cpp.ll @@ -4054,17 +4054,17 @@ entry: %mCapacityAllocator.i = getelementptr inbounds nuw i8, ptr %this, i64 16 store ptr %add.ptr, ptr %mCapacityAllocator.i, align 8 %cmp.i.not = icmp eq i64 %n, 0 - br i1 %cmp.i.not, label %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, label %if.then.i + br i1 %cmp.i.not, label %if.else.i, label %if.then.i if.then.i: ; preds = %entry invoke void @_ZN5eastl6vectorI10TestObjectNS_22fixed_vector_allocatorILm24ELm1ELm8ELm0ELb1ENS_9allocatorEEEE17DoInsertValuesEndEm(ptr noundef nonnull align 8 dereferenceable(40) %this, i64 noundef %n) to label %invoke.cont unwind label %lpad -_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i: ; preds = %entry +if.else.i: ; preds = %entry store ptr %mBuffer, ptr %mpEnd, align 8 br label %invoke.cont -invoke.cont: ; preds = %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, %if.then.i +invoke.cont: ; preds = %if.else.i, %if.then.i ret void lpad: ; preds = %if.then.i @@ -4149,17 +4149,17 @@ entry: %mCapacityAllocator.i = getelementptr inbounds nuw i8, ptr %this, i64 16 store ptr %add.ptr, ptr %mCapacityAllocator.i, align 8 %cmp.i.not = icmp eq i64 %n, 0 - br i1 %cmp.i.not, label %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, label %if.then.i + br i1 %cmp.i.not, label %if.else.i, label %if.then.i if.then.i: ; preds = %entry invoke void @_ZN5eastl6vectorI10TestObjectNS_22fixed_vector_allocatorILm24ELm1ELm8ELm0ELb1ENS_9allocatorEEEE17DoInsertValuesEndEmRKS1_(ptr noundef nonnull align 8 dereferenceable(40) %this, i64 noundef %n, ptr noundef nonnull align 8 dereferenceable(20) %value) to label %invoke.cont unwind label %lpad -_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i: ; preds = %entry +if.else.i: ; preds = %entry store ptr %mBuffer, ptr %mpEnd, align 8 br label %invoke.cont -invoke.cont: ; preds = %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, %if.then.i +invoke.cont: ; preds = %if.else.i, %if.then.i ret void lpad: ; preds = %if.then.i @@ -7426,17 +7426,17 @@ entry: %mCapacityAllocator.i = getelementptr inbounds nuw i8, ptr %this, i64 16 store ptr %add.ptr, ptr %mCapacityAllocator.i, align 8 %cmp.i.not = icmp eq i64 %n, 0 - br i1 %cmp.i.not, label %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, label %if.then.i + br i1 %cmp.i.not, label %if.else.i, label %if.then.i if.then.i: ; preds = %entry invoke void @_ZN5eastl6vectorI10TestObjectNS_22fixed_vector_allocatorILm24ELm1ELm8ELm0ELb0ENS_15dummy_allocatorEEEE17DoInsertValuesEndEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %n) to label %invoke.cont unwind label %lpad -_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i: ; preds = %entry +if.else.i: ; preds = %entry store ptr %mBuffer, ptr %mpEnd, align 8 br label %invoke.cont -invoke.cont: ; preds = %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, %if.then.i +invoke.cont: ; preds = %if.else.i, %if.then.i ret void lpad: ; preds = %if.then.i @@ -7505,17 +7505,17 @@ entry: %mCapacityAllocator.i = getelementptr inbounds nuw i8, ptr %this, i64 16 store ptr %add.ptr, ptr %mCapacityAllocator.i, align 8 %cmp.i.not = icmp eq i64 %n, 0 - br i1 %cmp.i.not, label %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, label %if.then.i + br i1 %cmp.i.not, label %if.else.i, label %if.then.i if.then.i: ; preds = %entry invoke void @_ZN5eastl6vectorI10TestObjectNS_22fixed_vector_allocatorILm24ELm1ELm8ELm0ELb0ENS_15dummy_allocatorEEEE17DoInsertValuesEndEmRKS1_(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %n, ptr noundef nonnull align 8 dereferenceable(20) %value) to label %invoke.cont unwind label %lpad -_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i: ; preds = %entry +if.else.i: ; preds = %entry store ptr %mBuffer, ptr %mpEnd, align 8 br label %invoke.cont -invoke.cont: ; preds = %_ZN5eastl8destructIP10TestObjectEEvT_S3_.exit.i, %if.then.i +invoke.cont: ; preds = %if.else.i, %if.then.i ret void lpad: ; preds = %if.then.i @@ -8881,12 +8881,12 @@ entry: %mpPoolBegin.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 32 %1 = load ptr, ptr %mpPoolBegin.i.i.i, align 32 %cmp.not.i.i.i = icmp eq ptr %0, %1 - %or.cond.i.i = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i - br i1 %or.cond.i.i, label %_ZN5eastl6vectorI7Align64NS_22fixed_vector_allocatorILm64ELm3ELm64ELm0ELb1E15CustomAllocatorEEED2Ev.exit, label %if.then.i.i.i + %or.cond = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i + br i1 %or.cond, label %_ZN5eastl6vectorI7Align64NS_22fixed_vector_allocatorILm64ELm3ELm64ELm0ELb1E15CustomAllocatorEEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %entry - %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %mCapacityAllocator.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 + %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %2 = load ptr, ptr %mCapacityAllocator.i.i.i, align 16 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %0 to i64 @@ -9677,7 +9677,7 @@ if.then.i377: ; preds = %invoke.cont218 %sub.ptr.lhs.cast.i.i380 = ptrtoint ptr %93 to i64 %sub.ptr.sub.i.i381 = sub i64 %sub.ptr.lhs.cast.i.i380, %sub.ptr.lhs.cast.i371 %cmp.i.i382 = icmp ugt i64 %sub.i378, %sub.ptr.sub.i.i381 - br i1 %cmp.i.i382, label %_ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE10DoAllocateEm.exit.i.i386, label %for.body.preheader.i.i.i.i18.i.i383 + br i1 %cmp.i.i382, label %_ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE10DoAllocateEm.exit.i.i386, label %if.else.i.i383 _ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE10DoAllocateEm.exit.i.i386: ; preds = %if.then.i377 %cmp.not.i.i.i387 = icmp eq ptr %91, %92 @@ -9723,7 +9723,7 @@ _ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9alloc store ptr %add.ptr22.i.i406, ptr %mCapacityAllocator.i.i352, align 8 br label %invoke.cont221 -for.body.preheader.i.i.i.i18.i.i383: ; preds = %if.then.i377 +if.else.i.i383: ; preds = %if.then.i377 call void @llvm.memset.p0.i64(ptr align 1 %91, i8 6, i64 %sub.i378, i1 false) %.pre.i.i384 = load ptr, ptr %mpEnd.i350, align 8 %add.ptr26.i.i385 = getelementptr inbounds nuw i8, ptr %.pre.i.i384, i64 %sub.i378 @@ -9736,8 +9736,8 @@ if.else.i375: ; preds = %invoke.cont218 store ptr %add.ptr10.i376, ptr %mpEnd.i350, align 8 br label %invoke.cont221 -invoke.cont221: ; preds = %if.else.i375, %for.body.preheader.i.i.i.i18.i.i383, %_ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE6DoFreeEPam.exit.i.i405 - %99 = phi ptr [ %92, %if.else.i375 ], [ %.pre2786, %for.body.preheader.i.i.i.i18.i.i383 ], [ %call.i.i.i.i.i.i408, %_ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE6DoFreeEPam.exit.i.i405 ] +invoke.cont221: ; preds = %if.else.i375, %if.else.i.i383, %_ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE6DoFreeEPam.exit.i.i405 + %99 = phi ptr [ %92, %if.else.i375 ], [ %.pre2786, %if.else.i.i383 ], [ %call.i.i.i.i.i.i408, %_ZN5eastl10VectorBaseIaNS_22fixed_vector_allocatorILm1ELm4ELm1ELm0ELb1ENS_9allocatorEEEE6DoFreeEPam.exit.i.i405 ] %cmp.i411 = icmp ne ptr %99, %mBuffer.i348 %call225 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %cmp.i411, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.2, i32 noundef 169, ptr noundef nonnull @.str.33) to label %invoke.cont224 unwind label %lpad214 @@ -10722,9 +10722,9 @@ for.end408: ; preds = %for.end408.loopexit %255 = phi ptr [ %.pre2798, %for.end408.loopexit ], [ %251, %invoke.cont395 ] %tobool.not.i.i.i880 = icmp eq ptr %255, null %256 = load ptr, ptr %mpPoolBegin.i.i.i.i.i.i698, align 32 - %cmp.not.i.i.i.i882 = icmp eq ptr %255, %256 - %or.cond.i.i.i883 = select i1 %tobool.not.i.i.i880, i1 true, i1 %cmp.not.i.i.i.i882 - br i1 %or.cond.i.i.i883, label %invoke.cont412, label %if.then.i.i.i.i + %cmp.not.i.i.i.i884 = icmp eq ptr %255, %256 + %or.cond2849 = select i1 %tobool.not.i.i.i880, i1 true, i1 %cmp.not.i.i.i.i884 + br i1 %or.cond2849, label %invoke.cont412, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %for.end408 %mSecond.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %fv, i64 24 @@ -11269,11 +11269,11 @@ invoke.cont497: ; preds = %invoke.cont495 %339 = load ptr, ptr %fs, align 8 %tobool.not.i.i.i1175 = icmp eq ptr %339, null %340 = load ptr, ptr %mpPoolBegin.i.i.i.i.i.i889, align 8 - %cmp.not.i.i.i.i1177 = icmp eq ptr %339, %340 - %or.cond.i.i.i1178 = select i1 %tobool.not.i.i.i1175, i1 true, i1 %cmp.not.i.i.i.i1177 - br i1 %or.cond.i.i.i1178, label %_ZN5eastl12fixed_vectorIcLm64ELb1E15MallocAllocatorED2Ev.exit, label %if.then.i.i.i.i1179 + %cmp.not.i.i.i.i1179 = icmp eq ptr %339, %340 + %or.cond2850 = select i1 %tobool.not.i.i.i1175, i1 true, i1 %cmp.not.i.i.i.i1179 + br i1 %or.cond2850, label %_ZN5eastl12fixed_vectorIcLm64ELb1E15MallocAllocatorED2Ev.exit, label %if.then.i.i.i.i1180 -if.then.i.i.i.i1179: ; preds = %invoke.cont497 +if.then.i.i.i.i1180: ; preds = %invoke.cont497 %341 = load ptr, ptr %mCapacityAllocator.i.i892, align 8 %sub.ptr.lhs.cast.i.i.i1182 = ptrtoint ptr %341 to i64 %sub.ptr.rhs.cast.i.i.i1183 = ptrtoint ptr %339 to i64 @@ -11281,14 +11281,14 @@ if.then.i.i.i.i1179: ; preds = %invoke.cont497 invoke void @_ZN15MallocAllocator10deallocateEPvm(ptr noundef nonnull align 8 dereferenceable(24) %260, ptr noundef nonnull %339, i64 noundef %sub.ptr.sub.i.i.i1184) to label %_ZN5eastl12fixed_vectorIcLm64ELb1E15MallocAllocatorED2Ev.exit unwind label %terminate.lpad.i.i.i1185 -terminate.lpad.i.i.i1185: ; preds = %if.then.i.i.i.i1179 +terminate.lpad.i.i.i1185: ; preds = %if.then.i.i.i.i1180 %342 = landingpad { ptr, i32 } catch ptr null %343 = extractvalue { ptr, i32 } %342, 0 call void @__clang_call_terminate(ptr %343) #17 unreachable -_ZN5eastl12fixed_vectorIcLm64ELb1E15MallocAllocatorED2Ev.exit: ; preds = %invoke.cont497, %if.then.i.i.i.i1179 +_ZN5eastl12fixed_vectorIcLm64ELb1E15MallocAllocatorED2Ev.exit: ; preds = %invoke.cont497, %if.then.i.i.i.i1180 %mBuffer.i1186 = getelementptr inbounds nuw i8, ptr %fv500, i64 40 %mpPoolBegin.i.i.i.i.i.i1187 = getelementptr inbounds nuw i8, ptr %fv500, i64 32 store ptr %mBuffer.i1186, ptr %mpPoolBegin.i.i.i.i.i.i1187, align 8 @@ -12588,6 +12588,17 @@ if.then.i1994: ; preds = %invoke.cont.i.i1734 store ptr %mBuffer.i1744, ptr %mpEnd.i1746, align 8 store ptr %mBuffer.i1758, ptr %mpEnd.i1759, align 8 store ptr %mBuffer.i1762, ptr %mpEnd.i1764, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject16sMagicErrorCountE, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject8sTOCountE, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject12sTODtorCountE, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %mCapacityAllocator.i.i1775, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject16sMagicErrorCountE, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject8sTOCountE, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject12sTODtorCountE, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %mCapacityAllocator.i.i1766, i64 0) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject16sMagicErrorCountE, i64 32) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject8sTOCountE, i64 64) ] + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr @_ZN10TestObject12sTODtorCountE, i64 64) ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %overflowAllocator, i8 0, i64 16, i1 false) %call794 = call noundef ptr @_ZN15MallocAllocator8allocateEmi(ptr noundef nonnull align 8 dereferenceable(16) %overflowAllocator, i64 noundef 1, i32 noundef 0) %mBuffer.i1980 = getelementptr inbounds nuw i8, ptr %c, i64 48 @@ -12627,11 +12638,11 @@ invoke.cont801: ; preds = %invoke.cont799 %532 = load ptr, ptr %c, align 8 %tobool.not.i.i.i1998 = icmp eq ptr %532, null %533 = load ptr, ptr %mpPoolBegin.i.i.i.i.i.i1981, align 8 - %cmp.not.i.i.i.i2000 = icmp eq ptr %532, %533 - %or.cond.i.i.i2001 = select i1 %tobool.not.i.i.i1998, i1 true, i1 %cmp.not.i.i.i.i2000 - br i1 %or.cond.i.i.i2001, label %_ZN5eastl12fixed_vectorIiLm64ELb1E15MallocAllocatorED2Ev.exit, label %if.then.i.i.i.i2002 + %cmp.not.i.i.i.i2002 = icmp eq ptr %532, %533 + %or.cond2851 = select i1 %tobool.not.i.i.i1998, i1 true, i1 %cmp.not.i.i.i.i2002 + br i1 %or.cond2851, label %_ZN5eastl12fixed_vectorIiLm64ELb1E15MallocAllocatorED2Ev.exit, label %if.then.i.i.i.i2003 -if.then.i.i.i.i2002: ; preds = %invoke.cont801 +if.then.i.i.i.i2003: ; preds = %invoke.cont801 %534 = load ptr, ptr %mCapacityAllocator.i.i1984, align 8 %sub.ptr.lhs.cast.i.i.i2005 = ptrtoint ptr %534 to i64 %sub.ptr.rhs.cast.i.i.i2006 = ptrtoint ptr %532 to i64 @@ -12639,14 +12650,14 @@ if.then.i.i.i.i2002: ; preds = %invoke.cont801 invoke void @_ZN15MallocAllocator10deallocateEPvm(ptr noundef nonnull align 8 dereferenceable(24) %mSecond.i.i.i.i.i, ptr noundef nonnull %532, i64 noundef %sub.ptr.sub.i.i.i2007) to label %_ZN5eastl12fixed_vectorIiLm64ELb1E15MallocAllocatorED2Ev.exit unwind label %terminate.lpad.i.i.i2008 -terminate.lpad.i.i.i2008: ; preds = %if.then.i.i.i.i2002 +terminate.lpad.i.i.i2008: ; preds = %if.then.i.i.i.i2003 %535 = landingpad { ptr, i32 } catch ptr null %536 = extractvalue { ptr, i32 } %535, 0 call void @__clang_call_terminate(ptr %536) #17 unreachable -_ZN5eastl12fixed_vectorIiLm64ELb1E15MallocAllocatorED2Ev.exit: ; preds = %invoke.cont801, %if.then.i.i.i.i2002 +_ZN5eastl12fixed_vectorIiLm64ELb1E15MallocAllocatorED2Ev.exit: ; preds = %invoke.cont801, %if.then.i.i.i.i2003 %537 = load i64, ptr @_ZN10TestObject8sTOCountE, align 8 %cmp.i2009 = icmp eq i64 %537, 0 br i1 %cmp.i2009, label %land.lhs.true.i2010, label %if.then.i.i.i.i.i2062 @@ -14788,12 +14799,12 @@ entry: %mpPoolBegin.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 32 %1 = load ptr, ptr %mpPoolBegin.i.i.i, align 32 %cmp.not.i.i.i = icmp eq ptr %0, %1 - %or.cond.i.i = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i - br i1 %or.cond.i.i, label %_ZN5eastl6vectorI7Align64NS_22fixed_vector_allocatorILm64ELm4ELm64ELm0ELb1E15CustomAllocatorEEED2Ev.exit, label %if.then.i.i.i + %or.cond = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i + br i1 %or.cond, label %_ZN5eastl6vectorI7Align64NS_22fixed_vector_allocatorILm64ELm4ELm64ELm0ELb1E15CustomAllocatorEEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %entry - %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %mCapacityAllocator.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 + %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %2 = load ptr, ptr %mCapacityAllocator.i.i.i, align 16 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %0 to i64 @@ -14820,12 +14831,12 @@ entry: %mpPoolBegin.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 40 %1 = load ptr, ptr %mpPoolBegin.i.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %0, %1 - %or.cond.i.i = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i - br i1 %or.cond.i.i, label %_ZN5eastl6vectorIcNS_22fixed_vector_allocatorILm1ELm64ELm1ELm0ELb1E15MallocAllocatorEEED2Ev.exit, label %if.then.i.i.i + %or.cond = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i + br i1 %or.cond, label %_ZN5eastl6vectorIcNS_22fixed_vector_allocatorILm1ELm64ELm1ELm0ELb1E15MallocAllocatorEEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %entry - %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %mCapacityAllocator.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 + %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %2 = load ptr, ptr %mCapacityAllocator.i.i.i, align 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %0 to i64 @@ -14966,12 +14977,12 @@ entry: %mpPoolBegin.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 40 %1 = load ptr, ptr %mpPoolBegin.i.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %0, %1 - %or.cond.i.i = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i - br i1 %or.cond.i.i, label %_ZN5eastl6vectorIiNS_22fixed_vector_allocatorILm4ELm64ELm4ELm0ELb1E15MallocAllocatorEEED2Ev.exit, label %if.then.i.i.i + %or.cond = select i1 %tobool.not.i.i, i1 true, i1 %cmp.not.i.i.i + br i1 %or.cond, label %_ZN5eastl6vectorIiNS_22fixed_vector_allocatorILm4ELm64ELm4ELm0ELb1E15MallocAllocatorEEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %entry - %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %mCapacityAllocator.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 + %mSecond.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 24 %2 = load ptr, ptr %mCapacityAllocator.i.i.i, align 8 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %2 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %0 to i64 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/flac/optimized/fixed_intrin_avx2.c.ll b/bench/flac/optimized/fixed_intrin_avx2.c.ll index 72a91f938ae..c0f4b025e35 100644 --- a/bench/flac/optimized/fixed_intrin_avx2.c.ll +++ b/bench/flac/optimized/fixed_intrin_avx2.c.ll @@ -50,6 +50,7 @@ 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) ] %cmp70200 = icmp sgt i32 %data_len, 3 br i1 %cmp70200, label %for.body72.lr.ph, label %for.end177 @@ -189,7 +190,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 +207,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 +224,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 +241,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 +258,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 +393,7 @@ 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) ] %cmp270467 = icmp sgt i32 %data_len, 3 br i1 %cmp270467, label %for.body272.lr.ph, label %for.end392 @@ -649,7 +651,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 +678,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 +712,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 +738,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 +763,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 +782,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/fixed_intrin_sse2.c.ll b/bench/flac/optimized/fixed_intrin_sse2.c.ll index 9b203dd0723..949127ab85a 100644 --- a/bench/flac/optimized/fixed_intrin_sse2.c.ll +++ b/bench/flac/optimized/fixed_intrin_sse2.c.ll @@ -46,6 +46,7 @@ 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 32) ] %cmp67255 = icmp sgt i32 %data_len, 3 br i1 %cmp67255, label %for.body68.lr.ph, label %for.end117 @@ -164,15 +165,15 @@ for.body193.preheader: ; preds = %for.end117 %45 = getelementptr i32, ptr %data, i64 %44 %arrayidx175 = getelementptr i8, ptr %45, i64 -12 %46 = load i32, ptr %arrayidx175, align 4 - %mul184.neg278.neg = shl i32 %46, 1 %arrayidx168 = getelementptr i8, ptr %45, i64 -8 %47 = load i32, ptr %arrayidx168, align 4 %arrayidx188 = getelementptr i8, ptr %45, i64 -16 + %arrayidx162 = getelementptr i8, ptr %45, i64 -4 + %mul184.neg278.neg = shl i32 %46, 1 %48 = load i32, ptr %arrayidx188, align 4 %49 = add i32 %47, %48 %add189.neg = sub i32 %mul184.neg278.neg, %49 %sub176.neg = sub i32 %46, %47 - %arrayidx162 = getelementptr i8, ptr %45, i64 -4 %50 = load i32, ptr %arrayidx162, align 4 %sub169 = sub nsw i32 %50, %47 %sub177 = add i32 %sub176.neg, %sub169 @@ -249,7 +250,7 @@ cond.true305: ; preds = %if.else, %if.else28 %mul306 = fmul reassoc nsz arcp double %conv, 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 %53 = fptrunc double %div310 to float br label %cond.end312 @@ -266,7 +267,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 %54 = fptrunc double %div324 to float br label %cond.end326 @@ -283,7 +284,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 %55 = fptrunc double %div338 to float br label %cond.end340 @@ -300,7 +301,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 %56 = fptrunc double %div352 to float br label %cond.end354 @@ -317,7 +318,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 %57 = fptrunc double %div366 to float br label %cond.end368 @@ -341,10 +342,14 @@ declare i32 @llvm.abs.i32(i32, i1 immarg) #2 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, i1 immarg) #2 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #3 + attributes #0 = { nofree nounwind sspstrong memory(write, argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { 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/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/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/git/optimized/block.ll b/bench/git/optimized/block.ll index b876ffd3e86..66577abc704 100644 --- a/bench/git/optimized/block.ll +++ b/bench/git/optimized/block.ll @@ -461,11 +461,11 @@ if.end22: ; preds = %if.then5 if.end29: ; preds = %if.end22 %source1.i = getelementptr inbounds nuw i8, ptr %block, i64 16 %source.sroa.0.0.copyload.i = load ptr, ptr %source1.i, align 8 + %source.sroa.3.0.source1.sroa_idx.i = getelementptr inbounds nuw i8, ptr %block, i64 24 %tobool2.not.i = icmp eq ptr %source.sroa.0.0.copyload.i, null br i1 %tobool2.not.i, label %reftable_block_done.exit, label %if.then.i if.then.i: ; preds = %if.end29 - %source.sroa.3.0.source1.sroa_idx.i = getelementptr inbounds nuw i8, ptr %block, i64 24 %source.sroa.3.0.copyload.i = load ptr, ptr %source.sroa.3.0.source1.sroa_idx.i, align 8 %return_block.i = getelementptr inbounds nuw i8, ptr %source.sroa.0.0.copyload.i, i64 16 %6 = load ptr, ptr %return_block.i, align 8 @@ -480,8 +480,7 @@ reftable_block_done.exit: ; preds = %if.end29, %if.then. %7 = extractvalue { ptr, ptr } %call32, 0 %8 = extractvalue { ptr, ptr } %call32, 1 store ptr %7, ptr %source1.i, align 8 - %tmp.sroa.2.0.source.sroa_idx = getelementptr inbounds nuw i8, ptr %block, i64 24 - store ptr %8, ptr %tmp.sroa.2.0.source.sroa_idx, align 8 + store ptr %8, ptr %source.sroa.3.0.source1.sroa_idx.i, align 8 %9 = load i64, ptr %src_len, align 8 %10 = trunc i64 %9 to i32 %conv35 = add i32 %add, %10 diff --git a/bench/glslang/optimized/Pp.cpp.ll b/bench/glslang/optimized/Pp.cpp.ll index d393db28bba..4d2b5911820 100644 --- a/bench/glslang/optimized/Pp.cpp.ll +++ b/bench/glslang/optimized/Pp.cpp.ll @@ -8506,25 +8506,25 @@ define linkonce_odr void @_ZN7glslang10TPpContext22TokenizableIncludeFile13notif %11 = load ptr, ptr %10, align 8, !noalias !107 %12 = getelementptr inbounds nuw i8, ptr %9, i64 528 %13 = load ptr, ptr %12, align 8, !noalias !107 - %14 = icmp eq ptr %11, %13 - br i1 %14, label %18, label %15 + %14 = getelementptr inbounds nuw i8, ptr %9, i64 544 + %15 = icmp eq ptr %11, %13 + br i1 %15, label %19, label %16 -15: ; preds = %1 - %16 = getelementptr inbounds i8, ptr %11, i64 -8 - %17 = load ptr, ptr %16, align 8 +16: ; preds = %1 + %17 = getelementptr inbounds i8, ptr %11, i64 -8 + %18 = load ptr, ptr %17, align 8 br label %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3popEv.exit.i -18: ; preds = %1 - %19 = getelementptr inbounds nuw i8, ptr %9, i64 544 - %20 = load ptr, ptr %19, align 8, !noalias !107 +19: ; preds = %1 + %20 = load ptr, ptr %14, align 8, !noalias !107 %21 = getelementptr inbounds i8, ptr %20, i64 -8 %22 = load ptr, ptr %21, align 8 %23 = getelementptr inbounds nuw i8, ptr %22, i64 504 %24 = load ptr, ptr %23, align 8 tail call void @_ZdlPvm(ptr noundef %13, i64 noundef 512) #21 - %25 = load ptr, ptr %19, align 8 + %25 = load ptr, ptr %14, align 8 %26 = getelementptr inbounds i8, ptr %25, i64 -8 - store ptr %26, ptr %19, align 8 + store ptr %26, ptr %14, align 8 %27 = load ptr, ptr %26, align 8 store ptr %27, ptr %12, align 8 %28 = getelementptr inbounds nuw i8, ptr %27, i64 512 @@ -8533,9 +8533,9 @@ define linkonce_odr void @_ZN7glslang10TPpContext22TokenizableIncludeFile13notif %30 = getelementptr inbounds nuw i8, ptr %27, i64 504 br label %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3popEv.exit.i -_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3popEv.exit.i: ; preds = %18, %15 - %31 = phi ptr [ %17, %15 ], [ %24, %18 ] - %storemerge.i.i.i = phi ptr [ %16, %15 ], [ %30, %18 ] +_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3popEv.exit.i: ; preds = %19, %16 + %31 = phi ptr [ %18, %16 ], [ %24, %19 ] + %storemerge.i.i.i = phi ptr [ %17, %16 ], [ %30, %19 ] store ptr %storemerge.i.i.i, ptr %10, align 8 %32 = getelementptr inbounds nuw i8, ptr %9, i64 424 %33 = load ptr, ptr %32, align 8 @@ -8559,23 +8559,22 @@ _ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3pop br i1 %45, label %46, label %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3topEv.exit2.i 46: ; preds = %43 - %47 = getelementptr inbounds nuw i8, ptr %9, i64 544 - %48 = load ptr, ptr %47, align 8, !noalias !110 - %49 = getelementptr inbounds i8, ptr %48, i64 -8 - %50 = load ptr, ptr %49, align 8 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 512 + %47 = load ptr, ptr %14, align 8, !noalias !110 + %48 = getelementptr inbounds i8, ptr %47, i64 -8 + %49 = load ptr, ptr %48, align 8 + %50 = getelementptr inbounds nuw i8, ptr %49, i64 512 br label %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3topEv.exit2.i _ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3topEv.exit2.i: ; preds = %46, %43 - %52 = phi ptr [ %51, %46 ], [ %38, %43 ] - %53 = getelementptr inbounds i8, ptr %52, i64 -8 - %54 = load ptr, ptr %53, align 8 + %51 = phi ptr [ %50, %46 ], [ %38, %43 ] + %52 = getelementptr inbounds i8, ptr %51, i64 -8 + %53 = load ptr, ptr %52, align 8 br label %_ZN7glslang10TPpContext11pop_includeEv.exit _ZN7glslang10TPpContext11pop_includeEv.exit: ; preds = %41, %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3topEv.exit2.i - %.sink3.i = phi ptr [ %54, %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3topEv.exit2.i ], [ %42, %41 ] - %55 = getelementptr inbounds nuw i8, ptr %9, i64 552 - %56 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %.sink3.i) #17 + %.sink3.i = phi ptr [ %53, %_ZNSt5stackIPN7glslang7TShader8Includer13IncludeResultESt5dequeIS4_SaIS4_EEE3topEv.exit2.i ], [ %42, %41 ] + %54 = getelementptr inbounds nuw i8, ptr %9, i64 552 + %55 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %.sink3.i) #17 ret void } 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/gromacs/optimized/pme.cpp.ll b/bench/gromacs/optimized/pme.cpp.ll index 34c5c0dd85f..cb14fc77ba6 100644 --- a/bench/gromacs/optimized/pme.cpp.ll +++ b/bench/gromacs/optimized/pme.cpp.ll @@ -9354,15 +9354,17 @@ _Z15wallcycle_startP13gmx_wallcycle16WallCycleCounter.exit247: ; preds = %1049, %1098 = add nsw i32 %1096, -1 %1099 = zext i32 %1098 to i64 %1100 = icmp eq i64 %indvars.iv458, %1099 - %.val = load ptr, ptr %1090, align 8 - %.not397 = icmp eq ptr %.val, null br i1 %1100, label %1101, label %.thread 1101: ; preds = %1095 + %.val = load ptr, ptr %1090, align 8 + %.not397 = icmp eq ptr %.val, null br i1 %.not397, label %1121, label %1110 .thread: ; preds = %1095 - br i1 %.not397, label %1121, label %.thread391 + %.val386 = load ptr, ptr %1090, align 8 + %.not396 = icmp eq ptr %.val386, null + br i1 %.not396, label %1121, label %.thread391 .thread391: ; preds = %.thread %1102 = getelementptr inbounds nuw i8, ptr %1097, i64 440 diff --git a/bench/grpc/optimized/alts_grpc_integrity_only_record_protocol.cc.ll b/bench/grpc/optimized/alts_grpc_integrity_only_record_protocol.cc.ll index ba2fc2f3c28..0915eed20e6 100644 --- a/bench/grpc/optimized/alts_grpc_integrity_only_record_protocol.cc.ll +++ b/bench/grpc/optimized/alts_grpc_integrity_only_record_protocol.cc.ll @@ -114,18 +114,18 @@ if.then4: ; preds = %if.end %3 = load i64, ptr %tag_length.i, align 8 %add2.i = add i64 %add.i, %3 call void @grpc_slice_malloc(ptr nonnull sret(%struct.grpc_slice) align 8 %protected_slice.i, i64 noundef %add2.i) + %4 = load ptr, ptr %protected_slice.i, align 8 %bytes.i = getelementptr inbounds nuw i8, ptr %protected_slice.i, i64 16 + %5 = load ptr, ptr %bytes.i, align 8 %bytes5.i = getelementptr inbounds nuw i8, ptr %protected_slice.i, i64 9 %count.i = getelementptr inbounds nuw i8, ptr %unprotected_slices, i64 16 - %4 = load i64, ptr %count.i, align 8 - %cmp38.not.i = icmp eq i64 %4, 0 + %6 = load i64, ptr %count.i, align 8 + %cmp38.not.i = icmp eq i64 %6, 0 br i1 %cmp38.not.i, label %for.end.i, label %for.body.lr.ph.i for.body.lr.ph.i: ; preds = %if.then4 - %5 = load ptr, ptr %protected_slice.i, align 8 - %tobool.not.i = icmp eq ptr %5, null - %6 = load ptr, ptr %bytes.i, align 8 - %cond.i = select i1 %tobool.not.i, ptr %bytes5.i, ptr %6 + %tobool.not.i = icmp eq ptr %4, null + %cond.i = select i1 %tobool.not.i, ptr %bytes5.i, ptr %5 %7 = load i64, ptr %header_length.i, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %cond.i, i64 %7 %slices.i = getelementptr inbounds nuw i8, ptr %unprotected_slices, i64 8 @@ -181,14 +181,19 @@ cond.end53.i: ; preds = %cond.false47.i, %co %inc.i = add nuw i64 %i.039.i, 1 %17 = load i64, ptr %count.i, align 8 %cmp.i = icmp ult i64 %inc.i, %17 - br i1 %cmp.i, label %for.body.i, label %for.end.i, !llvm.loop !4 + br i1 %cmp.i, label %for.body.i, label %for.end.loopexit.i, !llvm.loop !4 -for.end.i: ; preds = %cond.end53.i, %if.then4 +for.end.loopexit.i: ; preds = %cond.end53.i + %.pre41.i = load ptr, ptr %protected_slice.i, align 8 + %.pre42.i = load ptr, ptr %bytes.i, align 8 + br label %for.end.i + +for.end.i: ; preds = %for.end.loopexit.i, %if.then4 + %18 = phi ptr [ %.pre42.i, %for.end.loopexit.i ], [ %5, %if.then4 ] + %19 = phi ptr [ %.pre41.i, %for.end.loopexit.i ], [ %4, %if.then4 ] store ptr null, ptr %error_details.i, align 8 - %18 = load ptr, ptr %protected_slice.i, align 8 - %tobool57.not.i = icmp eq ptr %18, null - %19 = load ptr, ptr %bytes.i, align 8 - %cond66.i = select i1 %tobool57.not.i, ptr %bytes5.i, ptr %19 + %tobool57.not.i = icmp eq ptr %19, null + %cond66.i = select i1 %tobool57.not.i, ptr %bytes5.i, ptr %18 %20 = load i64, ptr %header_length.i, align 8 %add.ptr81.i = getelementptr inbounds i8, ptr %cond66.i, i64 %20 %add.ptr82.i = getelementptr inbounds i8, ptr %add.ptr81.i, i64 %1 diff --git a/bench/grpc/optimized/ev_poll_posix.cc.ll b/bench/grpc/optimized/ev_poll_posix.cc.ll index e1206fb9fee..5ebce0f6551 100644 --- a/bench/grpc/optimized/ev_poll_posix.cc.ll +++ b/bench/grpc/optimized/ev_poll_posix.cc.ll @@ -2522,6 +2522,7 @@ _ZN4absl12lts_2023080213InlinedVectorIPN17grpc_event_engine12experimental15PollE %lock98 = alloca %"class.absl::lts_20230802::ReleasableMutexLock", align 8 %ref.tmp135 = alloca %"class.absl::lts_20230802::Status", align 8 %lock159 = alloca %"class.absl::lts_20230802::ReleasableMutexLock", align 8 + %data_.i.i.i = getelementptr inbounds nuw i8, ptr %pending_events, i64 8 store i64 0, ptr %pending_events, align 8 %call = invoke noundef i64 @_ZN17grpc_event_engine12experimental12MillisecondsENSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE(i64 %timeout.coerce) to label %invoke.cont unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -2544,7 +2545,6 @@ while.body.lr.ph: ; preds = %while.cond.preheade %wakeup_fd_ = getelementptr inbounds nuw i8, ptr %this, i64 64 %poll_handles_list_head_ = getelementptr inbounds nuw i8, ptr %this, i64 56 %use_phony_poll_ = getelementptr inbounds nuw i8, ptr %this, i64 48 - %data_.i1.i.i = getelementptr inbounds nuw i8, ptr %pending_events, i64 8 %allocated_capacity.i.i.i = getelementptr inbounds nuw i8, ptr %pending_events, i64 16 %was_kicked_ = getelementptr inbounds nuw i8, ptr %this, i64 49 %was_kicked_ext_ = getelementptr inbounds nuw i8, ptr %this, i64 50 @@ -3150,9 +3150,9 @@ if.then194: ; preds = %if.then5.i151 %78 = load i64, ptr %pending_events, align 8, !noalias !18 %and.i.i.i216 = and i64 %78, 1 %tobool.i.not.i.i217 = icmp eq i64 %and.i.i.i216, 0 - %79 = load ptr, ptr %data_.i1.i.i, align 8, !noalias !18 + %79 = load ptr, ptr %data_.i.i.i, align 8, !noalias !18 %80 = load i64, ptr %allocated_capacity.i.i.i, align 8, !noalias !18 - %.sink3.i.i = select i1 %tobool.i.not.i.i217, ptr %data_.i1.i.i, ptr %79 + %.sink3.i.i = select i1 %tobool.i.not.i.i217, ptr %data_.i.i.i, ptr %79 %.sink.i.i = select i1 %tobool.i.not.i.i217, i64 5, i64 %80 %shr.i.sink.i.i = lshr i64 %78, 1 %cmp.not.i218 = icmp eq i64 %shr.i.sink.i.i, %.sink.i.i @@ -3220,7 +3220,7 @@ if.then.i.i.i223: ; preds = %invoke.cont21.i.i _ZN4absl12lts_2023080223inlined_vector_internal7StorageIPN17grpc_event_engine12experimental15PollEventHandleELm5ESaIS6_EE15EmplaceBackSlowIJRKS6_EEERS6_DpOT_.exit.i: ; preds = %if.then.i.i.i223, %invoke.cont21.i.i %84 = phi i64 [ %.pre.i.i, %if.then.i.i.i223 ], [ %78, %invoke.cont21.i.i ] - store ptr %call5.i.i.i.i5.i.i226, ptr %data_.i1.i.i, align 8 + store ptr %call5.i.i.i.i5.i.i226, ptr %data_.i.i.i, align 8 store i64 %mul.i.i.i, ptr %allocated_capacity.i.i.i, align 8 %or.i.i.i = or i64 %84, 1 br label %_ZN4absl12lts_2023080213InlinedVectorIPN17grpc_event_engine12experimental15PollEventHandleELm5ESaIS5_EE9push_backERKS5_.exit173 @@ -3389,9 +3389,8 @@ invoke.cont233: ; preds = %if.end232 %100 = load i64, ptr %pending_events, align 8 %and.i.i.i204 = and i64 %100, 1 %tobool.i.not.i.i205 = icmp eq i64 %and.i.i.i204, 0 - %data_.i.i.i206 = getelementptr inbounds nuw i8, ptr %pending_events, i64 8 - %101 = load ptr, ptr %data_.i.i.i206, align 8 - %cond.i.i = select i1 %tobool.i.not.i.i205, ptr %data_.i.i.i206, ptr %101 + %101 = load ptr, ptr %data_.i.i.i, align 8 + %cond.i.i = select i1 %tobool.i.not.i.i205, ptr %data_.i.i.i, ptr %101 %shr.i.i.i = lshr i64 %100, 1 %add.ptr.i = getelementptr inbounds nuw ptr, ptr %cond.i.i, i64 %shr.i.i.i %cmp237.not299 = icmp ult i64 %100, 2 @@ -3420,8 +3419,7 @@ cleanup: ; preds = %invoke.cont233, %fo br i1 %tobool.i.not.i.i.i, label %_ZN4absl12lts_2023080213InlinedVectorIPN17grpc_event_engine12experimental15PollEventHandleELm5ESaIS5_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %cleanup - %data_.i.i.i.i = getelementptr inbounds nuw i8, ptr %pending_events, i64 8 - %104 = load ptr, ptr %data_.i.i.i.i, align 8 + %104 = load ptr, ptr %data_.i.i.i, align 8 call void @_ZdlPv(ptr noundef %104) #22 br label %_ZN4absl12lts_2023080213InlinedVectorIPN17grpc_event_engine12experimental15PollEventHandleELm5ESaIS5_EED2Ev.exit @@ -3437,8 +3435,7 @@ ehcleanup243: ; preds = %lpad.loopexit, %lpa br i1 %tobool.i.not.i.i.i212, label %_ZN4absl12lts_2023080213InlinedVectorIPN17grpc_event_engine12experimental15PollEventHandleELm5ESaIS5_EED2Ev.exit215, label %if.then.i.i.i213 if.then.i.i.i213: ; preds = %ehcleanup243 - %data_.i.i.i.i214 = getelementptr inbounds nuw i8, ptr %pending_events, i64 8 - %106 = load ptr, ptr %data_.i.i.i.i214, align 8 + %106 = load ptr, ptr %data_.i.i.i, align 8 call void @_ZdlPv(ptr noundef %106) #22 br label %_ZN4absl12lts_2023080213InlinedVectorIPN17grpc_event_engine12experimental15PollEventHandleELm5ESaIS5_EED2Ev.exit215 diff --git a/bench/hdf5/optimized/H5checksum.c.ll b/bench/hdf5/optimized/H5checksum.c.ll index b04b577da48..cfd2b8e37c0 100644 --- a/bench/hdf5/optimized/H5checksum.c.ll +++ b/bench/hdf5/optimized/H5checksum.c.ll @@ -151,8 +151,8 @@ H5__checksum_crc_update.exit: ; preds = %H5__checksum_crc_up ret i32 %.07.lcssa.i } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable -define i32 @H5_checksum_lookup3(ptr nocapture noundef readonly %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #0 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read, inaccessiblemem: write) uwtable +define i32 @H5_checksum_lookup3(ptr noundef %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #2 { %4 = trunc i64 %1 to i32 %5 = add i32 %4, -559038737 %6 = add i32 %5, %2 @@ -376,10 +376,7 @@ define i32 @H5_checksum_lookup3(ptr nocapture noundef readonly %0, i64 noundef % %154 = add i32 %153, %.2143 br label %155 -default.unreachable: ; preds = %._crit_edge - unreachable - -155: ; preds = %._crit_edge, %149 +155: ; preds = %149, %._crit_edge %.3144 = phi i32 [ %.0141.lcssa, %._crit_edge ], [ %154, %149 ] %.7139 = phi i32 [ %.0132.lcssa, %._crit_edge ], [ %.6138, %149 ] %.11 = phi i32 [ %.0.lcssa, %._crit_edge ], [ %.10, %149 ] @@ -409,13 +406,16 @@ default.unreachable: ; preds = %._crit_edge %179 = sub i32 %177, %178 br label %180 +default.unreachable: ; preds = %._crit_edge + unreachable + 180: ; preds = %._crit_edge, %155 %.12 = phi i32 [ %179, %155 ], [ %.0.lcssa, %._crit_edge ] ret i32 %.12 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable -define i32 @H5_checksum_metadata(ptr nocapture noundef readonly %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #0 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read, inaccessiblemem: write) uwtable +define i32 @H5_checksum_metadata(ptr noundef %0, i64 noundef %1, i32 noundef %2) local_unnamed_addr #2 { %4 = tail call i32 @H5_checksum_lookup3(ptr noundef %0, i64 noundef %1, i32 noundef %2) ret i32 %4 } @@ -444,14 +444,15 @@ define i32 @H5_hash_string(ptr nocapture noundef readonly %0) local_unnamed_addr } ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #2 +declare i64 @llvm.umin.i64(i64, i64) #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.fshl.i32(i32, i32, i32) #2 +declare i32 @llvm.fshl.i32(i32, i32, i32) #3 attributes #0 = { nofree norecurse nosync nounwind 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 = { nofree norecurse nosync nounwind memory(readwrite, argmem: 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 #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #2 = { nofree norecurse nosync nounwind 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/hermes/optimized/GlobalObject.cpp.ll b/bench/hermes/optimized/GlobalObject.cpp.ll index 1ce6fc59fca..dad9bbdd55e 100644 --- a/bench/hermes/optimized/GlobalObject.cpp.ll +++ b/bench/hermes/optimized/GlobalObject.cpp.ll @@ -1383,9 +1383,11 @@ if.end86: ; preds = %if.end72 if.then.i.i113: ; preds = %if.end86 call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(48) %str8, ptr noundef nonnull %add.ptr.i.i.i.i.i, i64 noundef %add, i64 noundef 1) #10 + %.pre.i = load ptr, ptr %str8, align 8 br label %if.end.i.i112 if.end.i.i112: ; preds = %if.then.i.i113, %if.end86 + %44 = phi ptr [ %.pre.i, %if.then.i.i113 ], [ %add.ptr.i.i.i.i.i, %if.end86 ] %conv.i3.i.i = trunc i64 %add to i32 store i32 %conv.i3.i.i, ptr %Size.i.i.i.i.i, align 8 %conv.i4.i.i = and i64 %add, 4294967295 @@ -1393,7 +1395,6 @@ if.end.i.i112: ; preds = %if.then.i.i113, %if br i1 %tobool.not.i.i.i.i.i.i.i, label %_ZN4llvh11SmallVectorIcLj32EEC2EmRKc.exit, label %if.then.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.end.i.i112 - %44 = load ptr, ptr %str8, align 8 call void @llvm.memset.p0.i64(ptr align 1 %44, i8 0, i64 %conv.i4.i.i, i1 false) br label %_ZN4llvh11SmallVectorIcLj32EEC2EmRKc.exit diff --git a/bench/hermes/optimized/TracingRuntime.cpp.ll b/bench/hermes/optimized/TracingRuntime.cpp.ll index 8798e2e24c1..b65df7fd32f 100644 --- a/bench/hermes/optimized/TracingRuntime.cpp.ll +++ b/bench/hermes/optimized/TracingRuntime.cpp.ll @@ -6782,25 +6782,25 @@ for.body.lr.ph: ; preds = %_ZNSt12_Vector_base br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc - %1 = phi ptr [ %call5.i.i.i.i4, %for.body.lr.ph ], [ %6, %for.inc ] %i.021 = phi i64 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ] - %2 = phi ptr [ %add.ptr21.i, %for.body.lr.ph ], [ %7, %for.inc ] + %1 = phi ptr [ %add.ptr21.i, %for.body.lr.ph ], [ %6, %for.inc ] %call5.i.i.i.i.i81820 = phi ptr [ %call5.i.i.i.i4, %for.body.lr.ph ], [ %call5.i.i.i.i.i817, %for.inc ] %arrayidx = getelementptr inbounds %"class.facebook::jsi::Value", ptr %args, i64 %i.021 %call = invoke { i32, i64 } @_ZN8facebook6hermes7tracing14TracingRuntime12toTraceValueERKNS_3jsi5ValueE(ptr noundef nonnull align 8 dereferenceable(172) %this, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx) to label %invoke.cont2 unwind label %lpad.loopexit invoke.cont2: ; preds = %for.body - %3 = extractvalue { i32, i64 } %call, 0 - %4 = extractvalue { i32, i64 } %call, 1 - %cmp.not.i = icmp eq ptr %1, %2 + %2 = extractvalue { i32, i64 } %call, 0 + %3 = extractvalue { i32, i64 } %call, 1 + %4 = load ptr, ptr %_M_finish.i, align 8 + %cmp.not.i = icmp eq ptr %4, %1 br i1 %cmp.not.i, label %if.else.i, label %if.then.i5 if.then.i5: ; preds = %invoke.cont2 - store i32 %3, ptr %1, align 8 - %ref.tmp.sroa.313.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 - store i64 %4, ptr %ref.tmp.sroa.313.0..sroa_idx, align 8 - %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %1, i64 16 + store i32 %2, ptr %4, align 8 + %ref.tmp.sroa.313.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 + store i64 %3, ptr %ref.tmp.sroa.313.0..sroa_idx, align 8 + %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %4, i64 16 store ptr %incdec.ptr.i, ptr %_M_finish.i, align 8 br label %for.inc @@ -6826,9 +6826,9 @@ _ZNKSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE12_M_che call5.i.i.i.i.i.noexc: ; preds = %_ZNKSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE12_M_check_lenEmPKc.exit.i.i %add.ptr.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i8, i64 %sub.ptr.sub.i.i.i.i - store i32 %3, ptr %add.ptr.i.i, align 8 + store i32 %2, ptr %add.ptr.i.i, align 8 %ref.tmp.sroa.313.0.add.ptr.i.i.sroa_idx = getelementptr inbounds nuw i8, ptr %add.ptr.i.i, i64 8 - store i64 %4, ptr %ref.tmp.sroa.313.0.add.ptr.i.i.sroa_idx, align 8 + store i64 %3, ptr %ref.tmp.sroa.313.0.add.ptr.i.i.sroa_idx, align 8 %cmp.not5.i.i.i.i.i = icmp eq ptr %call5.i.i.i.i.i81820, %1 br i1 %cmp.not5.i.i.i.i.i, label %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit19.i.i, label %for.body.i.i.i.i.i @@ -6859,9 +6859,8 @@ _ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE17_M_real br label %for.inc for.inc: ; preds = %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i, %if.then.i5 - %6 = phi ptr [ %incdec.ptr.i.i, %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i ], [ %incdec.ptr.i, %if.then.i5 ] %call5.i.i.i.i.i817 = phi ptr [ %call5.i.i.i.i.i8, %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i ], [ %call5.i.i.i.i.i81820, %if.then.i5 ] - %7 = phi ptr [ %add.ptr19.i.i, %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i ], [ %2, %if.then.i5 ] + %6 = phi ptr [ %add.ptr19.i.i, %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i ], [ %1, %if.then.i5 ] %inc = add nuw i64 %i.021, 1 %exitcond.not = icmp eq i64 %inc, %count br i1 %exitcond.not, label %nrvo.skipdtor, label %for.body, !llvm.loop !272 @@ -6878,12 +6877,12 @@ lpad.loopexit.split-lp: ; preds = %if.then.i.invoke, % lpad: ; preds = %lpad.loopexit.split-lp, %lpad.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit15, %lpad.loopexit ], [ %lpad.loopexit.split-lp16, %lpad.loopexit.split-lp ] - %8 = load ptr, ptr %agg.result, align 8 - %tobool.not.i.i.i9 = icmp eq ptr %8, null + %7 = load ptr, ptr %agg.result, align 8 + %tobool.not.i.i.i9 = icmp eq ptr %7, null br i1 %tobool.not.i.i.i9, label %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EED2Ev.exit, label %if.then.i.i.i10 if.then.i.i.i10: ; preds = %lpad - tail call void @_ZdlPv(ptr noundef nonnull %8) #30 + tail call void @_ZdlPv(ptr noundef nonnull %7) #30 br label %_ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EED2Ev.exit _ZNSt6vectorIN8facebook6hermes7tracing10SynthTrace10TraceValueESaIS4_EED2Ev.exit: ; preds = %lpad, %if.then.i.i.i10 diff --git a/bench/hermes/optimized/escape.cpp.ll b/bench/hermes/optimized/escape.cpp.ll index 40f2e825fe5..3b46cda7e62 100644 --- a/bench/hermes/optimized/escape.cpp.ll +++ b/bench/hermes/optimized/escape.cpp.ll @@ -404,7 +404,7 @@ if.end.i.thread.i: ; preds = %while.cond.i.i.preh %.pre227 = zext i32 %.pre13.pre.i.i to i64 br label %_ZN6hermes2vm12SmallXStringIDsLj32EE6appendEPKDs.exit -_ZN6hermes2vm12SmallXStringIDsLj32EE6appendEPKDs.exit: ; preds = %if.end.i.thread.i, %while.cond.i.i.preheader +_ZN6hermes2vm12SmallXStringIDsLj32EE6appendEPKDs.exit: ; preds = %while.cond.i.i.preheader, %if.end.i.thread.i %conv.i9.i.i.pre-phi = phi i64 [ %.pre227, %if.end.i.thread.i ], [ %conv.i5.i.i, %while.cond.i.i.preheader ] %44 = load ptr, ptr %R, align 8 %add.ptr.i.i.i = getelementptr inbounds nuw i16, ptr %44, i64 %conv.i9.i.i.pre-phi @@ -4262,18 +4262,18 @@ if.then.i: ; preds = %if.then tail call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull %add.ptr.i.i.i.i, i64 noundef %add.i, i64 noundef 2) #11 %.pre.i = load i32, ptr %Size.i, align 8 %.pre12.i = zext i32 %.pre.i to i64 - %.pre85.pre = load ptr, ptr %this, align 8 + %.pre86.pre = load ptr, ptr %this, align 8 br label %if.end.i if.end.i: ; preds = %if.then.i, %if.then - %.pre85 = phi ptr [ %.pre85.pre, %if.then.i ], [ %0, %if.then ] + %.pre86 = phi ptr [ %.pre86.pre, %if.then.i ], [ %0, %if.then ] %conv.i7.pre-phi.i = phi i64 [ %.pre12.i, %if.then.i ], [ %conv.i, %if.then ] %3 = phi i32 [ %.pre.i, %if.then.i ], [ %1, %if.then ] %cmp15.i.i.i.i.i.i.i.i.i = icmp sgt i64 %retval.0.i.i.i.i, 0 br i1 %cmp15.i.i.i.i.i.i.i.i.i, label %for.body.i.i.i.i.i.i.i.i.preheader.i, label %_ZN4llvh15SmallVectorImplIDsE6appendIN6hermes2vm10StringView14const_iteratorEvEEvT_S7_.exit for.body.i.i.i.i.i.i.i.i.preheader.i: ; preds = %if.end.i - %add.ptr.i.i = getelementptr inbounds nuw i16, ptr %.pre85, i64 %conv.i7.pre-phi.i + %add.ptr.i.i = getelementptr inbounds nuw i16, ptr %.pre86, i64 %conv.i7.pre-phi.i br label %for.body.i.i.i.i.i.i.i.i.i for.body.i.i.i.i.i.i.i.i.i: ; preds = %_ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.preheader.i @@ -4307,11 +4307,11 @@ _ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i: ; preds = _ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i: ; preds = %_ZN6hermes2vm10StringView14const_iteratorppEv.exit.i.i.i.i.i.i.i.i.i %.pre11.i = load i32, ptr %Size.i, align 8 - %.pre84 = load ptr, ptr %this, align 8 + %.pre85 = load ptr, ptr %this, align 8 br label %_ZN4llvh15SmallVectorImplIDsE6appendIN6hermes2vm10StringView14const_iteratorEvEEvT_S7_.exit _ZN4llvh15SmallVectorImplIDsE6appendIN6hermes2vm10StringView14const_iteratorEvEEvT_S7_.exit: ; preds = %if.end.i, %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i - %7 = phi ptr [ %.pre84, %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i ], [ %.pre85, %if.end.i ] + %7 = phi ptr [ %.pre85, %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i ], [ %.pre86, %if.end.i ] %8 = phi i32 [ %.pre11.i, %_ZN4llvh23SmallVectorTemplateBaseIDsLb1EE18uninitialized_copyIN6hermes2vm10StringView14const_iteratorEPDsEEvT_S8_T0_.exit.loopexit.i ], [ %3, %if.end.i ] %9 = trunc i64 %retval.0.i.i.i.i to i32 %conv.i10.i = add i32 %8, %9 @@ -4332,11 +4332,11 @@ if.then.i27: ; preds = %if.end tail call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull %add.ptr.i.i.i.i28, i64 noundef %add, i64 noundef 2) #11 %.pre = load ptr, ptr %this, align 8 %.pre83 = load i32, ptr %Size.i, align 8 - %.pre87 = zext i32 %.pre83 to i64 + %.pre88 = zext i32 %.pre83 to i64 br label %_ZN4llvh15SmallVectorImplIDsE7reserveEm.exit _ZN4llvh15SmallVectorImplIDsE7reserveEm.exit: ; preds = %if.end, %if.then.i27 - %conv.i30.pre-phi = phi i64 [ %conv.i, %if.end ], [ %.pre87, %if.then.i27 ] + %conv.i30.pre-phi = phi i64 [ %conv.i, %if.end ], [ %.pre88, %if.then.i27 ] %11 = phi i32 [ %1, %if.end ], [ %.pre83, %if.then.i27 ] %12 = phi ptr [ %0, %if.end ], [ %.pre, %if.then.i27 ] %add.ptr10 = getelementptr inbounds i8, ptr %12, i64 %sub.ptr.sub @@ -4365,15 +4365,16 @@ if.then.i52: ; preds = %if.then17 %add.ptr.i.i.i.i54 = getelementptr inbounds nuw i8, ptr %this, i64 16 tail call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull %add.ptr.i.i.i.i54, i64 noundef %add.i53, i64 noundef 2) #11 %.pre11.pre.i = load i32, ptr %Size.i, align 8 + %.pre84 = load ptr, ptr %this, align 8 br label %if.end.i47 if.end.i47: ; preds = %if.then.i52, %if.then17 + %14 = phi ptr [ %.pre84, %if.then.i52 ], [ %12, %if.then17 ] %.pre11.i48 = phi i32 [ %.pre11.pre.i, %if.then.i52 ], [ %11, %if.then17 ] %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %retval.0.i.i.i.i, 0 br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZN4llvh15SmallVectorImplIDsE6appendISt13move_iteratorIPDsEvEEvT_S6_.exit, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.end.i47 - %14 = load ptr, ptr %this, align 8 %conv.i7.i = zext i32 %.pre11.i48 to i64 %add.ptr.i.i49 = getelementptr inbounds nuw i16, ptr %14, i64 %conv.i7.i tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %add.ptr.i.i49, ptr nonnull align 2 %add.ptr21, i64 %sub.ptr.sub.i.i.i.i39, i1 false) @@ -4476,16 +4477,16 @@ _ZN6hermes2vm10StringView14const_iteratorppEv.exit: ; preds = %if.then.i63, %if. br i1 %cmp43.not, label %for.end.loopexit, label %for.body, !llvm.loop !28 for.end.loopexit: ; preds = %_ZN6hermes2vm10StringView14const_iteratorppEv.exit - %.pre88 = ptrtoint ptr %From.sroa.0.1 to i64 - %.pre89 = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %.pre88 - %.pre90 = ptrtoint ptr %From.sroa.8.1 to i64 - %.pre91 = sub i64 %sub.ptr.lhs.cast5.i.i.i.i, %.pre90 - %.pre92 = ashr exact i64 %.pre91, 1 - %.pre93 = select i1 %tobool.not.i.i.i.i, i64 %.pre92, i64 %.pre89 + %.pre89 = ptrtoint ptr %From.sroa.0.1 to i64 + %.pre90 = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %.pre89 + %.pre91 = ptrtoint ptr %From.sroa.8.1 to i64 + %.pre92 = sub i64 %sub.ptr.lhs.cast5.i.i.i.i, %.pre91 + %.pre93 = ashr exact i64 %.pre92, 1 + %.pre94 = select i1 %tobool.not.i.i.i.i, i64 %.pre93, i64 %.pre90 br label %for.end for.end: ; preds = %if.end31, %for.end.loopexit - %retval.0.i.i.i.i.i.i.i.i.i.pre-phi = phi i64 [ %.pre93, %for.end.loopexit ], [ %retval.0.i.i.i.i, %if.end31 ] + %retval.0.i.i.i.i.i.i.i.i.i.pre-phi = phi i64 [ %.pre94, %for.end.loopexit ], [ %retval.0.i.i.i.i, %if.end31 ] %From.sroa.0.0.lcssa = phi ptr [ %From.sroa.0.1, %for.end.loopexit ], [ %From.coerce0, %if.end31 ] %From.sroa.8.0.lcssa = phi ptr [ %From.sroa.8.1, %for.end.loopexit ], [ %From.coerce1, %if.end31 ] %cmp15.i.i.i.i.i.i.i.i = icmp sgt i64 %retval.0.i.i.i.i.i.i.i.i.i.pre-phi, 0 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/hyperscan/optimized/stream_compress.c.ll b/bench/hyperscan/optimized/stream_compress.c.ll index 0b4f2319e30..2688a48f70f 100644 --- a/bench/hyperscan/optimized/stream_compress.c.ll +++ b/bench/hyperscan/optimized/stream_compress.c.ll @@ -11,7 +11,7 @@ target triple = "x86_64-unknown-linux-gnu" @mmbit_maxlevel_direct_lut = external local_unnamed_addr constant [32 x i8], align 16 @mmbit_root_offset_from_level = external local_unnamed_addr constant [7 x i32], align 16 -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden i32 @expand_stream(ptr noundef %stream, ptr noundef %rose, ptr noundef %buf, i64 noundef %buf_size) local_unnamed_addr #0 { entry: %si_state.i = alloca [7 x %struct.mmbit_sparse_state], align 16 @@ -1994,7 +1994,7 @@ sc_expand.exit: ; preds = %if.then19.i596.i, % ret i32 %retval.0.i } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden i64 @compress_stream(ptr nocapture noundef writeonly initializes((0, 9)) %buf, i64 noundef %buf_size, ptr nocapture noundef readonly %rose, ptr noundef readonly %stream) local_unnamed_addr #0 { entry: %stateOffsets.i = getelementptr inbounds nuw i8, ptr %rose, i64 284 @@ -3699,8 +3699,8 @@ sc_compress.exit: ; preds = %mmbit_compsize.exit ret i64 %retval.0.i } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable -define hidden i64 @size_compress_stream(ptr noundef readonly %rose, ptr noundef readonly %stream) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read, inaccessiblemem: write) uwtable +define hidden i64 @size_compress_stream(ptr noundef %rose, ptr noundef readonly %stream) local_unnamed_addr #1 { entry: %si_state.i.i = alloca [7 x %struct.mmbit_sparse_state], align 16 %add.ptr.i = getelementptr inbounds nuw i8, ptr %stream, i64 16 @@ -5591,7 +5591,7 @@ if.then23.i.i.i: ; preds = %if.then9.i.i.i if.end28.i.i.i: ; preds = %if.then9.i.i.i, %while.body.i555.i.i %num_block.i.1.i.i = phi i32 [ %spec.select238.i.i, %if.then9.i.i.i ], [ %num_block.i.0.i.i, %while.body.i555.i.i ] %cmp29.i.i.i = icmp eq i32 %level.i544.0.i.i, 0 - br i1 %cmp29.i.i.i, label %if.end.i35.i.i, label %if.end34.i.i.i + br i1 %cmp29.i.i.i, label %mmbit_compsize.exit.i.i, label %if.end34.i.i.i if.end34.i.i.i: ; preds = %if.end28.i.i.i %dec.i557.i.i = add i32 %level.i544.0.i.i, -1 @@ -5608,7 +5608,7 @@ while.body.i555.i.i.backedge: ; preds = %if.end34.i.i.i, %if %level.i544.0.i.i.be = phi i32 [ %inc26.i.i.i, %if.then23.i.i.i ], [ %dec.i557.i.i, %if.end34.i.i.i ] br label %while.body.i555.i.i -if.end.i35.i.i: ; preds = %if.end28.i.i.i +mmbit_compsize.exit.i.i: ; preds = %if.end28.i.i.i %conv32.i.i.i = zext i32 %num_block.i.1.i.i to i64 %mul33.i.i.i = shl nuw nsw i64 %conv32.i.i.i, 3 %add11.i.i = add i64 %mul33.i.i.i, %add16.i.i @@ -5751,9 +5751,9 @@ if.then94.i.i.i: ; preds = %mmbit_get_flat_bloc %add96.i.i.i = or disjoint i32 %mul74.i.i.i, %cast.i111.i.i.i br label %do.body21.lr.ph.split.i.i -if.else.i41.i.i: ; preds = %if.end.i35.i.i, %if.end.i35.thread.i.i - %conv.i.i.i.pre-phi.i = phi i32 [ %conv.i.i554.i.i, %if.end.i35.i.i ], [ %.pre100.i, %if.end.i35.thread.i.i ] - %add112635.i.i = phi i64 [ %add11.i.i, %if.end.i35.i.i ], [ %add1121.i.i, %if.end.i35.thread.i.i ] +if.else.i41.i.i: ; preds = %mmbit_compsize.exit.i.i, %if.end.i35.thread.i.i + %conv.i.i.i.pre-phi.i = phi i32 [ %conv.i.i554.i.i, %mmbit_compsize.exit.i.i ], [ %.pre100.i, %if.end.i35.thread.i.i ] + %add112635.i.i = phi i64 [ %add11.i.i, %mmbit_compsize.exit.i.i ], [ %add1121.i.i, %if.end.i35.thread.i.i ] %.in.i.i = getelementptr inbounds nuw i8, ptr %rose, i64 8 %230 = load i8, ptr %.in.i.i, align 8 br label %while.body.i.i.i @@ -6169,7 +6169,7 @@ sc_size.exit: ; preds = %if.end19.i.i.i, %do declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define internal fastcc i64 @sc_som_expand(ptr nocapture noundef readonly %rose, i64 noundef range(i64 1, 0) %currOffset, ptr nocapture noundef %stream, ptr noundef %buf, i64 noundef range(i64 9, 0) %buf_size) unnamed_addr #0 { +define internal fastcc i64 @sc_som_expand(ptr nocapture noundef readonly %rose, i64 noundef range(i64 1, 0) %currOffset, ptr nocapture noundef %stream, ptr noundef %buf, i64 noundef range(i64 9, 0) %buf_size) unnamed_addr #3 { entry: %somLocation = getelementptr inbounds nuw i8, ptr %rose, i64 352 %0 = load i32, ptr %somLocation, align 4 @@ -7003,15 +7003,15 @@ return: ; preds = %if.then19.i107, %if } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.ctlz.i32(i32, i1 immarg) #3 +declare i32 @llvm.ctlz.i32(i32, i1 immarg) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.cttz.i64(i64, i1 immarg) #3 +declare i64 @llvm.cttz.i64(i64, i1 immarg) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctpop.i64(i64) #3 +declare i64 @llvm.ctpop.i64(i64) #4 -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable define internal fastcc i64 @sc_left_compress(ptr nocapture noundef readonly %rose, i64 noundef %currOffset, ptr nocapture noundef readonly %stream, ptr nocapture noundef writeonly %buf) unnamed_addr #0 { entry: %si_state = alloca [7 x %struct.mmbit_sparse_state], align 16 @@ -7638,7 +7638,7 @@ return: ; preds = %if.else16.i, %if.en } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define internal fastcc i64 @sc_som_compress(ptr nocapture noundef readonly %rose, i64 noundef range(i64 1, 0) %currOffset, ptr nocapture noundef readonly %stream, ptr nocapture noundef writeonly %buf, i64 noundef %buf_size) unnamed_addr #0 { +define internal fastcc i64 @sc_som_compress(ptr nocapture noundef readonly %rose, i64 noundef range(i64 1, 0) %currOffset, ptr nocapture noundef readonly %stream, ptr nocapture noundef writeonly %buf, i64 noundef %buf_size) unnamed_addr #3 { entry: %somLocation = getelementptr inbounds nuw i8, ptr %rose, i64 352 %0 = load i32, ptr %somLocation, align 4 @@ -8597,20 +8597,21 @@ return: ; preds = %if.end19.i, %do.bod } ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #4 +declare i32 @llvm.umin.i32(i32, i32) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 -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"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } -attributes #1 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +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"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +attributes #1 = { nofree norecurse nosync nounwind 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"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -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 nosync nounwind willreturn memory(argmem: readwrite) } +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"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll b/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll index e7b1c2fcc54..d951ae339b0 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,7 +3137,7 @@ 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" @@ -3173,9 +3172,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 +3190,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 +3237,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 +4114,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/ipopt/optimized/IpMultiVectorMatrix.ll b/bench/ipopt/optimized/IpMultiVectorMatrix.ll index 7d31fd673b3..3269e4a89e3 100644 --- a/bench/ipopt/optimized/IpMultiVectorMatrix.ll +++ b/bench/ipopt/optimized/IpMultiVectorMatrix.ll @@ -799,17 +799,17 @@ define void @_ZNK5Ipopt17MultiVectorMatrix14MultVectorImplEdRKNS_6VectorEdRS1_(p %13 = getelementptr inbounds nuw i8, ptr %2, i64 233 %14 = load i8, ptr %13, align 1 %15 = trunc i8 %14 to i1 - br i1 %15, label %16, label %43 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 56 + br i1 %15, label %17, label %43 -16: ; preds = %12 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %18 = load ptr, ptr %17, align 8 +17: ; preds = %12 + %18 = load ptr, ptr %16, align 8 %19 = getelementptr inbounds nuw i8, ptr %18, i64 16 %20 = load i32, ptr %19, align 8 %21 = icmp sgt i32 %20, 0 br i1 %21, label %.lr.ph29, label %.loopexit -.lr.ph29: ; preds = %16 +.lr.ph29: ; preds = %17 %22 = getelementptr inbounds nuw i8, ptr %2, i64 240 %23 = load double, ptr %22, align 8 %24 = fmul double %1, %23 @@ -839,7 +839,7 @@ _ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit: ; preds = %27, %31 tail call void %37(ptr noundef nonnull align 8 dereferenceable(205) %4, double noundef %24, ptr noundef nonnull align 8 dereferenceable(205) %.0.i, double noundef 0.000000e+00, ptr noundef nonnull align 8 dereferenceable(205) %.0.i, double noundef 1.000000e+00) tail call void @_ZN5Ipopt12TaggedObject13ObjectChangedEv(ptr noundef nonnull align 8 dereferenceable(205) %4) %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1 - %38 = load ptr, ptr %17, align 8 + %38 = load ptr, ptr %16, align 8 %39 = getelementptr inbounds nuw i8, ptr %38, i64 16 %40 = load i32, ptr %39, align 8 %41 = sext i32 %40 to i64 @@ -849,51 +849,50 @@ _ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit: ; preds = %27, %31 43: ; preds = %12 %44 = getelementptr inbounds nuw i8, ptr %2, i64 216 %45 = load ptr, ptr %44, align 8 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %47 = load ptr, ptr %46, align 8 - %48 = getelementptr inbounds nuw i8, ptr %47, i64 16 - %49 = load i32, ptr %48, align 8 - %50 = icmp sgt i32 %49, 0 - br i1 %50, label %.lr.ph, label %.loopexit + %46 = load ptr, ptr %16, align 8 + %47 = getelementptr inbounds nuw i8, ptr %46, i64 16 + %48 = load i32, ptr %47, align 8 + %49 = icmp sgt i32 %48, 0 + br i1 %49, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %43 - %51 = getelementptr inbounds nuw i8, ptr %0, i64 104 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 80 - br label %53 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 80 + br label %52 -53: ; preds = %.lr.ph, %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25 +52: ; preds = %.lr.ph, %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25 ] - %54 = getelementptr inbounds nuw double, ptr %45, i64 %indvars.iv - %55 = load double, ptr %54, align 8 - %56 = fmul double %1, %55 - %57 = load ptr, ptr %51, align 8 - %58 = getelementptr inbounds nuw %"class.Ipopt::SmartPtr.11", ptr %57, i64 %indvars.iv - %59 = load ptr, ptr %58, align 8 - %.not.i23 = icmp eq ptr %59, null - br i1 %.not.i23, label %60, label %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25 - -60: ; preds = %53 - %61 = load ptr, ptr %52, align 8 - %62 = getelementptr inbounds nuw %"class.Ipopt::SmartPtr.12", ptr %61, i64 %indvars.iv - %63 = load ptr, ptr %62, align 8 + %53 = getelementptr inbounds nuw double, ptr %45, i64 %indvars.iv + %54 = load double, ptr %53, align 8 + %55 = fmul double %1, %54 + %56 = load ptr, ptr %50, align 8 + %57 = getelementptr inbounds nuw %"class.Ipopt::SmartPtr.11", ptr %56, i64 %indvars.iv + %58 = load ptr, ptr %57, align 8 + %.not.i23 = icmp eq ptr %58, null + br i1 %.not.i23, label %59, label %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25 + +59: ; preds = %52 + %60 = load ptr, ptr %51, align 8 + %61 = getelementptr inbounds nuw %"class.Ipopt::SmartPtr.12", ptr %60, i64 %indvars.iv + %62 = load ptr, ptr %61, align 8 br label %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25 -_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25: ; preds = %53, %60 - %.0.i24 = phi ptr [ %63, %60 ], [ %59, %53 ] - %64 = load ptr, ptr %4, align 8 - %65 = getelementptr inbounds nuw i8, ptr %64, i64 192 - %66 = load ptr, ptr %65, align 8 - tail call void %66(ptr noundef nonnull align 8 dereferenceable(205) %4, double noundef %56, ptr noundef nonnull align 8 dereferenceable(205) %.0.i24, double noundef 0.000000e+00, ptr noundef nonnull align 8 dereferenceable(205) %.0.i24, double noundef 1.000000e+00) +_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25: ; preds = %52, %59 + %.0.i24 = phi ptr [ %62, %59 ], [ %58, %52 ] + %63 = load ptr, ptr %4, align 8 + %64 = getelementptr inbounds nuw i8, ptr %63, i64 192 + %65 = load ptr, ptr %64, align 8 + tail call void %65(ptr noundef nonnull align 8 dereferenceable(205) %4, double noundef %55, ptr noundef nonnull align 8 dereferenceable(205) %.0.i24, double noundef 0.000000e+00, ptr noundef nonnull align 8 dereferenceable(205) %.0.i24, double noundef 1.000000e+00) tail call void @_ZN5Ipopt12TaggedObject13ObjectChangedEv(ptr noundef nonnull align 8 dereferenceable(205) %4) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %67 = load ptr, ptr %46, align 8 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 16 - %69 = load i32, ptr %68, align 8 - %70 = sext i32 %69 to i64 - %71 = icmp slt i64 %indvars.iv.next, %70 - br i1 %71, label %53, label %.loopexit, !llvm.loop !8 - -.loopexit: ; preds = %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25, %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit, %43, %16 + %66 = load ptr, ptr %16, align 8 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 16 + %68 = load i32, ptr %67, align 8 + %69 = sext i32 %68 to i64 + %70 = icmp slt i64 %indvars.iv.next, %69 + br i1 %70, label %52, label %.loopexit, !llvm.loop !8 + +.loopexit: ; preds = %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit25, %_ZNK5Ipopt17MultiVectorMatrix8ConstVecEi.exit, %43, %17 ret void } diff --git a/bench/jemalloc/optimized/hpdata.ll b/bench/jemalloc/optimized/hpdata.ll index 3b727d62467..a804e227b86 100644 --- a/bench/jemalloc/optimized/hpdata.ll +++ b/bench/jemalloc/optimized/hpdata.ll @@ -1871,8 +1871,8 @@ entry: ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define hidden ptr @hpdata_reserve_alloc(ptr nocapture noundef %hpdata, i64 noundef %sz) local_unnamed_addr #5 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden ptr @hpdata_reserve_alloc(ptr noundef %hpdata, i64 noundef %sz) local_unnamed_addr #5 { entry: %shr = lshr i64 %sz, 12 %active_pages = getelementptr inbounds nuw i8, ptr %hpdata, i64 112 @@ -2211,8 +2211,8 @@ if.end46: ; preds = %while.end45, %fb_se ret ptr %add.ptr } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define hidden void @hpdata_unreserve(ptr nocapture noundef %hpdata, ptr noundef %addr, i64 noundef %sz) local_unnamed_addr #5 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden void @hpdata_unreserve(ptr noundef %hpdata, ptr noundef %addr, i64 noundef %sz) local_unnamed_addr #5 { entry: %0 = ptrtoint ptr %addr to i64 %hpdata.val14 = load ptr, ptr %hpdata, align 8 @@ -2358,8 +2358,8 @@ if.end: ; preds = %if.then, %fb_ffs.ex ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define hidden i64 @hpdata_purge_begin(ptr nocapture noundef readonly %hpdata, ptr nocapture noundef initializes((0, 8), (80, 88)) %purge_state) local_unnamed_addr #5 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden i64 @hpdata_purge_begin(ptr noundef %hpdata, ptr nocapture noundef initializes((0, 8), (80, 88)) %purge_state) local_unnamed_addr #5 { entry: %dirty_pages = alloca [8 x i64], align 16 store i64 0, ptr %purge_state, align 8 @@ -2566,8 +2566,8 @@ while.end: ; preds = %fb_ffs.exit, %fb_se ret i64 %sub24 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define hidden noundef zeroext i1 @hpdata_purge_next(ptr nocapture noundef readonly %hpdata, ptr nocapture noundef %purge_state, ptr nocapture noundef writeonly %r_purge_addr, ptr nocapture noundef writeonly %r_purge_size) local_unnamed_addr #5 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden noundef zeroext i1 @hpdata_purge_next(ptr nocapture noundef readonly %hpdata, ptr noundef %purge_state, ptr nocapture noundef writeonly %r_purge_addr, ptr nocapture noundef writeonly %r_purge_size) local_unnamed_addr #5 { entry: %next_purge_search_begin = getelementptr inbounds nuw i8, ptr %purge_state, i64 80 %0 = load i64, ptr %next_purge_search_begin, align 8 @@ -2662,7 +2662,7 @@ return: ; preds = %while.body.i75.i, % } ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define hidden void @hpdata_purge_end(ptr nocapture noundef %hpdata, ptr nocapture noundef %purge_state) local_unnamed_addr #5 { +define hidden void @hpdata_purge_end(ptr nocapture noundef %hpdata, ptr nocapture noundef %purge_state) local_unnamed_addr #6 { entry: %to_purge = getelementptr inbounds nuw i8, ptr %purge_state, i64 16 br label %for.body.i @@ -2724,36 +2724,37 @@ entry: } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #6 +declare void @llvm.assume(i1 noundef) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.cttz.i64(i64, i1 immarg) #7 +declare i64 @llvm.cttz.i64(i64, i1 immarg) #8 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctlz.i64(i64, i1 immarg) #7 +declare i64 @llvm.ctlz.i64(i64, i1 immarg) #8 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctpop.i64(i64) #7 +declare i64 @llvm.ctpop.i64(i64) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #9 +declare i64 @llvm.umin.i64(i64, i64) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #9 +declare i64 @llvm.umax.i64(i64, i64) #10 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 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 #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 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(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 = { 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 #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +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(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 nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +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) } !llvm.module.flags = !{!0, !1, !2, !3, !4} 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/rapidyaml.cpp.ll b/bench/jsonnet/optimized/rapidyaml.cpp.ll index fac98df7653..d5d7a9d533e 100644 --- a/bench/jsonnet/optimized/rapidyaml.cpp.ll +++ b/bench/jsonnet/optimized/rapidyaml.cpp.ll @@ -1724,20 +1724,20 @@ define dso_local noundef i64 @_ZN2c413base64_decodeENS_15basic_substringIKcEENS_ br i1 %70, label %71, label %89 71: ; preds = %69 - %72 = getelementptr inbounds nuw i8, ptr %.068.lcssa, i64 1 - %73 = load i8, ptr %72, align 1 - %74 = sext i8 %73 to i64 - %75 = getelementptr inbounds [128 x i8], ptr @_ZN2c46detailL22base64_char_to_sextet_E, i64 0, i64 %74 - %76 = load i8, ptr %75, align 1 - %77 = sext i8 %76 to i32 - %78 = shl nsw i32 %77, 12 - %79 = load i8, ptr %.068.lcssa, align 1 - %80 = sext i8 %79 to i64 - %81 = getelementptr inbounds [128 x i8], ptr @_ZN2c46detailL22base64_char_to_sextet_E, i64 0, i64 %80 - %82 = load i8, ptr %81, align 1 + %72 = load i8, ptr %.068.lcssa, align 1 + %73 = getelementptr inbounds nuw i8, ptr %.068.lcssa, i64 1 + %74 = load i8, ptr %73, align 1 + %75 = sext i8 %74 to i64 + %76 = getelementptr inbounds [128 x i8], ptr @_ZN2c46detailL22base64_char_to_sextet_E, i64 0, i64 %75 + %77 = load i8, ptr %76, align 1 + %78 = sext i8 %72 to i64 + %79 = getelementptr inbounds [128 x i8], ptr @_ZN2c46detailL22base64_char_to_sextet_E, i64 0, i64 %78 + %80 = sext i8 %77 to i32 + %81 = shl nsw i32 %80, 12 + %82 = load i8, ptr %79, align 1 %83 = sext i8 %82 to i32 %84 = shl nsw i32 %83, 18 - %85 = or i32 %84, %78 + %85 = or i32 %84, %81 %86 = lshr i32 %85, 16 %87 = trunc i32 %86 to i8 %88 = getelementptr inbounds i8, ptr %2, i64 %.069.lcssa @@ -3314,7 +3314,7 @@ define dso_local void @_ZN2c43yml4TreeC2ERKNS0_9CallbacksE(ptr nocapture noundef } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4TreeC2EmmRKNS0_9CallbacksE(ptr nocapture noundef nonnull align 8 dereferenceable(256) initializes((0, 96)) %0, i64 noundef %1, i64 noundef %2, ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %3) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZN2c43yml4TreeC2EmmRKNS0_9CallbacksE(ptr noundef nonnull align 8 dereferenceable(256) initializes((0, 96)) %0, i64 noundef %1, i64 noundef %2, ptr nocapture noundef nonnull readonly align 8 dereferenceable(32) %3) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(256) %0, i8 0, i64 24, i1 false) %6 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -3394,7 +3394,7 @@ _ZN2c43yml4TreeD2Ev.exit: ; preds = %27 } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree7reserveEm(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0, i64 noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZN2c43yml4Tree7reserveEm(ptr noundef nonnull align 8 dereferenceable(256) %0, i64 noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca [28 x i8], align 16 %4 = alloca %"struct.c4::yml::Location", align 8 %5 = alloca [23 x i8], align 16 @@ -4829,7 +4829,7 @@ define dso_local void @_ZN2c43yml4Tree12_clear_rangeEmm(ptr nocapture noundef no } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree11_claim_rootEv(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { +define dso_local void @_ZN2c43yml4Tree11_claim_rootEv(ptr noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { %2 = alloca [28 x i8], align 16 %3 = alloca %"struct.c4::yml::Location", align 8 %4 = alloca [23 x i8], align 16 @@ -4894,7 +4894,7 @@ _ZN2c43yml4Tree14_set_hierarchyEmmm.exit: ; preds = %1 } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree5clearEv(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZN2c43yml4Tree5clearEv(ptr noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %2 = alloca [28 x i8], align 16 %3 = alloca %"struct.c4::yml::Location", align 8 %4 = alloca [23 x i8], align 16 @@ -5032,7 +5032,7 @@ _ZN2c43yml4Tree11_claim_rootEv.exit: ; preds = %.split2.i, %_ZN2c43 } ; Function Attrs: mustprogress uwtable -define dso_local noundef i64 @_ZN2c43yml4Tree6_claimEv(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local noundef i64 @_ZN2c43yml4Tree6_claimEv(ptr noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %2 = alloca [36 x i8], align 16 %3 = alloca %"struct.c4::yml::Location", align 8 %4 = alloca [31 x i8], align 16 @@ -5105,8 +5105,8 @@ define dso_local noundef i64 @_ZN2c43yml4Tree6_claimEv(ptr nocapture noundef non %.pre = load i64, ptr %33, align 8 br label %45 -45: ; preds = %30, %36 - %46 = phi i64 [ %34, %30 ], [ %.pre, %36 ] +45: ; preds = %36, %30 + %46 = phi i64 [ %.pre, %36 ], [ %34, %30 ] %47 = load i64, ptr %10, align 8 %48 = icmp ult i64 %47, %46 br i1 %48, label %58, label %49 @@ -5982,7 +5982,7 @@ _ZN2c43yml4Tree14_rem_hierarchyEm.exit: ; preds = %53, %55 } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree7reorderEv(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { +define dso_local void @_ZN2c43yml4Tree7reorderEv(ptr noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { %2 = alloca i64, align 8 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8 @@ -7931,7 +7931,7 @@ _ZN2c43yml4Tree14_rem_hierarchyEm.exit: ; preds = %123, %125 } ; Function Attrs: mustprogress uwtable -define dso_local noundef i64 @_ZN2c43yml4Tree4moveEPS1_mmm(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) local_unnamed_addr #1 align 2 { +define dso_local noundef i64 @_ZN2c43yml4Tree4moveEPS1_mmm(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) local_unnamed_addr #1 align 2 { %6 = alloca [31 x i8], align 16 %7 = alloca %"struct.c4::yml::Location", align 8 %8 = alloca [29 x i8], align 16 @@ -8035,7 +8035,7 @@ define dso_local noundef i64 @_ZN2c43yml4Tree4moveEPS1_mmm(ptr nocapture noundef } ; Function Attrs: mustprogress uwtable -define dso_local noundef i64 @_ZN2c43yml4Tree9duplicateEPKS1_mmm(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) local_unnamed_addr #1 align 2 { +define dso_local noundef i64 @_ZN2c43yml4Tree9duplicateEPKS1_mmm(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) local_unnamed_addr #1 align 2 { %6 = alloca [31 x i8], align 16 %7 = alloca %"struct.c4::yml::Location", align 8 %8 = alloca [29 x i8], align 16 @@ -8154,7 +8154,7 @@ define dso_local noundef i64 @_ZN2c43yml4Tree9duplicateEPKS1_mmm(ptr nocapture n } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree18set_root_as_streamEv(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { +define dso_local void @_ZN2c43yml4Tree18set_root_as_streamEv(ptr noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { %2 = alloca [31 x i8], align 16 %3 = alloca %"struct.c4::yml::Location", align 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -8577,7 +8577,7 @@ define dso_local noundef i64 @_ZN2c43yml4Tree9duplicateEmmm(ptr noundef nonnull } ; Function Attrs: mustprogress uwtable -define dso_local noundef i64 @_ZN2c43yml4Tree18duplicate_childrenEPKS1_mmm(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) local_unnamed_addr #1 align 2 { +define dso_local noundef i64 @_ZN2c43yml4Tree18duplicate_childrenEPKS1_mmm(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) local_unnamed_addr #1 align 2 { %6 = alloca [31 x i8], align 16 %7 = alloca %"struct.c4::yml::Location", align 8 %8 = alloca [29 x i8], align 16 @@ -8715,7 +8715,7 @@ define dso_local void @_ZN2c43yml4Tree18duplicate_contentsEmm(ptr noundef nonnul } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree18duplicate_contentsEPKS1_mm(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #1 align 2 { +define dso_local void @_ZN2c43yml4Tree18duplicate_contentsEPKS1_mm(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #1 align 2 { %5 = alloca [31 x i8], align 16 %6 = alloca %"struct.c4::yml::Location", align 8 %7 = alloca [29 x i8], align 16 @@ -12500,7 +12500,7 @@ _ZNK2c415basic_substringIKcE4findEcm.exit205.thread: ; preds = %._crit_edge.thre } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree12resolve_tagsEv(ptr nocapture noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { +define dso_local void @_ZN2c43yml4Tree12resolve_tagsEv(ptr noundef nonnull align 8 dereferenceable(256) %0) local_unnamed_addr #1 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = load i64, ptr %2, align 8 %4 = icmp eq i64 %3, 0 @@ -12663,7 +12663,7 @@ define internal fastcc noundef i64 @_ZN2c43yml12_GLOBAL__N_125_count_resolved_ta } ; Function Attrs: mustprogress uwtable -define internal fastcc void @_ZN2c43yml12_GLOBAL__N_113_resolve_tagsEPNS0_4TreeEm(ptr nocapture noundef nonnull %0, i64 noundef %1) unnamed_addr #1 { +define internal fastcc void @_ZN2c43yml12_GLOBAL__N_113_resolve_tagsEPNS0_4TreeEm(ptr noundef nonnull %0, i64 noundef %1) unnamed_addr #1 { %3 = load ptr, ptr %0, align 8 %4 = getelementptr inbounds %"struct.c4::yml::NodeData", ptr %3, i64 %1, i32 4 %.051 = load i64, ptr %4, align 8 @@ -12787,7 +12787,7 @@ define dso_local { ptr, i64 } @_ZNK2c43yml4Tree13lookup_result10unresolvedEv(ptr ret { ptr, i64 } %.fca.1.insert4 } -; 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 @_ZNK2c43yml4Tree8_advanceEPNS1_13lookup_resultEm(ptr nocapture noundef nonnull readnone align 8 dereferenceable(256) %0, ptr nocapture noundef %1, i64 noundef %2) local_unnamed_addr #30 align 2 personality ptr @__gxx_personality_v0 { %4 = getelementptr inbounds nuw i8, ptr %1, i64 16 %5 = load i64, ptr %4, align 8 @@ -12816,7 +12816,7 @@ _ZNK2c415basic_substringIKcE11begins_withEc.exit.thread: ; preds = %3, %14, %_ZN } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZNK2c43yml4Tree11lookup_pathENS_15basic_substringIKcEEm(ptr dead_on_unwind noalias nocapture writable sret(%"struct.c4::yml::Tree::lookup_result") align 8 initializes((0, 40)) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %1, ptr %2, i64 %3, i64 noundef %4) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZNK2c43yml4Tree11lookup_pathENS_15basic_substringIKcEEm(ptr dead_on_unwind noalias writable sret(%"struct.c4::yml::Tree::lookup_result") align 8 initializes((0, 40)) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %1, ptr %2, i64 %3, i64 noundef %4) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %6 = alloca %"struct.c4::yml::Tree::_lookup_path_token", align 8 %7 = icmp eq i64 %4, -1 %spec.select = select i1 %7, i64 0, i64 %4 @@ -12882,16 +12882,18 @@ _ZNK2c43yml4Tree12_lookup_pathEPNS1_13lookup_resultE.exit: ; preds = %_ZNK2c43ym %29 = load i64, ptr %8, align 8 %30 = icmp eq i64 %29, %spec.select %or.cond7 = select i1 %28, i1 %30, i1 false - %spec.store.select = select i1 %or.cond7, i64 -1, i64 %29 - store i64 %spec.store.select, ptr %8, align 8 + br i1 %or.cond7, label %31, label %.critedge + +31: ; preds = %_ZNK2c43yml4Tree12_lookup_pathEPNS1_13lookup_resultE.exit + store i64 -1, ptr %8, align 8 br label %.critedge -.critedge: ; preds = %_ZNK2c43yml4Tree12_lookup_pathEPNS1_13lookup_resultE.exit, %5 +.critedge: ; preds = %5, %_ZNK2c43yml4Tree12_lookup_pathEPNS1_13lookup_resultE.exit, %31 ret void } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZNK2c43yml4Tree12_lookup_pathEPNS1_13lookup_resultE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %0, ptr nocapture noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZNK2c43yml4Tree12_lookup_pathEPNS1_13lookup_resultE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %0, ptr noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"struct.c4::yml::Tree::_lookup_path_token", align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 @@ -13272,7 +13274,7 @@ define dso_local noundef i64 @_ZN2c43yml4Tree21lookup_path_or_modifyEPKS1_mNS_15 } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN2c43yml4Tree19_lookup_path_modifyEPNS1_13lookup_resultE(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr nocapture noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZN2c43yml4Tree19_lookup_path_modifyEPNS1_13lookup_resultE(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"struct.c4::yml::Tree::_lookup_path_token", align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 @@ -13319,7 +13321,7 @@ define dso_local void @_ZN2c43yml4Tree19_lookup_path_modifyEPNS1_13lookup_result } ; Function Attrs: mustprogress uwtable -define dso_local noundef i64 @_ZNK2c43yml4Tree10_next_nodeEPNS1_13lookup_resultEPNS1_18_lookup_path_tokenE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %0, ptr nocapture noundef %1, ptr nocapture noundef nonnull %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local noundef i64 @_ZNK2c43yml4Tree10_next_nodeEPNS1_13lookup_resultEPNS1_18_lookup_path_tokenE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %0, ptr noundef %1, ptr nocapture noundef nonnull %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %4 = alloca [29 x i8], align 16 %5 = alloca %"struct.c4::yml::Location", align 8 %6 = alloca %"struct.c4::yml::Tree::_lookup_path_token", align 8 @@ -13665,7 +13667,7 @@ _ZNK2c415basic_substringIKcE11begins_withEc.exit67.thread: ; preds = %.thread, % } ; Function Attrs: mustprogress uwtable -define dso_local noundef i64 @_ZN2c43yml4Tree17_next_node_modifyEPNS1_13lookup_resultEPNS1_18_lookup_path_tokenE(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr nocapture noundef %1, ptr nocapture noundef nonnull %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local noundef i64 @_ZN2c43yml4Tree17_next_node_modifyEPNS1_13lookup_resultEPNS1_18_lookup_path_tokenE(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef %1, ptr nocapture noundef nonnull %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %4 = alloca [37 x i8], align 16 %5 = alloca %"struct.c4::yml::Location", align 8 %6 = alloca [62 x i8], align 16 @@ -14697,7 +14699,7 @@ _ZN2c43yml4Tree6to_valEmNS_15basic_substringIKcEEm.exit: ; preds = %445, %450, % } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZNK2c43yml4Tree11_next_tokenEPNS1_13lookup_resultERKNS1_18_lookup_path_tokenE(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"struct.c4::yml::Tree::_lookup_path_token") align 8 %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %1, ptr nocapture noundef %2, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %3) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZNK2c43yml4Tree11_next_tokenEPNS1_13lookup_resultERKNS1_18_lookup_path_tokenE(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"struct.c4::yml::Tree::_lookup_path_token") align 8 %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %1, ptr noundef %2, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %3) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 { %5 = alloca [55 x i8], align 16 %6 = alloca %"struct.c4::yml::Location", align 8 %7 = alloca [25 x i8], align 16 @@ -32795,7 +32797,7 @@ _ZNK2c43yml6Parser4_errIJEEEvNS_15basic_substringIKcEEDprRKT_.exit: ; preds = %2 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 @_ZN2c43yml6Parser24_move_val_tag_to_key_tagEv(ptr nocapture noundef nonnull align 8 dereferenceable(2736) %0) local_unnamed_addr #30 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 2608 %3 = getelementptr inbounds nuw i8, ptr %0, i64 2616 @@ -50943,7 +50945,7 @@ define linkonce_odr dso_local noundef i32 @_ZNK2c415basic_substringIKcE7compareE declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #7 ; Function Attrs: mustprogress uwtable -define internal fastcc { ptr, i64 } @_ZN2c43yml12_GLOBAL__N_114_transform_tagEPNS0_4TreeENS_15basic_substringIKcEEm(ptr nocapture noundef nonnull %0, ptr %1, i64 %2, i64 noundef range(i64 0, -1) %3) unnamed_addr #1 personality ptr @__gxx_personality_v0 { +define internal fastcc { ptr, i64 } @_ZN2c43yml12_GLOBAL__N_114_transform_tagEPNS0_4TreeENS_15basic_substringIKcEEm(ptr noundef nonnull %0, ptr %1, i64 %2, i64 noundef range(i64 0, -1) %3) unnamed_addr #1 personality ptr @__gxx_personality_v0 { %5 = alloca [45 x i8], align 16 %6 = alloca %"struct.c4::yml::Location", align 8 %7 = alloca [45 x i8], align 16 @@ -52213,6 +52215,8 @@ _ZZNK2c43yml6Parser4_errIJEEEvNS_15basic_substringIKcEEDprRKT_ENKUlS5_E_clES5_.e %53 = load ptr, ptr %6, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 %52 %55 = sub i64 %10, %52 + store ptr %54, ptr %6, align 8 + store i64 %55, ptr %9, align 8 %56 = add i64 %0, 1 %57 = icmp eq i64 %.sroa.5.0, -1 %58 = icmp ugt i64 %56, %.sroa.5.0 @@ -53770,6 +53774,8 @@ _ZZNK2c43yml6Parser4_errIJNS_15basic_substringIKcEEEEEvS5_DprRKT_ENKUlS5_E_clES5 %53 = load ptr, ptr %6, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 %52 %55 = sub i64 %10, %52 + store ptr %54, ptr %6, align 8 + store i64 %55, ptr %9, align 8 %56 = add i64 %0, 1 %57 = icmp eq i64 %.sroa.5.0, -1 %58 = icmp ugt i64 %56, %.sroa.5.0 @@ -54515,7 +54521,7 @@ attributes #26 = { cold nofree noreturn } attributes #27 = { 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 #28 = { mustprogress 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 #29 = { 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 #30 = { 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 #30 = { 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 #31 = { 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 #32 = { 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 #33 = { 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" } diff --git a/bench/libevent/optimized/evutil_rand.c.ll b/bench/libevent/optimized/evutil_rand.c.ll index 810d1ddfb0a..0595e7e5763 100644 --- a/bench/libevent/optimized/evutil_rand.c.ll +++ b/bench/libevent/optimized/evutil_rand.c.ll @@ -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 diff --git a/bench/libjpeg-turbo/optimized/jccolor.c.ll b/bench/libjpeg-turbo/optimized/jccolor.c.ll index c1ff5257dc1..6e7749e4c92 100644 --- a/bench/libjpeg-turbo/optimized/jccolor.c.ll +++ b/bench/libjpeg-turbo/optimized/jccolor.c.ll @@ -22,14 +22,14 @@ define void @jinit_color_converter(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) #4 + tail call void %11(ptr noundef nonnull %0) #5 br label %12 12: ; preds = %4, %1 %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 %14 = load ptr, ptr %13, align 8 %15 = load ptr, ptr %14, align 8 - %16 = tail call ptr %15(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 40) #4 + %16 = tail call ptr %15(ptr noundef nonnull %0, i32 noundef 1, i64 noundef 40) #5 %17 = getelementptr inbounds nuw i8, ptr %0, i64 472 store ptr %16, ptr %17, align 8 store ptr @null_method, ptr %16, align 8 @@ -92,7 +92,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 9, ptr %40, align 8 %41 = load ptr, ptr %0, align 8 %42 = load ptr, ptr %41, align 8 - tail call void %42(ptr noundef nonnull %0) #4 + tail call void %42(ptr noundef nonnull %0) #5 br label %43 43: ; preds = %.sink.split, %35, %32, %29, %23, %20 @@ -125,7 +125,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %55, align 8 %56 = load ptr, ptr %0, align 8 %57 = load ptr, ptr %56, align 8 - tail call void %57(ptr noundef nonnull %0) #4 + tail call void %57(ptr noundef nonnull %0) #5 br label %58 58: ; preds = %53, %51, %46 @@ -140,7 +140,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 10, ptr %63, align 8 %64 = load ptr, ptr %0, align 8 %65 = load ptr, ptr %64, align 8 - tail call void %65(ptr noundef nonnull %0) #4 + tail call void %65(ptr noundef nonnull %0) #5 br label %66 66: ; preds = %61, %58 @@ -161,7 +161,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { br i1 %or.cond, label %72, label %78 72: ; preds = %70, %66 - %73 = tail call i32 @jsimd_can_rgb_gray() #4 + %73 = tail call i32 @jsimd_can_rgb_gray() #5 %.not170 = icmp eq i32 %73, 0 br i1 %.not170, label %76, label %74 @@ -191,7 +191,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %84, align 8 %85 = load ptr, ptr %0, align 8 %86 = load ptr, ptr %85, align 8 - tail call void %86(ptr noundef nonnull %0) #4 + tail call void %86(ptr noundef nonnull %0) #5 br label %241 87: ; preds = %43 @@ -216,7 +216,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %98, align 8 %99 = load ptr, ptr %0, align 8 %100 = load ptr, ptr %99, align 8 - tail call void %100(ptr noundef nonnull %0) #4 + tail call void %100(ptr noundef nonnull %0) #5 br label %101 101: ; preds = %96, %92, %87 @@ -231,7 +231,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 10, ptr %106, align 8 %107 = load ptr, ptr %0, align 8 %108 = load ptr, ptr %107, align 8 - tail call void %108(ptr noundef nonnull %0) #4 + tail call void %108(ptr noundef nonnull %0) #5 br label %109 109: ; preds = %104, %101 @@ -268,7 +268,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %124, align 8 %125 = load ptr, ptr %0, align 8 %126 = load ptr, ptr %125, align 8 - tail call void %126(ptr noundef nonnull %0) #4 + tail call void %126(ptr noundef nonnull %0) #5 br label %241 127: ; preds = %43 @@ -290,7 +290,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %136, align 8 %137 = load ptr, ptr %0, align 8 %138 = load ptr, ptr %137, align 8 - tail call void %138(ptr noundef nonnull %0) #4 + tail call void %138(ptr noundef nonnull %0) #5 br label %139 139: ; preds = %134, %132, %127 @@ -305,7 +305,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 10, ptr %144, align 8 %145 = load ptr, ptr %0, align 8 %146 = load ptr, ptr %145, align 8 - tail call void %146(ptr noundef nonnull %0) #4 + tail call void %146(ptr noundef nonnull %0) #5 br label %147 147: ; preds = %142, %139 @@ -317,7 +317,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { br i1 %or.cond180, label %151, label %157 151: ; preds = %147 - %152 = tail call i32 @jsimd_can_rgb_ycc() #4 + %152 = tail call i32 @jsimd_can_rgb_ycc() #5 %.not160 = icmp eq i32 %152, 0 br i1 %.not160, label %155, label %153 @@ -347,7 +347,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %163, align 8 %164 = load ptr, ptr %0, align 8 %165 = load ptr, ptr %164, align 8 - tail call void %165(ptr noundef nonnull %0) #4 + tail call void %165(ptr noundef nonnull %0) #5 br label %241 166: ; preds = %43 @@ -369,7 +369,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %175, align 8 %176 = load ptr, ptr %0, align 8 %177 = load ptr, ptr %176, align 8 - tail call void %177(ptr noundef nonnull %0) #4 + tail call void %177(ptr noundef nonnull %0) #5 br label %178 178: ; preds = %173, %171, %166 @@ -384,7 +384,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 10, ptr %183, align 8 %184 = load ptr, ptr %0, align 8 %185 = load ptr, ptr %184, align 8 - tail call void %185(ptr noundef nonnull %0) #4 + tail call void %185(ptr noundef nonnull %0) #5 br label %186 186: ; preds = %181, %178 @@ -403,7 +403,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %193, align 8 %194 = load ptr, ptr %0, align 8 %195 = load ptr, ptr %194, align 8 - tail call void %195(ptr noundef nonnull %0) #4 + tail call void %195(ptr noundef nonnull %0) #5 br label %241 196: ; preds = %43 @@ -425,7 +425,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %205, align 8 %206 = load ptr, ptr %0, align 8 %207 = load ptr, ptr %206, align 8 - tail call void %207(ptr noundef nonnull %0) #4 + tail call void %207(ptr noundef nonnull %0) #5 br label %208 208: ; preds = %203, %201, %196 @@ -440,7 +440,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 10, ptr %213, align 8 %214 = load ptr, ptr %0, align 8 %215 = load ptr, ptr %214, align 8 - tail call void %215(ptr noundef nonnull %0) #4 + tail call void %215(ptr noundef nonnull %0) #5 br label %216 216: ; preds = %211, %208 @@ -467,7 +467,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %224, align 8 %225 = load ptr, ptr %0, align 8 %226 = load ptr, ptr %225, align 8 - tail call void %226(ptr noundef nonnull %0) #4 + tail call void %226(ptr noundef nonnull %0) #5 br label %241 227: ; preds = %43 @@ -489,7 +489,7 @@ define void @jinit_color_converter(ptr noundef %0) local_unnamed_addr #0 { store i32 27, ptr %236, align 8 %237 = load ptr, ptr %0, align 8 %238 = load ptr, ptr %237, align 8 - tail call void %238(ptr noundef nonnull %0) #4 + tail call void %238(ptr noundef nonnull %0) #5 br label %239 239: ; preds = %234, %229 @@ -506,7 +506,7 @@ define internal void @null_method(ptr nocapture readnone %0) #1 { 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 internal void @grayscale_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #2 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 48 %7 = load i32, ptr %6, align 8 @@ -568,7 +568,7 @@ define internal void @rgb_ycc_start(ptr noundef %0) #0 { %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %5, align 8 - %7 = tail call ptr %6(ptr noundef %0, i32 noundef 1, i64 noundef 16384) #4 + %7 = tail call ptr %6(ptr noundef %0, i32 noundef 1, i64 noundef 16384) #5 %8 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr %7, ptr %8, align 8 br label %9 @@ -617,7 +617,7 @@ define internal void @rgb_ycc_start(ptr noundef %0) #0 { } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal void @rgb_gray_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #2 { +define internal void @rgb_gray_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #4 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 60 %7 = load i32, ptr %6, align 4 switch i32 %7, label %250 [ @@ -1088,7 +1088,7 @@ define internal void @rgb_gray_convert(ptr nocapture noundef readonly %0, ptr no } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal void @null_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #2 { +define internal void @null_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #4 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 76 %7 = load i32, ptr %6, align 4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -1278,7 +1278,7 @@ define internal void @null_convert(ptr nocapture noundef readonly %0, ptr nocapt 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 internal void @rgb_rgb_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #2 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 60 %7 = load i32, ptr %6, align 4 @@ -1718,7 +1718,7 @@ declare i32 @jsimd_can_rgb_ycc() local_unnamed_addr #3 declare void @jsimd_rgb_ycc_convert(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3 -; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable define internal void @rgb_ycc_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #2 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 60 %7 = load i32, ptr %6, align 4 @@ -2533,7 +2533,7 @@ define internal void @rgb_ycc_convert(ptr nocapture noundef readonly %0, ptr noc } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal void @cmyk_ycck_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #2 { +define internal void @cmyk_ycck_convert(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) #4 { %6 = getelementptr inbounds nuw i8, ptr %0, i64 472 %7 = load ptr, ptr %6, align 8 %8 = getelementptr inbounds nuw i8, ptr %7, i64 32 @@ -2663,9 +2663,10 @@ define internal void @cmyk_ycck_convert(ptr nocapture noundef readonly %0, ptr n 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(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 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 #2 = { 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 #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 = { nounwind } +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 = { 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_utils.cc.ll b/bench/libquic/optimized/quic_utils.cc.ll index 61099d66a30..3401bbd4c98 100644 --- a/bench/libquic/optimized/quic_utils.cc.ll +++ b/bench/libquic/optimized/quic_utils.cc.ll @@ -591,7 +591,6 @@ lpad: ; preds = %invoke.cont2, %invo br label %ehcleanup invoke.cont10: ; preds = %invoke.cont10.lr.ph, %for.inc22 - %10 = phi ptr [ null, %invoke.cont10.lr.ph ], [ %16, %for.inc22 ] %__begin1.sroa.0.029 = phi ptr [ %6, %invoke.cont10.lr.ph ], [ %incdec.ptr.i13, %for.inc22 ] %call5.i.i.i.i.i122628 = phi ptr [ null, %invoke.cont10.lr.ph ], [ %call5.i.i.i.i.i1225, %for.inc22 ] invoke void @_ZNK4base16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE6rbeginEv(ptr nonnull sret(%"class.std::reverse_iterator") align 8 %__begin2, ptr noundef nonnull align 8 dereferenceable(16) %__begin1.sroa.0.029) @@ -602,21 +601,21 @@ invoke.cont11: ; preds = %invoke.cont10 to label %invoke.cont14.preheader unwind label %lpad9.loopexit invoke.cont14.preheader: ; preds = %invoke.cont11 - %11 = load ptr, ptr %__end2, align 8 + %10 = load ptr, ptr %__end2, align 8 %__begin2.promoted = load ptr, ptr %__begin2, align 8 - %cmp.i.i.not22 = icmp eq ptr %__begin2.promoted, %11 + %cmp.i.i.not22 = icmp eq ptr %__begin2.promoted, %10 br i1 %cmp.i.i.not22, label %for.end, label %for.body16 for.body16: ; preds = %invoke.cont14.preheader, %for.body16 %option.024 = phi i32 [ %or, %for.body16 ], [ 0, %invoke.cont14.preheader ] %incdec.ptr.i2123 = phi ptr [ %incdec.ptr.i, %for.body16 ], [ %__begin2.promoted, %invoke.cont14.preheader ] %incdec.ptr.i = getelementptr inbounds i8, ptr %incdec.ptr.i2123, i64 -1 - %12 = load i8, ptr %incdec.ptr.i, align 1 + %11 = load i8, ptr %incdec.ptr.i, align 1 %shl = shl i32 %option.024, 8 - %conv = zext i8 %12 to i32 + %conv = zext i8 %11 to i32 %or = or disjoint i32 %shl, %conv store ptr %incdec.ptr.i, ptr %__begin2, align 8 - %cmp.i.i.not = icmp eq ptr %incdec.ptr.i, %11 + %cmp.i.i.not = icmp eq ptr %incdec.ptr.i, %10 br i1 %cmp.i.i.not, label %for.end, label %for.body16 lpad9.loopexit: ; preds = %invoke.cont10, %invoke.cont11, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i @@ -631,28 +630,29 @@ lpad9.loopexit.split-lp: ; preds = %if.then.i.i.i11 lpad9: ; preds = %lpad9.loopexit.split-lp, %lpad9.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad9.loopexit ], [ %lpad.loopexit.split-lp, %lpad9.loopexit.split-lp ] - %13 = load ptr, ptr %ref.tmp, align 8 - %tobool.not.i.i.i5 = icmp eq ptr %13, null + %12 = load ptr, ptr %ref.tmp, align 8 + %tobool.not.i.i.i5 = icmp eq ptr %12, null br i1 %tobool.not.i.i.i5, label %ehcleanup, label %if.then.i.i.i6 if.then.i.i.i6: ; preds = %lpad9 - call void @_ZdlPv(ptr noundef nonnull %13) #24 + call void @_ZdlPv(ptr noundef nonnull %12) #24 br label %ehcleanup for.end: ; preds = %for.body16, %invoke.cont14.preheader %option.0.lcssa = phi i32 [ 0, %invoke.cont14.preheader ], [ %or, %for.body16 ] + %13 = load ptr, ptr %_M_finish.i8, align 8 %14 = load ptr, ptr %_M_end_of_storage.i, align 8 - %cmp.not.i = icmp eq ptr %10, %14 + %cmp.not.i = icmp eq ptr %13, %14 br i1 %cmp.not.i, label %if.else.i, label %if.then.i if.then.i: ; preds = %for.end - store i32 %option.0.lcssa, ptr %10, align 4 - %incdec.ptr.i9 = getelementptr inbounds nuw i8, ptr %10, i64 4 + store i32 %option.0.lcssa, ptr %13, align 4 + %incdec.ptr.i9 = getelementptr inbounds nuw i8, ptr %13, i64 4 store ptr %incdec.ptr.i9, ptr %_M_finish.i8, align 8 br label %for.inc22 if.else.i: ; preds = %for.end - %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %10 to i64 + %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %13 to i64 %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %call5.i.i.i.i.i122628 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, 9223372036854775804 @@ -705,7 +705,6 @@ _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIP br label %for.inc22 for.inc22: ; preds = %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i, %if.then.i - %16 = phi ptr [ %incdec.ptr.i.i, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i ], [ %incdec.ptr.i9, %if.then.i ] %call5.i.i.i.i.i1225 = phi ptr [ %call5.i.i.i.i.i12, %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i ], [ %call5.i.i.i.i.i122628, %if.then.i ] %incdec.ptr.i13 = getelementptr inbounds nuw i8, ptr %__begin1.sroa.0.029, i64 16 %cmp.i.not = icmp eq ptr %incdec.ptr.i13, %7 @@ -713,12 +712,12 @@ for.inc22: ; preds = %_ZNSt6vectorIjSaIjE ehcleanup: ; preds = %if.then.i.i.i6, %lpad9, %lpad %.pn = phi { ptr, i32 } [ %9, %lpad ], [ %lpad.phi, %lpad9 ], [ %lpad.phi, %if.then.i.i.i6 ] - %17 = load ptr, ptr %agg.result, align 8 - %tobool.not.i.i.i14 = icmp eq ptr %17, null + %16 = load ptr, ptr %agg.result, align 8 + %tobool.not.i.i.i14 = icmp eq ptr %16, null br i1 %tobool.not.i.i.i14, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %if.then.i.i.i15 if.then.i.i.i15: ; preds = %ehcleanup - call void @_ZdlPv(ptr noundef nonnull %17) #24 + call void @_ZdlPv(ptr noundef nonnull %16) #24 br label %_ZNSt6vectorIjSaIjEED2Ev.exit _ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %ehcleanup, %if.then.i.i.i15 diff --git a/bench/libquic/optimized/trees.c.ll b/bench/libquic/optimized/trees.c.ll index cca7f8b65bc..cf1e7de2265 100644 --- a/bench/libquic/optimized/trees.c.ll +++ b/bench/libquic/optimized/trees.c.ll @@ -462,7 +462,7 @@ bi_flush.exit: ; preds = %if.else.i, %if.end2 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 dso_local void @MOZ_Z__tr_flush_block(ptr noundef %s, ptr noundef readonly %buf, i64 noundef %stored_len, i32 noundef %last) local_unnamed_addr #3 { entry: %level = getelementptr inbounds nuw i8, ptr %s, i64 1308 @@ -1282,7 +1282,7 @@ if.end133: ; preds = %bi_windup.exit, %in } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal fastcc void @build_tree(ptr noundef initializes((6412, 6420)) %s, ptr nocapture noundef %desc) unnamed_addr #3 { +define internal fastcc void @build_tree(ptr noundef initializes((6412, 6420)) %s, ptr nocapture noundef %desc) unnamed_addr #4 { entry: %next_code.i = alloca [16 x i16], align 16 %0 = load ptr, ptr %desc, align 8 @@ -2027,7 +2027,7 @@ gen_codes.exit: ; preds = %for.inc21.i, %for.c } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable -define internal fastcc void @compress_block(ptr nocapture noundef %s, ptr nocapture noundef readonly %ltree, ptr nocapture noundef readonly %dtree) unnamed_addr #3 { +define internal fastcc void @compress_block(ptr nocapture noundef %s, ptr nocapture noundef readonly %ltree, ptr nocapture noundef readonly %dtree) unnamed_addr #4 { entry: %last_lit = getelementptr inbounds nuw i8, ptr %s, i64 7012 %0 = load i32, ptr %last_lit, align 4 @@ -2490,8 +2490,8 @@ if.end: ; preds = %if.else, %if.then ret i32 %conv34 } -; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: readwrite, inaccessiblemem: none) uwtable -define internal fastcc void @send_tree(ptr noundef %s, ptr nocapture noundef readonly %tree, i32 noundef range(i32 -2147483648, 2147483647) %max_code) unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(write, argmem: readwrite) uwtable +define internal fastcc void @send_tree(ptr noundef %s, ptr nocapture noundef readonly %tree, i32 noundef range(i32 -2147483648, 2147483647) %max_code) unnamed_addr #5 { entry: %cmp2.not206 = icmp slt i32 %max_code, 0 br i1 %cmp2.not206, label %for.end, label %for.body.lr.ph @@ -2975,27 +2975,29 @@ for.end: ; preds = %for.inc, %entry } ; 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) #6 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 +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) #5 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #7 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i8 @llvm.umax.i8(i8, i8) #6 +declare i8 @llvm.umax.i8(i8, i8) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #6 +declare i64 @llvm.umin.i64(i64, i64) #8 attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { 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 #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #3 = { 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 #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 = { nofree norecurse nosync nounwind memory(write, 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3, !4} 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/libwebp/optimized/filters_sse2.c.ll b/bench/libwebp/optimized/filters_sse2.c.ll index d30729c5a1a..0529962f41d 100644 --- a/bench/libwebp/optimized/filters_sse2.c.ll +++ b/bench/libwebp/optimized/filters_sse2.c.ll @@ -242,8 +242,8 @@ HorizontalUnfilter_SSE2.exit: ; preds = %.lr.ph50, %.lr.ph61 ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define internal void @GradientUnfilter_SSE2(ptr noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef initializes((0, 1)) %2, i32 noundef %3) #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define internal void @GradientUnfilter_SSE2(ptr noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef initializes((0, 1)) %2, i32 noundef %3) #2 { %5 = icmp eq ptr %0, null %6 = load i8, ptr %1, align 1 br i1 %5, label %7, label %38 @@ -1049,18 +1049,19 @@ DoGradientFilter_SSE2.exit: ; preds = %.preheader.i38.i, % } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(none) -declare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) #2 +declare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #3 +declare i32 @llvm.smax.i32(i32, i32) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #3 +declare i32 @llvm.umin.i32(i32, i32) #4 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: none, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-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 willreturn memory(none) } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #2 = { nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } +attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/lightgbm/optimized/sample_strategy.cpp.ll b/bench/lightgbm/optimized/sample_strategy.cpp.ll index 8a01caa773c..5d28c176ab5 100644 --- a/bench/lightgbm/optimized/sample_strategy.cpp.ll +++ b/bench/lightgbm/optimized/sample_strategy.cpp.ll @@ -1949,58 +1949,61 @@ define internal void @_ZN8LightGBM23ParallelPartitionRunnerIiLb0EE3RunILb1EEEiiR .lr.ph: ; preds = %.lr.ph.preheader, %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26 %indvars.iv = phi i64 [ %27, %.lr.ph.preheader ], [ %indvars.iv.next, %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26 ] - %28 = load ptr, ptr %21, align 8 - %29 = getelementptr inbounds i32, ptr %28, i64 %indvars.iv - %30 = load i32, ptr %29, align 4 - %31 = icmp slt i32 %30, 1 - br i1 %31, label %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit, label %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i + %28 = load ptr, ptr %19, align 8 + %29 = load ptr, ptr %20, align 8 + %30 = load ptr, ptr %21, align 8 + %31 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv + %32 = load i32, ptr %31, align 4 + %33 = icmp slt i32 %32, 1 + br i1 %33, label %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit, label %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i _ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i: ; preds = %.lr.ph - %32 = load ptr, ptr %4, align 8 - %33 = load ptr, ptr %22, align 8 - %34 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv - %35 = load i32, ptr %34, align 4 - %36 = sext i32 %35 to i64 - %37 = getelementptr inbounds i32, ptr %32, i64 %36 - %38 = load ptr, ptr %19, align 8 - %39 = load ptr, ptr %20, align 8 - %40 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv - %41 = load i32, ptr %40, align 4 + %34 = load ptr, ptr %22, align 8 + %35 = load ptr, ptr %4, align 8 + %36 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv + %37 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv + %38 = load i32, ptr %36, align 4 + %39 = sext i32 %38 to i64 + %40 = getelementptr inbounds i32, ptr %35, i64 %39 + %41 = load i32, ptr %37, align 4 %42 = sext i32 %41 to i64 - %43 = getelementptr inbounds i32, ptr %38, i64 %42 - %44 = zext nneg i32 %30 to i64 + %43 = getelementptr inbounds i32, ptr %28, i64 %42 + %44 = zext nneg i32 %32 to i64 %.idx.i.i = shl nuw nsw i64 %44, 2 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %37, ptr align 4 %43, i64 %.idx.i.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 4 %40, ptr align 4 %43, i64 %.idx.i.i, i1 false) + %.pre = load ptr, ptr %19, align 8 + %.pre33 = load ptr, ptr %20, align 8 + %.pre34 = load ptr, ptr %21, align 8 br label %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit _ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit: ; preds = %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i, %.lr.ph - %45 = load ptr, ptr %23, align 8 - %46 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv - %47 = load i32, ptr %46, align 4 - %48 = icmp slt i32 %47, 1 - br i1 %48, label %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26, label %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i23 + %45 = phi ptr [ %.pre34, %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i ], [ %30, %.lr.ph ] + %46 = phi ptr [ %.pre33, %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i ], [ %29, %.lr.ph ] + %47 = phi ptr [ %.pre, %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i ], [ %28, %.lr.ph ] + %48 = load ptr, ptr %23, align 8 + %49 = getelementptr inbounds i32, ptr %48, i64 %indvars.iv + %50 = load i32, ptr %49, align 4 + %51 = icmp slt i32 %50, 1 + br i1 %51, label %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26, label %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i23 _ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i23: ; preds = %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit - %49 = load ptr, ptr %5, align 8 - %50 = load ptr, ptr %24, align 8 - %51 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv - %52 = load i32, ptr %51, align 4 - %53 = sext i32 %52 to i64 - %54 = getelementptr inbounds i32, ptr %49, i64 %53 - %55 = load ptr, ptr %19, align 8 - %56 = load ptr, ptr %20, align 8 - %57 = getelementptr inbounds i32, ptr %56, i64 %indvars.iv - %58 = load i32, ptr %57, align 4 + %52 = load ptr, ptr %24, align 8 + %53 = load ptr, ptr %5, align 8 + %54 = getelementptr inbounds i32, ptr %46, i64 %indvars.iv + %55 = load i32, ptr %54, align 4 + %56 = getelementptr inbounds i32, ptr %52, i64 %indvars.iv + %57 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv + %58 = load i32, ptr %56, align 4 %59 = sext i32 %58 to i64 - %60 = getelementptr inbounds i32, ptr %55, i64 %59 - %61 = load ptr, ptr %21, align 8 - %62 = getelementptr inbounds i32, ptr %61, i64 %indvars.iv - %63 = load i32, ptr %62, align 4 + %60 = getelementptr inbounds i32, ptr %53, i64 %59 + %61 = sext i32 %55 to i64 + %62 = getelementptr inbounds i32, ptr %47, i64 %61 + %63 = load i32, ptr %57, align 4 %64 = sext i32 %63 to i64 - %65 = getelementptr inbounds i32, ptr %60, i64 %64 - %66 = zext nneg i32 %47 to i64 + %65 = getelementptr inbounds i32, ptr %62, i64 %64 + %66 = zext nneg i32 %50 to i64 %.idx.i.i24 = shl nuw nsw i64 %66, 2 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %54, ptr align 4 %65, i64 %.idx.i.i24, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 4 %60, ptr align 4 %65, i64 %.idx.i.i24, i1 false) br label %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26 _ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26: ; preds = %_ZSt8__copy_nIPiiS0_ET1_T_T0_S1_St26random_access_iterator_tag.exit.i23, %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit @@ -2011,11 +2014,11 @@ _ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26: ; preds = %_ZSt8__copy_nIPiiS0 br i1 %.not22.not, label %.lr.ph, label %._crit_edge.loopexit ._crit_edge.loopexit: ; preds = %_ZSt6copy_nIPiiS0_ET1_T_T0_S1_.exit26 - %.pre = load i32, ptr %7, align 4 + %.pre35 = load i32, ptr %7, align 4 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader - %69 = phi i32 [ %26, %.preheader ], [ %.pre, %._crit_edge.loopexit ] + %69 = phi i32 [ %26, %.preheader ], [ %.pre35, %._crit_edge.loopexit ] %.lcssa = phi i32 [ %25, %.preheader ], [ %67, %._crit_edge.loopexit ] %70 = load i32, ptr %9, align 4 %71 = add nsw i32 %70, %69 diff --git a/bench/linux/optimized/scsi_sysfs.ll b/bench/linux/optimized/scsi_sysfs.ll index 6c508638010..1e3847b15cc 100644 --- a/bench/linux/optimized/scsi_sysfs.ll +++ b/bench/linux/optimized/scsi_sysfs.ll @@ -2703,64 +2703,68 @@ define internal i64 @sdev_show_blacklist(ptr nocapture noundef readonly %0, ptr %4 = getelementptr i8, ptr %0, i64 -120 br label %5 -5: ; preds = %30, %3 - %6 = phi i64 [ 0, %3 ], [ %32, %30 ] - %7 = phi i64 [ 0, %3 ], [ %31, %30 ] +5: ; preds = %34, %3 + %6 = phi i64 [ 0, %3 ], [ %36, %34 ] + %7 = phi i64 [ 0, %3 ], [ %35, %34 ] %8 = load i64, ptr %4, align 8 %9 = shl nuw i64 1, %6 %10 = and i64 %8, %9 %11 = icmp eq i64 %10, 0 - br i1 %11, label %30, label %12 + br i1 %11, label %34, label %12 12: ; preds = %5 %13 = icmp samesign ult i64 %6, 34 %14 = and i64 %9, 151109632 %15 = icmp eq i64 %14, 0 %or.cond = and i1 %13, %15 - %16 = icmp eq i64 %7, 0 - %17 = select i1 %16, ptr @.str.41, ptr @.str.96 - %18 = sub i64 4096, %7 - %19 = getelementptr i8, ptr %2, i64 %7 - br i1 %or.cond, label %20, label %.thread - -20: ; preds = %12 - %21 = getelementptr [34 x ptr], ptr @sdev_bflags_name, i64 0, i64 %6 - %22 = load ptr, ptr %21, align 8 - %23 = tail call i32 (ptr, i64, ptr, ...) @scnprintf(ptr noundef %19, i64 noundef %18, ptr noundef nonnull @.str.39, ptr noundef nonnull %17, ptr noundef nonnull %22) #15 - br label %26 + br i1 %or.cond, label %16, label %.thread -.thread: ; preds = %12 - %24 = trunc i64 %6 to i32 - %25 = tail call i32 (ptr, i64, ptr, ...) @scnprintf(ptr noundef %19, i64 noundef %18, ptr noundef nonnull @.str.97, ptr noundef nonnull %17, i32 noundef %24) #15 - br label %26 +16: ; preds = %12 + %17 = getelementptr [34 x ptr], ptr @sdev_bflags_name, i64 0, i64 %6 + %18 = icmp eq i64 %7, 0 + %19 = select i1 %18, ptr @.str.41, ptr @.str.96 + %20 = sub i64 4096, %7 + %21 = getelementptr i8, ptr %2, i64 %7 + %22 = load ptr, ptr %17, align 8 + %23 = tail call i32 (ptr, i64, ptr, ...) @scnprintf(ptr noundef %21, i64 noundef %20, ptr noundef nonnull @.str.39, ptr noundef nonnull %19, ptr noundef nonnull %22) #15 + br label %30 -26: ; preds = %.thread, %20 - %27 = phi i32 [ %23, %20 ], [ %25, %.thread ] - %28 = sext i32 %27 to i64 - %29 = add i64 %7, %28 +.thread: ; preds = %12 + %24 = icmp eq i64 %7, 0 + %25 = select i1 %24, ptr @.str.41, ptr @.str.96 + %26 = sub i64 4096, %7 + %27 = getelementptr i8, ptr %2, i64 %7 + %28 = trunc i64 %6 to i32 + %29 = tail call i32 (ptr, i64, ptr, ...) @scnprintf(ptr noundef %27, i64 noundef %26, ptr noundef nonnull @.str.97, ptr noundef nonnull %25, i32 noundef %28) #15 br label %30 -30: ; preds = %26, %5 - %31 = phi i64 [ %29, %26 ], [ %7, %5 ] - %32 = add nuw nsw i64 %6, 1 - %33 = icmp eq i64 %32, 64 - br i1 %33, label %34, label %5, !llvm.loop !31 - -34: ; preds = %30 - %35 = icmp eq i64 %31, 0 - br i1 %35, label %42, label %36 - -36: ; preds = %34 - %37 = getelementptr i8, ptr %2, i64 %31 - %38 = sub i64 4096, %31 - %39 = tail call i32 (ptr, i64, ptr, ...) @scnprintf(ptr noundef %37, i64 noundef %38, ptr noundef nonnull @.str.43) #15 - %40 = sext i32 %39 to i64 - %41 = add i64 %31, %40 - br label %42 - -42: ; preds = %36, %34 - %43 = phi i64 [ %41, %36 ], [ 0, %34 ] - ret i64 %43 +30: ; preds = %.thread, %16 + %31 = phi i32 [ %23, %16 ], [ %29, %.thread ] + %32 = sext i32 %31 to i64 + %33 = add i64 %7, %32 + br label %34 + +34: ; preds = %30, %5 + %35 = phi i64 [ %33, %30 ], [ %7, %5 ] + %36 = add nuw nsw i64 %6, 1 + %37 = icmp eq i64 %36, 64 + br i1 %37, label %38, label %5, !llvm.loop !31 + +38: ; preds = %34 + %39 = icmp eq i64 %35, 0 + br i1 %39, label %46, label %40 + +40: ; preds = %38 + %41 = getelementptr i8, ptr %2, i64 %35 + %42 = sub i64 4096, %35 + %43 = tail call i32 (ptr, i64, ptr, ...) @scnprintf(ptr noundef %41, i64 noundef %42, ptr noundef nonnull @.str.43) #15 + %44 = sext i32 %43 to i64 + %45 = add i64 %35, %44 + br label %46 + +46: ; preds = %40, %38 + %47 = phi i64 [ %45, %40 ], [ 0, %38 ] + ret i64 %47 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/FunctionPropertiesAnalysis.cpp.ll b/bench/llvm/optimized/FunctionPropertiesAnalysis.cpp.ll index 38b547032c1..342196d79a9 100644 --- a/bench/llvm/optimized/FunctionPropertiesAnalysis.cpp.ll +++ b/bench/llvm/optimized/FunctionPropertiesAnalysis.cpp.ll @@ -7512,6 +7512,7 @@ _ZStmiRKSt15_Deque_iteratorIPKN4llvm4LoopERS3_PS3_El.exit66: ; preds = %414, %42 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11), !noalias !297 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12), !noalias !297 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !294 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %450 = ptrtoint ptr %3 to i64 %451 = ptrtoint ptr %2 to i64 %452 = sub i64 %450, %451 @@ -7720,6 +7721,7 @@ _ZSt25__uninitialized_copy_moveIN9__gnu_cxx17__normal_iteratorIPKPN4llvm4LoopESt store ptr %.sroa.3209.0, ptr %68, align 8 store ptr %.sroa.5.0, ptr %344, align 8 store ptr %.sroa.7214.0, ptr %59, align 8 + call void @llvm.assume(i1 true) [ "dereferenceable"(ptr %1, i64 0) ] %548 = icmp sgt i64 %376, 0 br i1 %548, label %.lr.ph.i.i.i114.preheader, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKPN4llvm4LoopESt6vectorIS4_SaIS4_EEEESt15_Deque_iteratorIPKS3_RSD_PSD_EET0_T_SI_SH_.exit 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_draw_sw_mask.ll b/bench/lvgl/optimized/lv_draw_sw_mask.ll index d73f495bb3f..6325d6ac328 100644 --- a/bench/lvgl/optimized/lv_draw_sw_mask.ll +++ b/bench/lvgl/optimized/lv_draw_sw_mask.ll @@ -305,7 +305,7 @@ default.unreachable: ; preds = %57 declare void @lv_point_set(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define internal range(i32 0, 3) i32 @lv_draw_mask_line(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef readonly %4) #0 { +define internal range(i32 0, 3) i32 @lv_draw_mask_line(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) #0 { %6 = getelementptr inbounds nuw i8, ptr %4, i64 36 %7 = getelementptr inbounds nuw i8, ptr %4, i64 40 %8 = load i32, ptr %7, align 4, !tbaa !32 @@ -1129,7 +1129,7 @@ define void @lv_draw_sw_mask_angle_init(ptr noundef initializes((24, 32), (160, } ; Function Attrs: nounwind uwtable -define internal range(i32 0, 3) i32 @lv_draw_mask_angle(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef readonly %4) #0 { +define internal range(i32 0, 3) i32 @lv_draw_mask_angle(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) #0 { %6 = getelementptr inbounds nuw i8, ptr %4, i64 16 %7 = getelementptr inbounds nuw i8, ptr %4, i64 20 %8 = load i32, ptr %7, align 4, !tbaa !44 @@ -2396,7 +2396,7 @@ define void @lv_draw_sw_mask_fade_init(ptr nocapture noundef writeonly initializ ret void } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable define internal range(i32 1, 3) i32 @lv_draw_mask_fade(ptr nocapture noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef readonly %4) #4 { %6 = getelementptr inbounds nuw i8, ptr %4, i64 16 %7 = getelementptr inbounds nuw i8, ptr %4, i64 20 @@ -2480,10 +2480,10 @@ mask_mix.exit: ; preds = %32, %38, %40 %48 = getelementptr inbounds nuw i8, ptr %4, i64 36 %49 = load i32, ptr %48, align 4, !tbaa !74 %.not74 = icmp slt i32 %2, %49 - %50 = icmp sgt i32 %.166, 0 br i1 %.not74, label %68, label %.preheader .preheader: ; preds = %47 + %50 = icmp sgt i32 %.166, 0 br i1 %50, label %.lr.ph87, label %.loopexit .lr.ph87: ; preds = %.preheader @@ -2520,50 +2520,51 @@ mask_mix.exit76: ; preds = %53, %59, %61 br i1 %67, label %53, label %.loopexit, !llvm.loop !82 68: ; preds = %47 - br i1 %50, label %.lr.ph89, label %.loopexit + %69 = icmp sgt i32 %.166, 0 + br i1 %69, label %.lr.ph89, label %.loopexit .lr.ph89: ; preds = %68 - %69 = getelementptr inbounds nuw i8, ptr %4, i64 41 - %70 = load i8, ptr %69, align 1, !tbaa !72 - %71 = zext i8 %70 to i32 + %70 = getelementptr inbounds nuw i8, ptr %4, i64 41 + %71 = load i8, ptr %70, align 1, !tbaa !72 %72 = getelementptr inbounds nuw i8, ptr %4, i64 40 - %73 = load i8, ptr %72, align 8, !tbaa !69 - %74 = zext i8 %73 to i32 - %75 = sub nsw i32 %71, %74 - %76 = sub nsw i32 %2, %28 - %77 = mul nsw i32 %75, %76 - %78 = ashr i32 %77, 8 + %73 = zext i8 %71 to i32 + %74 = load i8, ptr %72, align 8, !tbaa !69 + %75 = zext i8 %74 to i32 + %76 = sub nsw i32 %73, %75 + %77 = sub nsw i32 %2, %28 + %78 = mul nsw i32 %76, %77 + %79 = ashr i32 %78, 8 %reass.sub = sub i32 %49, %28 - %79 = add i32 %reass.sub, 1 - %80 = sdiv i32 %78, %79 - %81 = trunc i32 %80 to i8 - %82 = add i8 %73, %81 - %83 = zext i8 %82 to i32 - %84 = icmp ugt i8 %82, -4 - %85 = mul nuw nsw i32 %83, 32897 - br i1 %84, label %.loopexit, label %.lr.ph89.split + %80 = add i32 %reass.sub, 1 + %81 = sdiv i32 %79, %80 + %82 = trunc i32 %81 to i8 + %83 = add i8 %74, %82 + %84 = zext i8 %83 to i32 + %85 = icmp ugt i8 %83, -4 + %86 = mul nuw nsw i32 %84, 32897 + br i1 %85, label %.loopexit, label %.lr.ph89.split .lr.ph89.split: ; preds = %.lr.ph89 - %86 = icmp ult i8 %82, 3 - %87 = zext nneg i32 %.166 to i64 - br i1 %86, label %mask_mix.exit78.us91.preheader, label %mask_mix.exit78 + %87 = icmp ult i8 %83, 3 + %88 = zext nneg i32 %.166 to i64 + br i1 %87, label %mask_mix.exit78.us91.preheader, label %mask_mix.exit78 mask_mix.exit78.us91.preheader: ; preds = %.lr.ph89.split - tail call void @llvm.memset.p0.i64(ptr align 1 %.062, i8 0, i64 %87, i1 false), !tbaa !34 + tail call void @llvm.memset.p0.i64(ptr align 1 %.062, i8 0, i64 %88, i1 false), !tbaa !34 br label %.loopexit mask_mix.exit78: ; preds = %.lr.ph89.split, %mask_mix.exit78 %indvars.iv104 = phi i64 [ %indvars.iv.next105, %mask_mix.exit78 ], [ 0, %.lr.ph89.split ] - %88 = getelementptr inbounds nuw i8, ptr %.062, i64 %indvars.iv104 - %89 = load i8, ptr %88, align 1, !tbaa !34 - %90 = zext i8 %89 to i32 - %91 = mul nuw nsw i32 %85, %90 - %92 = lshr i32 %91, 23 - %93 = trunc nuw i32 %92 to i8 - store i8 %93, ptr %88, align 1, !tbaa !34 + %89 = getelementptr inbounds nuw i8, ptr %.062, i64 %indvars.iv104 + %90 = load i8, ptr %89, align 1, !tbaa !34 + %91 = zext i8 %90 to i32 + %92 = mul nuw nsw i32 %86, %91 + %93 = lshr i32 %92, 23 + %94 = trunc nuw i32 %93 to i8 + store i8 %94, ptr %89, align 1, !tbaa !34 %indvars.iv.next105 = add nuw nsw i64 %indvars.iv104, 1 - %94 = icmp samesign ult i64 %indvars.iv.next105, %87 - br i1 %94, label %mask_mix.exit78, label %.loopexit, !llvm.loop !83 + %95 = icmp samesign ult i64 %indvars.iv.next105, %88 + br i1 %95, label %mask_mix.exit78, label %.loopexit, !llvm.loop !83 .loopexit: ; preds = %mask_mix.exit, %mask_mix.exit76, %mask_mix.exit78, %.lr.ph89, %mask_mix.exit78.us91.preheader, %.preheader83, %.preheader, %68, %18, %14, %10, %5 %.0 = phi i32 [ 1, %5 ], [ 1, %10 ], [ 1, %14 ], [ 1, %18 ], [ 2, %68 ], [ 2, %.preheader ], [ 2, %.preheader83 ], [ 2, %mask_mix.exit78.us91.preheader ], [ 2, %.lr.ph89 ], [ 2, %mask_mix.exit78 ], [ 2, %mask_mix.exit76 ], [ 2, %mask_mix.exit ] @@ -2720,7 +2721,7 @@ attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-mat attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #3 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nofree norecurse nosync nounwind memory(argmem: 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #7 = { nounwind } 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..e4a495e1b1f 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 @@ -10850,13 +10851,13 @@ 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 %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 +11904,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 +11955,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/mesh.cpp.ll b/bench/meshlab/optimized/mesh.cpp.ll index 2bd0bf77bed..bf4505606c4 100644 --- a/bench/meshlab/optimized/mesh.cpp.ll +++ b/bench/meshlab/optimized/mesh.cpp.ll @@ -2056,7 +2056,7 @@ $_ZZN3vcg3tri2io11ExporterOBJI4MeshE8ErrorMsgEiE13obj_error_msg = comdat any @.str.91 = private unnamed_addr constant [49 x i8] c"cannot create std::vector larger than max_size()\00", align 1 @.str.92 = private unnamed_addr constant [26 x i8] c"vector::_M_default_append\00", align 1 @_ZZNK3vcg11tetrahedron9EmptyCoreINS_15TetraTypeHolderINS_9UsedTypesINS_3UseI10MeshVertexE12AsVertexTypeENS4_I8MeshFaceE10AsFaceTypeENS4_I8MeshEdgeE10AsEdgeTypeENS_14DefaultDeriverESE_SE_SE_SE_EEEEE2cVEiE2vp = linkonce_odr local_unnamed_addr global ptr null, comdat, align 8 -@_ZZN3vcg11tetrahedron9EmptyCoreINS_15TetraTypeHolderINS_9UsedTypesINS_3UseI10MeshVertexE12AsVertexTypeENS4_I8MeshFaceE10AsFaceTypeENS4_I8MeshEdgeE10AsEdgeTypeENS_14DefaultDeriverESE_SE_SE_SE_EEEEE1VEiE2vp = linkonce_odr local_unnamed_addr global ptr null, comdat, align 8 +@_ZZN3vcg11tetrahedron9EmptyCoreINS_15TetraTypeHolderINS_9UsedTypesINS_3UseI10MeshVertexE12AsVertexTypeENS4_I8MeshFaceE10AsFaceTypeENS4_I8MeshEdgeE10AsEdgeTypeENS_14DefaultDeriverESE_SE_SE_SE_EEEEE1VEiE2vp = linkonce_odr global ptr null, comdat, align 8 @_ZZN3vcg6vertex9EmptyCoreI13MeshUsedTypesE1REvE1v = linkonce_odr local_unnamed_addr global float 0.000000e+00, comdat, align 4 @.str.93 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @.str.94 = private unnamed_addr constant [40 x i8] c"Vertex Vector Contains deleted elements\00", align 1 @@ -60210,8 +60210,8 @@ define void @_Z13CutAlongSeamsR4Mesh(ptr noundef nonnull align 8 dereferenceable 24: ; preds = %14 %25 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %.not124.i = icmp eq ptr %18, %16 - br i1 %.not124.i, label %31, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i + %.not126.i = icmp eq ptr %18, %16 + br i1 %.not126.i, label %31, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %24 %26 = shl nuw nsw i64 %22, 2 @@ -60226,25 +60226,29 @@ _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %24 store ptr %30, ptr %25, align 8 store i32 -2, ptr %5, align 4 invoke void @_ZNSt6vectorIiSaIiEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPiS1_EEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr nonnull %27, i64 noundef %22, ptr noundef nonnull align 4 dereferenceable(4) %5) - to label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i unwind label %.loopexit.split-lp.loopexit.split-lp.i + to label %._ZNSt6vectorIiSaIiEE6resizeEmRKi.exit_crit_edge122.i unwind label %.loopexit.split-lp.loopexit.split-lp.i + +._ZNSt6vectorIiSaIiEE6resizeEmRKi.exit_crit_edge122.i: ; preds = %28 + %.pre.i = load ptr, ptr %17, align 8 + br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i 31: ; preds = %24 store i32 -2, ptr %5, align 4 %32 = getelementptr inbounds nuw i8, ptr %4, i64 8 br label %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i -_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i: ; preds = %31, %28 - %33 = phi ptr [ %32, %31 ], [ %29, %28 ] - %34 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %35 = load ptr, ptr %34, align 8 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %37 = load ptr, ptr %36, align 8 - %.not114.i = icmp eq ptr %35, %37 +_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i: ; preds = %31, %._ZNSt6vectorIiSaIiEE6resizeEmRKi.exit_crit_edge122.i + %33 = phi ptr [ %29, %._ZNSt6vectorIiSaIiEE6resizeEmRKi.exit_crit_edge122.i ], [ %32, %31 ] + %34 = phi ptr [ %.pre.i, %._ZNSt6vectorIiSaIiEE6resizeEmRKi.exit_crit_edge122.i ], [ %16, %31 ] + %35 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %36 = load ptr, ptr %35, align 8 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %38 = load ptr, ptr %37, align 8 + %.not114.i = icmp eq ptr %36, %38 br i1 %.not114.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %_ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i - %38 = load ptr, ptr %17, align 8 - %39 = ptrtoint ptr %38 to i64 + %39 = ptrtoint ptr %34 to i64 %40 = load ptr, ptr %15, align 8 %41 = ptrtoint ptr %40 to i64 %42 = sub i64 %39, %41 @@ -60257,9 +60261,9 @@ _ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i: ; preds = %31, %28 br label %49 49: ; preds = %.loopexit92.i, %.lr.ph.i - %50 = phi ptr [ %37, %.lr.ph.i ], [ %268, %.loopexit92.i ] + %50 = phi ptr [ %38, %.lr.ph.i ], [ %268, %.loopexit92.i ] %.051118.i = phi i32 [ %44, %.lr.ph.i ], [ %.152.i, %.loopexit92.i ] - %.sroa.069.0117.i = phi ptr [ %35, %.lr.ph.i ], [ %269, %.loopexit92.i ] + %.sroa.069.0117.i = phi ptr [ %36, %.lr.ph.i ], [ %269, %.loopexit92.i ] %.0116.i = phi ptr [ %16, %.lr.ph.i ], [ %.181.i, %.loopexit92.i ] %.084115.i = phi ptr [ %13, %.lr.ph.i ], [ %.185.i, %.loopexit92.i ] %51 = getelementptr inbounds nuw i8, ptr %.sroa.069.0117.i, i64 200 @@ -60436,8 +60440,8 @@ _ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i: ; preds = %31, %28 %153 = load double, ptr %152, align 8 %154 = fcmp une double %116, %153 %155 = select i1 %151, i1 true, i1 %154 - %.fr.i.i = freeze i1 %155 %156 = getelementptr inbounds nuw i8, ptr %148, i64 40 + %.fr.i.i = freeze i1 %155 %157 = load i16, ptr %156, align 2 %.not.i.i14 = icmp eq i16 %117, %157 %.not.fr.i.i = freeze i1 %.not.i.i14 @@ -60466,7 +60470,7 @@ _ZNSt6vectorIiSaIiEE6resizeEmRKi.exit.i: ; preds = %31, %28 %167 = load ptr, ptr %33, align 8 %168 = getelementptr inbounds nuw i8, ptr %167, i64 4 store ptr %168, ptr %33, align 8 - %.pre122.i = load ptr, ptr %4, align 8 + %.pre124.i = load ptr, ptr %4, align 8 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit.i 169: ; preds = %.thread.i @@ -60518,7 +60522,7 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIP br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit.i _ZNSt6vectorIiSaIiEE9push_backERKi.exit.i: ; preds = %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, %166 - %188 = phi ptr [ %181, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i ], [ %.pre122.i, %166 ] + %188 = phi ptr [ %181, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i ], [ %.pre124.i, %166 ] %189 = getelementptr inbounds i32, ptr %188, i64 %109 store i32 %.2112.i, ptr %189, align 4 %190 = invoke ptr @_ZN3vcg3tri9AllocatorI4MeshE11AddVerticesERS2_mRNS3_14PointerUpdaterIP10MeshVertexEE(ptr noundef nonnull align 8 dereferenceable(808) %0, i64 noundef 1, ptr noundef nonnull align 8 dereferenceable(57) %3) @@ -60643,11 +60647,11 @@ _ZN3vcg3tri9AllocatorI4MeshE14PointerUpdaterIP10MeshVertexE6UpdateERS6_.exit.i: br i1 %exitcond.not.i, label %.loopexit92.loopexit.i, label %60, !llvm.loop !430 .loopexit92.loopexit.i: ; preds = %264 - %.pre123.i = load ptr, ptr %36, align 8 + %.pre125.i = load ptr, ptr %37, align 8 br label %.loopexit92.i .loopexit92.i: ; preds = %.loopexit92.loopexit.i, %49 - %268 = phi ptr [ %50, %49 ], [ %.pre123.i, %.loopexit92.loopexit.i ] + %268 = phi ptr [ %50, %49 ], [ %.pre125.i, %.loopexit92.loopexit.i ] %.185.i = phi ptr [ %.084115.i, %49 ], [ %.387.i, %.loopexit92.loopexit.i ] %.181.i = phi ptr [ %.0116.i, %49 ], [ %.383.i, %.loopexit92.loopexit.i ] %.152.i = phi i32 [ %.051118.i, %49 ], [ %.3.i, %.loopexit92.loopexit.i ] 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/mitsuba3/optimized/area.cpp.ll b/bench/mitsuba3/optimized/area.cpp.ll index c2949c5037b..79fecce3381 100644 --- a/bench/mitsuba3/optimized/area.cpp.ll +++ b/bench/mitsuba3/optimized/area.cpp.ll @@ -1287,17 +1287,20 @@ define weak_odr void @_ZNK7mitsuba9AreaLightIfN5drjit6MatrixINS_8SpectrumIfLm4EE %13 = alloca %"struct.mitsuba::SurfaceInteraction", align 16 %14 = alloca %"struct.drjit::Matrix.10", align 16 %15 = alloca %"struct.drjit::Matrix.10", align 16 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 208 - %17 = load ptr, ptr %16, align 16 - %18 = load ptr, ptr %17, align 8 - %19 = getelementptr inbounds nuw i8, ptr %18, i64 176 + store float 0x7FF0000000000000, ptr %10, align 16 + %16 = getelementptr inbounds nuw i8, ptr %10, i64 64 + store ptr null, ptr %16, align 16 + %17 = getelementptr inbounds nuw i8, ptr %10, i64 232 + store ptr null, ptr %17, align 8 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 208 + %19 = load ptr, ptr %18, align 16 %20 = load ptr, ptr %19, align 8 - %21 = tail call noundef zeroext i1 %20(ptr noundef nonnull align 8 dereferenceable(40) %17) - br i1 %21, label %64, label %22 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 176 + %22 = load ptr, ptr %21, align 8 + %23 = tail call noundef zeroext i1 %22(ptr noundef nonnull align 8 dereferenceable(40) %19) + br i1 %23, label %64, label %24 -22: ; preds = %5 - %23 = getelementptr inbounds nuw i8, ptr %10, i64 232 - %24 = getelementptr inbounds nuw i8, ptr %10, i64 64 +24: ; preds = %5 %25 = getelementptr inbounds nuw i8, ptr %1, i64 152 %26 = load ptr, ptr %25, align 8 %27 = load ptr, ptr %26, align 16 @@ -1374,7 +1377,7 @@ define weak_odr void @_ZNK7mitsuba9AreaLightIfN5drjit6MatrixINS_8SpectrumIfLm4EE store <4 x float> %.sroa.0236.0.copyload, ptr %.sroa.4.0..sroa_idx, align 16 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 48 store <4 x float> %.sroa.5240.0.copyload, ptr %.sroa.5.0..sroa_idx, align 16 - store ptr null, ptr %24, align 16 + store ptr null, ptr %16, align 16 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 72 store i64 %.sroa.10246.0.copyload, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 80 @@ -1383,11 +1386,11 @@ define weak_odr void @_ZNK7mitsuba9AreaLightIfN5drjit6MatrixINS_8SpectrumIfLm4EE store <4 x float> %63, ptr %.sroa.9.0..sroa_idx, align 16 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 112 store <4 x float> %.sroa.5240.0.copyload, ptr %.sroa.10.0..sroa_idx, align 16 - store ptr null, ptr %23, align 8 + store ptr null, ptr %17, align 8 br label %125 64: ; preds = %5 - %65 = load ptr, ptr %16, align 16 + %65 = load ptr, ptr %18, align 16 %66 = load ptr, ptr %65, align 8 %67 = getelementptr inbounds nuw i8, ptr %66, i64 96 %68 = load ptr, ptr %67, align 8 @@ -1442,15 +1445,15 @@ define weak_odr void @_ZNK7mitsuba9AreaLightIfN5drjit6MatrixINS_8SpectrumIfLm4EE 103: ; preds = %64 %104 = getelementptr inbounds nuw i8, ptr %10, i64 128 %105 = load <4 x float>, ptr %104, align 16 - %106 = shufflevector <4 x float> %105, <4 x float> poison, <4 x i32> - %107 = getelementptr inbounds nuw i8, ptr %10, i64 144 - %108 = load <4 x float>, ptr %107, align 16 + %106 = getelementptr inbounds nuw i8, ptr %10, i64 144 + %107 = shufflevector <4 x float> %105, <4 x float> poison, <4 x i32> + %108 = load <4 x float>, ptr %106, align 16 %109 = shufflevector <4 x float> %108, <4 x float> poison, <4 x i32> %110 = shufflevector <4 x float> %105, <4 x float> poison, <4 x i32> %111 = shufflevector <4 x float> %108, <4 x float> poison, <4 x i32> %112 = fneg contract <4 x float> %111 %113 = fmul contract <4 x float> %110, %112 - %114 = call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %106, <4 x float> %109, <4 x float> %113) + %114 = call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %107, <4 x float> %109, <4 x float> %113) %115 = fmul contract <4 x float> %114, %114 %shift300 = shufflevector <4 x float> %115, <4 x float> poison, <4 x i32> %116 = fadd contract <4 x float> %115, %shift300 @@ -1465,18 +1468,18 @@ define weak_odr void @_ZNK7mitsuba9AreaLightIfN5drjit6MatrixINS_8SpectrumIfLm4EE %124 = fdiv contract float %122, %123 br label %125 -125: ; preds = %103, %64, %22 - %.sroa.0236.0 = phi <4 x float> [ %.sroa.0236.0.copyload, %22 ], [ %.sroa.0236.0.copyload239, %64 ], [ %.sroa.0236.0.copyload239, %103 ] - %.sroa.5240.0 = phi <4 x float> [ %.sroa.5240.0.copyload, %22 ], [ %.sroa.5240.16.copyload, %64 ], [ %.sroa.5240.16.copyload, %103 ] - %.sroa.10246.0 = phi i64 [ %.sroa.10246.0.copyload, %22 ], [ %84, %64 ], [ %84, %103 ] - %.sroa.12249.0 = phi float [ %.sroa.12249.0.copyload, %22 ], [ %86, %64 ], [ %86, %103 ] - %.sroa.14.0 = phi float [ %.sroa.14.0.copyload, %22 ], [ 0.000000e+00, %64 ], [ %124, %103 ] - %.sroa.17.0 = phi i8 [ %.sroa.17.0.copyload, %22 ], [ 0, %64 ], [ 0, %103 ] - %.sroa.18258.0 = phi <4 x float> [ %.sroa.18258.0.copyload, %22 ], [ %98, %64 ], [ %98, %103 ] - %.sroa.23.0 = phi float [ %.sroa.23.0.copyload, %22 ], [ %94, %64 ], [ %94, %103 ] - %.sroa.24.0 = phi i32 [ %.sroa.24.0.copyload, %22 ], [ undef, %64 ], [ undef, %103 ] - %.0297 = phi i1 [ %narrow, %22 ], [ false, %64 ], [ true, %103 ] - %126 = load ptr, ptr %16, align 16 +125: ; preds = %103, %64, %24 + %.sroa.0236.0 = phi <4 x float> [ %.sroa.0236.0.copyload, %24 ], [ %.sroa.0236.0.copyload239, %64 ], [ %.sroa.0236.0.copyload239, %103 ] + %.sroa.5240.0 = phi <4 x float> [ %.sroa.5240.0.copyload, %24 ], [ %.sroa.5240.16.copyload, %64 ], [ %.sroa.5240.16.copyload, %103 ] + %.sroa.10246.0 = phi i64 [ %.sroa.10246.0.copyload, %24 ], [ %84, %64 ], [ %84, %103 ] + %.sroa.12249.0 = phi float [ %.sroa.12249.0.copyload, %24 ], [ %86, %64 ], [ %86, %103 ] + %.sroa.14.0 = phi float [ %.sroa.14.0.copyload, %24 ], [ 0.000000e+00, %64 ], [ %124, %103 ] + %.sroa.17.0 = phi i8 [ %.sroa.17.0.copyload, %24 ], [ 0, %64 ], [ 0, %103 ] + %.sroa.18258.0 = phi <4 x float> [ %.sroa.18258.0.copyload, %24 ], [ %98, %64 ], [ %98, %103 ] + %.sroa.23.0 = phi float [ %.sroa.23.0.copyload, %24 ], [ %94, %64 ], [ %94, %103 ] + %.sroa.24.0 = phi i32 [ %.sroa.24.0.copyload, %24 ], [ undef, %64 ], [ undef, %103 ] + %.0297 = phi i1 [ %narrow, %24 ], [ false, %64 ], [ true, %103 ] + %126 = load ptr, ptr %18, align 16 %127 = load ptr, ptr %126, align 8 %128 = getelementptr inbounds nuw i8, ptr %127, i64 72 %129 = load ptr, ptr %128, align 8 diff --git a/bench/mitsuba3/optimized/string.cpp.ll b/bench/mitsuba3/optimized/string.cpp.ll index 0ec69a4b8ba..b375e92eebf 100644 --- a/bench/mitsuba3/optimized/string.cpp.ll +++ b/bench/mitsuba3/optimized/string.cpp.ll @@ -1146,7 +1146,7 @@ _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE16find_last_not_ ret void } -; Function Attrs: mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree nounwind memory(read, inaccessiblemem: write) uwtable define noundef zeroext i1 @_ZN7mitsuba6string8containsERKNSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEERKS8_(ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %1) local_unnamed_addr #5 { %3 = load ptr, ptr %0, align 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -5325,12 +5325,12 @@ _ZN10fast_float8stackvecILt62EEC2ENS_4spanImEE.exit: ; preds = %3 %8 = shl nuw nsw i16 %7, 3 %9 = zext nneg i16 %8 to i64 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(498) %4, ptr nonnull align 8 %0, i64 %9, i1 false) - %.496..496..496..sroa_idx115 = getelementptr inbounds nuw i8, ptr %4, i64 496 - %.496..496..496. = load i16, ptr %.496..496..496..sroa_idx115, align 8 + %.496..496..496..sroa_idx116 = getelementptr inbounds nuw i8, ptr %4, i64 496 + %.496..496..496. = load i16, ptr %.496..496..496..sroa_idx116, align 8 %10 = add i16 %.496..496..496., %7 %.fr = freeze i16 %10 - %.496..496..496..sroa_idx116 = getelementptr inbounds nuw i8, ptr %4, i64 496 - store i16 %.fr, ptr %.496..496..496..sroa_idx116, align 8 + %.496..496..496..sroa_idx117 = getelementptr inbounds nuw i8, ptr %4, i64 496 + store i16 %.fr, ptr %.496..496..496..sroa_idx117, align 8 %.not = icmp eq i64 %2, 0 br i1 %.not, label %.loopexit, label %11 @@ -5380,7 +5380,7 @@ _ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit: ; preds = %._crit_ br i1 %.not.i, label %.critedge.preheader, label %_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit .critedge.preheader: ; preds = %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit, %_ZN10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i, %11 - %.promoted.i77 = phi i16 [ %25, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit ], [ %31, %_ZN10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i ], [ 0, %11 ] + %.promoted.i78 = phi i16 [ %25, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit ], [ %31, %_ZN10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i ], [ 0, %11 ] %.not60 = icmp eq i64 %2, 1 br i1 %.not60, label %.loopexit, label %.lr.ph @@ -5574,27 +5574,30 @@ _ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.t br label %.loopexit .loopexit: ; preds = %_ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread, %.loopexit.loopexit, %.critedge.preheader, %_ZN10fast_float8stackvecILt62EEC2ENS_4spanImEE.exit - %.promoted.i = phi i16 [ %.promoted.i.pre, %.loopexit.loopexit ], [ %.promoted.i77, %.critedge.preheader ], [ %7, %_ZN10fast_float8stackvecILt62EEC2ENS_4spanImEE.exit ], [ %.promoted.i77, %_ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread ] + %.promoted.i = phi i16 [ %.promoted.i.pre, %.loopexit.loopexit ], [ %.promoted.i78, %.critedge.preheader ], [ %7, %_ZN10fast_float8stackvecILt62EEC2ENS_4spanImEE.exit ], [ %.promoted.i78, %_ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread ] %.not1.i = icmp eq i16 %.promoted.i, 0 - br i1 %.not1.i, label %_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit, label %.lr.ph.i33 - -.lr.ph.i33: ; preds = %.loopexit, %120 - %114 = phi i16 [ %121, %120 ], [ %.promoted.i, %.loopexit ] - %115 = zext i16 %114 to i64 - %116 = add nsw i64 %115, -1 - %117 = getelementptr inbounds [62 x i64], ptr %0, i64 0, i64 %116 - %118 = load i64, ptr %117, align 8 - %119 = icmp eq i64 %118, 0 - br i1 %119, label %120, label %_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit - -120: ; preds = %.lr.ph.i33 - %121 = add i16 %114, -1 - store i16 %121, ptr %6, align 8 - %.not.i34 = icmp eq i16 %121, 0 + br i1 %.not1.i, label %_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit, label %.lr.ph.i33.preheader + +.lr.ph.i33.preheader: ; preds = %.loopexit + %114 = zext i16 %.promoted.i to i64 + br label %.lr.ph.i33 + +.lr.ph.i33: ; preds = %.lr.ph.i33.preheader, %119 + %indvars.iv = phi i64 [ %114, %.lr.ph.i33.preheader ], [ %115, %119 ] + %115 = add nsw i64 %indvars.iv, -1 + %116 = getelementptr inbounds [62 x i64], ptr %0, i64 0, i64 %115 + %117 = load i64, ptr %116, align 8 + %118 = icmp eq i64 %117, 0 + br i1 %118, label %119, label %_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit + +119: ; preds = %.lr.ph.i33 + %indvars = trunc i64 %115 to i16 + store i16 %indvars, ptr %6, align 8 + %.not.i34 = icmp eq i16 %indvars, 0 br i1 %.not.i34, label %_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit, label %.lr.ph.i33, !llvm.loop !65 -_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit: ; preds = %.lr.ph.split, %.critedge.i.i.us, %66, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit29.us, %120, %.lr.ph.i33, %.loopexit, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit - %.0 = phi i1 [ false, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit ], [ true, %.loopexit ], [ true, %.lr.ph.i33 ], [ true, %120 ], [ false, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit29.us ], [ false, %66 ], [ false, %.critedge.i.i.us ], [ false, %.lr.ph.split ] +_ZN10fast_float8stackvecILt62EE10try_extendENS_4spanImEE.exit: ; preds = %.lr.ph.split, %.critedge.i.i.us, %66, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit29.us, %119, %.lr.ph.i33, %.loopexit, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit + %.0 = phi i1 [ false, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit ], [ true, %.loopexit ], [ true, %.lr.ph.i33 ], [ true, %119 ], [ false, %_ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit29.us ], [ false, %66 ], [ false, %.critedge.i.i.us ], [ false, %.lr.ph.split ] ret i1 %.0 } @@ -7327,7 +7330,7 @@ attributes #1 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stac attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #3 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #5 = { mustprogress nofree 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"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #5 = { mustprogress nofree 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"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #6 = { noreturn nounwind uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #7 = { cold nofree noreturn } attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } diff --git a/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll b/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll index 419a90e15a7..8eaadccc74c 100644 --- a/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll +++ b/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll @@ -699,8 +699,8 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit43: ; preds = %_ZNKSt7__cxx1112bas call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %ref.tmp10) #21 %_M_string_length.i.i.i44 = getelementptr inbounds nuw i8, ptr %cmd, i64 8 %58 = load i64, ptr %_M_string_length.i.i.i44, align 8 - %cond = icmp eq i64 %58, 0 - br i1 %cond, label %if.end35, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i + %cmp.i3.i.i = icmp eq i64 %58, 0 + br i1 %cmp.i3.i.i, label %if.end35, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %_ZNSt10filesystem7__cxx114pathD2Ev.exit43 %.sroa.speculated.i.i = call i64 @llvm.umin.i64(i64 %58, i64 2) @@ -713,34 +713,36 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %_ZNSt10filesystem7_ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i50: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i %.sroa.speculated.i.i48 = call i64 @llvm.umin.i64(i64 %58, i64 6) - %bcmp.i51 = call i32 @bcmp(ptr %59, ptr nonnull @.str.7, i64 %.sroa.speculated.i.i48) + %61 = load ptr, ptr %cmd, align 8 + %bcmp.i51 = call i32 @bcmp(ptr %61, ptr nonnull @.str.7, i64 %.sroa.speculated.i.i48) %tobool.not.i.i52 = icmp eq i32 %bcmp.i51, 0 - %61 = icmp eq i64 %58, 6 - %or.cond70 = and i1 %61, %tobool.not.i.i52 + %62 = icmp eq i64 %58, 6 + %or.cond70 = and i1 %62, %tobool.not.i.i52 br i1 %or.cond70, label %if.then16, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i60 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i60: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i50 %.sroa.speculated.i.i58 = call i64 @llvm.umin.i64(i64 %58, i64 7) - %bcmp.i61 = call i32 @bcmp(ptr %59, ptr nonnull @.str.8, i64 %.sroa.speculated.i.i58) + %63 = load ptr, ptr %cmd, align 8 + %bcmp.i61 = call i32 @bcmp(ptr %63, ptr nonnull @.str.8, i64 %.sroa.speculated.i.i58) %tobool.not.i.i62 = icmp eq i32 %bcmp.i61, 0 - %62 = icmp eq i64 %58, 7 - %or.cond72 = and i1 %62, %tobool.not.i.i62 + %64 = icmp eq i64 %58, 7 + %or.cond72 = and i1 %64, %tobool.not.i.i62 br i1 %or.cond72, label %if.then16, label %if.end35 if.then16: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i60, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i50, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %args, i8 0, i64 24, i1 false) call void @_ZNSt6vectorIPcSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %args, ptr noundef nonnull align 8 dereferenceable(8) %argv) %_M_finish.i = getelementptr inbounds nuw i8, ptr %args, i64 8 - %63 = load ptr, ptr %_M_finish.i, align 8 + %65 = load ptr, ptr %_M_finish.i, align 8 %add.ptr = getelementptr inbounds nuw i8, ptr %argv, i64 24 %idx.ext = sext i32 %argc to i64 %add.ptr21 = getelementptr inbounds ptr, ptr %argv, i64 %idx.ext - %call23 = call ptr @_ZNSt6vectorIPcSaIS0_EE6insertIPS0_vEEN9__gnu_cxx17__normal_iteratorIS4_S2_EENS6_IPKS0_S2_EET_SB_(ptr noundef nonnull align 8 dereferenceable(24) %args, ptr %63, ptr noundef nonnull %add.ptr, ptr noundef nonnull %add.ptr21) + %call23 = call ptr @_ZNSt6vectorIPcSaIS0_EE6insertIPS0_vEEN9__gnu_cxx17__normal_iteratorIS4_S2_EENS6_IPKS0_S2_EET_SB_(ptr noundef nonnull align 8 dereferenceable(24) %args, ptr %65, ptr noundef nonnull %add.ptr, ptr noundef nonnull %add.ptr21) store ptr null, ptr %ref.tmp25, align 8 call void @_ZNSt6vectorIPcSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %args, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp25) - %64 = load ptr, ptr %self, align 8 - %65 = load ptr, ptr %args, align 8 - %call28 = call i32 @execv(ptr noundef %64, ptr noundef %65) #21 + %66 = load ptr, ptr %self, align 8 + %67 = load ptr, ptr %args, align 8 + %call28 = call i32 @execv(ptr noundef %66, ptr noundef %67) #21 call void @_ZN4mold5FatalINS_3elf7ContextINS1_5ALPHAEEEEC2ERS4_(ptr noundef nonnull align 8 dereferenceable(400) %ref.tmp29, ptr noundef nonnull align 8 dereferenceable(4576) %ctx) %call30 = call noundef nonnull align 8 dereferenceable(400) ptr @_ZN4mold5FatalINS_3elf7ContextINS1_5ALPHAEEEElsIRA19_KcEERS5_OT_(ptr noundef nonnull align 8 dereferenceable(400) %ref.tmp29, ptr noundef nonnull align 1 dereferenceable(19) @.str.9) %call31 = call noundef nonnull align 8 dereferenceable(400) ptr @_ZN4mold5FatalINS_3elf7ContextINS1_5ALPHAEEEElsIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS5_OT_(ptr noundef nonnull align 8 dereferenceable(400) %call30, ptr noundef nonnull align 8 dereferenceable(32) %self) @@ -753,8 +755,8 @@ if.then16: ; preds = %_ZNSt11char_traitsI if.end35: ; preds = %_ZNSt10filesystem7__cxx114pathD2Ev.exit43, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i60 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %cmd) #21 - %66 = load ptr, ptr %arrayidx, align 8 - %call38 = call i32 @execvp(ptr noundef %66, ptr noundef nonnull %arrayidx) #21 + %68 = load ptr, ptr %arrayidx, align 8 + %call38 = call i32 @execvp(ptr noundef %68, ptr noundef nonnull %arrayidx) #21 call void @_ZN4mold5FatalINS_3elf7ContextINS1_5ALPHAEEEEC2ERS4_(ptr noundef nonnull align 8 dereferenceable(400) %ref.tmp39, ptr noundef nonnull align 8 dereferenceable(4576) %ctx) %call40 = call noundef nonnull align 8 dereferenceable(400) ptr @_ZN4mold5FatalINS_3elf7ContextINS1_5ALPHAEEEElsIRA19_KcEERS5_OT_(ptr noundef nonnull align 8 dereferenceable(400) %ref.tmp39, ptr noundef nonnull align 1 dereferenceable(19) @.str.9) %call42 = call noundef nonnull align 8 dereferenceable(400) ptr @_ZN4mold5FatalINS_3elf7ContextINS1_5ALPHAEEEElsIRPcEERS5_OT_(ptr noundef nonnull align 8 dereferenceable(400) %call40, ptr noundef nonnull align 8 dereferenceable(8) %arrayidx) 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/rasterization.cpp.ll b/bench/msdfgen/optimized/rasterization.cpp.ll index 64eec4aaf31..3d0d599229f 100644 --- a/bench/msdfgen/optimized/rasterization.cpp.ll +++ b/bench/msdfgen/optimized/rasterization.cpp.ll @@ -290,20 +290,20 @@ call5.i.i.i.i.i.noexc.i: ; preds = %_ZNKSt6vectorIcSaIc store i8 0, ptr %call5.i.i.i.i.i62.i, align 1 %sub.i.i.i23.i.i.i = add nsw i64 %conv.i, -1 %cmp.i.i.i.i.i24.i.i.i = icmp eq i64 %sub.i.i.i23.i.i.i, 0 - br i1 %cmp.i.i.i.i.i24.i.i.i, label %invoke.cont.i, label %if.then.i.i.i.i.i.i.i25.i.i.i + br i1 %cmp.i.i.i.i.i24.i.i.i, label %invoke.cont.i, label %if.end.i.i.i.i.i25.i.i.i -if.then.i.i.i.i.i.i.i25.i.i.i: ; preds = %call5.i.i.i.i.i.noexc.i +if.end.i.i.i.i.i25.i.i.i: ; preds = %call5.i.i.i.i.i.noexc.i %incdec.ptr.i.i.i22.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i62.i, i64 1 call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i22.i.i.i, i8 0, i64 %sub.i.i.i23.i.i.i, i1 false) br label %invoke.cont.i -invoke.cont.i: ; preds = %if.then.i.i.i.i.i.i.i25.i.i.i, %call5.i.i.i.i.i.noexc.i +invoke.cont.i: ; preds = %if.end.i.i.i.i.i25.i.i.i, %call5.i.i.i.i.i.noexc.i store ptr %call5.i.i.i.i.i62.i, ptr %matchMap.i, align 8 %add.ptr36.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i62.i, i64 %conv.i store ptr %add.ptr36.i.i.i, ptr %_M_finish.i.i.i, align 8 store ptr %add.ptr36.i.i.i, ptr %_M_end_of_storage.i.i.i, align 8 %cmp90.i = icmp sgt i32 %1, 0 - br i1 %cmp90.i, label %for.body.lr.ph.i, label %if.then.i.i.i72.i + br i1 %cmp90.i, label %for.body.lr.ph.i, label %if.end117.i for.body.lr.ph.i: ; preds = %invoke.cont.i %inverseYAxis.i = getelementptr inbounds nuw i8, ptr %shape, i64 24 @@ -623,13 +623,12 @@ if.end109.us.us.i: ; preds = %if.then95.us.us.i, %exitcond156.not.i = icmp eq i32 %inc112.us.us.i, %.fr.i br i1 %exitcond156.not.i, label %for.cond63.for.inc114_crit_edge.us.i, label %for.body65.us.us.i, !llvm.loop !12 -if.end117.i: ; preds = %for.cond8.preheader.i, %for.cond63.for.inc114_crit_edge.us.i, %for.end45.i - %.pr.i = load ptr, ptr %matchMap.i, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %.pr.i, null +if.end117.i: ; preds = %for.cond8.preheader.i, %for.cond63.for.inc114_crit_edge.us.i, %for.end45.i, %invoke.cont.i + %33 = load ptr, ptr %matchMap.i, align 8 + %tobool.not.i.i.i.i = icmp eq ptr %33, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorIcSaIcEED2Ev.exit.i, label %if.then.i.i.i72.i -if.then.i.i.i72.i: ; preds = %if.end117.i, %invoke.cont.i - %33 = phi ptr [ %.pr.i, %if.end117.i ], [ %call5.i.i.i.i.i62.i, %invoke.cont.i ] +if.then.i.i.i72.i: ; preds = %if.end117.i call void @_ZdlPv(ptr noundef nonnull %33) #9 br label %_ZNSt6vectorIcSaIcEED2Ev.exit.i @@ -690,20 +689,20 @@ call5.i.i.i.i.i.noexc.i: ; preds = %_ZNKSt6vectorIcSaIc store i8 0, ptr %call5.i.i.i.i.i66.i, align 1 %sub.i.i.i23.i.i.i = add nsw i64 %conv.i, -1 %cmp.i.i.i.i.i24.i.i.i = icmp eq i64 %sub.i.i.i23.i.i.i, 0 - br i1 %cmp.i.i.i.i.i24.i.i.i, label %invoke.cont.i, label %if.then.i.i.i.i.i.i.i25.i.i.i + br i1 %cmp.i.i.i.i.i24.i.i.i, label %invoke.cont.i, label %if.end.i.i.i.i.i25.i.i.i -if.then.i.i.i.i.i.i.i25.i.i.i: ; preds = %call5.i.i.i.i.i.noexc.i +if.end.i.i.i.i.i25.i.i.i: ; preds = %call5.i.i.i.i.i.noexc.i %incdec.ptr.i.i.i22.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i66.i, i64 1 call void @llvm.memset.p0.i64(ptr nonnull align 1 %incdec.ptr.i.i.i22.i.i.i, i8 0, i64 %sub.i.i.i23.i.i.i, i1 false) br label %invoke.cont.i -invoke.cont.i: ; preds = %if.then.i.i.i.i.i.i.i25.i.i.i, %call5.i.i.i.i.i.noexc.i +invoke.cont.i: ; preds = %if.end.i.i.i.i.i25.i.i.i, %call5.i.i.i.i.i.noexc.i store ptr %call5.i.i.i.i.i66.i, ptr %matchMap.i, align 8 %add.ptr36.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i66.i, i64 %conv.i store ptr %add.ptr36.i.i.i, ptr %_M_finish.i.i.i, align 8 store ptr %add.ptr36.i.i.i, ptr %_M_end_of_storage.i.i.i, align 8 %cmp94.i = icmp sgt i32 %1, 0 - br i1 %cmp94.i, label %for.body.lr.ph.i, label %if.then.i.i.i76.i + br i1 %cmp94.i, label %for.body.lr.ph.i, label %if.end128.i for.body.lr.ph.i: ; preds = %invoke.cont.i %inverseYAxis.i = getelementptr inbounds nuw i8, ptr %shape, i64 24 @@ -1035,13 +1034,12 @@ if.end120.us.us.i: ; preds = %if.then106.us.us.i, %exitcond160.not.i = icmp eq i32 %inc123.us.us.i, %.fr.i br i1 %exitcond160.not.i, label %for.cond74.for.inc125_crit_edge.us.i, label %for.body76.us.us.i, !llvm.loop !16 -if.end128.i: ; preds = %for.cond8.preheader.i, %for.cond74.for.inc125_crit_edge.us.i, %for.end56.i - %.pr.i = load ptr, ptr %matchMap.i, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %.pr.i, null +if.end128.i: ; preds = %for.cond8.preheader.i, %for.cond74.for.inc125_crit_edge.us.i, %for.end56.i, %invoke.cont.i + %35 = load ptr, ptr %matchMap.i, align 8 + %tobool.not.i.i.i.i = icmp eq ptr %35, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorIcSaIcEED2Ev.exit.i, label %if.then.i.i.i76.i -if.then.i.i.i76.i: ; preds = %if.end128.i, %invoke.cont.i - %35 = phi ptr [ %.pr.i, %if.end128.i ], [ %call5.i.i.i.i.i66.i, %invoke.cont.i ] +if.then.i.i.i76.i: ; preds = %if.end128.i call void @_ZdlPv(ptr noundef nonnull %35) #9 br label %_ZNSt6vectorIcSaIcEED2Ev.exit.i diff --git a/bench/msdfgen/optimized/sdf-error-estimation.cpp.ll b/bench/msdfgen/optimized/sdf-error-estimation.cpp.ll index 518e137eae5..b29cc10a1f4 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 @@ -913,6 +916,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 +927,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 +938,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 diff --git a/bench/ncnn/optimized/mvn.cpp.ll b/bench/ncnn/optimized/mvn.cpp.ll index 3f2fafe66c1..8c0b9c11447 100644 --- a/bench/ncnn/optimized/mvn.cpp.ll +++ b/bench/ncnn/optimized/mvn.cpp.ll @@ -339,20 +339,14 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn3MVN7forwardERKNS_3MatERS ._crit_edge662: ; preds = %._crit_edge658 %152 = load i32, ptr %118, align 4 %.not617 = icmp eq i32 %152, 0 - br i1 %.not617, label %.preheader, label %.preheader625 + br i1 %.not617, label %.lr.ph680, label %.lr.ph665 -.preheader625: ; preds = %._crit_edge662 - br i1 %43, label %.critedge4, label %.lr.ph665 - -.lr.ph665: ; preds = %.preheader625 +.lr.ph665: ; preds = %._crit_edge662 %153 = load ptr, ptr %6, align 8 %wide.trip.count731 = zext nneg i32 %12 to i64 br label %159 -.preheader: ; preds = %._crit_edge662 - br i1 %43, label %.critedge4, label %.lr.ph680 - -.lr.ph680: ; preds = %.preheader +.lr.ph680: ; preds = %._crit_edge662 %154 = getelementptr inbounds nuw i8, ptr %2, i64 16 %155 = sitofp i32 %15 to float %156 = getelementptr inbounds nuw i8, ptr %0, i64 216 @@ -370,14 +364,14 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn3MVN7forwardERKNS_3MatERS %162 = fadd fast float %161, %.0399663 %indvars.iv.next729 = add nuw nsw i64 %indvars.iv728, 1 %exitcond732.not = icmp eq i64 %indvars.iv.next729, %wide.trip.count731 - br i1 %exitcond732.not, label %.lr.ph674, label %159, !llvm.loop !14 + br i1 %exitcond732.not, label %._crit_edge666, label %159, !llvm.loop !14 -.lr.ph674: ; preds = %159 +._crit_edge666: ; preds = %159 %163 = getelementptr inbounds nuw i8, ptr %2, i64 16 %164 = icmp sgt i32 %15, 0 br i1 %164, label %.lr.ph670.us.preheader, label %.critedge4 -.lr.ph670.us.preheader: ; preds = %.lr.ph674 +.lr.ph670.us.preheader: ; preds = %._crit_edge666 %165 = getelementptr inbounds nuw i8, ptr %0, i64 216 %166 = load float, ptr %165, align 8 %167 = mul nuw nsw i32 %12, %15 @@ -451,8 +445,8 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn3MVN7forwardERKNS_3MatERS %exitcond752.not = icmp eq i64 %indvars.iv.next749, %wide.trip.count751 br i1 %exitcond752.not, label %.critedge4, label %183, !llvm.loop !18 -.critedge4: ; preds = %._crit_edge671.us, %._crit_edge678, %131, %.preheader625, %.lr.ph674, %.preheader, %128 - %cond = phi i1 [ false, %128 ], [ %not., %131 ], [ true, %.preheader ], [ true, %.lr.ph674 ], [ true, %.preheader625 ], [ true, %._crit_edge678 ], [ true, %._crit_edge671.us ] +.critedge4: ; preds = %._crit_edge671.us, %._crit_edge678, %131, %._crit_edge666, %128 + %cond = phi i1 [ false, %128 ], [ %not., %131 ], [ true, %._crit_edge666 ], [ true, %._crit_edge678 ], [ true, %._crit_edge671.us ] %201 = load ptr, ptr %123, align 8 %.not618 = icmp eq ptr %201, null br i1 %.not618, label %214, label %202 diff --git a/bench/nix/optimized/eval-cache.ll b/bench/nix/optimized/eval-cache.ll index 6b8ae64b458..ed5db2b0e2e 100644 --- a/bench/nix/optimized/eval-cache.ll +++ b/bench/nix/optimized/eval-cache.ll @@ -17414,23 +17414,24 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZS _ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i: ; preds = %_ZSt3getILm0EJN3nix17DerivedPathOpaqueENS0_20NixStringContextElem7DrvDeepENS0_22SingleDerivedPathBuiltEEERKNSt19variant_alternativeIXT_ESt7variantIJDpT0_EEE4typeERKS9_.exit.i.i.i.i %19 = sub i64 %12, %14 - %20 = icmp slt i64 %19, 0 - br i1 %20, label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i, label %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i + %.lobit.i.i.i.i = lshr i64 %19, 63 + %20 = trunc nuw nsw i64 %.lobit.i.i.i.i to i8 + br label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i _ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i.i.i %21 = sub i64 %12, %14 %22 = icmp slt i64 %21, 0 - br i1 %22, label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i, label %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i + br i1 %22, label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i _ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i.i.i %23 = icmp slt i32 %18, 0 - br i1 %23, label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i, label %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i + br i1 %23, label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i -_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i: ; preds = %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i +_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i: ; preds = %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i br label %_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i -_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i: ; preds = %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i - %.sroa.05.0.i.i.i.i.i.i.i = phi i8 [ 1, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i ], [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i ], [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i ], [ 0, %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i ] +_ZNK3nix17DerivedPathOpaqueltERKS0_.exit.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i + %.sroa.05.0.i.i.i.i.i.i.i = phi i8 [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i ], [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i ], [ 0, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i ], [ %20, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i ] %24 = load ptr, ptr %0, align 8 store i8 %.sroa.05.0.i.i.i.i.i.i.i, ptr %24, align 1 br label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_20__variant_idx_cookieEOZStltIJN3nix17DerivedPathOpaqueENS5_20NixStringContextElem7DrvDeepENS5_22SingleDerivedPathBuiltEEEbRKSt7variantIJDpT_EESF_EUlOT_T0_E_RKSA_IJS6_S8_S9_EEEJEEESt16integer_sequenceImJLm0EEEE14__visit_invokeESK_SN_.exit @@ -17468,23 +17469,24 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i.i.i11: ; preds = %_ _ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i17: ; preds = %_ZSt3getILm1EJN3nix17DerivedPathOpaqueENS0_20NixStringContextElem7DrvDeepENS0_22SingleDerivedPathBuiltEEERKNSt19variant_alternativeIXT_ESt7variantIJDpT0_EEE4typeERKS9_.exit.i.i.i.i %43 = sub i64 %36, %38 - %44 = icmp slt i64 %43, 0 - br i1 %44, label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i, label %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i14 + %.lobit.i.i.i.i18 = lshr i64 %43, 63 + %44 = trunc nuw nsw i64 %.lobit.i.i.i.i18 to i8 + br label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i _ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i.i.i11 %45 = sub i64 %36, %38 %46 = icmp slt i64 %45, 0 - br i1 %46, label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i, label %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i14 + br i1 %46, label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i14 _ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i.i.i11 %47 = icmp slt i32 %42, 0 - br i1 %47, label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i, label %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i14 + br i1 %47, label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i14 -_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i14: ; preds = %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i17 +_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i14: ; preds = %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16 br label %_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i -_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i: ; preds = %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i14, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i17 - %.sroa.05.0.i.i.i.i.i.i.i15 = phi i8 [ 1, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i17 ], [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13 ], [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16 ], [ 0, %_ZNKSt8__detail10_Synth3wayclIN3nix9StorePathES3_EEDaRKT_RKT0_QrqXltfp_fp0_RNS_18__boolean_testableEXltfp0_fp_RNS_18__boolean_testableEE.exit.i.i.i.i.i.i.i14 ] +_ZNK3nix20NixStringContextElem7DrvDeepltERKS1_.exit.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i14, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i17 + %.sroa.05.0.i.i.i.i.i.i.i15 = phi i8 [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread.i.i.i.i.i.i.i.i13 ], [ 1, %_ZNK3nix9StorePathltERKS0_.exit.thread16.i.i.i.i.i.i.i.i16 ], [ 0, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i7.i.i.i.i.i.i.i.i14 ], [ %44, %_ZNK3nix9StorePathltERKS0_.exit.i.i.i.i.i.i.i.i17 ] %48 = load ptr, ptr %0, align 8 store i8 %.sroa.05.0.i.i.i.i.i.i.i15, ptr %48, align 1 br label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_20__variant_idx_cookieEOZStltIJN3nix17DerivedPathOpaqueENS5_20NixStringContextElem7DrvDeepENS5_22SingleDerivedPathBuiltEEEbRKSt7variantIJDpT_EESF_EUlOT_T0_E_RKSA_IJS6_S8_S9_EEEJEEESt16integer_sequenceImJLm0EEEE14__visit_invokeESK_SN_.exit @@ -31562,7 +31564,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i19.i.i: ; preds = %_ZNS } ; Function Attrs: mustprogress nofree nounwind uwtable -define internal fastcc void @"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN3nix6SymbolESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNS2_10eval_cache10AttrCursor8getAttrsEvE3$_0EEEvT_T0_SG_T1_T2_"(ptr nocapture %0, i64 noundef %1, i64 noundef %2, i32 %3, ptr nocapture readonly %4) unnamed_addr #20 { +define internal fastcc void @"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN3nix6SymbolESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNS2_10eval_cache10AttrCursor8getAttrsEvE3$_0EEEvT_T0_SG_T1_T2_"(ptr %0, i64 noundef %1, i64 noundef %2, i32 %3, ptr nocapture readonly %4) unnamed_addr #20 { %6 = add nsw i64 %2, -1 %7 = sdiv i64 %6, 2 %8 = icmp slt i64 %1, %7 @@ -31879,7 +31881,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3nix6SymbolESt6vectorIS3_Sa } ; Function Attrs: mustprogress nofree nounwind uwtable -define internal fastcc void @"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3nix6SymbolESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_10eval_cache10AttrCursor8getAttrsEvE3$_0EEEvT_T0_"(ptr nocapture %0, ptr nocapture readonly %1) unnamed_addr #20 { +define internal fastcc void @"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3nix6SymbolESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_10eval_cache10AttrCursor8getAttrsEvE3$_0EEEvT_T0_"(ptr %0, ptr nocapture readonly %1) unnamed_addr #20 { %3 = load i32, ptr %0, align 4 %4 = getelementptr i8, ptr %1, i64 16 %5 = add i32 %3, -1 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/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/ImfIDManifest.cpp.ll b/bench/openexr/optimized/ImfIDManifest.cpp.ll index b2fb5c84051..a75346dcf9d 100644 --- a/bench/openexr/optimized/ImfIDManifest.cpp.ll +++ b/bench/openexr/optimized/ImfIDManifest.cpp.ll @@ -1996,15 +1996,15 @@ if.then.i.i.i.i: ; preds = %_ZNSt16allocator_tr %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i1.i, i64 1 %sub.i.i.i.i = add nsw i64 %__n, -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 %invoke.cont, label %if.then.i.i.i.i.i.i.i.i + br i1 %cmp.i.i.i.i.i.i, label %invoke.cont, 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 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 %invoke.cont -invoke.cont: ; preds = %if.then.i.i.i.i.i.i.i.i, %if.then.i.i.i.i, %_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_.exit.thread - %_M_finish.i.i7 = phi ptr [ %_M_finish.i.i, %if.then.i.i.i.i ], [ %_M_finish.i.i, %if.then.i.i.i.i.i.i.i.i ], [ %_M_finish.i.i4, %_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_.exit.thread ] - %__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, %if.then.i.i.i.i.i.i.i.i ], [ null, %_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_.exit.thread ] +invoke.cont: ; preds = %if.end.i.i.i.i.i.i, %if.then.i.i.i.i, %_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_.exit.thread + %_M_finish.i.i7 = phi ptr [ %_M_finish.i.i, %if.then.i.i.i.i ], [ %_M_finish.i.i, %if.end.i.i.i.i.i.i ], [ %_M_finish.i.i4, %_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_.exit.thread ] + %__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, %if.end.i.i.i.i.i.i ], [ null, %_ZNSt12_Vector_baseIcSaIcEEC2EmRKS0_.exit.thread ] store ptr %__first.addr.0.i.i.i.i, ptr %_M_finish.i.i7, align 8 ret void } @@ -4226,14 +4226,19 @@ while.body.i.i.i772: ; preds = %invoke.cont462, %wh %incdec.ptr1.i.i.i777 = getelementptr inbounds nuw i8, ptr %incdec.ptr1.i.i.i7771229, i64 1 store i8 %143, ptr %incdec.ptr1.i.i.i7771229, align 1 %tobool.not.i.i.i778 = icmp eq i32 %dec.i.i.i775, 0 - br i1 %tobool.not.i.i.i778, label %invoke.cont464, label %while.body.i.i.i772, !llvm.loop !61 + br i1 %tobool.not.i.i.i778, label %invoke.cont464.loopexit, label %while.body.i.i.i772, !llvm.loop !61 -invoke.cont464: ; preds = %while.body.i.i.i772, %invoke.cont462 - %144 = phi ptr [ %.pre1302, %invoke.cont462 ], [ %incdec.ptr1.i.i.i777, %while.body.i.i.i772 ] +invoke.cont464.loopexit: ; preds = %while.body.i.i.i772 + store ptr %incdec.ptr1.i.i.i777, ptr %outPtr, align 8 + br label %invoke.cont464 + +invoke.cont464: ; preds = %invoke.cont464.loopexit, %invoke.cont462 + %144 = phi ptr [ %incdec.ptr1.i.i.i777, %invoke.cont464.loopexit ], [ %.pre1302, %invoke.cont462 ] %145 = load ptr, ptr %storageSchemes, align 8 %add.ptr.i781 = getelementptr inbounds nuw i8, ptr %145, i64 %groupNumber446.01255 %146 = load i8, ptr %add.ptr.i781, align 1 %incdec.ptr1.i.i782 = getelementptr inbounds nuw i8, ptr %144, i64 1 + store ptr %incdec.ptr1.i.i782, ptr %outPtr, align 8 store i8 %146, ptr %144, align 1 %_M_node_count.i.i783 = getelementptr inbounds nuw i8, ptr %add.ptr.i701, i64 184 %147 = load i64, ptr %_M_node_count.i.i783, align 8 @@ -4244,14 +4249,15 @@ invoke.cont464: ; preds = %while.body.i.i.i772 %conv4.i790 = trunc i64 %shr3.i7891080 to i8 %shr6.i7921081 = lshr i64 %147, 24 %conv7.i793 = trunc i64 %shr6.i7921081 to i8 - store i8 %conv.i785, ptr %incdec.ptr1.i.i782, align 1 - %b.i784.sroa.4.0.outPtr.promoted1230.sroa_idx = getelementptr inbounds nuw i8, ptr %144, i64 2 + %outPtr.promoted1230 = load ptr, ptr %outPtr, align 8 + store i8 %conv.i785, ptr %outPtr.promoted1230, align 1 + %b.i784.sroa.4.0.outPtr.promoted1230.sroa_idx = getelementptr inbounds nuw i8, ptr %outPtr.promoted1230, i64 1 store i8 %conv1.i787, ptr %b.i784.sroa.4.0.outPtr.promoted1230.sroa_idx, align 1 - %b.i784.sroa.5.0.outPtr.promoted1230.sroa_idx = getelementptr inbounds nuw i8, ptr %144, i64 3 + %b.i784.sroa.5.0.outPtr.promoted1230.sroa_idx = getelementptr inbounds nuw i8, ptr %outPtr.promoted1230, i64 2 store i8 %conv4.i790, ptr %b.i784.sroa.5.0.outPtr.promoted1230.sroa_idx, align 1 - %b.i784.sroa.6.0.outPtr.promoted1230.sroa_idx = getelementptr inbounds nuw i8, ptr %144, i64 4 + %b.i784.sroa.6.0.outPtr.promoted1230.sroa_idx = getelementptr inbounds nuw i8, ptr %outPtr.promoted1230, i64 3 store i8 %conv7.i793, ptr %b.i784.sroa.6.0.outPtr.promoted1230.sroa_idx, align 1 - %scevgep1289 = getelementptr i8, ptr %144, i64 5 + %scevgep1289 = getelementptr i8, ptr %outPtr.promoted1230, i64 4 store ptr %scevgep1289, ptr %outPtr, align 8 %_M_left.i.i803 = getelementptr inbounds nuw i8, ptr %add.ptr.i701, i64 168 %148 = load ptr, ptr %_M_left.i.i803, align 8 @@ -4690,15 +4696,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 @@ -4719,14 +4725,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.not.i = icmp eq ptr %0, %1 br i1 %cmp.i.i.i.not.i, label %_ZNSt6vectorIcSaIcEE11_S_relocateEPcS2_S2_RS0_.exit.i, label %if.then.i.i.i30.i 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/pbrt-v4/optimized/camera.cpp.ll b/bench/pbrt-v4/optimized/camera.cpp.ll index 119df64ac56..38ad0992384 100644 --- a/bench/pbrt-v4/optimized/camera.cpp.ll +++ b/bench/pbrt-v4/optimized/camera.cpp.ll @@ -2019,10 +2019,10 @@ _ZN4pbrt9BlueNoiseEiNS_6Point2IiEE.exit18: ; preds = %if.end %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 @@ -7080,14 +7080,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 @@ -7145,8 +7145,7 @@ while.body.lr.ph.i: ; preds = %if.then4 %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 @@ -7190,7 +7189,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 diff --git a/bench/php/optimized/datetime.ll b/bench/php/optimized/datetime.ll index 371b0b178bf..76232ff6f12 100644 --- a/bench/php/optimized/datetime.ll +++ b/bench/php/optimized/datetime.ll @@ -97,66 +97,72 @@ define hidden void @zif_strptime(ptr noundef %0, ptr noundef %1) local_unnamed_a 8: ; preds = %2 tail call void @zend_wrong_parameters_count_error(i32 noundef 2, i32 noundef 2) #4 - br label %28 + br label %.thread184 9: ; preds = %2 %10 = getelementptr inbounds nuw i8, ptr %0, i64 80 %11 = getelementptr inbounds nuw i8, ptr %0, i64 88 %12 = load i8, ptr %11, align 8 %13 = icmp eq i8 %12, 6 - br i1 %13, label %.thread174, label %15 + br i1 %13, label %.thread, label %15 -.thread174: ; preds = %9 +.thread: ; preds = %9 %14 = load ptr, ptr %10, align 8 store ptr %14, ptr %3, align 8 - br label %18 + br label %17 15: ; preds = %9 %16 = call zeroext i1 @zend_parse_arg_str_slow(ptr noundef nonnull %10, ptr noundef nonnull %3, i32 noundef 1) #4 - %17 = load ptr, ptr %3, align 8 - br i1 %16, label %18, label %28 + br i1 %16, label %._crit_edge, label %.thread184 -18: ; preds = %.thread174, %15 - %.pn = phi ptr [ %14, %.thread174 ], [ %17, %15 ] - %19 = getelementptr inbounds nuw i8, ptr %.pn, i64 24 +._crit_edge: ; preds = %15 + %.pre = load ptr, ptr %3, align 8 + br label %17 + +17: ; preds = %._crit_edge, %.thread + %18 = phi ptr [ %.pre, %._crit_edge ], [ %14, %.thread ] + %19 = getelementptr inbounds nuw i8, ptr %18, i64 24 %20 = getelementptr inbounds nuw i8, ptr %0, i64 96 %21 = getelementptr inbounds nuw i8, ptr %0, i64 104 %22 = load i8, ptr %21, align 8 %23 = icmp eq i8 %22, 6 br i1 %23, label %.thread180, label %25 -.thread180: ; preds = %18 +.thread180: ; preds = %17 %24 = load ptr, ptr %20, align 8 store ptr %24, ptr %4, align 8 - br label %29 + br label %27 -25: ; preds = %18 +25: ; preds = %17 %26 = call zeroext i1 @zend_parse_arg_str_slow(ptr noundef nonnull %20, ptr noundef nonnull %4, i32 noundef 2) #4 - %27 = load ptr, ptr %4, align 8 - br i1 %26, label %29, label %28 - -28: ; preds = %8, %15, %25 - %.0160.ph = phi ptr [ %20, %25 ], [ %10, %15 ], [ null, %8 ] - %.0159.ph = phi i32 [ 4, %25 ], [ 4, %15 ], [ 0, %8 ] - %.0158.ph = phi i32 [ 2, %25 ], [ 1, %15 ], [ 0, %8 ] - %.0155.ph = phi i32 [ 9, %25 ], [ 9, %15 ], [ 1, %8 ] - call void @zend_wrong_parameter_error(i32 noundef %.0155.ph, i32 noundef %.0158.ph, ptr noundef null, i32 noundef %.0159.ph, ptr noundef %.0160.ph) #4 + br i1 %26, label %._crit_edge202, label %.thread184 + +._crit_edge202: ; preds = %25 + %.pre203 = load ptr, ptr %4, align 8 + br label %27 + +.thread184: ; preds = %25, %15, %8 + %.0155195 = phi i32 [ 9, %15 ], [ 1, %8 ], [ 9, %25 ] + %.0158194 = phi i32 [ 1, %15 ], [ 0, %8 ], [ 2, %25 ] + %.0159193 = phi i32 [ 4, %15 ], [ 0, %8 ], [ 4, %25 ] + %.0160192 = phi ptr [ %10, %15 ], [ null, %8 ], [ %20, %25 ] + call void @zend_wrong_parameter_error(i32 noundef %.0155195, i32 noundef %.0158194, ptr noundef null, i32 noundef %.0159193, ptr noundef %.0160192) #4 br label %60 -29: ; preds = %25, %.thread180 - %.pn194 = phi ptr [ %24, %.thread180 ], [ %27, %25 ] - %.0163 = getelementptr inbounds nuw i8, ptr %.pn194, i64 24 +27: ; preds = %._crit_edge202, %.thread180 + %28 = phi ptr [ %.pre203, %._crit_edge202 ], [ %24, %.thread180 ] + %29 = getelementptr inbounds nuw i8, ptr %28, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %5, i8 0, i64 56, i1 false) - %30 = call ptr @strptime(ptr noundef nonnull %19, ptr noundef nonnull %.0163, ptr noundef nonnull %5) #4 + %30 = call ptr @strptime(ptr noundef nonnull %19, ptr noundef nonnull %29, ptr noundef nonnull %5) #4 %31 = icmp eq ptr %30, null br i1 %31, label %32, label %34 -32: ; preds = %29 +32: ; preds = %27 %33 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i32 2, ptr %33, align 8 br label %60 -34: ; preds = %29 +34: ; preds = %27 %35 = call ptr @_zend_new_array_0() #4 store ptr %35, ptr %1, align 8 %36 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -195,7 +201,7 @@ define hidden void @zif_strptime(ptr noundef %0, ptr noundef %1) local_unnamed_a call void @add_assoc_string_ex(ptr noundef nonnull %1, ptr noundef nonnull @.str.9, i64 noundef 8, ptr noundef nonnull %30) #4 br label %60 -60: ; preds = %34, %32, %28 +60: ; preds = %34, %32, %.thread184 ret void } diff --git a/bench/php/optimized/pcre2_compile.ll b/bench/php/optimized/pcre2_compile.ll index 84cfc2ceed3..736998c266c 100644 --- a/bench/php/optimized/pcre2_compile.ll +++ b/bench/php/optimized/pcre2_compile.ll @@ -5346,15 +5346,15 @@ thread-pre-split1142: ; preds = %1054 %1105 = or disjoint i32 %1104, 1 %1106 = zext nneg i32 %1105 to i64 %1107 = getelementptr inbounds nuw [28 x i32], ptr @posix_substitutes, i64 0, i64 %1106 - %1108 = load i32, ptr %1107, align 4 - %1109 = zext nneg i32 %1104 to i64 - %1110 = getelementptr inbounds nuw [28 x i32], ptr @posix_substitutes, i64 0, i64 %1109 - %1111 = load i32, ptr %1110, align 8 + %1108 = zext nneg i32 %1104 to i64 + %1109 = getelementptr inbounds nuw [28 x i32], ptr @posix_substitutes, i64 0, i64 %1108 + %1110 = load i32, ptr %1107, align 4 + %1111 = load i32, ptr %1109, align 8 %1112 = select i1 %.not1008.not.not, i32 -2145910769, i32 -2145910768 %1113 = getelementptr inbounds nuw i8, ptr %.15, i64 4 store i32 %1112, ptr %.15, align 4 %1114 = shl i32 %1111, 16 - %1115 = or i32 %1114, %1108 + %1115 = or i32 %1114, %1110 %1116 = getelementptr inbounds nuw i8, ptr %.15, i64 8 store i32 %1115, ptr %1113, align 4 br label %1300 @@ -13797,8 +13797,8 @@ define internal fastcc range(i32 15, 14) i32 @check_posix_name(ptr noundef %0, i 4: ; preds = %2, %12 %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %12 ] + %5 = phi ptr [ @posix_name_lengths, %2 ], [ %16, %12 ] %.01014 = phi ptr [ @posix_names, %2 ], [ %15, %12 ] - %5 = getelementptr inbounds nuw [15 x i8], ptr @posix_name_lengths, i64 0, i64 %indvars.iv %6 = load i8, ptr %5, align 1 %7 = zext i8 %6 to i32 %8 = icmp eq i32 %1, %7 @@ -13814,15 +13814,16 @@ define internal fastcc range(i32 15, 14) i32 @check_posix_name(ptr noundef %0, i %14 = getelementptr inbounds nuw i8, ptr %.01014, i64 %13 %15 = getelementptr inbounds nuw i8, ptr %14, i64 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %16 = getelementptr inbounds nuw [15 x i8], ptr @posix_name_lengths, i64 0, i64 %indvars.iv.next %.not = icmp eq i64 %indvars.iv.next, 14 br i1 %.not, label %.split.loop.exit, label %4 .split.loop.exit17: ; preds = %9 - %16 = trunc nuw nsw i64 %indvars.iv to i32 + %17 = trunc nuw nsw i64 %indvars.iv to i32 br label %.split.loop.exit .split.loop.exit: ; preds = %12, %.split.loop.exit17 - %.011 = phi i32 [ %16, %.split.loop.exit17 ], [ -1, %12 ] + %.011 = phi i32 [ %17, %.split.loop.exit17 ], [ -1, %12 ] ret i32 %.011 } diff --git a/bench/postgres/optimized/command.ll b/bench/postgres/optimized/command.ll index f8fc375a965..bd27d1e0e10 100644 --- a/bench/postgres/optimized/command.ll +++ b/bench/postgres/optimized/command.ll @@ -6433,16 +6433,16 @@ ignore_slash_options.exit: ; preds = %.lr.ph.i, %29, %8, define internal fastcc range(i32 2, 6) i32 @exec_command_pset(ptr noundef %0, i1 noundef zeroext %1) unnamed_addr #0 { %3 = alloca [32 x i8], align 16 %4 = tail call ptr @psql_scan_slash_option(ptr noundef %0, i32 noundef 0, ptr noundef null, i1 noundef zeroext false) #17 - br i1 %1, label %5, label %222 + br i1 %1, label %5, label %223 5: ; preds = %2 %6 = tail call ptr @psql_scan_slash_option(ptr noundef %0, i32 noundef 0, ptr noundef null, i1 noundef zeroext false) #17 %.not = icmp eq ptr %4, null - br i1 %.not, label %.preheader, label %217 + br i1 %.not, label %.preheader, label %218 .preheader: ; preds = %5, %pset_value_string.exit %indvars.iv = phi i64 [ %indvars.iv.next, %pset_value_string.exit ], [ 0, %5 ] - %7 = getelementptr [23 x ptr], ptr @exec_command_pset.my_list, i64 0, i64 %indvars.iv + %7 = phi ptr [ %217, %pset_value_string.exit ], [ @exec_command_pset.my_list, %5 ] %8 = load ptr, ptr %7, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %9 = call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %8, ptr noundef nonnull dereferenceable(7) @.str.43) #18 @@ -6882,35 +6882,36 @@ pset_value_string.exit: ; preds = %11, %18, %pset_quot %216 = call i32 (ptr, ...) @pg_printf(ptr noundef nonnull @.str.245, ptr noundef nonnull %8, ptr noundef %.0.i) #17 call void @free(ptr noundef %.0.i) #17 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %217 = getelementptr [23 x ptr], ptr @exec_command_pset.my_list, i64 0, i64 %indvars.iv.next %.not18 = icmp eq i64 %indvars.iv.next, 22 br i1 %.not18, label %.loopexit, label %.preheader, !llvm.loop !22 -217: ; preds = %5 - %218 = load i8, ptr getelementptr inbounds nuw (i8, ptr @pset, i64 386), align 2 - %219 = trunc i8 %218 to i1 - %220 = tail call zeroext i1 @do_pset(ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @pset, i64 48), i1 noundef zeroext %219) - %221 = select i1 %220, i32 2, i32 5 +218: ; preds = %5 + %219 = load i8, ptr getelementptr inbounds nuw (i8, ptr @pset, i64 386), align 2 + %220 = trunc i8 %219 to i1 + %221 = tail call zeroext i1 @do_pset(ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @pset, i64 48), i1 noundef zeroext %220) + %222 = select i1 %221, i32 2, i32 5 br label %.loopexit -.loopexit: ; preds = %pset_value_string.exit, %217 - %.0 = phi i32 [ %221, %217 ], [ 2, %pset_value_string.exit ] +.loopexit: ; preds = %pset_value_string.exit, %218 + %.0 = phi i32 [ %222, %218 ], [ 2, %pset_value_string.exit ] call void @free(ptr noundef %4) #17 call void @free(ptr noundef %6) #17 br label %ignore_slash_options.exit -222: ; preds = %2 +223: ; preds = %2 %.not2.i = icmp eq ptr %4, null br i1 %.not2.i, label %ignore_slash_options.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %222, %.lr.ph.i - %223 = phi ptr [ %224, %.lr.ph.i ], [ %4, %222 ] - tail call void @free(ptr noundef nonnull %223) #17 - %224 = tail call ptr @psql_scan_slash_option(ptr noundef %0, i32 noundef 0, ptr noundef null, i1 noundef zeroext false) #17 - %.not.i19 = icmp eq ptr %224, null +.lr.ph.i: ; preds = %223, %.lr.ph.i + %224 = phi ptr [ %225, %.lr.ph.i ], [ %4, %223 ] + tail call void @free(ptr noundef nonnull %224) #17 + %225 = tail call ptr @psql_scan_slash_option(ptr noundef %0, i32 noundef 0, ptr noundef null, i1 noundef zeroext false) #17 + %.not.i19 = icmp eq ptr %225, null br i1 %.not.i19, label %ignore_slash_options.exit, label %.lr.ph.i, !llvm.loop !9 -ignore_slash_options.exit: ; preds = %.lr.ph.i, %222, %.loopexit - %.1 = phi i32 [ %.0, %.loopexit ], [ 2, %222 ], [ 2, %.lr.ph.i ] +ignore_slash_options.exit: ; preds = %.lr.ph.i, %223, %.loopexit + %.1 = phi i32 [ %.0, %.loopexit ], [ 2, %223 ], [ 2, %.lr.ph.i ] ret i32 %.1 } diff --git a/bench/postgres/optimized/tablesync.ll b/bench/postgres/optimized/tablesync.ll index 93ad205cecd..15abbdea2f8 100644 --- a/bench/postgres/optimized/tablesync.ll +++ b/bench/postgres/optimized/tablesync.ll @@ -1602,11 +1602,11 @@ walrcv_clear_result.exit150.i.i.i: ; preds = %366, %364 .lr.ph192.split.us.i.i.i: ; preds = %.lr.ph192.i.i.i %406 = load i16, ptr %403, align 2 %407 = icmp slt i16 %406, 1 - br i1 %407, label %slot_getsomeattrs.exit.i151.us.i.i.i, label %slot_getattr.exit152.us.i.i.i + br i1 %407, label %slot_getsomeattrs.exit.i151.us.i.i.i, label %.split.i.i.i slot_getsomeattrs.exit.i151.us.i.i.i: ; preds = %.lr.ph192.split.us.i.i.i call void @slot_getsomeattrs_int(ptr noundef nonnull %399, i32 noundef range(i32 1, 5) 1) #12 - br label %slot_getattr.exit152.usthread-pre-split.i.i.i + br label %.split.i.i.i .lr.ph192.split.i.i.i: ; preds = %.lr.ph192.i.i.i, %415 %408 = load i16, ptr %403, align 2 @@ -1624,7 +1624,7 @@ slot_getattr.exit152.i.i.i: ; preds = %slot_getsomeattrs.e %sext.i.i.i = shl i32 %412, 16 %413 = ashr exact i32 %sext.i.i.i, 16 %414 = call zeroext i1 @bms_is_member(i32 noundef %413, ptr noundef nonnull %.0121.i.i.i) #12 - br i1 %414, label %slot_getattr.exit152.usthread-pre-split.i.i.i, label %415 + br i1 %414, label %.split.i.i.i, label %415 415: ; preds = %slot_getattr.exit152.i.i.i %416 = load ptr, ptr %405, align 8 @@ -1635,20 +1635,16 @@ slot_getattr.exit152.i.i.i: ; preds = %slot_getsomeattrs.e %420 = call zeroext i1 @tuplestore_gettupleslot(ptr noundef %419, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull %399) #12 br i1 %420, label %.lr.ph192.split.i.i.i, label %.outer._crit_edge.loopexit.i.i.i, !llvm.loop !13 -slot_getattr.exit152.usthread-pre-split.i.i.i: ; preds = %slot_getattr.exit152.i.i.i, %slot_getsomeattrs.exit.i151.us.i.i.i - %.pr.i.i.i = load i16, ptr %403, align 2 - br label %slot_getattr.exit152.us.i.i.i - -slot_getattr.exit152.us.i.i.i: ; preds = %slot_getattr.exit152.usthread-pre-split.i.i.i, %.lr.ph192.split.us.i.i.i - %421 = phi i16 [ %.pr.i.i.i, %slot_getattr.exit152.usthread-pre-split.i.i.i ], [ %406, %.lr.ph192.split.us.i.i.i ] +.split.i.i.i: ; preds = %slot_getattr.exit152.i.i.i, %.lr.ph192.split.us.i.i.i, %slot_getsomeattrs.exit.i151.us.i.i.i + %421 = load i16, ptr %403, align 2 %422 = icmp slt i16 %421, 2 br i1 %422, label %slot_getsomeattrs.exit.i153.i.i.i, label %slot_getattr.exit154.i.i.i -slot_getsomeattrs.exit.i153.i.i.i: ; preds = %slot_getattr.exit152.us.i.i.i +slot_getsomeattrs.exit.i153.i.i.i: ; preds = %.split.i.i.i call void @slot_getsomeattrs_int(ptr noundef nonnull %399, i32 noundef range(i32 1, 5) 2) #12 br label %slot_getattr.exit154.i.i.i -slot_getattr.exit154.i.i.i: ; preds = %slot_getsomeattrs.exit.i153.i.i.i, %slot_getattr.exit152.us.i.i.i +slot_getattr.exit154.i.i.i: ; preds = %slot_getsomeattrs.exit.i153.i.i.i, %.split.i.i.i %423 = load ptr, ptr %404, align 8 %424 = getelementptr i8, ptr %423, i64 8 %425 = load i64, ptr %424, align 8 diff --git a/bench/protobuf/optimized/importer.cc.ll b/bench/protobuf/optimized/importer.cc.ll index a59fd8349f8..e952da592b1 100644 --- a/bench/protobuf/optimized/importer.cc.ll +++ b/bench/protobuf/optimized/importer.cc.ll @@ -2056,7 +2056,7 @@ entry: declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 -; Function Attrs: mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree nounwind memory(read, inaccessiblemem: write) uwtable define internal fastcc noundef zeroext i1 @_ZN6google8protobuf8compilerL23ContainsParentReferenceESt17basic_string_viewIcSt11char_traitsIcEE(i64 %path.coerce0, ptr %path.coerce1) unnamed_addr #12 personality ptr @__gxx_personality_v0 { entry: %cmp.i = icmp eq i64 %path.coerce0, 2 @@ -2065,11 +2065,11 @@ entry: _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %entry %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %path.coerce1, ptr noundef nonnull dereferenceable(2) @.str.10, i64 2) %cmp.i.i = icmp eq i32 %bcmp.i, 0 - br i1 %cmp.i.i, label %lor.end, label %if.end.i.i.i.thread + br label %lor.end lor.rhs.i: ; preds = %entry %cmp.not.i = icmp ult i64 %path.coerce0, 3 - br i1 %cmp.not.i, label %if.end.i.i.i.thread, label %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit + br i1 %cmp.not.i, label %lor.end, label %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit _ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit: ; preds = %lor.rhs.i %bcmp.i8 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %path.coerce1, ptr noundef nonnull dereferenceable(3) @.str.11, i64 3) @@ -2081,16 +2081,13 @@ _ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.ex %add.ptr.i = getelementptr i8, ptr %0, i64 -3 %bcmp.i15 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %add.ptr.i, ptr noundef nonnull dereferenceable(3) @.str.12, i64 3) %cmp9.i = icmp eq i32 %bcmp.i15, 0 - br i1 %cmp9.i, label %lor.end, label %if.end.i.i.i - -if.end.i.i.i.thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %lor.rhs.i - br label %lor.end + br i1 %cmp9.i, label %lor.end, label %if.end6.i.i.i -if.end.i.i.i: ; preds = %_ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit +if.end6.i.i.i: ; preds = %_ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit %cmp11.not20.i.i.i = icmp eq i64 %path.coerce0, 3 br i1 %cmp11.not20.i.i.i, label %lor.end, label %while.body.lr.ph.i.i.i -while.body.lr.ph.i.i.i: ; preds = %if.end.i.i.i +while.body.lr.ph.i.i.i: ; preds = %if.end6.i.i.i %add.ptr9.i.i.i = getelementptr inbounds i8, ptr %path.coerce1, i64 %path.coerce0 %sub.ptr.lhs.cast20.i.i.i = ptrtoint ptr %add.ptr9.i.i.i to i64 br label %while.body.i.i.i @@ -2122,8 +2119,8 @@ if.end19.i.i.i: ; preds = %_ZNSt11char_traitsI %cmp11.not.i.i.i = icmp ult i64 %sub.ptr.sub22.i.i.i, 4 br i1 %cmp11.not.i.i.i, label %lor.end, label %while.body.i.i.i, !llvm.loop !36 -lor.end: ; preds = %if.end19.i.i.i, %while.body.i.i.i, %if.end.i.i.i.thread, %if.then17.i.i.i, %if.end.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit - %2 = phi i1 [ true, %_ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit ], [ true, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit ], [ true, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ], [ %1, %if.then17.i.i.i ], [ false, %if.end.i.i.i ], [ false, %if.end.i.i.i.thread ], [ false, %while.body.i.i.i ], [ false, %if.end19.i.i.i ] +lor.end: ; preds = %if.end19.i.i.i, %while.body.i.i.i, %lor.rhs.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %if.then17.i.i.i, %if.end6.i.i.i, %_ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit + %2 = phi i1 [ true, %_ZN4absl12lts_202308028EndsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit ], [ true, %_ZN4absl12lts_2023080210StartsWithESt17basic_string_viewIcSt11char_traitsIcEES4_.exit ], [ %1, %if.then17.i.i.i ], [ false, %if.end6.i.i.i ], [ %cmp.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ], [ false, %lor.rhs.i ], [ false, %while.body.i.i.i ], [ false, %if.end19.i.i.i ] ret i1 %2 } @@ -2496,7 +2493,7 @@ attributes #8 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="t 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 nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #11 = { 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 #12 = { mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #12 = { mustprogress nofree 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 #13 = { mustprogress nofree nosync nounwind willreturn memory(none) "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 = { nofree "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 #15 = { 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" } diff --git a/bench/proxygen/optimized/HTTPConnectorWithFizz.cpp.ll b/bench/proxygen/optimized/HTTPConnectorWithFizz.cpp.ll index baee529d5dc..a6b93f2741a 100644 --- a/bench/proxygen/optimized/HTTPConnectorWithFizz.cpp.ll +++ b/bench/proxygen/optimized/HTTPConnectorWithFizz.cpp.ll @@ -9471,6 +9471,7 @@ _ZN5folly8OptionalIN4fizz6client16AsyncFizzClientTINS2_18ClientStateMachineEE14E %conv = zext i32 %11 to i64 %cmp = icmp ugt i64 %call13, %conv %or.cond = select i1 %cmp.i.i, i1 true, i1 %cmp + %writeAeadOptions_.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 168 br i1 %or.cond, label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit, label %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit42 _ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit: ; preds = %_ZN5folly8OptionalIN4fizz6client16AsyncFizzClientTINS2_18ClientStateMachineEE14EarlyDataStateEEptEv.exit @@ -9480,13 +9481,12 @@ _ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit: ; preds = %12 = load ptr, ptr %buf, align 8 store ptr null, ptr %buf, align 8 store ptr %12, ptr %data, align 8 - %.pre99 = load i8, ptr %hasValue.i.i, align 8 - %writeAeadOptions_.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 168 - %.pre98 = load i64, ptr %writeAeadOptions_.phi.trans.insert, align 8 + %.pre100 = load i8, ptr %hasValue.i.i, align 8 + %.pre99 = load i64, ptr %writeAeadOptions_.phi.trans.insert, align 8 %flags22 = getelementptr inbounds nuw i8, ptr %w, i64 16 store i32 %flags, ptr %flags22, align 8 - store i64 %.pre98, ptr %aeadOptions.i, align 4 - %tobool.i.i.i27 = trunc i8 %.pre99 to i1 + store i64 %.pre99, ptr %aeadOptions.i, align 4 + %tobool.i.i.i27 = trunc i8 %.pre100 to i1 br i1 %tobool.i.i.i27, label %invoke.cont29, label %if.then.i.i.i28 if.then.i.i.i28: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit @@ -9522,13 +9522,13 @@ if.else.i.i: ; preds = %invoke.cont29 to label %invoke.cont32 unwind label %lpad24 invoke.cont32: ; preds = %if.else.i.i - %.pre100 = load ptr, ptr %data, align 8 - %cmp.not.i.i37 = icmp eq ptr %.pre100, null + %.pre101 = load ptr, ptr %data, align 8 + %cmp.not.i.i37 = icmp eq ptr %.pre101, null br i1 %cmp.not.i.i37, label %if.end93, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i _ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i: ; preds = %invoke.cont32 - call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %.pre100) #30 - call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %.pre100) #30 + call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %.pre101) #30 + call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %.pre101) #30 br label %if.end93 lpad24: ; preds = %if.else.i.i, %if.then.i.i.i28 @@ -9545,13 +9545,12 @@ _ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit42: ; preds store ptr null, ptr %buf, align 8 store ptr %18, ptr %data36, align 8 %earlyDataRejectionPolicy_.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 2160 - %.pre97 = load i32, ptr %earlyDataRejectionPolicy_.phi.trans.insert, align 8 - %writeAeadOptions_39.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 168 - %.pre96 = load i64, ptr %writeAeadOptions_39.phi.trans.insert, align 8 + %.pre98 = load i32, ptr %earlyDataRejectionPolicy_.phi.trans.insert, align 8 + %.pre97 = load i64, ptr %writeAeadOptions_.phi.trans.insert, align 8 %flags38 = getelementptr inbounds nuw i8, ptr %w34, i64 16 store i32 %flags, ptr %flags38, align 8 - store i64 %.pre96, ptr %aeadOptions.i38, align 4 - %cmp41 = icmp eq i32 %.pre97, 1 + store i64 %.pre97, ptr %aeadOptions.i38, align 4 + %cmp41 = icmp eq i32 %.pre98, 1 br i1 %cmp41, label %if.then42, label %if.end55 if.then42: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit42 @@ -9693,15 +9692,15 @@ _ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit68: ; preds store ptr null, ptr %buf, align 8 store ptr %36, ptr %data70, align 8 %37 = ptrtoint ptr %36 to i64 + %writeAeadOptions_73.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 168 %vtable75.pre = load ptr, ptr %this, align 8 %vfn76.phi.trans.insert = getelementptr inbounds nuw i8, ptr %vtable75.pre, i64 104 - %.pre95 = load ptr, ptr %vfn76.phi.trans.insert, align 8 - %writeAeadOptions_73.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 168 + %.pre96 = load ptr, ptr %vfn76.phi.trans.insert, align 8 %.pre = load i64, ptr %writeAeadOptions_73.phi.trans.insert, align 8 %flags72 = getelementptr inbounds nuw i8, ptr %w68, i64 16 store i32 %flags, ptr %flags72, align 8 store i64 %.pre, ptr %aeadOptions.i64, align 4 - %call79 = invoke noundef zeroext i1 %.pre95(ptr noundef nonnull align 8 dereferenceable(2272) %this) + %call79 = invoke noundef zeroext i1 %.pre96(ptr noundef nonnull align 8 dereferenceable(2272) %this) to label %invoke.cont78 unwind label %lpad77 invoke.cont78: ; preds = %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit68 @@ -9722,7 +9721,7 @@ if.then83: ; preds = %land.lhs.true %41 = load ptr, ptr %_M_last.i.i70, align 8 %add.ptr.i.i71 = getelementptr inbounds i8, ptr %41, i64 -32 %cmp.not.i.i72 = icmp eq ptr %40, %add.ptr.i.i71 - br i1 %cmp.not.i.i72, label %if.else.i.i79, label %if.then.i.i73 + br i1 %cmp.not.i.i72, label %if.else.i.i80, label %if.then.i.i73 if.then.i.i73: ; preds = %if.then83 store ptr %callback, ptr %40, align 8 @@ -9737,12 +9736,12 @@ if.then.i.i73: ; preds = %if.then83 store ptr %incdec.ptr.i.i78, ptr %_M_finish.i.i69, align 8 br label %if.end91 -if.else.i.i79: ; preds = %if.then83 +if.else.i.i80: ; preds = %if.then83 %pendingHandshakeAppWrites_ = getelementptr inbounds nuw i8, ptr %this, i64 2192 invoke void @_ZNSt5dequeIN4fizz8AppWriteESaIS1_EE16_M_push_back_auxIJS1_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %pendingHandshakeAppWrites_, ptr noundef nonnull align 8 dereferenceable(28) %w68) to label %if.end91 unwind label %lpad77 -lpad77: ; preds = %if.else.i.i79, %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit68 +lpad77: ; preds = %if.else.i.i80, %_ZNSt10unique_ptrIN5folly5IOBufESt14default_deleteIS1_EEaSEOS4_.exit68 %44 = landingpad { ptr, i32 } cleanup br label %ehcleanup92 @@ -9750,26 +9749,26 @@ lpad77: ; preds = %if.else.i.i79, %_ZN if.else85: ; preds = %land.lhs.true, %invoke.cont78 %fizzClient_86 = getelementptr inbounds nuw i8, ptr %this, i64 1824 store ptr %callback, ptr %agg.tmp87, align 8 - %data.i82 = getelementptr inbounds nuw i8, ptr %agg.tmp87, i64 8 - store i64 %37, ptr %data.i82, align 8 + %data.i83 = getelementptr inbounds nuw i8, ptr %agg.tmp87, i64 8 + store i64 %37, ptr %data.i83, align 8 store ptr null, ptr %data70, align 8 - %flags.i84 = getelementptr inbounds nuw i8, ptr %agg.tmp87, i64 16 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %flags.i84, ptr noundef nonnull align 8 dereferenceable(12) %flags72, i64 12, i1 false) + %flags.i85 = getelementptr inbounds nuw i8, ptr %agg.tmp87, i64 16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %flags.i85, ptr noundef nonnull align 8 dereferenceable(12) %flags72, i64 12, i1 false) invoke void @_ZN4fizz8FizzBaseINS_6client10FizzClientINS1_16AsyncFizzClientTINS1_18ClientStateMachineEE17ActionMoveVisitorES4_EES6_S4_E8appWriteENS_8AppWriteE(ptr noundef nonnull align 8 dereferenceable(163) %fizzClient_86, ptr noundef nonnull %agg.tmp87) to label %invoke.cont89 unwind label %lpad88 invoke.cont89: ; preds = %if.else85 - %45 = load ptr, ptr %data.i82, align 8 - %cmp.not.i.i87 = icmp eq ptr %45, null - br i1 %cmp.not.i.i87, label %_ZN4fizz8AppWriteD2Ev.exit89, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i88 + %45 = load ptr, ptr %data.i83, align 8 + %cmp.not.i.i88 = icmp eq ptr %45, null + br i1 %cmp.not.i.i88, label %_ZN4fizz8AppWriteD2Ev.exit90, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i89 -_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i88: ; preds = %invoke.cont89 +_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i89: ; preds = %invoke.cont89 call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %45) #30 call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %45) #30 - br label %_ZN4fizz8AppWriteD2Ev.exit89 + br label %_ZN4fizz8AppWriteD2Ev.exit90 -_ZN4fizz8AppWriteD2Ev.exit89: ; preds = %invoke.cont89, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i88 - store ptr null, ptr %data.i82, align 8 +_ZN4fizz8AppWriteD2Ev.exit90: ; preds = %invoke.cont89, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i89 + store ptr null, ptr %data.i83, align 8 br label %if.end91 lpad88: ; preds = %if.else85 @@ -9778,12 +9777,12 @@ lpad88: ; preds = %if.else85 call void @_ZN4fizz8AppWriteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %agg.tmp87) #30 br label %ehcleanup92 -if.end91: ; preds = %if.then.i.i73, %if.else.i.i79, %_ZN4fizz8AppWriteD2Ev.exit89 +if.end91: ; preds = %if.then.i.i73, %if.else.i.i80, %_ZN4fizz8AppWriteD2Ev.exit90 %47 = load ptr, ptr %data70, align 8 - %cmp.not.i.i91 = icmp eq ptr %47, null - br i1 %cmp.not.i.i91, label %if.end93, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i92 + %cmp.not.i.i92 = icmp eq ptr %47, null + br i1 %cmp.not.i.i92, label %if.end93, label %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i93 -_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i92: ; preds = %if.end91 +_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i93: ; preds = %if.end91 call void @_ZN5folly5IOBufD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %47) #30 call void @_ZN5folly5IOBufdlEPv(ptr noundef nonnull %47) #30 br label %if.end93 @@ -9793,7 +9792,7 @@ ehcleanup92: ; preds = %lpad88, %lpad77 call void @_ZN4fizz8AppWriteD2Ev(ptr noundef nonnull align 8 dereferenceable(28) %w68) #30 br label %eh.resume -if.end93: ; preds = %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i92, %if.end91, %invoke.cont63, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i59, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i, %invoke.cont32, %invoke.cont32.thread, %if.then, %invoke.cont6 +if.end93: ; preds = %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i93, %if.end91, %invoke.cont63, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i59, %_ZNKSt14default_deleteIN5folly5IOBufEEclEPS1_.exit.i.i, %invoke.cont32, %invoke.cont32.thread, %if.then, %invoke.cont6 ret void eh.resume: ; preds = %ehcleanup92, %ehcleanup65, %lpad24, %ehcleanup 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/quantlib/optimized/chebyshevinterpolation.ll b/bench/quantlib/optimized/chebyshevinterpolation.ll index 770e9f77f81..522c67bf0df 100644 --- a/bench/quantlib/optimized/chebyshevinterpolation.ll +++ b/bench/quantlib/optimized/chebyshevinterpolation.ll @@ -372,7 +372,7 @@ _ZN8QuantLib5ArrayD2Ev.exit: ; preds = %ehcleanup, %_ZNKSt1 declare i32 @__gxx_personality_v0(...) ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib22ChebyshevInterpolationC2ERKNS_5ArrayENS0_10PointsTypeE(ptr noundef nonnull align 8 dereferenceable(80) initializes((0, 9), (16, 48)) %this, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %y, i32 noundef %pointsType) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib22ChebyshevInterpolationC2ERKNS_5ArrayENS0_10PointsTypeE(ptr noundef nonnull align 8 dereferenceable(80) initializes((0, 9), (16, 48)) %this, ptr noundef nonnull align 8 dereferenceable(16) %y, i32 noundef %pointsType) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp = alloca %"class.boost::shared_ptr.3", align 8 %ref.tmp5 = alloca ptr, align 8 @@ -1107,16 +1107,17 @@ invoke.cont4: ; preds = %invoke.cont br i1 %cmp.not.i.i, label %_ZN8QuantLib5ArrayD2Ev.exit, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i: ; preds = %invoke.cont4 - tail call void @_ZdaPv(ptr noundef nonnull %0) #26 + call void @_ZdaPv(ptr noundef nonnull %0) #26 br label %_ZN8QuantLib5ArrayD2Ev.exit _ZN8QuantLib5ArrayD2Ev.exit: ; preds = %invoke.cont4, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i + store ptr null, ptr %ref.tmp, align 8, !tbaa !15 %1 = load ptr, ptr %ref.tmp2, align 8, !tbaa !15 %cmp.not.i.i3 = icmp eq ptr %1, null br i1 %cmp.not.i.i3, label %_ZN8QuantLib5ArrayD2Ev.exit5, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i4 _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i4: ; preds = %_ZN8QuantLib5ArrayD2Ev.exit - tail call void @_ZdaPv(ptr noundef nonnull %1) #26 + call void @_ZdaPv(ptr noundef nonnull %1) #26 br label %_ZN8QuantLib5ArrayD2Ev.exit5 _ZN8QuantLib5ArrayD2Ev.exit5: ; preds = %_ZN8QuantLib5ArrayD2Ev.exit, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i4 @@ -1134,20 +1135,24 @@ lpad3: ; preds = %invoke.cont cleanup %4 = load ptr, ptr %ref.tmp, align 8, !tbaa !15 %cmp.not.i.i6 = icmp eq ptr %4, null - br i1 %cmp.not.i.i6, label %ehcleanup, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i7 + br i1 %cmp.not.i.i6, label %_ZN8QuantLib5ArrayD2Ev.exit8, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i7 _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i7: ; preds = %lpad3 - tail call void @_ZdaPv(ptr noundef nonnull %4) #26 + call void @_ZdaPv(ptr noundef nonnull %4) #26 + br label %_ZN8QuantLib5ArrayD2Ev.exit8 + +_ZN8QuantLib5ArrayD2Ev.exit8: ; preds = %lpad3, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i7 + store ptr null, ptr %ref.tmp, align 8, !tbaa !15 br label %ehcleanup -ehcleanup: ; preds = %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i7, %lpad3, %lpad - %.pn = phi { ptr, i32 } [ %2, %lpad ], [ %3, %lpad3 ], [ %3, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i7 ] +ehcleanup: ; preds = %_ZN8QuantLib5ArrayD2Ev.exit8, %lpad + %.pn = phi { ptr, i32 } [ %3, %_ZN8QuantLib5ArrayD2Ev.exit8 ], [ %2, %lpad ] %5 = load ptr, ptr %ref.tmp2, align 8, !tbaa !15 %cmp.not.i.i9 = icmp eq ptr %5, null br i1 %cmp.not.i.i9, label %_ZN8QuantLib5ArrayD2Ev.exit11, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i10 _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i10: ; preds = %ehcleanup - tail call void @_ZdaPv(ptr noundef nonnull %5) #26 + call void @_ZdaPv(ptr noundef nonnull %5) #26 br label %_ZN8QuantLib5ArrayD2Ev.exit11 _ZN8QuantLib5ArrayD2Ev.exit11: ; preds = %ehcleanup, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i10 @@ -1157,7 +1162,7 @@ _ZN8QuantLib5ArrayD2Ev.exit11: ; preds = %ehcleanup, %_ZNKSt1 } ; Function Attrs: mustprogress uwtable -define void @_ZNK8QuantLib22ChebyshevInterpolation5nodesEv(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.QuantLib::Array") align 8 initializes((0, 16)) %agg.result, ptr nocapture noundef nonnull readonly align 8 dereferenceable(80) %this) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZNK8QuantLib22ChebyshevInterpolation5nodesEv(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.QuantLib::Array") align 8 initializes((0, 16)) %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { entry: %n_.i = getelementptr inbounds nuw i8, ptr %this, i64 40 %0 = load i64, ptr %n_.i, align 8, !tbaa !3 @@ -1485,8 +1490,8 @@ do.end: ; preds = %entry if.then.i.i.i.i.i: ; preds = %do.end %23 = load ptr, ptr %y, align 8, !tbaa !15 - %add.ptr.i.idx = shl nuw nsw i64 %0, 3 %y_ = getelementptr inbounds nuw i8, ptr %this, i64 48 + %add.ptr.i.idx = shl nuw nsw i64 %0, 3 %24 = load ptr, ptr %y_, align 8, !tbaa !15 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %24, ptr align 8 %23, i64 %add.ptr.i.idx, i1 false) br label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit diff --git a/bench/quantlib/optimized/nonlinearfittingmethods.ll b/bench/quantlib/optimized/nonlinearfittingmethods.ll index 0fc759cade4..67512a0a064 100644 --- a/bench/quantlib/optimized/nonlinearfittingmethods.ll +++ b/bench/quantlib/optimized/nonlinearfittingmethods.ll @@ -346,7 +346,7 @@ declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(p declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8 ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib25ExponentialSplinesFittingC2EbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddmdNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(192) %this, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, i64 noundef %numCoeffs, double noundef %fixedKappa, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib25ExponentialSplinesFittingC2EbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddmdNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(192) %this, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, i64 noundef %numCoeffs, double noundef %fixedKappa, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %agg.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp2 = alloca %"class.QuantLib::Array", align 8 @@ -784,7 +784,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib25ExponentialSplinesFittingC2EbRKNS_5ArrayES3_ddmdNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(192) %this, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, i64 noundef %numCoeffs, double noundef %fixedKappa, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib25ExponentialSplinesFittingC2EbRKNS_5ArrayES3_ddmdNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(192) %this, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, i64 noundef %numCoeffs, double noundef %fixedKappa, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp = alloca %"class.QuantLib::Constraint", align 8 @@ -908,7 +908,7 @@ invoke.cont: store ptr %1, ptr %pn.i.i, align 8, !tbaa !16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %constraint, i8 0, i64 16, i1 false) invoke void @_ZN8QuantLib25ExponentialSplinesFittingC2EbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddmdNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(192) %this, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp2, double noundef 0.000000e+00, double noundef 0x7FEFFFFFFFFFFFFF, i64 noundef %numCoeffs, double noundef %fixedKappa, ptr noundef nonnull %agg.tmp) - to label %invoke.cont4 unwind label %_ZN8QuantLib5ArrayD2Ev.exit11 + to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont %2 = load ptr, ptr %pn.i.i, align 8, !tbaa !16 @@ -945,7 +945,7 @@ terminate.lpad.i.i.i: ; preds = %if.then.i.i.i.i.i, %7 = landingpad { ptr, i32 } catch ptr null %8 = extractvalue { ptr, i32 } %7, 0 - tail call void @__clang_call_terminate(ptr %8) #23 + call void @__clang_call_terminate(ptr %8) #23 unreachable _ZN8QuantLib10ConstraintD2Ev.exit: ; preds = %invoke.cont4, %if.then.i.i.i, %.noexc.i.i.i, %if.then.i.i.i.i.i @@ -954,7 +954,7 @@ _ZN8QuantLib10ConstraintD2Ev.exit: ; preds = %invoke.cont4, %if.t br i1 %cmp.not.i.i, label %_ZN8QuantLib5ArrayD2Ev.exit, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i: ; preds = %_ZN8QuantLib10ConstraintD2Ev.exit - tail call void @_ZdaPv(ptr noundef nonnull %9) #26 + call void @_ZdaPv(ptr noundef nonnull %9) #26 br label %_ZN8QuantLib5ArrayD2Ev.exit _ZN8QuantLib5ArrayD2Ev.exit: ; preds = %_ZN8QuantLib10ConstraintD2Ev.exit, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i @@ -994,17 +994,26 @@ terminate.lpad.i.i: ; preds = %if.then.i.i.i.i6, % %15 = landingpad { ptr, i32 } catch ptr null %16 = extractvalue { ptr, i32 } %15, 0 - tail call void @__clang_call_terminate(ptr %16) #23 + call void @__clang_call_terminate(ptr %16) #23 unreachable _ZN5boost10shared_ptrIN8QuantLib18OptimizationMethodEED2Ev.exit: ; preds = %_ZN8QuantLib5ArrayD2Ev.exit, %if.then.i.i, %.noexc.i.i, %if.then.i.i.i.i6 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp) #22 ret void -_ZN8QuantLib5ArrayD2Ev.exit11: ; preds = %invoke.cont +lpad3: ; preds = %invoke.cont %17 = landingpad { ptr, i32 } cleanup call void @_ZN8QuantLib10ConstraintD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp) #22 + %18 = load ptr, ptr %ref.tmp2, align 8, !tbaa !28 + %cmp.not.i.i9 = icmp eq ptr %18, null + br i1 %cmp.not.i.i9, label %_ZN8QuantLib5ArrayD2Ev.exit11, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i10 + +_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i10: ; preds = %lpad3 + call void @_ZdaPv(ptr noundef nonnull %18) #26 + br label %_ZN8QuantLib5ArrayD2Ev.exit11 + +_ZN8QuantLib5ArrayD2Ev.exit11: ; preds = %lpad3, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i10 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp2) #22 call void @_ZN5boost10shared_ptrIN8QuantLib18OptimizationMethodEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #22 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp) #22 @@ -1134,7 +1143,7 @@ declare double @exp(double noundef) local_unnamed_addr #10 declare double @llvm.fmuladd.f64(double, double, double) #11 ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib19NelsonSiegelFittingC2ERKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib19NelsonSiegelFittingC2ERKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %agg.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp2 = alloca %"class.QuantLib::Array", align 8 @@ -1307,7 +1316,7 @@ ehcleanup: ; preds = %_ZN8QuantLib5ArrayD } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib19NelsonSiegelFittingC2ERKNS_5ArrayES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib19NelsonSiegelFittingC2ERKNS_5ArrayES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp = alloca %"class.QuantLib::Constraint", align 8 @@ -1475,7 +1484,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib15SvenssonFittingC2ERKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib15SvenssonFittingC2ERKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %agg.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp2 = alloca %"class.QuantLib::Array", align 8 @@ -1648,7 +1657,7 @@ ehcleanup: ; preds = %_ZN8QuantLib5ArrayD } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib15SvenssonFittingC2ERKNS_5ArrayES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib15SvenssonFittingC2ERKNS_5ArrayES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(176) %this, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp = alloca %"class.QuantLib::Constraint", align 8 @@ -1836,7 +1845,7 @@ entry: } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib20CubicBSplinesFittingC2ERKSt6vectorIdSaIdEEbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES8_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(220) %this, ptr noundef nonnull align 8 dereferenceable(24) %knots, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib20CubicBSplinesFittingC2ERKSt6vectorIdSaIdEEbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES8_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(220) %this, ptr noundef nonnull align 8 dereferenceable(24) %knots, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %agg.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp2 = alloca %"class.QuantLib::Array", align 8 @@ -2446,7 +2455,7 @@ declare void @_ZN8QuantLib7BSplineC1EjjRKSt6vectorIdSaIdEE(ptr noundef nonnull a declare noundef double @_ZNK8QuantLib7BSplineclEjd(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, double noundef) local_unnamed_addr #4 ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib20CubicBSplinesFittingC2ERKSt6vectorIdSaIdEEbRKNS_5ArrayES8_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(220) %this, ptr noundef nonnull align 8 dereferenceable(24) %knots, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib20CubicBSplinesFittingC2ERKSt6vectorIdSaIdEEbRKNS_5ArrayES8_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(220) %this, ptr noundef nonnull align 8 dereferenceable(24) %knots, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp = alloca %"class.QuantLib::Constraint", align 8 @@ -2738,7 +2747,7 @@ if.end39: ; preds = %for.body, %for.cond } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib23SimplePolynomialFittingC2EjbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(184) %this, i32 noundef %degree, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib23SimplePolynomialFittingC2EjbRKNS_5ArrayERKN5boost10shared_ptrINS_18OptimizationMethodEEES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(184) %this, i32 noundef %degree, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %optimizationMethod, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %agg.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp2 = alloca %"class.QuantLib::Array", align 8 @@ -2917,7 +2926,7 @@ ehcleanup: ; preds = %_ZN8QuantLib5ArrayD } ; Function Attrs: mustprogress uwtable -define void @_ZN8QuantLib23SimplePolynomialFittingC2EjbRKNS_5ArrayES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(184) %this, i32 noundef %degree, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZN8QuantLib23SimplePolynomialFittingC2EjbRKNS_5ArrayES3_ddNS_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(184) %this, i32 noundef %degree, i1 noundef zeroext %constrainAtZero, ptr noundef nonnull align 8 dereferenceable(16) %weights, ptr noundef nonnull align 8 dereferenceable(16) %l2, double noundef %minCutoffTime, double noundef %maxCutoffTime, ptr nocapture noundef %constraint) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp = alloca %"class.boost::shared_ptr.50", align 8 %agg.tmp = alloca %"class.QuantLib::Constraint", align 8 diff --git a/bench/quantlib/optimized/onefactorcopula.ll b/bench/quantlib/optimized/onefactorcopula.ll index 75381fab911..f2c5ec0d98d 100644 --- a/bench/quantlib/optimized/onefactorcopula.ll +++ b/bench/quantlib/optimized/onefactorcopula.ll @@ -778,7 +778,7 @@ declare void @__cxa_free_exception(ptr) local_unnamed_addr declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #12 align 2 ; Function Attrs: mustprogress uwtable -define void @_ZNK8QuantLib15OneFactorCopula22conditionalProbabilityERKSt6vectorIdSaIdEEd(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.std::vector") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(104) %this, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %prob, double noundef %m) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { +define void @_ZNK8QuantLib15OneFactorCopula22conditionalProbabilityERKSt6vectorIdSaIdEEd(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(104) %this, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %prob, double noundef %m) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 { entry: %vtable = load ptr, ptr %this, align 8, !tbaa !13 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 24 @@ -819,23 +819,22 @@ invoke.cont: ; preds = %_ZNSt6vectorIdSaIdE %_M_finish.i.i7.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store ptr %add.ptr.i.i.i, ptr %_M_finish.i.i7.i, align 8, !tbaa !33 %sub.ptr.div.i11 = lshr exact i64 %sub.ptr.sub.i, 3 - %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i11, i64 1) br label %for.body for.body: ; preds = %invoke.cont, %invoke.cont6 - %i.016 = phi i64 [ %inc, %invoke.cont6 ], [ 0, %invoke.cont ] + %i.018 = phi i64 [ %inc, %invoke.cont6 ], [ 0, %invoke.cont ] %7 = load ptr, ptr %prob, align 8, !tbaa !35 - %add.ptr.i = getelementptr inbounds nuw double, ptr %7, i64 %i.016 + %add.ptr.i = getelementptr inbounds nuw double, ptr %7, i64 %i.018 %8 = load double, ptr %add.ptr.i, align 8, !tbaa !37 %call7 = invoke noundef double @_ZNK8QuantLib15OneFactorCopula22conditionalProbabilityEdd(ptr noundef nonnull align 8 dereferenceable(104) %this, double noundef %8, double noundef %m) to label %invoke.cont6 unwind label %eh.resume invoke.cont6: ; preds = %for.body - %add.ptr.i12 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i6, i64 %i.016 + %add.ptr.i12 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i6, i64 %i.018 store double %call7, ptr %add.ptr.i12, align 8, !tbaa !37 - %inc = add nuw i64 %i.016, 1 - %exitcond.not = icmp eq i64 %inc, %umax - br i1 %exitcond.not, label %nrvo.skipdtor, label %for.body, !llvm.loop !39 + %inc = add nuw i64 %i.018, 1 + %cmp = icmp ult i64 %inc, %sub.ptr.div.i11 + br i1 %cmp, label %for.body, label %nrvo.skipdtor, !llvm.loop !39 nrvo.skipdtor: ; preds = %invoke.cont6, %invoke.cont.thread ret void diff --git a/bench/quest/optimized/QuEST_common.c.ll b/bench/quest/optimized/QuEST_common.c.ll index 7b07450d138..4dc63a43047 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 { +define void @reportQuregParams(ptr noundef byval(%struct.Qureg) align 8 %0) local_unnamed_addr #14 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 %3 = load i32, ptr %2, align 8 %4 = icmp eq i32 %3, 0 - br i1 %4, label %5, label %17 + br i1 %4, label %5, label %18 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 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 36 + %9 = zext nneg i32 %7 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 %6, 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 = %5, %1 ret void } diff --git a/bench/quest/optimized/QuEST_cpu.c.ll b/bench/quest/optimized/QuEST_cpu.c.ll index 9ff5a8d61e4..0b9d1f207d1 100644 --- a/bench/quest/optimized/QuEST_cpu.c.ll +++ b/bench/quest/optimized/QuEST_cpu.c.ll @@ -2412,13 +2412,14 @@ define internal void @densmatr_calcPurityLocal.omp_outlined(ptr noalias nocaptur br i1 %.not19, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %15 + %.promoted = load double, ptr %7, align 8 %20 = load ptr, ptr %4, align 8 %21 = load ptr, ptr %5, align 8 br label %22 22: ; preds = %.lr.ph, %22 %.020 = phi i64 [ %19, %.lr.ph ], [ %31, %22 ] - %23 = phi double [ 0.000000e+00, %.lr.ph ], [ %30, %22 ] + %23 = phi double [ %.promoted, %.lr.ph ], [ %30, %22 ] %24 = getelementptr inbounds double, ptr %20, i64 %.020 %25 = load double, ptr %24, align 8 %26 = getelementptr inbounds double, ptr %21, i64 %.020 @@ -2637,6 +2638,7 @@ define internal void @densmatr_calcHilbertSchmidtDistanceSquaredLocal.omp_outlin br i1 %.not25, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %17 + %.promoted = load double, ptr %9, align 8 %22 = load ptr, ptr %3, align 8 %23 = load ptr, ptr %4, align 8 %24 = load ptr, ptr %5, align 8 @@ -2645,7 +2647,7 @@ define internal void @densmatr_calcHilbertSchmidtDistanceSquaredLocal.omp_outlin 26: ; preds = %.lr.ph, %26 %.026 = phi i64 [ %21, %.lr.ph ], [ %41, %26 ] - %27 = phi double [ 0.000000e+00, %.lr.ph ], [ %40, %26 ] + %27 = phi double [ %.promoted, %.lr.ph ], [ %40, %26 ] %28 = getelementptr inbounds double, ptr %22, i64 %.026 %29 = load double, ptr %28, align 8 %30 = getelementptr inbounds double, ptr %23, i64 %.026 @@ -2763,6 +2765,7 @@ define internal void @densmatr_calcInnerProductLocal.omp_outlined(ptr noalias no br i1 %.not21, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %17 + %.promoted = load double, ptr %9, align 8 %22 = load ptr, ptr %4, align 8 %23 = load ptr, ptr %5, align 8 %24 = load ptr, ptr %6, align 8 @@ -2771,7 +2774,7 @@ define internal void @densmatr_calcInnerProductLocal.omp_outlined(ptr noalias no 26: ; preds = %.lr.ph, %26 %.022 = phi i64 [ %21, %.lr.ph ], [ %39, %26 ] - %27 = phi double [ 0.000000e+00, %.lr.ph ], [ %38, %26 ] + %27 = phi double [ %.promoted, %.lr.ph ], [ %38, %26 ] %28 = getelementptr inbounds double, ptr %22, i64 %.022 %29 = load double, ptr %28, align 8 %30 = getelementptr inbounds double, ptr %23, i64 %.022 @@ -2898,6 +2901,7 @@ define internal void @densmatr_calcFidelityLocal.omp_outlined(ptr noalias nocapt br i1 %.not50, label %._crit_edge54, label %.lr.ph53 .lr.ph53: ; preds = %19 + %.promoted = load double, ptr %11, align 8 %24 = load ptr, ptr %3, align 8 %25 = load ptr, ptr %4, align 8 %26 = load i32, ptr %5, align 4 @@ -2923,7 +2927,7 @@ define internal void @densmatr_calcFidelityLocal.omp_outlined(ptr noalias nocapt .lr.ph.us: ; preds = %.lr.ph.us.preheader, %._crit_edge.us %indvars.iv62 = phi i64 [ %36, %.lr.ph.us.preheader ], [ %indvars.iv.next63, %._crit_edge.us ] - %38 = phi double [ 0.000000e+00, %.lr.ph.us.preheader ], [ %64, %._crit_edge.us ] + %38 = phi double [ %.promoted, %.lr.ph.us.preheader ], [ %64, %._crit_edge.us ] %39 = getelementptr inbounds double, ptr %24, i64 %indvars.iv62 %40 = load double, ptr %39, align 8 %41 = getelementptr inbounds double, ptr %25, i64 %indvars.iv62 @@ -2968,7 +2972,7 @@ define internal void @densmatr_calcFidelityLocal.omp_outlined(ptr noalias nocapt .lr.ph53.split: ; preds = %.lr.ph53.split.preheader, %.lr.ph53.split %indvars.iv = phi i64 [ %30, %.lr.ph53.split.preheader ], [ %indvars.iv.next, %.lr.ph53.split ] - %65 = phi double [ 0.000000e+00, %.lr.ph53.split.preheader ], [ %72, %.lr.ph53.split ] + %65 = phi double [ %.promoted, %.lr.ph53.split.preheader ], [ %72, %.lr.ph53.split ] %66 = getelementptr inbounds double, ptr %24, i64 %indvars.iv %67 = load double, ptr %66, align 8 %68 = getelementptr inbounds double, ptr %25, i64 %indvars.iv @@ -3091,6 +3095,8 @@ define internal void @statevec_calcInnerProductLocal.omp_outlined(ptr noalias no br i1 %.not31, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %19 + %.promoted30 = load double, ptr %11, align 8 + %.promoted = load double, ptr %10, align 8 %24 = load ptr, ptr %3, align 8 %25 = load ptr, ptr %4, align 8 %26 = load ptr, ptr %5, align 8 @@ -3099,8 +3105,8 @@ define internal void @statevec_calcInnerProductLocal.omp_outlined(ptr noalias no 28: ; preds = %.lr.ph, %28 %.032 = phi i64 [ %23, %.lr.ph ], [ %46, %28 ] - %29 = phi double [ 0.000000e+00, %.lr.ph ], [ %41, %28 ] - %30 = phi double [ 0.000000e+00, %.lr.ph ], [ %45, %28 ] + %29 = phi double [ %.promoted, %.lr.ph ], [ %41, %28 ] + %30 = phi double [ %.promoted30, %.lr.ph ], [ %45, %28 ] %31 = getelementptr inbounds double, ptr %24, i64 %.032 %32 = load double, ptr %31, align 8 %33 = getelementptr inbounds double, ptr %25, i64 %.032 @@ -4764,7 +4770,7 @@ define void @statevec_multiControlledTwoQubitUnitaryLocal(ptr nocapture noundef } ; Function Attrs: norecurse nounwind uwtable -define internal void @statevec_multiControlledTwoQubitUnitaryLocal.omp_outlined(ptr noalias nocapture noundef readonly %0, ptr noalias nocapture readnone %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %3, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %4, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %5, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %7, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %8, ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %9) #2 { +define internal void @statevec_multiControlledTwoQubitUnitaryLocal.omp_outlined(ptr noalias nocapture noundef readonly %0, ptr noalias nocapture readnone %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %3, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %7, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %8, ptr nocapture noundef nonnull readonly align 8 dereferenceable(256) %9) #2 { %11 = alloca i64, align 8 %12 = alloca i64, align 8 %13 = alloca i64, align 8 @@ -5122,7 +5128,7 @@ define void @statevec_multiControlledMultiQubitUnitaryLocal(ptr nocapture nounde declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #15 ; Function Attrs: norecurse nounwind uwtable -define internal void @statevec_multiControlledMultiQubitUnitaryLocal.omp_outlined(ptr noalias nocapture noundef readonly %0, ptr noalias nocapture readnone %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %3, i64 %4, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %5, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %7, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %8, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %9, i64 noundef %10, i64 noundef %11, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %12, i64 noundef %13, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %14, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %15) #2 { +define internal void @statevec_multiControlledMultiQubitUnitaryLocal.omp_outlined(ptr noalias nocapture noundef readonly %0, ptr noalias nocapture readnone %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %3, i64 %4, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %7, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %8, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %9, i64 noundef %10, i64 noundef %11, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %12, i64 noundef %13, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %14, ptr nocapture noundef nonnull readonly align 8 dereferenceable(24) %15) #2 { %17 = alloca i64, align 8 %18 = alloca i64, align 8 %19 = alloca i64, align 8 @@ -7032,7 +7038,7 @@ define void @statevec_multiControlledMultiQubitNotLocal(ptr nocapture noundef re } ; Function Attrs: norecurse nounwind uwtable -define internal void @statevec_multiControlledMultiQubitNotLocal.omp_outlined(ptr noalias nocapture noundef readonly %0, ptr noalias nocapture readnone %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %3, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %4, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %5, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %7) #2 { +define internal void @statevec_multiControlledMultiQubitNotLocal.omp_outlined(ptr noalias nocapture noundef readonly %0, ptr noalias nocapture readnone %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %4, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %5, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %6, ptr nocapture noundef nonnull readonly align 8 dereferenceable(8) %7) #2 { %9 = alloca i64, align 8 %10 = alloca i64, align 8 %11 = alloca i64, align 8 @@ -8590,6 +8596,7 @@ define internal void @densmatr_findProbabilityOfZeroLocal.omp_outlined(ptr noali br i1 %.not22, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %18 + %.promoted = load double, ptr %10, align 8 %23 = load i64, ptr %3, align 8 %24 = load i32, ptr %6, align 4 %25 = zext i32 %24 to i64 @@ -8602,7 +8609,7 @@ define internal void @densmatr_findProbabilityOfZeroLocal.omp_outlined(ptr noali 31: ; preds = %.lr.ph, %43 %.023 = phi i64 [ %22, %.lr.ph ], [ %45, %43 ] - %32 = phi double [ 0.000000e+00, %.lr.ph ], [ %44, %43 ] + %32 = phi double [ %.promoted, %.lr.ph ], [ %44, %43 ] %33 = add nsw i64 %23, %.023 %34 = and i64 %26, %33 %35 = ashr i64 %34, %25 @@ -8723,6 +8730,7 @@ define internal void @statevec_findProbabilityOfZeroLocal.omp_outlined(ptr noali br i1 %.not24, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %17 + %.promoted = load double, ptr %9, align 8 %22 = load i64, ptr %3, align 8 %23 = load i64, ptr %4, align 8 %24 = load ptr, ptr %6, align 8 @@ -8731,7 +8739,7 @@ define internal void @statevec_findProbabilityOfZeroLocal.omp_outlined(ptr noali 26: ; preds = %.lr.ph, %26 %.025 = phi i64 [ %21, %.lr.ph ], [ %39, %26 ] - %27 = phi double [ 0.000000e+00, %.lr.ph ], [ %38, %26 ] + %27 = phi double [ %.promoted, %.lr.ph ], [ %38, %26 ] %28 = sdiv i64 %.025, %22 %29 = mul nsw i64 %23, %28 %30 = srem i64 %.025, %22 @@ -8839,13 +8847,14 @@ define internal void @statevec_findProbabilityOfZeroDistributed.omp_outlined(ptr br i1 %.not19, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %15 + %.promoted = load double, ptr %7, align 8 %20 = load ptr, ptr %4, align 8 %21 = load ptr, ptr %5, align 8 br label %22 22: ; preds = %.lr.ph, %22 %.020 = phi i64 [ %19, %.lr.ph ], [ %31, %22 ] - %23 = phi double [ 0.000000e+00, %.lr.ph ], [ %30, %22 ] + %23 = phi double [ %.promoted, %.lr.ph ], [ %30, %22 ] %24 = getelementptr inbounds double, ptr %20, i64 %.020 %25 = load double, ptr %24, align 8 %26 = getelementptr inbounds double, ptr %21, i64 %.020 @@ -10370,6 +10379,8 @@ define internal void @statevec_calcExpecDiagonalOpLocal.omp_outlined(ptr noalias br i1 %.not31, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %19 + %.promoted30 = load double, ptr %11, align 8 + %.promoted = load double, ptr %10, align 8 %24 = load ptr, ptr %3, align 8 %25 = load ptr, ptr %4, align 8 %26 = load ptr, ptr %5, align 8 @@ -10378,8 +10389,8 @@ define internal void @statevec_calcExpecDiagonalOpLocal.omp_outlined(ptr noalias 28: ; preds = %.lr.ph, %28 %.032 = phi i64 [ %23, %.lr.ph ], [ %43, %28 ] - %29 = phi double [ 0.000000e+00, %.lr.ph ], [ %41, %28 ] - %30 = phi double [ 0.000000e+00, %.lr.ph ], [ %42, %28 ] + %29 = phi double [ %.promoted, %.lr.ph ], [ %41, %28 ] + %30 = phi double [ %.promoted30, %.lr.ph ], [ %42, %28 ] %31 = getelementptr inbounds double, ptr %24, i64 %.032 %32 = load double, ptr %31, align 8 %33 = getelementptr inbounds double, ptr %25, i64 %.032 @@ -10558,6 +10569,8 @@ define internal void @densmatr_calcExpecDiagonalOpLocal.omp_outlined(ptr noalias br i1 %33, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %23 + %.promoted41 = load double, ptr %13, align 8 + %.promoted = load double, ptr %12, align 8 %34 = load ptr, ptr %5, align 8 %35 = load ptr, ptr %6, align 8 %36 = load i64, ptr %2, align 8 @@ -10568,8 +10581,8 @@ define internal void @densmatr_calcExpecDiagonalOpLocal.omp_outlined(ptr noalias 40: ; preds = %.lr.ph, %40 %.042 = phi i64 [ %31, %.lr.ph ], [ %62, %40 ] - %41 = phi double [ 0.000000e+00, %.lr.ph ], [ %58, %40 ] - %42 = phi double [ 0.000000e+00, %.lr.ph ], [ %61, %40 ] + %41 = phi double [ %.promoted, %.lr.ph ], [ %58, %40 ] + %42 = phi double [ %.promoted41, %.lr.ph ], [ %61, %40 ] %43 = mul i64 %.042, %21 %44 = add i64 %43, %19 %45 = getelementptr inbounds double, ptr %34, i64 %44 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/Sample_TempObstacles.cpp.ll b/bench/recastnavigation/optimized/Sample_TempObstacles.cpp.ll index b5d42c26920..9013c3f6aba 100644 --- a/bench/recastnavigation/optimized/Sample_TempObstacles.cpp.ll +++ b/bench/recastnavigation/optimized/Sample_TempObstacles.cpp.ll @@ -1413,16 +1413,18 @@ define dso_local void @_Z17drawDetailOverlayPK11dtTileCacheiiPdS2_Pi(ptr noundef %10 = alloca double, align 8 %11 = alloca double, align 8 %12 = call noundef i32 @_ZNK11dtTileCache10getTilesAtEiiPji(ptr noundef nonnull align 8 dereferenceable(912) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull %7, i32 noundef 32) + %.not = icmp ne i32 %12, 0 %13 = icmp sgt i32 %12, 0 - br i1 %13, label %.lr.ph, label %.loopexit + %or.cond = and i1 %.not, %13 + br i1 %or.cond, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %6 %14 = getelementptr inbounds nuw i8, ptr %0, i64 60 %15 = load i32, ptr %14, align 4 - %16 = shl i32 %15, 2 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %18 = load i32, ptr %17, align 4 - %19 = mul i32 %16, %18 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %17 = shl i32 %15, 2 + %18 = load i32, ptr %16, align 4 + %19 = mul i32 %17, %18 %20 = add nsw i32 %19, 56 %21 = sitofp i32 %20 to float %22 = fmul float %21, 0x3F50000000000000 diff --git a/bench/regex-rs/optimized/12jtvy3iayrg5nam.ll b/bench/regex-rs/optimized/12jtvy3iayrg5nam.ll index c8d50d2ca35..afbb1555624 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 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/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/snappy/optimized/snappy.cc.ll b/bench/snappy/optimized/snappy.cc.ll index 1fe126974ad..195d53879e4 100644 --- a/bench/snappy/optimized/snappy.cc.ll +++ b/bench/snappy/optimized/snappy.cc.ll @@ -2047,9 +2047,9 @@ if.end.i: ; preds = %if.end11.i.i for.body.i.preheader.i.i.i: ; preds = %if.end.i %op_base_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer, i64 72 + %op_ptr_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer, i64 80 %10 = load ptr, ptr %op_base_.i.i.i.i.i, align 8 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %10 to i64 - %op_ptr_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer, i64 80 %11 = load ptr, ptr %op_ptr_.i.i.i.i.i, align 8 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %11 to i64 %12 = load i64, ptr %full_size_.i, align 8 @@ -2239,16 +2239,16 @@ _ZN6snappy21SnappyScatteredWriterINS_19SnappySinkAllocatorEEC2ERKS1_.exit: ; pre call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %blocks_.i.i, i8 0, i64 48, i1 false) store i64 %conv, ptr %expected_.i.i, align 8 call void @_ZN6snappy18SnappyDecompressor17DecompressAllTagsINS_21SnappyScatteredWriterINS_19SnappySinkAllocatorEEEEEvPT_(ptr noundef nonnull align 8 dereferenceable(42) %decompressor, ptr noundef nonnull %writer12) + %op_ptr_.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer12, i64 80 + %op_base_.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer12, i64 72 %16 = load ptr, ptr %blocks_.i.i, align 8 %17 = load ptr, ptr %_M_finish.i.i.i.i.i, align 8 %cmp.i.not9.i.i.i = icmp eq ptr %16, %17 br i1 %cmp.i.not9.i.i.i, label %_ZN6snappy21SnappyScatteredWriterINS_19SnappySinkAllocatorEE5FlushEv.exit.i, label %for.body.i.preheader.i.i for.body.i.preheader.i.i: ; preds = %_ZN6snappy21SnappyScatteredWriterINS_19SnappySinkAllocatorEEC2ERKS1_.exit - %op_base_.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer12, i64 72 %18 = load ptr, ptr %op_base_.i.i.i.i, align 8 %sub.ptr.rhs.cast.i.i.i.i10 = ptrtoint ptr %18 to i64 - %op_ptr_.i.i.i.i = getelementptr inbounds nuw i8, ptr %writer12, i64 80 %19 = load ptr, ptr %op_ptr_.i.i.i.i, align 8 %sub.ptr.lhs.cast.i.i.i.i11 = ptrtoint ptr %19 to i64 %20 = load i64, ptr %full_size_.i, align 8 @@ -2292,10 +2292,8 @@ _ZN6snappy21SnappyScatteredWriterINS_19SnappySinkAllocatorEE5FlushEv.exit.i: ; p land.rhs.i14: ; preds = %_ZN6snappy21SnappyScatteredWriterINS_19SnappySinkAllocatorEE5FlushEv.exit.i %29 = load i64, ptr %full_size_.i, align 8 - %op_ptr_.i.i.i = getelementptr inbounds nuw i8, ptr %writer12, i64 80 - %30 = load ptr, ptr %op_ptr_.i.i.i, align 8 - %op_base_.i.i.i = getelementptr inbounds nuw i8, ptr %writer12, i64 72 - %31 = load ptr, ptr %op_base_.i.i.i, align 8 + %30 = load ptr, ptr %op_ptr_.i.i.i.i, align 8 + %31 = load ptr, ptr %op_base_.i.i.i.i, align 8 %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %30 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %31 to i64 %sub.ptr.sub.i.i.i = add i64 %29, %sub.ptr.lhs.cast.i.i.i @@ -4293,8 +4291,8 @@ if.end6: ; preds = %if.end, %entry %ip.0 = phi ptr [ %3, %if.end ], [ %0, %entry ] %5 = load i8, ptr %ip.0, align 1 %conv = zext i8 %5 to i32 - %op_base_.i = getelementptr inbounds nuw i8, ptr %writer, i64 72 %op_limit_min_slop_.i = getelementptr inbounds nuw i8, ptr %writer, i64 96 + %op_base_.i = getelementptr inbounds nuw i8, ptr %writer, i64 72 %op_limit_.i = getelementptr inbounds nuw i8, ptr %writer, i64 88 %peeked_ = getelementptr inbounds nuw i8, ptr %this, i64 32 br label %for.cond diff --git a/bench/spike/optimized/fli_d.ll b/bench/spike/optimized/fli_d.ll index badb3eac10d..bcc965cef3b 100644 --- a/bench/spike/optimized/fli_d.ll +++ b/bench/spike/optimized/fli_d.ll @@ -253,44 +253,41 @@ define noundef i64 @_Z16fast_rv64i_fli_dP11processor_t6insn_tm(ptr nocapture nou %.sink.i24 = load i64, ptr %23, align 8 %24 = and i64 %.sink.i24, 2 %.0.i25.not = icmp eq i64 %24, 0 - br i1 %.0.i25.not, label %35, label %25 - -25: ; preds = %20 - %26 = lshr i64 %1, 7 - %27 = and i64 %26, 31 - %.not.i = icmp eq i64 %27, 0 - br i1 %.not.i, label %_ZN9regfile_tImLm32ELb1EE5writeEmm.exit, label %28 - -28: ; preds = %25 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 120 - %30 = lshr i64 %1, 15 - %31 = and i64 %30, 31 - %32 = getelementptr inbounds nuw [32 x i64], ptr @__const._Z18logged_rv64e_fli_dP11processor_t6insn_tm.bits, i64 0, i64 %31 - %33 = load i64, ptr %32, align 8 - %34 = getelementptr inbounds nuw [32 x i64], ptr %29, i64 0, i64 %27 + %25 = lshr i64 %1, 15 + %26 = and i64 %25, 31 + %27 = getelementptr inbounds nuw [32 x i64], ptr @__const._Z18logged_rv64e_fli_dP11processor_t6insn_tm.bits, i64 0, i64 %26 + br i1 %.0.i25.not, label %35, label %28 + +28: ; preds = %20 + %29 = lshr i64 %1, 7 + %30 = and i64 %29, 31 + %.not.i = icmp eq i64 %30, 0 + br i1 %.not.i, label %_ZN9regfile_tImLm32ELb1EE5writeEmm.exit, label %31 + +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 120 + %33 = load i64, ptr %27, align 8 + %34 = getelementptr inbounds nuw [32 x i64], ptr %32, i64 0, i64 %30 store i64 %33, ptr %34, align 8 br label %_ZN9regfile_tImLm32ELb1EE5writeEmm.exit 35: ; preds = %20 - %36 = lshr i64 %1, 15 - %37 = and i64 %36, 31 - %38 = getelementptr inbounds nuw [32 x i64], ptr @__const._Z18logged_rv64e_fli_dP11processor_t6insn_tm.bits, i64 0, i64 %37 - %39 = load i64, ptr %38, align 8 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 376 - %41 = lshr i64 %1, 7 - %42 = and i64 %41, 31 - %43 = getelementptr inbounds nuw [32 x %struct.float128_t], ptr %40, i64 0, i64 %42 - store i64 %39, ptr %43, align 8 - %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %43, i64 8 + %36 = load i64, ptr %27, align 8 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 376 + %38 = lshr i64 %1, 7 + %39 = and i64 %38, 31 + %40 = getelementptr inbounds nuw [32 x %struct.float128_t], ptr %37, i64 0, i64 %39 + store i64 %36, ptr %40, align 8 + %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %40, i64 8 store i64 -1, ptr %.sroa.2.0..sroa_idx.i, align 8 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 2024 - %45 = load ptr, ptr %44, align 8 - tail call void @_ZN13sstatus_csr_t5dirtyEm(ptr noundef nonnull align 8 dereferenceable(104) %45, i64 noundef 24576) + %41 = getelementptr inbounds nuw i8, ptr %0, i64 2024 + %42 = load ptr, ptr %41, align 8 + tail call void @_ZN13sstatus_csr_t5dirtyEm(ptr noundef nonnull align 8 dereferenceable(104) %42, i64 noundef 24576) br label %_ZN9regfile_tImLm32ELb1EE5writeEmm.exit -_ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %28, %25, %35 - %46 = add i64 %2, 4 - ret i64 %46 +_ZN9regfile_tImLm32ELb1EE5writeEmm.exit: ; preds = %31, %28, %35 + %43 = add i64 %2, 4 + ret i64 %43 } ; Function Attrs: mustprogress uwtable 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/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/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/velox/optimized/Split.cpp.ll b/bench/velox/optimized/Split.cpp.ll index 3b112b29705..3f19469af7e 100644 --- a/bench/velox/optimized/Split.cpp.ll +++ b/bench/velox/optimized/Split.cpp.ll @@ -12061,8 +12061,10 @@ while.body: ; preds = %_ZN8facebook5velox1 br i1 %cmp.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %if.end.i.i if.end.i.i: ; preds = %while.body + %cmp4.not.i.i.not = icmp eq i64 %sinput.sroa.0.0, 0 %cmp11.not20.i.i = icmp ult i64 %sinput.sroa.0.0, %conv.i12 - br i1 %cmp11.not20.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i + %or.cond = select i1 %cmp4.not.i.i.not, i1 true, i1 %cmp11.not20.i.i + br i1 %or.cond, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %if.end.i.i %add.ptr9.i.i = getelementptr inbounds i8, ptr %sinput.sroa.6.0, i64 %sinput.sroa.0.0 @@ -12543,8 +12545,10 @@ while.body: ; preds = %_ZN8facebook5velox1 br i1 %cmp.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %if.end.i.i if.end.i.i: ; preds = %while.body + %cmp4.not.i.i.not = icmp eq i64 %sinput.sroa.0.0, 0 %cmp11.not20.i.i = icmp ult i64 %sinput.sroa.0.0, %conv.i26 - br i1 %cmp11.not20.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i + %or.cond = select i1 %cmp4.not.i.i.not, i1 true, i1 %cmp11.not20.i.i + br i1 %or.cond, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %if.end.i.i %add.ptr9.i.i = getelementptr inbounds i8, ptr %sinput.sroa.6.0, i64 %sinput.sroa.0.0 @@ -13185,8 +13189,10 @@ while.body: ; preds = %_ZN8facebook5velox1 br i1 %cmp.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %if.end.i.i if.end.i.i: ; preds = %while.body + %cmp4.not.i.i.not = icmp eq i64 %sinput.sroa.0.0, 0 %cmp11.not20.i.i = icmp ult i64 %sinput.sroa.0.0, %conv.i12 - br i1 %cmp11.not20.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i + %or.cond = select i1 %cmp4.not.i.i.not, i1 true, i1 %cmp11.not20.i.i + br i1 %or.cond, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %if.end.i.i %add.ptr9.i.i = getelementptr inbounds i8, ptr %sinput.sroa.6.0, i64 %sinput.sroa.0.0 @@ -13658,8 +13664,10 @@ while.body: ; preds = %_ZN8facebook5velox1 br i1 %cmp.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %if.end.i.i if.end.i.i: ; preds = %while.body + %cmp4.not.i.i.not = icmp eq i64 %sinput.sroa.0.0, 0 %cmp11.not20.i.i = icmp ult i64 %sinput.sroa.0.0, %conv.i26 - br i1 %cmp11.not20.i.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i + %or.cond = select i1 %cmp4.not.i.i.not, i1 true, i1 %cmp11.not20.i.i + br i1 %or.cond, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, label %while.body.lr.ph.i.i while.body.lr.ph.i.i: ; preds = %if.end.i.i %add.ptr9.i.i = getelementptr inbounds i8, ptr %sinput.sroa.6.0, i64 %sinput.sroa.0.0 diff --git a/bench/velox/optimized/tz.cpp.ll b/bench/velox/optimized/tz.cpp.ll index abddd7a0dcd..40afc07f490 100644 --- a/bench/velox/optimized/tz.cpp.ll +++ b/bench/velox/optimized/tz.cpp.ll @@ -4079,18 +4079,20 @@ while.body.i.i: ; preds = %"_ZN9__gnu_cxx5__op %add.ptr.i.i.i.i.i = getelementptr inbounds nuw %"class.date::time_zone", ptr %__first.sroa.0.07.i.i, i64 %shr.i.i %call2.i.i.i.i = tail call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(88) %add.ptr.i.i.i.i.i) #27 %3 = extractvalue { i64, ptr } %call2.i.i.i.i, 0 - %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %tz_name.coerce0, i64 %3) + %agg.tmp3.sroa.0.0.copyload.i.i.i.i = load i64, ptr %tz_name, align 8 + %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %agg.tmp3.sroa.0.0.copyload.i.i.i.i, i64 %3) %cmp.i2.i.i.i.i.i.i = icmp eq i64 %.sroa.speculated.i.i.i.i.i.i, 0 br i1 %cmp.i2.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i: ; preds = %while.body.i.i + %agg.tmp3.sroa.2.0.copyload.i.i.i.i = load ptr, ptr %0, align 8 %4 = extractvalue { i64, ptr } %call2.i.i.i.i, 1 - %call.i.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %4, ptr noundef %tz_name.coerce1, i64 noundef %.sroa.speculated.i.i.i.i.i.i) #27 + %call.i.i.i.i.i.i.i = tail call i32 @memcmp(ptr noundef %4, ptr noundef %agg.tmp3.sroa.2.0.copyload.i.i.i.i, i64 noundef %.sroa.speculated.i.i.i.i.i.i) #27 %cmp.i.i.i.i.i.i = icmp eq i32 %call.i.i.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZNK4date4tzdb11locate_zoneESt17basic_string_viewIcSt11char_traitsIcEEE3$_0EclINS_17__normal_iteratorIPKNS2_9time_zoneESt6vectorISC_SaISC_EEEEKS7_EEbT_RT0_.exit.i.i" if.then.i.i.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i, %while.body.i.i - %sub.i.i.i.i.i.i.i = sub i64 %3, %tz_name.coerce0 + %sub.i.i.i.i.i.i.i = sub i64 %3, %agg.tmp3.sroa.0.0.copyload.i.i.i.i %spec.select3.i.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %sub.i.i.i.i.i.i.i, i64 -2147483648) %retval.04.i.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select3.i.i.i.i.i.i.i, i64 2147483647) %retval.0.i3.i.i.i.i.i.i = trunc nsw i64 %retval.04.i.i.i.i.i.i.i to i32 @@ -4121,15 +4123,17 @@ lor.rhs: ; preds = %"_ZSt11lower_boundI %call18 = tail call { i64, ptr } @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv(ptr noundef nonnull align 8 dereferenceable(32) %__first.sroa.0.0.lcssa.i.i) #27 %7 = extractvalue { i64, ptr } %call18, 0 %8 = extractvalue { i64, ptr } %call18, 1 - %cmp.i.i4 = icmp eq i64 %7, %tz_name.coerce0 + %agg.tmp19.sroa.0.0.copyload = load i64, ptr %tz_name, align 8 + %agg.tmp19.sroa.2.0.copyload = load ptr, ptr %0, align 8 + %cmp.i.i4 = icmp eq i64 %7, %agg.tmp19.sroa.0.0.copyload br i1 %cmp.i.i4, label %land.rhs.i.i, label %if.then land.rhs.i.i: ; preds = %lor.rhs - %cmp.i2.i.i.i = icmp eq i64 %tz_name.coerce0, 0 + %cmp.i2.i.i.i = icmp eq i64 %7, 0 br i1 %cmp.i2.i.i.i, label %if.end, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i: ; preds = %land.rhs.i.i - %bcmp.i.i = tail call i32 @bcmp(ptr %8, ptr %tz_name.coerce1, i64 %tz_name.coerce0) + %bcmp.i.i = tail call i32 @bcmp(ptr %8, ptr %agg.tmp19.sroa.2.0.copyload, i64 %7) %cmp.i.i.i = icmp eq i32 %bcmp.i.i, 0 br i1 %cmp.i.i.i, label %if.end, label %if.then @@ -9421,17 +9425,17 @@ declare i64 @llvm.umax.i64(i64, i64) #22 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #23 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #24 + ; 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(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #24 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #25 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #24 - -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #25 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #25 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.abs.i64(i64, i1 immarg) #22 @@ -9466,8 +9470,8 @@ attributes #20 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "n attributes #21 = { nofree nounwind willreturn memory(argmem: read) } attributes #22 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #23 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #24 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #25 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #24 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #25 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #26 = { builtin nounwind } attributes #27 = { nounwind } attributes #28 = { builtin allocsize(0) } diff --git a/bench/verilator/optimized/V3ParseImp.cpp.ll b/bench/verilator/optimized/V3ParseImp.cpp.ll index 3cbcde342da..bd4d541bc8d 100644 --- a/bench/verilator/optimized/V3ParseImp.cpp.ll +++ b/bench/verilator/optimized/V3ParseImp.cpp.ll @@ -2717,7 +2717,7 @@ _ZNSt5dequeI8FileLineSaIS0_EE9push_backERKS0_.exit: ; preds = %8, %11 } ; Function Attrs: mustprogress uwtable -define dso_local void @_ZN10V3ParseImp26lexVerilatorCmtLintRestoreEP8FileLine(ptr nocapture noundef nonnull align 8 dereferenceable(496) %0, ptr noundef %1) #7 align 2 personality ptr @__gxx_personality_v0 { +define dso_local void @_ZN10V3ParseImp26lexVerilatorCmtLintRestoreEP8FileLine(ptr noundef nonnull align 8 dereferenceable(496) %0, ptr noundef %1) #7 align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::__cxx11::basic_string", align 8 %4 = alloca %"class.std::allocator.24", align 1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 360 @@ -2756,7 +2756,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr 17: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #23 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #23 - br label %47 + br label %46 18: ; preds = %.noexc, %10 %19 = landingpad { ptr, i32 } @@ -2777,19 +2777,19 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr 22: ; preds = %2 %23 = getelementptr inbounds nuw i8, ptr %0, i64 368 %24 = load ptr, ptr %23, align 8, !noalias !48 - %25 = icmp eq ptr %7, %24 - br i1 %25, label %26, label %_ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit + %25 = getelementptr inbounds nuw i8, ptr %0, i64 384 + %26 = icmp eq ptr %7, %24 + br i1 %26, label %27, label %_ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit -26: ; preds = %22 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 384 - %28 = load ptr, ptr %27, align 8, !noalias !48 +27: ; preds = %22 + %28 = load ptr, ptr %25, align 8, !noalias !48 %29 = getelementptr inbounds i8, ptr %28, i64 -8 %30 = load ptr, ptr %29, align 8 %31 = getelementptr inbounds nuw i8, ptr %30, i64 480 br label %_ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit -_ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit: ; preds = %22, %26 - %32 = phi ptr [ %31, %26 ], [ %7, %22 ] +_ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit: ; preds = %22, %27 + %32 = phi ptr [ %31, %27 ], [ %7, %22 ] %33 = getelementptr inbounds i8, ptr %32, i64 -40 %34 = load i16, ptr %33, align 8 store i16 %34, ptr %1, align 8 @@ -2804,25 +2804,24 @@ _ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit: ; preds = %22, %26 39: ; preds = %_ZNSt5dequeI8FileLineSaIS0_EE4backEv.exit tail call void @_ZdlPv(ptr noundef %36) #24 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 384 - %41 = load ptr, ptr %40, align 8 - %42 = getelementptr inbounds i8, ptr %41, i64 -8 - store ptr %42, ptr %40, align 8 - %43 = load ptr, ptr %42, align 8 - store ptr %43, ptr %23, align 8 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 480 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 376 - store ptr %44, ptr %45, align 8 - %46 = getelementptr inbounds nuw i8, ptr %43, i64 440 + %40 = load ptr, ptr %25, align 8 + %41 = getelementptr inbounds i8, ptr %40, i64 -8 + store ptr %41, ptr %25, align 8 + %42 = load ptr, ptr %41, align 8 + store ptr %42, ptr %23, align 8 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 480 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 376 + store ptr %43, ptr %44, align 8 + %45 = getelementptr inbounds nuw i8, ptr %42, i64 440 br label %_ZNSt5dequeI8FileLineSaIS0_EE8pop_backEv.exit _ZNSt5dequeI8FileLineSaIS0_EE8pop_backEv.exit: ; preds = %37, %39 - %.sink1.i = phi ptr [ %46, %39 ], [ %38, %37 ] + %.sink1.i = phi ptr [ %45, %39 ], [ %38, %37 ] store ptr %.sink1.i, ptr %5, align 8 tail call void @_ZN8FileLineD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %.sink1.i) #23 - br label %47 + br label %46 -47: ; preds = %_ZNSt5dequeI8FileLineSaIS0_EE8pop_backEv.exit, %17 +46: ; preds = %_ZNSt5dequeI8FileLineSaIS0_EE8pop_backEv.exit, %17 ret void } diff --git a/bench/wasmtime-rs/optimized/44oyxmdjsi7rdwcj.ll b/bench/wasmtime-rs/optimized/44oyxmdjsi7rdwcj.ll index 1af38fc92c8..d6162ae1f58 100644 --- a/bench/wasmtime-rs/optimized/44oyxmdjsi7rdwcj.ll +++ b/bench/wasmtime-rs/optimized/44oyxmdjsi7rdwcj.ll @@ -49,7 +49,7 @@ target triple = "x86_64-unknown-linux-gnu" @anon.304bba644805482b0b0ee601cf72fdb7.65.llvm.1794947692966531476 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 ; Function Attrs: nonlazybind uwtable -define hidden noundef ptr @_ZN3std2io16default_read_buf17h30e530dbdc7be931E(ptr noalias noundef align 8 dereferenceable(72) %0, ptr noalias nocapture noundef align 8 dereferenceable(32) %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { +define hidden noundef ptr @_ZN3std2io16default_read_buf17h30e530dbdc7be931E(ptr noalias noundef align 8 dereferenceable(72) %0, ptr noalias noundef align 8 dereferenceable(32) %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca { i64, [1 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) %5 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -68,37 +68,41 @@ _ZN4core2io12borrowed_buf14BorrowedCursor10uninit_mut17hbba1705b8c0e2f83E.exit: %12 = sub nuw i64 %6, %8 %13 = getelementptr inbounds i8, ptr %11, i64 %8 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %13, i8 0, i64 %12, i1 false) - store i64 %6, ptr %7, align 8 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %15 = load i64, ptr %14, align 8, !noundef !4 - %16 = icmp ugt i64 %15, %6 - br i1 %16, label %17, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit" - -17: ; preds = %_ZN4core2io12borrowed_buf14BorrowedCursor10uninit_mut17hbba1705b8c0e2f83E.exit - tail call void @_ZN4core5slice5index22slice_index_order_fail17h2e9882225a126cdcE(i64 noundef %15, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9103e26e1b04f09e76cd4c8ee2d36832.1) #28, !noalias !6 + %14 = load i64, ptr %5, align 8, !noundef !4 + store i64 %14, ptr %7, align 8 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %16 = load i64, ptr %15, align 8, !noundef !4 + %17 = icmp ugt i64 %16, %14 + br i1 %17, label %18, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit" + +18: ; preds = %_ZN4core2io12borrowed_buf14BorrowedCursor10uninit_mut17hbba1705b8c0e2f83E.exit + tail call void @_ZN4core5slice5index22slice_index_order_fail17h2e9882225a126cdcE(i64 noundef %16, i64 noundef %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9103e26e1b04f09e76cd4c8ee2d36832.1) #28, !noalias !6 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit": ; preds = %_ZN4core2io12borrowed_buf14BorrowedCursor10uninit_mut17hbba1705b8c0e2f83E.exit - %18 = sub nuw i64 %6, %15 - %19 = getelementptr inbounds i8, ptr %11, i64 %15 - call void @"_ZN80_$LT$zstd..stream..zio..reader..Reader$LT$R$C$D$GT$$u20$as$u20$std..io..Read$GT$4read17ha0651c5d0bef5cb6E"(ptr noalias nocapture noundef nonnull sret({ i64, [1 x i64] }) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull align 8 dereferenceable(72) %0, ptr noalias noundef nonnull align 1 %19, i64 noundef %18) - %20 = load i64, ptr %4, align 8, !range !9, !noundef !4 - %trunc = trunc nuw i64 %20 to i1 - %21 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %22 = load ptr, ptr %21, align 8 + %19 = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 + %20 = sub nuw i64 %14, %16 + %21 = getelementptr inbounds i8, ptr %19, i64 %16 + call void @"_ZN80_$LT$zstd..stream..zio..reader..Reader$LT$R$C$D$GT$$u20$as$u20$std..io..Read$GT$4read17ha0651c5d0bef5cb6E"(ptr noalias nocapture noundef nonnull sret({ i64, [1 x i64] }) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull align 8 dereferenceable(72) %0, ptr noalias noundef nonnull align 1 %21, i64 noundef %20) + %22 = load i64, ptr %4, align 8, !range !9, !noundef !4 + %trunc = trunc nuw i64 %22 to i1 + %23 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %24 = load ptr, ptr %23, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - br i1 %trunc, label %25, label %23 - -23: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit" - %.cast = ptrtoint ptr %22 to i64 - %24 = add i64 %15, %.cast - store i64 %24, ptr %14, align 8 - %.0.sroa.speculated.i = tail call noundef i64 @llvm.umax.i64(i64 %6, i64 %24) + br i1 %trunc, label %29, label %25 + +25: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit" + %.cast = ptrtoint ptr %24 to i64 + %26 = load i64, ptr %15, align 8, !noundef !4 + %27 = add i64 %26, %.cast + store i64 %27, ptr %15, align 8 + %28 = load i64, ptr %7, align 8, !noundef !4 + %.0.sroa.speculated.i = tail call noundef i64 @llvm.umax.i64(i64 %28, i64 %27) store i64 %.0.sroa.speculated.i, ptr %7, align 8 - br label %25 + br label %29 -25: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit", %23 - %.0 = phi ptr [ null, %23 ], [ %22, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit" ] +29: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit", %25 + %.0 = phi ptr [ null, %25 ], [ %24, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hd481e48d27d03db3E.exit" ] ret ptr %.0 } diff --git a/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll b/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll index e651c9b5bb8..3c9dd713463 100644 --- a/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll +++ b/bench/wasmtime-rs/optimized/v5prf101dn49s3v.ll @@ -8256,7 +8256,7 @@ define hidden void @"_ZN74_$LT$std..hash..random..RandomState$u20$as$u20$core..h } ; Function Attrs: nonlazybind uwtable -define hidden void @_ZN8wasmtime7runtime9component4func4Func6_typed17h82bc43e76cd18500E(ptr noalias nocapture noundef writeonly sret({ i64, [1 x i64] }) align 8 dereferenceable(16) initializes((0, 16)) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1, ptr nocapture noundef nonnull readonly align 8 %2, ptr noalias noundef readonly align 8 dereferenceable_or_null(48) %3) unnamed_addr #4 { +define hidden void @_ZN8wasmtime7runtime9component4func4Func6_typed17h82bc43e76cd18500E(ptr noalias nocapture noundef writeonly sret({ i64, [1 x i64] }) align 8 dereferenceable(16) initializes((0, 16)) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 %2, ptr noalias noundef readonly align 8 dereferenceable_or_null(48) %3) unnamed_addr #4 { %5 = tail call noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h470f74641ed9da0cE.llvm.6128706887224790261(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 %2, ptr noalias noundef readonly align 8 dereferenceable_or_null(48) %3) %6 = icmp eq ptr %5, null %7 = load i64, ptr %1, align 8, !range !1118 @@ -8272,7 +8272,7 @@ define hidden void @_ZN8wasmtime7runtime9component4func4Func6_typed17h82bc43e76c } ; Function Attrs: nonlazybind uwtable -define hidden noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h470f74641ed9da0cE.llvm.6128706887224790261(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr nocapture noundef nonnull readonly align 8 %1, ptr noalias noundef readonly align 8 dereferenceable_or_null(48) %2) unnamed_addr #4 { +define hidden noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h470f74641ed9da0cE.llvm.6128706887224790261(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 %1, ptr noalias noundef readonly align 8 dereferenceable_or_null(48) %2) unnamed_addr #4 { %4 = alloca { i64, [5 x i64] }, align 8 %5 = alloca { { ptr, i64 }, ptr }, align 8 %6 = alloca { i64, [5 x i64] }, align 8 @@ -8300,7 +8300,7 @@ define hidden noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h br i1 %21, label %"_ZN140_$LT$wasmtime..runtime..store..data..StoreData$u20$as$u20$core..ops..index..Index$LT$wasmtime..runtime..store..data..Stored$LT$T$GT$$GT$$GT$5index17h5b9ef6d1df3305dbE.exit", label %22, !prof !1760 22: ; preds = %18 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %13, i64 noundef %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e0d190dfcd430a6cce254ddb52ad54a9.105) #34, !noalias !1757 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %13, i64 noundef %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e0d190dfcd430a6cce254ddb52ad54a9.105) #34 unreachable "_ZN140_$LT$wasmtime..runtime..store..data..StoreData$u20$as$u20$core..ops..index..Index$LT$wasmtime..runtime..store..data..Stored$LT$T$GT$$GT$$GT$5index17h5b9ef6d1df3305dbE.exit": ; preds = %18 @@ -8332,7 +8332,7 @@ define hidden noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h br i1 %36, label %"_ZN140_$LT$wasmtime..runtime..store..data..StoreData$u20$as$u20$core..ops..index..Index$LT$wasmtime..runtime..store..data..Stored$LT$T$GT$$GT$$GT$5index17hc1f240b1da8fa603E.exit.i", label %37, !prof !1760 37: ; preds = %33 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.val20, i64 noundef %35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e0d190dfcd430a6cce254ddb52ad54a9.109) #34, !noalias !1761 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.val20, i64 noundef %35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e0d190dfcd430a6cce254ddb52ad54a9.109) #34 unreachable "_ZN140_$LT$wasmtime..runtime..store..data..StoreData$u20$as$u20$core..ops..index..Index$LT$wasmtime..runtime..store..data..Stored$LT$T$GT$$GT$$GT$5index17hc1f240b1da8fa603E.exit.i": ; preds = %33 @@ -8360,7 +8360,6 @@ define hidden noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h %50 = load ptr, ptr %47, align 8, !nonnull !5, !noundef !5 %51 = getelementptr inbounds nuw i8, ptr %25, i64 96 %52 = load i32, ptr %51, align 8, !noundef !5 - tail call void @llvm.experimental.noalias.scope.decl(metadata !1764) %53 = zext i32 %52 to i64 %54 = getelementptr inbounds nuw i8, ptr %50, i64 104 %55 = load i64, ptr %54, align 8, !alias.scope !1764, !noalias !1767, !noundef !5 @@ -8368,7 +8367,7 @@ define hidden noundef ptr @_ZN8wasmtime7runtime9component4func4Func9typecheck17h br i1 %56, label %"_ZN103_$LT$cranelift_entity..primary..PrimaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..Index$LT$K$GT$$GT$5index17h23076be9b163ff34E.exit", label %57, !prof !1760 57: ; preds = %"_ZN8wasmtime7runtime9component4func4Func9typecheck28_$u7b$$u7b$closure$u7d$$u7d$17h81de204415ba02d6E.exit" - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %53, i64 noundef %55, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e0d190dfcd430a6cce254ddb52ad54a9.106) #34, !noalias !1764 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %53, i64 noundef %55, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e0d190dfcd430a6cce254ddb52ad54a9.106) #34 unreachable "_ZN103_$LT$cranelift_entity..primary..PrimaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..Index$LT$K$GT$$GT$5index17h23076be9b163ff34E.exit": ; preds = %"_ZN8wasmtime7runtime9component4func4Func9typecheck28_$u7b$$u7b$closure$u7d$$u7d$17h81de204415ba02d6E.exit" @@ -8940,7 +8939,7 @@ _ZN4core4time8Duration3new17h2b271a0fd6558ad7E.llvm.6128706887224790261.exit: ; } ; Function Attrs: nonlazybind uwtable -define void @_ZN13wasmtime_wasi4host10filesystem19descriptorstat_from17he80f1ea36a847eb1E(ptr noalias nocapture noundef writeonly sret({ { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, i64, i64, i8, [7 x i8] }) align 8 dereferenceable(96) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(192) %1) unnamed_addr #4 personality ptr @rust_eh_personality { +define void @_ZN13wasmtime_wasi4host10filesystem19descriptorstat_from17he80f1ea36a847eb1E(ptr noalias nocapture noundef writeonly sret({ { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, i64, i64, i8, [7 x i8] }) align 8 dereferenceable(96) %0, ptr noalias nocapture noundef align 8 dereferenceable(192) %1) unnamed_addr #4 personality ptr @rust_eh_personality { %3 = alloca { i8, [15 x i8] }, align 8 %4 = alloca { i64, [2 x i64] }, align 8 %5 = alloca { { { { i64, i32, [1 x i32] } } } }, align 8 @@ -10136,6 +10135,7 @@ define void @"_ZN13wasmtime_wasi4host7network141_$LT$impl$u20$std..net..socket_a %.sroa.45.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 2 %.sroa.45.0.copyload = load i48, ptr %.sroa.45.0..sroa_idx, align 2 %trunc.i = trunc nuw i16 %.sroa.04.0.copyload to i1 + %.sroa.45.2.extract.shift = lshr i48 %.sroa.45.0.copyload, 16 br i1 %trunc.i, label %6, label %4 4: ; preds = %2 @@ -10143,8 +10143,7 @@ define void @"_ZN13wasmtime_wasi4host7network141_$LT$impl$u20$std..net..socket_a %.sroa.01.0.extract.trunc.i.i.i = trunc i48 %.sroa.45.0.copyload to i8 %.sroa.42.0.extract.shift.i5.i.i = lshr i48 %.sroa.45.0.copyload, 8 %.sroa.42.0.extract.trunc.i.i.i = trunc i48 %.sroa.42.0.extract.shift.i5.i.i to i8 - %.sroa.5.0.extract.shift.i6.i.i = lshr i48 %.sroa.45.0.copyload, 16 - %.sroa.5.0.extract.trunc.i.i.i = trunc i48 %.sroa.5.0.extract.shift.i6.i.i to i8 + %.sroa.5.0.extract.trunc.i.i.i = trunc i48 %.sroa.45.2.extract.shift to i8 %.sroa.6.0.extract.shift.i7.i.i = lshr i48 %.sroa.45.0.copyload, 24 %.sroa.6.0.extract.trunc.i.i.i = trunc i48 %.sroa.6.0.extract.shift.i7.i.i to i8 %.sroa.04.0.vec.insert.i.i.i = insertelement <4 x i8> poison, i8 %.sroa.01.0.extract.trunc.i.i.i, i64 0 @@ -10157,15 +10156,14 @@ define void @"_ZN13wasmtime_wasi4host7network141_$LT$impl$u20$std..net..socket_a br label %"_ZN13wasmtime_wasi4host7network166_$LT$impl$u20$core..convert..From$LT$wasmtime_wasi..bindings..async_io..wasi..sockets..network..IpSocketAddress$GT$$u20$for$u20$core..net..socket_addr..SocketAddr$GT$4from17h3aae719447208b1fE.exit" 6: ; preds = %2 - %.sroa.66.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.89.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 28 - %.sroa.89.0.copyload = load i16, ptr %.sroa.89.0..sroa_idx, align 4 %.sroa.78.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.78.0.copyload = load i32, ptr %.sroa.78.0..sroa_idx, align 4 %.sroa.67.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 20 + %.sroa.66.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 + %.sroa.89.0.copyload = load i16, ptr %.sroa.89.0..sroa_idx, align 4 + %.sroa.78.0.copyload = load i32, ptr %.sroa.78.0..sroa_idx, align 4 %.sroa.67.0.copyload = load i32, ptr %.sroa.67.0..sroa_idx, align 4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !1913 - %.sroa.45.2.extract.shift = lshr i48 %.sroa.45.0.copyload, 16 %.sroa.45.2.extract.trunc = trunc nuw i48 %.sroa.45.2.extract.shift to i32 store i32 %.sroa.45.2.extract.trunc, ptr %3, align 4, !noalias !1920 %.sroa.66.4..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 4 @@ -16120,31 +16118,31 @@ define noundef ptr @_ZN13wasmtime_wasi3tcp9TcpSocket10start_bind17ha6223082bf1b8 br i1 %trunc913.i, label %22, label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread54 _ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread54: ; preds = %19, %.thread.i - %21 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.75.llvm.11181120138937278269, i64 noundef 23), !noalias !3147 + %21 = tail call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.75.llvm.11181120138937278269, i64 noundef 23), !noalias !3145 br label %81 22: ; preds = %.thread.i - %.sroa.03.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %23 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %.sroa.03.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.03.sroa.0.0.copyload.i = load i32, ptr %23, align 4, !alias.scope !3142, !noalias !3145 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !3147 store i32 %.sroa.03.sroa.0.0.copyload.i, ptr %6, align 4, !noalias !3147 %.sroa.7.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7.1..sroa_idx.i, ptr noundef nonnull readonly align 4 dereferenceable(12) %.sroa.03.sroa.4.0..sroa_idx.i, i64 12, i1 false), !noalias !3145 - %24 = call noundef zeroext i1 @_ZN13wasmtime_wasi4host7network4util29is_deprecated_ipv4_compatible17h8a7ae7dcaeafe27eE.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %6), !noalias !3147 + %24 = call noundef zeroext i1 @_ZN13wasmtime_wasi4host7network4util29is_deprecated_ipv4_compatible17h8a7ae7dcaeafe27eE.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %6), !noalias !3145 br i1 %24, label %28, label %25 25: ; preds = %22 - %26 = call i40 @_ZN4core3net7ip_addr8Ipv6Addr14to_ipv4_mapped17hc035d26dd61c98a4E.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %6), !noalias !3147 + %26 = call i40 @_ZN4core3net7ip_addr8Ipv6Addr14to_ipv4_mapped17hc035d26dd61c98a4E.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %6), !noalias !3145 %27 = trunc i40 %26 to i1 br i1 %27, label %30, label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit 28: ; preds = %22 - %29 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.74.llvm.11181120138937278269, i64 noundef 48), !noalias !3147 + %29 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.74.llvm.11181120138937278269, i64 noundef 48), !noalias !3145 br label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread56 30: ; preds = %25 - %31 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.73.llvm.11181120138937278269, i64 noundef 54), !noalias !3147 + %31 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.73.llvm.11181120138937278269, i64 noundef 54), !noalias !3145 br label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread56 _ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread56: ; preds = %28, %30 @@ -16496,31 +16494,31 @@ _ZN13wasmtime_wasi4host7network4util23validate_remote_address17hb99c3d01042515ef br i1 %trunc913.i, label %44, label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread47 _ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread47: ; preds = %41, %.thread.i - %43 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.75.llvm.11181120138937278269, i64 noundef 23), !noalias !3192 + %43 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.75.llvm.11181120138937278269, i64 noundef 23), !noalias !3190 br label %59 44: ; preds = %.thread.i - %.sroa.03.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %45 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %.sroa.03.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.03.sroa.0.0.copyload.i = load i32, ptr %45, align 4, !alias.scope !3187, !noalias !3190 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !3192 store i32 %.sroa.03.sroa.0.0.copyload.i, ptr %3, align 4, !noalias !3192 %.sroa.7.1..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7.1..sroa_idx.i, ptr noundef nonnull readonly align 4 dereferenceable(12) %.sroa.03.sroa.4.0..sroa_idx.i, i64 12, i1 false), !noalias !3190 - %46 = call noundef zeroext i1 @_ZN13wasmtime_wasi4host7network4util29is_deprecated_ipv4_compatible17h8a7ae7dcaeafe27eE.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %3), !noalias !3192 + %46 = call noundef zeroext i1 @_ZN13wasmtime_wasi4host7network4util29is_deprecated_ipv4_compatible17h8a7ae7dcaeafe27eE.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %3), !noalias !3190 br i1 %46, label %50, label %47 47: ; preds = %44 - %48 = call i40 @_ZN4core3net7ip_addr8Ipv6Addr14to_ipv4_mapped17hc035d26dd61c98a4E.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %3), !noalias !3192 + %48 = call i40 @_ZN4core3net7ip_addr8Ipv6Addr14to_ipv4_mapped17hc035d26dd61c98a4E.llvm.11181120138937278269(ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %3), !noalias !3190 %49 = trunc i40 %48 to i1 br i1 %49, label %52, label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit 50: ; preds = %44 - %51 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.74.llvm.11181120138937278269, i64 noundef 48), !noalias !3192 + %51 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.74.llvm.11181120138937278269, i64 noundef 48), !noalias !3190 br label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread50 52: ; preds = %47 - %53 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.73.llvm.11181120138937278269, i64 noundef 54), !noalias !3192 + %53 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17hd944edcd26ddd364E(i8 noundef 20, ptr noalias noundef nonnull readonly align 1 @anon.c420570445454ec1f72c86a983c80bbb.73.llvm.11181120138937278269, i64 noundef 54), !noalias !3190 br label %_ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread50 _ZN13wasmtime_wasi4host7network4util23validate_address_family17h1c352f4e9308f37eE.exit.thread50: ; preds = %50, %52 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/xgboost/optimized/socket.cc.ll b/bench/xgboost/optimized/socket.cc.ll index 20a2dd27997..a90b064ae7d 100644 --- a/bench/xgboost/optimized/socket.cc.ll +++ b/bench/xgboost/optimized/socket.cc.ll @@ -4957,20 +4957,19 @@ _ZNSt10_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_to ._crit_edge: ; preds = %29, %_ZNSt10_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_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_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_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_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_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) #28 br label %_ZNSt10_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv.exit -_ZNSt10_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_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_HashtableIiSt4pairIKi6pollfdESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_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 } @@ -6181,15 +6180,15 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #23 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #23 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #24 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(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) #24 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #22 diff --git a/bench/yalantinglibs/optimized/tutorial.cpp.ll b/bench/yalantinglibs/optimized/tutorial.cpp.ll index 2ff038f38c4..34ceddf6168 100644 --- a/bench/yalantinglibs/optimized/tutorial.cpp.ll +++ b/bench/yalantinglibs/optimized/tutorial.cpp.ll @@ -137,7 +137,7 @@ entry: %_M_string_length.i.i.i.i = getelementptr inbounds nuw i8, ptr %phone_number, i64 8 %1 = getelementptr inbounds nuw i8, ptr %type, i64 16 %_M_string_length.i.i.i = getelementptr inbounds nuw i8, ptr %type, i64 8 - %type34 = getelementptr inbounds nuw i8, ptr %phone_number, i64 32 + %type25 = getelementptr inbounds nuw i8, ptr %phone_number, i64 32 %_M_finish.i = getelementptr inbounds nuw i8, ptr %person, i64 80 %_M_end_of_storage.i = getelementptr inbounds nuw i8, ptr %person, i64 88 %phones = getelementptr inbounds nuw i8, ptr %person, i64 72 @@ -186,8 +186,8 @@ invoke.cont17: ; preds = %if.end invoke.cont20: ; preds = %invoke.cont17 %6 = load i64, ptr %_M_string_length.i.i.i, align 8 - %cond = icmp eq i64 %6, 0 - br i1 %cond, label %if.else35, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i + %cmp.i3.i.i = icmp eq i64 %6, 0 + br i1 %cmp.i3.i.i, label %if.else35, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %invoke.cont20 %.sroa.speculated.i.i = call i64 @llvm.umin.i64(i64 %6, i64 6) @@ -196,7 +196,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %invoke.cont20 %tobool.not.i.i = icmp eq i32 %bcmp.i, 0 %8 = icmp eq i64 %6, 6 %or.cond = and i1 %8, %tobool.not.i.i - br i1 %or.cond, label %if.end42.sink.split, label %if.else + br i1 %or.cond, label %if.end42.sink.split, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i10 lpad19: ; preds = %if.else.i, %if.then.i, %invoke.cont36, %if.else35, %invoke.cont17 %9 = landingpad { ptr, i32 } @@ -204,21 +204,25 @@ lpad19: ; preds = %if.else.i, %if.then call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %type) #19 br label %ehcleanup -if.else: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i +_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i10: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i %.sroa.speculated.i.i8 = call i64 @llvm.umin.i64(i64 %6, i64 4) - %bcmp.i11 = call i32 @bcmp(ptr %7, ptr nonnull @.str.8, i64 %.sroa.speculated.i.i8) + %10 = load ptr, ptr %type, align 8 + %bcmp.i11 = call i32 @bcmp(ptr %10, ptr nonnull @.str.8, i64 %.sroa.speculated.i.i8) %tobool.not.i.i12 = icmp eq i32 %bcmp.i11, 0 - %10 = icmp eq i64 %6, 4 - %or.cond34 = and i1 %10, %tobool.not.i.i12 - br i1 %or.cond34, label %if.end42.sink.split, label %if.else30 - -if.else30: ; preds = %if.else - %bcmp.i21 = call i32 @bcmp(ptr %7, ptr nonnull @.str.9, i64 %.sroa.speculated.i.i8) + %11 = icmp eq i64 %6, 4 + %or.cond34 = and i1 %11, %tobool.not.i.i12 + br i1 %or.cond34, label %if.end42.sink.split, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i20 + +_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i20: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i10 + %.sroa.speculated.i.i18 = call i64 @llvm.umin.i64(i64 %6, i64 4) + %12 = load ptr, ptr %type, align 8 + %bcmp.i21 = call i32 @bcmp(ptr %12, ptr nonnull @.str.9, i64 %.sroa.speculated.i.i18) %tobool.not.i.i22 = icmp eq i32 %bcmp.i21, 0 - %or.cond36 = and i1 %10, %tobool.not.i.i22 + %13 = icmp eq i64 %6, 4 + %or.cond36 = and i1 %13, %tobool.not.i.i22 br i1 %or.cond36, label %if.end42.sink.split, label %if.else35 -if.else35: ; preds = %invoke.cont20, %if.else30 +if.else35: ; preds = %invoke.cont20, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i20 %call37 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.10) to label %invoke.cont36 unwind label %lpad19 @@ -226,47 +230,47 @@ invoke.cont36: ; preds = %if.else35 %call39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %call37, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) to label %if.end42 unwind label %lpad19 -if.end42.sink.split: ; preds = %if.else30, %if.else, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i - %.sink = phi i32 [ 0, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ], [ 1, %if.else ], [ 2, %if.else30 ] - store i32 %.sink, ptr %type34, align 8 +if.end42.sink.split: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i20, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i10, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i + %.sink = phi i32 [ 0, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ], [ 1, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i10 ], [ 2, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i20 ] + store i32 %.sink, ptr %type25, align 8 br label %if.end42 if.end42: ; preds = %if.end42.sink.split, %invoke.cont36 - %11 = load ptr, ptr %_M_finish.i, align 8 - %12 = load ptr, ptr %_M_end_of_storage.i, align 8 - %cmp.not.i = icmp eq ptr %11, %12 + %14 = load ptr, ptr %_M_finish.i, align 8 + %15 = load ptr, ptr %_M_end_of_storage.i, align 8 + %cmp.not.i = icmp eq ptr %14, %15 br i1 %cmp.not.i, label %if.else.i, label %if.then.i if.then.i: ; preds = %if.end42 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(36) %11, ptr noundef nonnull align 8 dereferenceable(36) %phone_number) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(36) %14, ptr noundef nonnull align 8 dereferenceable(36) %phone_number) to label %.noexc unwind label %lpad19 .noexc: ; preds = %if.then.i - %type.i.i.i.i = getelementptr inbounds nuw i8, ptr %11, i64 32 - %13 = load i32, ptr %type34, align 8 - store i32 %13, ptr %type.i.i.i.i, align 8 - %14 = load ptr, ptr %_M_finish.i, align 8 - %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %14, i64 40 + %type.i.i.i.i = getelementptr inbounds nuw i8, ptr %14, i64 32 + %16 = load i32, ptr %type25, align 8 + store i32 %16, ptr %type.i.i.i.i, align 8 + %17 = load ptr, ptr %_M_finish.i, align 8 + %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %17, i64 40 store ptr %incdec.ptr.i, ptr %_M_finish.i, align 8 br label %invoke.cont43 if.else.i: ; preds = %if.end42 - invoke void @_ZNSt6vectorIN8tutorial6Person11PhoneNumberESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %phones, ptr %11, ptr noundef nonnull align 8 dereferenceable(36) %phone_number) + invoke void @_ZNSt6vectorIN8tutorial6Person11PhoneNumberESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %phones, ptr %14, ptr noundef nonnull align 8 dereferenceable(36) %phone_number) to label %invoke.cont43 unwind label %lpad19 invoke.cont43: ; preds = %.noexc, %if.else.i - %15 = load ptr, ptr %type, align 8 - %cmp.i.i.i = icmp eq ptr %15, %1 + %18 = load ptr, ptr %type, align 8 + %cmp.i.i.i = icmp eq ptr %18, %1 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i27 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %invoke.cont43 - %16 = load i64, ptr %_M_string_length.i.i.i, align 8 - %cmp3.i.i.i = icmp ult i64 %16, 16 + %19 = load i64, ptr %_M_string_length.i.i.i, align 8 + %cmp3.i.i.i = icmp ult i64 %19, 16 call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit if.then.i.i27: ; preds = %invoke.cont43 - call void @_ZdlPv(ptr noundef %15) #20 + call void @_ZdlPv(ptr noundef %18) #20 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %if.then.i.i27 @@ -274,18 +278,18 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS br label %cleanup cleanup: ; preds = %invoke.cont, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %17 = load ptr, ptr %phone_number, align 8 - %cmp.i.i.i.i = icmp eq ptr %17, %0 + %20 = load ptr, ptr %phone_number, align 8 + %cmp.i.i.i.i = icmp eq ptr %20, %0 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %cleanup - %18 = load i64, ptr %_M_string_length.i.i.i.i, align 8 - %cmp3.i.i.i.i = icmp ult i64 %18, 16 + %21 = load i64, ptr %_M_string_length.i.i.i.i, align 8 + %cmp3.i.i.i.i = icmp ult i64 %21, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZN8tutorial6Person11PhoneNumberD2Ev.exit if.then.i.i.i: ; preds = %cleanup - call void @_ZdlPv(ptr noundef %17) #20 + call void @_ZdlPv(ptr noundef %20) #20 br label %_ZN8tutorial6Person11PhoneNumberD2Ev.exit _ZN8tutorial6Person11PhoneNumberD2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, %if.then.i.i.i 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/yosys/optimized/preproc.ll b/bench/yosys/optimized/preproc.ll index 8c7a96ca96c..744f4486b5b 100644 --- a/bench/yosys/optimized/preproc.ll +++ b/bench/yosys/optimized/preproc.ll @@ -3258,8 +3258,8 @@ _ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaIS %776 = icmp slt i32 %772, 0 %777 = load ptr, ptr %20, align 8 %.not.i200 = icmp eq ptr %777, null - %or.cond.i = select i1 %776, i1 true, i1 %.not.i200 - br i1 %or.cond.i, label %_ZNK5Yosys9arg_map_t4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPi.exit.thread.i, label %778 + %or.cond = select i1 %776, i1 true, i1 %.not.i200 + br i1 %or.cond, label %_ZNK5Yosys9arg_map_t4findERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPi.exit.thread.i, label %778 778: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEE4findERS9_.exit.i.i %.19.i.i.i.i.sroa.sel71.v.sroa.sel.v.i.sroa.sel.v.sroa.sel.v.sroa.sel.v = select i1 %769, ptr %.0812.i.i.i.i.i, ptr %.013.i.i.i.i.i @@ -4999,24 +4999,24 @@ define internal fastcc void @_ZN5YosysL11return_charEc(i8 noundef signext %0) un } ; Function Attrs: mustprogress uwtable -define internal fastcc void @_ZN5YosysL17restore_macro_argERNS_12define_map_tERSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13define_body_tEESt5dequeISB_SaISB_EEE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr nocapture noundef nonnull align 8 dereferenceable(80) %1) unnamed_addr #4 personality ptr @__gxx_personality_v0 { +define internal fastcc void @_ZN5YosysL17restore_macro_argERNS_12define_map_tERSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13define_body_tEESt5dequeISB_SaISB_EEE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(80) %1) unnamed_addr #4 personality ptr @__gxx_personality_v0 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 48 %4 = load ptr, ptr %3, align 8, !noalias !42 %5 = getelementptr inbounds nuw i8, ptr %1, i64 56 %6 = load ptr, ptr %5, align 8, !noalias !42 - %7 = icmp eq ptr %4, %6 - br i1 %7, label %8, label %_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3topEv.exit + %7 = getelementptr inbounds nuw i8, ptr %1, i64 72 + %8 = icmp eq ptr %4, %6 + br i1 %8, label %9, label %_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3topEv.exit -8: ; preds = %2 - %9 = getelementptr inbounds nuw i8, ptr %1, i64 72 - %10 = load ptr, ptr %9, align 8, !noalias !42 +9: ; preds = %2 + %10 = load ptr, ptr %7, align 8, !noalias !42 %11 = getelementptr inbounds i8, ptr %10, i64 -8 %12 = load ptr, ptr %11, align 8 %13 = getelementptr inbounds nuw i8, ptr %12, i64 432 br label %_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3topEv.exit -_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3topEv.exit: ; preds = %2, %8 - %14 = phi ptr [ %13, %8 ], [ %4, %2 ] +_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3topEv.exit: ; preds = %2, %9 + %14 = phi ptr [ %13, %9 ], [ %4, %2 ] %15 = getelementptr inbounds i8, ptr %14, i64 -144 %16 = getelementptr inbounds i8, ptr %14, i64 -112 tail call void @_ZN5Yosys12define_map_t3addERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_13define_body_tE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(112) %16) @@ -5031,20 +5031,19 @@ _ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys1 21: ; preds = %_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3topEv.exit tail call void @_ZdlPv(ptr noundef %18) #24 - %22 = getelementptr inbounds nuw i8, ptr %1, i64 72 - %23 = load ptr, ptr %22, align 8 - %24 = getelementptr inbounds i8, ptr %23, i64 -8 - store ptr %24, ptr %22, align 8 - %25 = load ptr, ptr %24, align 8 - store ptr %25, ptr %5, align 8 - %26 = getelementptr inbounds nuw i8, ptr %25, i64 432 - %27 = getelementptr inbounds nuw i8, ptr %1, i64 64 - store ptr %26, ptr %27, align 8 - %28 = getelementptr inbounds nuw i8, ptr %25, i64 288 + %22 = load ptr, ptr %7, align 8 + %23 = getelementptr inbounds i8, ptr %22, i64 -8 + store ptr %23, ptr %7, align 8 + %24 = load ptr, ptr %23, align 8 + store ptr %24, ptr %5, align 8 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 432 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 64 + store ptr %25, ptr %26, align 8 + %27 = getelementptr inbounds nuw i8, ptr %24, i64 288 br label %_ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3popEv.exit _ZNSt5stackISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEESt5dequeIS9_SaIS9_EEE3popEv.exit: ; preds = %19, %21 - %.sink1.i.i = phi ptr [ %28, %21 ], [ %20, %19 ] + %.sink1.i.i = phi ptr [ %27, %21 ], [ %20, %19 ] store ptr %.sink1.i.i, ptr %3, align 8 tail call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5Yosys13define_body_tEED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %.sink1.i.i) #23 ret void diff --git a/bench/zstd/optimized/hist.c.ll b/bench/zstd/optimized/hist.c.ll index b843cbbfb2e..6b0a32d8143 100644 --- a/bench/zstd/optimized/hist.c.ll +++ b/bench/zstd/optimized/hist.c.ll @@ -77,8 +77,8 @@ return: ; preds = %for.body, %if.then ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i64 -66, 4294967296) i64 @HIST_countFast_wksp(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %source, i64 noundef %sourceSize, ptr noundef %workSpace, i64 noundef %workSpaceSize) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define range(i64 -66, 4294967296) i64 @HIST_countFast_wksp(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %source, i64 noundef %sourceSize, ptr noundef %workSpace, i64 noundef %workSpaceSize) local_unnamed_addr #3 { entry: %cmp = icmp ult i64 %sourceSize, 1500 br i1 %cmp, label %if.then, label %if.end @@ -155,8 +155,8 @@ return: ; preds = %if.then.i, %HIST_co ret i64 %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define internal fastcc range(i64 -48, 4294967296) i64 @HIST_count_parallel_wksp(ptr nocapture noundef writeonly %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef readonly %source, i64 noundef %sourceSize, i32 noundef range(i32 0, 2) %check, ptr nocapture noundef %workSpace) unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define internal fastcc range(i64 -48, 4294967296) i64 @HIST_count_parallel_wksp(ptr nocapture noundef writeonly %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef readonly %source, i64 noundef %sourceSize, i32 noundef range(i32 0, 2) %check, ptr nocapture noundef %workSpace) unnamed_addr #3 { entry: %add.ptr.ptr = getelementptr i8, ptr %source, i64 %sourceSize %0 = load i32, ptr %maxSymbolValuePtr, align 4 @@ -373,8 +373,8 @@ return: ; preds = %land.lhs.true, %if. ret i64 %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i64 -66, 4294967296) i64 @HIST_count_wksp(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %source, i64 noundef %sourceSize, ptr noundef %workSpace, i64 noundef %workSpaceSize) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define range(i64 -66, 4294967296) i64 @HIST_count_wksp(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %source, i64 noundef %sourceSize, ptr noundef %workSpace, i64 noundef %workSpaceSize) local_unnamed_addr #3 { entry: %0 = ptrtoint ptr %workSpace to i64 %and = and i64 %0, 3 @@ -457,8 +457,8 @@ return: ; preds = %if.end6.i, %HIST_co ret i64 %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i64 -48, 4294967296) i64 @HIST_countFast(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %source, i64 noundef %sourceSize) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define range(i64 -48, 4294967296) i64 @HIST_countFast(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %source, i64 noundef %sourceSize) local_unnamed_addr #3 { entry: %tmpCounters = alloca [1024 x i32], align 16 %cmp.i = icmp ult i64 %sourceSize, 1500 @@ -526,8 +526,8 @@ HIST_countFast_wksp.exit: ; preds = %if.then.i.i, %HIST_ ret i64 %retval.0.i } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable -define range(i64 -48, 4294967296) i64 @HIST_count(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %src, i64 noundef %srcSize) local_unnamed_addr #1 { +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +define range(i64 -48, 4294967296) i64 @HIST_count(ptr nocapture noundef %count, ptr nocapture noundef %maxSymbolValuePtr, ptr noundef %src, i64 noundef %srcSize) local_unnamed_addr #3 { entry: %tmpCounters = alloca [1024 x i32], align 16 %0 = load i32, ptr %maxSymbolValuePtr, align 4 @@ -602,16 +602,17 @@ HIST_count_wksp.exit: ; preds = %if.then4.i, %if.the } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #4 +declare i32 @llvm.umax.i32(i32, i32) #5 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 = { 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 #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 #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: readwrite) } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/zxing/optimized/zueci.c.ll b/bench/zxing/optimized/zueci.c.ll index 925906d89f5..9f53d0d1eb6 100644 --- a/bench/zxing/optimized/zueci.c.ll +++ b/bench/zxing/optimized/zueci.c.ll @@ -347,12 +347,12 @@ switch.early.test72: ; preds = %zueci_decode_utf8.e br i1 %.not99, label %.loopexit106.thread, label %zueci_is_valid_utf8.exit.thread .loopexit106: ; preds = %switch.early.test72 - %101 = tail call i32 %.060(i32 noundef %92, ptr noundef %.1136) #7 + %101 = tail call i32 %.060(i32 noundef %92, ptr noundef %.1136) #8 %102 = icmp eq i32 %101, 0 br i1 %102, label %zueci_is_valid_utf8.exit.thread, label %107 .loopexit106.thread: ; preds = %.critedge13 - %103 = tail call i32 %.060(i32 noundef %92, ptr noundef %.1136) #7 + %103 = tail call i32 %.060(i32 noundef %92, ptr noundef %.1136) #8 %104 = icmp eq i32 %103, 0 br i1 %104, label %zueci_is_valid_utf8.exit.thread, label %.thread169 @@ -3515,7 +3515,7 @@ zueci_is_valid_utf8.exit: ; preds = %.preheader190 %206 = ptrtoint ptr %.7232 to i64 %207 = sub i64 %201, %206 %208 = trunc i64 %207 to i32 - %209 = call i32 %.0131(ptr noundef %.7232, i32 noundef %208, i32 noundef %4, ptr noundef nonnull %8) #7 + %209 = call i32 %.0131(ptr noundef %.7232, i32 noundef %208, i32 noundef %4, ptr noundef nonnull %8) #8 %.not155 = icmp eq i32 %209, 0 br i1 %.not155, label %210, label %227 @@ -3965,7 +3965,7 @@ switch.early.test: ; preds = %zueci_decode_utf8.e %98 = ptrtoint ptr %.7192.us to i64 %99 = sub i64 %94, %98 %100 = trunc i64 %99 to i32 - %101 = call i32 %.0112(ptr noundef %.7192.us, i32 noundef %100, i32 noundef %4, ptr noundef nonnull %7) #7 + %101 = call i32 %.0112(ptr noundef %.7192.us, i32 noundef %100, i32 noundef %4, ptr noundef nonnull %7) #8 %.not129.us = icmp eq i32 %101, 0 br i1 %.not129.us, label %.loopexit, label %zueci_replacement_incr.exit.us @@ -3992,7 +3992,7 @@ zueci_replacement_incr.exit.us: ; preds = %.lr.ph197.split.us %112 = ptrtoint ptr %.7192 to i64 %113 = sub i64 %94, %112 %114 = trunc i64 %113 to i32 - %115 = call i32 %.0112(ptr noundef %.7192, i32 noundef %114, i32 noundef %4, ptr noundef nonnull %7) #7 + %115 = call i32 %.0112(ptr noundef %.7192, i32 noundef %114, i32 noundef %4, ptr noundef nonnull %7) #8 %.not129 = icmp eq i32 %115, 0 br i1 %.not129, label %116, label %132 @@ -5293,8 +5293,8 @@ zueci_cp125x_u.exit: ; preds = %31, %.sink.split.i ret i32 %.0.i } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define internal range(i32 0, 5) i32 @zueci_utf16be_u(ptr nocapture noundef readonly %0, i32 noundef %1, i32 %2, ptr nocapture noundef writeonly %3) #5 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define internal range(i32 0, 5) i32 @zueci_utf16be_u(ptr noundef %0, i32 noundef %1, i32 %2, ptr nocapture noundef writeonly %3) #6 { %5 = icmp ult i32 %1, 2 br i1 %5, label %32, label %6 @@ -5324,12 +5324,12 @@ define internal range(i32 0, 5) i32 @zueci_utf16be_u(ptr nocapture noundef reado br i1 %or.cond7, label %32, label %22 22: ; preds = %18 - %23 = zext i8 %20 to i32 - %24 = shl nuw nsw i32 %23, 8 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 3 - %26 = load i8, ptr %25, align 1 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 3 + %24 = zext i8 %20 to i32 + %25 = shl nuw nsw i32 %24, 8 + %26 = load i8, ptr %23, align 1 %27 = zext i8 %26 to i32 - %28 = or disjoint i32 %24, %27 + %28 = or disjoint i32 %25, %27 %29 = shl nuw nsw i32 %13, 10 %30 = add nsw i32 %29, -56613888 %31 = add nuw nsw i32 %30, %28 @@ -5966,8 +5966,8 @@ switch.early.test: ; preds = %8 ret i32 %.0 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define internal range(i32 0, 5) i32 @zueci_utf16le_u(ptr nocapture noundef readonly %0, i32 noundef %1, i32 %2, ptr nocapture noundef writeonly %3) #5 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define internal range(i32 0, 5) i32 @zueci_utf16le_u(ptr noundef %0, i32 noundef %1, i32 %2, ptr nocapture noundef writeonly %3) #6 { %5 = icmp ult i32 %1, 2 br i1 %5, label %32, label %6 @@ -5997,12 +5997,12 @@ define internal range(i32 0, 5) i32 @zueci_utf16le_u(ptr nocapture noundef reado br i1 %or.cond7, label %32, label %22 22: ; preds = %18 - %23 = zext i8 %20 to i32 - %24 = shl nuw nsw i32 %23, 8 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 2 - %26 = load i8, ptr %25, align 1 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 2 + %24 = zext i8 %20 to i32 + %25 = shl nuw nsw i32 %24, 8 + %26 = load i8, ptr %23, align 1 %27 = zext i8 %26 to i32 - %28 = or disjoint i32 %24, %27 + %28 = or disjoint i32 %25, %27 %29 = shl nuw nsw i32 %13, 10 %30 = add nsw i32 %29, -56613888 %31 = add nuw nsw i32 %30, %28 @@ -6102,7 +6102,7 @@ define internal range(i32 0, 5) i32 @zueci_utf32le_u(ptr nocapture noundef reado } ; 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 = { 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" } @@ -6110,8 +6110,9 @@ attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memor 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 #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nounwind } +attributes #6 = { 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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #8 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3}